background image
background image
background image
background image

SPIS TREŚCI

4

 

HAKIN9 7-8/2008

SPIS TREŚCI

5

 

HAKIN9 

7-8/2008

5

 

HAKIN9  5

 

HAKIN9  5

 

HAKIN9 

NARZĘDZIA

12 

AVG Internet Security 8.0

Recenzja programu AVG Internet Security 8.0. 
Pakiet przeznaczony do kompleksowego zabezpieczenia komputera. 
Jego trzonem jest ceniony program antywirusowy AVG Anti-Virus 
znany głównie ze swej bezpłatnej wersji. 

13 

Gdata Internet Security 2008

Recenzja programu Gdata Internet Security 2008. 
Zaawansowany pakiet do kompleksowej ochrony pracy w Internecie. 
W jego skład wchodzi oprócz programu AntiVirus 2008, osobisty 
firewall, filtr spamu a także moduły ochrony rodzicielskiej i filtrowania 
treści. 

POCZĄTKI

14 

Wirtualny pulpit Windows

 

MACIEJ PAKULSKI

Współczesne systemy operacyjne umożliwiają uruchomienie wielu 
programów jednocześnie, co może powodować problem organizacji 
okien na pulpicie. Rozwiązaniem tego problemu może być użycie 
wirtualnych pulpitów, choć mechanizm ten może także tworzyć 
podstawę do działania złośliwego oprogramowania. 

ATAK

20  Niebezpieczne przegladarki 

 

PRZEMYSŁAW ŻARNECKI

Przeglądarka internetowa jest jednym z najczęściej używanych 
programów. Z tej racji bywa również jednym z najczęściej 
atakowanych. Wiele osób nie zdaje sobie chyba do końca sprawy, jak 
ważne jest dbanie o jej bezpieczeństwo. Tym bardziej, że przeglądarki 
zawitały również do urządzeń mobilnych. Korzystamy z nich więc 
niemalże wszędzie. W artykule autor postanowił zwrócić uwagę na 
zagrożenia, jakie płyną z używania poszczególnych przeglądarek, jak 
również z niewłaściwego z nich korzystania. Ku przestrodze.

30   Hakowanie Gadu-Gadu

 

KONRAD ZUWAŁA

Gadu-Gadu to z pewnością najpopularniejszy w Polsce komunikator 
internetowy. Niemal każdy z nas kiedyś się z nim zetknął, najczęściej 
aby porozmawiać ze znajomymi. Jednak nawet tak popularna 
aplikacja nie ustrzeże się błędów – czy możemy czuć się bezpieczni z 
Gadu-Gadu?

38   Format GIF okiem hakera

 

MICHAŁ SKŁADNIKIEWICZ

Format GIF, oprócz podstawowej funkcjonalności oferowanej przez 
wszystkie standardowe formaty graficzne, udostępnia również kilka 
rozszerzeń umożliwiających stworzenie animacji czy też dodanie 
komentarza do grafiki.

jest wydawany przez Software–Wydawnictwo Sp. z o.o.

Dyrektor wydawniczy: Sylwia Małecka

Redaktor naczelny: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Redaktor prowadzący: Robert Gontarski

robert.gontarski@software.com.pl

Kierownik produkcji: Marta Kurpiewska

marta.kurpiewska@software.com.pl

DTP Manager: Robert Zadrożny

DTP: Tomasz Kostro, Grzegorz Laskowski 

Okładka: Agnieszka Marchocka

Dział reklamy: adv@software.com.pl

Prenumerata: Marzena Dmowska

pren@software.com.pl

Wyróżnieni betatesterzy:

Rafał Lysik, Michał Składnikiewicz

Opracowanie CD: Rafał Kwaśny

Druk: 101 Studio, Firma Tęgi 

Nakład wersji polskiej 6 000 egz.

Wydawca: 

Software–Wydawnictwo Sp. z o.o.

ul. Bokserska 1, 02-682 Warszawa, Polska

Tel. +48 22 427 36 77, Fax +48 22 244 24 59

www.hakin9.org 

Osoby zainteresowane współpracą prosimy o kontakt: 

cooperation@software.com.pl

Redakcja dokłada wszelkich starań, by publikowane w piśmie 

i na towarzyszących mu nośnikach informacje i programy 

były poprawne, jednakże nie bierze odpowiedzialności za 

efekty wykorzystania ich; nie gwarantuje także poprawnego 

działania programów shareware, freeware i public domain.

Uszkodzone podczas wysyłki płyty wymienia redakcja.

Wszystkie znaki firmowe zawarte w piśmie są własnością 

odpowiednich firm i zostały użyte wyłącznie w celach 

informacyjnych.

Do tworzenia wykresów i diagramów wykorzystano 

program 

 firmy 

Płytę CD dołączoną do magazynu przetestowano 

programem AntiVirenKit firmy G DATA Software Sp. z o.o.

Redakcja używa systemu 

automatycznego składu 

UWAGA! 

Sprzedaż aktualnych lub archiwalnych numerów pisma 

w cenie innej niż wydrukowana na okładce – bez zgody 

wydawcy – jest działaniem na jego szkodę i skutkuje 

odpowiedzialnością sądową.

hakin9 ukazuje się w następujących krajach: 

Hiszpanii, Argentynie, Portugalii, Francji, Belgii, 

Luksemburgu, Kanadzie, Maroko, Niemczech, 

Austrii, Szwajcarii, Polsce, Czechach, Słowacji. 

Prowadzimy również sprzedaż kioskową 

w innych krajach europejskich.

Magazyn hakin9 wydawany jest 

w 7 wersjach językowych: 

PL 

 ES 

 CZ 

 EN 

 

IT 

 FR 

 DE 

UWAGA!

Techniki prezentowane w artykułach mogą być 

używane jedynie we własnych sieciach lokalnych. 

Redakcja nie ponosi odpowiedzialności za 

niewłaściwe użycie prezentowanych technik 

ani spowodowaną tym utratę danych.

background image

SPIS TREŚCI

4

 

HAKIN9 7-8/2008

SPIS TREŚCI

5

 

HAKIN9 

7-8/2008

5

 

HAKIN9  5

 

HAKIN9  5

 

HAKIN9 

OBRONA

42   Konsola NSM i HeX LiveCD 

 

GRZEGORZ BŁOŃSKI

Monitorowanie sieci i systemów informatycznych w niej działających 
to bardzo ważna część pracy administratorów. Choć narzędzi do 
monitorowania jest wiele, nie wszyscy znają konsolę NSM (Network 
Security Monitoring), stworzoną na potrzeby dystrybucji HeX. 
Grzegorz w swoim arytkule wyjaśnia co to jest NSM-Console oraz do 
czego służy dystrybucja HeX.

46  Zagrożenia wyścigowe

 

CEZARY G. CEREKWICKI

Czy w coraz bardziej skomputeryzowanych świecie, w którym informatyka 
nie zawsze radzi sobie z trunymi do wykrycia błędami, możemy się czuć 
bezpieczni? Cezary opisał jakie są błędy i podatności oraz co mogą 
powodować. Wyjaśnia nieznane pojęcie heisenbug’a oraz czym są 
sytuacje wyścigu.

50  Mobilna ochrona

 

MARCIN KLAMRA

Urządzenia mobilne zyskują coraz większą popularność. Trudno sobie 
wyobrazić dziś firmę, w której pracownicy nie posiadają urządzeń 
mobilnych, wyposażonych w bezprzewodowy interfejs sieciowy, pracujących 
pod kontrolą systemu Windows Mobile. Problem w tym, by komunikację 
tych urządzeń z siecią firmową uczynić bezpieczną.

58   Bezpieczne instytucje finansowe

 

GRZEGORZ PEŁECHATY

Wraz z rozwojem aplikacji webowych aspekt bezpieczeństwa stał się 
zagadnieniem istotnym zarówno dla projektantów oprogramowania, 
jak i dla użytkowników końcowych, którym z tego oprogramowania 
przyjdzie korzystać. Oczywistym jest, że typowe portale internetowe mogą 
lekko odstąpić od tej zasady i przedłożyć prostotę użytkowania nad 
bezpieczeństwo, jednak w przypadku instytucji finansowych takich, jak 
banki, proces autoryzacji tożsamości musi zapewniać maksymalny poziom 
ochrony danych osobowych, informacji dotyczących stanu konta, historii 
rachunku itp. Celem tego artykułu jest obiektywne spojrzenie na obecne 
systemy informatyczne wcześniej wymienionych instytucji, pokazanie ich 
słabych i mocnych stron oraz po części przedstawienie firm, które pracują 
w domenie bezpieczeństwa internetowego i świadczą usługi z zakresu 
wdrażania kompleksowych systemów zabezpieczeń. 

62   Przepełnienie bufora

 

ARTUR ŻARSKI

Często tworząc oprogramowanie zastanawiamy się nad jego 
bezpieczeństwem, ale czy zawsze? Szczególnie wrażliwy na 
bezpieczeństwo jest sam kod naszej aplikacji, dlatego warto zwrócić 
uwagę na jedno z największych zagrożeń, jakie czyha na programistę 
– przepełnienie bufora.

67   Klub Techniczny

Zagrożenie pochodzi z Internetu
Raport firmy Trend Micro na temat wirusów w 2007 roku i prognoza na 
2008 rok.

STAŁE 

RUBRYKI

6 W skrócie

Przedstawiamy garść najciekawszych 
wiadomości ze świata bezpieczeństwa 
systemów informatycznych i nie tylko.

10 Zawartość CD

Prezentujemy zawartość i sposób 
działania najnowszej wersji naszej 
sztandarowej dystrybucji hakin9.live.

68 Zestawienie    

produktów Security

Walka między użytkownikiem a 
wirusem wciąż trwa – na rynku jest 
dużo programów antywirusowych, 
pomiędzy którymi niezwykle trudno 
wybrać ten odpowiedni.

72 Wywiad

Wywiad z Maciejem Rybackim, 
prezesem firmy szkoleniowej Diacom.

76 Księgozbiór

Recenzujemy książki : Bezpieczeństwo 
Microsoft Windows – Podstawy 
praktyczne oraz Analiza Ryzyka i 
Ochrona Informacji w Systemach 
Komputerowych.

78 Felieton

Ataki społecznosciowe
Patryk Krawaczyński

82 Zapowiedzi

Zapowiedzi artykułów, które znajdą się w 
następnym wydaniu magazynu hakin9

background image

6

 

W SKRÓCIE

HAKIN9 7-8/2008

7

 

JAKUB BUCZYŃSKI

HAKIN9 

7-8/2008

ZNALEZIONO NAJWIĘKSZY BOTNET

Do tej pory za największy botnet uważano 
sieć robaka Storm , jednak najświeższe 
informacje wskazują, że istnieje botnet 
składający się z ponad 400 000 komputerów. 
Jest to liczba dwa razy większa niż w 
przypadku Storma. Nowy botnet nosi nazwę 
Kraken, a w jego skład wchodzą między 
innymi komputery z 50 firm znajdujących 
się na liście Fortune 500. Botnet ten jest 
obserwowany przez firmę Damballa, która 
przestrzega przed Krakenem i informuje, że 
jest on trudny do wykrycia, ponieważ potrafi 
modyfikować swój kod. Jedynie 20 procent 
programów antywirusowych potrafi wykryć 
malware odpowiedzialne za zarażenie 
maszyn. Przebiegły Kraken podszywa się pod 
plik graficzny, po jego otwarciu automatycznie 
kopiuje się na dysk w zmienionym formacie. 
Co się zatem stanie, gdy nowy botnet 
zarazi nasz komputer? Otóż zainfekowany 
system komunikuje się z serwerami 
wydającymi rozkazy poprzez własne 
protokoły wykorzystujące TCP i UDP. Ponadto 
malware jest wyposażony w mechanizm, 
który umożliwia samoczynne pobieranie 
aktualizacji, co pomaga mu lepiej się ukryć.

DZIURAWE OPROGRAMOWANIE 
FIRMY SYMANTEC

W laboratorium VeriSign iDefense wykryto 
luki w oprogramowaniu firmy Symantec, 
które pozwalają atakującemu na przejęcie 
kontroli nad komputerem użytkownika. 
Firmie nie pozostało nic innego, jak tylko 
potwierdzić istnienie błędów w swoich 
produktach. Luki bazują na kontrolce ActiveX 
o nazwie SymAData.dll i pozwalają na 
wykonanie złośliwego kodu z uprawnieniami 
zalogowanego użytkownika. Warunkiem 
powodzenia ataku jest wcześniejsze 
odwiedzenie przez użytkownika strony 
internetowej ze specjalnie spreparowaną 
zawartością. Produktami podatnymi na 
ten atak są: Norton AntiVirus (2006-2008), 
Norton Internet Security (2006-2008), 
Norton SystemWorks (2006-2008) i Norton 
360 (v 1.0).

BŁĄD W ARKUSZU 
KALKULACYJNYM GOOGLE

Billy Rios, specjalista od zabezpieczeń, 
wykrył lukę w Google Spreadsheets. 

Jest to aplikacja służąca do edycji 
arkuszy kalkulacyjnych. Błąd pozwala 
na przejęcie plików cookies użytkownika 
poprzez odwołanie się do specjalnie 
spreparowanych tabel. Luka, którą wykrył 
Rios, bazuje na błędnych lub ignorowanych 
przez przeglądarkę nagłówkach Content-
Type, które są zawarte w odpowiednich 
HTTP. Problem ten występuje w takich 
przeglądarkach, jak: Internet Explorer, 
Mozilla Firefox, Opera, Safari. Błąd pozwala 
napastnikowi na swobodny dostęp do 
niemal wszystkich usług udostępnianych 
przez Google na koncie ofiary.

Na szczęście Google szybko 

naprawiło znalezioną lukę. 

PODMIENIONO STRONY RZĄDOWE

Dnia 16 kwietnia 2008 r. strona 
Ministerstwa Pracy została podmieniona 
przez hakera, który napisał kilka słów do 
odwiedzających – a może bardziej do 
przedstawicieli Ministerstwa.

Haker skrytykował politykę 

państwa oraz poziom bezpieczeństwa 
teleinformatycznego instytucji państwowych 
w naszym kraju.

18 kwietnia przypuszczalnie ta sama 

osoba zaatakowała stronę Kancelarii 
Premiera. Na stronę główną znów zawitał 
znany napis HACKED oraz dalsza treść, 
którą prezentujemy poniżej (w oryginale): 
kurde
ale się porobiło
co nie? ;]
Drugie włamanie i kolejny dowód na to, że 
bezpieczeństwo instytucji państwowych w 
naszym kraju nie idzie w dobrym kierunku 
:/
Nie mam zamiaru włamywać się na 
kolejne strony, nie szukam rozgłosu i 
dlatego pozostanę raczej w podziemiu ;)
Pozdrowienia dla premiera [;P} oraz dla 
całego polskiego undergroundu
Pokój
Prawdopodobnie ataku dokonano 
wykorzystując dziury w nieaktualizowanym 
serwerze Apache. Według Zbigniewa 
Urbańskiego z Komendy Głównej Policji 
na razie nie ma pewności, czy obu ataków 
dokonał ten sam haker. Zaskoczony 
Urbański przypomina, że za atak na strony 
rządowe grozi do 8 lat więzienia.

Kancelaria zawiadomi policję 

o popełnieniu przestępstwa 

– poinformował szef Centrum 
Informacyjnego Rządu Jacek Filipowicz. 
Hakerzy zaatakowali w nocy – poprzez 
jedną z nieużywanych stron – cztery 
podstrony serwisu internetowego 
Kancelarii Premiera, m.in. te dotyczące 
służby cywilnej i funduszy strukturalnych 
– powiedział Filipowicz.

UBUNTU 8.04 LTS

Pojawiła się stabilna wersja dystrybucji 
Ubuntu 8.04 Desktop Edition, kryjącej się 
również pod nazwą kodową Hardy Heron 
(dosł. Śmiała Czapla). Wersja Ubuntu 8.04 
to wydanie LTS, będzie ono wspierane 
technicznie przez okres 3 lat. Posiadając już 
ów system, będziemy mogli go aktualizować 
do wersji Ubuntu 8.10, która ukaże się w 
październiku 2008 roku. 

Hardy Heron proponuje nam między 

innymi najnowsze aplikacje Gnome 
z efektami wizualnymi, odtwarzacz z 
możliwością przeglądania zasobów 
YouTube i integracji z Myth TV, aplikacją 
do nagrywania sygnału video o otwartym 
kodzie. Nowy system Ubuntu wspiera 
ponad trzydziestu komercyjnych dostawców 
oprogramowania, np: Adobe, Google, Real 
Networks, Skype, Corel, Parallels, Fluendo. 
System można pobrać ze strony projektu 
lub zamówić płytę.

SLAX 6.0.6

Ukazała się zaktualizowana wersja 
Dystrybucji SLAX 6, zbudowanej w oparciu 
o dystrybucję Linux – Slackware.

Głównymi zaletami systemu są 

niewielki rozmiar (niespełna 200 MB) 

background image

6

 

W SKRÓCIE

HAKIN9 7-8/2008

7

 

JAKUB BUCZYŃSKI

HAKIN9 

7-8/2008

oraz modularna budowa. System oparty 
jest na środowisku graficznym KDE. 
Zaktualizowano bazę systemu Slackware 
do najnowszej wersji, eliminującej kilka 
błędów w bibliotece glibc, zmieniono 
także kolejność pakietów w celu 
rozwiązania problemów z działaniem 
gtk+2. Poza tym autor wprowadził kilka 
poprawek w obsłudze slink:// i usunął 
problem z zapamiętywaniem ustawień 
miksera alsa.

JĄDRO 2.6.25

Ukazała się wersja 2.6.25 jądra 
Linuksa. Zawiera ona nowy mechanizm 
zarządzania pamięcią, bazujący na 
kontrolowaniu grupowym, którego początki 
pojawiły się w poprzedniej wersji kernela. 
Pozwala on na oddzielenie aplikacji 
pamięciożernej od innych, mających 
mniejsze zapotrzebowanie na zasoby. 
Podobnie jest z obsługą procesora. W 
nowej wersji umożliwiono kontrolowanie 
procesów czasu rzeczywistego. 
Dodatkowo wprowadzono możliwość 
wywłaszczania mechanizmu Read-copy-
update
, co pozwala na wyeliminowanie 
opóźnień i sprawia, ze Linux zbliża 
się bardziej do systemów czasu 
rzeczywistego. Usprawniono mechanizm 
spinlocków, a także mierzenie użycia 
pamięci przez procesy.

Wprowadzono ulepszenia w wywołaniu 

systemowym timerfd, wprowadzając 
implementację korzystającą z 
deskryptorów plików. Dodano mechanizm 
Simplified Mandatory Access Control 
– framework bezpieczeństwa alternatywny 
dla SELinuksa. Na użytek programistów 
przygotowano narzędzie pozwalające 
wykrywać opóźnienia w systemie 
operacyjnym. Do jądra dodano dwa 
rozwiązania pochodzące z technologii 
exec-shield opracowanej przez Red 
Hata. Służą one do wyboru losowych 
miejsc w pamięci dla aplikacji, które 
chcą zaalokować pamięć. Zastosowanie 
losowych adresów jest utrudnieniem 
dla hakerów, którzy dzięki temu muszą 
pokonać dodatkową przeszkodę przy 
tworzeniu exploitów wykorzystujących 
dziury w oprogramowaniu.
Jądro 2.6.25 wspiera popularny w 
przemyśle protokół CAN, służący do 
niezawodnej komunikacji pomiędzy 

urządzeniami. Wprowadzono lepszą 
komunikację dla regulacji termicznej w 
ACPI oraz mapper dla WMI (Windows 
Management Interface), który jest 
rozszerzeniem ACPI wykorzystywanym w 
systemach Microsoftu. Ukazały się nowe 
funkcje obsługi systemu plików ext4. 
Zastosowano alokację wieloblokową, 
wsparcie dla dużych bloków, sumy 
kontrolne dla dziennika, obsługę dużych 
plików, wersjonowanie i-nodów oraz 
rozszerzone atrybuty w i-nodzie. Dodano 
wsparcie dla architektur MN10300/AM33 
i Orion SoCs. Pojawiła się obsługa 
technologii EFI support na platformie x86-
64 oraz początkowe wsparcie dla ATI r500 
DRI/DRM.

Wprowadzono również trochę nowych 

i zaktualizowanych sterowników oraz wiele 
innych drobniejszych zmian i istotnych 
poprawek. 

LUKA 
W ODTWARZACZU DIVX PLAYER

DivX Player, odtwarzacz plików wideo 
znany z pakietu z popularnym kodekiem 
wideo DivX, posiada lukę bezpieczeństwa, 
która pozwala cyberprzestępcy na 
przejęcie kontroli nad komputerem. 
Usterkę tę wykrył haker securfrog, dotyczy 
ona plików o rozszerzeniu .srt, które mogą 
powodować zawieszanie się aplikacji. 
Jest to możliwe w wyniku niedopatrzenia 
skutkującego brakiem weryfikacji 
poprawności danych wejściowych, co 
pozwala na atak typu przepełnienie 
bufora. Wynikiem tego jest zawieszenie 
się programu lub, co gorsza, umożliwienie 
intruzowi wstrzyknięcia do komputera 
szkodliwego kodu. 

Błąd występuje w wersji 6.7.0.22 

odtwarzacza DivX Player. Istnieje jednak 
obawa, że poprzednie wersje także 
zawierają opisaną lukę.

SAFARI 3.1.1

Ukazała się nowa wersja przeglądarki 
Safari firmy Apple dla systemu Mac OS X i 
Windows.

W tym wydaniu skupiono się na 

poprawkach bezpieczeństwa zarówno 
samej aplikacji, jak i silnika WebKit. 
Rozwiązano problem z synchronizacją 
w programie Safari, pozwalający stronie 
WWW na zmianę zawartości paska adresu 
bez wczytywania zawartości odpowiedniej 
witryny. Błąd ten mógł zostać wykorzystany 
do podszycia się pod zawartość uczciwej 
witryny, co umożliwiało przechwycenie 
danych uwierzytelniających lub innych 
informacji użytkownika. Naprawiono 
także błąd pozwalający doprowadzić do 
nieoczekiwanego zakończenia działania 
programu lub wykonania dowolnego 
kodu przez odwiedzenie specjalnie 
spreparowanej strony. Błędy te występowały 
w systemach Windows XP i Vista.

Błędy w silniku aplikacji wystąpiły 

nie tylko w systemie Windows, ale 
również Mac OS X, Pozwalają one na 
przeprowadzenie ataku typu Cross Site 
Scripting (XSS).

FIREFOX 2.0.0.14

Pojawiła się nowa wersja przeglądarki 
Firefox 2.0.0.14. Rozwiązuje ona problem 
niestabilności związany z obsługą 
JavaScriptu, który w efekcie prowadził do 
całkowitego zawieszenia przeglądarki. 
Sama Mozilla twierdzi, że nie ma żadnych 
podstaw, aby twierdzić, iż luka była 
wykorzystywana. Firma zadecydowała 
jednak o załataniu przeglądarki.

CYBERPRZESTĘPCA NA ZAKUPACH

Jak informuje Polska Agencja Prasowa, 
suwalska policja poszukuje hakera, który 
na konto jednej z firm zamówił zakupy o 
wartości miliona złotych, m.in. porsche 
i audi, jacht oraz przedmioty erotyczne 
w sex-shopie. Według prokuratury, haker 
zamawiał towary w imieniu jednego z 

background image

8

 

W SKRÓCIE

HAKIN9 7-8/2008

9

 

JAKUB BUCZYŃSKI

HAKIN9 

7-8/2008

suwalskich sklepów komputerowych. 
Wszystko wyszło na jaw, kiedy w sklepie 
komputerowym rozdzwoniły się telefony 
od sprzedających na jednym z portali 
internetowych, którzy upominali się o 
pieniądze za towar. Cena wszystkich 
kupionych przedmiotów to prawie milion 
złotych.

Haker dokonał włamania na skrzynkę 

e-mail, z której wykasował wiele informacji 
i danych oraz anulował kilkadziesiąt umów 
z kontrahentami sklepu. Kiedy właściciel 
firmy zorientował się o wszystkim, 
poinformował prokuraturę. Ta twierdzi, że 
ma pewne podejrzenia, kto mógł dokonać 
przestępstwa.

LUKA W CLAMAV

Firma Secunia poinformowała o luce 
w popularnej aplikacji antywirusowej 
ClamAV. Błąd ten może być wykorzystany 
za pośrednictwem specjalnie 
spreparowanych plików wykonywalnych 
i umożliwia przemycenie na komputer 
ofiary dowolnego szkodliwego kodu. 
Wszystko za sprawą modułu libclamav/
pe.c skanera antywirusowego ClamAV, 
a konkretnie mechanizmu sprawdzania 
długości w funkcji 

cli _ scanpe()

Wspomniana usterka może spowodować, 
iż pliki wykonywalne o rozszerzeniu exe, 
które skompresowane są za pomocą 
archiwizatora Unpack, mogą przyczynić 
się do przepełnienia bufora na stercie 
– a co za tym idzie, na wstrzyknięcie do 
zaatakowanego komputera złośliwego 
kodu, który umożliwi przejęcie kontroli nad 
urządzeniem. 

Na oficjalnej stronie projektu 

opublikowano nową wersję aplikacji 
ClamAV (0.93), w której opisywana luka 
została załatana. Podatność występuje w 
wersji 0.92.1 oraz starszych.

NIEUDOLNE ŁATANIE QUICKTIME

Mogło się wydawać, że wydanie 
nowej aktualizacji dla odtwarzacza 
multimedialnego Apple QuickTime 
przyniesie oczekiwaną poprawę stanu 
bezpieczeństwa (aktualizacja rozwiązuje 
aż 11 błędów). Okazuje się jednak, że 
korporacja dokonała uaktualnienia 
niedbale. Ekspert bezpieczeństwa 
Davic Maynor przeprowadził test wersji 

7.45 za pomocą napisanego przez 
siebie narzędzia Looking Glass i wykrył, 
że stosowany przez Windows Vista 
mechanizm Address Space Layout 
Randomization, mający za zadanie chronić 
przed atakami poprzez przydzielanie 
losowo wybranych obszarów pamięci, 
został wyłączony przez Apple'a tylko w 
przypadku niektórych bibliotek programu. 
Niedokładność Apple'a powoduje, 
że napastnik w dalszym ciągu może 
doprowadzić do błędu przepełnienia bufora 
w QuickTime, co w konsekwencji umożliwia 
atak na system.

SZKODNIK EBAYA ZŁAPANY

Haker który wielokrotnie włamywał 
się do sieci eBay, został aresztowany 
w Bukareszcie przez rumuńskich 
przedstawicieli prawa. Cyberprzestępca, 
ukrywający się pod pseudonimem Vladuz, 
to 20-letni Vlad Constantin Duiculescu. 
Rumuński sąd nakazał tymczasowy areszt 
podejrzanego na 29 dni. W ubiegłym roku 
Vladuzowi udało się otrzymać informacje, 
które pozwoliły mu uzyskać dostęp do 
sekcji eBaya przeznaczonej dla jego 
pracowników. Dzięki temu pojawił się 
na forach jako oficjalny przedstawiciel 
serwisu aukcyjnego. Vladuz twierdził, iż 
miał dostęp do jeszcze silniej strzeżonych 
sekcji eBay. Przedstawiciele serwisu ostro 
zaprzeczyli jego twierdzeniom, utrzymując, 
iż cyberprzestępca miał dostęp jedynie 
do nielicznych sekcji i nigdy nie pojawił się 
tam, gdzie przechowywane są numery kart 
kredytowych klientów. 

eBay szacuje, iż działalność Vladuza 

kosztowała firmę milion dolarów.

GNOME 2.23.1

Wydano pierwszą wersję deweloperską 
stabilnego GNOME 2.24, jednego z 
najpopularniejszych środowisk graficznych 
przeznaczonych dla systemu Linux. 

Zgodnie z zasadą publikowania 

nowych wersji, w przypadku gdy druga 
liczba w nazwie jest nieparzysta, 

jest ona wersją rozwojową, w której 
rozwijane jest wszystko, łącznie z nowymi 
funkcjonalnościami – i która dodatkowo 
przy uzyskaniu stabilności oznaczana 
jest numerkiem parzystym. W GNOME 
2.23.1 znajdują się głównie poprawki 
wykrytych błędów i aktualizacje tłumaczeń. 
Zmiany obejmują miedzy innymi takie 
aplikacje, jak klient VoIP Ekiga, klient poczty 
Evolution, odtwarzacz multimedialny 
Totem, przeglądarka obrazów Eog, a także 
interfejs wprowadzania tekstu Dasher, 
aplety, gry, menu i skórki.

WINDOWS XP SP3 DOSTĘPNY

Zakończono prace nad dodatkiem 
Service Pack 3 dla Windows XP. Oficjalnie 
ukaże się on 29 kwietnia na stronie 
centrum pobierania Microsoftu oraz usługi 
Windows Update. Pojawiły się jednak 
głosy sprzeciwu ze strony subskrybentów 
TechNetu i MSDN, że kolejny raz (tak 
samo, jak w przypadku SP1 do Visty) 
muszą oni niepotrzebnie czekać na 
pobranie dodatku – i to nawet o trzy dni 
dłużej.

Być może te argumenty przekonały 

Microsoft do wydania subskrybentom 
TechNetu i MSDN dodatku Service Pack 
3 już teraz.

SOLARIS 10 5/08 WYDANY

Ukazała się nowa wersja systemu 
operacyjnego firmy Sun, o nazwie Solaris 
10, oznakowana symbolem 5/08 i 
przeznaczona na platformę Sparc, x86 
i x86-64. Wersja ta zawiera wiele zmian 
i ulepszeń w stosunku do poprzednich 
edycji. Najważniejsze z nich to m.in. 
ulepszenie wykorzystania zasobów 
nowoczesnych procesorów Xeon, 
AMD64, UltraSPARC T1 i T2 oraz obsługi 
zarządzania energią w procesorach 

background image

8

 

W SKRÓCIE

HAKIN9 7-8/2008

9

 

JAKUB BUCZYŃSKI

HAKIN9 

7-8/2008

Intel i AMD. Poprawione zostały również: 
narzędzie do administracji Sun StorEdge 
Traffic Manager, mechanizm służący 
do aktualizacji Solaris Live Upgrade 
oraz protokoły druku Internet Printing 
Protocol (IPP) i Open Printing API (PAPI). 
Z systemem operacyjnym w ręce 
użytkownika trafia także platforma 
programistyczna Sun Studio 12, aplikacja 
do tworzenia klastrów HPC Cluster 
Tools 7.1 oraz pakiet NetBeans IDE 6.0.1. 
Solaris 10 5/08 można pozyskać na 
dwa sposoby: pobrać z oficjalnej strony 
producenta lub zakupić nośnik CD/DVD 
(koszt 35 USD).

MICROSOFT ZAPRASZA HAKERÓW

Przedstawiciele firmy Microsoft obiecali 
na konferencji ToorCon w Seattle, iż 
firma nie będzie stosowała żadnych 
kar wobec etycznych hakerów. Ten 
nowatorski pomysł tłumaczy Katie 
Moussouris, strateg zabezpieczeń w 
firmie Microsoft: Cała filozofia polega 
na tym, że jeśli ktoś jest na tyle miły, 
że wskazuje nasze słabe strony, to tak 
naprawdę robi nam przysługę – należy 
mu więc podziękować, a nie wołać 
policję. Jest to bardzo odważny i mało 
popularny krok w walce z hakerami. Co 
to oznacza dla hakerów? Dzięki temu 
będą oni mogli eksperymentować bez 
konsekwencji prawnych. Jest jednak 
warunek – nie mogą powodować 
faktycznych zniszczeń. Po wykryciu luk 
hakerzy będą mogli współpracować z 
Microsoftem

.AVAST! 4.8

Pojawiła się nowa wersja 
oprogramowania antywirusowego 
firmy ALWIL Software - Avast! 4.8. W 
poprzedniej wersji 4.7 znaleziono lukę 
bezpieczeństwa umożliwiającą lokalnym 
użytkownikom rozszerzenie uprawnień 
systemowych. Nowe wydanie 4.8 
eliminuje tę wadę, a także wprowadza 
nowe funkcje ochrony przed rootkitami 
i spyware'em.

Avast! 4 Home Edition to w pełni 

funkcjonalny pakiet antywirusowy 
przeznaczony dla użytkowników 
domowych. Program posiada kilka 
modułów umożliwiających kompleksowe 

zabezpieczenie przed wirusami i 
groźnymi programami. avast! posiada 
dwa skanery, jeden standardowy i drugi 
działający w linii komend, zaawansowany 
interfejs użytkownika.

WIRESHARK 1.0

Po prawie dziesięciu latach prac, 
deweloperzy projektu Wireshark wydali 
w końcu oficjalną wersję 1.0 tego 
popularnego sniffera dostępnego na 
wiele systemów operacyjnych, kiedyś 
znanego też jako Ethereal.

Wireshark jest darmowym i do 

tego bardzo popularnym narzędziem 
do analizy ruchu sieciowego. Program 
używany jest przez profesjonalistów 
zajmujących się sieciami na całym 
świecie. Pozwala on na analizowanie, 
wykrywanie błędów, rozwój protokołów. 
Stosowany jest również w celach 
edukacyjnych.

SUPERKOMPUTER
DO ZADAŃ SPECJALNYCH

W Centrum Informatycznym Trójmiejskiej 
Akademii Sieci Komputerowej został 
uruchomiony najszybszy superkomputer 
w Europie Środkowo-Wschodniej 
– Galera. W uroczystości wziął udział 
Paul S. Otellini, prezes i dyrektor 
generalny firmy Intel Corporation. 
Moc obliczeniowa superkomputera 
Galera i projekty, w których będzie on 
wykorzystywany, wpłyną bezpośrednio na 
nasze codzienne życie – od medycyny 
i nowych sposobów leczenia raka do 
zwiększenia bezpieczeństwa lotów. Dzięki 
nowoczesnej technologii wyniki badań 
będą dostępne o wiele szybciej, niż ich 
realizacja metodami laboratoryjnymi, a 
przy tego typu projektach właśnie czas 
ma największe znaczenie
 – powiedział 
dr Paweł Gepner z Intel EMEA High 
Performance Computing Architecture 
Specialist.

Superkomputer mieści się 

w specjalnie zaprojektowanym 
pomieszczeniu Centrum 
Informatycznego Trójmiejskiej 
Akademickiej Sieci Komputerowej w 
Gdańsku. Klaster jest oparty na 1400 
procesorach czterordzeniowych Intel 
Xeon, co daje łącznie liczbę 5400 

rdzeni. Sprzęt waży 7 ton ma 17 
metrów długości, 8 kilometrów kabli i 
bilionową liczbę tranzystorów. Instalacja 
superkomputera rozpoczęła się w 
listopadzie 2007 r. i trwała aż do stycznia 
tego roku. Galera potrafi wykonać 50 
bilionów działań matematycznych 
(takich jak dodawanie lub mnożenie 
liczb zmiennoprzecinkowych) w ciągu 
sekundy!. Wykonanie takiej liczby działań 
zajęłoby wszystkim ludziom na Ziemi 
około 1000 lat. 

Jestem dumny, że Intel Technology 

uruchamia superkomputer o największej 
mocy obliczeniowej w tym regionie
 - 
przyznał Paul S. Otellini, główny szef firmy 
Intel.

CRACKER ZROBIŁ NA KONTO 
FIRMY ZAKUPY ZA MILION ZŁOTYCH

Jak poinformowała Polska Agencja 
Prasowa, Suwalska policja poszukuje 
crackera, który na konto jednej z firm 
zamówił zakupy o wartości miliona 
złotych, m.in. porsche warte ponad pół 
miliona zł, audi, jacht oraz przedmioty 
erotyczne w sex-shopie. Według 
prokuratury, włamywacz zamawiał 
towary w imieniu jednego z suwalskich 
sklepów komputerowych. Cracker 
włamał się na skrzynkę e-mail, z której 
wykasował wiele informacji i danych 
oraz anulował kilkadziesiąt umów z 
kontrahentami sklepu. Kiedy właściciel 
firmy zorientował się o wszystkim, 
poinformował prokuraturę. Ta twierdzi, 
że ma pewne podejrzenia, kto mógł 
dokonać przestępstwa.

FRIBET ODSZYFROWANY

Specjaliści zbadali konia trojańskiego 
odpowiedzialnego za ostatnią falę 
ataków na witryny WWW popierające 
Tybetańczyków oraz osoby odwiedzający 
te witryny. Okazało się, że malware o 
nazwie Trojan.Fribet oprócz możliwości 
kontroli zainfekowanego komputera 
pozwala także na wykonywanie zapytań 
SQL. Daje to możliwość składowania 
niebezpiecznego kodu na komputerze 
ofiary w celu ponownego użycia w 
przyszłości. Specjaliści twierdzą, że 
Fribet może wykorzystywać pewien 
szczególny rodzaj ataków SQL Injection.

background image

10

 

NA CD

HAKIN9 7-8/2008

11

 

HAKIN9.LIVE

HAKIN9 

7-8/2008

Na dołączonej do pisma płycie znajduje się dystrybucja hakin9.live (h9l) w wersji 4.0.3 

on BackTrack2.0, zawierająca przydatne narzędzia, dokumentację, tutoriale i materiały 

dodatkowe do artykułów.

ZAWARTOŚĆ CD

Aby zacząć pracę z hakin9.live, wystarczy uruchomić komputer z CD. Po 

uruchomieniu systemu możemy zalogować się jako użytkownik hakin9 bez 

podawania hasła.

JAK ZACZĄĆ

PROGRAMY

•  Advanced Lotus Password Recovery,
•  Advanced Office Password Breaker,
•  Advanced WordPerfect Office Password 

Recovery,

•  AnonymousBrowsingToolbar, 
•  Twister Anti-TrojanVirus, 
•  StealthKeylogger, 
•  kaspersky Internet Security. 

FILMY INSTRUKTAŻOWE

Dziewiąty odcinek: XSS-Cross Site Scripting
Kolejny odcinek z serii filmów instruktażowych, 
przedstawiający najpopularniejsze metody 
ataków na strony internetowe.

BACKTRACK2.0 NA TWOIM PENDRIVIE

Utwórz partycję na pendrivie:

# fdisk /dev/sda

Uwaga: Jeśli posiadasz dyski SCSI lub SATA, 
sprawdź gdzie są umieszczone – /dev/sda 
może być Twoim dyskiem systemowym!

Wykasuj wszystkie istniejące partycje 

(wciśnij d oraz [Enter], później wprowadź ilość 
partycji – od 1 do 4). Aby sprawdzić obecny 
stan partycji, wprowadź p. Później zacznij 
tworzyć nową partycję FAT32 – o wielkości
około 800 MB. W tym celu wciśnij n
zatwierdzając klawiszem [Enter]. Zacznij od 
początku i ustal wielkość tworzonej partycji 
lub wciśnij jeszcze raz [Enter], aby użyć 
całego urządzenia. Rodzaj partycji musi 
zostać zmieniony na FAT32 – wprowadź t 
i odpowiedz b na pojawiające się pytanie. 
Musimy teraz sprawić, żeby nowa partycja 

była bootowalna. Wpisz a, a następnie 
wprowadź numer partycji – 1. Teraz wpisz 
w celu zapamiętania zmian.

Pliki

Na początku utwórz na nowej partycji 
system plików:

# mkfs.vfat /dev/sda1

Teraz zdefiniuj punkt montowania 
tworzonego systemu plików:

# mount /dev/sda1 /mnt/usb

Skopiuj pliki hakin9 live do przygotowanej 
lokalizacji:

# cp -a /mnt/cdrom/* /mnt/usb/

Niektóre struktury plików powinny zostać 
usunięte:

# cd /mnt/usb/
# rm boot/vmlinuz
# rm boot/initrd.gz

/mnt/usb powinien znajdować się 
plik syslinux.cfg. Po tej operacji wykonaj 
następujące polecenia:

# umount /dev/usb/
# syslinux /dev/sda1

W przypadku problemów wydaj polecenie:

# syslinux-nomtools /dev/sda1

Zrestartuj teraz maszynę i w BIOSie ustaw 
bootowanie z USB–HDD. 

Gotowe, utworzyłeś w pełni funkcjonalny 

system na swoim pendrivie. Pamiętaj, że 
bootowanie z USB jest obsługiwane jedynie 
przez nowe płyty główne. Obecnie cała 
operacja jest możliwa tylko z pendrive'ami, 
posiadającymi sektory o rozmiarze 512 bajtów.

ADVANCED LOTUS 

PASSWORD RECOVERY 

Program odzyskuje hasła chroniące 
dokumenty utworzone w każdej wersji IBM/
Lotus SmartSuite. Rozpoznaje i odzyskuje 
hasła do dokumentów: Lotus Organizer, Lotus 
WordPro, Lotus 1-2-3, Lotus Approach oraz 
Freelance Graphics, podobnie, jak hasła FTP 
i do proxy w komponentach Lotus SmartSuite.

ADVANCED WORDPERFECT 

OFFICE PASSWORD RECOVERY 

Corel WordPerfect Office to powszechny 
wybór wielu użytkowników korporacyjnych 
i domowych. Atrakcyjna cena oraz 
profesjonalne narzędzia sprawiają, 
że program, dzięki najwyższej jakości 
za najniższą cenę, zadowala każdego 

background image

10

 

NA CD

HAKIN9 7-8/2008

11

 

HAKIN9.LIVE

HAKIN9 

7-8/2008

roku miliony klientów. Mimo możliwości 
zablokowania dokumentów hasłem, Corel 
nie zapewnia narzędzi do odzyskania 
zgubionego hasła. Co zrobić, kiedy 
potrzebujemy użyć takiego rozwiązania?

Aplikacja Advanced WordPerfect Office 

Password Recovery pozwala na szybkie 
i automatyczne uzyskanie dostępu do 
chronionych hasłem dokumentów Corel 
Office. Advanced WordPerfect Office 
Password Recovery pozwala na szybkie 
odzyskanie hasła zabezpieczającego 
dokumenty stworzone w Corel Office 
WordPerfect, Quattro Pro oraz Paradox 
– bez długich prób i wprowadzania 
zaawansowanych ustawień. Wystarczy 
po prostu uruchomić narzędzie i wybrać 
przycisk Open a hasło uzyskamy 
w mgnieniu oka.

ADVANCED OFFICE 

PASSWORD BREAKER

Advanced Office Password Breaker 
(AOPB) – program do odczytywania 
dokumentów Word 97/2000 i Excel 97/
2000, zabezpieczonych przed odczytem 
przez hasło. Program gwarantuje 
otwarcie dokumentu niezależnie od 
stopnia trudności hasła i jego długości. 
Uzyskuje się to dzięki przeszukiwaniu 
całej przestrzeni 40-bitowych kluczy 
szyfrowania. Tak niewielką długość klucza 

stosuje się w Office 97/2000 z powodu 
ograniczeń eksportowych. Ponieważ 
długość klucza szyfrowania wynosi 40 
bitów, całkowite przeszukiwanie wszystkich 
kluczy zajmuje około dwóch tygodni na 
komputerze z procesorem klasy P-III, 
taktowanym częstotliwością 1 GHz.
Po znalezieniu klucza możliwy jest odczyt 
dokumentu i usunięcie wszystkich 
ustawionych haseł.

KASPERSKY INTERNET SECURITY

Pakiet zapewnia kompleksową ochronę 
komputerów PC przed wszelkimi 
rodzajami zagrożeń. Oparty jest 
o program antywirusowy Kaspersky 
Anti-Virus 7.0. Wyposażony jest również 
w osobistą zaporę ogniową. Użytkownicy 
laptopów mogą definiować odrębne tryby 
pracy zapory dla różnych sieci – Internet, 
sieć lokalna oraz sieć zaufana. Program 
pozwala także na pracę w trybie ukrycia, 
w którym komputer użytkownika będzie 
całkowicie niewidoczny w sieci. Nad 
pocztą czuwa filtr antyspamowy. Pakiet 
został również wyposażony w nowy moduł 
kontroli rodzicielskiej. Dzięki systemowi 
analizy lingwistycznej oraz możliwości 
wykorzystywania czarnych list moduł 
ten pozwala rodzicom na kontrolowanie 
poczynań swoich pociech w Sieci. 
Produkt zawiera także nową funkcję, 
pozwalającą na ochronę poufnych 
danych użytkownika (adresów e-mail, 
haseł, informacji o kartach kredytowych 
itp.) przed kradzieżą.

STEALTH KEYLOGGER

Aplikacja oferuje kompleksowe 
rozwiązanie dla domu i biura, zawiera 
wiele zaawansowanych narzędzi, 
które pozwolą na monitoring osób 
używających Twojego komputera, 
śledzenie wiadomości oraz wizyt 
na różnych stronach internetowych. 
Wszystkie te zaawansowane możliwości 
powodują, że produkt stał się bardzo 
popularny wśród pracodawców, którzy 
mogli inwigilować działania swoich 
pracowników podczas godzin pracy. 
Jest także wykorzystywany w celach 
prywatnych – przez rodziców, w celu 
sprawdzenia, po jakich stronach 
internetowych surfują ich dzieci.

ANONYMOUS BROWSING TOOLBAR

Program jest łatwy w użyciu, służy do 
ochrony prywatności w Sieci. Ukrywa adres 
IP dzięki rozdzielaniu ruchu sieciowego 
przez zdalny serwer.

TWISTER ANTI-TROJAN VIRUS

Aplikacja oferująca zintegrowaną 
ochronę systemu, skanująca komputer 
w poszukiwaniu wirusów, trojanów 
i innych rodzajów złośliwego kodu, 
które wkradają się do systemu przez 
Internet, e-mail czy otrzymane zarażone 
pliki. Program zapewnia ochronę na 
bieżąco dzięki ciągłym aktualizacjom. 
Wśród innych funkcji można znaleźć: 
automatyczne skanowanie, kwarantannę 
podejrzanych plików, a także funkcję 
logowania własnej aktywności. Ochrona 
rejestru Windows zapobiega jakimkolwiek 
nieautoryzowanym jego modyfikacjom.

PODZIĘKOWANIA

Serdeczne podziekowania dla 
dystrybutora Softkey Poland Sp. z o.o. 
http://www.softkey.pl/ za udostepnienie 
programów na płytę, która jest dołączona 
do magazynu.

Rysunek 2. 

Advanced Office Password 

Breaker

Rysunek 1. 

Advanced WordPerfect Office 

Password Recovery

Żeby uruchomić swój komputer 

z płyty hakin9.live, ustaw swój BIOS 

na bootowanie z napędu CD-ROM. 

Po dokonanych zmianach uruchom 

ponownie komputer. Uruchomi się 

dystrybucja hakin.live, na której możesz 

przećwiczyć techniki prezentowane 

w tutorialach. Upewnij się, że sprawdziłeś 

desktopowe foldery – zawierają wiele 

dodatkowych materiałów. Zawartość CD 

można również przejrzeć w systemie 

Windows.

background image

12

 

NARZĘDZIA

HAKIN9 7-8/2008

13

 

NARZĘDZIA

HAKIN9 

7-8/2008

AVG to produkt firmy AVG Technologies, 
zapewniający kompleksową ochronę 
komputera przed atakami z Sieci, 

wirusami, złośliwym oprogramowaniem oraz 
spamem. Użytkownik może zarządzać wszystkimi 
składnikami pakietu korzystając z panelu 
administracyjnego (Przegląd systemu). Licencja 
jednostanowiskowa na okres 1 roku kosztuje 
51,74 euro. Produkt można pobrać bezpośrednio 
ze strony producenta (podobnie, jak 30-dniową 
wersję Trial).

Instalując AVG Internet Security, mamy 

możliwość wyboru języka instalacji, a więc i języka 
interfejsu programu. Do wyboru mamy kilka 
języków, m.in. polski, angielski oraz niemiecki.

Producent przygotował do wyboru dwa 

typy instalacji: standardową – zalecaną dla 
większości użytkowników oraz zaawansowaną, 
rekomendowaną użytkownikom zaawansowanym.

Wybierając instalację zaawansowaną, możemy 

sami zdecydować, które ze składników pakietu AVG 
zostaną zainstalowane na naszym komputerze. 
I tak, mamy do wyboru: Zaporę AVG, Ochronę 
sieci WWW, Dodatkowe instalowane języki, Skaner 
poczty e-mail oraz Anti-Spam. W następnym 
kroku mamy możliwość włączenia modułu AVG 
Security Toolbar. Składnik ten zapewnia ochronę 
przed sfałszowanymi witrynami – phishingiem. 
Po zakończeniu instalacji przechodzimy do kroku, 
w którym ustalamy częstotliwość aktualizacji 
programu – standardowo co 4 godziny – oraz 
porę codziennego skanowania. Następnie 
aktywujemy produkt AVG. Po tej czynności warto 
włączyć opcję zgłaszania niebezpiecznych 
witryn do laboratorium AVG. Kolejny krok to 
wybór profilu sieciowego naszego komputera. 
Przewidziane przez producenta możliwości to: 
Pojedynczy komputer, Komputer w domenie, 
Komputer przenośny oraz Sieć w domu lub 
małym biurze. W tym momencie zalecane jest 
wykonanie skanowania komputera, aby mieć 
pewność że korzystanie z niego jest bezpieczne. 
Do wyboru są trzy metody skanowania: Pełne 
skanowanie, Najczęściej skanowane katalogi – tj. 
katalogi programów oraz systemowe, Skanowanie 

wybranych obszarów. Zwykle większość 
antywirusów po instalacji wymaga zrestartowania 
komputera. W AVG nie jest to konieczne.

Zaraz po zakończeniu instalacji AVG wykryje 

nową sieć (połączenie sieciowe). W tym momencie 
profil sieciowy jest niezdefiniowany, a więc mamy 
możliwość zablokowania całego ruchu sieciowego, 
zezwolenie na dostęp do sieci dla wszystkich 
aplikacji oraz przełączenie na profil sieciowy, który 
wcześniej wybraliśmy. W warunkach normalnej 
pracy zalecane jest skorzystanie z tej ostatniej 
opcji. W momencie, gdy dowolny program będzie 
próbował połączyć się z Internetem, zostanie 
wyświetlone okienko dialogowe z możliwością 
odblokowania dostępu do Internetu bądź 
zablokowania dostępu do Sieci. Zaznaczając pole 
Zapisz odpowiedź sprawimy, że Zapora AVG nie 
będzie więcej monitować o próbie połączenia 
z Siecią wykonywaną przez tę konkretną 
aplikację. Jest to tzw. reguła firewalla, a AVG 
będzie wprowadzał reguły firewalla dla każdego 
programu żądającego połączenia z Internetem. W 
przypadku, gdy zachodzi obawa, że na komputerze 
zainstalowane jest złośliwe oprogramowanie, 
zalecane jest wybranie opcji blokowania całego 
ruchu sieciowego i stopniowe zezwalanie na 
dostęp do sieci dla zaufanych aplikacji. W module 
ochrony rezydentnej możemy ustawić opcję 
automatycznego leczenia zarażonych plików (!), 
skanowania plików przy zamykaniu lub skanowania 
sektorów rozruchowych dysków wymiennych. 

Podsumowując, pakiet AVG Internet Security 

8.0 dobrze spełnia swoje zadanie ochrony 
przed zagrożeniami z Internetu, złośliwym 
oprogramowaniem, spamem, równocześnie 
wymagając minimum interakcji z użytkownikiem. 
Obsługa programu jest intuicyjna, łatwo można 
włączyć czy wyłączyć poszczególne moduły. 
W sytuacji, gdy wszystkie składniki pakietu są 
włączone, można odczuć nieduże spowolnienie 
pracy komputera. Ostatecznie jednak można 
włączyć jedynie niezbędne komponenty. 
Użytkownik komputera instalując AVG Internet 
Security 8.0 może mieć pewność, że jego 
maszyna będzie dobrze chroniona.

Producent

AVG Technologies, 
dawniej Grisoft

System

Windows 2000, Windows 
XP, Windows Vista

Typ

Internet Security 

Strona producenta

http://www.quantus.pl

Recenzent

Rafał Lysik

AVG Internet Security 8.0 

««««

«

OCENA

background image

12

 

NARZĘDZIA

HAKIN9 7-8/2008

13

 

NARZĘDZIA

HAKIN9 

7-8/2008

GData Internet Security 2008 BOX 
otrzymujemy w kartonowym pudełku, 
w którym znajdziemy: 140-stronicowy 

podręcznik (choć powiedziałbym, że to raczej 
książka/kompendium), 2 ulotki (szybki start
dzięki któremu nie musimy od razu czytać 
całego podręcznika oraz ulotkę reklamową, 
informującą nas o innych wersjach pakietu), 
kartę – zdrapkę z kluczem rejestracyjnym oraz 
oczywiście płytę z programem. W tym miejscu 
należy wspomnieć, iż na płycie znajdziemy 
dodatkowo bootowalną wersję antywirusa 
działającą pod Linuksem, dzięki czemu możemy 
przeskanować komputer w poszukiwaniu 
wirusów jeszcze przed instalacją.

Na pakiet GData Internet Security 

2008 składają się: program antywirusowy 
korzystający z dwóch silników skanujących 
(konkretnie Kaspersky oraz avast), firewall, 
program antyspamowy, filtr stron sieci Web oraz 
rozbudowany, lecz prosty w konfiguracji moduł 
kontroli rodzicielskiej, w którym mamy możliwość 
blokowania dostępu do stron WWW stanowczo 
nie przeznaczonych dla dzieci (pornografia/
przemoc/sekty/piractwo) oraz ograniczania 
czasu spędzanego przy komputerze.

Instalacja przebiega dwuetapowo, jest prosta 

i bezproblemowa. Sprowadza się praktycznie 
do przysłowiowego klikania dalej, dalej, dalej, 
zakończ
. Po restarcie komputera firewall 
przygotuje listę reguł i już można uruchomić 
program po raz pierwszy.

Po pierwszym uruchomieniu program 

zaleca aktualizację poprzedzoną jednorazową 
rejestracją klucza ze zdrapki, dzięki czemu 
otrzymujemy login i hasło wymagane do 
pobierania aktualizacji.

W ciągu pierwszych dni zapora będzie 

tworzyła reguły podczas uruchamiania 
programów. Tutaj należy także wspomnieć o 
trybie Autopilot, który włącza się automatycznie 
podczas uruchamiania pełnoekranowej aplikacji, 
np. gry, dzięki czemu podczas rozgrywki program 
nie będzie męczył nas pytaniami o zgodę na 
połączenie.

W przypadku, gdy chcemy sprawdzić nasz 

system na obecność wirusów jeszcze przed 
instalacją pakietu (lub gdy – co gorsza – nasz 
komputer jest już zainfekowany), możemy 
użyć skanera z płyty instalacyjnej, która 
jednocześnie jest bootowalną płytą z okrojoną 
wersją skanera. Po uruchomieniu komputera 
z płyty mamy do dyspozycji maksymalnie 
uproszczone środowisko graficzne XFCE, skaner 
obsługiwany jednym kliknięciem oraz linię 
komend. Niestety, bazy sygnatur są nieaktualne 
– lecz nie jest to problemem, jeśli korzystamy z 
połączenia z Internetem dostarczanego przez 
zewnętrzny router (modem UPC, osiedlówka, 
Liveboksy). Dzięki temu możemy bez problemu 
zaktualizować bazy, nawet, jeśli nie mamy jeszcze 
zarejestrowanej subskrypcji.

Pakiet dostępny jest w trzech wersjach :

•   GData Antivirus 2008 – zawiera tylko skaner 

antywirusowy, 

•   GData InternetSecurity 2008 – obejmuje 

wszystkie składniki wymienione w powyższej 
recenzji,

•   GData TotalCare 2008 – zawiera zestaw 

programów z wersji InternetSecurity plus 
narzędzia optymalizujące komputer i służące 
do wykonywania kopii zapasowych danych.

Obsługę programu oraz pracę z nim oceniam 
na bardzo łatwą i przyjemną. Użytkownicy chcący 
maksymalnie dostosować program do swoich 
potrzeb mają możliwość np. tworzenia własnych 
reguł firewalla, profili skanowania oraz ustawień 
innych modułów programu.

Producent

GData

System

Windows 2000, Windows 
XP, Windows Vista

Typ

Internet Security

Strona producenta

http://www.gdata.pl/
portal/PL/

Recenzent

Damian Klimek

Gdata Internet 

Security 2008

««««

OCENA

background image

14

 

POCZĄTKI

HAKIN9 7-8/2008

W

irtualny pulpit jest mechanizmem 
dość powszechnie stosowanym w 
wielu dystrybucjach systemu Linux. 

Używając go mamy wrażenie, jakbyśmy 
dysponowali kilkoma pulpitami. Dzięki temu 
możemy podzielić aplikacje na grupy i w razie 
potrzeby przełączać się między nimi. W ten 
sposób łatwo możemy zarządzać oknami. 
Zasada działania wirtualnych pulpitów jest dość 
prosta. 

Poszukujemy wszystkich widocznych 

okien na pulpicie, zapamiętując ich położenie 
oraz wymiary, a następnie ukrywamy je. W 
ten sposób powstaje nowy wirtualny pulpit, 
na którym możemy swobodnie pracować. 
Gdy zechcemy powrócić do poprzedniego 
pulpitu, chowamy bieżące okna, zapamiętując 
ich wymiary i położenie, a przywracamy 
widoczność okien wcześniej ukrytych. Na takiej 
zasadzie przełączamy się między wirtualnymi 
pulpitami. 

Cała trudność polega na znalezieniu 

sposobu zarządzania oknami pulpitu jako 
jednym obiektem. Z pomocą przychodzi nam 
WinApi. 

Artykuł ten ma na celu zilustrowanie 

mechanizmu wirtualnych pulpitów jako 
metody polepszającej komfort pracy z 
systemem Windows, a także pokazanie, jak 
łatwo użyteczną technikę można wykorzystać 
w sposób szkodliwy. Projekt zrealizujemy 
pod platformą .NET. Do napisania kodu 

MACIEJ PAKULSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

jak działają wirtualne pulpity,

jak zarządzać oknami w 

Windows. 

CO POWINIENEŚ 

WIEDZIEĆ

znać podstawy projektowania 

zorientowanego obiektowo.

wykorzystamy darmowe środowisko Visual C# 
2008 Expres Edition.

Klasa 

obsługująca wirtualny pulpit

Tworzymy nowy projekt i nadajemy mu 
odpowiednią nazwę. Dodajemy klasę, która 
będzie reprezentować wirtualny pulpit. Zaczniemy 
od importu niezbędnych funkcji WinApi. Ilustruje 
to kod z Listingu 1.

Aby móc skorzystać z 

DllImport

musimy najpierw dodać przestrzeń nazw 

System.Runtime.InteropServices

. Działanie 

poszczególnych zaimportowanych funkcji jest 
następujące:

•  

GetDesktopWindow

 – funkcję 

wykorzystujemy do uzyskania uchwytu do 
pulpitu,

•  

GetTopWindow

 – funkcja zwraca uchwyt do 

okna będącego najwyżej w porządku osi z 
(ang. z order). Jako parametr przekazujemy 
uchwyt do okna będącego oknem 
nadrzędnym (ang. parent window) w stosunku 
do poszukiwanego okna,

•  

GetWindow

 – funkcja zwraca uchwyt 

do okna, które jest w specjalnej relacji 
z wybranym oknem. Pierwszy parametr 
określa relację między oknami, drugi 
parametr to uchwyt do okna, z którym 
poszukiwane okno jest w relacji określonej 
pierwszym parametrem,

Stopień trudności

Wirtualny 

pulpit 

Windows

Współczesne systemy operacyjne umożliwiają uruchomienie 

wielu programów jednocześnie, co może powodować problem 

organizacji okien na pulpicie. Rozwiązaniem tego problemu może 

być użycie wirtualnych pulpitów, choć mechanizm ten może także 

tworzyć podstawę do działania złośliwego oprogramowania. 

background image

15

 

WIRTUALNY PULPIT WINDOWS

HAKIN9 

7-8/2008

•  

IsWindowVisible

 – funkcja 

sprawdza, czy okno jest widoczne 
(czy ma ustawiony styl okna WS_
VISIBLE),

•  

FindWindowEx

 – funkcja zwraca 

uchwyt do okna. Pierwszy parametr 
to uchwyt do okna będącego 
oknem nadrzędnym w stosunku do 
poszukiwanego okna, drugi parametr 
określa uchwyt okna, od którego 
rozpocznie się przeszukiwanie w 
porządku osi z, trzeci parametr określa 
nazwę klasy okna, a czwarty jest 
nazwą okna,

•  

BeginDeferWindowPos

 – przydziela 

pamięć dla struktury opisującej 
położenie okien, których liczba jest 
przekazywana jako parametr. Funkcja 
zwraca uchwyt do struktury,

•  

DeferWindowPos

 – funkcja zmienia 

atrybuty okna (takie, jak położenie, 
rozmiar, widoczność), jako parametry 
przyjmuje ona kolejno:
•   uchwyt do struktury 

opisującej okna uzyskiwany 
przy pomocy wywołania 

BeginDeferWindowPos

,

•   uchwyt do okna, którego atrybuty 

chcemy zmienić,

•   uchwyt do okna, które poprzedza 

konkretne okno w porządku osi z. 
Możliwe jest także zastosowanie 
stałej, która będzie określać 
położenie okna względem innych, 

•   współrzędna x lewego górnego 

rogu okna,

•   współrzędna y lewego górnego 

rogu okna,

•   szerokość okna w pikselach,
•   wysokość okna w pikselach,
•   flagi. 

Wywołanie 

DeferWindowPos

 powoduje 

zaktualizowanie struktury będącej 
pierwszym parametrem funkcji, dzięki 
czemu zawiera ona informacje o oknie, 
którego uchwyt przekazujemy jako drugi 
parametr. 

Funkcja zwraca uchwyt do 

zaktualizowanej struktury.

•  

EndDeferWindowPos

 – wywołanie 

funkcji powoduje jednoczesną zmianę 
atrybutów okien, określonych przez 
strukturę, której uchwyt przekazujemy 
jako parametr.

Kolejnym krokiem będzie zdefiniowanie 
stałych, których użyjemy przy wywołaniu 
funkcji WinApi. Dodajemy do naszego 
programu kod z Listingu 2. Stałe są 
wykorzystywane w następujący sposób:

•  

GW _ HWNDNEXT

 – wywołując funkcję 

GetWindow

 z tym parametrem 

uzyskujemy uchwyt do okna, które leży 
poniżej wybranego okna, w porządku 
osi z,

•  

SWP _ NOZORDER

 – stała 

wykorzystywana jako ósmy parametr 
funkcji 

DeferWindowPos

, określa 

brak zmiany kolejności okien 
(parametr 

hWndInsertAfter

 jest 

ignorowany),

•  

SWP _ HIDEWINDOW

 – ósmy parametr 

funkcji 

DeferWindowPos

, określa 

ukrycie okna,

•  

SWP _ SHOWWINDOW

 – ósmy parametr 

funkcji 

DeferWindowPos

, określa 

pokazanie okna,

•  

SWP _ NOACTIVE

 – ósmy parametr 

funkcji 

DeferWindowPos

, określa brak 

aktywacji okna,

•  

SWP _ NOSIZE

 – ósmy parametr funkcji 

DeferWindowPos

, określa brak zmiany 

rozmiaru okna (parametry cx i cy są 
ignorowane),

•  

SWP _ NOMOVE

 – ósmy parametr 

funkcji 

DeferWindowPos

, brak zmiany 

położenia okna (parametry x i y są 
ignorowane).

Rysunek 1. 

Wirtualne pulpity Windows

Listing 1. 

Funkcje WinApi

[

DllImport

(

"user32.dll"

)]

public

 

static

 

extern

 

IntPtr

 

GetDesktopWindow

();

[

DllImport

(

"user32.dll"

)]

public

 

static

 

extern

 

IntPtr

 

GetTopWindow

(

IntPtr

 

hwnd

);

[

DllImport

(

"user32.dll"

)]

public

 

static

 

extern

 

IntPtr

 

GetWindow

(

IntPtr

 

hwnd

int

 

cmd

);

[

DllImport

(

"user32.dll"

)]

public

 

static

 

extern

 

bool

 

IsWindowVisible

(

IntPtr

 

hwnd

);

[

DllImport

(

"user32"

)]

public

 

static

 

extern

 

IntPtr

 

FindWindowEx

(

IntPtr

 

parent

IntPtr

 

childAfter

string

 

szClass

string

 

szWindow

);

[

DllImport

(

"user32"

)]

public

 

static

 

extern

 

IntPtr

 

BeginDeferWindowPos

(

int

 

nNumWindows

);

[

DllImport

(

"user32"

)]

public

 

static

 

extern

 

IntPtr

 

DeferWindowPos

(

IntPtr

 

hWinPosInfo

IntPtr

 

hwnd

int

 

hWndInsertAfter

int

 

x

int

 

y

int

 

cx

int

 

cy

int

 

wFlags

);

[

DllImport

(

"user32"

)]

public

 

static

 

extern

 

int

 

EndDeferWindowPos

(

IntPtr

 

hWinPosInfo

);

background image

16

 

POCZATKI

HAKIN9 7-8/2008

WIRTUALNY PULPIT WINDOWS

17

 

HAKIN9 

7-8/2008

Następną czynnością jest zadeklarowanie 
pól naszej klasy. Pora na kod 
zaprezentowany na Listingu 3.

Pola 

hwndTab

 użyjemy do 

przechowania uchwytów okien, 
które tworzą nasz wirtualny pulpit. 

Zadeklarowana tablica ma stały wmiar, 
tak więc jeżeli liczba okien przekroczy 
1024, nie będziemy mogli ich obsłużyć. 
Aby temu zapobiec, możemy np. 
wykorzystać kontener 

List

. Jednakże 

prawdopodobieństwo, że będziemy 
obsługiwali więcej niż 1024 okna jest 
małe, tak więc skorzystamy z tablicy. Pole 

counter

 będzie licznikiem okien, które 

obsługujemy. 

Jesteśmy teraz gotowi do 

zaimplemetowania metod, które będą 
odowiedzialne za obsługę wirtualnego 
pulpitu. Dodajemy kod z Listingu 4.

Zadaniem metody 

Hide

 jest 

schowanie okien bieżącego pulpitu. Na 
początku uzyskujemy uchwyt do pulpitu, 
wywołując 

GetDesktopWindow

. Następie 

wywołujemy funkcję 

GetTopWindow

dzięki czemu będziemy znać uchwyt okna 
będącego najwyżej w porządku osi z. 

Używając funkcji 

FindWindowEx

uzyskujemy uchwyty odpowiedno do 
paska zadań (ang. task bar), a także 
pulpitu (pulpit oznacza w tym momencie 
ikony takie, jak Mój Komputer itp.). 
Następnie przy wykorzystaniu pętli 

do 

.. while

 przeszukujemy okna pulpitu. 

Kryteria poszukiwania zawężamy do 
okien widocznych i nie będących oknami 
paska zadań oraz pulpitu. 

Dodatkowo, jeżeli aplikacja 

obsługująca wirtualne pulpity jest 
widoczna, powinniśmy ją także 
pominąć podczas operacji zmiany 
atrybutu widoczności okien (parametr 

appHandle

). 

Dysponując tablicą uchwytów do 

widocznych okien pulpitu, możemy 
zmienić ich wybrane atrybuty. Dzięki 
wywołaniu funkcji 

BeginDeferWindowPos

 

tworzymy strukturę opisującą okna. 
Używając pętli 

for

 zmieniamy atrybuty 

wybranych okien – ponieważ chcemy 
schować okna, ustawiamy flagę 

SWP _

HIDEWINDOW

. Zmian dodokonujemy 

wyołując funkcję 

EndDeferWindowPos

Uzyskujemy w ten sposób nowy, wirtualny 
pulpit.

Metody 

Show

 używamy, jeżeli 

utworzyliśmy wcześniej wirtualny pulpit, 
na który właśnie chcemy się przełączyć. 
Tworzy ona strukturę opisującą okna, a 
następnie zmienia kolejno artybuty okien 
wirtualnego pulpitu, jaki zamierzamy 
uaktywnić. 

Listing 2. 

Stałe klasy

private

 

int

 

GW_HWNDNEXT

 

=

 

2

;

private

 

int

 

SWP_NOZORDER

 

=

 

4

;

private

 

int

 

SWP_HIDEWINDOW

 

=

 

128

;

private

 

int

 

SWP_SHOWWINDOW

 

=

 

64

;

private

 

int

 

SWP_NOACTIVATE

 

=

 

16

;

private

 

int

 

SWP_NOSIZE

 

=

 

1

;

private

 

int

 

SWP_NOMOVE

 

=

 

2

;

Listing 3. 

Pola klasy

private

 

IntPtr

[]

 

hwndTab

 

=

 

new

 

IntPtr

[

1024

];

private

 

int

 

counter

 

=

 

0

;

Listing 4. 

Metody klasy 

public

 

void

 

Hide

(

IntPtr

 

appHandle

)

{

   

IntPtr

 

deskWin

 

=

 

GetDesktopWindow

();

   

IntPtr

 

win

 

=

 

GetTopWindow

(

deskWin

);

   

if

 

(

win

 

==

 

IntPtr

.

Zero

)

      

return

;

   

IntPtr

 

hTask

 

=

 

FindWindowEx

(

IntPtr

.

Zero

IntPtr

.

Zero

"Shell_TrayWnd"

null

);

   

IntPtr

 

des

 

=

 

FindWindowEx

(

IntPtr

.

Zero

IntPtr

.

Zero

"Progman"

null

);

   

counter

 

=

 

0

;

   

do

   

{

      

if

 

(

IsWindowVisible

(

win

)

 

&&

 

win

 

!=

 

hTask

 

&&

 

win

 

!=

 

deskWin

 

&&

 

win

 

!=

 

des

 

&&

 

win

 

!=

 

appHandle

)

      

{

         

hwndTab

[

counter

++]

 

=

 

win

;

      

}

   

}

   

while

 

((

win

 

=

 

GetWindow

(

win

GW_HWNDNEXT

))

 

!=

 

IntPtr

.

Zero

);

   

IntPtr

 

s

 

=

 

BeginDeferWindowPos

(

counter

);

   

for

 

(

int

 

i

 

=

 

0

;

 

i

 

<

 

counter

;

 

i

++)

   

{

      

s

 

=

 

DeferWindowPos

(

s

hwndTab

[

i

]

0

,

            

0

            

0

,

            

0

,

            

0

,

            

SWP_HIDEWINDOW

 

|

 

SWP_NOMOVE

 

|

 

SWP_NOSIZE

 

|

 

SWP_NOZORDER

 

|

 

SWP_

NOACTIVATE

);

   

}

   

EndDeferWindowPos

(

s

);

}

public

 

void

 

Show

()

{

   

IntPtr

 

s

 

=

 

BeginDeferWindowPos

(

counter

);

   

for

 

(

int

 

i

 

=

 

0

;

 

i

 

<

 

counter

;

 

i

++)

   

{

      

s

 

=

 

DeferWindowPos

(

s

hwndTab

[

i

]

0

,               

0

            

0

,

            

0

,

            

0

,

      

SWP_SHOWWINDOW

 

|

 

SWP_NOMOVE

 

|

 

SWP_NOSIZE

 

|

 

SWP_NOZORDER

);

   

}

   

EndDeferWindowPos

(

s

);

}

background image

16

 

POCZATKI

HAKIN9 7-8/2008

WIRTUALNY PULPIT WINDOWS

17

 

HAKIN9 

7-8/2008

Ponieważ chcemy teraz, aby wybrane 

okna były ponownie widoczne, tym razem 
włączamy flagę 

SWP _ SHOWWINDOW

Zmian dokonujemy przy pomocy 
wywołania funkcji 

EndDeferWindowPos

.

Wirtualny pulpit 

jako zagrożenie

Stworzona przez nas klasa jest 
implementacją wirtualnego pulpitu w 
systemie Windows. 

Jednakże możemy ją zastosować 

także w innym celu. Zastosowanie tylko 
funkcji chowającej, działającej w pętli 
(Listing 5), uniemożliwi nam pracę z 
jakąkolwiek alikacją – po prostu nie 
będziemy widzieli okien. 

Dodatkowo zauważmy, że 

przeszukując okna na pulpicie, na liście 
wyjątków nie uwzględniamy menadżera 
zadań – jego też nie będziemy w stanie 
wywołać. 

Możemy się także pokusić o napisanie 

aplikacji, która będzie imitować awarię 
systemu poprzez brak odpowiedzi na 
komendy użytkownika. Zasada działania 
jest dość prosta. Robimy zrzut ekranu 
i zapisujemy go do pliku, następnie 
ukrywamy wszystkie okna – włącznie z 
paskiem zadań oraz ikonami na pulpicie, 
a na koniec zmieniamy tapetę na obraz 
przedstawiający zrzut ekranu. 

Ponieważ obraz ekranu był zapisany 

przed schowaniem wszystkich okien, 
są one na nim widoczne. W ten sposób 
wygląd pulpitu użytkownika nie uległ 
zmianie, lecz jego funkcjonalność jest 
zablokowana.

Implementacja powyższego 

mechanizmu wymaga drobnych zmian 
klasy wirtualnego pulpitu. Na początek 
będziemy potrzebować funkcji, za 
pomocą której zmienimy tapetę pulpitu. 
W tym celu wykorzystamy funkcję 

SystemParametersInfo

. W sekcji 

importu funkcji 

WinApi

 dodajemy kod 

zawarty na Listingu 6.

Zadaniem funkcji 

SystemParametersInfo

 jest zmiana 

bądź odczytanie wybranych ustawień 
systemowych. 

Przyjmuje ona następujące 

parametry:

•  

uAction

 – kod czynności, którą 

chcemy wykonać,

•  

uParam

 – znaczenie tego parametru 

jest zależne od pierwszego 
parametru,

•  

lpvParam

 – znaczenie tego parametru 

jest także zależne od pierwszego 
parametru,

•  

uWinIni

 – określa czynności, jakie 

zostaną wykonane po dokonaniu zmian 
ustawień systemowych.

Kolejnym krokiem jest zdefiniowanie 
stałych, których użyjemy, wywołując 
funkcję 

SystemParametersInfo

. W 

sekcji definicji stałych klasy dopisujemy 
kod z Listingu 7.

Wywołanie funkcji 

SystemParametersInfo

 ze stałą 

SPI _

SETDESKWALLPAPER

 powoduje zmianę 

tapety pulpitu. 

Ścieżkę do pliku zawierającego 

obraz nowej tapety podajemy jako trzeci 

parametr funkcji. W systemach Windows 
Server 2003 oraz Windows XP/2000 plik z 
obrazem nie może być w formacie JPEG. 
Przy definicji czwartego parametru funkcji 
używamy stałych 

SPIF _ UPDATEINIFILE

 

SPIF _ SENDWININICHANGE

. Oznaczają 

one odpowiednio aktualizację profilu 
użytkownika oraz wygenerowanie 
komunikatu 

WM _ SETTINGCHANGE

Przejdźmy do napisania metody, 

która będzie zamieniać tapetę pulpitu na 
wcześniej wykonany zrzut ekranu. Kod 
metody jest przedstawiony na Listingu 8.

Na początku dodajemy 

przestrzenie nazw 

System.Drawing

System.Windows.Forms

, a także 

System.Drawing.Imaging

.

Metoda rozpoczyna działanie od 

stworzenia obiektu klasy 

Bitmap

reprezentującego zrzut ekranu 
Przeciążony konstruktor tej klasy pobiera 

Listing 5. 

Jak nie należy używać wirtualnych pulpitów – prosty przykład

while

 

(

true

)

{

   

(

new

 

VirtualPulpit

())

.

Hide

(

this

.

Handle

);

   

Thread

.

Sleep

(

100

);

}

Listing 6. 

Funkcja SystemParametersInfo

[

DllImport

(

"user32.dll"

)]

public

 

static

 

extern

 

int

 

SystemParametersInfo

(

int

 

uAction

int

 

uParam

string

 

lpvParam

int

 

fuWinIni

);

Listing 7. 

Stałe wykorzystywane przy zmianie tapety pulpitu

private

 

int

 

SPI_SETDESKWALLPAPER

 

=

 

20

;

private

 

int

 

SPIF_UPDATEINIFILE

 

=

 

1

;

private

 

int

 

SPIF_SENDWININICHANGE

 

=

 

2

;

Listing 8. 

Metoda zamieniająca tapetę pulpitu na zrzut ekranu

private

 

void

 

ChangeWallPaperToScreenShot

(

string

 

bmpPath

)

{

   

Bitmap

 

bitmap

 

=

 

new

 

Bitmap

(

                   

Screen

.

PrimaryScreen

.

Bounds

.

Width

,

                

Screen

.

PrimaryScreen

.

Bounds

.

Height

,

                

PixelFormat

.

Format32bppArgb

);

   

Graphics

 

screenshot

 

=

 

Graphics

.

FromImage

(

bitmap

);

   

screenshot

.

CopyFromScreen

(

Screen

.

PrimaryScreen

.

Bounds

.

X

,

           

Screen

.

PrimaryScreen

.

Bounds

.

Y

,

                

0

0

,

                  

Screen

.

PrimaryScreen

.

Bounds

.

Size

,

                

CopyPixelOperation

.

SourceCopy

);

   

bitmap

.

Save

(

bmpPath

ImageFormat

.

Bmp

);

   

SystemParametersInfo

(

SPI_SETDESKWALLPAPER

0

bmpPath

,          

SPIF_UPDATEINIFILE

 

|

 

SPIF_SENDWININICHANGE

);

}

background image

18

 

POCZATKI

HAKIN9 7-8/2008

dwa parametry: szerokość i wysokość 
obrazu. 

Ponieważ zapisujemy cały obraz 

na monitorze, wykorzystujemy klasę 

Screen

 w celu odczytania wysokości i 

szerokości ekranu monitora. Zrzut ekranu 
tworzony jest poprzez wywołanie metody 

CopyFromScreen

 klasy 

Graphics

. Kopiuje 

ona piksele z określonego fragmentu 
ekranu do instancji klasy 

Graphics

Metoda ta przyjmuje następujące 

parametry:

•   współrzędną x punktu początkowego,
•   współrzędną y punktu początkowego,
•   współrzędną x punktu końcowego,

•   współrzędną y punktu końcowego,
•   rozmiar obszaru do przekopiowania,
•   obiekt klasy 

CopyPixelOperation

odpowiadający za sposób 
przedstawiania kolorów.

Obraz zapisujemy w wybranym miejscu, 
używając formatu BMP. Na koniec 
zamieniamy tapetę pulpitu na wcześniej 
utworzony zrzut ekranu.

Ostatnią czynnością jest – pokazana 

na Listingu 9 – drobna modyfikacja 
metody 

Hide

.

Istotną zmianą jest wywołanie na 

początku metody 

ChangeWallPaperToS

creenShot

. Dodatkowo usunęliśmy kod, 

który dodaje okna aplikacji, paska zadań 
oraz pulpitu (rozumianego jako ikony) 
do listy wyjątków podczas wyszukiwania 
widocznych okien. 

Uruchamiając aplikację, która 

wywołuje metodę 

Hide

, zauważymy, że 

nasz pulpit nie odpowiada na wydawane 
przez nas komendy. Istnieje jednak 
możliwość otworzenia pewnych okien, 
np. poprzez specjalne kombinacje 
klawiszy. Aby temu zapobiec, możemy 
wykorzystać wcześniejszą wersję metody 

Hide

 (Listing 4) w sposób przedstawiony 

na Listingu 5. 

Podsumowanie

Celem artykułu było zaprezentowanie 
techniki wirtualnych pulpitów. 
Wykorzystując ten mechanizm jesteśmy 
w stanie w sposób swobodny zarządzać 
oknami uruchomionych apikacji, dzięki 
czemu praca z systemem Windows staje 
się wygodniejsza. 

Jednakże omówioną technikę można 

wykorzystać do pisania róznego rodzaju 
robaków, które zamiast pomagać 
użytkownikowi – powodują szkody w jego 
systemie. 

Będąc w stanie kontrolować pozycję, 

rozmiar oraz widoczność okien, jesteśmy 
w stanie podmienić wybrane okna. Pisząc 
program, wyglądający identycznie jak 
np. menadżer poczty e-mail, możemy 
bardzo szybko zamienić oryginalne okno 
aplikacji na specjalnie przygotowaną 
przez nas kopię. Użytkownik, 
nieświadomy zagrożenia, wprowadza 
swój login i hasło, które zamiast trafić 
do menadżera poczty, są przez nas 
przechwytywane. Jeżeli dodatkowo, 
przywrócimy widoczność oryginalnego 
okna aplikacji, wygenerujemy komunikat 
o drobnym błędzie z prośbą powtórnego 
wpisania loginu i hasła, to istnieje 
duże prawdopodobieństwo, że dane 
użytkownika zostaną wykradzione w 
sposób niezauważalny.

Maciej Pakulski

Absolwent studiów inżynierskich oraz aktywny członek 

koła naukowego .NET Wydziału Fizyki, Astronomii i 

Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika 

w Toruniu. Obecnie na studiach magisterskich. 

Programowaniem zajmuje się od 2004. Potrafi 

programować biegle w językach C/C++, Java, VHDL. 

Programowaniem w języku C# i platformą .NET zajmuje 

się od 2006 roku. Jest autorem szeregu publikacji z 

zakresu programowania oraz bezpieczeństwa IT.

Kontakt z autorem: mac_pak@interia.pl

W Sieci

•   http://www.microsoft.com/express/download – witryna Microsoft, z której można pobrać 

środowisko Visual C# 2008 Express Edition,

•   http://www.codeproject.com – zbiór bardzo wielu przykładów aplikacji dla platformy 

.NET i nie tylko. Naprawdę godny polecenia,

•   http://www.codeguru.pl – polska strona dla programistów .NET,
•   http://msdn2.microsoft.com – dokumentacja MSDN. Znajdziesz tu opisy wszystkich 

klas, własności i metod, jakie zawiera platforma .NET wraz z przykładowymi 
programami.

Listing 9. 

Zmodyfikowana metoda Hide

public

 

void

 

Hide

()

{

   

ChangeWallPaperToScreenShot

(

@

"C:

\w

allPaper"

);

   

IntPtr

 

deskWin

 

=

 

GetDesktopWindow

();

   

IntPtr

 

win

 

=

 

GetTopWindow

(

deskWin

);

   

if

 

(

win

 

==

 

IntPtr

.

Zero

)

      

return

;

   

counter

 

=

 

0

;

   

do

   

{

      

if

 

(

IsWindowVisible

(

win

)

 

&&

 

win

 

!=

 

deskWin

 

)

                

{

                   

hwndTab

[

counter

++]

 

=

 

win

;

                

}

   

}

   

while

 

((

win

 

=

 

GetWindow

(

win

GW_HWNDNEXT

))

 

!=

 

IntPtr

.

Zero

);

   

IntPtr

 

s

 

=

 

BeginDeferWindowPos

(

counter

);

   

for

 

(

int

 

i

 

=

 

0

;

 

i

 

<

 

counter

;

 

i

++)

   

{

      

s

 

=

 

DeferWindowPos

(

s

hwndTab

[

i

]

0

,

            

0

,

            

0

,

            

0

,

            

0

,

            

SWP_HIDEWINDOW

 

|

 

SWP_NOMOVE

 

|

 

SWP_NOSIZE

 

|

 

SWP_NOZORDER

 

|

 

SWP_

NOACTIVATE

);

   

}

   

EndDeferWindowPos

(

s

);

}

background image

Jeśli nie możesz odczytać zawartości płyty CD, a nie jest ona uszkodzona 

mechanicznie, sprawdź ją na co najmniej dwóch napędach CD.

W razie problemów z płytą, proszę napisać pod adres:

cd@software.com.pl

background image

20

 

HAKIN9

ATAK

R

ok 2008 będzie najprawdopodobniej 
jednym z najciekawszych w 
dotychczasowej historii rynku 

przeglądarek internetowych, przede wszystkim za 
sprawą zaostrzającej się konkurencji dla nadal 
najpopularniejszego Internet Explorera. W chwili 
pisania tego tekstu Firefox zagospodarował 
nieco ponad 25% komputerów na świecie. W 
Polsce ten odsetek był znacząco większy – 33% 
udziałów. Na rynku zauważalne są jeszcze Opera 
i Safari. W przypadku Opery liczba użytkowników 
waha się w okolicach 6-7%. Wszelkie dane 
odnośnie Safari są jeszcze niezbyt precyzyjne 
(szacunki mówią o mniej więcej 4-5%). Wiadomo 
jednak, że od kiedy Apple zdecydował się 
na wypuszczenie wersji na Windowsa, jej 
popularność bardzo dynamicznie wzrasta.

Ale nie o popularności poszczególnych 

przeglądarek chciałbym napisać, lecz o ich 
bezpieczeństwie. Temat jest ważny, ponieważ 
przeglądarka internetowa jest bodajże najczęściej 
używanym programem, z wyłączeniem może 
samego systemu operacyjnego. Szacunki 
przedstawiane przez podmioty zajmujące się 
bezpieczeństwem (np. SecuniaSymantecCERT 
wskazują, że przeszło 80% ataków dokonywanych 
przez Internet odbywa się za pośrednictwem 
przeglądarki internetowej (głównie poprzez 
niebezpieczne strony WWW ).

W artykule znajdzie się omówienie czterech 

najpopularniejszych przeglądarek na świecie, 
także i w Polsce. Na rynku znajdują się również 

PRZEMYSŁAW ŻARNECKI

Z ARTYKUŁU 

DOWIESZ SIĘ

jak ważne jest bezpieczeństwo 

przeglądarek internetowych,

jakie potencjalne 

zagrożenia niesie ze sobą 

nieodpowiedzialne korzystanie 

z Sieci,

w jaki sposób możemy 

przyczynić się do wzrostu (a 

także obniżenia) poziomu 

bezpieczeństwa,

jakie są podstawowe 

mechanizmy przeciwdziałania 

zagrożeniom.

CO POWINIENEŚ 

WIEDZIEĆ

nie ma całkowicie bezpiecznej 

przeglądarki. Każda ma jakieś 

wady,

poziom bezpieczeństwa 

komputera zależy nie tylko od 

stosowanych zabezpieczeń, lecz 

również od samego użytkownika,

otwieranie nieznanych 

odnośników z podejrzanych 

źródeł może skończyć się wręcz 

tragicznie,

zawsze korzystaj z aktualizacji 

krytycznych,

wreszcie – nie daj się omamić 

mitowi bezpiecznego programu 

czy systemu, o bezpieczeństwie 

decydujesz przede wszystkim Ty. 

Nie daj się skusić reklamom, nie 

wszystko złoto, co się świeci!

inne, ale liczba ich użytkowników jest naprawdę 
niewielka – poza tym wiele z nich stanowi klony 
Firefoksa, więc pozwolę sobie na ich ominięcie. 
Zapraszam do lektury tekstu.

Internet Explorer

Bezpieczeństwo produktów giganta z Redmond 
od zawsze wzbudza kontrowersje. Niemalże od 
samego powstania Internet Explorer znajduje się 
w ogniu krytyki, paradoksalnie podbijając przy 
tym świat.

W chwili obecnej najpopularniejsza 

jest szósta odsłona IE. Siódemka została 
prześcignięta przez Firefoksa, wróćmy zatem 
do szóstki. Jej rzeczywisty rozwój zakończył 
się w roku 2001. Mimo to już ponad siedem 
lat od tego faktu pozostaje najpopularniejszą 
przeglądarką na kuli ziemskiej, uważaną przy 
tym za jedną z najnowocześniejszych. Od roku 
2001, poza poprawkami bezpieczeństwa, nic się 
technologicznie w tej przeglądarce nie zmieniło. 
Większy lifting przeszła wraz z wydaniem Service 
Packa 2 do Windows XP, który podmienił wiele 
bibliotek, jednakże odpowiadających głównie za 
bezpieczeństwo.

Nie zmienia to faktu, że według różnych 

szacunków około 30% dziur w Internet Explorerze 
nie jest w ogóle łatanych, przy czym większość 
to błędy krytyczne, znane bardzo często od lat. 
Ze względu na błędy, do których Microsoft często 
się nie przyznaje, użytkownicy IE 6 skazani są 
na dostawanie się do komputera złośliwego 

Stopień trudności

Niebezpieczne 

przeglądarki 

internetowe

Przeglądarka internetowa jest jednym z najczęściej używanych 

programów. Z tej racji bywa również jednym z najczęściej 

atakowanych. Wiele osób nie zdaje sobie chyba do końca sprawy, 

jak ważne jest dbanie o jej bezpieczeństwo. Tym bardziej, że 

przeglądarki zawitały również do urządzeń mobilnych. 

7–8/2008

background image

21

 

HAKIN9 

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

7–8/2008

oprogramowania, oszukiwanie przez 
strony o fałszywych adresach (najczęściej 
wykorzystuje się to przy wykradaniu 
danych bankowych, a w konsekwencji 
– samych pieniędzy).

Mitem jest, że Internet Explorer 

jest bezpieczny, ponieważ producent 
systematycznie go łata. Napisałem 
już, że wiele dziur nie zostało nigdy 
załatanych, zaś pokaźna część łat i 
poprawek pojawia się ze znacznym 
opóźnieniem. Bezpieczeństwo 
przeglądarki polepsza się, jeżeli 
używasz systemu z Service Packiem 2. 
Teoretycznie większość użytkowników 
aktualizuje system na bieżąco, jednakże 
na rynku można znaleźć również 
posiadaczy starszych, dawno już nie 
wspieranych systemów operacyjnych 
(np. instytucje publiczne, które często 
nie stać na kupno nowszego sprzętu 
i oprogramowania). Ich sytuacja jest 
niestety często beznadziejna.

Zdarza się, że wielu użytkowników 

zawierza ślepo zaporze internetowej 
(firewall) i antywirusowi. Ich 
bezpieczeństwo jest mniej niż pozorne. 
Zacznijmy od tego, że jeżeli pozwolimy 
IE na połączenie z Internetem – to 
tak, jakbyśmy robili dziurę w zaporze. 
Obrazowo można to ująć mniej więcej 
tak: kupujemy najlepsze z możliwych 
drzwi antywłamaniowych, klucze 
dajemy zaś całkowicie obcej osobie. W 
rzeczywistości istnieją bowiem robaki 
internetowe, które potrafią ominąć 
zaporę i jeszcze zmusić nas do otwarcia 
wybranego przez nas portu sieciowego. 
Takie coś instaluje się na sprzęcie 
po otwarciu jakiejś niebezpiecznej, 
najczęściej spreparowanej strony, 
następnie dopisuje się do kodu IE 
jako jego część. Przy którymś tam 
uruchomieniu pojawia się komunikat, że 
przeglądarka prosi o dostęp do sieci 
(czytaj: otwarcie odpowiedniego portu). 
Statystyczny użytkownik komputera klika 
na tak bez zmrużenia oka – w końcu, jak 
korzystać z sieci bez dania dostępu do 
niej przeglądarce internetowej?

W wielu przypadkach również 

oprogramowanie antywirusowe nie 
chroni nas w pełni. Część z błędów 
IE 6 jest na tyle skomplikowana, że 
po prostu nie jest to możliwe. Gdyby 
jeszcze Microsoft nie strzegł pilnie 

swojego tajemniczego kodu, być może 
udałoby się dokładnie zdiagnozować i 
wyeliminować zagrożenia na poziomie 
przeglądarki. Nawet najlepszy antywirus 
może sobie nie poradzić z sytuacją, w 
której użytkownik zostanie zainfekowany 
na poziomie przeglądania obrazka na 
stronie internetowej. Już wtedy może 
dostać się do nas niebezpieczny 
kod. Swoją drogą, podobne luki 
występują również w pozostałych 
– w tym najnowszych – produktach 
Microsoftu. Wykrywanie ciągle takich 
samych luk w kolejnych produktach 
podważa marketingową strategię, w 
której korporacja dba o aktualność 
oprogramowania i bezpieczeństwo 
swoich klientów.

Wspomniałem już, że po 

opublikowaniu poprawki Service Pack 
2 do Windows XP wiele problemów 
zostało wyeliminowanych. W dalszym 
ciągu jednak nowe luki pojawiały się jak 
grzyby po deszczu. Bywały miesiące, 
że kilka – a nawet kilkanaście – takich 
błędów ujrzało światło dzienne. Do 
niebezpiecznych błędów należy zaliczyć 
możliwość umieszczenia złośliwego kodu 
za pomocą mechanizmu przeciągnij 
i upuść
 (ang. drag and drop). Błąd 
wykorzystuje lukę przy umieszczaniu 
plików na dysku lokalnym. Niebezpieczny 
skrypt zostaje ściągnięty, a następnie 
uruchomiony przy współudziale systemu 
pomocy (to chyba ironia losu, że system 
pomocy, często interaktywnej, można 
wykorzystać przeciwko użytkownikowi). 
W ten sposób powstała możliwość 
ominięcia wszystkich zabezpieczeń, jakie 
wprowadził SP 2 – co więcej, występuje 
ona tylko wraz z tym uaktualnieniem (a 
nawet z wieloma nowymi poprawkami).

Liczba luk wykrywanych rocznie 

spadła wraz z pojawieniem się na 
rynku Internet Explorera 7. Microsoft 

zapowiedział wypuszczenie nowego 
cacka, zupełnie pozbawionego wad 
poprzedników. Jak to zwykle bywa, 
rzeczywistość okazała się zgoła 
odmienna – aczkolwiek nieco bardziej 
łaskawa dla posiadaczy nowego IE.

Zacznijmy od tego, że pierwsza 

dziura w IE 7 została wykryta już kilka 
godzin po premierze programu. Luka 
obejmowała błędne przekierowania 
niektórych adresów internetowych, co 
stanowiło całkiem poważne zagrożenie 
(choć w pięciostopniowej skali 
zagrożenia serwisu Secunia otrzymała 
notę 2). Nie jest to może więc tragiczna 
w skutkach dziura, może za wyjątkiem 
wpływu na wizerunek marketingowy 
Microsoftu. W międzyczasie pojawiły 
się jednak kolejne wątpliwości co do 
bezpieczeństwa tej przeglądarki, które 
po raz kolejny udowodniły, że produkty 
Microsoftu są najmniej bezpieczne ze 
wszystkich alternatyw.

IE jest jedyną przeglądarką, która 

wykorzystuje tzw. ActiveX. Moduł ten 
umożliwia automatyczne uruchamianie 
programów zamieszczonych na stronie 
internetowej. Opcja ta jest bardzo 
wygodna dla użytkownika. Pamiętam, 
że dawno temu, kiedy korzystałem na 
co dzień z IE, ta możliwość była bardzo 
atrakcyjna. Obecnie pożytek jest nawet 
jeszcze większy, szczególnie ze względów 
wizualnych. Niestety, zawsze jest coś 
za coś. ActiveX posiada stosunkowo 
szerokie uprawnienia w obrębie 
danego systemu komputerowego. 
Jeżeli niepożądana osoba znajdzie 
jakąkolwiek otwartą lukę (zaś w gruncie 
rzeczy takich jest wiele), to będzie mogła 
przejąć pełną kontrolę nad komputerem. 
Problem jest bardzo poważny, bowiem 
według wielu statystyk nawet do 90% 

Rysunek 1. 

Internet Explorer

Rysunek 2. 

Nie zawsze są potrzebne aż 

tak dramatyczne kroki 

background image

ATAK

22

 

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

23

 

HAKIN9 

7–8/2008

dziur w Explorerze związanych jest z 
kontrolkami ActiveX. Ich wyłączenie 
znacznie podnosi nasze bezpieczeństwo, 
przy czym korporacja (dbając o nie), 
pozostawia je domyślnie włączone.

ActiveX to nie jedyna potencjalnie 

niebezpieczna technologia. Bardzo dużo 
dziur pojawia się np. w VBScript. Sporo 
niezabezpieczonych obszarów ma również 
opracowana przez Microsoft wersja 
maszyny wirtualnej Java (MS Java VM). 
Wykorzystanie tych rozwiązań niesie za 
sobą sporo potencjalnych zagrożeń. 
Sytuacji z pewnością nie ratuje fakt, że 
– wbrew wielu opiniom i zaleceniom 
– Microsoft lansuje swoją przeglądarkę 
jako część systemu operacyjnego. Z jednej 
strony daleko idąca integracja sprawia, 
że program np. szybciej się uruchamia i 
często funkcjonuje sprawniej (szybkość 
wewnętrzna jest już dyskusyjna), ale za 
wzrost potencjalnej wygody płacimy 
zwiększonym zagrożeniem.

siódemce pojawiło się teoretycznie 

wiele aktywnych mechanizmów obronnych 
– przede wszystkim filtry antyphishingowe
blokowanie wyskakujących okienek 
(które mogą być często stronami 
spreparowanymi) itp. Poprawiają one nieco 
bezpieczeństwo pracy. Niestety, Microsoft 
ma na tym polu co najmniej dwa lata 
zaległości w stosunku do konkurencji, co 
skutkuje często bezradnością nowych 

rozwiązań. Można nawet odnieść 
wrażenie, że zostały stworzone trochę 
na odczepnego, a na pewno z dużym 
pośpiechem.

Powolnymi krokami zbliża się 

zaplanowana na koniec roku premiera 
Internet Explorera 8. Z wielu zapowiadanych 
nowości warto zwrócić uwagę na 
zapowiadane zwiększenie bezpieczeństwa 
przeglądarki. Służyć ma temu przede 
wszystkim ulepszony filtr antyphishingowy
Ponadto ochrona przed sfałszowanymi 
stronami WWW ma się posunąć o wiele 
dalej – począwszy od zastosowania 
różnych kolorów w adresach i nazwach 
witryn, skończywszy na blokowaniu 
wszystkiego, co znajduje się na czarnej 
liście. Co jakiś czas Microsoft ujawnia jakiś 
tam smaczek związany z bezpieczeństwem 
i ogólną funkcjonalnością (patrz test 
ACID2), dlatego na samych zmianach nie 
ma się co skupiać – poza tym korporacja 
na każdym kroku szafuje szumnymi 
obietnicami, poza którymi często nic nie 
pozostaje.

Mozilla Firefox

Firefox jest obecnie największym 
konkurentem Internet Explorera. 
Chociażby z tej racji często porównuje 
się jego zabezpieczenia z tym, co oferuje 
Microsoft. W powszechnym mniemaniu 
jest to przeglądarka bezpieczna. Nie 

oznacza to jednak, że całkowicie jest 
pozbawiona dziur i wad. Takie pojawiają 
się w każdej omówionej w niniejszym 
artykule.

Dlaczego można domniemywać, że 

Firefox jest mimo to bezpieczniejszym 
programem od IE? Wśród wielu 
specjalistów, zwłaszcza z kręgu 
Windowsa, byłaby to uwaga co najmniej 
kontrowersyjna. Zacznijmy jednak 
od konstrukcji samego programu. 
Do konstruktywnego wniosku co do 
Firefoksa można dojść, zwracając 
uwagę tylko na jego rozmiar – zwłaszcza 
w porównaniu z IE. Jest taka stara 
zasada, która mówi, że im większy 
i bardziej skomplikowany program, 
tym wyższe prawdopodobieństwo, że 
będzie z nim coś nie w porządku. W 
drugą stronę działa to w ten sposób, że 
stosunkowo niewielki program łatwiej 
analizować, poprawiać i unowocześniać. 
Ponadto całkowicie otwarty kod sprzyja 
szybkiemu wyszukiwaniu i likwidowaniu 
błędów. Swoją drogą, otwartość 
Firefoksa sprawia, że praktycznie nie 
jest możliwe zatajenie informacji o 
jakimkolwiek błędzie – tak samo jak dość 
mało prawdopodobna jest sytuacja, w 
której wykryte dziury nie zostaną załatane 
(jednak trzeba powiedzieć, że ona 
niekiedy miejsce – statystyki pokazują, 
że Firefox z serii 2.x ma procentowo dwa 
razy mniej niezałatanych dziur, niż IE, 
zaś w starszej wersji (1.5) jest to ponad 
trzykrotnie mniej). Biorąc pod uwagę fakt, 
że kod jest otwarty, także twórcy muszą 
szczególnie zadbać o jego jakość, 
bowiem świadczy ona o nich samych.

 Ogólnie rzecz ujmując, wszelkie łaty 

bezpieczeństwa wydawane są o wiele 
szybciej, niż w przypadku IE. Zdarzają 
się oczywiście niezależne raporty, które 
przeczą temu stwierdzeniu, jednakże 
moja osobista praktyka i wiele innych 
doświadczeń są raczej jednoznaczne.

Bezpieczeństwo Firefoksa z pewnością 

wywodzi się również z faktu, że nie stanowi 
on części systemu operacyjnego. Nawet 
jeżeli pojawia się jakaś poważna luka 
bezpieczeństwa, to prawdopodobieństwo, 
że coś się stanie z naszym systemem 
operacyjnym, jest o wiele mniejsze. Przede 
wszystkim przejęcie kontroli nad OS jest 
znacznie bardziej utrudnione (co nie 
oznacza, że niemożliwe).

Rysunek 3. 

Firefox od pewnego czasu wgryza się wręcz w rynek przeglądarek 

internetowych

background image

ATAK

22

 

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

23

 

HAKIN9 

7–8/2008

Istnieją jednak mechanizmy, 

które sprawiają, iż na tle konkurentów 
(rozumianych jako Safari lub Opera) 
Firefox jest nieco mniej bezpieczny. 
Chodzi tutaj o konstrukcję programu, 
od samego początku nastawioną na 
instalowanie i korzystanie z rozszerzeń, 
które w istotny sposób mogą 
modyfikować pracę przeglądarki. Firefox 
został bowiem tak zaprojektowany, że 
potencjalny atak może objąć najpierw 
same rozszerzenia, a dopiero w dalszej 
kolejności właściwą przeglądarkę. Stąd 
pierwsze ostrzeżenie – nie korzystać z 
nieznanych rozszerzeń – zwłaszcza tych, 
które nie są choćby opisane gdzieś na 
stronach Mozilli (najlepiej ściągać je 
bezpośrednio z nich).

Pod koniec 2007 r. została znaleziona 

luka, która daje potencjalne możliwości 
przeprowadzenia naprawdę groźnego 
ataku. Przede wszystkim wykonalne jest 
przeprowadzenie dowolnego ataku typu 
Cross Site Scripting (XSS), który polega 
na umieszczeniu niebezpiecznego kodu w 
treści strony WWW. W jego wyniku nieznany 
gość może podnieść swoje uprawnienia 
poprzez kliknięcie na hiperłącze. Problem 
wynika z tego, że Firefox (w odróżnieniu od 
Opery, czy nawet Safari) traktuje dane z 
URL (odnośników) jak JavaScript – przez 
to ich uprawnienia są nieco większe. 
W najgorszym scenariuszu możemy 
stracić kontrolę nad przeglądarką. Mimo 
potencjalnych konsekwencji akurat tę 
dziurę uznano za średnio krytyczną i 
niepriorytetową. Mimo to została załatana 
zdecydowanie szybciej niż najbardziej 
krytyczne dziury IE.

W przypadku każdego produktu 

zdarza się, że jedna łata może 
zlikwidować kilka dziur, tworząc za to 
kolejne. Tuż przed napisaniem tekstu 
Mozilla załatała około dziesięciu luk 
krytycznych w programie, przy czym 
ujawniła się kolejna niebezpieczna 
dziura. W jej wyniku niepożądany 
użytkownik może – za pomocą kodu 
JavaScript zamieszczonego na 
stronie WWW, podejrzeć zawartość 
każdego pliku w katalogu domowym 
przeglądarki. Intruz może w ten sposób 
odnaleźć nawet plik z naszymi hasłami 
internetowymi, co może nieść za sobą 
naprawdę poważne konsekwencje. 
Luka ujawnia się przy korzystaniu z 

popularnych schematów view-source 
oraz resource

W przypadku Firefoksa musimy również 

uważać przy akceptacji certyfikatów 
SSL. Zdarzało się bowiem w przeszłości, 
że Firefox nieprawidłowo przetwarzał 
certyfikaty, które były odpowiedzialne za 
alternatywne nazwy. Może się bowiem 
zdarzyć, że zamiast informacji o tym, 
iż certyfikat jest fałszywy, uzyskamy 
informację o nieznanym nadawcy, 
bądź wręcz akceptację. Generalnie ta 
luka występuje w wielu popularnych 
przeglądarkach.

Z powyższych informacji wynika, ze 

Firefox jest również programem, który 
posiada luki w zabezpieczeniach – w tym 
często poważne. Niemniej ostateczna ich 
liczba – jak również okres likwidacji – są 
naprawdę do przyjęcia, a przynajmniej 
pozwalają określić ją jako bezpieczną 
przeglądarkę, o którą dbają zarówno 
twórcy, jak również zainteresowani 
użytkownicy.

Opera

Opera cieszy się opinią 
najbezpieczniejszej i zarazem 
najszybszej przeglądarki na rynku 
(aczkolwiek w tej drugiej kategorii ma 
poważnego konkurenta w postaci Safari, 
zaś nadchodzący Firefox 3 będzie miał 

również coś niecoś do powiedzenia). 
Opera jest jedną z najstarszych 
przeglądarek internetowych o naprawdę 
długiej tradycji. W chwili obecnej jest 
produktem całkowicie darmowym 
(aczkolwiek nie została wydana jako 
Open Source). Wcześniej istniała również 
komercyjna wersja programu, zaś żeby 
korzystać z niego za darmo, konieczne 
było oglądanie wyświetlających się 
reklam. Już wtedy Opera zdobyła opinię 
szybkiej, wygodnej, a przede wszystkim 
bezpiecznej przeglądarki. Wzrost jej 
popularności związany jest niewątpliwie 
z rezygnacją z takiej polityki. Przejdźmy 
jednak do rzeczy.

Opera charakteryzuje się niezwykle 

szybkim czasem wydawania poprawek. 
Zamyka się on często w godzinach, 
co winno być wzorem dla pozostałych 
przeglądarek. Samych łat w porównaniu 
z nimi jest również o wiele mniej. Wydaje 
się, że nacisk położony na bezpieczeństwo 
wynika z faktu, że Opera to nie tylko 
przeglądarka, lecz również całkiem 
niezły klient pocztowy (a można dodać 
jeszcze parę interesujących funkcji za 
pomocą widgetów – np. klienta protokołu 
BitTorrent). Są to wprawdzie spekulacje, 
niemniej zwiększona funkcjonalność 
wymaga również bardziej kompleksowego 
podejścia do bezpieczeństwa

Rysunek 4. 

Jedna z odsłon Firefoksa, niekoniecznie najnowsza

background image

ATAK

24

 

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

25

 

HAKIN9 

7–8/2008

Opera charakteryzuje się również 

tym, że wszystkie znalezione dziury 
są w 100% załatane. Posługując się 
raportem CERT oraz danymi ze znanego 
serwisu Secunia, można wskazać, że 
w latach 2003-2008 wszystkie wykryte 
dziury zostały załatane. W IE jest to 
odpowiednio 35% (dane szacunkowe 
– zgadzają się z tym, o czym napisałem 
wcześniej), w Firefoksie – dwukrotnie 
więcej. Jak widać, Opera przebija je 
wszystkie.

Statystyki Opery są nieco gorsze, 

jeżeli weźmiemy pod uwagę rodzaj 
wykrywanych krytycznych dziur. 
Oczywiście procentowo, nie w liczbach 
bezwzględnych. Wśród krytycznych luk 
aż 58% zostało ocenione na 4 w skali 
pięciostopniowej (wysokie, ale jeszcze 
nie ekstremalne ryzyko). W IE wielkość 
ta kształtuje się w okolicach trzydziestu 
paru procent, jednakże akurat u tego 
konkurenta występuje kilkanaście 
procent tzw. ekstremalnych luk, których 
Opera po prostu nie posiada (Firefox 
zresztą także, w serii 1.x zdarzyło się 
ok. 2% takich luk). Statystyki te nieco 
pogorszyły się w porównaniu ze 
starszymi wersjami programu, jednak 
wynika to moim zdaniem z coraz 
większej jego popularności, a więc 
także coraz dokładniejszego badania 
przeglądarki. Zresztą z pewnością wielu 
Czytelników pamięta, że swego czasu 

przedstawiciele renomowanych serwisów 
i koncernów wypowiadali się, iż nie warto 
w ogóle tracić pieniędzy na dokładne 
analizy Opery, bowiem mało kto jej 
używa. Mówiąc kolokwialnie, żal im było 
pieniędzy i czasu. Na szczęście dla wielu 
użytkowników aplikacji, udało się stanąć 
w szranki z największymi i – powoli, bo 
powoli – ale Opera nadrabia dystans do 
Firefoksa i IE.

Wprawdzie wszystkie dziury są łatane 

stosunkowo szybko (zaś w porównaniu 
z pewnym jeszcze modnym produktem 
– wręcz błyskawicznie), to jednak warto 
wspomnieć, jakiego rodzaju luk możemy 
się w ogóle spodziewać (zwłaszcza, 
jeżeli ktoś z Czytelników używa starszej, 
jeszcze niezaktualizowanej wersji). Dla 
przykładu, najnowsza odsłona (w chwili 
wklepywania tych znaków była to Opera 
9.26) załatała kilka poważnych luk, które 
wykryto we wcześniejszych wydaniach. 
Jeszcze na przełomie marca i kwietnia 
2008 w Operze nie zostały wykryte 
żadne nowe dziury. W porównaniu z IE 
jest to wyczyn niebagatelny.

Pierwsza z załatanych dziur umożliwiała 

uruchomienie niebezpiecznego skryptu 
z poziomu operacji wyświetlania grafiki. 
Niebezpieczny kod mógł bowiem zostać 
umieszczony w pobieranym przez 
przeglądarkę opisie obrazka. Problem 
wynikał zaś z tego, że w takich przypadkach 
nie obowiązywały obostrzenia obowiązujące 

w normalnym trybie uruchamiania skryptów. 
Złośliwe oprogramowanie miało więc o 
wiele większe uprawnienia, niż podczas 
standardowej obsługi skryptów. Programiści 
Opery (i nie tylko zresztą) uznali tę dziurę 
za bardzo poważny problem. Taki kod 
może bowiem wywołać więcej niż sporo 
zamieszania. Jeżeli więc, drogi Czytelniku, 
zapomniałeś o zaktualizowaniu Opery, to 
uczyń to czym prędzej. 

Wprawdzie kolejne luki miały już o 

wiele niższy poziom krytyczności, jednakże 
również nie zostały zlekceważone. Jeden 
z błędów kończył się czasem tym, że 
użytkownik był zmuszony do uruchomienia 
pliku znajdującego się na jego własnym 
dysku twardym. Nie musiało to mieć 
zbyt daleko idących konsekwencji. 
Trzecia dziura umożliwiała natomiast 
przeprowadzenie tzw. ataku Cross Site 
Scripting
, o którym wspominałem już przy 
omawianiu Firefoksa.

Napisałem wcześniej, że twórcy 

Opery stawiają w dużej mierze na 
bezpieczeństwo. Takie stwierdzenie ma 
sens zwłaszcza w zestawieniu z innymi 
przeglądarkami, zwłaszcza Internet 
Explorerem. Jednym z przykładów dbania 
o bezpieczeństwo przeglądarki jest fakt, 
że sami twórcy gruntownie ją testują 
– właśnie po to, aby wyszukać wszelkie 
potencjalne podatności. O wykryciu 
takiej luki twórcy zazwyczaj informują 
użytkowników za pomocą mediów 
elektronicznych, zwłaszcza poważnych i 
popularnych serwisów zajmujących się 
bezpieczeństwem. Istnieje jednak prosta 
zasada, o której wspominałem już w 
przypadku Internet Explorera – informacja 
o luce jest upubliczniona wtedy, kiedy 
pojawi się na nią łatka. Dzieje się tak, 
ponieważ programiści wolą nie informować 
całkiem sporej rzeszy potencjalnych 
złośliwców, że oto została otwarta dla nich 
jakaś tylna furtka. Informacja po fakcie 
ma za zadanie uświadomić klientów/
użytkowników, że nastąpił określony błąd, 
który już wyeliminowano, i że jeżeli chcą 
się czuć bezpiecznie, winni zaktualizować 
program. Sposób działania programistów 
i decydentów spod znaku Opery powinien 
być wzorem dla wszystkich twórców 
oprogramowania – zwłaszcza Microsoftu, 
który mógłby zaoszczędzić miliony 
(jeżeli nie miliardy) dolarów na akcjach 
reklamujących jego oprogramowanie jako 

Rysunek 5. 

Czy takiemu apelowi można się oprzeć?

background image

ATAK

24

 

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

25

 

HAKIN9 

7–8/2008

bezpieczne, regularnie aktualizowane itd., 
gdyby jego produkty chociaż w części 
zbliżyły się do marketingowego obrazu.

Wróćmy jeszcze na chwilę do 

sprawdzania Opery przez jej twórców. 
Programiści wykorzystują w tym 
celu m.in. specjalny program do 
audytu kodu, który został stworzony, a 
następnie udostępniony w II połowie 
zeszłego roku przez Fundację Mozilli na 
konferencji poświęconej bezpieczeństwu. 
Oczywistym jest więc fakt, że również i 
twórcy Firefoksa wykorzystują jsfunfuzz 
(tak nazywa się ten program) do 
testowania swojej przeglądarki.

W starszych wersjach Opery pojawiały 

się również luki, które umożliwiały zwabienie 
nieostrożnego (albo nieświadomego 
zagrożeń) użytkownika na strony z 
niebezpiecznym kodem JavaScript
który mógł poczynić wiele szkód na 
komputerze ofiary. Ponadto trafiały 
się również drobne błędy, które mogły 
skutkować zawieszaniem się programu 
w pewnych okolicznościach. Zapewne 
niejeden użytkownik pamięta, że nie dalej 
niż dwa, może trzy lata temu Opera była 
uważana za stosunkowo niestabilną, często 
zawieszającą się przeglądarkę, zwłaszcza 
w porównaniu z Firefoksem. Był to wynik 
wielu – niewielkich, jak już wspomniałem 
– błędów i luk, które z wersji na wersję 
były likwidowane. Wydaje się, że tego typu 
niedogodności nie ma już wcale. Używam 
Opery nieprzerwanie od kilku miesięcy i 
nie widzę już żadnego śladu po dawnej 
niestabilności.

Reasumując, Opera jest bardzo 

bezpieczną przeglądarką – nie tylko 
dlatego, że jest stworzona niezwykle 
starannie, przez co pojawia się mało luk. 
Nie ma idealnego oprogramowania i 
wcześniej czy później w każdym programie 
zostanie znaleziona jakaś dziura. O 
jej bezpieczeństwie decyduje przede 
wszystkim podejście twórców, którzy 
nie cackają się ze swoim dzieckiem i 
sami bezlitośnie je testują, usuwając 
w niemalże błyskawicznym tempie 
wszelkie luki. O wyższym (zwłaszcza w 
porównaniu z Firefoksem) bezpieczeństwie 
decyduje również fakt, że Opera jest od 
razu wyposażona w wiele dodatków i 
narzędzi, dzięki czemu użytkownik nie 
ma potrzeby instalowania nieznanych i 
być może niebezpiecznych rozszerzeń 

(korzystający z Firefoksa uważają z kolei, 
że ich przeglądarka dzięki rozszerzeniom 
może być dowolnie skonfigurowana i 
dostosowana do indywidualnych potrzeb. 
Mają niewątpliwie rację, jednakże związane 
jest to z pewną ceną, o której parę razy 
już wspominałem). Dodatkowo wszelkie 
wzbogacenia funkcjonalności (np. widgety
instalowane są tylko z oficjalnej strony. 
Poza tym – podobnie jak Firefox – Opera 
nie jest częścią systemu operacyjnego, 
co czyni ją z definicji programem 
bezpieczniejszym. Jej rozmiar (o czym 
wspominałem przy Firefoksie) jest również 
mniejszy od Internet Explorera, co także ma 
wpływ na bezpieczeństwo. Ogólnie rzecz 
ujmując, jest to naprawdę warta polecenia 
przeglądarka – zwłaszcza dla osób, 
które niekoniecznie są zainteresowane 
zbytnim personalizowaniem jej dla 
własnych potrzeb. Operą winni się 
również zainteresować posiadacze 
urządzeń przenośnych, bowiem tzw. 
Opera Mini jest powszechnie uważana 
za najlepszą przeglądarkę internetową 
dla tej klasy urządzeń. Korzystałem z niej 
niewiele, jednakże to, co zauważyłem 
(a także wyczytałem/usłyszałem z wielu 
poważnych źródeł), pozwala mi sądzić, że 
wersja mobilna posiada większość cech 
swojego starszego i większego brata. 
Można ją również ściągnąć i dowolnie 
(czytaj: darmowo) użytkować na każdym 

mobilnym systemie operacyjnym (tak, 
jak na desktopie). Zapewne i w tej wersji 
występują jakieś luki, ale póki co jeszcze 
nikt ich nie wykrył.

Safari

Z wielu przyczyn Safari jest przeglądarką, 
której powinienem poświęcić nieco więcej 
miejsca. Początkowo z jej dobrodziejstw 
(przez blisko cztery lata) mogli korzystać 
tylko użytkownicy systemu operacyjnego 
MAC OS X. W tym czasie w wielu 
środowiskach funkcjonalność, a zwłaszcza 
szybkość Safari obrosły wręcz w legendy. 
Sam producent, czyli Apple, budował 
markę przeglądarki właśnie w oparciu 
o prędkość jej działania. Kiedy zapadła 
decyzja o udostępnieniu programu 
użytkownikom Windows, naczelne hasło 
reklamowe brzmiało, że jest to najszybsza 
przeglądarka na świecie. Kampania Apple 
była niezwykle dynamiczna, nawet wręcz 
agresywna. Programem warto zająć się 
chociażby dlatego, że stosunkowo szybko 
zdobył on dużą popularność, doganiając, 
a w wielu regionach świata prześcigając 
Operę – co jest wydarzeniem wartym 
odnotowania. Podejrzewam, że zanim ten 
tekst się ukaże, statystyki mogą się jeszcze 
zauważalnie zmienić.

Safari jest również warta 

zainteresowania z racji zaimplementowania 
jej w przenośnych urządzeniach spod 

Rysunek 6. 

Opera

background image

ATAK

26

 

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

27

 

HAKIN9 

7–8/2008

znaku Apple. W chwili obecnej są to 
telefony iPhone, odtwarzacz MP3 iPod 
Touch oraz zapewne każde następne 
urządzenie mobilne Apple, które będzie 
miało opcję połączenia z Internetem. 
Implementacja oprogramowania w 
systemie operacyjnym oznacza de 
facto
, że wielu użytkowników z wygody 
skorzysta z tego programu, podobnie jak 
z Internet Explorera w Windows. Mówiąc 
bez ogródek, Apple niejako przymusza 
użytkownika do korzystania z Safari na 
swoich urządzeniach. Naturalnie, zawsze 
można spróbować zainstalować Operę, 
co nie dla każdego może być wykonalne 
(w chwili pisania artykułu nie było 
przygotowanej wersji pod iPhone i inne 
urządzenia Apple, poza tym – biorąc pod 
uwagę firmową blokadę systemu plików 
– jest to co najmniej trudne). Fakt ten 
nie powinien być wprawdzie przeszkodą 
w uruchomieniu groźnego konkurenta, 
został on bowiem napisany w Javie – a 
więc uruchomi się na każdej platformie 
ją wspierającej. Z tym, że jeżeli nie ma 
wersji np. pod iPhone, to funkcjonalność 
Opery może nie dorównać Safari, która 
wykorzystuje prawie wszystkie możliwości 
telefonu, umożliwiając użytkownikowi 
używanie różnych zaawansowanych 
opcji, jak np. gesty. Za takie praktyki 
Apple zostało skrytykowane m.in. przez 
Mozilla Foundation. Tuż przed oddaniem 
artykułu do druku pojawiły się jeszcze 

inne informacje związane z nieproszoną 
autoinstalacją Safari. Tym razem dotyczyły 
one systemu operacyjnego Windows. To, 
w jaki sposób funkcjonuje (zważywszy na 
okres wydawniczy, czas mógł się zmienić 
na funkcjonował) Apple Software Updater, 
zostało przez wielu specjalistów określone 
jako zachowanie co najmniej nieetyczne, 
zaś z całą pewnością nie zorientowane na 
klienta. Przejdźmy do rzeczy. Wyobraźcie 
sobie sytuację, w której posiadając któryś 
z popularnych programów Apple (np. 
QuickTime bądź iTunes), dokonujecie 
jego aktualizacji, aby się dowiedzieć, że 
w komputerze przybyło Wam aplikacji. 
Po uaktualnieniu oprogramowania, bez 
zmiany domyślnych ustawień, w Waszym 
Windowsie pojawi się przeglądarka 
Safari w wersji 3.1 (bądź nowszej). W 
artykule wspomnę naturalnie o lukach i 
niebezpieczeństwach (bądź korzyściach) 
wynikających ze stosowania Safari w 
komputerach domowych. Z racji ekspansji 
producenta na rynek urządzeń mobilnych, 
ciekawy może być rzut oka (a nawet więcej) 
na ten właśnie obszar. Po obszernym 
wstępnie przejdźmy do meritum, czyli 
bezpieczeństwa.

O ile szybkość jest niewątpliwym 

atutem przeglądarki, to już w kwestii 
bezpieczeństwa zaczyna się pojawiać 
wiele przysłowiowych zgrzytów. Pierwsze 
luki bezpieczeństwa odkryto już w kilka 
godzin po wypuszczeniu wersji beta Safari 

3.0 dla Windows. Wprawdzie mowa jest 
o wersji testowej, jednakże tak szybkie 
odkrycie dziur nie przemawia na korzyść 
programu – przynajmniej w świetle 
dalszych informacji (oraz zapowiedzi, że 
przeglądarka miała być bezpieczna już od 
pierwszego dnia użytkowania). Informacje 
o lukach przekazali eksperci z aż trzech 
niezależnych źródeł (Aviv Raff, David 
Maynor, Tor Larholm
).

Jedna z pierwszych luk 

bezpieczeństwa dotyczyła zarządzania 
pamięcią. Coś, co przydarzało się 
również konkurencji (Microsoft boryka 
się z podobną dziurą w zasadzie 
w każdym nowym produkcie). Luka 
umożliwiała wprowadzenie złośliwego 
kodu do systemu, naturalnie bez wiedzy 
użytkownika, a co najwyżej za jego 
pośrednictwem (kliknięcie na określony 
link). Po raz kolejny przestrzegam 
więc, żebyście nie klikali bezmyślnie 
linków pochodzących z nieznanych 
maili, zwłaszcza o wielce podejrzanej 
treści. Drugi specjalista znalazł aż 
sześć błędów. W czterech przypadkach 
możliwe było przeprowadzenie ataków 
DoS, dwa były związane z możliwością 
uruchomienia niepożądanego zdalnego 
kodu. Z kolei Larnholm odnalazł tzw. 
lukę zero day. Doprowadzała ona do 
błędnego przetwarzania kodu przez 
programy zainstalowane na komputerach 
z Windows. W efekcie dochodziło 
do zawieszania komputera. Żaden z 
ekspertów nie przedstawił informacji 

W Sieci

•   http://www.secunia.com,
•   http://www.dobreprogramy.pl,
•   http://www.idg.pl,
•   http://www.centrumxp.pl,
•   http://www.securitywortal.pl,
•   http://www.microsoft.com/poland/

technet/security/default.mspx,

•   http://www.webinside.pl,
•   http://www.osnews.pl,
•   http://www.webmade.pl,
•   http://www.nextmag.pl,
•   http://www.xp.net.pl,
•   http://www.saferinternet.pl,
•   http://www.di.com.pl,
•   http://www.apple.com,
•   http://www.opera.com,
•   http://www.apple.com,
•   http://www.mozilla.org.

Rysunek 7. 

Strona domowa Opery, czyżby z błędami?

background image

ATAK

26

 

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

27

 

HAKIN9 

7–8/2008

związanej z funkcjonowaniem luk w 
systemie Mac OS X.

Sytuacja z kolejnymi (i to już stabilnymi 

wersjami) programu niekoniecznie 
jest najlepsza. Niecały tydzień po 
opublikowaniu wersji 3.1 odkryto dwie 
pierwsze luki w tej wersji Safari. Zdaniem 
ekspertów mogły one w najgorszym 
wypadku doprowadzić do przejęcia kontroli 
nad komputerem przez niepożądanego 
gościa. Zainteresowanych o tym fakcie 
poinformował Argentyńczyk Yuan Pablo 
Lopez Yacubian. Pierwsza luka związana 
była z niebezpieczeństwem uruchomienia 
niepożądanego kodu. Niektóre groźne 
strony wyświetlane były przez przeglądarkę 
jako znane i zaufane, przez co poziom 
bezpieczeństwa systemu zdecydowanie 
obniżał się. Drugi błąd wynikał z 
przepełnienia pamięci, które następowało 
wskutek ściągania plików o bardzo długich 
nazwach. W tym przypadku również 
zaistniała możliwość przejęcia kontroli nad 
komputerem użytkownika. Symptomatyczne 
jest to, że Apple przez ponad tydzień nawet 
nie skomentował zaistniałej sytuacji.

Należy nadmienić, że w chwili pisania 

tekstu od wydania nowej wersji Safari 
(czyli 3.1) minęło kilkanaście dni, w związku 
z czym znane były dopiero pierwsze 
informacje o błędach. Teraz zgodnie 
z obietnicą zajmę się również Safari 
dedykowanym dla urządzeń przenośnych 
(w zasadzie mam na myśli iPhone).

Safari w iPhone

iPhone zdobywa coraz większą 
popularność zarówno na świecie, jak i w 

Polsce. Zdecydowana, a przede wszystkim 
skuteczna kampania reklamowa przyciąga 
tysiące nowych klientów. W korelacji z 
rosnącą popularnością telefonu wzrasta 
również liczba aplikacji do niego. W chwili 
pisania tekstu oceniano ją na ponad 600 i 
dotyczyło to tylko oficjalnych danych Apple! 
Tym bardziej nie powinien nikogo dziwić 
fakt, że bezpieczeństwo telefonu odgrywa 
coraz to większą rolę. Okazuje się, że Safari 
na iPhone posiada również kilka luk, co 
zdecydowanie negatywnie wpływa na jej 
ocenę. Ciekawa jest zwłaszcza ostatnio 
wykryta luka, zwłaszcza w kontekście 
sposobu, w jaki tego dokonano.

Pewna grupa osób, niezadowolonych 

z polityki Apple, postanowiła dokonać na 
własną rękę zmian w telefonie. Zamierzali 
znaleźć sposób na odblokowanie systemu 
plików urządzenia, aby móc instalować 
oprogramowanie i dzwonki ze stron innych, 
niż rekomendowane przez Apple. Próbowali 
tego dokonać przy pomocy najnowszego 
firmware (wersja 1.1.3). W trakcie licznych 
prób odkryto, że najnowszy firmware 
umożliwia odblokowanie urządzenia po 
odwiedzeniu specjalnie spreparowanej 
strony internetowej. Naturalnie odbywa się 
to przy pomocy przeglądarki Safari. W ten 
sposób odkryto lukę typu DoS.

W tym przypadku dziura w przeglądarce 

posłużyła do odblokowania telefonu. 
Jednakże już sam fakt jej znalezienia jest 
niepokojący, bowiem w razie wykorzystania 
jej w innych celach, musimy się liczyć 
z poważnymi konsekwencjami. Żeby to 
zobrazować, warto prześledzić, w jaki 
sposób telefon reaguje na atak typu 

DoS, przygotowany przez wspomnianą, 
specjalnie spreparowaną stronę. Po jej 
odwiedzeniu można kliknąć na przycisk 
pod ostrzeżeniem. Następnie uruchamia 
się złośliwy kod. W tym momencie 
iPhone przestaje kompletnie reagować 
na polecenia użytkownika. Możecie do 
woli klikać na ekranie, o przycisku home 
również można zapomnieć – nic nie 
będzie działać. Po krótkim czasie (około 
minucie) telefon sam się zrestartuje. W 
międzyczasie kod zmodyfikuje odpowiednio 
nasz system plików. Tylko co w sytuacji, 
gdyby nieproszona osoba zrobiła coś o 
wiele bardziej złośliwego? Opisana strona 
WWW wyświetla przycisk z ostrzeżeniem. 
Natomiast wiele innych może tego 
nie robić – na tym polega największe 
niebezpieczeństwo.

Znaleziona luka opiera się w znacznej 

mierze na kodzie Java Script pochodzącym 
z projektu the Month of Browser Bugs. Cały 
projekt polegał na tym, że grupa ekspertów 
publikowała każdego dnia jedną lukę 
związaną z bezpieczeństwem przeglądarek 
internetowych. Moim zdaniem jest to dosyć 
bezpardonowy sposób zwrócenia uwagi 
na kwestie bezpieczeństwa, w każdym 
razie zastosowany kod nie powstał z próżni. 
Zapewne niejedna osoba zainteresuje się 
wiadomością, że jego pierwotna wersja 
atakowała przeglądarki desktopowe, 

Rysunek 8. 

Rzut oka na Safari

Rysunek 9. 

Safari a'la Mac

Rysunek 10. 

Safari w wersji Mobile

background image

ATAK

28

 

HAKIN9 7–8/2008

osiągając w zasadzie podobne rezultaty. 
Cóż, najnowsza odsłona atakuje telefony, 
doprowadzając do przepełnienia pamięci w 
efekcie uszkodzenia aparatu (w tym jednym, 
wyjątkowym przypadku nie ma to specjalnie 
tragicznych konsekwencji – jedynie zapełnia 
pamięć, uszkodzenie telefonu nie jest zaś 
stałe, lecz tylko na chwilę go blokuje).

Można się tylko cieszyć, że eksperci 

ze wspomnianego projektu nie mieli 
tyle czasu, a może nawet chęci, aby 
drążyć temat tej luki i stworzyć coś o 
wiele bardziej złośliwego. Z kolei miejmy 
nadzieję, że ten zapał mają pracownicy 
Apple, aby usunąć to zagrożenie. Zwykły 
użytkownik może po prostu wyłączyć 
korzystanie z JavaScriptu. Oznacza to 
oczywiście zmniejszenie funkcjonalności, 
ale za to wzrost bezpieczeństwa.

Wprawdzie omówiłem tylko jedną lukę, 

jednakże krótki rzut okiem na historię 
zabezpieczeń Safari Mobile zwraca 
uwagę, że problem bezpieczeństwa 
telefonów jest bardzo poważny. 
Dla przykładu zeszłego lata Apple 
łatało dziury aż w 16 komponentach 
oprogramowania iPhone, z czego kilka 
odnosiło się do Safari.

Wielu ekspertów porównuje sytuację 

Apple do Microsoftu, który, nie zwracając 
zbyt szczególnej uwagi na bezpieczeństwo, 
padł ofiarą własnej popularności. 
Wielu twierdzi, że obiektywnie produkty 
Microsoftu nie są mniej bezpieczne od 
Apple, jednakże ze względu na liczbę 
użytkowników są najczęstszą ofiarą ataku. 
Wprawdzie stwierdzenie to jest trafne, 
jednakże nie tworzy pełnego obrazu 
sytuacji. Słabość Microsoftu to nie tylko 
kwestia popularności, lecz również wielu 
błędów tkwiących gdzieś w początkach, 
w pierwszych wersjach wielu programów. 
W przypadku Apple rysuje się spore 

prawdopodobieństwo, że sytuacja się 
powtórzy – jeżeli oczywiście zostaną 
powielone pewne błędy. Niestety, odnoszę 
wrażenie, że np. Safari dla Windows 
zostało wydane trochę na siłę – być 
może przedwcześnie – stąd liczba dziur. 
Dlaczego Apple pośpieszył się z wydaniem 
przeglądarki? Myślę, że w związku z coraz 
większą popularnością przeglądarek 
konkurencyjnych w stosunku do IE. Z 
pewnością stratedzy Apple obawiali się, 
że jeżeli teraz nie ugryzą kawałka tortu 
zwanego rynkiem przeglądarek, to później 
mogą mieć z tym duży problem. Nie 
sposób odmówić im racji, pytanie tylko, 
czy nie była to strategia krótkoterminowa. 
Podobnie rzecz ma się z iPhonem.

Kwestia zabezpieczeń urządzeń 

mobilnych odgrywa tym większe 
znaczenie, im bardziej uniwersalna staje 
się ich funkcja. Nawet w Polsce daje 
się zauważyć trend, zgodnie z którym 
telefon nie służy już tylko do dzwonienia. 
W coraz większym stopniu przejmuje rolę 
komputera, odpowiadając za zarządzanie 
naszym czasem, przekazywanie i 
edytowanie informacji, jak również 
komunikację poprzez sieć Internet. 
Zresztą – co tu dużo mówić: współczesne 
urządzenia mobilne przerastają swoją 
mocą komputery, które jeszcze do 
niedawna stały w polskich domach.

Podsumowanie

W przedstawionym artykule starałem się 
Was uwrażliwić na kwestię zabezpieczeń 
przeglądarek internetowych, a także 
bezpieczeństwa jako takiego. Temat 
jest z pewnością skomplikowany 
i wymaga kompleksowego, albo 
raczej odpowiedzialnego, podejścia. 
Odpowiedzialność polega na tym, 
że jeżeli nawet będziemy posiadać 
najbezpieczniejszą przeglądarkę 

świata, nie powinniśmy bynajmniej 
lekceważyć sobie podstawowych 
zasad bezpieczeństwa. Jedną z nich 
jest nie otwieranie załączników z 
wszechobecnego spamu. Nie chodzi o to, 
aby otwierać tylko i wyłącznie wiadomości 
np. od znanych sobie nadawców. 
Widziałem raz na oczy taką praktykę w 
pewnym urzędzie – nie dziwię się teraz, 
że w wielu instytucjach nie odpowiada się 
na wiadomości od klientów czy petentów. 
Można jednak sobie wyobrazić sytuację, 
że ktoś, kto wysyła do nas wiadomość, 
wysili się i chociaż ją solidnie opisze. 
Nawet reklama jest tworzona z jakąś 
myślą przewodnią. Jednym słowem 
– zachowajmy zdrowy rozsądek.

W artykule znalazły się elementy 

porównania pomiędzy poszczególnymi 
przeglądarkami. Nie zamierzam jednak 
mówić nikomu, która jest najlepsza. Z całą 
mocą mogę co najwyżej stwierdzić, że 
rozczarowują dwie przeglądarki – Internet 
Explorer oraz Safari. Przynajmniej od 
strony bezpieczeństwa. Nie znaczy to, że 
trzeba trzymać się od nich całkowicie 
z daleka. W przypadku takiego Safari 
funkcjonalność może przeważyć nad 
argumentami bezpieczeństwa, poza 
tym przy przestrzeganiu wspomnianych 
zaleceń bezpieczeństwa będziemy 
względnie chronieni.

Generalnie nie ma na rynku 

przeglądarki w 100% bezpiecznej. 
Wszystkie są tylko mniej lub bardziej 
zagrożone. Przy wyborze przeglądarki 
winniśmy brać jednak pod uwagę takie 
elementy, jak ogólna liczba pojawiających 
się luk, częstotliwość ich łatania i to, czy 
wszystkie są likwidowane. Wskazałem 
przypadki, w których tak nie jest. Ponadto 
integracja z systemem z punktu widzenia 
bezpieczeństwa nie jest najlepszym 
rozwiązaniem. Jeżeli weźmiemy pod 
uwagę powyższe argumenty, zestawimy 
je z funkcjonalnością, to wyjdzie nam 
przeglądarka odpowiednia dla nas. 
Na sam koniec wspomnę jeszcze 
jedno – przeglądarka bezpieczna, to 
przeglądarka załatana.

Przemysław Żarnecki

Autor jest dziennikarzem, przedsiębiorcą, doktorantem. 

Bezpieczeństwo stanowi dla niego jeden z 

podstawowych priorytetów. Nie wyobraża sobie używania 

programu, co do którego nie ma zaufania.

Kontakt z autorem: p.zarnecki@plusnet.pl

Rysunek 11. 

Słynne ostrzeżenie ze 

spreparowanej witryny

Rysunek 12. 

Ustawienia Safari Mobile, 

które wpłyną na nasze bezpieczeństwo

background image
background image

30

 

HAKIN9

ATAK

7-8/2008

G

adu–gadu jest komunikatorem 
internetowym, który zrzesza już prawie 
6 milionów użytkowników. Swoją 

popularność zawdzięcza prostocie działania, 
intuicyjnej obsłudze i przede wszystkim 
pochodzeniu – jest to produkt made in Poland
Żółte słoneczko jest znakiem rozpoznawalnym 
chyba przez każdego polskiego internautę. 
Nie jest to jednak aplikacja wolna od błędów 
– są one normalnym zjawiskiem, ściśle 
powiązanym z tworzeniem oprogramowania 
komputerowego. Błąd odkryty w Gadu–Gadu 
7.7 pozwala na na wykonanie dowolnego kodu 
na komputerze osoby, która korzysta z tego 
programu. Tkwi on w obsłudze emotikonów 
– plik 

emots.txt

, zawierający emotikony, 

podczas wczytywania łańcuchów znakowych 
nie sprawdza ich długości. Możliwe jest zatem 
wykonanie przepełnienia bufora (aczkolwiek nie 
w klasyczny sposób). Opisywana podatność 
dotyczy Gadu–Gadu w wersji 7.7 build 3669. Jak 
to zrobić, jak wykorzystać tę podatność – o tym 
traktuje niniejszy artykuł.

Początki Gadu – Gadu

Najpopularniejszy polski komunikator 
internetowy, Gadu–Gadu, liczy sobie już ładne 
parę lat – a dokładniej osiem. Za narodziny 
Gadu–Gadu uważa się datę 15 sierpnia 2000 
roku. Ceny połączeń internetowych w Polsce 
spadają, Internet staje się medium dostępnym 
niemal dla każdego. Ludzie zaczynają korzystać 

KONRAD ZUWAŁA

Z ARTYKUŁU 

DOWIESZ SIĘ

jak działa protokół Gadu–Gadu,

na czym polega obsługa 

wyjątków w C++,

jak napisać exploit dla aplikacji 

Gadu–Gadu.

CO POWINIENEŚ 

WIEDZIEĆ

czym jest Gadu–Gadu,

znać podstawy programowania 

w C/C++ i asemblerze,

na czym polega przepełnienie 

bufora.

z możliwości komunikacyjnych, jakie zapewnia 
im Sieć. Szybko jednak dostrzegają lukę – niszę, 
którą wykorzystał właśnie komunikator GG. Otóż 
brakuje im prostego, przejrzystego programu, 
który umożliwiałby rozmowy ze znajomymi. 
Program w dodatku powinien być bezpłatny. 
Gadu–Gadu idealnie wpasowuje się w lukę, 
komunikator lawinowo zyskuje popularność. Już 
pierwszego tygodnia, gdy ukazał się on w Sieci, 
pobrało go ponad dziesięć tysięcy osób – co 
jest świetnym wynikiem, zważywszy, że był on 
wtedy nikomu nie znanym, nowym programem. 
Gadu–Gadu musiał walczyć o popularność, 
a konkurencję miał silną. Nie brak w końcu 
produktów zagranicznych, o ugruntowanej 
już pozycji, w dodatku również dostępnych 
bezpłatnie. Co jednak zadecydowało?

Gadu Gadu oferuje nam prosty, przejrzysty 

interfejs. Pisanie i wysyłanie wiadomości nie 
wymaga od użytkownika wiele wysiłku. Często 
nie jest nawet konieczne używanie myszki 
– wystarczy przysłowiowy Enter, aby wiadomość 
trafiła do adresata. Okienko rozmowy jest 
przejrzyste, a sam interfejs programu nie budzi 
większych zastrzeżeń. No i przede wszystkim 
program jest po polsku, co wtedy było nie lada 
rarytasem – nie zapominajmy, że w 2000 roku 
Internet w Polsce dopiero raczkował, niewiele 
aplikacji było dostępnych w rodzimym języku.

Rosnąca popularność komunikatora niesie 

ze sobą pewne problemy. Serwery często 
bywają przeciążone bądź wręcz niedostępne. 

Stopień trudności

Hakowanie 

Gadu – Gadu

Gadu–Gadu to z pewnością najpopularniejszy w Polsce 

komunikator internetowy. Niemal każdy kiedyś się z nim zetknął, 

najczęściej aby porozmawiać ze znajomymi. Jednak nawet tak 

popularna aplikacja nie ustrzeże się błędów – czy możemy czuć 

się bezpieczni z Gadu–Gadu?

background image

31

 

HAKIN9 

HAKOWANIE GADU – GADU

7-8/2008

Wiąże się to z trudnościami w połączeniu 
i opóźnieniami w dostarczaniu 
wiadomości. Problemy nasilają się wraz 
ze wzrostem ilości użytkowników, który na 
stronie producenta określony jest mianem 
lawinowego. Trudności te nie stanowią 
jednak dyskomfortu dla kolejnych rzesz 
użytkowników. Ćwierć miliona, pół miliona, 
milion – liczby zdają się nie mieć końca. 
Aż dochodzimy do dnia dzisiejszego i 
mamy niespełna (a może już ponad?) 
sześć milionów wiernych użytkowników.

Możliwości komunikatora

Dzisiejsze komunikatory internetowe 
oferują swoim użytkownikom znacznie 
więcej aniżeli tylko możliwość rozmowy 
tekstowej. Choć ta w Gadu–Gadu jest 
niezwykle prosta – okienko jest schludne 
i przejrzyste. Widać, do czego służy każdy 
przycisk, nie ma większych problemów 
z nawigacją wewnątrz programu. Można 
pisać szybko i wygodnie – słowem 
dokładnie tak, jak być powinno.

Rozmowa tekstowa to jednak nie 

wszystko, na co pozwala nam ten 
program. Jeśli ktoś nie lubi pisać, można 
porozmawiać bez użycia klawiatury. 
Rozmowy głosowe, bo o nich mowa, 
są stosunkowo świeżym dodatkiem. 
Dodatkowo możemy za pomocą połączeń 
bezpośrednich przesyłać pliki zupełnie 
tak, jak za pomocą programu P2P (ang. 
peer to peer). Pliki graficzne możemy 
wygodnie umieścić w okienku programu – 
pod warunkiem, iż mają one odpowiedni 
rozmiar, gdyż zbyt duża grafika nie może 
zostać przesłana z użyciem serwera 
(rozmowy na GG prowadzone są poprzez 
serwer, który pośredniczy w konwersacji).

Ostatnią z wyraźnie rzucających się 

w oczy funkcji jest możliwość słuchania 
radia za pomocą komunikatora 
– mamy do wyboru kilka kanałów, 
każdy o innym profilu muzycznym, 
co z pewnością zadowala wielu 
wybrednych melomanów. Do dyspozycji 
mamy jeszcze portal użytkowników i 
pomoc techniczną. Jednym słowem 
– pięknie. Czy komunikator ten nie 
ma wad? Ma – chodzi oczywiście o 
bezpieczeństwo. Nie jest to oczywiście 
domena tylko tej aplikacji, albowiem 
większość programów komputerowych, 
które są dostępne na rynku, zawiera 
jakieś błędy bezpieczeństwa. Są one 

ustawicznie likwidowane przez twórców 
oprogramowania, co powoduje, że rzadko 
kiedy istnieje możliwość exploitacji danej 
podatności. Jednak użytkownicy Gadu–
Gadu często zapominają o regularnej 
aktualizacji posiadanego komunikatora 
– przyczynia się do tego również brak 
funkcji automatycznej aktualizacji, 
która bez jakiejkolwiek ingerencji ze 
strony użytkownika dokonywałaby 
systematycznego uaktualnienia 
najważniejszych komponentów programu. 
A tak – musimy to zrobić sami, 
pobierając najnowsza wersję ze strony 
producenta.

Jest to tylko jedna z nielicznych wad 

komunikatora, bo nie jest on od nich 
niestety wolny. Przede wszystkim serwery 
są często przeciążone, co powoduje 
niekiedy niemożność podłączenia się 
do sieci. Dodatkowo, w najnowszych 
wersjach usunięto możliwość rozmowy 
tekstowej z użyciem połączeń 
bezpośrednich – sprawiając, iż cały ruch 
sieciowy transferowany jest poprzez 
dedykowane do tego serwery. Może to 
budzić obawy niektórych użytkowników co 
do poufności ich konwersacji. 

Kryptografia również nie należy do 

mocnych stron aplikacji. Ustawienie opcji 
pozwalającej na zapamiętanie hasła w 
programie, tak, aby logować się do sieci 
bez jego podawania, jest dość ryzykowne. 
Hasło jest bowiem przechowywane w 
praktycznie niezaszyfrowanej postaci w 
pliku na komputerze użytkownika. Gdy 
jakaś niepowołana osoba uzyska dostęp 
do zawartości naszego dysku twardego, 
ma możliwość odszyfrowania takiego 
hasła (w Sieci dostępnych jest wiele 
programów, które służą do tego celu). 

Sama rozmowa również nie jest 

szyfrowana. Brak szyfrowania SSL, które 
jest w dzisiejszych czasach standardem 
poufności przesyłanej informacji, jest 
poważną wadą. Umożliwia to bowiem 
przechwycenie naszej rozmowy każdej 
osobie, która umie obsługiwać program 
sniffujący. A przecież narzędzi takich 
nie brakuje – warto wspomnieć choćby 
tcpdumpa, który jest chyba sztandarowym 
narzędziem badającym ruch w sieci. 
Pojawiły się nawet specjalistyczne sniffery, 
których użycie nie wymaga większej 
wiedzy. Nasłuchują one tylko na portach 
obsługiwanych przez komunikator. 

Pozwala to niemal każdemu oglądać treść 
naszych rozmów. 

Błąd, który odkryto w Gadu–Gadu, 

pozwala na wykonanie dowolnego kodu 
na komputerze ofiary. Zanim jednak 
przejdziemy do jego omawiania, warto 
zapoznać się z samym protokołem 
używanym przez Gadu–Gadu – należy 
wiedzieć, z czym mamy do czynienia. 

Protokół Gadu – Gadu

Jak każda aplikacja działająca w 
Internecie, Gadu–Gadu potrzebuje 
jakiegoś protokołu, z pomocą którego 
może przesyłać dane przez sieć. Warto 
więc wiedzieć, jak wygląda ten protokół, 
aby mieć ogólne pojęcie o działaniu 
programu. Oczywiście nie będzie to 
bardzo szczegółowy opis, jeśli jednak 
Czytelnik jest takowym zainteresowany, 
adres odpowiedniej witryny internetowej 
znajduje się w Ramce W Sieci.

Gadu–Gadu korzysta z protokołu TCP/

IP. Jest to bowiem protokół gwarantujący 
poprawność przesyłanych danych. A 
przecież niezawodność i pewność, że 

Rysunek 1. 

Interfejs programu Gadu–

Gadu

background image

ATAK

32

 

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

33

 

HAKIN9 

7-8/2008

wiadomość dotrze do odbiorcy jest 
chyba najważniejszą cechą każdego 
komunikatora.

Każdy pakiet wysyłany przez 

komunikator zawiera dwa pola, które 
zawsze znajdują się w tym samym 
miejscu – na początku pakietu. Można 
je zatem nazywać nagłówkiem, słowo to 
doskonale bowiem oddaje charakter tych 
danych. Pola te prezentuje Listing 1.

Nazwy zmiennych są chyba intuicyjne, 

toteż nie jest potrzebne ich tłumaczenie 
– typ to po prostu rodzaj pakietu, jaki 
wysyłamy, natomiast dlugość to rozmiar 
w bajtach pozostałej części pakietu (czyli 
rozmiar pakietu bez rozmiaru nagłówka). 

Ale zanim połączymy się z siecią 

Gadu–Gadu i zaczniemy rozmawiać z 
którymś z naszych znajomych, musimy 
najpierw połączyć się z serwerem. 
Serwerów jest jednak kilka, toteż musimy 
w jakiś sposób otrzymać informacje, z 
którym z nich mamy się połączyć. W tym 
celu wysyłamy żądanie HTTP do strony 
odpowiedzialnej za przydzielenie nam 
serwera. Odpowiedni kod zaprezentowany 
jest na Listingu 2. 

Takiego połączenia możemy dokonać 

za pomocą zwykłego programu, takiego 
jak 

telnet

 czy 

netcat

. Wystarczy, że 

połączymy się na 80 porcie ze stroną 

appmsg.gadu–gadu.pl

 i prześlemy 

odpowiednie żądanie – takie, jak na 
Listingu 2. Wartości zapisane wielkimi 
literami oznaczają zmienne przesyłane 
do strony – są to kolejno: nasz numer 
GG, wersja komunikatora, 

FORMAT

 

określa sposób przesyłania wiadomości 
(czy ma być to czysty tekst, czy też 

użyty zostanie HTML), 

MESSAGE

 zaś to 

numer wiadomości systemowej, jaką 
otrzymaliśmy poprzednio od Gadu–Gadu, 
gdy nawiązywaliśmy próbę połączenia. 
Wreszcie 

BROWSER

 to wersja przeglądarki, 

np. 

Mozilla 4.0 (compatible; MSIE 

5.0, Windows NT)

Strona zwróci nam adres IP serwera, 

z którym mamy się połączyć, dodając 
do tego numer wiadomości systemowej 
(tej, którą podawaliśmy w żądaniu HTTP) 
oraz port, na którym mamy dokonać 
połączenia z serwerem (zwykle jest to 
port 8074). 

Teraz pora na zalogowanie się do 

sieci GG. W tym celu serwer najpierw 
wysyła do nas pakiet, liczbę całkowitą 

int

, która jest zwana ziarnem. Ziarno 

odpowiada za wygenerowanie skrótu 
CRC hasła. Przed ziarnem otrzymujemy 
jednak – na samym początku połączenia 

– pakiet powitalny. Ilustruje to Listing 3.

Aby zalogować się do sieci, potrzebny 

jest szereg informacji. Przede wszystkim 
są to nasz numer GG oraz hasło. 
Niezbędne będą również m.in. dane 
dotyczące wersji używanego klienta. 
I znów z pomocą przychodzi nam 
odpowiednia struktura, która skupia 
w sobie wszelkie dane wymagane do 
zalogowania naszego klienta w sieci. 
Prezentuje ją Listing 5.

Struktura Logowanie jest pakietem, 

który należy wysłać do odpowiedniego 
serwera – po to, by ten dopuścił 
naszego klienta do działania w sieci 
GG. Pierwsze pole, uin, to nic innego jak 
używany przez nas numer Gadu–Gadu. 
Dwa następne pola powiązane są z 
hasłem – pierwsze, 

hash _ typ

, to wybór 

algorytmu szyfrowania hasła. Dostępne 
są dwa algorytmy: CRC i SHA1. Algorytm 

Listing 1. 

Nagłówek Gadu–Gadu

struct

 

NaglowekGadu

 

{

 

int

 

typ

;

 

int

 

dlugosc

;

}

;

Listing 2. 

Żądanie HTTP wysyłane do serwera przydzielającego adresy IP serwerów GG

GET

 /

appsvc

/

appmsg4

.

asp

?

fmnumber

=

NUMBER

&

version

=

VERSION

&

fmt

=

FORMAT

&

lastmsg

=

MESSAGE

Accept

:

 

image

/

gif

image

/

jpeg

image

/

pjpeg

, ...

Accept

Language

:

 

pl

User

Agent

:

 

BROWSER

Pragma

:

 

no

cache

Host

:

 

appmsg

.

gadu

gadu

.

pl

Listing 3. 

Inicjacja połączenia z serwerem GG

#define PAKIET_POWITALNY 0x0001

struct

 

Powitalna

 

{

 

int

 

ziarno

;

}

;

Listing 4. 

Logowanie komunikatora do sieci

#define LOGUJ 0x0019

struct

 

Logowanie

{

        

int

 

uin

;

        

char

 

hash_typ

;

        

char

 

hash

[

64

];

        

int

 

status

;

        

int

 

wersja

;

        

char

 

nieznany1

;

        

int

 

lokalny_ip

;

        

short

 

lokalny_port

;

        

int

 

zewnetrzny_ip

;

        

short

 

port_zewnetrzny

;

        

char

 

rozmiar_obrazka

;

        

char

 

nieznany2

;

        

char

 

opis

[];

        

int

 

czas

;

}

;

Rysunek 2. 

Okno rozmowy programu 

Gadu–Gadu

background image

ATAK

32

 

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

33

 

HAKIN9 

7-8/2008

CRC jest uważany za słabszy, albowiem 
przy danym ziarnie (pakiet z serwera 
będący liczbą całkowitą) możliwe jest 
wygenerowanie tego samego hasha 
dla dwóch różnych haseł. Prowadzi 
to do możliwości zalogowania się z 
czyjegoś numeru GG bez znajomości 
jego hasła. Jest to jednak raczej kwestia 
szczęścia i wielu godzin żmudnych analiz 
generowanych hashy. Listing 6. można 
potraktować jako ciekawostkę – jest na 
nim przedstawiony algorytm generowania 
hasha hasła CRC32. Następne pola, czyli 
status oraz wersja oznaczają kolejno: 

status ustawiany po połączeniu się z 
serwerem (np. zaraz wracam) i wersję 
używanego klienta GG. Pola nieznany1 
nieznany2 nie są jeszcze poznane. 
Znaczenia reszty pól chyba nie trzeba 
tłumaczyć, albowiem ich nazwy mówią 
same za siebie. 

Ostatnią rzeczą, którą przydałoby 

się wiedzieć o protokole, jest sposób, 
w jaki wysyłana jest wiadomość. W 
końcu właśnie to jest najważniejsze 
w komunikatorze internetowym, stąd 
koniecznym jest poznanie tego procesu 
od środka. W zrozumieniu organizacji 

procesu wysyłania wiadomości pomoże z 
pewnością struktura zaprezentowana na 
Listingu 7.

Interesującym jest tylko pole 

klasaWiadomosci – znaczenie 
pozostałych jest raczej oczywiste. Klasa 
wiadomości określa, czy wysyłana przez 
nas wiadomość ma ukazać się w nowym, 
czy też w istniejącym już okienku. Jest 
to sposób, w jaki komunikator rozróżnia 
sesje prowadzone w tym samym czasie 
– dzięki czemu wie, kiedy inicjowana 
jest nowa rozmowa, a kiedy informacja 
dotyczy już istniejącej konwersacji.

Z naszego punktu widzenia 

ważnym jest przesyłanie emotikonów. 
Jak zatem odbywa się to w protokole 
Gadu–Gadu? Emotikony są zwykłymi 
plikami graficznymi (z rozszerzeniem gif). 
Odpowiednie struktury odpowiedzialne za 
przesyłanie obrazka zaprezentowane są 
na Listingu 8.

Struktury te odpowiadają za 

wyznaczenie parametrów przesyłanego 
obrazka. Kolejne zmienne określają sumę 
kontrolną i rozmiar obrazka. Obrazek 
wysyłany w oknie komunikatora jest 
traktowany jak specjalny tekst, albowiem 
jest on de facto jednym z atrybutów 
tekstu.

Co się dzieje, gdy przesyłane są 

emotikony? Cóż, wszystko odbywa się 
w ten sam sposób. Różnica polega na 
tym, że nie przesyłamy obrazka, tylko jest 
on wczytywany z dysku użytkownika. W 

Listing 5. 

Funkcja generująca hash hasła

int

 

hashHasla

(

unsigned

 

char

 

*

haslo

unsigned

 

int

 

ziarno

)

 

{

        

unsigned

 

int

 

x

y

z

;

       

y

 

=

 

ziarno

;

        

for

 

(

x

 

=

 

0

;

 

*

haslo

;

 

haslo

++)

 

{

                

x

 

=

 

(

x

 

&

 

0xffffff00

)

 

|

 

*

haslo

;

                

y

 ^

=

 

x

;

                

y

 

+=

 

x

;

                

x

 

<<=

 

8

;

                

y

 ^

=

 

x

;

                

x

 

<<=

 

8

;

                

y

 –

=

 

x

;

                

x

 

<<=

 

8

;

                

y

 ^

=

 

x

;

                

z

 

=

 

y

 

&

 

0x1f

;

                

y

 

=

 

(

y

 

<<

 

z

)

 

|

 

(

y

 

>>

 

(

32

 – 

z

));

        

}

        

return

 

y

;

}

Listing 6. 

Struktura odpowiadająca za wysyłanie wiadomości

#define GG_SEND_MSG 0x000b

struct

 

wiadomosc

 

{

        

int

 

numerOdbiorcy

;

        

int

 

sekwencja

;

        

int

 

klasaWiadomosci

;

        

char

 

tresc

[];

}

;

Listing 7. 

Struktury odpowiedzialne za przesyłanie obrazków

struct

 

atrybutyTekstu

 

{

        

short

 

pozycja

;

        

char

 

czcionka

;

        

char

 

kolorCzcionki

[

3

];

        

struct

 

obrazekGG

 

image

;

}

;

struct

 

obrazekGG

 

{

        

short

 

nieznany1

;

 

        

int

 

rozmiar

;

        

int

 

sumaKontrolna

;

}

;

struct

 

odpowiedzObrazka

 

{

        

char

 

flaga

;

        

int

 

rozmiar

;

        

int

 

sumaKontrolna

;

        

char

 

nazwaPliku

[];

        

char

 

zawartoscObrazka

[];

}

;

Listing 8. 

Fragment pliku emots.txt

":)"

,

"usmiech.gif"

,

"_usmiech.gif"

":>"

,

"ostr.gif"

,

"_ostr.gif"

":]"

,

"kwadr.gif"

,

"_kwadr.gif"

":("

,

"smutny.gif"

,

"_smutny.gif"

":|"

,

"yyyy.gif"

,

"_yyyy.gif"

"<uoee>"

,

"uoeee.gif"

,

"_uoeee.gif"

"<lol>"

,

"haha.gif"

,

"_haha.gif"

"<rotfl>"

,

"ROTFL.gif"

,

"_ROTFL.gif"

";)"

,

"oczko.gif"

,

"_oczko.gif"

":P"

,

"jezyk.gif"

,

"_jezyk.gif"

";P"

,

"jezyk_oko.gif"

,

"_jezyk_oko.gif"

"<radocha>"

,

"zacieszacz.gif"

,

"_

zacieszacz.gif"

"<luzik>"

,

"luzik.gif"

,

"_luzik.gif"

"<figielek>"

,

"figielek.gif"

,

"_figielek.gif"

"<milczek>"

,

"milczek.gif"

,

"_milczek.gif"

"<stres>"

,

"stres.gif"

,

"_stres.gif"

"<nerwus>"

,

"nerwus.gif"

,

"_nerwus.gif"

":["

,

"zly.gif"

,

"_zly.gif"

"<zalamka>"

,

"zalamka.gif"

,

"_zalamka.gif"

"<wnerw>"

,

"wnerw.gif"

,

"_wnerw.gif"

"<glupek>"

,

"glupek.gif"

,

"_glupek.gif"

background image

ATAK

34

 

HAKIN9 7-8/2008

tym celu skanowany jest odpowiedni plik, 

emots.txt

, następnie w miejsce danego 

ciągu znaków podstawiany jest obrazek. 
Jednak kod odpowiedzialny za wykonanie 
tych czynności jest błędny – nie 
sprawdza on długości wczytywanych 
łańcuchów. Wykorzystamy ten fakt w 
naszym exploicie. 

Skoro znamy podstawy protokołu, 

wiemy jak wygląda logowanie do sieci i 
wysyłanie wiadomości, czas zabrać się za 
wykorzystanie tej wiedzy do zbudowania 
exploita. Przyjrzyjmy się najpierw 
błędom, jakie dotychczas pojawiały się w 
komunikatorze.

Przegląd błędów 

Gadu–Gadu, jak każdy program, nie jest 
wolne od błędów. W tej części tekstu 
przyjrzymy się niektórym z nich, aby lepiej 
przygotować się do zbudowania exploita, 
wykorzystującego najnowszy błąd odkryty 
w popularnym komunikatorze.

Pierwszym z ataków, jakie omówimy, 

będzie atak DoS na komunikator. Otóż, 
w poprzednich wersjach komunikatora 
możliwe było unieruchomienie 
programu poprzez wysłanie specjalnie 
spreparowanego obrazka. Gdy obrazek 
zaczynał się od specjalnych słów, np. 
AUX: , wywoływany był błąd jego obsługi, 
co zawieszało cały wątek odpowiedzialny 
za tę czynność. Mało tego, gdy nazwa 
pliku graficznego zaczynała się od LPT: 
, możliwe było przesłanie go do drukarki 
użytkownika komunikatora – mało 
śmieszny kawał.

Pozostaniemy ciągle przy 

obrazkach. Gdy nazwa pliku obrazka 
miała dostatecznie dużą długość, 
możliwe było wykonanie ataku DoS 
poprzez przepełnienie bufora zmiennej 
obsługującej nazwy plików graficznych. 
Jeśli długość nazwy pliku zawierała 
się w przedziale od 192 do 200 bajtów 

(jeden znak to jeden bajt), wywoływało 
to przepełnienie bufora na stosie, 
powodując błąd programu i jego 
terminację. 

Połączenia bezpośrednie również 

były przyczyną powstania podatności 
umożliwiającej atak DoS. Przesyłanie 
specjalnie spreparowanych pakietów 
mogło doprowadzić do konsumpcji 
ogromnej ilości pamięci przez program 
kliencki, co w konsekwencji mogło 
zmusić użytkownika nawet do restartu 
systemu. Brak pamięci powodował 
bowiem znaczne zwolnienie działania 
komputera, praca na nim stawała 
się więc niezwykle mało komfortowa. 
Mamy więc do czynienia z atakiem typu 
Denial of Service, którego celem jest 
unieruchomienie maszyny ofiary, bądź 
przynajmniej części oprogramowania na 
niej działającego.

Ostatnim błędem, o którym 

wspomnimy, była luka wynikająca z 
rejestracji rozszerzenia gg: w systemie. 
Gdy użytkownik wchodził na stronę 
internetową, na której znajdowały 
się odnośniki w rodzaju gg:1234567
wszystko było w porządku. Sprawa 
zaczynała się nieco komplikować, gdy po 
literach gg: znajdowało się coś zupełnie 
innego, aniżeli poprawny identyfikator. 
Mogło to doprowadzić nawet do utraty 
plików konfiguracyjnych komunikatora 

– co zapewne nie należało do 
najprzyjemniejszych doświadczeń. 

Jak widać, najczęściej błędy 

komunikatora umożliwiały atak typu 
DoS. Zabicie procesu komunikatora czy 
unieruchomienie systemu były tym, co 
mogło spotkać użytkownika Gadu–Gadu. 
Błąd, który opiszemy w dalszej części 
artykułu, pozwala na coś znacznie 
więcej: możemy wykonać dowolny kod na 
komputerze ofiary, czyli przejąć nad nim 
pełną kontrolę. Jest to więc podatność 
o wiele groźniejsza aniżeli te, które 
dotychczas odnajdowano w programie 
klienckim.

Emitokony – exploit 

dla Gadu – Gadu

Skończmy wreszcie z tą aurą tajemnicy. 
Mamy już odpowiednie przygotowanie 
teoretyczne, zajmijmy się zatem 
budowaniem właściwego exploita dla 
Gadu–Gadu. 

Błąd, który umożliwia wykonanie 

zdalnego kodu, związany jest z 
emotikonami. Przyjrzymy się zatem 
strukturze plików komunikatora (Rysunek 4).

Dla nas szczególnie interesujące 

będą katalogi zawierające emotikony. 
Czym są emotikony? Otóż, gdy 
rozmawiamy z użyciem Gadu–Gadu, 
możliwe jest używanie animowanych 
minek w okienku rozmowy. Są to właśnie 

Rysunek 4. 

Struktura pików komunikatora – plik emots.txt

Rysunek 3. 

Ryzykowne zapamiętanie 

hasła w programie

background image

HAKOWANIE GADU – GADU

35

 

HAKIN9 

7-8/2008

emotikony. Odpowiednia kombinacja 
znaków, na przykład buźki :) czy :
P
, powoduje wczytanie określonego 
pliku graficznego i wstawienie go do 
okna rozmowy. Plik ten jest animacją 
GIF, zawierającą treść adekwatną 
do wpisanego ciągu znaków, np. 
uśmiechającą się twarz. 

Dla nas istotną kwestią jest to, 

skąd komunikator umie powiązać plik z 
konkretnym ciągiem znaków. Słowem, 
skąd wie, że :) to uśmieszek, a ;( to płacz. 
W tym celu w katalogach zawierających 
animacje GIF z emotikonami 
umieszczono plik tekstowy, nazwany 
emots.txt. Zawartość pliku przedstawiona 
jest na Listingu 9.

Jak widać na Listingu 9, każdemu 

specjalnemu ciągowi znaków 
przypisywana jest konkretna nazwa 
pliku, co powoduje wstawienie go w 
miejsce tegoż ciągu w oknie rozmowy 
komunikatora. 

Na czym polega błąd? Otóż, wstawiając 

odpowiedni ciąg znaków do pliku emots.txt
możemy dokonać przepełnienia bufora. 
Funkcja, która kopiuje dane z tego pliku, nie 
sprawdza długości pobieranych łańcuchów. 
Powoduje to możliwość przepełnienia 
bufora na stosie. Nie będzie to jednak 
klasyczne przepełnienie bufora – nie 
nadpiszemy bowiem adresu powrotu 
z funkcji. Nasze wysiłki skupią się na 
nadpisaniu struktury SEH (ang. Structured 
Exception Handling
, Strukturalna Obsługa 

Wyjątków). Otóż, gdy w Gadu–Gadu 
wystąpi błąd, zgłaszany jest wyjątek. Wyjątki 
charakteryzują się tym, że trzeba je w jakiś 
sposób obsłużyć – napisać odpowiedni 
kod, odpowiedzialny za wykonanie 
działania mającego na celu wyjście z 
awaryjnej sytuacji, jaką jest niepoprawne 
zachowanie się programu. Musimy więc 
przyjrzeć się strukturze obsługi wyjątków, 
ona bowiem będzie naszym celem. Należy 
nadpisać kod funkcji obsługującej wyjątki. 
Konsekwencją tego będzie możliwość 
wykonania ataku DoS lub, co jest bardziej 
wyrafinowaną metodą, wykonanie 
dowolnego kodu na maszynie ofiary.

SEH – obsługa wyjątków

Język C cechuje dość poważna wada. Ma 
on problemy z obsługą wyjątków. Tworząc 
procedury obsługujące wyjątki sprawiamy, 
iż nasz kod jest mało przejrzysty. Jak 
bowiem obsłużyć niepoprawne zachowanie 
funkcji w języku C? Sposobów na to nie 
mamy zbyt wiele. W zasadzie są trzy 
główne techniki, które można nazwać jakąś 
obsługą sytuacji awaryjnych.

Pierwszym, i chyba 

najpopularniejszym, sposobem jest 
zwracanie odpowiedniej wartości przez 
funkcję. Wyobraźmy sobie funkcję, której 
zadaniem jest dzielenie liczb. Niech 
funkcja wygląda następująco:

double dzielenie(double liczba1, 

double liczba2)

Funkcja dzieli 

liczbę1

 przez 

liczbę2

zwracając wynik takiej operacji. Ale co 
zrobimy w przypadku, gdy użytkownik 
wprowadzi niepoprawne dane? Na 
przykład liczba2 będzie zerem. Jak wiemy 
z matematyki, dzielenie przez zero jest 
niemożliwe (wynik takiej operacji będzie 
dążył do nieskończoności, jednak dla liczb 
doskonale bliskich zeru, nie będących 
zerem). Co wtedy? Gdy nie przewidzimy 
takiej sytuacji, program może ulec 
zawieszeniu, może wygenerować błąd 
systemowy i zostać zakończonym. Musimy 
więc przygotować jakąś obsługę tego 
kodu. W języku C moglibyśmy zrobić to na 
trzy sposoby:

•   sprawdzamy, czy dzielnik nie jest 

zerem, jeśli tak – to generujemy 
odpowiedni komunikat, 
implementujemy odpowiednie 
zachowanie funkcji, bądź po prostu 
zwracamy odpowiednią wartość;

•   jeśli dzielnik jest zerem, możemy ustawić 

globalną zmienną odpowiedzialną za 
kod błędu, następnie w dalszej części 
programu dokonamy jej sprawdzenia;

•   najbardziej wyrafinowanym 

sposobem jest użycie funkcji 

setjmp() 

longjmp()

. Funkcje te 

powodują kolejno: zapisanie stanu 
komputera w specjalnym buforze 
(zapisywane są rejestry, zawartość 
stosu, wskaźnik stosu – słowem 
stan programu z danego momentu 

R

E

K

L

A

M

A

background image

ATAK

36

 

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

37

 

HAKIN9 

7-8/2008

wykonywania) oraz przeniesie 
programu w poprzedni (zapisany) 
stan. Zatem jeśli dzielnik jest zerem, 
możemy przenieść program w 
stan sprzed podania niepoprawnej 
wartości zmiennej, dając tym 
samym użytkownikowi możliwość 
jej ponownego, poprawnego już 
podania;

•   w celu obsługi błędu możemy 

użyć jeszcze biblioteki sygnałów. 
Gdy program napotka określoną 
sytuację (np. dzielnik jest zerem), 
generuje sygnał, który jest następnie 
obsługiwany przez odpowiednią 
funkcję. Jednak w dużych projektach 
jest to rozwiązanie mało komfortowe, 
ponieważ numery sygnałów (każde 
zdarzenie generuje sygnał o 
określonym numerze) mogą się ze 
sobą pokrywać, wprowadzając tym 
samym chaos do projektu.

Wyraźnie widać, że w tej kwestii język C 
jest wysoce niedoskonały. Język C++ 
to swoisty krok do przodu w stosunku 
do C, toteż likwiduje ten problem, 
wprowadzając obsługę wyjątków. Jak 
mówi sama nazwa – SEH – tworzona 
jest odpowiednia struktura/klasa, która 
jest odpowiedzialna za obsługę wyjątków. 

Zawiera ona niezbędne informacje 
dotyczące konkretnego błędu. Gdy 
występuje błąd, opisany w strukturze 
wyjątek jest wyrzucany (ang. throw) i 
następnie przechwytywany (ang. catch
przez odpowiednią procedurę obsługi 
wyjątków.

Mechanizm ten jest użyty w 

komunikatorze Gadu–Gadu. Gdy coś 
pójdzie nie tak, generowany jest wyjątek, 
który następnie przejmowany jest przez 
odpowiednią funkcję. Ta, po określeniu 
typu błędu, ma za zadanie wykonać 
odpowiednie działania. Co się jednak 
stanie, gdy nadpiszemy tę funkcję i 
wywołamy wyjątek? No właśnie, tu 
otwierają się dla nas różne możliwości...

Budujemy exploit

Nasz exploit powinien wykonywać kod na 
komputerze ofiary. W tym celu musimy 
podmienić plik zawierający emotikony i 
czekać, aż ofiara użyje odpowiedniego 
emotikona. Jak to zrobimy – zależy 
tylko od nas. Możemy namówić 
użytkownika do ściągnięcia pliku, 
zaproponować nowy zestaw emotikon. 
Z pewnością, aby namówić ofiarę do 
wykorzystania dostarczonego przez 
nas pliku, przydatne będą umiejętności 
socjotechniczne.

Zajmijmy się teraz stroną techniczną 

exploita. Na Listingu 10. widzimy kod, w 
którym znaleziono błąd. Wyraźnie widać, 
że występują tam pętle kopiujące dane 
do bufora. Nie jest jednak sprawdzana 
długość kopiowanych łańcuchów. 
To otwiera nam pierwszą możliwość 

– możemy wykonać atak typu DoS. 
Zamieniając ciąg _usmiech.gif na 
1080 liter A, możliwe jest zmuszenie 
programu do wygenerowania 
komunikatu o błędzie i zakończenia 
działania. Dzieje się tak, ponieważ 
zawartość pliku jest przepisywana do 
odpowiedniego miejsca w pamięci, bez 
uprzedniej weryfikacji rozmiaru danych. 
Nadpisujemy tym samym procedury 
obsługi wyjątków, powodując przerwanie 
działania aplikacji i wygenerowanie 
komunikatu o błędzie.

Zwykle w takiej sytuacji nasuwa się 

pomysł na przepełnienie bufora metodą 
nadpisania adresu powrotu z funkcji. 
W tym przypadku nie jest to jednak 
możliwe. Dlaczego? Otóż Gadu–Gadu 
używa zaawansowanej obsługi wyjątków. 
Gdy chcemy nadpisać adres powrotu 
z funkcji, nadpisujemy przy tym wiele 
różnych zmiennych, co powoduje w tym 
przypadku wyrzucenie wyjątku. Jest to 
zaś niczym innym, jak przekazaniem 
sterowania nad programem do innej jego 
części. Nasz kod jest więc omijany i nie 
zostaje wykonany. Proste, acz skuteczne 
zabezpieczenie. 

Musimy więc stworzyć takiego 

exploita, aby nie nadpisywał adresu 
powrotnego z funkcji. Musi być bardziej 
wyrafinowany – jego celem powinna stać 
się SEH – struktura odpowiedzialna za 
obsługę wyjątków. Tylko w ten sposób 
możemy zmusić program do wykonania 
naszego kodu.

Dysponujemy odpowiednią ilością 

danych do zbudowania exploita. 

Listing 9. 

Wadliwy kod – 

przepełniamy bufor

.

text

:

00443E37

 

loc_443E37

:

 

.

text

:

00443E37

 

cmp

 

al

, '

"' 

.text:00443E39 jz short loc_443E48
 .text:00443E3B mov [ecx], al.
 .text:00443E3D inc ecx
 .text:00443E3E inc edi 
.text:00443E3F mov [ebp–18h], edi
 .text:00443E42
 .text:00443E42 loc_443E42: 
.text:00443E42 mov al, [edi] 
.text:00443E44 cmp al, ' ' 
.text:00443E46 jnb short loc_443E37
 (…) 
.text:00443E87 loc_443E87: 
.text:00443E87 cmp cl, '"

.

text

:

00443

E8A

 

jz

 

short

 

loc_443E9F

 

.

text

:

00443

E8C

 

mov

 

[

eax

]

cl

 .

text

:

00443

E8E

 

inc

 

eax

 .

text

:

00443E8F

 

inc

 

edi

 

.

text

:

00443E90

 

.

text

:

00443E90

 

loc_443E90

:

 .

text

:

00443E90

 

mov

 

cl

[

edi

]

 .

text

:

00443E92

 

cmp

 

cl

, ' ' 

.

text

:

00443E95

 

mov

 

[

ebp

–18

h

]

edi

 

.

text

:

00443E98

 

jnb

 

short

 

loc_443E87

Rysunek 5. 

Emotikony

background image

ATAK

36

 

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

37

 

HAKIN9 

7-8/2008

Możemy wywołać wyjątek w programie, 
a następnie nadpisać procedurę jego 
obsługi. Zlokalizowanie procedury obsługi 
wyjątków nie jest trudne – debugger 
wyraźnie pokazuje jej lokalizację pod 
adresem w pamięci 

fs:[0]

, czyli 

0x0032FCA8

. Bufor zaczyna się pod 

adresem 

0x0032F868

. Różnica tych 

dwóch wartości daje nam dokładnie 
1088 bajtów. Nasz plik winien więc 
wyglądać następująco:

•   buźka, np. „:)”,
•   „1095 liter A”,
•   „szelkod”.

Dlaczego 1095 liter A, skoro różnica 
wyniosła tylko 1088 bajtów? Cóż, po 
prostu musimy zacząć nadpisywanie 
struktury od pewnego jej miejsca, nie od 
samego początku. Stąd wynika, iż 1088 
liter to za mało – testy autorów exploita 
(www.vexillium.org) wykazały, iż właśnie ta 
wartość jest odpowiednia. 

Prowadząc dalszą analizę możemy 

się przekonać, że to jeszcze nie wszystko. 
Program nie wywołał wyjątku – nie 
pokazało się okienko z błędem. Autorzy 
zauważyli, iż wynika to z działania 
systemu operacyjnego. Nie każdy uchwyt 
procesu, który ustawimy, jest przez niego 
wywoływany. Do sprawdzenia, czy dany 
uchwyt może być wywołany, służy funkcja 

RtlIsValidHandler()

, znajdująca się 

w bibliotece 

ntdll.dll

. Sprawdza ona 

poprawność adresów, zapewniając 
niejakie zabezpieczenie przed wykonaniem 
niewłaściwego kodu. Jeśli wartość rejestru 
AL po wywołaniu tej funkcji wynosi 1, 
wtedy kod może zostać uruchomiony 
– adres jest poprawny i instrukcje pod nim 
zamieszczone są dozwolone do wykonania. 
Musimy więc, po każdym wywołaniu tej 
funkcji, zmienić wartość rejestru AL na 1 
– tak, aby możliwe było wykonanie naszego 
szelkodu. 

Podsumujmy więc posiadane 

informacje. Musimy stworzyć ciąg 

ponad tysiąca liter A, wstawić tam adres 
w pamięci, pod który przekierujemy 
wykonanie programu oraz umieścić 
szelkod. Adres ten powinien byś jakimś 
adresem, z którego korzysta Gadu–
Gadu. Może to być na przykład funkcja 
znajdująca się w jednej z bibliotek, z 
których korzysta aplikacja. Pozwoli to na 
poprawne przejście przez sito funkcji 

RtlIsValidHandler()

, ustawiając 

wartość rejestru AL procesora na 1 
– wszystko wyglądać będzie na poprawny 
kod. Autorzy exploita proponują użyć 
w tym celu biblioteki 

LIBEAY32.dll

Tworzymy więc szelkod i konstruujemy 
odpowiednio exploit. Gotowy plik 

emots.txt

 powinien zatem wyglądać 

następująco:

•   :)
•   967 liter A,
•   szelkod,
•   37 bajtów danych,

instrukcja przeskakująca do adresu w 
pamięci, pod którym będzie znajdować 
się szelkod (czyli adres początku 
bufora+967),

•   adres kodu w bibliotece LIBEAY32.DLL 

– aby wszystko się wykonało,

•   jakieś dane.

Stronę autora exploita oraz dokładny opis 
procesu znajdowania błędu i budowania 
exploita możemy znaleźć w Ramce 
Sieci.

Podsumowanie

Gadu–Gadu, najpopularniejszy polski 
komunikator internetowy, nie jest 
pozbawiony wad. Wystarczy przekonać 
naiwnego użytkownika do stworzenia 
nowego folderu z emotikonami i 
umieszczenia w nim pliku 

emots.txt

 

z exploitem. Należy jednak pamiętać, 
że stałe, systematyczne aktualizowanie 
programu ustrzeże Czytelnika przed tego 
typu atakami.

Rysunek 6. 

Gadu–Gadu pod debuggerem

W Sieci

•   http://vexillium.org – strona autora exploita, doskonale tłumacząca zasadę jego działania,
•   http://gadu–gadu.pl – strona domowa komunikatora Gadu–Gadu,
•   http://ekg.chmurka.net/docs/protocol.html – szczegółowy opis protokołu Gadu–Gadu,
•   http://msdn2.microsoft.com/en–us/library/ms680657(VS.85).aspx – opis SEH.

Konrad Zuwała

Autor zajmuje się bezpieczeństwem aplikacji 

internetowych oraz szeroko rozumianą ochroną 

systemów komputerowych. W wolnych chwilach 

programuje (głównie C/C++, PHP) oraz zarządza 

portalem internetowym. 

Kontakt z autorem: kzuwala@poczta.onet.pl

background image

38

 

HAKIN9

ATAK

7-8/2008

pierwszej części artykułu, 
opublikowanej w Hakin9 5/2008, 
opisałem podstawową strukturę pliku 

graficznego GIF oraz omówiłem kompresję 
LZW. Niniejsza – druga – część artykułu 
poświęcona będzie rozszerzeniom formatu 
GIF (takim, jak animacja, komentarze czy 
wreszcie rozszerzenia aplikacji), miejscom, 
w których można ukryć/szukać dodatkowych 
danych oraz możliwym do popełnienia podczas 
implementacji błędom.

Przed przystąpieniem do lektury warto 

przypomnieć sobie ogólną budowę formatu 
GIF, podział na części oraz podział danych 
na fragmenty – data Sub-blocks (w tym celu 
można posłużyć się na przykład poprzednią 
częścią artykułu lub sięgnąć do opisu 
standardu GIF [1]).

Animowane GIFy

Plik GIF nawet bez korzystania z rozszerzeń 
oferuje możliwość zapisania więcej niż jednej 
klatki obrazu – w takim przypadku wszystkie 
klatki są używane do stworzenia jednej wynikowej 
grafiki. Standard 89a wprowadził dodatkową 
strukturę – blok kontroli grafiki (ang. Graphic 
Control Extension
, GCE), który zawiera dodatkowe 
informacje umożliwiające stworzenie z serii 
klatek faktycznej animacji. Blok zawiera między 
innymi takie informacje, jak wielkość opóźnienia 
przed wyświetleniem następnej klatki czy sposób 
przejścia do następnej klatki.

MICHAŁ „GYNVAEL

COLDWIND”

SKŁADNIKIEWICZ

Z ARTYKUŁU 

DOWIESZ SIĘ

jakie rozszerzenia zostały 

wprowadzone do formatu GIF w 

wersji 89a,

na co uważać podczas 

implementowania rozszerzeń 

formatu GIF,

gdzie szukać błędów w 

aplikacjach korzystających z GIF,

gdzie ukryć lub szukać ukrytych 

danych w plikach GIF.

CO POWINIENEŚ 

WIEDZIEĆ

mieć ogólne pojęcie na temat 

plików binarnych,

mieć ogólne pojęcie na temat 

bitmap,

mieć pojęcie o plikach GIF.

Według dokumentacji jeden taki blok może 

(ale nie musi) poprzedzać dane obrazu (a 
konkretniej nagłówek Image Descriptor) lub 
rozszerzenie zwykłego tekstu (ang. Plain Text 
Extension
). Dany blok ma zasięg lokalny, czyli 
wpływa jedynie na następującą po nim klatkę 
animacji.

Znaczna część pól w strukturze GCE 

(patrz Tabela 1) ma stałą, ustaloną z góry, 
wartość. Wyjątkami są pola DisposalMethod
UserInputFlagTransparentColorFlag
DelayTime oraz TransparentColorIndex. Pole 
DisposalMethod (metoda usunięcia) określa, w 
jaki sposób dana klatka ma zostać skasowana 
przed narysowaniem następnej. Dostępne są 4 
opcje:

•   [0] – Nieokreślona metoda usunięcia 

(zazwyczaj równoważna z opcją 1),

•   [1] – Nie usuwaj (następna klatka zostanie 

wyrysowana na obecnej),

•   [2] – Wypełnij obraz kolorem tła,
•   [3] – Powróć do poprzedniego obrazu.

Dokumentacja zaleca, aby opcji trzeciej używać 
jedynie w przypadku niewielkich fragmentów 
obrazu (z uwagi na subiektywnie wysokie zużycie 
pamięci – chociaż dla obecnych komputerów nie 
stanowi to problemu), a w razie, gdyby dekoder 
nie potrafił poradzić sobie z przywróceniem 
poprzedniego obrazu, dopuszczalne jest 
wypełnienie obrazu kolorem tła.

Stopień trudności

Format GIF 

okiem hakera

Format GIF, oprócz podstawowej funkcjonalności oferowanej 

przez wszystkie standardowe formaty graficzne, udostępnia 

również kilka rozszerzeń umożliwiających stworzenie animacji czy 

też dodanie komentarza do grafiki.

background image

39

 

HAKIN9 

FORMAT GIF OKIEM HAKERA

7-8/2008

Pozostałe opcje (4-7) są 

zarezerwowane do przyszłego użytku 
– ale w praktyce różne dekodery 
(przy testach zostały wykorzystane: FF 
– Mozilla Firefox 2.0.0.14, O – Opera 9.24, 
S – Safari 3.1 (525.13), IE – Microsoft 
Internet Explorer 7.0.6000.16643, IV 
– IrfanView 4.10) już je implementują, i to 
w odmienny sposób:

•   [4] – IE, IV i FF traktują jako powrót do 

poprzedniego obrazu, O i S jako nie 
usuwaj
,

•   [5] – IE i IV traktują jako powrót do 

poprzedniego obrazu, a FF, O, S jako 
nie usuwaj,

•   [6] – IE i IV traktują jako powrót do 

poprzedniego obrazu, FF jako nie 
usuwaj
, a O i S jako wypełnij obraz 
kolorem tła
,

•   [7] – IE, IV, S i O traktują jako powrót 

do poprzedniego obrazu, a FF jako nie 
usuwaj
.

Jak widać, nie ma w dekoderach zgody 
co do tego, jak traktować metody 
niezdefiniowane przez dokumentację. 
IE oraz IV są zgodne, iż wszystkie 
niestandardowe wartości powinny być 
traktowane jako powrót do poprzedniego 
obrazu, natomiast pozostałe dekodery 
nie mają jednego określonego zdania. 
Różnice te teoretycznie pozwalają na 
stworzenie GIFa, który wyglądać będzie 
inaczej w każdej z wspomnianych 
przeglądarek graficznych czy 
internetowych. 

Należy jeszcze dodać, iż Safari ma 

poważne problemy wydajnościowe 
w przypadku opcji nie usuwaj – dla 

porównania, testowy GIF (50 klatek 
256x256) na Firefoksie renderował 
się około 5 sekund, natomiast Safari 
poświęciło na niego prawie 3 minuty, 
dodatkowo każda kolejna klatka 
renderowała się dłużej od poprzedniej, 
a przeglądarka odpowiadała na 
polecenia użytkownika tylko pomiędzy 
klatkami. Końcowe klatki renderowały 
się około 20 sekund, więc możliwe 
jest przeprowadzenie skutecznego 
ataku DoS przy pomocy odpowiednio 
spreparowanej strony WWW (test został 
wykonany na komputerze Intel Core 2 
Quad 2.4GHz z 4GB RAM).

Pole TransparentColorFlag 

(flaga przezroczystości) oraz 
TransparentColorIndex (numer 
przezroczystego koloru) odpowiedzialne 
są oczywiście za istnienie i wybór koloru, 
który będzie uznany za przezroczysty 
– czyli oznaczał piksele nie narysowane, 
pod którymi prześwitywać będzie 
poprzednia zawartość bufora. Warto 
zaznaczyć, iż jeżeli flaga przezroczystości 
jest wygaszona (tj. równa 0), to pole 
TransparentColorIndex może zostać 
przeznaczone na przechowanie 
dowolnego bajtu danych.

Pole DelayTime (opóźnienie) jest 

informacją o wielkości opóźnienia (w 
setnych sekundy) przed wyświetleniem 
kolejnej klatki. Ostatnie pole (a w zasadzie 
flaga) – UserInputFlag – określa, czy 
dekoder powinien zaczekać na interakcję 
z użytkownikiem (pojęcie to nie jest 
definiowane przez dokumentację, tak 
więc interakcją z użytkownikiem może 
być dowolne zdarzenie uznane za 
takowe przez dekoder, np. naciśnięcie 

przycisku myszy lub dowolnego 
klawisza). W przypadku, gdy flaga jest 
aktywna oraz gdy ustawiony jest czas 
opóźnienia (tj. jest niezerowy), dekoder 
powinien zaprezentować kolejną klatkę 
po odczekaniu wskazanego czasu lub 
po zaistnieniu określonego zdarzenia. W 
praktyce wszystkie z testowanych przeze 
mnie dekoderów ignorowały tę flagę i nie 
czekały na interakcję.

Dodatkowe dane mogą zostać 

przechowane w polu Reserved, które 
zazwyczaj nie jest kontrolowane przez 
dekodery.

Warto zaznaczyć, iż w praktyce 

możliwe jest wielokrotne umieszczenie 
struktury GCE przed danymi. 
Wszystkie testowane dekodery traktują 
wtedy ostatnią strukturę GCE jako 
obowiązującą, a resztę ignorują – jest to 
więc całkiem niezłe miejsce na ukrycie 
dodatkowych informacji.

Dodatkowo, programista może 

popełnić ewentualny błąd zakładając, iż 
BlockSize będzie na pewno równe 4 i 
jednocześnie korzystając z niego w celu 
załadowania danych do statycznego 
bufora – taka sytuacja prowadzi w 
prostej linii do przepełnienia bufora. W 
praktyce większość dekoderów wymaga, 
aby BlockSize był rzeczywiście równy 4 
(jest to sprawdzane, w przypadku innej 
wartości dekoder przerywa pracę).

Rozszerzenie Netscape

W GCE zabrakło informacji o tym, 
czy animacja jest jednorazowa, 
czy też powinna być zapętlona w 
nieskończoność. W tym celu powstało 
rozszerzenie aplikacji NETSCAPE2.0 
(jego obsługa została wprowadzona 
w Netscape Navigator 2.0 Beta 4), 
którego pole NumberOfIterations (patrz 
Tabela 2) określa, czy aplikacja powinna 
animować GIF w nieskończoność 
(wartość 0), czy zaprzestać po określonej 

Tabela 1. 

Struktura Graphic Control Extension

Typ i nazwa pola

Opis

BYTE ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE GraphicControlLabel

Rodzaj rozszerzenia, zawsze 0xF9

BYTE BlockSize

Wielkość następującego bloku danych, zawsze 4

BYTE Reserved:3

Zarezerwowane

BYTE DisposalMethod:3

Metoda usunięcia klatki

BYTE UserInputFlag:1

Flaga oczekiwania na interakcje

BYTE TransparentColorFlag:1

Flaga przezroczystości

WORD DelayTime

Czas opóźnienia

BYTE TransparentColorIndex

Numer koloru przezroczystego

BYTE BlockTerminator

Terminator bloku, zawsze 0

Rysunek 1. 

Artystyczna wizja własnej 

interpretacji GIF przez różne przeglądarki

background image

ATAK

40

 

HAKIN9 7-8/2008

FORMAT GIF OKIEM HAKERA

41

 

HAKIN9 

7-8/2008

liczbie przebiegów. Co ciekawe, 
NN 2.0 Beta 4 uznawała wszystkie 
animacje posiadające niniejszą 
strukturę jako mające się wykonywać w 
nieskończoność, bez względu na wartość 
pola NumberOfIterations ; zostało to 
poprawione w wersji Beta 5. Animacja 
nie posiadająca tej struktury (która 
powinna się znajdować zaraz za GCT) 
jest traktowana przez dekodery wedle 
uznania – zazwyczaj jako animacja, 
którą powinno odegrać się raz (IE, FF, 
O, S). Istnieją jednak dekodery (IV), 
które uznają, iż animacja powinna być 
odgrywana w nieskończoność.

Niektóre dekodery (np. IE i FF) 

wyświetlają klatki animacji również 
podczas ładowania GIFa. To wyświetlenie 
nie jest przez nie zaliczane jako 
faktyczne wyświetlenie animacji, przez 
co efektywnie animacja wyświetlana jest 
o jeden raz więcej. IrfanView natomiast 
ignoruje nagłówek całkowicie.

Pole One powinno mieć zawsze 

wartość 1, natomiast nie wszystkie 
dekodery je testują. Ze sprawdzonych 
dekoderów jedynie Firefox zwrócił uwagę 
na jego zmianę – jest to więc miejsce, w 
którym można ukryć bajt danych.

Kolejną możliwą modyfikacją jest 

powiększenie bloku zawierającego 
wartość Magic. Dekodery zawarte 
w IE oraz FF nie zwróciły uwagi na 
zmianę (powstało trochę miejsca 
do umieszczenia danych), natomiast 
dekoder zawarty w Operze uznał, iż 
animację należy odtworzyć jedynie raz, 
a dekoder z Safari – że animację należy 
odtwarzać w nieskończoność. 

W przypadku zwiększenia drugiego 

sub-bloku danych jedynie Opera 
zareagowała identycznie, jak poprzednim 
razem, reszta dekoderów zignorowała 
zmianę i zachowała się tak, jak gdyby 
otrzymała prawidłowo wypełniony 
nagłówek.

Analogicznie, jak w poprzednim 

przypadku, programista powinien zwrócić 
uwagę na możliwość wystąpienia 
przepełnienia bufora.

Komentarze

Struktura komentarzy (ang. Comment 
Extension
, CE) jest bardzo prosta (co 
pokazuje Tabela 3) – składa się ze 
stałego nagłówka komentarzy, po nim 
następuje seria sub-bloków z danymi 
(dla przypomnienia: każdy sub-blok 
składa się z bajtu określającego 
wielkość danych w bajtach oraz 
odpowiednią ilość bajtów danych) 
i wreszcie sub-blok terminujący (z 
wielkością danych równą 0).

Komentarze z plików GIF wyświetlają 

jedynie nieliczne aplikacje, większość 
dekoderów je ignoruje.

Głównym błędem, jaki można 

popełnić podczas obsługi komentarzy 
GIF, jest brak sprawdzania, co komentarz 
faktycznie zawiera – czy nie znajdują 
się w nim znaki specjalne (np. końca 
linii, terminatora tekstu) lub specjalnych 
sekwencji. Tego typu błąd został 
znaleziony w roku 2001 w przeglądarce 
Netscape Navigator przez Floriana 
Wescha i umożliwiał umieszczenie kodu 
JavaScript wewnątrz komentarza. Skrypt 
ten zostałby wykonany w momencie 
wyświetlenia pliku GIF (NN wyświetlał 
również komentarze) przez przeglądarkę, 
np. w wyniku wejścia przez użytkownika 
na daną stronę WWW.

Programista może łatwo przeoczyć 

także inny błąd, zakładając podczas 
implementacji obsługi komentarzy, iż 
komentarz nie będzie większy od jednego 
sub-bloku (czyli nie będzie przekraczał 
255 znaków) – takie założenie może 
doprowadzić do przepełnienia bufora. 

Plik GIF może zawierać dowolną ilość 

struktur CE.

Rozszerzenie Plain Text

Ostatnim rozszerzeniem GIF jest Plain 
Text Extension
 – rozszerzenie teoretycznie 
umożliwiające zapisanie tekstu na 
bitmapie jako faktycznego tekstu, a nie 
serii pikseli. W takim wypadku dekoder 
byłby odpowiedzialny za prawidłowe 
wyrysowanie tekstu na wynikowej bitmapie. 
Niestety, w praktyce okazuje się, iż 
żaden z przetestowanych dekoderów nie 
miał zaimplementowanej obsługi tego 
rozszerzenia. 

Co więcej, w kilku artykułach, na które 

natknąłem się podczas badań, autorzy 
sugerują, iż jest to martwe rozszerzenie 
i powinno zostać zignorowane przez 
programistę.

Niemniej jednak z uwagi na 

możliwość przyszłego pojawienia się 
tego typu dekoderów, lub pojawienia się 
potrzeby zaimplementowania takiego 

Tabela 2. 

Struktura NETSCAPE2.0

Typ i nazwa pola

Opis

BYTE 

ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE ApplicationExtensi

onLabel

Rodzaj rozszerzenia, zawsze 0xFF

BYTE BlockSize1

Długość sub-bloku danych, zawsze 0x0B

BYTE Magic[11]

Zawsze „NETSCAPE2.0”

BYTE BlockSize2

Długość sub-bloku danych, zawsze 0x03

BYTE One

Zawsze 0x01

WORD 

NumberOfIterations

Ilość powtórzeń animacji

BYTE BlockTerminator

Terminator bloku, zawsze 0

Tabela 3. 

Struktura Comment Extension

Typ i nazwa pola

Opis

BYTE ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE CommentLabel

Rodzaj rozszerzenia, zawsze 0xFE

SubBlock CommentData[]

Jeden lub więcej sub-bloków danych

BYTE BlockTerminator

Terminator bloku, zawsze 0

W Sieci

•   http://www.w3.org/Graphics/GIF/spec-

gif89a.txt – standard GIF89a.

background image

ATAK

40

 

HAKIN9 7-8/2008

FORMAT GIF OKIEM HAKERA

41

 

HAKIN9 

7-8/2008

dekodera, postanowiłem omówić również 
i to rozszerzenie.

Rozszerzenie PTE opiera się o 

koncept stary jak świat znany z konsoli 
poleceń – stałą wielkość pojedynczego 
znaku oraz podzielenie ekranu na siatkę 
o stałej całkowitej rozdzielczości. W 
strukturze PTE podaje się takie informacje 
jak początek siatki (położenie lewego 
górnego rogu) – pola TextGridLeftPosition 
oraz TextGridTopPosition (siatka 
w cale nie musi się zaczynać na 
0,0!), szerokość i wysokość siatki 
– pola TextGridWidth i TextGridHeight
szerokość i wysokość pojedynczego 
znaku – pola CharacterCellWidth oraz 
CharacterCellHeight, i kolor czcionki 
oraz tła (kolor korzysta z Global Color 
Table
). Sam tekst który ma zostać 
wyrenderowany jest podzielony na 
sub-bloki i jest dołączony po sub-
bloku zawierającym konfigurację PTE. 
Całość zakończona jest podobnie jak 
w przypadku poprzednich rozszerzeń 
– terminującym bajtem o wartości 0.

Standard zaleca aby korzystać 

jedynie ze znaków o wielkości 8x8 lub 
8x16, oraz aby szerokość i wysokość 
siatki była tak dobrana aby ilość znaków 
w wierszu czy kolumnie była całkowita 
– w przypadku gdy nie jest, część 
ułamkowa powinna zostać zignorowana.

Należy zauważyć iż wybór kroju 

czcionki należy całkowicie do dekodera, 
i jest niezależne od intencji osoby 
tworzącej GIF'a.

Pierwszym wektorem ataku, który 

nasuwa się od razu po przeczytaniu 
zaleceń standardu, jest użycie innej 
wielkości znaku niż 8x8 czy 8x16. 
Zauważmy iż dla programisty ważną 
informacją będzie ilość znaków w 
linii, którą wylicza się za pomocą 
prostego dzielenia – TextGridWidth/
CharacterCellWidth
 (można się obyć 
bez tego równania, jednak z dużym 
prawdopodobieństwem pojawi się ono 
w programie; analogicznie liczy się 
maksymalną ilość linii w siatce). Celnym 
atakiem na każde dzielenie jest użycie z 
zera w mianowniku – co, niesprawdzone, 
powoduje wygenerowanie wyjątku Divide 
By Zero
, a z kolei nieobsłużony wyjątek 
prowadzi do skutecznego ataku typu DoS.

Innym podejściem do problemu 

wielkości znaku może być użycie 
większego znaku od siatki, oraz, w 
drugim podejściu, większego znaku 
od całego obrazu. Można w tym celu 
użyć odpowiednio dużego znaku (np. 
255x255), lub odpowiednio małego 
obrazu (np. 4x4) dla standardowej 
wielkości znaku. Jeżeli programista 
zaniedba sprawdzanie takich 
przypadków, taki atak doprowadzi do 
przepełnienia bufora obrazu – jednak 
prawdopodobieństwo uruchomienia 
zewnętrznego kodu w takim wypadku 
wydaje się być niezwykle niskie. 
Niejako rozwinięciem tego pomysłu 
jest użycie siatki większej niż obraz, 
ale z wieloma małymi znakami 

– nieuważny programista mógł nie 
sprawdzić wielkości, co skończyło by 
się przepełnieniem bufora – z nadal 
niewielkim (ale jednak większym niż 
poprzednio) prawdopodobieństwem 
wykonania kodu.

Innym wektorem ataku mogły by 

być indeksy kolorów – tła i znaku. Jeżeli 
programista nie sprawdzi czy index nie 
wykracza po za paletę kolorów, może 
to doprowadzić do wycieku informacji 
(analogicznego jak w przypadku palety, 
plików BMP i przeglądarek Mozilla 
Firefox i Opera – błąd został opisany 
w hakin9 3/2008), lub odmowy usługi 
(DoS). Pojawia się również pytanie – a 
co jeśli plik nie będzie w ogóle posiadał 
globalnej palety kolorów? Kolejny 
możliwy wyciek informacji lub DoS.

Podobnie jak w przypadku 

poprzednich rozszerzeń, można 
przetestować zachowanie dekodera 
w przypadku zmiany wielkości sub-
bloku konfiguracyjnego. Warto również 
sprawdzić czy dekoder jest w jakiś 
sposób wrażliwy na nieobecność 
sub-bloku konfiguracyjnego, oraz 
na ekstremalną ilość sub-bloków 
zawierających tekst.

Z uwagi na fakt iż obecnie mało który 

dekoder obsługuje rozszerzenie PTE, to 
rozszerzenie staje się bardzo dobrym 
miejscem na ukrycie dodatkowych 
informacji.

Podsumowanie

We wszystkich wymienionych 
rozszerzeniach warto zwrócić również 
uwagę na możliwość dołożenia 
kolejnego sub-bloku danych do 
wymaganych sub-bloków – powinno 
to pomóc stworzyć miejsce do ukrycia 
kolejnych danych.

Tym artykułem kończę tematykę 

plików GIF. Po lekturze obu artykułów 
uważny Czytelnik powinien być w stanie 
zaimplementować bezpiecznie obsługę 
formatu GIF, wraz z rozszerzeniami, a 
także skutecznie odnaleźć błędy ukryte w 
testowanych aplikacjach.

Michał Składnikiewicz

Michał Składnikiewicz, inżynier informatyki, ma 

wieloletnie doświadczenie jako programista oraz 

reverse engineer. Obecnie pracuje w Hispasec 

– międzynarodowej firmie specjalizującej się w 

bezpieczeństwie komputerowym. 

Kontakt z autorem: gynvael@coldwind.pl

Tabela 4. 

Struktura Plain Text Extension

Typ i nazwa pola

Opis

BYTE ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE PlainTextLabel

Rodzaj rozszerzenia, zawsze 0x01

BYTE BlockSize

Wielkość sub-bloku – zawsze 0x0C

WORD TextGridLeftPosition

Początek siatki – współrzędna X

WORD TextGridTopPosition

Początek siatki – współrzędna Y

WORD TextGridWidth

Szerokość siatki

WORD TextGridHeight

Wysokość siatki

BYTE CharacterCellWidth

Szerokość pojedynczego znaku

BYTE CharacterCellHeight

Wysokość pojedynczego znaku

BYTE TextForegroundColorIndex

Kolor znaku

BYTE TextBackgroundColorIndex

Kolor tła znaku

SubBlock PlainTextData[]

Sub-bloki zawierające tekst

BYTE BlockTerminator

Terminator bloku, zawsze 0

background image

42

 

OBRONA

HAKIN9 7-8/2008

W

t Internecie można trafić na dokumenty 
o NSM (Network Security Monitor
pracującym na systemie SunOS w 

wersji 4.x. Autor raportu dla Lawrence Livermore 
National Laboratory, Todd Heberlein, opisał w 
nim zestaw narzędzi do monitorowania ruchu 
w sieci. Raport datowany jest na miesiąc luty 
roku 1995, a więc dość dawno. W skład tej 
wersji NSM wchodziło dość dużo narzędzi 
do przechwytywania danych i późniejszej ich 
analizy. Zestaw posiadał również graficzny 
interfejs użytkownika, pracujący w środowisku X-
windows
 systemu SunOS. Niestety, wspomniana 
wersja nie przewidywała wykorzystywania jej w 
innych systemach operacyjnych. W dzisiejszych 
czasach bardzo często używanymi programami 
do monitorowania bezpieczeństwa sieci są takie 
narzędzia, jak Snort czy Sguil. Aplikacje te są 
znane, sprawdzone i spełniają oczekiwania wielu 
swych użytkowników. Nie jest to co prawda zbyt 
duży wybór, ale zawsze można znaleźć jakiś 
program dla siebie. Istnieje dystrybucja Knoppix-
NSM, która zawiera wspomniane narzędzia 
i kilka innych, dzięki czemu jest także często 
wykorzystywana. W Sieci pojawiło się jednak 
nowe narzędzie, które jest warte zauważenia. 
NSM to tak naprawdę zestaw aplikacji, które 
można podzielić na trzy kategorie:

•   narzędzia do przechwytywania danych,
•   narzędzia do analizowania danych,
•   narzędzie wspierające.

GRZEGORZ BŁOŃSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

co to jest NSM-Console,

co potrafi NSM-Console i jak jej 

używać,

do czego służy dystrybucja HeX.

CO POWINIENEŚ 

WIEDZIEĆ

znać systemy linuksowe

potrafić kompilować kod 

źródłowy

Oczywiście z wszystkich wymienionych grup 
najbardziej istotne są programy służące analizie 
zebranych danych, jednak wszystkie aplikacje są 
potrzebne do sprawnego wykonywania zadań 
monitorowania sieci.

NSM-Console powstała stosunkowo 

niedawno i jest rozwijana tak naprawdę przez 
jedną tylko osobę, którą jest Matthew Lee Hinman. 
Program napisany w języku programowania 
Ruby ma budowę modularną, co bardzo 
ułatwia pracę z nim, a także rozszerzanie jego 
możliwości przez dodawanie kolejnych modułów. 
Autorzy (bo początkowo było ich kilku) nie 
chcieli napisać programu, który powielałby te, 
które już są dostępne i świetnie się sprawdzają, 
więc napisali coś na kształt frameworku, który 
zawiera w sobie wiele pomocnych i przydatnych 
narzędzi. Z powodu niezbyt wysokiej popularności 
spowodowanej zbyt krótkim stażem programu, 
warto o nim napisać – by administratorzy i 
indywidualiści zajmujący się bezpieczeństwem 
sieciowym mieli okazję go poznać i przetestować. 
Z racji tego, iż narzędzie opiera się tak naprawdę 
o pracę innych programów, nikt nie powinien mieć 
z jego obsługą większych problemów. 

Moduły i polecenia

NSM-Console w wersji 0.6 zbudowany jest 
z ponad 20 modułów, które umożliwiają 
dokładną analizę przechwyconych pakietów w 
celu wyszukiwania anomalii oraz przeróżnych 
nieprawidłowości. Program potrafi pracować nie 

Stopień trudności

Konsola NSM 

i HeX LiveCD 

Monitorowanie sieci i systemów informatycznych w niej 

działających to bardzo ważna część pracy administratorów. Choć 

narzędzi do monitorowania jest wiele, nie wszyscy znają konsolę 

NSM (Network Security Monitoring), stworzoną na potrzeby 

dystrybucji HeX. 

background image

43

 

KONSOLA NSM I HEX LIVECD

HAKIN9 

7-8/2008

tylko z jednym plikiem jednocześnie, ale z 
katalogiem wypełnionym plikami pcap.

Opiszę teraz w skrócie moduły 

wchodzące w skład NSM (Ramka Moduły 
NSM).

Jak widać, pokaźna porcja modułów 

potrafi wykonać całkiem sporo pracy, 
skracając czas analizy plików. Ci, którzy 
sami analizowali ruch sieciowy w 
poszukiwaniu anomalii, wiedzą, że jest 
to zajęcie czasochłonne – tym bardziej, 
gdy każdego narzędzia trzeba używać 
z osobna. Dla celów sterowania pracą 
programu mamy do dyspozycji kilka 
poleceń w połączeniu z różnymi opcjami.

Polecenie 

file

 – definiuje lokalizację 

pliku lub plików z zapisem ruchu 
sieciowego na których ma operować 
NSM-Console. Składnia pliku jest bardzo 
prosta , jedynym parametrem jest ścieżka 
do pliku na przykład file /home/pliki/
zrzut.pcap

Polecenie 

output

 – specyfikuje 

katalog dla danych wyjściowych NSM-
Console.Domyślnym katalogiem jest 
katalog o nazwie składającej się z 
nazwy analizowanego pliku i dodaną 
stałą -output czego wynikiem jest nazwa 
katalogu /zrzut-output .

Polecenie 

info

 – wyświetla 

dodatkowe informacje na temat modułu 
oraz jego zmiennych. Dodatkową 

informacją wyświetlaną są adresy stron z 
których pochodzą moduły , lub odnośniki 
do stron Wikipedii.

Kolejne polecenie 

list

 – wyświetla 

dostępne moduły z informacjami 
czy są one aktualnie włączone czy 
też wyłączone. Znak [-] oznacza że 
moduł jest wyłączony natomiast o jego 
włączeniu informuje znak [+].

Włączanie i wyłączanie modułów 

wykonywane jest poleceniem 

toggle

 .

Składnia polecenia to toggle <nazwa_

modułu> lecz można włączyć jednocześnie 
także kilka modułów wymieniając je po 
znaku spacji. Do włączenia wszystkich 
modułów służy polecenie 

toggle all

.

Następne polecenie 

options

 pozwala 

na wyświetlenie zmiennych globalnych 
oraz specyficznych dla każdego modułu. 
Polecenie wykonane bez podania nazwy 
modułu wyświetla zmienne globalne. Po 
dodaniu do polecenia zmiennej w postaci 
nazwy modułu zostanie wyświetlona lista 
zmiennych dla danego modułu.

Set

 to polecenie włączania zmiennych 

dla modułu. Informacje o dostępnych 
zmiennych dla każdego modułu wyświetla 
wcześniej wspomniane polecenie 

options

.

Najważniejsze jest polecenie 

run

 

uruchamiające cały proces analizy pliku ze 
zrzutem ruchu sieciowego. Polecenie nie 
posiada żadnych opcji a jego wykonanie 

spowoduje uruchomienie procesu analizy 
w którym użyte będą moduły które 
wcześniej zostały włączone.

Po szczegółowe opisy wszystkich 

poleceń odsyłam do pliku PDF, 
zawierającego podstawowy zestaw 
informacji, znajdującego się w archiwum, 
które można pobrać z adresu http:
//writequit.org/projects/nsm-console/files/
nsm-console-0.6.tar.gz.

Aby przybliżyć Czytelnikom pracę 

z programem, przedstawię przypadek 
krótkiej analizy ruchu sieciowego na 
przykładzie wyników pracy kilku modułów 
NSM-Console. Zanim jednak przejdę do 
opisu działania programu, przypomnę, 
iż aby moduły programu mogły działać 
w systemie, muszą być zainstalowane 
programy, do których te moduły się 
odwołują. Ponieważ narzędzie operuje 
na kilku istotnych zmiennych, opiszę 
jedną z ważniejszych, zanim zabierzemy 
się do pracy. Zmienna 

PCAP _ FILE

 jest 

bezwzględną ścieżką do pliku, na którym 
będzie operować NSM-Console. Jest 
ona wykorzystywana przez większość 
modułów do ustawienia pliku, z którym 
będą one pracować. W przypadku, gdy 
ustawimy zmienną na katalog zawierający 
pliki PCAP, programy będą analizowały 
każdy plik znajdujący się w tym katalogu. 
Gdy jesteśmy pewni, że mamy w systemie 
zainstalowane odpowiednie aplikacje, 
możemy przejść do pracy z NSM-
Console. Po uruchomieniu polecenia 
.

/nsm

 w rozpakowanym wcześniej katalogu 

programu konsola zostaje uruchomiona.

Następnie należy zdefiniować plik 

PCAP, z którym będziemy pracować 
– co wykonuje się poleceniem file 

<nazwa _ pliku>

. W tym momencie 

warto poinformować, że program potrafi 
pracować zarówno na plikach PCAP 
tworzonych w czasie rzeczywistym, jak 

Rysunek 1. 

Uruchomiona NSM-Console i wykonane operacje zdefiniowania pliku do 

analizy oraz włączenia wszystkich dostępnych modułów

W Sieci

•   http://http://writequit.org/projects/nsm-

console,

•   http://securitydistro.com/tutorials/

play.php?id=94&title=A-introduction-to-
NSMConsole tutorial,

•   http://www.securixlive.com/knoppix-nsm ,
•   http://watchlist.security.org.my,
•   http://bro-ids.org,
•   http://passive.sourceforge.net.v

background image

OBRONA

44

 

HAKIN9 7-8/2008

KONSOLA NSM I HEX LIVECD

45

 

HAKIN9 

7-8/2008

i na plikach, które zostały wcześniej 
zapisane. Po operacji definicji pliku 
należy włączyć moduły programu, 
które chcemy wykorzystywać podczas 
zautomatyzowanej analizy zbioru. Do tego 
celu służy polecenie 

toggle <nazwa _

modułu>

. W celu włączenia wszystkich 

dostępnych modułów można użyć 
polecenia 

toggle all

.

Do zdefiniowania katalogu 

wyjściowego innego niż standardowy 
można użyć polecenia 

output 

<katalog>

. W przypadku rezygnacji ze 

zdefiniowania katalogu wyjściowego dane 
zostaną zapisane w katalogu utworzonym 
na podstawie nazwy analizowanego 
pliku – będzie on miał nazwę 

<nazwa _

pliku>-output

.

Po zakończeniu pracy NSM-Console 

w katalogu programu zapisywane są 
wyniki analizy pliku, zwrócone przez 
poszczególne moduły.

Moduł harimau sprawdza adresy IP 

znalezione w badanym pliku pod kątem 

ich obecności na liście Harimau, która 
gromadzi m.in. adresy spamerów z kilkunastu 
największych ich list na świecie, między 
innymi Spamhaus. Ten moduł może okazać 
się pomocny w wykryciu zwiększonego ruchu 
sieciowego powodowanego przez spamerów 
i wysyłanych przez nich niechcianych 
wiadomości.

Clamscan to moduł sprawdzający 

plik z zapisem ruchu sieciowego pod 
kątem występowania wirusów, co może 
nam wydatnie pomóc, jeśli badany plik 
pochodzi z sieci, do której nie mamy 
fizycznego dostępu. Po analizie i wykryciu 
wirusów możemy w zainfekowanej sieci 
wykonać czynności odcinające od ruchu 
komputery, których adresy IP figurują jako 
źródła infekcji. 

Bardzo ciekawą i przydatną 

funkcją 

NSM-Console

 jest możliwość 

dekodowania oraz kodowania w dziesięciu 
różnych standardach.

Funkcja ta jest bardzo przydatna 

podczas analizy transmisji z użyciem 
kodowania, a NSM-Console potrafi 
kodować/dekodować w Base64MD5
SHA256urlescapebinary_MSBbinary_
LSBhex_MSBhex_LSBuuencode oraz 
ROT13.

Jako przykład zakodujmy ciąg znaków 

przy użyciu Base64 (Listing 1)

Jak widać, ciąg został poprawnie 

zdekodowany. Nawiasy kwadratowe 
zostają dodane przez NSM-Console tylko 
w celu oznaczenia początku i końca ciągu.

NSM-Console 

jako składnik HeX LiveCD

NSM-Console jest kluczowym składnikiem 
dystrybucji narzędziowej dla administratorów, 
opartej o system FreeBSD. W środowisku 
graficznym Fluxbox, w jaki jest wyposażona, 
łatwo można uruchamiać całe zestawy 
narzędzi przygotowanych z dużą 
dokładnością. Network Security Monitoring 
Toolkit (NSM-Toolkit) to zestaw narzędzi, w 
skład którego wchodzi między innymi właśnie 
NSM-Console. W zestawie znajdziemy także 
Sguilc. Oprócz tego jest on wyposażony w 
szereg aplikacji do analizy powłamaniowej, 
analizy sieci, wizualizacji sieci, testów 
penetracyjnych czy edycji plików pcap.

Ta mnogość narzędzi powoduje, że 

dystrybucja może tak naprawdę znaleźć 
wielu użytkowników wśród administratorów, 
oficerów bezpieczeństwa, pracowników 

Listing 1. 

Kodowanie Base64 w NSM Console

W konsoli NSM wydajemy polecenie :
nsm

>

 encode base64 Test kodowania base64.

Encoding ascii --

>

 base64...

Output 

([]

's added to show beginning and end):

[VGVzdCBrb2Rvd2FuaWEgYmFzZTY0Lg==]

Zakodowany ciąg znaków można odkodować (kto nie wierzy, sam niech sprawdzi), wydając 

polecenie :

nsm> decode base64 VGVzdCBrb2Rvd2FuaWEgYmFzZTY0Lg==

Decoding base64 --> ascii...
Output ([]'

s added to show beginning 

and

 

end

)

:

[

Test kodowania base64.

]

Moduły NSM

•   [+] aimsnarf – wyciąga wiadomości komunikatora AIM,
•   [+] argus-basic – przygotowuje statystykę przepływu,
•   [+] bro-ids-protocol – Bro Intrusion Detection System (analizuje plik pod kątem alarmów),
•   [+] bro-ids-stream – Bro Intrusion Detection System (ekstrahuje zawartość ciągów),
•   [+] capinfos – wyświetla informacje o pliku pcap,
•   [+] chaosreader – śledzi sesje TCP/UDP i zbiera dane z działających aplikacji,
•   [+] clamscan – skanuje wyekstrahowane pliki pod kątem obecności złośliwego kodu,
•   [+] fl0p – analizuje przepływ pakietów w warstwie aplikacji,
•   [+] flowtag – wizualizuje przepływ pakietów w pliku pcap,
•   [+] flowtime – tworzy oś czasu dla ruchu sieciowego w pliku,
•   [+] foremost – wypakowuje pliki z pliku pcap,
•   [+] harimau – sprawdza adresy IP z pliku pcap na obecność na liście Harimau,
•   [+] hash – tworzy hashe pliku lub plików,
•   [+] honeysnap – wykonuje analizę pliku pcap przechwyconego na honeypocie,
•   [+] iploc – ustala lokalizację ruchu przychodzącego i wychodzącego,
•   [+] ngrep – przeszukuje plik pcap w poszukiwaniu danych,
•   [+] p0f – pasywne rozpoznawanie systemu, z którego pochodzą pakiety,
•   [+] pads - Passive Asset Detection System,
•   [+] snort – generuje alarmy programu snort,
•   [+] tcpdstat – generuje statystykę z pliku pcap,
•   [+] tcpflow – ekstrahuje informacje o przepływie z pliku pcap,
•   [+] tcpick – generuje statystykę ruchu, 
•   [+] tcptrace – analizuje trasy pakietów,
•   [+] tcpxtract – wypakowuje dane z plików pcap,
•   [+] trace-summary – generuje podsumowanie trasowania,
•   [+] tshark – analizuje ruch sieciowy.

background image

OBRONA

44

 

HAKIN9 7-8/2008

KONSOLA NSM I HEX LIVECD

45

 

HAKIN9 

7-8/2008

działów IT, a także samouków pragnących 
zgłębić swoją wiedzę.

Obraz ISO systemu można pobrać 

ze strony https://trac.security.org.my/
hex/wiki
, na której znajdziemy również 
dokumentację oraz inne informacje na 
temat narzędzi zawartych w dystrybucji. 
Gorąco polecam zaznajomienie się z tą 
interesującą dystrybucją. HeX dostępny jest 
także do zainstalowania na napędach USB 
– odpowiedni plik można pobrać spod 

adresu http://bsd.ipv6.la/hex-i386-1.0.2-
ch.img.bz2.

W związku z dużą popularnością 

maszyn wirtualnych, HeX został 
przygotowany także w wersji dla takich 
systemów. Do wyboru mamy obrazy 
dla Vmware (http://bsd.ipv6.la/hex-
images/HeX-VMware.tar.bz2
),Virtualbo
x
 (http://bsd.ipv6.la/hex-images/HeX-
Virtualbox.tar.bz2
), Quemu (http://
bsd.ipv6.la/hex-images/HeX-Qemu.tar.bz2

oraz Parallels (http://bsd.ipv6.la/hex-
images/HeX-Paralles.tar.bz2
). 

Nie fair byłoby pominięcie w tym 

momencie innej dystrybucji LiveCD o 
podobnych możliwościach, którą jest 
Knoppix-nsm. Dystrybucja ta, podobnie 
jak HeX, zawiera zestaw narzędzi do 
analizy sieci i poziomu zabezpieczeń.

Niestety, przy dużym wyborze narzędzi 

w tej dystrybucji brakuje wielozadaniowego 
kombajnu – takiego, jakim jest NSM-
Console.

Podsumowanie 

Mnogość dostępnych aplikacji służących 
administratorom i osobom zajmującym 
się bezpieczeństwem jest czasem 
przytłaczająca i powoduje trudności w 
wyborze jakiegoś konkretnego zestawu 
narzędzi. NSM-Console powstało między 
innymi po to, by ułatwić ten wybór 
– tworzy ją w końcu człowiek, który 
sam jest administratorem i zajmuje się 
bezpieczeństwem ruchu sieciowego. 
Dodatkowo dystrybucja HeX, której 
kluczowym składnikiem jest NSM-
Console, to potężny zestaw narzędzi, 
który pozwala na wykonywanie bardzo 
szerokiego spektrum zadań związanych 
z ruchem sieciowym, bezpieczeństwem 
czy analizą po dokonanym ataku, 
zakończonym kompromitacją systemu 
lub wręcz całej sieci. Mimo, iż zarówno 
sam program NSM-Console, jak i 
dystrybucja HeX są stosunkowo młodymi 
narzędziami, ich używanie jest jak 
najbardziej wskazane – a osoby, które 
po nie sięgną, z pewnością nie będą 
swojej decyzji w żaden sposób żałowały. 
Jedyna trudność, jaka może się pojawić, 
to problemy z użytkowaniem HeX LiveCD
który bazuje na FreeBSD – a więc 
spora część poleceń nie pokrywa się z 
tymi znanymi z dystrybucji linuksowych. 
Znający FreeBSD nie będą mieli z 
obsługą żadnego problemu, a osoby 
chcące używać HeX'a będą musiały 
nauczyć się podstaw obsługi tego 
systemu.

Rysunek 3. 

Chaosreader to moduł śledzący ruch TCP/IP. Wyniki działania tego 

komponentu prezentowane są w postaci plików HTML, wygodnych do przeglądania

Rysunek 2. 

Moduł harimau w przypadku znalezienia źródła spamu wyświetla o tym informację 

przy adresie IP. W przykładzie nie wykrył on żadnego źródła spamu, stąd wpisy no records

Grzegorz Błoński

Grzegorz Błoński z wykształcenia jest informatykiem, 

certyfikowanym specjalistą IBM. Pracuje w dużej firmie 

o zasięgu światowym. Zajmuje się administracją i 

bezpieczeństwem sieciowym. Jest członkiem organizacji 

International Information Systems Forensics Association 

(IISFA), ISACA oraz Internet Society.

Kontakt z autorem: mancymonek@mancymonek.pl

background image

46

 

OBRONA

HAKIN9 7-8/2008

N

ajpoważniejszy w historii Ameryki 
Północnej brak prądu (ang. blackout
w 2003 roku wygenerował straty 

szacowane na 6 mld dolarów, utrudnił życie 
czterdziestu milionom Amerykanów i dziesięciu 
milionom Kanadyjczyków. Przestały działać 
pompy elektryczne, więc liczne stacje benzynowe 
zostały zamknięte (co z kolei wstrzymało ruch 
samochodowy), pojawiły się też problemy z 
brakiem wody w kranach. Stanęła kolej, metro, 
zamknięto fabryki, sklepy, restauracje. Zatrzymały 
się windy. Telefony komórkowe nie mogły połączyć 
się z siecią, bo jedne stacje bazowe przestały 
działać, a inne zostały nadmiernie obciążone 
przez ponad dwukrotnie większą niż zazwyczaj 
liczbę telefonów alarmowych. Czy spowodował 
to atak terrorystyczny? Nie. Przyczyną tego 
wszystkiego był błąd programu komputerowego w 
elektrowni Eastlake w stanie Ohio. 

Nasza zależność od komputerów ciągle 

niepostrzeżenie rośnie. Choć przeciętnemu 
człowiekowi komputer kojarzy się raczej z 
monitorem, klawiaturą, myszą i plastikowym 
pudełkiem, zawierającym całą resztę, w 
rzeczywistości jest użytkownikiem dużo większej 
liczby komputerów, niż mu się wydaje. Z 
bardziej oczywistych przypadków są to telefony 
komórkowe czy kina domowe. Jednak nawet 
kiedy jedzie w miarę nowym autobusem czy 
samochodem, nad jego bezpieczeństwem czuwa 
komputerowy system ABS, monitorujący prędkość 
każdego koła i w miarę potrzeby wykonujący 

CEZARY G. CEREKWICKI

Z ARTYKUŁU 

DOWIESZ SIĘ

czym są sytuacje wyścigu,

jakie błędy i podatności mogą 

powodować,

czym są heisenbugi.

CO POWINIENEŚ 

WIEDZIEĆ

wskazana jest znajomość 

podstaw informatyki. 

hamowanie pulsacyjne w sposób dużo lepszy, niż 
byłby to w stanie zrobić nawet najlepszy kierowca. 

Bardzo użyteczne wynalazki, takie jak 

bankomaty czy karty płatnicze, nie mogłyby istnieć 
bez komputerów i sieci komputerowych, o czym 
boleśnie przekonali się klienci pewnego banku, w 
którym poważna awaria systemu informatycznego 
spowodowała kilkudniowy brak dostępu do 
pieniędzy. Od komputerów zależny jest dziś nawet 
największy technofob. Choćby wszędzie jeździł 
rowerem, gardził telefonią i telewizją, to i tak 
będzie zarejestrowany choćby w systemie ZUS i 
od poprawności działania tegoż systemu będzie 
zależał los jego emerytury. 

Ale to i tak tylko wierzchołek góry lodowej. 

Amerykańskie doświadczenie z 2003 roku 
pokazuje, że defekt programistyczny może 
pośrednio doprowadzić do braku prądu, wody, 
benzyny, telefonii komórkowej i stacjonarnej, a 
więc praktycznie niemalże do cofnięcia nas do 
XIX wieku. 

Świat się coraz bardziej komputeryzuje, więc i 

coraz więcej zależy od tego, czy komputery będą 
działały poprawnie w każdych warunkach – także 
w przypadku, gdy będą nimi manipulować ludzie 
o bardzo złych intencjach. 

Kto pierwszy, ten lepszy

Kraj mający tylu wrogów, co USA, nie mógł 
nie zadać sobie pytania – czy to na pewno 
nie był zamierzony atak? Przeprowadzono 
odpowiednie śledztwo, które wykazało, że problem 

Stopień trudności

Zagrożenia 

wyścigowe 

Czy w coraz bardziej skomputeryzowanym świecie, w którym 

informatyka nie zawsze radzi sobie z trudnymi do wykrycia 

błędami, możemy się czuć bezpieczni? 

background image

47

 

ZAGROŻENIA WYŚCIGOWE

HAKIN9 

7-8/2008

spowodował błąd typu sytuacja wyścigu 
(ang. race condition). Przypominam: 
sytuacja wyścigu to zjawisko polegające 
na zależności poprawnego wykonania 
programu od kolejności zajścia 
określonych zjawisk. Zjawisko to może 
występować w szczególności w aplikacjach 
wielowątkowych i rozproszonych oraz 
przy wykorzystywaniu wszelkiego 
rodzaju operacji asynchronicznych. 
Czyli, praktycznie rzecz ujmując, we 
współczesnych wielodostępnych 
i wieloprocesowych systemach 
operacyjnych, sytuacja wyścigu może 
wystąpić w niemal każdym programie. W 
dodatku obecne trendy rozwoju IT, takie 
jak powstawanie procesorów o coraz 
większej liczbie rdzeni, coraz większe 
usieciowienie oprogramowania i coraz 
większe zrównoleglenie przetwarzania 
powodują, że problemy sytuacji wyścigu i 
związane z nimi błędy będą się pojawiać 
coraz częściej. 

Ta klasa błędów jest wyjątkowo trudna 

do wykrycia. Jeśli w warunkach testowych 
zawsze wyścig kończył się zwycięstwem 
zjawiska A nad zjawiskiem B, to problem nie 
został odkryty i program przeszedł do etapu 
produkcji. Tam również działał bez zarzutów, 
aż tu nagle wystąpił ten jeden wyjątkowy 
przypadek, gdy np. ruch sieciowy był 
szczególnie natężony, albo magistrala czy to 
została zapchana wybitnie dużymi ilościami 
danych, czy też któryś algorytm został 
poczęstowany takim wejściem, dla którego 
jego złożoność jest najbardziej pesymistyczna 
– albo wystąpiło jakiekolwiek inne rzadkie 
zdarzenie, zmieniające typową kolejność 
zachodzenia zdarzeń w systemie. Nagle 
pojawia się błąd, którego nikt nigdy nie widział 
na oczy (i pewnie nigdy więcej nie zobaczy). 

Sytuację wyścigu daje się też niekiedy 

wykorzystać do obejścia kontroli dostępu 
w programach zawierających tego typu 
błąd. Pomiędzy sprawdzeniem, czy dany 

użytkownik ma prawo do danej operacji, 
a jej faktycznym wykonaniem mija 
trochę czasu. Rodzi to przynajmniej dwie 
konsekwencje. 

•   Przykład 1. Załóżmy, że uprawnienia są 

sprawdzane tylko przy logowaniu do 
systemu. Jeśli administrator postanowi 
zabrać użytkownikom prawo do danej 
operacji, faktyczne wejście w życie jego 
postanowienia nastąpi dopiero wtedy, 
gdy wszyscy się przelogują. W wielu 
aplikacjach sesje potrafią trwać nawet 
tygodniami bez wygaśnięcia, co w 
takiej sytuacji doprowadzi do sytuacji 
długotrwale zwisających uprawnień

Możemy sobie wyobrazić sytuację, w której 
szefostwo firmy chce odciąć pewną grupę 
pracowników od danej funkcjonalności. Jeśli 
jedna osoba odkryje, że po przelogowaniu 
straciła dostęp do określonych funkcji, 
może ostrzec pozostałe, żeby te się nie 
wylogowywały. 

Rozwiązaniem częściowym jest albo 

wymuszanie częstszego przelogowywania 
się albo możliwość unieważnienia 
sesji przez administratora, ale najlepiej 
problem rozwiązuje poprzedzenie kodem 
weryfikującym uprawnienia wykonanie 
każdej istotnej operacji. Program będzie 
działać odrobinę wolniej, ale z pewnością 
będzie bezpieczniejszy – a wdrożenie każdej 
istotnej zmiany w polityce bezpieczeństwa 
będzie natychmiastowe. 

•   Przykład 2. Rozważmy program dostający 

jako argument nazwę pliku. Jeśli 
atakujący poda nazwę pliku, do którego 
ma uprawnienia i – w czasie pomiędzy 
sprawdzeniem uprawnień a wykonaniem 
przez program krytycznej operacji – zdąży 
podmienić go na łącze symboliczne 
do pliku, do którego już uprawnień nie 
posiada, to wyminie tym samym cały 

system kontroli dostępu. Taki atak nie 
jest prosty, ponieważ wymaga bardzo 
precyzyjnej synchronizacji. 

Rozwiązaniem może być zablokowanie 
pliku, aby nikt inny nie był go w stanie ruszyć 
pomiędzy etapem weryfikacji uprawnień a 
etapem wykonywania na nim odpowiednich 
operacji. 

W omawianym przypadku 

sytuacja wyścigu doprowadziła do 
naruszenia ostatniej ze składowych 
triady bezpieczeństwa informatycznego 
– dostępności. Usługa monitorowania 
stanu urządzeń elektrowni przestała być 
dostępna, co doprowadziło do blackoutu. 

Błądzić 

jest rzeczą komputerową

Napisanie dużego programu, który nie będzie 
zawierał żadnych poważnych błędów, jest 
zadaniem bardzo trudnym, a konsekwencje 
nawet tak teoretycznie drobnego i ciężkiego 
do wychwycenia defektu, jak sytuacja wyścigu 
w części kodu, mogą być tak drastyczne, jak 
w przypadku braku prądu w USA i Kanadzie. 

Błędy programistyczne doprowadziły też 

do wielu innych wypadków. W latach 80-tych 
urządzenie do radioterapii u przynajmniej 
sześciu pacjentów stukrotnie przekroczyło 
dawkę promieniowania. Trzy osoby zmarły 
w wyniku choroby popromiennej. W 1991 
dwudziestu ośmiu Amerykanów zginęło na 
skutek błędu w systemie antyrakietowym w 
Arabii Saudyjskiej. Wada komputerowego 
systemu kontroli silnika była prawdopodobnie 
przyczyną katastrofy brytyjskiego śmigłowca 
Chinook w 1994 roku. W wypadku zginęło 
29 osób. Okazuje się zatem, że nieostrożny 
programista może zabić nie mniej ludzi niż 
nieostrożny chirurg, pilot czy żołnierz. 

Błąd zakradł się nawet do algorytmu 

przedstawionego w książce Perełki 
oprogramowania
 profesora Jona Bentleya, 
wydanej po raz pierwszy w 1986 roku i 
pozostał niewykryty przez dwie dekady! Co 
więcej, defekt nie dotyczył pojedynczego 
algorytmu, ale całej ich klasy zwanej dziel i 
rządź
, której idea polega na systematycznym 
dzieleniu problemu na coraz mniejsze 
podproblemy, a następnie scalaniu ich 
mikrowyników w ostateczne rozwiązanie. 

Bentley jest w tej dziedzinie specjalistą, 

napisał pracę doktorską o zastosowaniach 
tej klasy algorytmów. Co więcej, przedstawił 
matematyczny dowód poprawności 

Listing 1. 

Przykład kodu podatnego na eskalację uprawnień dostępu do pliku

if

 

(

access

(

file

,

 R _ OK

)

 

!

0

)

 

{

   exit

(

1

);

}

// w to miejsce atakujący może się wstrzelić z podmienieniem pliku na symlink

fd = open

(

file

,

 O_RDONLY

);

background image

48

 

HAKIN9 7-8/2008

49

 

HAKIN9 

7-8/2008

zaprezentowanego w książce przykładu 
oraz przetestował powstały z niego program 
komputerowy. Defekt był bardzo subtelny 
i niełatwy do zauważenia, ponieważ 
występował tylko wtedy, gdy program 
wykonywano dla bardzo dużych ilości danych. 

Błąd popełnił wybitny naukowiec w bardzo 

popularnej i wysoko cenionej książce, na 
której wychowały się pokolenia informatyków 
na całym świecie (książkę przetłumaczono 
na wiele języków, m.in. polski), dostępnej 
w każdej bibliotece akademickiej, a nawet 
wielu osiedlowych. Wadliwy algorytm mieli 
przed oczami najlepsi z najlepszych: ludzie, 
którzy dziś są profesorami, szefami zespołów 
programistycznych, zwycięzcami olimpiad 
informatycznych i międzynarodowych 
zawodów w programowaniu, autorami 
podręczników akademickich, współtwórcami 
używanego przez nas wszystkich 
oprogramowania, pracującymi dla 
największych i najlepszych na świecie firm 
i uczelni. I mimo to trzeba było dwudziestu 
lat, żeby ktoś wreszcie odkrył, że w tej 
klasycznej książce, znanej niemal każdemu 
informatykowi, szkielet bardzo popularnej 
klasy algorytmów zawiera błąd. 

Jednak jeszcze bardziej szokujący 

w tej sprawie może wydawać się fakt, że 
błędny okazał się program realizujący 
algorytm, dla którego przeprowadzono 
matematyczny dowód poprawności. Jak to 
możliwe? Czyżby dowód był niepoprawny? 
Nic podobnego. Rzecz w tym, że tego 
typu dowodów nie przeprowadza się 
dla prawdziwych komputerów, tylko dla 
któregoś z ich matematycznych modeli, z 

których najpopularniejszym jest Maszyna 
Turinga. Modele, jak wiadomo, są pewnym 
uproszczonym przybliżeniem rzeczywistości. 
Maszynie Turinga, na przykład, nigdy nie 
zabraknie pamięci, nie przepełni się zmienna, 
nie wystąpi tam błąd dyskowy i wiele innych 
rzeczy, które w prawdziwych programach 
komputerowych doprowadzają niekiedy do 
bardzo poważnych konsekwencji. 

Czym innym jest zatem dowód 

poprawności algorytmu, a czym innym 
dowód poprawności jego implementacji. Tych 
drugich współczesna informatyka jeszcze się 
nie dorobiła. Potrafimy wykazać, że program 
dla określonych danych przy odpowiednich 
założeniach wykona się poprawnie. Nie 
potrafimy natomiast wykazać, że program 
wykona się poprawnie dla dowolnych danych 
w dowolnych warunkach. 

Nie ma 

ucieczki przed niepewnością

Testowanie oprogramowania odbywa 
się obecnie metodą eksperymentalną. 
Jeśli program zadziałał w określonych 
warunkach dla określonych danych w 
środowisku testowym, to zadziała też w 
takich samych warunkach dla tych samych 
danych gdzie indziej. Ta metoda ma jednak 
istotną wadę. Przy skali skomplikowania 
dzisiejszego oprogramowania, ilość 
możliwych przypadków jest astronomiczna 
i przetestowanie wszystkich w sensownym 
czasie jest niemożliwe. Teoretycznie powinno 
wystarczyć przetestowanie rozsądnie 
dobranego podzbioru przypadków i tu jest 
właśnie pies pogrzebany. Wystarczy bowiem 
przeoczyć jedną możliwość, jedną małą 
igiełkę w kolosalnym stogu siana. 

Program, który spowodował brak prądu 

w USA, działał wcześniej poprawnie przez 
ponad trzy miliony godzin. Osiem tygodni po 
awarii udało się odtworzyć błąd. Okazało się, 
że prawdopodobieństwo jego wystąpienia 
było minimalne, określone zdarzenia musiały 
wystąpić w odpowiedniej kolejności w oknie 
czasowym mierzonym w milisekundach. Nic 
więc dziwnego, że ani testy, ani wieloletnia 
eksploatacja produkcyjna go nie wykryły. 

W tym przypadku najprawdopodobniej 

mamy do czynienia ze zwykłym błędem 
programistycznym. Możemy sobie jednak 
wyobrazić, że ktoś celowo wprowadza 
tego typu błąd do jakiegoś krytycznego 
oprogramowania. Kiedy tak sprytnie 
spreparowany koń trojański trafi do produkcji, 

napastnik będzie mógł zdetonować bombę 
poprzez drobną zmianę środowiska 
produkcyjnego – tak, aby odpowiednie 
zdarzenia zaszły w odwrotnej niż typowa 
kolejności. 

Innym rozwiązaniem (o klasę 

trudniejszym) detonacji mogłoby być 
uzależnienie wyniku wyścigu np. od wykonania 
jakiegoś zapytania bazodanowego. Wraz 
z postępującym zasilaniem bazy danych 
zapytania na niej robiłyby się coraz wolniejsze 
– aż w końcu, np. w dniu szczególnego 
obciążenia bazy, czas wykonania zapytania 
byłby dostatecznie długi, by spowodować błąd 
krytyczny aplikacji. Tym samym powstałaby 
bomba z opóźnionym zapłonem. Napastnik 
musiałby się jednak trochę napracować, żeby 
taki defekt nie został wykryty podczas testów 
skalowalności. 

Sytuacje wyścigu wydają się świetnie 

pasować do takiego scenariusza. Przyłapany 
napastnik zawsze mógłby się wytłumaczyć, 
że zwyczajnie popełnił błąd – niełatwo byłoby 
mu udowodnić celowość takiego działania. 
Trudność wykrycia sytuacji wyścigu dawałaby 
spore szanse na przetrwanie fazy testowania, 
nawet gdyby ta była przeprowadzana bardzo 
skrupulatnie. Jeśli okno wystąpienia problemu 
nie jest duże, prawdopodobieństwo trafienia w 
nie podczas testów będzie minimalne. 

W dodatku sytuacje wyścigu mogą 

mieć charakter heisenbugów. Heisenbugi to 
żartobliwe określenie pewnej klasy błędów, 
charakteryzujących się tym, że zachowują 
się inaczej (bądź w ogóle nie występują), 
gdy są namierzane. Skompilowanie 
projektu w trybie debug powoduje 
dodanie do plików wynikowych dodatkowej 
informacji dla debuggera. Samo działanie 
debuggera również zmienia środowisko, 
w jakim wykonywany jest program. 
Inne programy śledzące, w tym różne 
monitory SQL, rejestru, plików itd. również 
powodują spowolnienie wykonywania się 
określonych operacji (głównie tych, które są 
monitorowane, ale nie tylko). 

Zatem de facto warunki wykonania 

programu są trochę inne, gdy określone 
parametry są kontrolowane, i inne w 
przeciwnym wypadku. Jeśli od którejś z tych 
rzeczy zależy poprawne (bądź nie) wykonanie 
programu, sam fakt obserwacji wpłynie na 
wynik. Zjawisko tego typu nazywa się efektem 
obserwatora
, choć tu nazwę zapożyczono 
od zasady nieoznaczoności Heinsenberga 
– mimo, iż ta mówi o czymś innym. 

Rysunek 1. 

Okno ataku na proces 

ofiary mieści się w czasie pomiędzy 

weryfikacją uprawnień, a ich rzeczywistym 

wykorzystaniem

����

����������

����������

����������

�����������

�������������

������

���������

OBRONA

background image

48

 

HAKIN9 7-8/2008

49

 

HAKIN9 

7-8/2008

Złośliwi programiści

Taka ciekawa klasa błędów dla jednych jest 
utrapieniem, a dla innych błogosławieństwem. 
Zapewne każdy autor wirusa, konia 
trojańskiego czy dowolnego innego 
złośliwego kodu chciałby, aby jego dzieło było 
niewykrywalne. 

Ken Thompson w swoim klasycznym 

artykule zaprezentował technikę ukrycia 
złośliwego kodu, która nie daje się wykryć 
w kodzie źródłowym programu (bo go tam 
zwyczajnie nie ma), ale też nie znika gdy kod 
zostanie przekompilowany! Konsekwencje 
są bardzo daleko idące, m.in. zaufanie, 
jakie możemy mieć do oprogramowania 
open source, a więc i do możliwości 
przeprowadzenia własnego audytu kodu 
może być w niektórych przypadkach 
przeceniane. 
Idea jest następująca: należy zainfekować 
kompilator w taki sposób, aby do naszego 
programu-ofiary zawsze dodawał odpowiedni 
złośliwy kod. Następnie kompilujemy ofiarę. 
W tym momencie mamy już zainfekowany 
program oraz zabezpieczoną podstawową 
ścieżkę wykrycia tego faktu. Cóż jednak 
będzie, jeśli użytkownik tak spreparowanego 
systemu postanowi przekompilować 
kompilator? Thompson pomyślał i o tym. Kod 
infekujący kompilator proponuje potraktować 
analogicznie jak właściwy kod złośliwy. A więc 
w systemie miałyby zostać umieszczone 
binaria kompilatora wzbogacone o dwie 
nowe cechy: wykrycie faktu autokompilacji 
i dołączenie do plików wynikowych całego 
złośliwego pakietu funkcji, oraz wykrycie faktu 
kompilacji programu-ofiary i dołączenie do 
jego plików wynikowych właściwego kodu 
złośliwego. 
W ten sposób można przygotować taki 
system, w którym będzie działać jakiś 
arbitralny kod w programie open source, 
przekompilowanym przez kompilator open 
source, nawet jeśli sam kompilator zostanie 
przekompilowany (ale tylko przez siebie), bez 
najmniejszego śladu w źródłach! 
Złośliwy kod naturalnie będzie obecny 
w plikach binarnych i tam można go 
podejrzeć. Jeśli jednak sama złośliwość 

jest trudnowykrywalna (np. dlatego, że jest 
nią właśnie sytuacja wyścigu) i dodatkowo 
posłużono się innymi znanymi technikami 
zaciemniania kodu wynikowego, to w 
połączeniu z opisaną w tym podrozdziale 
metodą otrzymamy bombę logiczną, której 
wykrycie będzie wybitnie trudne nawet dla 
wysokiej klasy fachowca. 

Podsumowanie

Jeśli więc tak trudno jest wykryć błędy 
wynikające z sytuacji wyścigu, to nie 
sposób nie zadać sobie pytania, ile tego 
typu błędów znajduje się w używanym 
przez nas oprogramowaniu? Czy nam 
też może zgasnąć światło, a z nim wiele 
innych zależnych od prądu urządzeń? 
Czy powinniśmy obawiać się każdego 
przejeżdżającego obok nas samochodu, 
każdego przelatującego nad nami samolotu? 
Czy możemy mieć zaufanie do sprzętu 
medycznego w szpitalach? Czy możemy 
bezpiecznie powierzyć nasze pieniądze 
bankom?  Spokojnie, nie ma powodów do 
paniki. Oprogramowanie nie nawala wcale 
znacząco częściej, niż inne istotne dla 
naszego życia wynalazki. Informatyka jest 
jeszcze bardzo młodą dziedziną wiedzy, ale 
bardzo szybko się rozwija. Powstają coraz 
lepsze języki i techniki programowania, które 
uniemożliwiają występowanie całych kategorii 
błędów. Poza tym najważniejsze systemy 
informatyczne tworzy się ze szczególną 
starannością i z uwzględnieniem ich 
potencjalnej awaryjności. Niektóre z nich mają 
znaną m.in. z techniki wojskowej cechę zwaną 
tolerancją uszkodzeń, a więc zdolnością do 
poprawnego działania całego systemu, nawet 
gdy dany jego element zawiódł. 

Statystyka mówi, że w szpitalu dużo 

większe ryzyko grozi nam ze strony lekarzy 
niż skomputeryzowanej maszynerii. 
Większość katastrof lotniczych powodują 
jednak błędy ludzi, a nie maszyn. Podobnie 
jest z wypadkami samochodowymi. Tak 
więc nawet przy całej niedoskonałości 
komputerów, już dziś są one dużo bardziej 
niezawodne niż ludzie. 

W Sieci

Na tej stronie znajdziemy trywialny przykład 
sytuacji wyścigu w dostępie do zasobu:
http://docs.linux.cz/programming/c/unix_
examples/race.html

Cezary G. Cerekwicki

Autor z wykształcenia jest informatykiem i politologiem. 

Pracował jako projektant, programista, administrator, 

konsultant, tłumacz, koordynator międzynarodowych 

projektów, dziennikarz i publicysta. Pisał programy w 

dziesięciu językach programowania (od asemblerów 

po języki skryptowe) w czterech systemach 

operacyjnych, na dwóch platformach sprzętowych.

Kontakt z autorem: cerekwicki@tlen.pl

background image

50

 

OBRONA

HAKIN9 7–8/2008

artykule tym zajmę się prezentacją 
rozwiązań pozwalających na 
bezpieczną komunikację pomiędzy 

urządzeniami mobilnymi, wyposażonymi w 
mobilną wersję systemu Windows, a zasobami 
chronionej sieci firmowej. 

Po stronie urządzenia do komunikacji 

wykorzystywane będzie jedynie oprogramowanie 
dostępne w systemie Windows Mobile lub 
darmowe oprogramowanie dostępne w Sieci. 
Po stronie sieci firmowej zaś – zależnie od 
konfiguracji – wykorzystany zostanie system 
Linux, system Windows 2003 Serwer, a także 
– bardzo ciekawe ze względu na wsparcie dla 
urządzeń mobilnych – sprzętowe rozwiązanie 
firmy WatchGuard.

System operacyjny Windows Mobile zapewnia 

użytkownikom tylko 2 sposoby zestawienia 
bezpiecznego połączenia. Są nimi: tunelowanie 
IPSec/L2TP (jako, że jest to rozwiązanie firmy 
Microsoft, pojawienie się tej pary nie powinno 
nikogo dziwić) oraz PPTP.

Windows 2003 Server

Prezentację metod bezpiecznego dostępu do 
firmowych zasobów sieci chronionej zacznę 
od naturalnego powiązania systemu Windows 
Mobile oraz Windows 2003 Server. Zaprezentuję 
tutaj najprostszy sposób zestawiania tuneli VPN 
pomiędzy urządzeniem mobilnym a serwerem. 
Użytkowników bardziej wymagających odsyłam 
do artykułu zamieszczonego w Microsoft 

MARCIN KLAMRA

Z ARTYKUŁU 

DOWIESZ SIĘ

jak zabezpieczyć dostęp 

urządzeń mobilnych do 

zasobów sieci chronionej 

z wykorzystaniem systemu 

Windows, Linux oraz 

dedykowanych rozwiązań 

sprzętowych.

CO POWINIENEŚ 

WIEDZIEĆ

czym są tunele VPN,

jak działają protokoły IPSec, 

L2TP, PPTP,

jak działa tunelowanie SSL,

jak działa system Windows 

Mobile,

znać podstawy działania sieci 

komputerowych,

znać podstawy konfiguracji 

systemów Windows oraz Linux.

TechNet (pierwszy link w ramce W Sieci), gdzie 
szerzej omówione są zagadnienia instalacji oraz 
konfiguracji zdalnego dostępu z wykorzystaniem 
tandemu L2TP/IPSec

Zacznijmy od przygotowania serwera do 

przyjmowania połączeń PPTP. Pierwszą kwestią 
jest stworzenie konta użytkownika, który będzie 
miał prawo tworzenia tunelu VPN. Po utworzeniu 
konta użytkownika w jego właściwościach 
(Rysunek 1) w zakładce Telefonowanie w polu 
Uprawnienie usługi Dostęp zdalny należy 
zaznaczyć opcję Zezwalaj na dostęp

Kolejną czynnością konfiguracyjną jest 

zainstalowanie w systemie Windows 2003 Server 
roli serwera dostępu zdalnego i sieci VPN. Po jej 
zainstalowaniu w Narzędziach Administracyjnych 
pojawi się przystawka Routing i dostęp zdalny
Po uruchomieniu przystawki i dodaniu serwera 
należy kliknąć prawym przyciskiem myszy na 
ikonę serwera (Rysunek 2) i uruchomić kreatora 
Konfiguruj i włącz routing i dostęp zdalny. W 
pierwszym oknie klikamy Dalej, następnie 
wybieramy opcję „Dostęp zdalny (połączenie 
telefoniczne lub sieć VPN)
 i ponownie naciskamy 
Dalej (Rysunek 3). W kolejnym oknie (Rysunek 4) 
wybieramy opcję Serwer sieci VPN i naciskamy 
Dalej. Następnie wybieramy z listy zewnętrzny 
interfejs sieciowy komputera i znów klikamy Dalej
Przypisywanie adresów IP najlepiej zdefiniować 
jako przypisywanie z określonego zakresu. Po 
kolejnym wyborze przycisku Dalej pojawi się 
okno, w którym można zdefiniować ten zakres. 

Stopień trudności

Mobilna 

ochrona

Urządzenia mobilne zyskują coraz większą popularność. Trudno 

sobie wyobrazić dziś firmę, w której pracownicy nie posiadają 

urządzeń mobilnych, wyposażonych w bezprzewodowy interfejs 

sieciowy, pracujących pod kontrolą systemu Windows Mobile. 

Problem w tym, by komunikację tych urządzeń z siecią firmową 

uczynić bezpieczną.

background image

51

 

MOBILNA OCHRONA

HAKIN9 

7–8/2008

Należy wpisać tutaj zakres prywatnej puli 
adresów, jakie mają być przydzielane 
dla klientów mobilnych (Rysunek 5). Po 
naciśnięciu przycisku Nowy należy podać 
zakres. Może to być na przykład pula od 
192.168.10.10 do 192.168.10.19. Klikamy 
przycisk Dalej i wybieramy opcję Nie, użyję 
usługi routingu i dostępu zdalnego do 
uwierzytelniania żądań połączeń
 (Rysunek 
6). Klikamy Dalej, a następnie Zakończ
W tym momencie możliwe jest już 
zestawienie połączenia PPTP dla klienta 
mobilnego.

Przejdźmy zatem do konfiguracji 

urządzenia mobilnego. Z menu Start 
należy wybrać Ustawienia i przejść do 
zakładki Połączenia. Następnie należy 
kliknąć ikonę Połączenia. W zakładce 
Zaawansowane musimy nacisnąć 
przycisk Wybierz Sieci. W oknie 
Zarządzanie siecią trzeba teraz utworzyć 
nowy profil dla programów łączących się 
z siecią prywatną – poprzez naciśnięcie 
przycisku Nowe w dolnej części ekranu. 
W zakładce Ogólne musi zostać podana 
nazwa dla tego profilu np. siec firmowa. 
W zakładce VPN należy nacisnąć 
przycisk Nowe. Spowoduje to otwarcie 
kreatora tworzenia nowej sieci VPN. 
W polu Nazwa trzeba wpisać nazwę 
przypisaną dla tego połączenia VPN (np. 
VPN do sieci firmy), w polu Nazwa/adres 
IP hosta
 należy podać adres IP serwera 
Windows 2003. W moim przypadku był 

to adres 192.168.10.1. Jako typ sieci VPN 
należy wybrać PPTP. Klikamy przycisk 
Dalej i w kolejnym oknie podajemy nazwę 
oraz hasło dla użytkownika utworzonego 
na serwerze Windows 2003. Klikamy 
przycisk Zakończ, a następnie przycisk 
OK i ponownie OK. W oknie Połączenia 
w zakładce Zadania wybieramy Edytuj 
moje serwery VPN
. W oknie Ustawienia 
należy przytrzymać rysik na nazwie 
połączenia VPN (w tym przypadku 
VPN do sieci firmy) i wybrać z menu 
kontekstowego opcję Połącz. W tym 
momencie zestawiony zostaje tunel PPTP 
dla urządzenia mobilnego.

Zmodyfikujemy teraz tak Windows 

2003 Server, aby zdolny był do 
przyjmowania połączeń L2TP/IPSec 
zabezpieczonych współdzielonym 
hasłem. W przystawce Routing i dostęp 
zdalny
 należy prawym przyciskiem 
myszy kliknąć ikonę serwera i z menu 
kontekstowego wybrać opcję Właściwości 
(Rysunek 7). W zakładce Zabezpieczenia 
należy zaznaczyć opcję Zezwalaj na 
niestandardowe zasady IPSec dla 
połączeń L2TP
 i podać klucz wstępny 
– np. ipsecl2tp (Rysunek 8).

Konieczna jest także zmiana 

konfiguracji klienta. W porównaniu z 
konfiguracją dla połączeń PPTP konieczna 
jest jedynie jedna zmiana, a mianowicie 
w miejscu wyboru typu sieci VPN należy 
zamiast PPTP wybrać IPSec/L2TP. Po 

naciśnięciu przycisku Dalej pojawi się 
okno wyboru uwierzytelniania. Należy 
tutaj wybrać opcję Klucza wstępnego i 
wpisać ten sam klucz, który podany został 
w konfiguracji serwera, a więc ipsecl2tp
Pozostałe kroki konfiguracji są identyczne 
jak dla tunelu PPTP. Po dokończeniu 
konfiguracji możliwe jest już zestawienie 
tunelu IPSec/L2TP VPN.

Linux – L2TP/IPSec

Windows Mobile wyposażony jest jedynie 
w oprogramowanie pozwalające na 
zestawianie tuneli VPN z wykorzystaniem 
tylko protokołów L2TP/IPSec oraz PPTP. 
W związku z powyższym zaprezentuję 
teraz możliwość wykorzystania systemu 
Linux do terminowania tuneli VPN z 
wykorzystaniem pary L2TP/IPSec. Bardziej 
naturalnym rozwiązaniem dla systemu 
Linux jest wykorzystanie czystych tuneli 
IPSec, niestety system Windows Mobile 
nie wspiera takiego rozwiązania.

Prezentowane rozwiązanie dla systemu 

Linux wykorzystuje trzy elementy składowe: 
protokół IPSec i demona pozwalającego 
na zestawianie połączeń IPSec, protokół 
L2TP wraz z odpowiednim demonem i 
wreszcie demona PPP. Protokół IPSec 
zapewnia bezpieczeństwo połączenia, 
L2TP wraz z PPP zapewnia autoryzację 
i tunelowanie ruchu. Zestawiany tunel 
będzie autoryzowany z wykorzystaniem 
współdzielonego klucza i będzie wymagał 
autoryzacji użytkownika.

Pierwszą kwestią jest instalacja obsługi 

IPSec w systemie Linux. Nie będę się tą 
kwestią zajmował, jako że można znaleźć 
masę podręczników traktujących na ten 
temat. W szczególności zachęcam do lektury 
materiałów zamieszczonych na stronie 
Openswan (trzeci link w ramce W Sieci). 

W niniejszym artykule przytoczę 

jednak konfigurację pakietu openswan 
pozwalającą na zestawianie tuneli IPSec. 
Konfiguracja ta składa się z dwóch plików. 
Plik ipsec.conf (Listing 1) przechowuje 
ustawienia serwera IPSec, natomiast plik 
ipsec.secrets (Listing 2) zawiera elementy 
wymagane do autoryzacji tuneli.

Poniżej zawarty jest opis 

poszczególnych elementów pliku 
ipsec.conf:

•  

version 2.0

 – oznacza wersję pliku 

konfiguracyjnego,

Listing 1. 

Plik /etc/ipsec.conf

version 2.0
config setup
        interfaces=

%defaultroute

        plutodebug=none
        nat_traversal=yes
conn L2TP–PSK
        auth=esp
        authby=secret
        compress=yes
        keyexchange=ike
        auto=add
        left=

%defaultroute

        leftprotoport=17/1701
        right=

%any

        rightprotoport=17/1701
        pfs=no

include

 /etc/ipsec.d/examples/no_

oe.conf

Listing 2. 

Plik /etc/ipsec.secrets

: RSA /etc/ipsec.d/private/Key.pem
192.168.10.1 : PSK 

"tajny_klucz"

Listing 3. 

Plik /etc/xl2tpd/xl2tpd.conf

[

global

]

listen–addr = 192.168.10.1
port = 1701

[

lns 

default

]

ip range = 192.168.11.198–192.168.11.250
local ip = 192.168.10.1

require

 chap = yes

refuse pap = yes

require

 authentication = yes

name = LinuxVPNserver
pppoptfile = /etc/ppp/options

Listing 4. 

Plik /etc/ppp/options

require

–mschap–v2

auth
mtu 500
mru 500

Listing 5. 

Plik /etc/ppp/chap–secrets

user  *       

"tajne_haslo"

      

192.168.11.210

background image

OBRONA

52

 

HAKIN9 7–8/2008

MOBILNA OCHRONA

53

 

HAKIN9 

7–8/2008

•  

config setup

 – definiuje początek 

sekcji wspólnej pliku konfiguracyjnego,

•  

interfaces=%defaultroute

 

– określa, iż zewnętrzny interfejs 
sieciowy będzie interfejsem, na którym 
zestawiane będą tunele VPN, 

•  

plutodebug=none

 – definiuje poziom 

szczegółowości logowania,

•  

nat _ traversal=yes

 – określa 

możliwość łączenia się klientów, którzy 
pracują za NAT’em,

•  

conn L2TP–PSK

 – definiuje początek 

sekcji konfiguracji dla połączenia 
L2TP–PSK, a więc połączenia dla 
tunelu wykorzystującego protokół L2TP 
i współdzielony klucz do autoryzacji,

•  

auth=esp

 – wybór protokołu 

zabezpieczającego dane w IPSec (AH 
lub ESP),

•  

authby=secret

 – określa sposób 

autoryzacji na wykorzystującą 
współdzielony klucz,

•  

compress=yes

 – włącza kompresję,

•  

keyexchange=ike

 – wymusza 

wykorzystanie protokołu IKE do 
uzgodnienia kluczy,

•  

auto=add

 – domyślna akcja dla tego 

połączenia to załadowanie konfiguracji 
i oczekiwanie na połączenie,

•  

left=%defaultroute

 – określa 

adres lewej strony połączenia na 
adres zewnętrznego interfejsu 
sieciowego,

•  

leftprotoport=17/1701

 – określa 

protokół oraz port lewej strony 
połączenia (UDP/L2TP),

•  

right=%any

 – określa adres prawej 

strony połączenia jako dowolny adres 
– jest to konieczne, bowiem nigdy nie 

wiadomo, z jakiego adresu urządzenie 
mobilne zestawiać będzie tunel,

•  

rightprotoport=17/1701

 – określa 

protokół oraz port prawej strony 
połączenia (UDP/L2TP),

•  

pfs=no

 – wyłącza PFS,

•  

include /etc/ipsec.d/examples/
no _ oe.conf

 – wyłącza tzw. 

oportunistyczne szyfrowanie.

W pliku ipsec.secrets znajdują się tylko 
dwie linie. Pierwsza z nich określa ścieżkę 
do pliku zawierającego prywatny klucz 

RSA. Druga, która interesuje nas znacznie 
bardziej, definiuje współdzielony klucz 
dla autoryzacji tunelu. Adres IP oznacza 
adres IP lewej strony tunelu – czyli 
komputera, na którym konfigurowana jest 
ta usługa.

Kolejnym krokiem jest instalacja 

oraz konfiguracja demona protokołu 
L2TP, którym może być 

xl2tpd.

 

Po jego pobraniu (czwarty link w 
Ramce W Sieci) należy dokonać jego 
dekompresji, kompilacji (polecenie 

make

i instalacji (polecenie 

make install

). 

Rysunek 2. 

Włączenie routingu i dostepu zdalnego

Rysunek 3. 

Dostep zdalny

Rysunek 1. 

Konfiguracja właściwości 

użytkownika

background image

OBRONA

52

 

HAKIN9 7–8/2008

MOBILNA OCHRONA

53

 

HAKIN9 

7–8/2008

Po umieszczeniu konfiguracji w pliku 

/etc/xl2tpd/xl2tpd.conf

 (Listing 

3), uruchomienia demona dokonuje się 
poprzez wydanie polecenia 

xl2tpd –c 

/etc/xl2tpd/xl2tpd.conf

.

Poniżej zaprezentowany jest opis 

konfiguracji 

demona xl2tpd

:

•  

[global]

 – definiuje początek sekcji 

globalnej konfiguracji,

•  

listen–addr = 192.168.10.1

 

– określa adres IP, na którym demon 
będzie nasłuchiwał (jest to adres 
zewnętrznego interfejsu sieciowego 
komputera),

•  

port = 1701

 – określa port, na którym 

nasłuchuje demon,

•  

[lns default]

 – definiuje początek 

sekcji domyślnej konfiguracji,

•  

ip range = 192.168.11.198–
192.168.11.250

 – definiuje pulę 

adresów IP, jakie przypisywane będą 
klientom mobilnym,

•  

local ip = 192.168.10.1

 – określa 

lokalny adres IP połączenia,

•  

require chap = yes

 – wymusza 

autoryzację CHAP,

•  

refuse pap = yes

 – zabrania 

używania autoryzacji PAP,

•  

require authentication = yes

 – 

wymaga przeprowadzenia autentykacji 
klienta mobilnego,

•  

name = LinuxVPNserver

 – określa 

nazwę połączenia,

•  

pppoptfile = /etc/ppp/options

 

– definiuje ścieżkę dostępu do pliku z 
opcjami demona ppp.

•   Ostatni element konfiguracji obejmuje 

definicję opcji konfiguracyjnych dla 
demona ppp oraz stworzenie pliku 
z hasłami dla użytkowników. Opcje 
zawarte są w pliku 

/etc/ppp/options

 

(Listing 4):

•  

require–mschap–v2

 – wymaga 

autoryzacji CHAP w wersji 2,

•  

auth

 – wymaga autoryzacji, zanim 

przesłane zostaną jakiekolwiek pakiety,

•  

mtu 500

 – definiuje maksymalną 

jednostkę transmisyjną na 500 bajtów,

•  

mru 500

 – definiuje maksymalną 

jednostkę odbioru na 500 bajtów.

W pliku 

/etc/ppp/chap–secrets

 (Listing 

5) określa się nazwy użytkowników oraz 
ich hasła. Dodatkowo w 4 kolumnie 
tego pliku można przypisać adres IP dla 
danego klienta mobilnego.

Konfiguracja klienta mobilnego 

przebiega w dokładnie taki sam sposób, 
jak w przypadku serwera działającego w 
systemie Windows 2003 Server.

Linux – SSL

Kolejnym sposobem na zabezpieczenie 
komunikacji pomiędzy urządzeniem 
mobilnym a chronionymi zasobami 
sieci firmowej jest wykorzystanie 
tunelowania SSL. Najbardziej popularnym 
darmowym rozwiązaniem tego typu 

jest oprogramowanie OpenVPN (szósty 
link w ramce W Sieci), pozwalające 
na skonfigurowanie serwera tej usługi 
zarówno dla systemu Linux, jak i Windows. 
W tym artykule przedstawię konfigurację 
dla systemu Linux. 

System Windows Mobile nie wspiera 

tunelowania SSL. Dostępny jest jednak 
darmowy klient oprogramowania 
OpenVPN przeznaczony dla tego systemu 
mobilnego (drugi link w Ramce W Sieci).

Podobnie, jak dla poprzedniej 

konfiguracji, nie będę opisywał tutaj 
procesu instalacji oprogramowania ani 
na serwerze, ani na urządzeniu mobilnym, 
skupię się natomiast na konfiguracji 
obu stron połączenia. Proces instalacji 
przedstawiony jest w dokumentacji na 
stronach internetowych obu projektów. 
Dokumentacja instalacji zawiera także 
między innymi opis procesu generowania 
plików zawierających klucze prywatne oraz 
certyfikaty, niezbędne do autoryzacji stron 
połączenia.

Tworzone tunele będą rutowalnymi 

tunelami IP. Cały ruch generowany 
przez urządzenie mobilne tunelowany 
będzie do serwera usługi. Użytkownicy 
autoryzowani będą z wykorzystaniem 
certyfikatów, a sam tunel dodatkowo 
zabezpieczony zostanie także statycznym 
kluczem.

Na Listingu 6. przedstawiony jest 

plik konfiguracyjny serwera OpenVPN 
pracującego w systemie Linux. Plik ten 
domyślnie zapisany jest w lokalizacji 

/etc/OpenVPN/server.conf

Listing 6. 

Plik /etc/OpenVPN/server.conf

local 192.168.10.1
port 1194
proto udp
dev tun
ca /etc/OpenVPN/keys/ca.crt
cert /etc/OpenVPN/keys/server.crt
key /etc/OpenVPN/keys/server.key  
dh /etc/OpenVPN/keys/dh2048.pem
server 10.10.10.0 255.255.255.0
ifconfig–pool–persist ipp.txt
push 

"redirect–gateway def1"

push 

"dhcp–option DNS 192.168.10.5"

keepalive 10 120
tls–auth ta.key 0
comp–lzo

max

–clients 30

persist–key
persist–tun
status OpenVPN–status.log

Rysunek 4. 

Serwer sieci VPN

background image

OBRONA

54

 

HAKIN9 7–8/2008

MOBILNA OCHRONA

55

 

HAKIN9 

7–8/2008

Znaczenie poszczególnych elementów 

konfiguracji jest następujące:

•  

local 192.168.10.1

 – oznacza 

adres IP, na którym serwer nasłuchuje 
na połączenia – przykładowy adres 
na potrzeby tego artykułu należy do 
puli adresów prywatnych, choć z 
oczywistych względów zawsze będzie 
to adres publiczny,

•  

port 1194

 – określa port, na którym 

serwer nasłuchuje na połączenia; port 
1194 jest standardowym portem, na 
którym pracuje OpenVPN,

•  

proto udp

 – definiuje protokół, z jakiego 

korzysta serwer OpenVPN (może tutaj 
pojawić się także protokół TCP),

•  

dev tun

 – oznacza, iż tworzony tunel 

jest rutowalnym tunelem IP,

•  

ca /etc/OpenVPN/keys/
ca.crt

 – definiuje położenie pliku 

zawierającego certyfikat centrum 
certyfikującego podpisującego 
certyfikaty służące do autoryzacji 
serwera oraz użytkowników,

•  

cert /etc/OpenVPN/keys/
server.crt

 – definiuje położenie pliku 

zawierającego certyfikat serwera,

•  

key /etc/OpenVPN/keys/
server.key

 – definiuje położenie pliku 

zawierającego klucz prywatny serwera,

•  

dh /etc/OpenVPN/keys/
dh2048.pem

 – definiuje położenie 

pliku zawierającego parametry dla 
algorytmu Diffie’go–Hellman’a,

•  

server 10.10.10.0 255.255.255.0

 

– określa sieć prywatną, jaka dostępna 
będzie dla klientów mobilnych. 
Pierwszy adres w tej sieci (w tym 
przypadku 10.10.10.1) będzie przypisany 
serwerowi, pozostałe adresy zostaną 
rozdysponowane pomiędzy klientów 
mobilnych,

•  

ifconfig–pool–persist ipp.txt

 

– określa położenie pliku, w którym 
zapisywane są adresy IP przypisane 
do poszczególnych klientów 
– pozwala to na przypisanie danemu 
użytkownikowi zawsze tego samego 
adresu IP,

•  

push "redirect–gateway def1"

 

– określa, iż cały ruch z urządzenia 
mobilnego ma być tunelowany do 
serwera,

•  

push "dhcp–option DNS 
192.168.10.5"

 – określa adres 

IP serwera DNS, jaki ma zostać 
skonfigurowany dla urządzenia 
mobilnego,

•  

keepalive 10 120

 – definiuje 

częstość wysyłania pakietów 
sprawdzających, czy tunel jest ciągle 
zestawiony; pakiety te wysyłane są co 
10 sekund, a brak odpowiedzi przez 
120 sekund oznacza, iż komunikacja 
została zerwana,

•  

tls–auth ta.key 0

 – określa 

położenie pliku zawierającego 
dodatkowy klucz statyczny 
zabezpieczający połączenie, druga 

wartość w przypadku serwera zawsze 
musi być równa 0, w przypadku klienta 
zaś 1,

•  

comp–lzo

 – zezwala na kompresję 

tunelowanego ruchu,

•  

max–clients 30 

– definiuje 

maksymalną ilość jednocześnie 
podłączonych klientów,

•  

persist–key

 – pozwala ponownie 

nie odczytywać kluczy po restarcie 
serwera,

•  

persist–tun

 – pozwala ponownie nie 

konfigurować wirtualnego interfejsu tun 
po restarcie serwera,

•  

status OpenVPN–status.log

 

– określa położenie pliku, w którym 
co minutę umieszczany jest spis 
aktualnych połączeń.

Listing 7. prezentuje plik konfiguracyjny 
umieszczony na urządzeniu mobilnym. 
Bardzo istotnym elementem tego pliku 
jest sposób definiowania ścieżek dostępu 
do plików z kluczami oraz certyfikatami. 
Standardowo plik ten powinien zostać 
zapisany w lokalizacji \Program 
Files\OpenVPN\config
. Znaczenie 
poszczególnych elementów konfiguracji, 
nie prezentowanych wcześniej, jest 
następujące:

•  

client

 – oznacza, że jest to 

konfiguracja klienta i że pewne 
parametry konfiguracyjne będą 
pobierane z serwera,

Rysunek 5. 

Określanie puli adresowej dla połączeń mobilnych

Listing 7. 

Konfiguracja OpenVPN dla 

klienta

client
dev tun
proto udp
remote 192.168.10.1 1194
resolv–retry infinite
nobind
persist–key
persist–tun
ca 

"

\\

Program Files

\\

OpenVPN

\\

config

\\

ca1.crt"

cert 

"

\\

Program Files

\\

OpenVPN

\\

config

\\

mklamra1.crt"

key 

"

\\

Program Files

\\

OpenVPN

\\

config

\\

mklamra1.key"

ns–cert–type server
tls–auth 

"

\\

Program Files

\\

OpenVPN

\\

config

\\

ta1.key"

 

1

comp–lzo
verb 3

background image

OBRONA

54

 

HAKIN9 7–8/2008

MOBILNA OCHRONA

55

 

HAKIN9 

7–8/2008

•  

remote 192.168.10.1 1194

 – definiuje 

adres (lub nazwę) serwera oraz port, 
na jakim ten nasłuchuje,

•  

resolv–retry infinite

 – pozwala 

na nieskończone próbowanie 
odwzorowania nazwy serwera na adres 
IP,

•  

nobind

 – oznacza brak konieczności 

pracy klienta na określonym porcie,

•  

ns–cert–type server

 – informuje, iż 

pole nsCertType w certyfikacie serwera 
ustawione jest na wartość server
pozwala to na ochronę przed atakami 
pewnego typu,

•  

verb 3

 – definiuje poziom 

szczegółowości logowania.

Zestawienie tunelu po zainstalowaniu 
aplikacji OpenVPN przeznaczonej dla 
systemu Windows Mobile jest bardzo 
proste. Należy kliknąć na ikonę aplikacji 
znajdującą się w prawym dolnym 
rogu ekranu, a następnie w menu 
Uruchom z konfiguracji trzeba wybrać 
odpowiednią konfigurację, którą chcemy 
wykorzystać do zestawienia tunelu. 
Następnie konieczne jest podanie hasła 
zabezpieczającego klucz prywatny. 
Należy tu wspomnieć, iż możliwe 
jest jednoczesne korzystanie z kilku 
konfiguracji aplikacji OpenVPN.

Urządzenia firmy 

WatchGuard – SSL

Bardzo wiele rozwiązań sprzętowych, 
służących do zabezpieczania sieci 
komputerowych, umożliwia zestawianie 
tuneli VPN. Zdecydowana większość z 
nich oferuje jednak zestawianie tuneli 
z wykorzystaniem PPTP czy protokołu 
IPSec. 

Ze względu na prostotę oraz 

pospolitość stosowania rozwiązania PPTP, 

nie ma sensu przytaczać tutaj konkretnych 
modeli urządzeń wspierających tę metodę 
tunelowania ruchu ani sposobu jej 
konfiguracji. Najczęściej proces konfiguracji 
sprowadza się do kilku kliknięć i jest 
doskonale udokumentowany w podręczniku 
użytkownika.

Z kolei możliwość zestawiania 

tuneli VPN z wykorzystaniem czystego 
protokołu IPSec jest o tyle nieciekawa 
z punktu widzenia niniejszego artykułu, 
iż – jak już wcześniej zaznaczyłem 
– system Windows Mobile nie wspiera tej 
technologii.

Wydaje mi się, że warte omówienia 

jest natomiast rozwiązanie firmy 
WatchGuard, zaprezentowane w 
najnowszym oprogramowaniu 
dedykowanym dla urządzeń 
Firebox. Rozwiązanie to cechuje się 
wyjątkowością i wysoką elastycznością 
zastosowań. Mam tu na myśli możliwość 
zestawiania tuneli VPN z wykorzystaniem 
technologii SSL. Pisząc o wyjątkowości 
i elastyczności rozwiązania, miałem 
przede wszystkim na myśli cechę 
kompatybilności serwera SSL VPN 
z rozwiązaniem OpenVPN, zarówno 
dedykowanym dla komputerów, jak i 
urządzeń mobilnych.

Taka kompatybilność pozwala 

na wykorzystanie urządzenia 
firmy WatchGuard nie tylko jako 
kompleksowego rozwiązania UTM, ale 

także w roli wszechstronnego terminatora 
tuneli VPN, pozwalającego nie tylko na 
zestawianie tuneli IPSec i PPTP, ale także 
tuneli SSL. I – co jest wyjątkowe – można 
z powodzeniem zestawiać tunele także dla 
urządzeń mobilnych.

Standardowo urządzenia firmy 

WatchGuard pozwalają na pobranie 
dedykowanego programowego klienta 
służącego do zestawiania tuneli SSL. 
W instalatorze przeznaczonym dla 
systemu Windows zawarte są, oprócz 
samego oprogramowania, także pliki 
konfiguracyjne. Niestety, nie jest możliwe 
wyekstrahowanie w prosty sposób plików 
konfiguracyjnych z instalatora. Aby móc 
wykorzystać oprogramowanie OpenVPN 
przeznaczone dla urządzeń mobilnych 
do zestawienia tunelu VPN do urządzenia 
Firebox, konieczne jest pobranie 
plików konfiguracyjnych bezpośrednio 
z urządzenia. Po podłączeniu się do 
urządzenia narzędziem służącym do 
monitorowania jego pracy – Firebox 
System Manager – należy w zakładce 
Status Report nacisnąć przycisk 
Support. Pozwoli to na pobranie 
archiwum, w którym znajduje się 
między innymi plik client.wgssl. Plik ten 
jest de facto archiwum tar.gz. Po jego 
rozpakowaniu możliwe jest uzyskanie 
plików konfiguracyjnych klienta dla 
oprogramowania OpenVPN, jak również 
niezbędnych certyfikatów.

Rysunek 6. 

Wybór uwierzytelniania

Rysunek 7. 

Konfiguracja właściwości routingu

background image

OBRONA

56

 

HAKIN9 7–8/2008

Na Rysunku 9. przedstawiona 

jest konfiguracja serwera. Jak widać 
w zakładce General, dla użytkownika 
dostępne są dwa zewnętrzne interfejsy 
sieciowe. W przypadku, gdy jeden z 
nich nie jest dostępny (np. poprzez 
uszkodzenie łącza), cały ruch tunelowany 
jest z wykorzystaniem drugiego 
interfejsu. Wybrana została także opcja 
pozwalająca na tunelowanie tylko ruchu 
kierowanego do sieci chronionej. Możliwe 
jest także tunelowanie całego ruchu. 
W zakładce Advanced zdefiniowane 
zostały podstawowe parametry działania 
serwera – takie, jak wykorzystywany 
protokół warstwy transportowej, port na 
którym serwer nasłuchuje na połączenia, 
algorytm autentykacji oraz szyfrowania, 
wartości parametru keepalive oraz adresy 
serwerów WINS i DNS.

Listing 8. prezentuje generowaną 

automatycznie konfigurację klienta. 
Poniżej przedstawione zostały te opcje 
konfiguracyjne klienta, które nie zostały 
wcześniej omówione:

•  

tls–remote "/O=WatchGuard _
Technologies/OU=Fireware/
CN=Fireware _ SSLVPN _ Server"

 

– pozwala na połączenie tylko z 
serwerem, który posiada w certyfikacie 

wartości podane jako argument tej 
opcji konfiguracyjnej,

•  

remote–cert–eku "TLS Web Server 
Authentication"

 – wymaga podpisu 

certyfikatu serwera z rozszerzonym 
wykorzystaniem klucza,

•  

mute 20

 – definiuje, ile następujących 

bezpośrednio po sobie komunikatów 
tej samej treści może pojawić się w 
logach,

•  

cipher BF–CBC

 – określa używany w 

transmisji sposób szyfrowania danych,

•  

auth MD5

 – definiuje algorytm 

służący do autentykacji pakietów,

•  

float 1

 – pozwala na zmianę adresu 

IP oraz portu po zestawieniu tunelu, 

o ile ponowny proces autoryzacji 
przebiegnie poprawnie,

•  

mute–replay–warnings

 – uniemożliwia 

pojawianie się w logach komunikatów o 
powtórzonych pakietach,

•  

auth–user–pass 

– określa, że 

użytkownik zostanie zautoryzowany z 
wykorzystaniem nazwy użytkownika i 
hasła,

•  

explicit–exit–notify 2

 – pozwala 

klientowi maksymalnie dwukrotnie 
wysłać informację o zamknięciu tunelu 
– serwer nie musi w takim wypadku 
czekać na wystąpienie opóźnienia 
czasowego zdefiniowanego w 
keepalive, aby zamknąć tunel.

Rysunek 9. 

Konfiguracja serwera WatchGuard SSL Mobile VPN

Rysunek 8. 

Określanie klucza wstępnego

Listing 8. 

Konfiguracja klienta 

WatchGuard SSL Mobile VPN

dev tun
client
proto udp
ca ca.crt
cert client.crt
key client.pem
tls–remote 

"/O=WatchGuard_Technologies/

OU=Fireware/
CN=Fireware_
SSLVPN_Server"

remote–cert–eku 

"TLS Web Server 

Authentication"

remote 192.168.10.1 1194
remote 192.168.10.5 1194
persist–key
persist–tun
verb 0
mute 20
keepalive 10 60
cipher BF–CBC
auth 

MD5

float

 1

nobind
mute–replay–warnings
auth–user–pass
explicit–

exit

–notify 2

background image

MOBILNA OCHRONA

57

 

HAKIN9 

7–8/2008

Zestawienie połączenia z wykorzystaniem 
urządzenia mobilnego przebiega 
identycznie, jak w konfiguracji Linux–SSL.

Podsumowanie

W niniejszym artykule przedstawiłem kilka 
sposobów zabezpieczania komunikacji 
pomiędzy urządzeniami mobilnymi, a 
chronioną siecią firmową. Mam nadzieję, 
iż wielu administratorów rozważy ich 
zastosowanie, a powyżej prezentowane 
rozwiązania ułatwią im wdrożenie tego typu 
zabezpieczeń.

W przypadku urządzeń mobilnych 

zabezpieczanie komunikacji jest sprawą 
bardzo istotną. Wynika to przede wszystkim 
z faktu mobilności tych urządzeń i 
wykorzystywaniu ich właściwie w dowolnym 
miejscu. Bardzo często korzysta się z 
darmowych, niezabezpieczonych sieci 
bezprzewodowych. W takim przypadku 
wymagane jest szyfrowanie całego ruchu 
generowanego z urządzenia mobilnego, a 
przede wszystkim ruchu kierowanego do 
zasobów sieci firmowej.

Warto w tym miejscu wspomnieć także 

o programowych dystrybucjach zapór 
sieciowych. Jedną z takich dystrybucji jest 
Endian Firewall community (siódmy link w 
ramce W Sieci). Rozwiązanie to umożliwia 
bardzo łatwą konfigurację serwera tuneli 
SSL VPN. De facto jest to dystrybucja 
Linuksa z uruchomionym serwerem 
OpenVPN. Konfiguracja tego serwera jest 
jednak ułatwiona dzięki zastosowaniu 
graficznego narzędzia konfiguracyjnego. 
Często żmudne i czasochłonne 
instalowanie i konfigurowanie systemu 

Linux także nie jest konieczne, ponieważ 
dystrybucja Endian Firewall instaluje się 
w ciągu kilku minut, a całą konfigurację 
wykonuje się z wykorzystaniem 
przyjemnego i intuicyjnego graficznego 
interfejsu użytkownika.

Z kolei rozwiązania sprzętowe 

(jak prezentowane rozwiązanie firmy 
WatchGuard), oprócz intuicyjnego interfejsu 
graficznego, oferują także wsparcie 
techniczne producenta. W przypadku 
dużych instalacji, w których wymagany jest 
wysoki poziom niezawodności rozwiązania, 
także są warte rozważenia.

Marcin Klamra

Marcin Klamra, Specjalista ds. Bezpieczeństwa 

firmy CCNS SA, asystent w Instytucie Teleinformatyki 

Politechniki Krakowskiej. Od 1999 roku zajmuje się 

zagadnieniami administracji systemów komputerowych 

i bezpieczeństwem w sieciach komputerowych. Na 

stałe związany z firmą CCNS SA, w której zajmuje 

się rozwiązaniami bezpieczeństwa sieciowego. Jako 

Certyfikowany Trener WatchGuard Inc. prowadzi szkolenia 

w Autoryzowanym Centrum Szkoleniowym WatchGuard 

stworzonym przez firmę CCNS SA. 

Swoją wiedzę pogłębia uczestnicząc jako asystent 

naukowy w pracach badawczych Instytutu Teleinformatyki 

Politechniki Krakowskiej.

Kontakt z autorem: mklamra@ccns.pl

W Sieci

•   http://www.microsoft.com/poland/

technet/article/art0066_01.mspx,

•   http://ovpnppc.ziggurat29.com/ovpnppc–

main.htm,

•   http://www.openswan.org,
•   http://www.xelerance.com/software/xl2tpd,
•   http://www.watchguard.com,
•   http://www.openvpn.net,
•   http://www.endian.com/en/community.

R

E

K

L

A

M

A

background image

58

 

OBRONA

HAKIN9 7-8/2008

O

czywistym jest, że typowe portale 
internetowe mogą lekko odstąpić 
od tej zasady i przedłożyć prostotę 

użytkowania nad bezpieczeństwo, jednak w 
przypadku instytucji finansowych takich, jak banki, 
proces autoryzacji tożsamości musi zapewniać 
maksymalny poziom ochrony danych osobowych, 
informacji dotyczących stanu konta, historii 
rachunku itp. Celem tego artykułu jest obiektywne 
spojrzenie na obecne systemy informatyczne 
wcześniej wymienionych instytucji, pokazanie 
ich słabych i mocnych stron oraz po części 
przedstawienie firm, które pracują w domenie 
bezpieczeństwa internetowego i świadczą usługi 
z zakresu wdrażania kompleksowych systemów 
zabezpieczeń.

Autoryzacja tożsamości

Proces autoryzacji tożsamości, powszechnie 
nazywany etapem logowania, jest jednym z 
najważniejszych modułów aplikacji webowych. 
Niestety, jest on zwykle mniej lub bardziej 
zaniedbywany, przez co dane osobowe 
użytkowników są potencjalnie narażone na 
kradzież. 

System autoryzacyjny powinien wymagać od 

nas kilku rzeczy:

•   czegoś, co wiemy (np. hasło, identyfikator),
•   czegoś, co posiadamy (np. karta kredytowa),
•   czegoś, z czym się utożsamiamy (np. odcisk 

palca, skan siatkówki oka).

GRZEGORZ 

PEŁECHATY

Z ARTYKUŁU 

DOWIESZ SIĘ

z jakich etapów powinien 

składać się bezpieczny system 

autoryzacji,

jak uniknąć kradzieży danych 

osobowych,

którym systemom bankowym 

możesz zaufać przy 

dokonywaniu transakcji online,

jakim firmom można powierzyć 

proces wdrażania zabezpieczeń 

aplikacji webowych.

CO POWINIENEŚ 

WIEDZIEĆ

powinieneś mieć rozeznanie 

w sposobie działania funkcji 

skracających,

jak działa protokół SSL i jakie 

możliwości zapewnia jego 

stosowanie.

Bazując na tych danych, możemy wyróżnić 3 
sposoby autoryzacji:

•   jednoetapową, wymagającą tylko czegoś, co 

wiemy,

•   dwuetapową, wymagającą od nas czegoś, co 

wiemy i czegoś, co posiadamy,

•   wieloetapową, wymagającą równocześnie np. 

identyfikatora, hasła, karty kredytowej i odcisku 
palca.

Każdy z powyższych sposobów narażony jest 
na ataki – zarówno po stronie klienta, jak i 
podczas transmisji danych. Znanych jest całkiem 
sporo metod przejęcia informacji przez osoby 
trzecie, przed którymi solidny system powinien 
być zabezpieczony. Opiszę teraz te najczęściej 
wykorzystywane, a zarazem najbardziej 
niebezpieczne.

Phishing

Jest to atak polegający na wyłowieniu poufnych 
danych poprzez podszywanie się pod osobę lub 
firmę posiadającą do nich autoryzowany dostęp. 
Ten typ ataku oparty jest na inżynierii społecznej. 
Atakujący może podmienić autentyczną stronę 
banku na swój własny serwis i w ten sposób 
pozyskać od użytkownika potrzebne dane. Adres 
takiej strony jest najczęściej łudząco podobny 
do oryginalnego – lub też po prostu osoba 
atakująca infekuje serwery DNS, w wyniku czego 
błędnie rozwiązują one adresy URL (sposób 

Stopień trudności

Bezpieczne 

instytucje 

finansowe

Wraz z rozwojem aplikacji webowych aspekt bezpieczeństwa 

stał się zagadnieniem istotnym zarówno dla projektantów 

oprogramowania, jak i dla użytkowników końcowych, którym z 

tego oprogramowania przyjdzie korzystać. 

background image

59

 

BEZPIECZNE INSTYTUCJE FINANSOWE

HAKIN9 

7-8/2008

działania napastnika zobrazowany jest 
na Rysunku 1). Znacząca większość 
instytucji finansowych na świecie 
nie oferuje własnych mechanizmów 
ochronnych przed tym atakiem, co jest 
poważnym błędem. Odstępstwem jest 
system Banku Amerykańskiego (Bank of 
America) i polskiego banku BGŻ, gdzie po 
wprowadzeniu identyfikatora wyświetlany 
jest symboliczny obrazek, wybrany 
podczas rejestracji. Daje to gwarancję na 
połączenie z oryginalnym serwerem, a nie 
podszytą stroną. Najnowsze przeglądarki 
internetowe również udostępniają moduły 
wykrywające próbę takiego oszustwa, 
informując użytkownika o ewentualnych 
zastrzeżeniach co do autentyczności 
witryny. Przed phishingiem użytkownik może 
się również do pewnego stopnia obronić 
poprzez używanie zaufanych serwerów 
DNS, do których zaliczamy np. OpenDNS 
(serwer główny: 208.67.222.222, serwer 
alternatywny: 208.67.220.220).

Człowiek pomiędzy 

(man-in-the-middle)

Schemat tego ataku przedstawiony jest 
na Rysunku 2. – atakujący występuje tutaj 
w roli pośrednika pomiędzy serwerem a 
klientem. Wszystkie dane przechodzą przez 
jego komputer w formie niezaszyfrowanej, 
nawet przy korzystaniu z połączenia 
SSL. Jak to możliwe? Otóż protokół SSL 
daje nam gwarancję na bezpieczne 
połączenie z witryną, jednak nie daje 
gwarancji na to, że połączyliśmy się z tą 
witryną, z którą zamierzaliśmy. Co prawda 
zabezpieczeniem są tutaj certyfikaty, jednak 
podstawienie własnych – nieznacznie 
różniących się od oryginałów – jest rzeczą 
dość prostą. Zarówno IE, jak i Firefox 
sygnalizują nawiązanie bezpiecznego 
połączenia, pomimo, że w tej samej chwili 
człowiek pomiędzy odczytuje wszystkie 
nasze dane. Atak ten jest znany od dawna 
– przy połączeniach HTTP był on trywialny 
do przeprowadzenia, w przypadku HTTPS 
jest tylko trochę bardziej skomplikowany 
(co zostanie udowodnione w podpunkcie 
Scenariusz ataku na system autoryzacji 
tożsamości
). Nie istnieje jedno, w 100% 
pewne zabezpieczenie przed tym 
atakiem, jednak powinniśmy przynajmniej 
w minimalnym stopniu utrudnić jego 
wykonanie. Dobrym sposobem jest 
generowanie skrótów danych krytycznych, 

takich jak hasła. W tym celu poleciłbym 
zastosowanie algorytmu HMAC w oparciu 
o hasła jednorazowe (patrz Ramka). 

Oprogramowanie 

szpiegowskie

Kolejnym czyhającym na użytkownika 
niebezpieczeństwem jest oprogramowanie 
szpiegowskie, zainstalowane na jego 
własnym komputerze. O ile kiedyś 
przechwytywało ono jedynie wciśnięte 
klawisze, w dzisiejszych czasach 
oprogramowanie to jest znacznie 
groźniejsze. Przechwytując zrzuty ekranu, 
śledząc ruch myszki itp., atakujący jest w 
stanie wykraść dane dotyczące logowania. 

Zdolni projektanci systemów bankowych 
wymyślają co chwile nowe zabezpieczenia 
w tym kierunku, w polskim Internecie 
niestety zatrzymały się one na poziomie 
statycznej wirtualnej klawiatury, która nijak 
jest w stanie ochronić użytkownika przed 
wykradnięciem danych. Dobre rozwiązanie 
zaprezentował CitiBank, umieszczając 
wirtualną klawiaturę z losowym położeniem 
znaków, co skutecznie chroni przed 
większością ataków o tym charakterze.

Scenariusz ataku na 

system autoryzacji tożsamości

Przedstawię teraz prosty scenariusz ataku na 
bezpieczny system logowania. Celem będzie 

Keyed-Hash Message Authentication Code 

Teoria

Algorytm HMAC działa bardzo podobnie do funkcji skracających – z tym wyjątkiem, że do 
wygenerowania tablicy wynikowej potrzebuje dodatkowego klucza szyfrującego. Dzięki temu wynik 
funkcji może być weryfikowany pod względem autentyczności i aktualności. Wartość wynikową 
obliczamy ze wzoru:

 

���������������������������������������

gdzie h jest funkcją skracającą, K jest naszym kluczem, a m wiadomością do zaszyfrowania.
Siła algorytmu HMAC zależy od złożoności klucza (K) oraz od funkcji skracającej (h). Tak samo, jak 
w przypadku algorytmów md5, sha1 itp., odszyfrowanie danych zaszyfrowanych za pomocą tego 
algorytmu jest z matematycznego punktu widzenia odpowiednio trudne.

Zastosowanie

Powyższy algorytm może znaleźć zastosowanie w procesie autoryzacji tożsamości, w którym 
kluczem szyfrującym będzie hasło jednorazowe. Transmitowanie w ten sposób najważniejszych 
danych skutecznie obroni nas przed kradzieżą danych osobowych np. w skutek ataku man-in-the-
middle.

Rysunek 1. 

Zasada przeprowadzania ataku powszechnie znanego jako phishing

����

background image

60

 

HAKIN9 7-8/2008

61

 

HAKIN9 

7-8/2008

system bankowy. Atak dokonany zostanie 
w sieci lokalnej, na bramie zainstalowany 
jest program Burp Proxy, pozwalający 
dokonać ataku typu man-in-the-middle. Na 
komputerze działającym w sieci lokalnej 
uruchamiamy stronę internetową banku. 
Przeglądarka nawiązuje w tym momencie 

bezpieczne połączenie z naszym proxy 
(Burp Proxy) z wykorzystaniem protokołu 
SSL, podczas etapu inicjacyjnego zostają 
wymienione klucze publiczne oraz ustalane 
są algorytmy szyfrujące. Użytkownik jest 
pewien, że połączył się z rzeczywistą witryną 
banku. Burp po nawiązaniu połączenia z 

klientem łączy się z faktyczną stroną banku 
i od tego momentu działa w roli pośrednika 
pomiędzy nieświadomym niczego 
użytkownikiem a serwerem bankowym. W 
związku z tym, że klient szyfruje dane kluczem 
publicznym Burp'a, jesteśmy w stanie je 
przechwycić w formie niezaszyfrowanej. 
Rysunek 3. obrazuje konsekwencje braku 
zabezpieczenia przed tego typu atakiem. 

Implementacja bezpiecznego 

procesu autoryzacji

Pokazałem już, jak w prosty sposób można 
skompromitować obecne zabezpieczenia 
w systemach logowania. Statystycznie w 
dzisiejszych czasach najpowszechniejsza 
wydaje się być autoryzacja jednoetapowa, 
co uwarunkowane jest minimalnym 
kosztem jej implementacji oraz największą 
dostępnością dla użytkowników, dlatego też 
przedstawię przykładową architekturę tego 
właśnie systemu.

•   Nawiązujemy połączenie z serwerem 

(oczywiście dane są transmitowane 
poprzez bezpieczny tunel SSL).

•   Po stronie serwera generujemy hasło 

jednorazowe (OTP) i przesyłamy je do 
klienta – najlepiej za pomocą innego 
kanału komunikacyjnego (np. w formie 
SMSa).

•   Pobieramy od użytkownika identyfikator 

i hasło, po stronie klienta szyfrujemy 
hasło algorytmem HMAC(otp, 
password).

•   Identyfikator i zaszyfrowane hasło 

przesyłamy do serwera.

•   Serwer po otrzymaniu identyfikatora 

użytkownika porównuje 
zaszyfrowane hasło ze swoim 

W Sieci

•   http://www.rsa.com – jedna z najbardziej 

renomowanych firm działających w 
domenie bezpieczeństwa internetowego,

•   http://www.maximussoft.net – polska 

firma wdrażająca bezpieczne systemy 
autoryzacji tożsamości,

•   http://portswigger.net/proxy 

– program napisany w Javie, 
umożliwiający wykonywanie wielu 
ataków w sieci lokalnej, np. man-in-
the-middle
, który został opisany w tym 
artykule,

•   http://www.opendns.com – strona 

domowa OpenDNS.

Rysunek 2. 

Zasada przeprowadzania ataku typu man-in-the-middle

Rysunek 3. 

Konsekwencje braku zabezpieczeń przed atakiem man-in-the-middle

OBRONA

background image

60

 

HAKIN9 7-8/2008

61

 

HAKIN9 

7-8/2008

własnym skrótem. Jeżeli dane są 
identyczne, proces autoryzacji 
zostaje zakończony pomyślnie, a 
użytkownik przekierowywany jest na 
uwierzytelnioną stronę.

Firmy pracujące 

w domenie bezpieczeństwa

Jeżeli mowa była już o lukach w 
zabezpieczeniach, warto wspomnieć 
również o sposobie ich wyeliminowania. 
Polska jest krajem dosyć specyficznym pod 
względem zaufania do firm działających w 
domenie bezpieczeństwa, zajmujących się 
wdrażaniem solidnych systemów autoryzacji. 
O ile na całym świecie normą jest zlecanie 
podwykonawstwa systemów zabezpieczeń 
firmom działającym w tym sektorze rynku, 
to w Polsce sprawa ta jest traktowana 
powierzchownie i system taki wykonywany jest 
łącznie z resztą projektu – w konsekwencji 
czego otrzymujemy zazwyczaj aplikacje słabo 
zabezpieczone, pozwalające w łatwy sposób 
przechwycić poufne dane przez osoby 
trzecie. Do firm godnych polecenia można 
zaliczyć np. RSA lub polską firmę Maximus 
Soft, posiadającą opatentowany w Stanach 
Zjednoczonych system wieloetapowej 
autoryzacji tożsamości net-auth. Adresy WWW 
tych firm można znaleźć w Ramce W Sieci.

Podsumowanie

Mam nadzieję, że ten krótki – acz treściwy 
– artykuł zweryfikował przynajmniej po 
części Wasze poglądy na temat tego, 
czym bezpieczeństwo tak naprawdę jest i 
jak łatwo dopuścić do kradzieży własnych 
danych osobowych, tak istotnych w 
systemach instytucji finansowych. Istotnym 
jest, aby poświęcić szczególną uwagę temu 
zagadnieniu i w jak największym stopniu 
ochronić się przed atakami, zwłaszcza 
tymi opisanymi w artykule. Solidny system 
autoryzacyjny jest podstawą każdej aplikacji 
i pełni rolę miernika wiarygodności w 
oczach klientów, dlatego też jego projekt i 
implementację powinno zlecać się firmom z 
odpowiednimi kwalifikacjami.

Grzegorz Pełechaty

Autor jest programistą, zajmującym się rozwojem 

systemów operacyjnych. Hobbystycznie interesuje się 

sprawami bezpieczeństwa aplikacji webowych. Pracował 

wielokrotnie jako doradca ds. bezpieczeństwa przy 

wdrażaniu dużych systemów informatycznych. Wolne 

chwile spędza na rozwoju wolnego oprogramowania, 

oglądaniu dobrego kina japońskiego i czytaniu książek. 

Kontakt z autorem: g.pelechaty@gmail.com

background image

62

 

OBRONA

HAKIN9 7-8/2008

N

a łamach hakin9 bardzo często 
pojawią się tematy związane z 
bezpieczeństwem kodu i tworzeniem 

bezpiecznych aplikacji. Każdy z autorów 
wskazuje wiele miejsc, w których mogą wystąpić 
problemy mogące spowodować niestabilne 
działanie systemu, a także stwarzające 
możliwość włamania do systemu. Jednym z 
takich zagrożeń i grzechów programistycznych 
jest przepełnienie bufora. Artykuł ma na celu 
zebranie dostępnej wiedzy na ten temat i 
przybliżenie tego zagrożenia.

Czym zatem jest przepełnienie bufora i kiedy 

możemy się z taką sytuacją spotkać? Najkrócej 
rzecz ujmując, przepełnieniem bufora jest 
próba zapisania większej ilości elementów niż 
dopuszcza to rozmiar bufora, z którym pracujemy. 
Jest to główna przyczyna wielu problemów w 
ogromnej ilości programów. Programiści bardzo 
często nie zdają sobie sprawy z tego zagrożenia 
i nie zwracają uwagi na bufor. Źle deklarowane 
wartości tablic, nieodpowiednio przekazywane 
parametry funkcji, nieprawidłowy znak, 
przepełnienie licznika – to najczęstsze problemy 
i potencjalne przyczyny umożliwiające włamanie 
się do naszego programu. Problem ten dotyczy 
głównie kodu natywnego (C/C++), a także 

API

 

systemu operacyjnego. Przykłady podawane są 

Visual C++ .NET

, wykorzystywany i omawiany 

będzie kompilator 

C++.NET

.

Przyjrzyjmy się następującemu fragmentowi 

kodu (Listing 1.): W kodzie tym mamy kilka 

ARTUR ŻARSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

o problemach wynikających z 

przepełnienia bufora oraz braku 

jego obsługi,

dodatkowo przedstawione są 

aspekty jak chronić się przed 

tego rodzaju problemami.

CO POWINIENEŚ 

WIEDZIEĆ

znać język C++ oraz podstawy 

asemblera,

warto również znać podstawy 

platformy .NET, aby można 

było skorzystać ze wszystkich 

omawianych elementów.

elementów: adres zwrotny, dwie zmienne (jedna 
typu char, a druga – int), a także wykonujemy 
funkcję kopiowania ciągu znaków. W przypadku, 
gdy przekażemy jako parametr prosty wyraz, np. 
Test, wszystko zadziała prawidłowo. Natomiast w 
przypadku parametru dłuższego niż cztery znaki 
spowodujemy błąd przepełnienia bufora. 

Jednym z najbardziej znanych przypadków 

wykorzystania przepełnienia bufora jest robak 
CodeRed. Taki rodzaj przepełnienia bufora jest 
bardzo często spotykany w aplikacjach opartych 
o Microsoft Windows, ponieważ bardzo wiele 
aplikacji używa kodowania znaków w Unicode 
oraz 

ANSI

 (co nie jest powodem stwierdzenia, 

że to wina systemu operacyjnego). 

WCHAR

 jest 

znakiem o długości dwóch bajtów, używanym 
do reprezentowania znaków w Unicode. Liczba 
znaków, która może być dekodowana przy 
użyciu 

DecodeURLEscapes

, jest określona przez 

wartość 

sizeof wcsAttribute

, która uzyskuje 

tę wielkość bufora w bajtach, a nie znakach typu 

WCHAR

. W rezultacie 

sizeof wcsAttribute

 

ma wartość 400 bajtów, czyli dwa razy więcej 
niż jest spodziewane. Poniżej fragment kodu, 
który jest odpowiedzialny za opisaną procedurę 
(Listing 2.):

W związku z tym może lepiej jest wykonać 

następującą linię kodu:

wwif ( cchAttribute >= sizeof 

wcsAttribute / sizeof 
wcsAttrbibute[0])

Stopień trudności

Przepełnienie 

bufora 

Często tworząc oprogramowanie zastanawiamy się nad jego 

bezpieczeństwem, ale czy zawsze? Szczególnie wrażliwy na 

bezpieczeństwo jest sam kod naszej aplikacji, dlatego warto 

zwrócić uwagę na jedno z największych zagrożeń, jakie czyha na 

programistę – przepełnienie bufora.

background image

63

 

OBRONA

HAKIN9 

7-8/2008

PRZEPEŁNIENIE BUFORA

bo być może kiedyś nagle wzrośnie 
rozmiar 

WCHAR

 albo zmieni się typ – czyli 

nasz kod w tym przypadku wyglądałby w 
sposób następujący (Listing 3.):

Innym przykładem jest kolejny dobrze 

znany robak Blaster, który wykorzystuje 
mechanizm kopiowania większej 
ilości bajtów, niż pozwala na to obszar 
docelowy (Listing 4.):

Architektura x86 i stos

Aby w pełni zrozumieć, jak może dojść 
do przepełnienia bufora oraz jak działają 
testy bezpieczeństwa, warto przyjrzeć 
się budowie stosu. W architekturze x86 
stos rośnie w dół, co oznacza, że nowsze 
dane są zapamiętywane pod adresami 
niższymi niż elementy wstawione na stos 

wcześniej. Pojedyncze wywołanie funkcji 
spowoduje, że jest tworzona nowa ramka 
stosu. Jego budowa przedstawia się 
następująco (wg kolejności malejących 
adresów):

•   parametry funkcji,
•   adres powrotu funkcji,
•   wskaźnik ramki,
•   ramka procedur obsługi wyjątków,
•   lokalnie zadeklarowane zmienne i 

bufory,

•   rejestry zachowane przez funkcję 

wywołaną.

Jeśli przyjrzymy się budowie stosu, 
będziemy mogli stwierdzić, co 
przepełnienie bufora może nadpisać. Po 

pierwsze – inne zmienne, które zostały 
zaalokowane przed buforem, adres 
powrotu oraz parametry funkcji i wskaźnik 
ramki. Aby możliwe było przejęcie kontroli 
nad programem, wystarczy wstawić 
odpowiednią wartość do ciągu danych, 
które są ładowane później do rejestru 
EIP. Najczęściej taką wartością jest adres 
zwrotny funkcji. Osoby, które wykorzystują 
tego typu luki działają w taki sposób, że 
podstawiają własny adres powrotu, który 
jest podawany do programu. Możliwe 
jest to dzięki prostej funkcji łańcuchowej, 
kopiującej wartości w stosie z jednego 
adresu do drugiego. Nie ma w trakcie 
tego automatycznego sprawdzenia, 
czy pod adresem docelowym jest 
wystarczająca ilość miejsca. Haker może 
wygodnie nadpisać również przyległy 
adres powrotny.

Testowanie 

Czy istnieje zatem możliwość 
sprawdzenia i przetestowania kodu 
na etapie kompilacji – tak, aby 
zabezpieczyć się przed taką sytuacją? 
Sprawdzanie, czy w produkcyjnej wersji 
kodu nie występuje przepełnienie 
bufora, jest równie ważne. Jednak w 
takim rozwiązaniu testy muszą mieć 
dużo mniejszy wpływ na wydajność, niż 
implementacja testów przeprowadzanych 
w czasie wykonywania. Dlatego w 
kompilatorze 

Visual C++ .NET

 

wprowadzono przełącznik 

/GS

. Oprócz 

tego przełącznika przydatne są również 
dodatkowe biblioteki. Poniższa tabela 
zawiera ich zestawienie wraz z krótkim 
opisem. A dokładniej:

•  Run-time Checks (RTC) – całkowite 

sprawdzenie sterty danymi 
niezerowymi, unikając założenia, 
że sterta jest zawsze pusta. 
Sprawdzane są granice wszystkich 
tablic, aby wyłapać nawet jeden 
bajt przepełniający bufor i znaleźć 
niezgodne wywołania. 

•  PREfast – narzędzie dla programisty, 

które pomaga znaleźć błędy trudne 
do testowania i debugowania przez 
identyfikację założeń, które mogą być 
nieprawdziwe. PREfast znajduje się w 
Visual Studio 2005.

•  Source Code Annotation Language 

(SAL) – pozwala programiście na 

Listing 1. 

Przykładowy kod zagrożony przepełnieniem bufora

void

 

UnSafe

 

(

const

 

char

*

 

uncheckedData

)

 //adres zwrotny

{

char

 

localVariable

[

4

];

 // char[4]

int

 

anotherLocalVariable

;

 //int

strcpy

 

(

localVariable

uncheckedData

);

}

Listing 2. 

Fragment kodu wykorzystywany przez robaka o nazwie CodeRed

// 

cchAttribute

 

jest

 

ilo

ś

ci

ą 

znak

ó

w

 

wprowadzonych

 

przez

 

u

ż

ytkownika

WCHAR

 

wcsAttribute

[

200

];

if

 

(

 

cchAttribute

 

>=

 

sizeof

 

wcsAttribute

)

    

THROW

(

 

CException

(

 

DB_E_ERRORSINCOMMAND

 

)

 

);

DecodeURLEscapes

(

 

(

BYTE

 

*)

 

pszAttribute

cchAttribute

wcsAttribute

,

webServer

.

Code

Page

());

    ...

Listing 3. 

Poprawiony kod odporny na atak robaka CodeRed 

WCHAR

 

wcsAttribute

[

200

];

if

 

(

 

cchAttribute

 

>=

 

sizeof

 

wcsAttribute

 / 

sizeof

 

WCHAR

)

    

THROW

(

 

CException

(

 

DB_E_ERRORSINCOMMAND

 

)

 

);

DecodeURLEscapes

(

 

(

BYTE

 

*)

 

pszAttribute

cchAttribute

wcsAttribute

,

webServer

.

Code

Page

());

    ...

void

 

DecodeURLEscapes

(

 

BYTE

 

*

 

pIn

ULONG

 

&

 

l

            

WCHAR

 

*

 

pOut

ULONG

 

ulCodePage

 

)

 

{

    

WCHAR

 

*

 

p2

 

=

 

pOut

;

    

ULONG

 

l2

 

=

 

l

;

    ...

Listing 4. 

Robak Blaster

size_t

 

cbDest

 

=

 

sizeof

(

p

);

while

 

(--

cbDest

 

&&

 

*

c

 

!=

 ‘\\’

)

 

    

*

p

++

 

=

 

*

c

++;

Listing 5. 

Kod dodany przez użycie przełącznika /GS

sub

 

esp

,24

h

mov

 

eax

,

dword

 

ptr

 

[

___security_cookie

 

(

408040

h

)]

xor

 

eax

,

dword

 

ptr

 

[

esp

+

24

h

]

mov

 

dword

 

ptr

 

[

esp

+

20

h

]

,

eax

background image

64

 

OBRONA

HAKIN9 7-8/2008

przypisanie wartości do bufora. Kiedy 
kod jest skompilowany, kompilator 
zna warunki, które pozwalają na 
określenie wartości oczekiwanych 
i aktualnych. Funkcjonalność pozwala 
programiście na odkrycie błędów, 
które mogą trudne do znalezienia 
ręcznie.

•  Application Verifier – to narzędzie 

pakietu Visual Studio, udostępniające 
funkcje instrumentacji obecne w 

systemie operacyjnym Windows. 
Instrumentacja ta pozwala w czasie 
działania aplikacji przeprowadzić jej 
weryfikację w wybranych obszarach, 
takich, jak przydział pamięci czy 
użycie sekcji krytycznych i uchwytów. 
Application Verifier wykrywa problemy 
czasu wykonywania w zakresie 
alokacji pamięci, wyjścia poza 
bloki na stercie, użycia pamięci po 
usunięciu, podwójnego usunięcia 

i zanieczyszczenia sterty. W zakresie 
wykorzystania sekcji krytycznych 
wykrywa działania, które mogą 
prowadzić do blokowania lub wycieku 
zasobów. Jeśli chodzi o użycie 
uchwytów, wykrywa próby powtórnego 
użycia uchwytów, które już nie są 
poprawne. Narzędzie to wykorzystuje 
instrumentację dostępną w systemie 
operacyjnym, używając jej podczas 
debugowania wobec danego obrazu 
wykonywalnego. System operacyjny 
zmienia warstwę API komunikującą 
się z aplikacją i przechwytuje 

Listing 6. 

Funkcja __security_error_handler

void

 

__cdecl

 

__security_error_handler

(

int

 

code

void

 

*

data

)

{

 

if

 

(

user_handler

 

!=

 

NULL

)

 

{

 

__try

 

{

 

user_handler

(

code

data

);

 

}

 

__except

 

(

EXCEPTION_EXECUTE_HANDLER

)

 

{}

 

}

 

else

 

{

 //...przygotowanie wiadomości outmsg...

 

__crtMessageBoxA

(

 

outmsg

,

 

"Microsoft Visual C++ Runtime Library"

,

 

MB_OK

|

MB_ICONHAND

|

MB_SETFOREGROUND

|

MB_TASKMODAL

);

 

}

 

_exit

(

3

);

}

Listing 7. 

Przykład użycia funkcji __set_security_error_handler

void

 

__cdecl

 

sprawdz_blad

 

(

int

 

kod_bledu

void

 

*

 

nie_dotyczy

)

{

 

if

 

(

kod_bledu

 

==

 

_SECERR_BUFFER_OVERRUN

)

 

printf

(

"Wykryto przepełnienie bufora!

\n

"

);

}

void

 

main

()

{

 

_set_security_error_handler

(

sprawdz_blad

);

}

Listing 8. 

Przykład użycia StrCpy

bool

 

obslugaStrCpy

(

const

 

char

*

 

input

)

{

    

char

 

buf

[

80

];

    

if

(

input

 

==

 

NULL

)

    

{

        

assert

(

false

);

        

return

 

false

;

    

}

   

 //problem w przypadku braku null na końcu łańcucha

    

if

(

strlen

(

input

)

 

<

 

sizeof

(

buf

))

    

{

       

 //wszystko OK.

        

strcpy

(

buf

input

);

    

}

    

else

    

{

        

return

 

false

;

    

}

   

 //… dalszy kod

    

return

 

true

;

}

Listing 9. 

Przykład bezpiecznego 

Strncpy.

bool

 

obslugaStrncpy

(

const

 

char

*

 

input

)

{

    

char

 

buf

[

80

];

    

if

(

input

 

==

 

NULL

)

    

{

        

assert

(

false

);

        

return

 

false

;

    

}

    

buf

[

sizeof

(

buf

)

 

-

 

1

]

 

=

 '\0'

;

    

strncpy

(

buf

input

sizeof

(

buf

));

    

if

(

buf

[

sizeof

(

buf

)

 

-

 

1

]

 

!=

 '\0'

)

    

{

       

 //przepełnienie 

        

return

 

false

;

    

}

   

 //… dalszy kod.

    

return

 

true

;

}

Listing 10. 

Przykład użycia funkcji 

_snprintf.

bool

 

obsluga_snprint

(

int

 

line

unsigned

 

long

 

err

char

*

 

msg

)

{

    

char

 

buf

[

132

];

    

if

(

msg

 

==

 

NULL

)

    

{

        

assert

(

false

);

        

return

 

false

;

    

}

    

if

(

_snprintf

(

buf

sizeof

(

buf

)-

1

        

"Bład w linii %d = %d - %s

\n

"

line

err

msg

)

 

<

 

0

)

    

{

       

 //Przepełnienie - błąd

        

return

 

false

;

    

}

    

else

    

{

        

buf

[

sizeof

(

buf

)-

1

]

 

=

 '\0'

;

    

}

   

 //.. dalsze działanie programu

    

return

 

true

;

}

background image

65

 

HAKIN9 

7-8/2008

wywołania, przekierowując je do 
warstwy weryfikacji poprawności. W 
momencie wykrycia nieprawidłowości 
generowany jest odpowiedni wyjątek, 
a narzędzie Application Verifier 
dostarcza właściwego kontekstu dla 
wykrytego błędu. 

Przełącznik /GS

Przyjrzyjmy się dokładniej przełącznikowi 

/GS

. Skorzystajmy z informacji zawartej w 

MSDN

 (przykład również z MSDN) na jego 

temat. Przełącznik /GS wstawia pomiędzy 
bufor a adres powrotu znacznik. Jeśli 
przepełnienie bufora nadpisze adres 
powrotu, to nadpisze także znacznik 
wstawiony pomiędzy adres a bufor. Nowa 
budowa ramki stosu jest następująca:

•   parametry funkcji,
•   adres powrotu funkcji,
•   wskaźnik ramki,
•   znacznik,
•   ramka procedur obsługi wyjątków,
•   lokalnie zadeklarowane zmienne i 

bufory,

•   rejestry zachowane przez funkcję 

wywołaną.

Gdy testy bezpieczeństwa są włączone, 
sposób wykonania funkcji ulega zmianie. 
Instrukcje, które mają być wykonane zaraz 
po wywołaniu funkcji, znajdują się w początku 
funkcji. Weźmy następującą instrukcję:

sub esp,20h

Instrukcja ta zarezerwuje 32 bajty na 
wykorzystywane w funkcji zmienne 
lokalne. Gdy funkcja jest kompilowana 
z przełącznikiem /GS, zostaną 
zarezerwowane dodatkowe cztery bajty i 
dodane zostaną trzy instrukcje (Listing 5.):

Obsługa błędów

Przy przeprowadzaniu testów 
bezpieczeństwa konieczne jest 
skorzystanie z biblioteki 

CRT

. Gdy testy 

wykryją błąd, kontrola przekazywana jest 
do funkcji 

__security_error_handler. 

Funkcja ta wygląda następująco (Listing .6):

Domyślnie aplikacja, w której testy 

bezpieczeństwa wykryją błąd, wyświetla 
okno dialogowe informujące o wykryciu 
przepełnienia bufora. Po zamknięciu 
okna dialogowego wykonywanie aplikacji 
zostaje przerwane. Biblioteka CRT daje 
programistom możliwość zastosowania w 
przypadku detekcji przepełnienia bufora 
innej procedury obsługi, która będzie lepiej 
pasować do aplikacji. Do zainstalowania 
własnej procedury obsługi błędów można 
posłużyć się funkcją 

__set_security_error_handler

która przechowuje adres procedury 
obsługi w zmiennej (Listing 7):

Powyższy fragment kodu spowoduje 

wypisanie wiadomości na ekranie w 

PRZEPEŁNIENIE BUFORA

momencie wykrycia przepełnienia 
bufora. Chociaż zdefiniowana powyżej 
procedura obsługi sama nie kończy 
wykonywania programu, to po 
zakończeniu jej wykonywania funkcja 

__security_error_handler

 zakończy program, wywołując

 

_ exit(3)

. Funkcje 

_ _ security _

error _ handler i _ set _
security _ error _ handler

 

zdefiniowane są w pliku secfail.c, 

należącym do plików źródłowych 

biblioteki CRT.

Zapobieganie 

przepełnieniom bufora

Aby zapobiegać przepełnieniom 
bufora, należy zwracać uwagę na 
funkcje, których używamy w naszych 
programach. 
Najczęstszą przyczyną problemów 
jest niewłaściwe stosowanie funkcji 
związanych z obsługą łańcuchów 
tekstowych. Dlatego też przyjrzymy 
się im bliżej, aby zobaczyć, jak można 
zabezpieczyć się przed niepożądanym 
działaniem.

Funkcja strcpy

Wywołanie funkcji:

char *strcpy( char 
*strDestination, const char 
*strSource )

;

R

E

K

L

A

M

A

background image

66

 

OBRONA

HAKIN9 7-8/2008

Istnieje bardzo wiele sytuacji, w której 
działanie funkcji zakończy się z błędem. 
Najpopularniejsze z nich to między 
innymi: gdy bufor źródłowy i docelowy 
są puste, jeżeli bufor źródłowy nie jest 
zakończony znakiem null i największy 
z problemów – gdy rozmiar ciągu 
źródłowego jest większy niż bufor 
docelowy. 

Aby bezpiecznie wywołać tę funkcję, 

należy sprawdzać poszczególne 
przypadki (Listing 8):

Funkcja strncpy

Wywołanie funkcji: 

char *strncpy( char *strDest, const 

char *strSource, 
size_t count );

Jest bezpieczniejsza niż strcpy, ale i tutaj 
nadal mogą pojawiać się problemy, 
szczególnie w przypadku przekazywania 
wartości null jako ciągu źródłowego lub 
docelowego. Dodatkowo problemem 
może być zła wartość licznika. Jedna z 
różnic pomiędzy tą funkcją a poprzednią 
to fakt, że jeśli bufor źródłowy nie jest 

zakończony null, to funkcja nie zakończy 
się z błędem. 

Przykład bezpiecznego użycia 

przedstawia (Listing 9).

Funkcja sprintf

Wywołanie funkcji: 

int _ snprintf( char *buffer, size _ t
      count, const char *format [, 
      argument] ... );

Jest to jedna z bezpieczniejszych funkcji. 
Jedyna rzecz, na którą należy zwrócić 
uwagę to bufor docelowy jest zakończony 
znakiem null. 

Przykład użycia funkcji przedstawia 

(Listing 10).

Funkcja _snprintf

Wywołanie funkcji:

 

int _snprintf( char *buffer,
    size _ t count, const 
    char *format [, argument] ... );

Jest to jedna z bezpieczniejszych 
funkcji. Jedyna rzecz, na którą należy 

zwrócić uwagę, to sprawdzenie, czy bufor 
docelowy jest zakończony znakiem null.  
Przykład użycia funkcji (Listing 9.):

Kod zarządzany

Opisana sytuacja zmienia się w 
przypadku kodu zarządzanego. 
Posiada on swego rodzaju automat 
zabezpieczający przed:

•   przepełnieniem bufora,
•   wyjściem poza zakres tablicy,
•   nieprawidłowym kodem 

wykonywalnym,

•   zewnętrzną modyfikacją pliku 

wykonywalnego.

Są też oczywiście rzeczy, przed którymi 
nie zabezpiecza kod zarządzany. Jest to 
między innymi:

•   marnowanie pamięci
•   błędy na styku wejście użytkownika 

– kod

•   podejrzenie ukrytych informacji.

Podsumowanie

Przepełnienie bufora to poważny problem. 
Każdy programista powinien mieć 
świadomość tego rodzaju zagrożenia. 
Zanim zacznie tworzyć kod, powinien 
wziąć pod uwagę podobne problemy i 
dużo wcześniej przemyśleć architekturę 
kodu. Z drugiej strony, programista 
powinien mieć pomoc ze strony narzędzi 
programistycznych – tak, aby to one mogły 
sprawdzić i rozwiązać takie problemy 
(przynajmniej częściowo). Po analizie 
tekstu możemy zadać następujące pytanie 
jak samemu wyrobić sobie nawyk nie 
popełniania takich błędów, jak przepełnienie 
bufora?
. O ile nigdy nie doświadczymy na 
własnej skórze problemu z włamaniem 
i nie stracimy przez to jakichś istotnych 
danych, to pewnie trudno nam będzie o 
tym pamiętać. A na poważnie – warto 
zrobić sobie listę wszystkich kroków, 
które musimy wykonać, i sprawdzić, czy 
wśród nich jest sprawdzenie możliwości 
wystąpienia przepełnienia bufora. 

Artur Żarski

Jest pracownikiem firmy Microsoft. Na co dzień zajmuje 

sięm.in. Tworzeniem rozwiązań w oparciu o SQL Server w 

różnych aspektach – bazy relacyjne, usługi integracyjne, 

usługi analityczne. Jest certyfikowanym administratorem 

baz danych (MCDBA).

Kontakt z autorem: arturz@microsoft.comh

W Sieci

•   http://www.sans.org/rr/whitepapers/securecode/386.php – Inside the buffer overflow attack: 

mechanism, method & prevention,

•   http://pl.wikipedia.org/wiki/Przepełnienie_bufora – Wikipedia,
•   http://support.microsoft.com/kb/325483 – Compiler Security Checks: The /GS Compiler Switch, 

Writing Secure Code , Michael Howard, Microsoft Press 2002.

Tabela 1. 

Przełącznik kompilatora /GS oraz przydatne bibliotekiPrzełącznik kompilatora 

/GS oraz przydatne biblioteki

Przełącznik/biblioteka

Opis

/GS: Przepełnienie stosu

Skuteczność 100%

/GS: Przekierowanie wskaźnika, 

zmiana wartości EBP

Skuteczność niska (chyba, że trafi na adres zwrotny)

RTC: stos niezerowy

Pomoc przy śledzeniu

PREfast: analizator kodu

Pożyteczny; dodatkowe ostrzeżenia

SAL:dodatkowe adnotacje 

(_deref, _ecount …)

Duża skuteczność; wykrycie „losowych” błędów; 

pomoc w analizie

Application Verifier

Dobry pomocnik testera

ACGP: rozrzucenie kodu w 

segmencie

Duża skuteczność; wykrycie „losowych” błędów

Biblioteki standardowe

Funkcje mają wbudowany safeguard + SAL + …

background image

R

E

K

L

A

M

A

background image

68

 

RECENZJE

HAKIN9 7-8/2008

69

 

RAFAŁ PODSIADŁY 

HAKIN9 

7-8/2008

Walka między użytkownikiem a wirusem wciąż trwa – na rynku jest dużo programów 

antywirusowych, pomiędzy którymi niezwykle trudno wybrać. Dziś mamy kontakt online 

ze znajomymi, klientami, partnerami, sklepami internetowymi oraz usługami bankowymi z 

każdego miejsca na świecie. Ryzykujemy, ponieważ cyberprzestępcy także mają dostęp do 

tych możliwości. Udoskonalają oni swoje metody i techniki, aby skraść nasze informacje. 

Współczesna sieć znacznie różni się od tego, co obserwowaliśmy jeszcze kilka lat temu, i 

dlatego musimy zmienić swoje podejście do ochrony.

ZESTAWIENIE PRODUKTÓW SECURITY

PANDA INTERNET SECURITY 2008

Aplikacja Pandy to kompleksowe 
narzędzie do ochrony komputera. 
Zawiera w swych modułach pakiet 
antywirusowy z kompleksową ochroną i 
zaporę przeciwogniową, dodatkowo ma 
wbudowany moduł kopii zapasowych. 
Standardowa licencja pozwala na instalację 
programu na trzech komputerach w cenie 
wersji jednostanowiskowej. Moduły:

•   TotalScan Pro – zawarte technologie 

pozwalają przeprowadzić szczegółowe 
skanowanie w celu wykrycia i 
usunięcia najbardziej wyszukanych 
zagrożeń, które prześlizgnąć się mogą 
przez tradycyjne zabezpieczenia. 
Komponent automatycznie wykrywa i 
eliminuje wszystkie rodzaje wirusów. 
Panda Internet Security 2008 pozwala 
korzystać z Internetu, a także pobierać 
oraz udostępniać pliki bez obaw o 
zainfekowanie jakimikolwiek wirusami, 
robakami czy trojanami.

•   Backup – moduł ten umożliwia łatwe 

tworzenie automatycznych kopii 
zapasowych, które pozwolą w dowolnym 
momencie przywrócić ewentualne 
utracone pliki. Istnieje możliwość wybrania 
plików, które zostaną zapisane, oraz 
utworzenia kopii zapasowych na dysku 
twardym, płycie CD, DVD lub na innym 
zewnętrznym nośniku. Dodatkowo 
dostajemy możliwość bezpłatnego 
wykonywania kopii zapasowej online przez 
12 miesięcy. W tym celu otrzymujemy 1 

GB przestrzeni dyskowej na bezpiecznym 
zdalnym serwerze. Pozwala nam to na 
dostęp do naszych najważniejszych 
dokumentów z dowolnego komputera. 

•   Panda Tuneup – komponent 

służy do optymalizacji wydajności 
systemu operacyjnego. W pierwszej 
kolejności porządkowane są wszystkie 
niepotrzebne składniki (pliki cookie, 
pliki tymczasowe, elementy w koszu 
itp.), a następnie przeprowadzana 
jest defragmentacja dysku w celu 
zwiększenia szybkości pracy systemu.

•   AntiSpyware – automatycznie wykrywa i 

skutecznie usuwa programy szpiegujące 
oraz inne irytujące aplikacje.

•   Panda Identity Protect – generuje 

ostrzeżenie za każdym razem, gdy z 
komputera wysyłane są dane mogące 
mieć związek z tożsamością użytkownika.

•   Dwukierunkowy firewall z możliwością 

konfiguracji, który powstrzymuje intruzów 
i hakerów, próbujących uzyskać dostęp 
do Twojego komputera.

•   AntiPhishing – potrafi zidentyfikować 

fałszywe wiadomości tego rodzaju 
i zapobiegać kradzieżom danych 
bankowych, numerów kont i innych 
poufnych informacji. Panda Internet 
Security 2008 zabezpieczy Twój komputer 
przed niebezpiecznymi oszustwami.

•   Technologie TruPrevent ® (Podwójna 

ochrona) wykrywają i blokują różnego 
rodzaju nieznane zagrożenia, inteligentnie 
obserwując zachowanie podejrzanego 
programu. A to oznacza, że komputer jest 
chroniony najlepiej, jak to możliwe. 

•   AntiRootkit – zaawansowany system 

zabezpieczeń, który potrafi wykrywać 
zagrożenia typu rootkit, próbujące ukryć 
się na Twoim komputerze.

•   AntiSpam – automatyczne blokowanie 

niepożądanej korespondencji w wyniku 
filtrowania treści korespondencji.

•   Kontrola rodzicielska – ogranicza dostęp 

do niewłaściwych witryn WWW. Funkcja 
filtrowania treści pozwala określić, 
jakie rodzaje stron WWW będzie mógł 
przeglądać każdy z użytkowników (dzieci, 
nastolatki, pracownicy itp.).

Wymagania:
Procesor: Pentium 300 MHz lub szybszy
RAM: 128 MB (rekomendowane 256 MB)
Dysk twardy: 270 MB wolnego miejsca
System operacyjny: Windows Vista 32-bit 
oraz 64-bit, Windows XP-32 oraz 64-bit, 
Windows 2000
Internet Explorer 6.0
napęd CD-ROM
Cena: Panda Internet Security 2008 – 219 
PLN brutto

G-DATA TOTALCARE 2008

Oprogramowanie G-DATA Software 
zdobywa od pięciu lat nagrody w 
większości testów antywirusowych w całej 
Europie. Bezpieczeństwo użytkowników 
programów G-DATA zapewniane jest dzięki 
wykorzystaniu najbardziej skutecznych, 
innowacyjnych rozwiązań. G-DATA TotalCare 
2008 gwarantuje bezpieczeństwo pracy w 
Internecie dzięki szeregowi funkcji i modułów. 

background image

68

 

RECENZJE

HAKIN9 7-8/2008

69

 

RAFAŁ PODSIADŁY 

HAKIN9 

7-8/2008

Zaimplementowany w pakiecie G-DATA 
moduł AntiVirus to wielokrotnie nagradzane 
rozwiązanie chroniące przed wirusami, 
trojanami, dialerami, rootkitami, backdoorami i 
szkodliwym oprogramowaniem typu spyware, 
riskware czy adware. Pogram wykorzystuje 
technologię podwójnego skanowania i 
mechanizm OutbreakShield, który gwarantuje 
najszybszą na rynku reakcję na nowe 
zagrożenia w Sieci. Dzięki temu wykrywanie i 
usuwanie wirusów jest szybkie i skuteczne. 

•   Moduły WebFilter i kontroli rodzicielskiej 

pozwalają blokować dostęp do stron 
internetowych zawierających sceny 
przemocy czy pornografię. Ustawienia 
można zdefiniować odrębnie dla 
każdego z profili użytkownika.

•   G-DATA Backup oferuje narzędzie do 

wykonywana automatycznych kopii 
zapasowych. Zabezpieczenie danych 
jest możliwe za pomocą kilku kliknięć 
myszką. Harmonogram kopii zapasowych 

umożliwia zaplanowanie automatycznego 
wykonywania kopii wybranych plików i ich 
uaktualniania. G-DATA Backup sporządza 
pełne kopie wskazanych danych, a oprócz 
tego potrafi uaktualniać zawartość kopii 
metodą różnicową lub przyrostową. Kopie 
zapasowe można automatycznie wysyłać 
na serwer FTP. W cenie programu G-DATA 
Software zapewnia bezpłatne konto na 
serwerze FTP o rozmiarze 1 GB. 

•   G DATA Tuning – moduł służy do 

optymalizacji ustawień systemów 
Windows Vista, XP oraz 2000. Narzędzie 
skanuje komputer w poszukiwaniu 
potencjalnych problemów i optymalizuje 
system zgodnie z preferencjami 
użytkownika. Zintegrowane narzędzie 
do defragmentacji dysków twardych 
pozwala przyspieszyć pracę napędu 
i zapobiec wystąpieniu awarii. G-
DATA Tuning usuwa niepotrzebne pliki 
tymczasowe zapisywane przez różne 
aplikacje. Naprawia także błędy w 

rejestrze systemu. Dzięki temu zwiększa 
się stabilność i szybkość działania 
obsługiwanych systemów operacyjnych.

Wymagania:
Windows 2000 z SP4, WindowsXP z SP2 
(32/64-bit) lub Windows Vista (32/64-bit )
Od 256 MB RAM
Dostęp do Internetu

MCAFEE TOTAL PROTECTION 

Z SITEADVISOR PLUS

Pakiet McAfee Total Protection zapewnia 
profilaktyczną ochronę 12 w 1, a program 
McAfee SiteAdvisor Plus chroni komputer 
przed interakcją z niebezpiecznymi witrynami 
sieci Web poprzez mechanizm ocen stron. 
Ma także wbudowane usługi zapobiegające 
atakom hakerów. Ponadto umożliwia tworzenie 
kopii zapasowych i przywracanie danych. 

Program McAfee powstrzymuje i usuwa 

wirusy, a nawet można powiedzieć, że 

Tabela 1. 

Porównanie programów antywirusowych

Nazwa 

programu

Panda Internet 

Security 2008

G DATA 

TotalCare 2008

McAfee Total 

Protection 

z SiteAdvisor Plus

AVG SBS 

Edition

Trend Micro 

Internet Security 

Pro 2008

MKS

Cena brutto 

w PLN

219PLN

219.95PLN

299,00PLN

1370.04PLN

59,60 Euro

219PLN

Długość licencji 

w miesiącach

12

12

12

12

12

14

Ilość stanowisk 

- podstawowa

3

1

3

5

3

3

Antivirus

tak

tak (2 silniki)

tak

tak

tak

tak

AntiSpyware

tak

tak

tak

tak

AntiPhishing

tak

tak

tak

tak

tak

Firewall

tak

tak

tak

tak

tak

tak

Identity Protect 

(ochrona 

prywatności)

tak

tak

tak

Backup

tak + serwer 

1GB

tak + serwer 1GB

tak

Blokowanie 

ataków wirusów

tak

tak

AntiSpam

tak

tak

tak

tak

tak

tak

Ochrona 

rodzicielska

tak

tak – profile 

tak

tak

Tuning

tak

tak

tak

Wsparcie 

techniczne

24/365, 

bezpłatnie

8 – 18; pn-pt

z ważną licencją

24/7

24/7 online

9-20 pn-pt

bezpłatnie

Strona WWW

www.pspolska.pl

www.gdata.pl

www.mcafee.com/pl www.avgpolska.pl

www.quantus.pl

www.trendmicro.pl www.mks.com.pl

background image

70

 

RECENZJE

HAKIN9 7-8/2008

71

 

RAFAŁ PODSIADŁY 

HAKIN9 

7-8/2008

blokuje je, zanim znajdą się na komputerze. 
Blokuje oprogramowanie szpiegujące i 
usuwa spyware już obecne w systemie. 
Poprawia stan komputera, usuwając z niego 

zbędne pliki, dzięki czemu znajduje się on w 
lepszym stanie. Potrafi chronić tożsamość 
użytkownika, zabezpieczać przed spamem 
i fałszywymi wiadomościami e-mail.. Do 

jego możliwości należą także: automatyczne 
tworzenie kopii zapasowych, przywracanie 
plików, a nawet monitorowanie sieci lokalnej.

•   SecurityCenter – program zarządzający 

całym pakietem, zapewnia dostęp do 
szeregu funkcji, z których wymienić 
można: skanowanie komputera, 
wyświetlanie alertów, sprawdzanie 
dostępności aktualizacji czy 
konfigurowanie ustawień.

•   W celu umożliwienia swobodnej pracy 

na komputerze, grania i oglądania filmów 
udostępniono tzw. tryb bezinwazyjny. 

•   Funkcja tworzenia kopii zapasowych 

i przywracania danych zapisuje 
zaszyfrowane i skompresowane kopie 
najważniejszych plików w miejscu 
wskazanym przez użytkownika – na 
dysku twardym komputera, płycie CD/
DVD, urządzeniu pamięci USB lub na 
dysku zewnętrznym bądź sieciowym. 

•   Image Analysis – poprawia skuteczność 

ochrony przed potencjalnie obraźliwymi 
treściami i obrazami. 

•   SystemGuards – monitoruje komputer 

pod kątem aktywności określonego 
rodzaju, która może być przejawem 
działania wirusów, oprogramowania 
szpiegującego lub hakerów. 

•   X-Ray for Windows – wykrywa i eliminuje 

programy typu rootkit oraz inne 
niebezpieczne aplikacje, niewidoczne dla 
systemu Windows i innych programów 
antywirusowych. 

•   Network Manager – monitoruje 

komputery w sieci w poszukiwaniu luk 
w zabezpieczeniach; można więc łatwo 
rozwiązać te problemy z poziomu jednej 
scentralizowanej mapy sieci. 

•   EasyNetwork – umożliwia automatyczne 

udostępnianie drukarek i plików metodą 
przeciągnij i upuść między zaufanymi 
komputerami w sieci domowej. 

•   Shredder – to komputerowy odpowiednik 

niszczarki dokumentów, program 
skutecznie usuwający z systemu poufne 
pliki i wszelkie ślady po nich.

Wymagania:
Microsoft® Windows 2000 z dodatkiem 
Service Pack 4 (SP4) lub nowszym, 
Windows XP z dodatkiem Service Pack 
1 (SP1) lub nowszym, komputer PC z 
systemem Windows Vista i procesorem 
zgodnym z Pentium 500 MHz lub szybszym 

Filip Demianiuk, Technical 

Channel Manager – Trend Micro

Trend Micro IS 2008 został zaprojektowany jako pakiet dla użytkowników, 
którzy intensywnie wykorzystują komputer do różnorodnych działań 
on-line. Najnowsza wersja umożliwia im korzystanie z Internetu z 
pełnym poczuciem bezpieczeństwa. Użytkownicy będą mogli bez obaw 
korzystać z poczty elektronicznej, sklepów i usług bankowych, ponieważ 
ich tożsamość, prywatność i zawartość komputera są zabezpieczone. 
IS 2008 zabezpiecza wszystkie punkty ataku, od systemu operacyjnego 
po przeglądarkę i klawiaturę. Uwzględniając wyniki badań, w pakiecie 

zastosowano udoskonalone funkcje ochronne. Obejmują one między innymi prewencyjne blokowanie 
włamań, ochronę przed zagrożeniami internetowymi, szersze możliwości blokowania spamu, wraz 
ze sprawdzeniem autentyczności źródła pochodzenia wiadomości, dwukierunkową zaporę, w pełni 
zintegrowane mechanizmy antywirusowe i zwalczające programy szpiegujące a także zabezpiecza 
przed mechanizmami ukrywającymi złośliwe procesy systemowe, czyli tak zwane rooktkity. 

Adam Żelazko, Product & 

Marketing Manager – Panda Security

Firewall, technologie proaktywne, zaawansowane wykrywanie rootkitów 
jest dziś niezbędne by czuć pełne bezpieczeństwo w sieci. Z takim 
stwierdzeniem spotkać można się już od dawna. Często pojawia się 
jednak pytanie, czy posiadane oprogramowanie zabezpieczające 
rzeczywiście spełnia pokładane w nim nadzieje? Panda Security 
uruchomiła serwis www.infectedornot.com, który pozwala skorzystać z 
niezwykle skutecznego skanera online. Activescan 2.0 wykryje wszelkie 
zagrożenia, a po rejestracji pozwoli część z nich usunąć. Co ciekawe 

system poinformuje nas też o tym czy posiadane oprogramowanie antywirusowe jest aktywne i 
zaktualizowane. Wiedza ta pozwoli nam podjąć odpowiednie kroki by wzmocnić zabezpieczenia 
systemu w domy lub firmie. Pamiętajmy: brak oznak infekcji nie oznacza, iż jesteśmy bezpieczni.

Maciej Moskowicz, Technical 

Support Manager – AVG POLSKA

Obecnie surfujący w Internecie użytkownicy komputerów, są narażeni na 
bardziej agresywne i niebezpieczne ataki (np. automatyczne downloady 
bez wiedzy użytkownika). Zagrożenia te pozwalają ich twórcom na 
kradzież osobistych informacji, śledzenie ruchów użytkownika w sieci, 
kradzież pieniędzy z konta bankowego lub uzyskanie danych karty 
kredytowej, itp., wszystkie tworzone są w celu odniesienia korzyści 
finansowych. Techniki te początkowo skierowane były w słabe 

punkty systemu operacyjnego Windows oraz przeglądarki Internet Explorer, następnie uderzyły w 
mniej zabezpieczane aplikacje pomocnicze jak WinZip, czy QuickTime, a w ostatnich miesiącach 
skierowane zostały na aplikacje internetowe, takie jak wyszukiwarki, wspólnoty internetowe, reklamy 
oraz zwykłe strony, jak Better Business Bureau w USA, czy strona Pierwszej Ligii Baseballa.

AVG zyskało reputację dostawcy rozwiązań zabezpieczających, które są bezwzględne dla 

zagrożeń i przystępne zarówno dla dużych firm, jak i dla zwykłych użytkowników. Program działa 
niezauważenie przy jednoczesnej minimalizacji wykorzystania krytycznych zasobów systemu. 
AVG dostarcza wzmocnione zabezpieczenie przeciw tradycyjnym zagrożeniom, takimi jak wirusy, 
spam, spyware i konie trojańskie, jednocześnie z nowymi zabezpieczeniami, chroniącymi przed 
pojawiającymi się zagrożeniami w sieci, takimi jak automatyczne pobieranie plików bez wiedzy 
użytkownika ze stron www lub przez komunikatory internetowe, phishing czy rootkity.Mechanizm 
Safe Serach zintegrowany z przeglądarkami Internet Explorer i Firefox oflagowuje zawierające 
zagrożenia - wyniki wyszukiwania uzyskane przy wykorzystaniu przeglądarek Google, Yahoo i MSN. 

background image

70

 

RECENZJE

HAKIN9 7-8/2008

71

 

RAFAŁ PODSIADŁY 

HAKIN9 

7-8/2008

oraz co najmniej 256 MB pamięci RAM
Rozdzielczość ekranu 800x600 lub wyższa 
Dostęp do Internetu
Oprogramowanie .NET Framework w wersji 
1.1.4322
Microsoft® Internet Explorer 6.0 lub nowszy 
Opcjonalnie: Przeglądarka Mozilla Firefox 1.5 
lub nowsza 

MKS

Firma MKS jest dostawcą oprogramowania 
antywirusowego od 1987 roku. Pierwsze 
edycje programu składały się wyłącznie ze 
skanera plików. Z czasem liczba modułów 
rosła, w najnowszej wersji jest ich już 6. 

Oprogramowanie zawiera następujące 

moduły:

•   filtr spamu, w pełni współdziałający ze 

skanerem poczty (obsługującym już 
SMTP i SSL),

•   zaporę sieciową, wyposażoną 

dodatkowo w IDS (system wykrywania 
włamań), możliwość szczegółowego 
ustawiania reguł ruchu sieciowego 
oraz blokowania wskazanych stron 
internetowych,

•   skaner plików, który może teraz zostać 

uruchomiony za pomocą metody 
przeciągnij i upuść (drag & drop), 

•   monitor rejestru,
•   konsola zarządzania.

Wymagania:
Windows 2000 (SP4)/XP (SP2)/Vista (32-bit) 
Serwery: Windows 2000/2003 Serwer 
Procesor klasy Pentium lub nowszy 
Napęd CD-ROM lub DVD 
Program Internet Explorer w wersji 6.0 lub 
wyższej 
Wolna przestrzeń dyskowa: 100 MB 
Windows Installer 3.1 

TREND MICRO IS PRO 2008

IS 2008 PRO jest rozwiązaniem służącym 
do kompleksowego zabezpieczania 
antywirusowego pojedynczych stacji 
roboczych, sieci domowych oraz sieci 
bezprzewodowych. Usługi nowej generacji 
zapewniają kompletną ochronę przed 
wirusami, robakami, trojanami, rootkitami, 
spamem oraz nieautoryzowanym dostępem 
do poufnych informacj. Ponadto umożliwia 
szyfrowanie wszystkich przechowywanych 

w komputerze informacji, tworząc wirtualny 
sejf
 chroniący dane użytkownika np. w 
przypadku kradzieży bądź zgubienia 
komputera. Dodatkowo posiada moduł 
do szybkiego przywracania systemu 
operacyjnego uszkodzonego przez złośliwe 
oprogramowanie oraz System Tuner, 
umożliwiający optymalizację wydajności i 
stabilności pracy komputera. Moduły:

•   Zdalna blokada plików – umożliwia 

szyfrowanie wybranych plików i folderów, 
chroniąc właścicieli komputerów przed 
nieautoryzowanym dostępem do ich 
danych

•   Wi-Fi Advisor – umożliwia sprawdzanie 

wiarygodności i legalności punktów 
dostępu bezprzewodowego (tzw. 
hotspotów) i sieci Wi-Fi, 

•   Szyfrowanie informacji wprowadzanych 

za pomocą klawiatury – chroni przed 
programami przechwytującymi 
informacje wprowadzane za pomocą 
klawiatury, takie jak hasła, czy numery kont 

•   Strojenie systemu – zwiększa wydajność 

komputera poprzez czyszczenie 
rejestru i plików tymczasowych oraz 
kontrolę czynności wykonywanych po 
uruchomieniu komputera

•   Prewencyjna blokada antywłamaniowa 

- blokuje próby nieautoryzowanych zmian 
systemu operacyjnego i krytycznego 
oprogramowania

•   Beztroskie klikanie – umożliwia 

blokowanie dostępu do niebezpiecznych 
stron internetowych i zawartych w 
wiadomościach e-mail odnośników do 
nich prowadzących 

•   Monitorowanie sieci bezprzewodowej 

– identyfikuje i pozwala na blokowanie 
nieuprawnionych użytkowników domowej 
sieci bezprzewodowej. 

•   Kontrola sieci domowej - pozwala 

na zarządzanie, konfigurowanie oraz 
aktualizowanie stanu zabezpieczeń 
każdego komputera podłączonego do 
domowej sieci z wykorzystaniem prostej 
w użyciu konsoli zarządzającej. 

•   Zaawansowana kontrola rodzicielska 

– pozwala rodzicom kontrolować 
korzystanie przez dzieci z Internetu, 
poprzez blokowanie stron internetowych z 
niepożądaną zawartością.

•   Zapora osobista – przechwytuje 

działania hakerów i wirusów sieciowych, 
atakujących komputer i sieć domową

Wymagania:
Windows XP z SP2 lub Windows Vista (32/
64 bit), procesor Intel Pentium 800 MGHz, 
min. 256 RAM 
Jedna licencja na oprogramowanie 
Trend Micro Internet Security Pro pozwala 
na objęcie ochroną trzech komputerów 
domowych lub przenośnych.

AVG SBS EDITION 

Bazujący na AVG Internet Security AVG 
SBS został zaprojektowany specjalnie, by 
sprostać potrzebom małych i średnich 
firm. W skład pakietu ochronnego wchodzą 
moduły: antywirusowy, antyszpiegowski, 
antyspamowy oraz zapora sieciowa 
(firewall). AVG Internet Security SBS Edition 
chroni dane na indywidualnych stacjach 
roboczych, jak również na serwerach plików 
i poczty. Narzędzie zdalnej administracji 
AGADMIN pozwala na łatwe zarządzanie 
wszystkimi ustawieniami programu i 
aktualizacjami. Dodatkowo wszyscy 
użytkownicy komercyjni mają dostęp do 
darmowego wsparcia technicznego 24/7.

W składzie pakietu AVG Internet 

Security SBS Edition znajdują się:

•   AVG Email Server Edition (z ochroną 

serwera plików),

•   AVG Internet Security Network Edition,
•   AVG pro Share Point Portal Server,
•   AVG Remote Administration.

Wymagania:
Procesor Intel Pentium 1,2GHz 
256MB RAM 
70MB wolnej przestrzeni dyskowej 
system plików NTFS 

PODSUMOWANIE

Pytanie który program wybrać, który jest 
najlepszy, a najprostszą odpowiedzią będzie 
pytanie, do czego ten program ma być, czy 
chcemy za pomocą niego opiekować się 
siecią w w firmie, czy potrzebujemy program 
do domu, ważne jest to byśmy wiedzieli czego 
chcemy, wtedy ta cała lista nieznanych nam 
wcześniej programów i tych znanych staje się 
bardzo krótka do kilku pozycji.

Rafał Podsiadły

Rafał Podsiadły – administrator, serwisant, programista 

C++, Delphi, JAVA, PHP, HTML, 

Kontakt z autorem: spinacz24@gmail.com

background image

72

 

WYWIAD

HAKIN9 7-8/2008

WYWIAD Z MACIEJEM RYBACKIM

73

 

HAKIN9 

7-8/2008

mnie, mojego czasu i moich oczekiwań 
co do szkolenia – rozumianego nie tylko 
jako przekazanie wiedzy, ale w szerszym 
kontekście. Długo myślałem, jak można 
by wykorzystać wnioski, jakie udało mi 
wyciągnąć i tak powstała koncepcja 
naszego Centrum, którą dziś sumiennie 
realizujemy. Jesteśmy młodą firmą i 
wciąż daleka droga przed nami, ale 
wspieramy się – i to nie są puste słowa 
– najlepszymi trenerami na rynku. Dzięki 
temu zdobywamy uznanie i zaufanie 
coraz liczniejszej rzeszy renomowanych 
klientów.

h9: Czy planuje Pan otwarcie 
kolejnego centrum szkoleniowego w 
innym mieście w Polsce? 
Jeśli tak, to jakie lokalizacje bierze 
Pan pod uwagę?
M.R.: Odpowiedź jest prosta. Jak 
każda firma, planujemy się rozwijać. 
Zaplanowaliśmy już także, w którym 
kierunku pójdziemy. 

Tak naprawdę – wszystko zależy 

od nas i naszej pracy. Obecnie 
dysponujemy jedną siedzibą w 
Warszawie i do dyspozycji naszych 
kursantów jest 30 stanowisk 
komputerowych. Lokal daje nam 
możliwość dostawienia jeszcze 20 
komputerów. Dopiero wtedy postawimy 

na ekspansję na inne rynki. Myślimy 
o wschodzie Polski, ale na to jeszcze jest 
czas.

h9: Spotyka się Pan pewnie na co 
dzień z osobami o różnym stopniu 
doświadczenia komputerowego. Jaka 
jest wśród tych osób świadomość 
zagrożeń, jakie czyhają na nich w 
cyberprzestrzeni?
M.R.: Jeśli rozmawiamy o ludziach, którzy 
dopiero zaczynają się interesować 
bezpieczeństwem, to niestety często nie 
mają oni żadnego pojęcia, co to jest i jakie 
są zagrożenia. Początkowo wydawało mi 
się, że każdy posiada choćby szczątkową 
wiedzę o wirusach czy złośliwych 
hakerach. Jednak prawda okazuje się 
całkiem inna. Coraz boleśniej zdajemy 
sobie z tego sprawę po szkoleniach m.in. 
z podstaw obsługi komputera i pracy w 
Internecie. Każde takie szkolenie wiąże 
się dla nas z koniecznością czyszczenia 
i czasem naprawiania systemów lub 
całych komputerów. Oczywiście w 
koszty takiej działalności jest wliczone 
niebezpieczeństwo i praca, jaką trzeba po 
takim szkoleniu wykonać, aby następne 
grupy mogły w pełni korzystać z naszej 
wiedzy. Bezpieczeństwo to bardzo szerokie 
pojęcie, ale jeśli rozmawiamy o ludziach 
wykorzystujących komputer jako narzędzie 

hakin9: Skąd się wziął pomysł na 
stworzenie takiego centrum i jak 
długo Diacom istnieje na rynku?
Maciej Rybacki: Pomysł narodził się 
w dość prozaiczny sposób. Parę 
lat temu sam byłem uczestnikiem 
szkolenia komputerowego – dodam, że 
z własnego wyboru, a nie z polecenia 
przełożonych. Wspominam o tym, bo 
ma to istotne znaczenie w podejściu 
do szkolenia i jego odbiorze jako 
całości. Wobec szkolenia miałem wiele 
oczekiwań i oceniając je dziś mogę 
stwierdzić, że zostały one zaspokojone. 
Podniosłem swoje kwalifikacje i 
posiadłem umiejętności, z których 
korzystam do dziś. To ta pozytywna 
strona medalu. W chwili, gdy spojrzałem 
na całe szkolenie okiem specjalisty 
ds. jakości, zdałem sobie sprawę, że 
mnie rozczarowało. Przeciętny poziom 
obsługi klienta, sprzęt pamiętający 
poprzednie stulecie i zdarzające się 
bardzo często sytuacje braku miejsca 
do szkolenia dla mojego wykładowcy 
i mnie – to nie powinno nigdy mieć 
miejsca w prawdziwej jednostce 
szkoleniowej. Analizowałem tę sytuację 
dalej i doszedłem do wniosku, że jeśli 
płacę 1500-2000 złotych za zdobycie 
konkretnej wiedzy, to mam prawo 
oczekiwać profesjonalnego podejścia do 

Stawiamy na 

jakość

Z wykształcenia jestem specjalistą do spraw jakości, z wyboru – prezesem 

prężnie rozwijającej się firmy szkoleniowej Diacom. Jestem osobą, która wie, 

czego chce i nigdy się nie poddaje.

background image

72

 

WYWIAD

HAKIN9 7-8/2008

WYWIAD Z MACIEJEM RYBACKIM

73

 

HAKIN9 

7-8/2008

pracy czy zabawy, to okazuje się, że 
osoby korzystające z tych urządzeń od 
lat czasem zachowują się jak małe dzieci 
– wchodząc na strony o podwyższonym 
stopniu ryzyka lub korzystając z urządzeń 
zewnętrznych przenoszących dane, bez 
jakiejkolwiek kontroli. Zawsze staramy się 
tłumaczyć naszym klientom, że istnieją 
pewne zasady, które mogą nam pomóc 
uchronić się, oczywiście w jakimś stopniu, 
przed niebezpieczeństwem. Widzę jednak, 
że ciekawość ludzka, a czasem niestety 
wręcz głupota, są nieprzewidywalne.

h9: Co jest powodem takiego 
(niskiego/wysokiego) poziomu 
wiedzy na temat bezpieczeństwa 
komputerowego wśród Polaków? 
M.R.: Moim zdaniem wynika to bardzo 
często z doświadczenia w zakresie 
zagrożeń, z jakimi dana osoba miała już 
do czynienia, a także jest przynajmniej 
w pewnym stopniu uwarunkowane 
zadaniami wykonywanymi w miejscu 
pracy. Wiele osób zdaje sobie sprawę, że 
jeżeli coś pobiorą w domu czy w pracy, 
nieodpowiednio zabezpieczą sieć, to 
za chwilę utracą istotne dane. Mówiąc 
krótko – wiedza ta wynika z lekceważenia 
lub nieznajomości wszystkich zagrożeń. 
Coś takiego jest w ludziach, że jeśli ktoś 
nam grozi nożem, to dla wielu jest to 
bardziej niebezpieczne niż jakieś nie tak 
namacalne wirusy. Zapominamy jednak, 
że żyjemy w świecie informacji i utrata 
takowej może nas wiele kosztować.

h9: W jaki sposób należy 
uświadamiać ludzi o 
niebezpieczeństwach wynikających z 
korzystania z komputerów? 
M.R.: Chyba nie ma uniwersalnego 
sposobu, a przynajmniej takiego nie 
znam. Zależy, o jakich zagrożeniach 
chcemy mówić, a niebezpieczeństw 
jest wiele! Wirusy, treści, jakie można 
znaleźć w Internecie, błędy w konfiguracji 
naszego systemu. Nie ma też przecież 
uniwersalnego środka, żeby uchronić 
się przed wszystkimi zagrożeniami. 
Kampanie reklamowe nie do końca 
spełniają swoją rolę informacyjną, 
podobnie wiedza przekazywana z ust do 
ust. Oczywiście, ludzie kupują programy 
antywirusowe, płacą specjalistom 
za rozwiązania, które mają zapewnić 

bezpieczeństwo, ale tak naprawdę gdyby 
któryś z hakerów rzeczywiście chciał 
się włamać, to najczęściej i tak mu się 
to uda. Można się uchronić całkowicie 
– nie podłączać komputera do sieci, 
nie instalować w nim oprogramowania 
nieznanego pochodzenia, nie korzystać z 
pamięci przenośnych i traktować go jako 
maszynę do pisania – to chyba jedyna 
stuprocentowo pewna metoda.

h9: Co, według Pana, powinien 
wiedzieć o bezpieczeństwie każdy 
człowiek, który korzysta z komputera ?
M.R.: Dobrze byłoby, jakby wiedział 
wszystko choć w ogólnych zarysach, ale 
to bardzo trudno sprzedać w pigułce. 
Można omawiać różne zaawansowane 
zabezpieczenia, robić szkolenia z tego 
tematu, albo z bezpiecznego przesyłania 
danych. Ale co z tego, jeśli naprawdę 
skuteczne rozwiązanie często kosztuje 
majątek i jest przeznaczone dla osób 
(albo raczej firm) które mają duże 
pieniądze. Pomocne na pewno są 
specjalistyczne szkolenia z tej tematyki, 
ale zainteresowanie nimi występuje raczej 
wśród wąskiej grupy odbiorców.

h9: W erze rozwoju systemów 
informatycznych Wasza firma 
wychodzi z ciekawą propozycją dla 
firm – jakie jest zainteresowanie 
kursami?
M.R.: Jest ono coraz większe, ale mogłoby 
być jeszcze lepiej – wszystko rozbija się 
o to, że jesteśmy nowi na rynku i – co 

zrozumiałe – trudniej nam pozyskać 
klientów i zdobyć ich zaufanie. Mogę 
jednak śmiało stwierdzić, że są klienci, 
którzy zdecydowali się na korzystanie tylko 
z naszych usług i spotykamy się z bardzo 
pochlebnymi opiniami co do naszych 
szkoleń. Udaje nam się przekonywać 
firmy pomimo młodego wieku naszego 
Centrum. Korzystamy z wiedzy oraz 
doświadczenia trenerów z wieloletnim 
stażem, stąd stawiamy coraz pewniejsze 
kroki na polu ofert dla firm.

W swojej ofercie mamy wiele 

konkretnych szkoleń, ale gdyby firma 
chciała odbyć szkolenie szyte na miarę
to dzięki naszej kadrze jesteśmy w 
stanie sprostać i takim wyzwaniom. 
Oczywiście klient w takich wypadkach 
musi dać nam zawsze trochę czasu na 
przygotowanie takiego szkolenia, ale ma 
za to pewność, że jego potrzeby zostaną 
w stu procentach zaspokojone.

W jakim kierunku rozwija się firma 

– czy to są także kursy z zakresu 
bezpieczeństwa, które jest ostatnio na 
topie? Planujemy rozwijać się w kierunku 
ściśle specjalistycznych szkoleń. Ale 
żeby uruchomić takie szkolenia np. z 
zakresu bezpieczeństwa, to najpierw 
musimy wyrobić sobie jeszcze lepszą 
pozycję na rynku.

h9: Czy podczas kursu stawiają 
Państwo na ćwiczenia praktyczne, czy 
na teorię?
M.R.: Szkolenia są w zasadzie 
praktyczne. Zaczynają się tylko od 

background image

74

 

WYWIAD

HAKIN9 7-8/2008

wstępu teoretycznego. Z drugiej strony, 
planujemy wprowadzenie szkoleń, 
które będą w całości teoretyczne – ale 
to będzie dość specyficzna wiedza z 
zakresu zasad drukarskich i fotomontaży. 
Niemniej znacząco przeważają kursy 
praktyczne – każdy siedzi przy swoim 
stanowisku komputerowym, wykonuje 
własnoręcznie ćwiczenia i poprzez to 
poznaje dane narzędzie. 

Szkolenia staramy się udoskonalać 

na bieżąco, oczywiście nigdy nie 
zakładamy, że już nic w materiale nie 
zmienimy. Jeżeli chodzi o materiały 

pomocnicze, to mamy je solidnie 
przygotowane. 

h9: Czy przewidują Państwo kursy i 
szkolenia prowadzone przez Internet?
M.R.: Szkoła przez Internet to fajna idea, 
tylko do tego już jest potrzebna większa 
platforma. Z tego, co się orientuję, 
w Polsce są 4, może 5 szkół, gdzie 
widziałem w ofercie takie szkolenia. 
Nie są to jednak jakieś rozbudowane 
kursy – polegają na postępowaniu krok 
po kroku według jakiegoś schematu, 
a nie jak w klasycznym rozumieniu e-

learningu, gdzie logujemy się i możemy 
w czasie rzeczywistym prowadzić 
interakcję z wykładowcą. Choć może 
po prostu ja do takich nie dotarłem. My 
generalnie stawiamy na szkolenia face 
to face, grupowe – naszym i chyba nie 
tylko naszym zdaniem, człowiek tak się 
lepiej uczy

h9: Czy planowane są szkolenia 
na programach open source, np. 
OpenOffice?
M.R.: Dalekosiężnie planujemy wiele 
rzeczy. Oczywiście, że tak – ale należy 
pamiętać, że wprowadzenie szkolenia do 
oferty to nie tylko przygotowanie programu 
i jego wycena. To również – a może 
przede wszystkim – zakup programów 
i stworzenie materiałów szkoleniowych. 
Zatem – spokojnie i po kolei.

h9: Jakie jest Pana zdanie na temat 
magazynu hakin9 jako medium 
dotarcia do specjalistów IT?
M.R.: Kiedy się jeszcze nie poznaliśmy, 
wiedziałem że istnieje takie pismo jak 
hakin9 – temat się jakoś przewijał, 
ale nie miałem okazji zapoznać się 
z tym tytułem bliżej. Teraz chętnie 
czytam. Sam sposób przekazania 
informacji jest podobny, jak w innych 
czasopismach komputerowych – a 
że jest on już dopracowany, to nie ma 
sensu na siłę kombinować i wymyślać 
innowacje, które mogą nie przypaść 
do gustu Czytelnikom i się po prostu 
nie sprzedać. Ludzie po prostu lubią 
schematy. A hakin9 uważam za ciekawy, 
mogę w nim odnaleźć coraz więcej 
interesujących mnie kwestii, coraz 
częściej wiem dokładnie, o co chodzi 
w artykule, szukam sobie później 
dodatkowych informacji. Oczywiście 
zdarzają się teksty, po przeczytaniu 
których muszę się solidnie zastanowić, 
czy je dobrze zrozumiałem. Nie 
niepokoi mnie to jednak, informatyk od 
wszystkiego jest przecież informatykiem 
do niczego. Sądzę, że nie ma ludzi, 
którzy wiedzą wszystko – sam dowiaduję 
się wielu interesujących rzeczy zarówno 
od swoich trenerów, jak i od samych 
kursantów.

h9: Dziękujemy za rozmowę.
M.R.: Dziękuję.

background image

Prenumerata Pro

Media

 

Systems

Firma Media Systems oferuje Państwu 
usługi  oparte  o  rozwiązania  systemu 
CashBill.pl  i  są  to:  organizacja  kam-
panii marketingowych opartych o kon-
kursy SMS’owe, organizacja kampanii 
reklamowych serwisów internetowych, 
system  płatności  elektronicznych  po-
przez karty płatnicze i przelewy. Prócz 
wymienionych  usług  oferujemy  także 
budowę  stron  www,  sprzedaż  domen 
oraz  pozycjonowanie  w  wyszukiwar-
kach. Zapraszamy do współpracy.

TTS Company Sp. z o.o.

Oprogramowanie komputerowe - sprze-
daż,  dystrybucja  oraz  import  na  za-
mówienie.  W  ofercie  programy  autor-
stwa ponad dwustu firm z całego świa-
ta. Chcesz kupić oprogramowanie i nie 
możesz  znaleźć  polskiego  dostawcy? 
Skontaktuj  się  z  nami  –  sprowadzimy 
nawet pojedyncze licencje.

www.OprogramowanieKomputerowe.pl

CCNS

Działalność  firmy  skoncentrowana  jest 
wokół hasła zapewnienia pełnego bez-
pieczeństwa  funkcjonowania  Klienta 
w  realiach  współczesnej  gospodarki. 
Jako Expert Partner firmy WatchGuard 
Inc. oferujemy kompleksowe rozwiąza-
nia  bezpieczeństwa  sieci  i  systemów 
informatycznych  obejmujące  nowo-
czesne  urządzenia  typu  Unified  Thre-
at  Management,  niezawodny  serwis 
i szeroki wachlarz szkoleń.  

www.ccns.pl

Petrosoft

Partner  Microsoft  Bussiness  Solutions 
Dynamics  GP.  Budowa  sklepów  inter-
netowych,  serwisów  WWW,  prezenta-
cji multimedialnych. Budowa sieci LAN, 
WAN,  telekomunikacyjnych.  Telefonia 
stacjonarna,  VoiceIP.  Usługi  outsorcin-
gowe  dla  dużych  firm  z  zakresu  infor-
matyki  i  telekomunikacji.  Oprogramo-
wanie na zamówienia. Dostawa serwe-
rów, sprzętu, oprogramowania.

38-200 Jasło, ul. 3 Maja 101

Biuro: (13) 44 66 666

biuro@petrosoft.pl

kontakt do nas: 

katarzyna.juszczynska@software.com.pl, 

robert.gontarski@software.com.pl

tel.: 22 427 36 77

Enigma SOI

Głównym przedmiotem działalności fir-
my jest produkcja, wdrażanie i sprze-
daż  systemów  służących  do  ochrony 
informacji.

• elektroniczna skrzynka podawcza
• centra certyfikacji kluczy
•  podpis elektroniczny i szyfrowanie 

na serwerach i stacjach klienckich

• zabezpieczanie stacji lokalnych
• karty elektroniczne i czytniki

www.enigma.com.pl

Kei.pl

Kei.pl  działa  na  rynku  usług  hostingo-
wych  od  2000  roku.  Do  naszych  za-
dowolonych Klientów z dumą możemy 
zaliczyć  wiele  przedsiębiorstw  sektora 
MSP,  instytucji  oraz  osób  prywatnych. 
W ofercie Kei.pl znajdują się pakiety ho-
stingowe, a także usługi dla wymagają-
cych  Użytkowników  –  platformy  e-Biz-
nes oraz serwery fizyczne.

www.kei.pl

Sokra-NET

Działa  od  roku  2002,  specjalizuje  się
w szeroko pojętym bezpieczeństwie in-
formacji. Posiada wykwalifikowany spe-
cjalnie do tych celów zespół inżynierów 
którzy przy współpracy z naszymi klien-
tami  maksymalizują  bezpieczeństwo 
danych,  audytując  i  dobezpieczając. 
Wykonujemy  testy  penetracyjne,  ana-
lizy kodów źródłowych, testy wydajno-
ściowe  aplikacji  i  ich  środowisk  telein-
formatycznych. Wdrażamy polityki bez-
pieczeństwa.  Wspomagamy  naszych 
partnerów merytorycznie.

www.sokra.net 

Sokra-NET

background image

76

 

KSIĄŻKI

HAKIN9 7-8/2008

77

 

HAKIN9 

7-8/2008

Bezpieczeństwo Microsoft 

Windows – Podstawy praktyczne

Niejako na przekór zmasowanemu 
atakowi użytkowników systemów 
Linuksowo-Uniksowych na aspekty 

bezpieczeństwa w systemach Windows, 
Microsoft stworzył całościową, spójną strukturę 
Active Directory, która w sieciach opartych na 
Windows Server 2003 daje potężne możliwości 
zabezpieczeń i administracji. Należy sobie 
uświadomić że zabezpieczenie sieci to nie tylko 
zapora sieciowa, lecz również ochrona dostępu 
do danych. 
Zagrożenie dla naszych danych pochodzi 
nie tylko z zewnątrz sieci lokalnej, to także 
zagrożenia wynikające z dostępu użytkowników 
do informacji dla nich nie przeznaczonych. Tak 
więc bezpieczeństwa sieci nie należy rozumieć 
tylko w kategoriach wszelakiego typu firewalli, 
sond IPSowych i IDSowych. Bezpieczeństwo 
danych w sieci to znacznie więcej – również 
metody uwierzytelniania, autoryzacji, 
szyfrowanie, polityka praw dostępu, certyfikaty, 
podpisy elektroniczne itp. 
Myślę, iż tylko nieuświadomiony administrator 
bądź użytkownik może sądzić, że sieć oparta 
na Windows nie może być bezpieczna z 
definicji. 

Książka Bezpieczeństwo Microsoft Windows 

– Podstawy praktyczne jest kompleksowym 
opracowaniem na temat zabezpieczeń w 
Windowsach, które opisuje zarówno od 
strony serwera, jak i stacji roboczej. Autorami 
książki są specjaliści z firmy HP, zajmujący 
się na codzień bezpieczeństwem systemów 
Microsoft i Active Directory. Organizacja książki 
wyodrębnia wyraźnie trzy części. 

Część pierwsza książki wprowadza 

niezbędne pojęcia, definicje, standardy 
– wyjaśnia, co należy rozumieć pod takimi 
pojęciami, jak na przykład urzędy zabezpieczeń, 
zwierzchnicy zabezpieczeń, identyfikatory 
SID, relacje zaufania. Przedstawia także 
podstawowe aspekty bezpieczeństwa stacji 
klienckich (zabezpieczenia IE, Windows 
Defender
, zapora). 

W drugiej części omówione zostało 

uwierzytelnianie – skupiono się głównie na 
autentykacji IIS i Kerberos, ale opisano również 
integrację uwierzytelniania w systemach Unix/
Linux i Windows. 

Trzecia część książki to już szczegółowe 

omówienie kwestii autoryzacji. Opisana została 
w niej również delegacja Active Directory

Bezpieczeństwo Microsoft Windows 

skupia się głównie na architekturze opartej 
na systemie Windows Server 2003 i Active 
Directory
. Pokazuje dostępne rozwiązania 
i możliwości, jakie powinien poznać każdy, 
kto chce zaprojektować bezpieczną sieć 
IT przy pomocy produktów Microsoftu. 
Niektóre z przedstawionych rozwiązań są 
często zapominane przez administratorów. 
Niewątpliwie duża liczba tabel sprawia, że 
książka po przeczytaniu nie jest odstawiana na 
półkę, tylko może być pomocnym narzędziem 
w codziennej pracy administratora – wymienić 
tu można choćby tabele z kodami błędów 
Kerberosa i ich znaczeniem czy tabelę z 
typowymi maskami dostępu w Windows. Także 
solidna porcja rysunków poglądowych sprawia, 
iż złożone – i często skomplikowane – struktury 
przedstawione są w sposób prosty i zrozumiały. 

Moim zdaniem książka – pomimo tego, 

że adresowana do osób zajmujących się 
sieciami i znających przynajmniej podstawy ich 
działania, jest napisana jasno i przystępnie .

W odniesieniu do organizacji książki, można 

skrytykować wymieszanie metod zabezpieczeń 
Active Directory z pozostałymi – wydaje mi 
się, że dodatkowy podział na część dotyczącą 
stricte Active Directory i pozostałych rozwiązań 
byłby bardziej przyjazny dla Czytelników. 
Myślę także, iż w tytule książki nieco na wyrost 
użyto słowa praktyczne, książka jest bowiem 
według mnie bardzo dobrym opracowaniem 
teoretyczno-koncepcyjnym, natomiast nie 
pokazano w niej zbyt wielu przykładów 
praktycznych (co nie znaczy, że ich nie ma 
wcale!). 

Brakuje mi także bardziej szczegółowego 

opisu zasad tworzenia i możliwości polityk GPO

Moim zdaniem książka pod tytulem: 

Bezpieczestwo Microsoft Windows – Podstawy 
praktyczne
, której autorem jest Jan De Clercq, 
Guido Grillenmeier jest wartościową pozycją, 
godną polecenia z czystym sumieniem 
zarówno administratorom, jak i projektantom 
sieci. Dzięki przystępnemu językowi (pomimo 
objęcia wielu definicji i niekiedy dość 
skomplikowanych pojęć) można ją również 
zarekomendować Czytelnikom, którzy 
dopiero rozpoczynają poznawanie zagadnień 
Active Directory oraz administracji Windows 
Serverem 2003.

Autorzy: Jan De Clercq, Guido 

Grillenmeier

Wydawca: PWN

Rok wydania w Polsce: 2008

Liczba stron: 792

Recenzent: Zarychta Tomasz

background image

76

 

KSIĄŻKI

HAKIN9 7-8/2008

77

 

HAKIN9 

7-8/2008

Królicza Nora – ochrona sieci komputerowych

za pomocą technologii HoneyPot

Z ciekawością sięgnąłem po książkę 
pod tytułem Królicza Nora – ochrona 
sieci komputerowych za pomocą 

technologii HoneyPot, ponieważ interesuję się 
takimi systemami. Jest to pierwsza pozycja w 
języku polskim poświęcona tym rozwiązaniom, 
z którą się zetknąłem. Jej wstępne, pobieżne 
przejrzenie trochę mnie zraziło – autor czasem 
puszcza wodze fantazji (co najbardziej widać we 
wstępie i posłowiu). Jednak mimo tych zastrzeżeń 
przeczytałem całość i... zostałem bardzo miło 
zaskoczony. Książka może okazać się idealnym 
startem dla osób chcących rozpocząć swoją 
przygodę z systemami HoneyPot. Jest ona godna 
polecenia wszystkim entuzjastom bezpieczeństwa 
komputerowego, którzy chcą zapoznać się z tą 
coraz częściej stosowaną technologią. Pozycja ta 
może być wartościowa także dla administratorów 
maszyn podłączanych do sieci publicznie 
dostępnych. Wdrożenie przez nich systemu 
HoneyPot może zwiększyć bezpieczeństwo 
zarządzanych sieci, a co ważniejsze – umożliwić 
zdobycie unikalnej wiedzy na temat sposobów 
działania włamywaczy. 

Książka składa się z trzech części. Pierwsza z 

nich poświęcona jest wprowadzeniu do systemów 
HoneyPot, będących – najogólniej mówiąc 
– pułapkami na włamywaczy. Po zapoznaniu się 
z początkowymi sześcioma rozdziałami Czytelnik 
zyska teoretyczną wiedzę na temat opisywanych 
rozwiązań. Pozna ich historię, ideę działania oraz 
różne ich typy: poczynając od najprostszych 
programów, symulujących niezabezpieczone 
usługi, aż po całe sieci maszyn uruchamianych 
w środowisku wirtualnym. Książka prezentuje 
przykłady zastosowania tej technologii. Jako 
ciekawostka zostaje przedstawiony sposób 
przyłapania wścibskiego administratora za 
pomocą metody HoneyToken, zrealizowanej za 
pomocą listu elektronicznego.

Druga część poświęcona jest narzędziom 

pozwalającym uruchomić własny system 
HoneyPot. Autor prezentuje wiele programów 
umożliwiających budowę własnych pułapek 
do różnych zastosowań – od wykrywania 
aktualnych zainteresowań hakerów, poprzez 
walkę ze spamerami, a kończąc na systemach 
umożliwiających długotrwałe monitorowanie 
włamywacza w podstawionym systemie. Po 
przeczytaniu tej części każdy będzie w stanie 
rozpocząć swoją przygodę z rozwiązaniem, które 
odpowiada jego indywidualnym potrzebom. 

Pod koniec tej części znajduje się pełny 
opis umożliwiający zbudowanie własnego 
systemu HoneyPot wysokiej interakcji od 
zera. Przedstawione rozwiązanie oparte jest 
HoneyWall drugiej generacji oraz maszynę 
– przynętę z aktualnie najpopularniejszym 
programem monitorującym poczynania 
włamywacza - systemem Sebek.

Część trzecia jest wprowadzaniem do 

ostatniego – często zapominanego – kroku, 
związanego z monitorowaniem działania oraz 
analizą wyników uruchomionego systemu 
HoneyPot. Z powodu obszerności tej tematyki 
zostają tutaj krótko przedstawione narzędzia 
umożliwiające analizę ruchu dochodzącego 
do pułapki oraz zdobytego za jego pomocą 
podejrzanego kodu. Tutaj znajduje się jeden z 
najciekawszych moim zdaniem rozdziałów – opis 
zarejestrowanego krok po kroku włamania do 
rzeczywistego, uruchomionego przez autora 
sytemu. Czytelnik na jego podstawie może 
przekonać się, jakie informacje mogą zostać 
zarejestrowane za pomocą systemu HoneyPot 
wysokiej interakcji. 

Na zakończenie, w dodatkach omówiono 

jeszcze dwa zagadnienia. Pierwsze z nich 
obejmuje techniki umożliwiające zdalne wykrycie 
systemów działających w środowisku wirtualnym. 
Wiedza ta jest rozwijana przez włamywaczy, 
ponieważ często maszyna – pułapka jest właśnie 
w takim środowisku uruchamiana. Wiedza, jak 
robią to osoby stojące po drugiej stronie barykady, 
może pomóc w konfiguracji trudniejszych do 
wykrycia pułapek. Drugi dodatek poświęcony jest 
aspektom prawnym związanym z włamaniami, 
ujawnianiem i wykorzystaniem zdobytych 
informacji pod kątem uruchamiania systemów 
HoneyPot. Mimo, że jestem informatykiem, 
z ciekawością zapoznałem się z polskimi 
przepisami związanymi z tą tematyką.

Podsumowując, zachęcam wszystkie 

osoby zainteresowane bezpieczeństwem sieci 
komputerowych do zapoznania się z tą książką. 
Mimo przeczytania kilku pozycji dotyczących tej 
tematyki w języku angielskim, z przyjemnością 
zapoznałem się z tą pozycją napisaną po 
polsku, dowiadując się kilku nowych rzeczy. 
Moim zdaniem największą zaletą książki jest 
duża liczba opisów, przykładowych narzędzi oraz 
ich konfiguracji, co pozwoli zapoznać się z ich 
możliwościami i może być punktem wyjścia do 
własnych eksperymentów.

Autor: Michał Piotrowski

Wydawca: Wydawnictwo 

Naukowe PWN

Rok wydania w Polsce: 2007

Liczba stron: 324

Recenzent: Michał Piotrowski

KSIĘGOZBIÓR

background image

FELIETON

78

 

HAKIN9 7-8/2008

79

 

HAKIN9 

7-8/2008

Ataki 

społecznościowe

Spoglądając na członków społeczeństwa 
informacyjnego jako potencjalnych 
użytkowników technologii informatycznej, 
można uznać, że społeczeństwo informacyjne 
to społeczeństwo charakteryzujące 
się przygotowaniem i zdolnością do 
użytkowania systemów informatycznych, 
skomputeryzowane i wykorzystujące 
usługi telekomunikacyjne do przesyłania i 
zdalnego przetwarzania informacji
. Tak, jak 
w przypadku systemów informacyjnych, 
możemy spotkać się z definicjami 
społeczeństwa informacyjnego oraz 
społeczeństwa informatycznego. Należy 
pamiętać, że mając na myśli społeczeństwo 
informatyczne, określa się grupę społeczną, 
która posiada dostęp nie tylko do informacji, 
ale także do technologii informatycznych. 
Bez względu, która definicja zostanie użyta 
do scharakteryzowania społeczeństwa 
informacyjnego, trzeba mieć na uwadze, że 
to informacja jako proces stwarza możliwości 
technologiczne i staje się dominującą 

siłą napędzającą społeczeństwo. Mimo 
globalnego rozwoju informatycznego 
i mass mediów, cywilizacja informacji 
zajmuje pierwsze miejsce w nadawaniu 
tonu sposobowi życia społeczeństwa. 
Społeczeństwo, będąc pod wpływem takiego 
rozwoju, uzupełnia o nią swój model kultury 
i stylu życia. Aktualnym trendem w rozwoju 
światowej gospodarki jest wzrost skali 
występowania powszechnego dostępu do 
informacji, co czyni proces kształtowania 
się społeczeństwa informacyjnego bardziej 
zaawansowanym. Oczywiście, w każdym 
społeczeństwie – nawet informacyjnym 
– istnieje wiele problemów, które należy 
pokonać. Mimo, iż informatyzacja i globalny 
dostęp do informacji przynosi społeczeństwu 
możliwość życia na wyższym poziomie, to 
nie wszystkie jednostki posiadają dostęp 
do tych technologii, a tym samym cechuje 
je brak społecznej świadomości, wiedzy 
i doświadczenia w wykorzystywaniu 
dostępnych dla nich rozwiązań. Konsekwencją 

J

esteśmy społeczeństwem 
informacyjnym (ang. information 
society
) – czyli społeczeństwem, w 

którym głównym towarem przetargowym 
staje się informacja, traktowana jako 
szczególne dobro niematerialne, będąca 
częścią każdego produktu czy usługi i 
wykorzystywana w każdej sferze naszego 
dzisiejszego życia. W tym kontekście 
informacja staje się dla społeczeństwa 
informacyjnego równoważna, lub cenniejsza 
nawet od dóbr materialnych. Pojęcie 
społeczeństwa informacyjnego zostało 
wprowadzone w 1963 roku przez Japończyka 
T. Umesao (wersja oryginalna j

ō

h

ō

ka shakai

w artykule o teorii ewolucji społeczeństwa 
opartego na technologiach informatycznych. 
Przez lata definicja ta przechodziła bardzo 
długą ewolucję. W zależności od punktu 
spojrzenia i pełnionych funkcji, społeczeństwo 
informacyjne posiada wiele twarzy. Luc Soete, 
jeden z ekspertów Unii Europejskiej, definiuje 
społeczeństwo informacyjne w następującym 
kontekście: Społeczeństwo informacyjne to 
społeczeństwo, które właśnie się kształtuje, 
gdzie technologie gromadzenia i transmisji 
informacji i danych są powszechnie dostępne 
po niskich kosztach. Powszechnemu 
użyciu informacji i danych towarzyszą 
organizacyjne, komercyjne, społeczne i 
prawne zmiany, które głęboko zmieniają 
życie, pracę i społeczeństwo jako takie

Jedną z wiodących sił jest stale rosnąca moc obliczeniowa komputerów oferowanych 

na rynku, której towarzyszą spadające ceny. Innym elementem jest możliwość łączenia 

komputerów w sieci, pozwalająca im na dzielenie danych, aplikacji a czasami samej 

mocy obliczeniowej, na odległości tak małe jak biuro i tak duże jak planeta. 

Patryk Krawaczyński jest studentem Informacji Naukowej 

na Uniwersytecie Mikołaja Kopernika w Toruniu. W wolnych 

chwilach stara się prowadzić serwis na temat administracji 

oraz podstawowych mechanizmów bezpieczeństwa systemu 

operacyjnego Linux – www.nfsec.pl. Jego zainteresowania 

wiążą się także z ogólnymi zjawiskami zachodzącymi w 

społeczeństwie, na które oddziałują Technologie Informacyjne. 

Kontakt z autorem: agresor@nfsec.pl

background image

FELIETON

78

 

HAKIN9 7-8/2008

79

 

HAKIN9 

7-8/2008

tego może być rozwarstwienie się na dwie 
kategorie społeczne: osób korzystających 
na bieżąco z dóbr Technologii Informacyjnej 
(IT) oraz osób będących cywilizacyjnie i 
ekonomicznie upośledzonymi. Spośród 
innych problemów warto także zwrócić uwagę 
na kwestię bezpieczeństwa społecznego. 
Znacznie ułatwiony dostęp do informacji, która 
wcześniej była traktowana bardziej osobiście, 
może zagrażać prywatności oraz statusowi 
społecznemu poszczególnych jednostek. 
Pojawienie się nowej technologii zawsze rodzi 
możliwość wytworzenia się nowej kategorii 
nadużyć z nią związanych. 

Dlatego powiązanie społeczeństwa z 

wykorzystaniem danej technologii ściśle 
wiąże się z wieloma aspektami dobrego, 
złego i nieprzewidzianego jej użycia. Jako 
doskonały przykład można przytoczyć 
serwisy społecznościowe (Web 2.0), 
w których budowie i działaniu czynnie 
uczestniczy społeczeństwo informacyjne. 
Odnosząc się do kwestii bezpieczeństwa, 
można na początku nawiązać do różnic 
technologicznych w przestrzeni całego 
Internetu. Jak wiadomo, na serwisach 
społecznościowych przeprowadza się 
ocenę jakości dostarczonej informacji 
pod różnymi względami: przydatności, 
wiarygodności, nowości itd. Jednak sama 
technologia, której użyto do dostarczenia 
tej informacji, jest pomijana. Dlatego 
osoba oferująca skromne zaplecze 
technologiczne, ale odznaczająca się dużym 
potencjałem informacyjnym, z pewnością 
zostanie poszkodowana, gdy jej zasoby 
zostaną uznane za godne wyróżnienia na 
przykładowym serwisie społecznościowym. 
Dlaczego? Wyobraźmy sobie, że bardziej 
popularny serwis społecznościowy 
odwiedza pewna ilość osób. Każda z nich 
ma szerokopasmowe łącze, oferujące 
szybką penetrację Internetu w celu dotarcia 
do interesującej informacji. Po publikacji 
odnośnika na serwisie społecznościowym 
do strony, która utrzymywana jest na łączu 
o średniej przepustowości istnieje wielkie 
prawdopodobieństwo, że owa nieproszona 
popularność spowoduje przeprowadzenie 
nieświadomego ataku DoS (ang. Denial of 
Service
) przez użytkowników przykładowego 
serwisu na stronę, która została polecona 
jako godna odwiedzenia. Używając trochę 
wyobraźni i dopuszczając myśl, że ten sam 
link zostanie opublikowany jednocześnie 
na dwóch różnych serwisach przez tego 

samego użytkownika – dojdziemy do 
spowodowania nieświadomego ataku 
DDoS (ang. Distributed Denial of Service). 
W dodatku same serwisy społecznościowe 
stają się ofiarami tego rodzaju ataków – ze 
względu na swą rosnącą popularność, nie są 
w stanie obsłużyć wszystkich odwiedzających, 
którzy szerzą informację wśród kolejnych 
osób o pojawieniu się w Sieci nowego, 
ciekawego serwisu. Drugim pojawiającym 
się zagrożeniem jest problem skali po 
wykryciu ewentualnej luki w bezpieczeństwie 
i opublikowaniu jej w tego rodzaju serwisie. 
Skutki są naprawdę drastyczne. To, co 
miało przynieść autorowi wpisu większą 
bądź mniejszą sławę – stanowi karygodne 
posunięcie. Straty są tym większe, jeśli wpis 

zawierał dodatkowo szczegóły techniczne 
luki. Przykładem może tutaj być publikacja 
w serwisie – ukierunkowanym na różne 
technologiczne wpisy z blogów ludzi 
związanych z branżą IT – linku o informacji, 
że w danym oprogramowaniu istnieje luka 
X, a także, że można ją wykorzystać poprzez 
ABC. Na blogu podany jest ponadto link 
do strony producenta oprogramowania, 
na której zawarte są informacje o klientach 
wykorzystujących dziurawe oprogramowanie. 
Oczywiście, producent nie został jeszcze 
o tym fakcie powiadomiony, a niczemu 
nie winni klienci nawet nie są świadomi, że 
ktoś przekazał całej masie użytkowników 
instrukcje dotyczące możliwości 
przeprowadzenia ataku na ich zasoby. 

Kolejnym zagrożeniem jest bezpieczeństwo 
jako takie użytkowników posiadających 
konta w danych serwisach oraz Czytelników, 
którzy mogą zostać poddani manipulacji 
medialnej. Pierwsza z tych grup jest związana 
z wymogiem ochrony danych personalnych, 
znajdujących się w tego rodzaju serwisach, 
które są publicznie wystawiane jako baza 
danych. Każda taka baza powinna mieć 
wbudowaną danych zebranych przez 
serwis użytkowników w postaci wewnętrznej 
struktury, do której dostęp powinien być 
przyznany tylko i wyłącznie właścicielom 
danych osobowych, administratorom i 
Inspektorowi Ochrony Danych Osobowych 
(wyłączyć z tego można mechanizmy 
logowania oraz kopii zapasowych – jako 
procesy niezbędne do funkcjonowania 
serwisu) po uprzedniej autoryzacji, czyli 
podaniu nazwy użytkownika i hasła. Jednak 
wiele rodzajów tego typu serwisów nadal 
umożliwia obchodzenie wspomnianych 
mechanizmów bezpieczeństwa, poprzez 
stawianie nacisku na dzielenie się tymi 
danymi wśród użytkowników, bez możliwości 
określenia szczegółowych list dostępu 
dla osób postronnych. Z kolei mówiąc o 
manipulacji Czytelników, należy mieć na myśli 
fakt różnorakiego oddziaływania poprzez 
nich na opinię publiczną. Często osoby nie 
posiadające własnego zdania poddawane 
są sugestii w odniesieniu do różnego 
rodzaju tematów – w ten sposób stając 
się autorami fałszowania rzeczywistych 
osiągnięć i wyników, które zostałyby uzyskane 
w normalnym tego rodzaju procesie. 
Przykładem są różnego rodzaju sugestie na 
temat wypełniania sond czy ankiet, których 
zmanipulowanie przynosi odpowiednie 
korzyści. Skoro wszyscy, to czemu nie ja też? 
Powyższe przykłady są wierzchołkiem góry 
lodowej społecznych anomalii występujących 
na wspomnianym obszarze działalności 
internetowej. Oczywiście istnieje wiele plusów 
przemawiających za stosowaniem tego 
rodzaju promocji informacji, ale każdy kij ma 
dwa końce (oprócz procy). Dlatego przed 
przystąpieniem do jakiejkolwiek działalności 
zgodnie z nowym trendem technologicznym, 
należy zdawać sobie sprawę, że każde nowe 
zjawisko – niezależnie środowiska w jakim 
występuje – zaburza w pewnych warunkach 
dotychczasowe działanie starego systemu, 
dopóki nie zostanie opracowany pomost 
pomiędzy tym, co nowe, a tym, co stare, 
zapewniający bezpieczeństwo przejścia. 

Przed przystąpieniem do 

jakiejkolwiek działalności 

w nowym trendzie 

technologicznym, należy 

zdawać sobie sprawę, 

że każde nowe zjawisko 

niezależnie środowiska w 

jakim występuje, zaburza 

w pewnych warunkach 

dotychczasowe działanie 

starego systemu dopóki 

nie zostanie opracowany 

pomost pomiędzy, 

tym co nowe, a tym 

co stare zapewniający 

bezpieczeństwo przejścia.

background image

Kontakt 

1. Telefon

+48 22 427 36 93

+48 22 427 36 79

+48 22 427 36 53

2. Fax

+48 22 244 24 59

2. Online

pren@software.com.pl

3. Adres

Bokserska 1

02-682 Warszawa

Polska

Roczna prenumerata

      

tylko

219

 

hakin9 – jak się obronić to ukazujący się w dwudziestu 
czterech krajach Europy magazyn o bezpieczeństwie. 
hakin9 porusza sprawy związane z bezpieczeństwem sys-
temów informatycznych – rozpatrywane zarówno od stro-
ny osoby naruszającej bezpieczeństwo, jak i osoby, która 
bezpieczeństwo zapewnia. Radzimy jak skutecznie zabez-
pieczyć system przed hakerami i wszelkimi innymi zagro-
żeniami, oprowadzamy Czytelników po tajnikach najpopu-
larniejszych programów antywirusowych, systemów wy-
krywania włamań, narzędziach, których potrzebuje każdy 
administrator. 

,-

background image

Zamówienie prenumeraty

Imię i nazwisko ...............................................................................

Nazwa firmy.....................................................................................

Dokładny adres ..............................................................................

.........................................................................................................

Telefon ............................................................................................

E–mail .............................................................................................

ID kontrahenta ................................................................................

Numer NIP firmy .............................................................................

Fax (wraz z nr kierunkowym) .........................................................

Prosimy wypełniać czytelnie i przesyłać faksem na numer: 
00 48 22 244 24 59
lub listownie na adres: 
Software-Wydawnictwo Sp. z o. o.
ul. Bokserska 1
02-682 Warszawa
Polska
E-Mail: pren@software.com.pl
Przyjmujemy też zamównienia telefoniczne:
0048 22 427 36 93
0048 22 427 36 79
0048 22 427 36 53

Jeżeli chcesz zapłacić kartą kredytową, 
wejdź na stronę naszego sklepu internetowego www.buyitpress.com.

Prenumerujesz 

– zyskujesz

l

 

oszczędność

     pieniędzy 

l

 

szybka dostawa 

l

 

prezenty

l

 

bezpieczna płatność 

     ność on–line

Tytuł

Ilość

nume-

rów

Ilość

 zama-

wianych 

prenume-

rat

Od 

numeru 

pisma 

lub mie-

siąca

Cena

hakin9, jak się obronić 

(1 płyta CD)

Miesięcznik o 

bezpieczeństwie

i hakingu 

11

199*/

219

PLN

□  automatyczne przedłużenie prenumeraty

*  cena prenumeraty rocznej dla osób prywatnych

Zadzwoń

+48 22 427 36 93

lub

zamów

mailowo!

background image

ZA MIESIĄC

W następnym numerze między innymi:

Numer będzie w sprzedaży

pod koniec sierpnia 2008

Aktualne informacje o najbliższym numerze 

znajdziesz na naszej stronie www.hakin9.org/pl.

NA CD

hakin9.live bootowalna dystrybucja Linuksa
Mnóstwo narzędzi – niezbędnik hakera
Tutoriale – praktyczne ćwiczenia zagadnień poruszanych w artykułach
Dodatkowa dokumentacja
Pełne wersje komercyjnych aplikacji

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

Atak

SZYFRY WOJNY

Informacja to najpotężniejsza broń, 
bardzo niebezpieczna i zarazem 
najbardziej pożądana. Chroni się ją 
przed osobami niepowołanymi, przed 
ludźmi, którzy mogliby ją wykorzystać 
przeciw nam. Podstawowe dane o sobie 
(imię, nazwisko, data urodzenia, PESEL) 
są ściśle zastrzeżone i niektóre portale 
hakerskie płacą za nie duże pieniądze. 
Pakiet 1000 zestawów takich danych 
może osiągnąć cenę nawet 100 USD. W 
następnej kolejności mamy informacje 
przenoszoną drogą elektroniczną – czyli 
korespondencja e-mail, rozmowy VOIP czy 
rozmowy komunikatorów. Dziś opowiem 
o szyfrach, deszyfratorach i hasłach, 
które leżą w zasięgu naszych rąk, a które 
nieświadomie udostępniamy mimo tak 
starannych technik bezpieczeństwa. 
Napiszę, jak atakować takie rozwiązania i 
jak się przed tym bronić.

Obrona

ANTI-SNIFING, PRYWATNOŚĆ I VPN

Od początku sieci, komunikacji masowej, 
internetu i ostatnio także sieci wifi, ruch 
pakietów wszedł do użytku codziennego 

jako priorytet i potrzeba. Jeśli dodamy, 
że firmy i osoby prywatne używają sieci 
do zakupów elektronicznych, dostępu do 
banku, wymiany informacji poufnych; a 
rządy i hackerzy obserwują ten ruch, to 
nie możemy pozwolić by te informacje 
podróżowały swobodnie bez żadnej 
gwarancji bezpieczeństwa.

TUNELE TUN/TAP 

Jak widać, mechanizm tuneli TUN/TAP 
to całkiem potężne narzędzie. Dzięki 
niemu, w sytuacjach kiedy mamy nawet 
bardzo ograniczony dostęp do odległej 
sieci, jesteśmy w stanie otworzyć 
sobie na nią okno poprzez wirtualny 
tunel IP. W przykładach w niniejszym 
artykule ograniczyliśmy się wprawdzie 
do wykorzystywania jako transportu 
dla naszych tuneli sieci Internet, jednak 
oczywiście nic nie stoi na przeszkodzie, żeby 
wykorzystać do tego zamiast karty sieciowej 

innego sprzętu, na przykład interfejsu 
bluetooth, portu podczerwieni, usb, czy też 
samodzielnie zbudowanego urządzenia 
umożliwiającego przesyłanie danych.

PRZEGLĄD KLIENTÓW POCZTOWYCH

W artykule zostaną przedstawione 
słabe i mocne strony każdego 
programu/narzędzia służącego do 
bezpiecznej komuniacji po przez mail. 
W przypadku każdego programu 
zostanie zawarty przynajmniej akapit 
odnośnie dodatkowych możliwości  z 
związanych certyfikatami, szyfrowaniem 
itp. W ramach artykułu zostaną opisane 
takie popularne programy jak Outlook, 
Thunerbird,  ale również takie jak Kmail 
(popularny w linuksie), Evolution. Zostaną 
także przedstawione mniej lub bardziej 
popularnych OpenSource i
I komercyjne propozycje, w tym również 
dla Mac OS.

82

 

HAKIN9 7-8/2008

background image
background image

Document Outline