4
www.hakin9.org
hakin9 Nr 11/2007
hakin9
5
hakin9 Nr 2/2006
W skrócie
6
Mateusz Stępień
Przedstawiamy garść najciekawszych wiadomości ze
świata bezpieczeństwa systemów informatycznych.
Zawartość CD
10
Prezentujemy zawartość i sposób działania najnow-
szej wersji naszej sztandarowej dystrybucji hakin9.live
Narzędzia
Recenzja Kaspersky Internet
Security 6.0
14
Recenzja mks_vir 2K7
15
Początki
C# – diagnostyka połączeń
sieciowych
16
Sławmoir Orłowski
Sławek w swoim artykule wyjaśni naszym początkują-
cym Czytelnikom jak obsługiwać środowisko programi-
styczne Visual C# 2005 Express Edition.
Atak
Hakowanie Xboksa
22
Michał Majchrowicz, Marcin Wyczechowski
Michał i Marcin opiszą genezę zabezpieczeń konsoli
Xbox oraz omówią wszelkie błędy, jakie zostały po-
pełnione przy tworzeniu Xboksa.
Spoofing i Sniffing w Pythonie
30
Piotr Łaskawiec
Artykuł Piotra przedstawia zagadnienia dotyczące jak
pisać aplikacje sieciowe w języku Python oraz jak szybko
przechwytywać i odczytywać pakiety w Sieci.
Hakowanie serwisów multimedialnych
36
Konrad Witaszczyk
Konrad przekaże wiele przydatnych wiadomości doty-
czących sposobu udostępniania multimediów na stro-
nach.
Luki w plikach wykonywalnych
40
Damian Daszkiewicz
Damian w swoim artykule przedstawi garść informacji
na temat jak edytować pliki wykonywalne.
Kryptograficzne funkcje skrótu
46
Cezary Cerekwicki
Czarek pokaże jak działają najpopularniejsze kryptogra-
ficzne funkcje skrótu oraz jakie typy ataków im zagrażają.
Witam!
To już jedenasty numer naszego pisma w tym roku, za mie-
siąc święta i koniec roku, a my już rozdajemy prezenty.
Zachęcam wszystkich naszych Czytelników, do zapre-
numerowania hakin9. Dla nowych prenumeratorów mamy
zawsze atrakcyjne prezenty i oferty promocyjne. Zapraszam
do subskrybcji naszych newsletterów, a będziecie zawsze
na bieżąco!
W hakin9 11/2007 znajdziecie wiele prezentów. Gorąco
polecam naszym Czytelnikom programy, które znajdują
się na płycie CD. Postaraliśmy się, aby to były pełnowarto-
ściowe i godne uwagi narzędzia. Na krążku dołączanym do
magazynu będzie można znaleźć między innymi: Advanced
Office Password Recovery (AOPR) Elcomsoft, Data Scrub-
ber, Disk Cleaner by SBMAV, Dr.Web Antywirus, My privacy,
SecuBox aikoSolutions, SpyDetector SystemSoftLab, SpyXie
UnderNetwork. Prawda, że ciekawe...? W listopadowym
numerze hakin9 – jak się obronić mamy prezent dla dużych
chłopców... Zapewne większość naszych Czytelników to
mężczyźni, którzy pamiętają lata dzieciństwa i godziny spę-
dzone na playstation czy konsolach. Rynek gier komputero-
wych dynamicznie rozwinął się w ciągu ostatnich lat. To już
nie jest to samo czego używaliście w latach szkolnych. Za-
pewne teraz nasi Panowie mają większe wymagania co do
tego typu zabawy... Dlatego zachęcam do zapoznania się
z tematem numeru: Hakowanie Xboksa, Michała Majchro-
wicza i Marcina Wyczechowskiego. Rozrywka ukazana
jest tu od innej strony niż mogliście ją poznać do tej pory.
W artykule autorzy omówią wszelkie błędy, jakie zostały
popełnione przy tworzeniu pierwszej konsoli giganta z Red-
mond.
Oczywiście to nie wszystko co mamy do zaoferowania,
ale reszty nie będę zdradzała...
Życzę przyjemnej lektury!
Katarzyna Juszczyńska
4
www.hakin9.org
hakin9 Nr 11/2007
hakin9
5
hakin9 Nr 2/2006
Obrona
Niekonwencjonalne metody
wykrywania włamań
52
Grzegorz Błoński
Grzegorz dokładnie omówi strefy zdemilitaryzowane.
Przedstawi zasady działania honeypot – pułapka na
hakera.
Ukrywanie tajnych informacji
58
Damian Daszkiewicz
Artykuł omawia dwa ciekawe sposoby na ukrycie tajnych
informacji w plikach graficznych.
Bezpieczeństwo Silverlight
62
Artur Żarski
Z artykułu Artura można się będzie dowiedzieć o nowo-
ściach w modelu bezpieczeństwa technologii Silverlight
i jego aspektów istotnych dla programisty.
Bezpieczny ekstranet – strefy DMZ
66
Grzegorz Błoński
Grzegorz przybliży nam pojęcie ekstranetu i wszystko to
co jest z nim związane.
Księgozbiór
72
Recenzujemy książki: Hakerskie łamigłówki oraz PKI.
Podstawy i zasady działania. Koncepcje, standardy
i wdrażanie infrastruktury kluczy publicznych.
Wywiad
Wywiad z prezesem Mediarecovery
Sebastianem Małychą
74
Katarzyna Juszczyńska, Robert Gontarski
W rozmowie z członkami redakcji hakin9 Sebastian
Małycha opowiada o informatyce śledczej.
Klub Techniczny
Trend Micro chroni komputery
pracujące poza biurem
77
Felieton
Infomafia.pl
78
Patryk Krawaczyński
Zapowiedzi
82
Zapowiedzi artykułów, które znajdą się w następnym
wydaniu naszego pisma
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, Maurycy Rudnicki
Opracowanie CD: Rafał Kwaśny
Kierownik produkcji: Marta Kurpiewska marta@software.com.pl
Skład i łamanie: Marcin Ziółkowski
marcin.ziolkowski@software.com.pl
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.
W skrócie
hakin9 Nr 11/2007
www.hakin9.org
6
Mateusz Stępień
www.hakin9.org
7
hakin9 Nr 11/2007
Skazany na 30 lat więzienia
Znany amerykański spamer Chri-
stopher William Smith, znany jako
Rizler, został skazany na 30 lat wię-
zienia! Smithowi postawiono zarzu-
ty dotyczące m. in. nielegalnej dys-
trybucji leków, prania brudnych pie-
niędzy, grożenia śmiercią świad-
kom uczestniczącym w jego proce-
sie. Sędzia Michael Davis nazwał
Smitha królem narkotyków.
Christopher William Smith został
złapany w 2005 roku w Republice
Dominikany, gdzie prowadził swoją
nielegalną działalność online.
Smith rozpoczął rozsyłanie spamu
w 2004 r. i od tamtego czasu
wysłał ponad miliard listów elektro-
nicznych będących spamem. FBI
szacuje, iż straty wynikłe wskutek
działalności Smitha w ciągu ostat-
niego roku działalności sięgają
blisko 18 milionów dolarów.
Urząd emigracyjny odmówił
możliwości wzięcia udziału
w Black Hat
Halvarowi Flake'owi odmówio-
no możliwości wjazdu do Stanów
Zjednoczonych w celu zaprezen-
towania materiałów treningowych
na konferencji Black Hat. W swoim
blogu Halvar napisał, że został
poinformowany, iż nie będzie miał
możliwości powrotu do Stanów
w ramach programu wizowego –
tak więc szanse, że w ogóle kiedy-
kolwiek tu powróci, są małe. Flake
powiedział, że każda jego wizyta w
Stanach jest związana z prowadze-
niem konferencji, treningów
i przygotowywaniem prezentacji.
Tym razem go zatrzymano i prze-
słuchiwano przez prawie 5 godzin,
żądając odpowiedzi na pytanie,
kim jest i jaka jest właściwa przy-
czyna jego współpracy z Black
Hat. Najwyraźniej wysocy urzędni-
cy wierzą, iż odkąd ich kraj wie o
wszystkich zabezpieczeniach Inter-
web, nie ma powodu dla, którego
mieliby potrzebować jakiegoś tam
obcokrajowca, aby im się spowia-
dał, jak to wszystko działa. Chcie-
li po prostu wiedzieć, dlaczego to
Amerykanin nie mógłby prowadzić
tego typu zajęć i treningów. Jak na
ironię, jeśli istniałoby porozumienie
pomiędzy jego firmą a Black Hat,
wjazd Halvara do Stanów odbyłby
się w pewnym stopniu na zasadzie:
Niemiecka firma wysyła człowie-
ka do wykonania roboty i wszystko
byłoby w porządku. Niestety, orga-
nizacja zajęłaby za dużo czasu.
R
ozpoczęła się jedenasta już
coroczna konferencja Black
Hat poświęcona bezpieczeństwu
IT. Pierwsze otwierające przemó-
wienie wygłosił Tony Sager z Naro-
dowej Agencji Bezpieczeństwa.
Dotyczyło ono tworzonych standar-
dów bezpieczeństwa narodowego.
Dalszy postęp w dziedzinie bezpie-
czeństwa informacji w instytucjach
publicznych i biznesowych będzie
możliwy tylko dzięki bliskiej współ-
pracy podmiotów gospodarczych
oraz agencji rządowych i pozarzą-
dowych. Na wnioskach ze wspól-
nych obserwacji skorzystają wszy-
scy – przekonywał. Tony Sager
podkreślał, że w przeszłości NSA
opracowywało procedury związane
z bezpieczeństwem, jednak więk-
szość agencji rządowych robiła
to samo na własną rękę – dopiero
w ostatnim czasie znacznie wzrosła
otwartość podmiotów publicznych,
które chętnie udostępniają własne
obserwacje innym. Z oceną Sage-
ra zgadzają się eksperci zajmu-
jący się bezpieczeństwem w sek-
torze publicznym. Ray Kaplan, nie-
zależny konsultant ds. bezpieczeń-
stwa informacji, wskazuje, że: Kom-
plementarna natura działań NSA,
podobnych organizacji i firm pry-
watnych, umożliwi stworzenie ca-
łej gamy standardowych rozwiązań,
zwiększających bezpieczeństwo in-
formacji.
Na tegorocznej konferencji Black
Hat specjaliści z firmy Errata Secu-
rity zaprezentowali ciekawy sposób
nieautoryzowanego uzyskania dos-
tępu do kont użytkowników, którzy
za pośrednictwem sieci Wi-Fi ko-
rzystają z serwisów wymagających
logowania – np. do konta poczto-
wego, serwisu blogowego, spo-
łecznościowego czy aplikacji dos-
tępnych online (np. Google Docs).
Robert Graham oraz David Maynor
Black Hat 2007
z Errata Security tłumaczą, że pro-
blem polega na tym, iż większość
serwisów internetowych do komu-
nikacji z przeglądarką używa szy-
frowanego połączenia jedynie
w momencie logowania – później
wszystkie dane przekazywane są
otwartym kanałem. Dzięki temu wła-
mywacz bez problemu może prze-
chwytywać (przy pomocy sniffera)
pliki cookie użytkownika, które za-
wierają informacje służące serwiso-
wi do jego zidentyfikowania. Na
szczęście istnieją stosunkowo pro-
ste metody zabezpieczenia się przed
takim niebezpieczeństwem – naj-
prostsze z nich to rezygnacja z od-
wiedzania serwisów wymagających
logowania za pośrednictwem sieci
Wi-Fi, korzystanie z VPN (Virtual
rivate Network) lub SSL (Secure
Sockets Layer).
Kolejną niezwykle interesującą
prezentację przygotowała firma
Siphera Systems, która pokaza-
ła technikę umożliwiającą zdalne
przejęcie kontroli nad komputerem
korzystającym z oprogramowania
VoIP oraz protokołu Session Ini-
tiation Protocol. Specjaliści z Sip-
hery poinformowali, że w technolo-
gii VoIP odkryli ponad 20000 po-
tencjalnych błędów. Współczesne
oprogramowanie antywirusowe nie
jest w stanie zapobiec wykorzystu-
jącym je atakom.
W skrócie
hakin9 Nr 11/2007
www.hakin9.org
6
Mateusz Stępień
www.hakin9.org
7
hakin9 Nr 11/2007
Damn Small Linux 4.0 RC1
Ukazała się nowa wersja Rele-
ase Candidate małej, lekkiej dys-
trybucji Linuksa Damn Small Linux
4.0. W nowej wersji zamiast jądra
2.4.34.1 użyto 2.4.31, aby móc
wykorzystać moduły stworzo-
ne przez użytkowników. Usunięto
błąd w dsl-config związany z insta-
lacją na twardym dysku. Dodano
nowe moduły supportowe: cloop,
unionfs, ndiswrapper, fuse i madwi-
fi. Zmieniony został proces instala-
cyjny usbhdd dla pendrive'ów, który
używa teraz GRUBa mając DSL na
drugiej oddzielnej partycji. Damn
Small Linux nie wymaga insta-
lacji, system mieści się na małej
płycie CD 50MB, a od tego wyda-
nia pojawiła się też wersja ładują-
ca się w całości do pamięci RAM.
Dystrybucja zawiera wszystko to,
czego przeciętnemu użytkowniko-
wi potrzeba do szczęścia. Jest śro-
dowisko graficzne, odtwarzacze
dźwięku, klient FTP, przeglądarka
internetowa, klient poczty elektro-
nicznej, arkusz kalkulacyjny, edytor
tekstu, menedżer plików, komunika-
tor internetowy, a także wiele innych
przydatnych programów. Ze wzglę-
du na to, że wszystkie aplikacje
są bardzo małe i szybkie, DSL to
świetne rozwiązanie zwłaszcza dla
posiadaczy starszych komputerów.
Pomimo, że jest to tzw. Live CD,
dystrybucję można również zainsta-
lować na dysku twardym. Najnow-
szą wersję dystrybucji Damn Small
Linux 4.0 RC1 można pobrać z ser-
werów producenta.
Strona internetowa ONZ
padła ofiarą hakerów
Oficjalna strona sekretarza gene-
ralnego Organizacji Narodów Zjed-
noczonych Ban Ki-moona padła
w niedzielę 12 sierpnia rano ofiarą
hakerów. Włamywacze zamieści-
li na stronie krótkie oświadcze-
nie: Hej, Izraelu i USA, nie zabijaj-
cie więcej dzieci ani innych ludzi.
Pokój wieczny, nie wojna. Napis
zniknął ze strony około godziny
9.15 czasu lokalnego.
M
icrosoft ogłosił oficjalną listę
zwycięzców konkursu techno-
logicznego Microsoft Imagine Cup
2007, który odbył się w Seulu, w Ko-
rei Południowej. W konkursie wzięło
udział 372 studentów z całego świa-
ta, w tym 17 z Polski.
Polacy, którzy startowali w 7 z 9
rozgrywanych kategorii konkurso-
wych zajęli pierwsze miejsca w 3
z nich! W kategorii Algorytmy pierw-
sze miejsce zajął Przemysław Dę-
biak z Uniwersytetu Warszawskiego,
w kategorii Fotografia Iwona Bielec-
ka z Wojskowej Akademii Technicz-
nej i Małgorzata Łopaciuk z Uniwer-
sytetu Kardynała Stefana Wyszyń-
skiego, a w kategorii Film Krótko-
metrażowy Julia Górniewicz z Uni-
wersytetu Warmińsko-Mazurskiego
i Jacek Barcikowski z Politechniki Poz-
nańskiej.
Dodatkowo drużyna InPUT z Po-
litechniki Poznańskiej, reprezentują-
ca Polskę w kategorii Projektowanie
Oprogramowania, znalazła się wśród
sześciu wyróżnionych zespołów, któ-
re stworzyły aplikacje o największym
potencjale biznesowym.
W pozostałych kategoriach kolej-
ne miejsca na podium zajęli studenci
reprezentujący następujące kraje:
• projektowanie systemów wbu-
dowanych – Brazylia, Rumunia,
Chiny,
Imagine Cup 2007 – Polacy znowu
najlepsi
• projekt Hoshimi – Argentyna,
Francja, Serbia,
• technologie Informatyczne – Chi-
ny, Francja, Rumunia,
• projektowanie Oprogramowania
– Tajlandia, Korea, Jamajka,
• projekt Interfejsu – Austria, Chiny,
Francja,
• projektowanie Aplikacji Interneto-
wych – Francja, Irlandia, Chiny.
Nasza reprezentacja spisała się dos-
konale w Korei. Jesteśmy dumni z jej
wyników. Po raz kolejny udowodni-
liśmy, że Polska jest prawdziwą kuź-
nią młodych talentów w zakresie
technologii. Cieszę się, że jako firma
mamy możliwość uczestniczyć w tym
niesamowicie motywującym i ener-
getycznym wydarzeniu, które z roku
na rok zyskuje coraz więcej sympa-
tyków wśród studentów i nie tylko.
Nadal będziemy wspierać młodych
pasjonatów technologii i stwarzać im
podobne okazje do twórczej rywali-
zacji. Jestem przekonany, że jeszcze
nie raz usłyszymy o sukcesach Pola-
ków, a tymczasem wielkie gratulacje
należą się wygranym w edycji 2007
Microsoft Imagine Cup – powie-
dział Karol Wituszyński z Microsoft
Polska.
Organizatorzy Imagine Cup już
przygotowują się do kolejnej edycji
turnieju, którego finał będzie miał
miejsce w przyszłym roku w Paryżu.
W skrócie
hakin9 Nr 11/2007
www.hakin9.org
8
Mateusz Stępień
www.hakin9.org
9
hakin9 Nr 11/2007
Polak znalazł lukę
w DirectX SDK
Krystian Kloskowski, polski spe-
cjalista ds. Zabezpieczeń, odkrył
poważną lukę w produkcie Micro-
soft DirectX Media SDK. Błąd
występuje w kontrolce ActiveX
"DXSurface.LivePicture.FlashPix",
która podatna jest na błąd przepeł-
nienia bufora - aby do niego dopro-
wadzić, napastnik musi tylko skło-
nić użytkownika do otwarcia
w przeglądarce Internet Explo-
rer 6 odpowiednio spreparowa-
nej strony WWW lub wiadomości
e-mail w formacie HTML. Problem
jest poważny, ponieważ ewentual-
ny atak może zostać przeprowa-
dzony przy minimalnym udziale ze
strony użytkownika.
Błąd dotyczy Microsoft DirectX
Media SDK 6.x. Portale szacują-
ce podatności wyceniły lukę na
poziomie krytycznym (FrSIRT) lub
wysoce krytycznym (SECUNIA).
Autor wystawił też exploita dostęp-
nego na stronie http://www.
milw0rm.com/exploits/4279.
Nie wiadomo, kiedy przygotowa-
ne zostanie uaktualnienie usuwa-
jące błąd, wobec czego zaleca się
użytkownikom IE wyłączenie obsłu-
gi ActiveX lub tylko kontrolki Flash-
Pix ActiveX w rejestrze.
Włamanie na serwery
Ubuntu
Serwery społeczności Ubuntu
sponsorowane przez firmę Cano-
nica zostały zaatakowane przez
hakerów. Cyberprzestępcy włama-
li się na pięć z ośmiu serwerów na,
których nie przechowywano opro-
gramowania, a głównie witryny
z informacjami, blogi oraz doku-
mentację. Z tego co wiadomo to
włamywacze dostali się do syste-
mów poprzez działające, nieak-
tualizowane usługi FTP. Nie było
również używane SFTP ani inny
protokół pozwalający na szyfrowa-
nie danych (SSL).
J
oanna Rutkowska udostępniła
nowy kod źródłowy swojej tech-
nologii Blue Pill, która została zapre-
zentowana po raz pierwszy w roku
2006 na konferencji Black Hat w Las
Vegas. Mechanizm został napisa-
ny od początku i poprawiony. Blue
Pill wykorzystuje technologię wirtu-
alizacji AMD (SVM/Pacifica), nato-
miast nie potrafi jeszcze korzystać
z technologii obecnych w proceso-
rach Intela. Rootkit Blue Pill, dzięki
wykorzystaniu techniki wirtualizacji
procesorów, pozwala na uruchamia-
nie procesów w sposób określany
jako całkowicie niewykrywalny.
Nowy Blue Pill jest w stanie prze-
nieść system operacyjny Windows
w wirtualne środowisko bez restar-
towania systemu. Cały proces jest
niewidoczny dla użytkownika i nie-
wykrywalny na przykład przez syste-
my antywirusowe używające dotych-
czasowych metod skanowania. Poza
tym Blue Pill rozbudowano o nowe
funkcje, których zadaniem jest utru-
dnienie wykrycia przez różnego ro-
dzaju detektory i skanery. Blue Pill
posiada jeszcze sporo niedopraco-
wań, między innymi podczas urucha-
miania na Microsoft Virtual PC 2007
następuje crash aplikacji. Uaktualnio-
na Niebieska Pigułka zawiera nowe
funkcjonalności, a sama filozofia ukry-
Niebieska Pigułka dla każdego
cia robaka wzbogaciła się o wyko-
rzystanie wirtualizacji zaimplemento-
wanych w nowoczesnych proceso-
rach (Hardware Virtualized Machi-
nes – HVM).
Ponowne stworzenie Blue Pilla
to najprawdopodobniej reakcja Rut-
kowskiej na stwierdzenia kilku spe-
cjalistów: Thomasa Ptacka z firmy
Matasano Security, Nate'a Lawsona
z Root Labs i Petera Ferriego z kor-
poracji Symantec, których zdaniem
nie można stworzyć oprogramowa-
nia niewykrywalnego przez skane-
ry. Wielokrotnie wzywali oni Joannę
Rutkowską do przedstawienia dzia-
łającego przykładu potwierdzające-
go, że jest inaczej.
Wersję do pobrania można sa-
modzielnie skompilować wyłącznie
w systemie Windows, używając Dri-
ver Development Kit (NTDDK).
Joanna Rutkowska – polska spe-
cjalistka w dziedzinie zabezpieczeń
komputerowych. Od wielu lat zwią-
zana z zagadnieniami bezpieczeń-
stwa komputerowego, w szczegól-
ności z technikami stosowanymi
przez intruzów w celu ukrycia się
w systemie. Ciekawy wywiad z Jo-
anną Rutkowską dostępny jest na
portalu HACK.pl – http://hack.pl/
artykuly/wywiady/joanna_rutkowska_-
_wywiad_dla_hackpl_102.
W skrócie
hakin9 Nr 11/2007
www.hakin9.org
8
Mateusz Stępień
www.hakin9.org
9
hakin9 Nr 11/2007
FBI używa tajnego
oprogramowania do
złapania żartownisia
Magazyn WIRED stwierdził, że FBI
używa tajnego programu obserwa-
cyjnego. Pomógł on w wyśledze-
niu dzieciaka ze szkoły, który przesy-
łał fałszywe zawiadomienia o podło-
żeniu bomby. Informacje o podłoże-
niu bomby w liceum Timberline koło
Seattle były przesłane z anonimowe-
go profilu MySpace. Agenci zdołali
nakłonić właściciela profilu do insta-
lacji szpiegowskiego oprogramowa-
nia na jego komputerze.
W rezultacie 15-letni Jose Glazebro-
ok skończył w sądzie, przyznając się
do zarzutów wywoływania fałszy-
wych alarmów bombowych. Glaze-
brook podawał informacje
w imieniu innego ucznia.
W sercu nietykalnego oprogramo-
wania jest coś co WIRED nazywa
”Computer and Internet Protocol
Address Verificator”. Zasadniczo to
malware nagrywa adresy IP, adres
MAC karty sieciowej, listę otwartych
portów TCP i UDP, działających pro-
gramów, systemów operacyjnych,
numerów seryjnych oraz numerów
wersji, dane dotyczące przegląda-
rek internetowych, zarejestrowanych
użytkowników systemów operacyj-
nych, zarejestrowanych nazw firm
i zalogowanych użytkowników.
Program po zainstalowaniu kontrolu-
je w ukryciu wykorzystanie Interne-
tu, logując każdy adres IP, do które-
go maszyna się podłącza.
Darmowy wykrywacz
rootkitów McAfee
Firma McAfee,wydała nowe, dar-
mowe narzędzie – McAfee Root-
kit Detective 1.0. Aplikacja firmy
McAfee służy do walki z rootkita-
mi i może stanowić uzupełnienie dla
innych programów antywirusowych
działających na systemach Windows
NT/2000/XP. McAfee Rootkit Detec-
tive 1.0 ujawnia wszystkie procesy,
wpisy w rejestrze, a także pliki.
W wypadku znalezienia podejrzane-
go obiektu użytkownik decyduje,
co z nim zrobić: może np. przemia-
nować plik czy usunąć klucz. Root-
kit infekuje jądro i usuwa ukrywa-
ne programy z listy procesów oraz
plików zwracanych do programów.
Istnieją rootkity dla różnych syste-
mów operacyjnych, m. in. Micro-
soft Windows, Solarisa i Linuksa.
Rootkit może się dostać do kompu-
tera użytkownika wraz z aplikacją
będącą w rzeczywistości trojanem.
F
irma Symantec udostępniła uak-
tualnienie usuwające bardzo po-
ważny błąd w popularnym progra-
mie antywirusowym Norton Antivi-
rus. Luka umożliwia, poprzez błędy
w ActiveX, skuteczne zdalne zaata-
kowanie każdego komputera, w któ-
rym zainstalowane są aplikacje Sy-
manteca. Problem dotyczy wersji
2006 (i częściowo 2005) produktów
z serii Norton – czyli Symantec Nor-
ton AntiVirus 2006, Symantec Nor-
ton Internet Security 2005, Syman-
tec Norton Internet Security 2006,
Symantec Norton SystemWorks
2006. Osoby korzystające z wyżej
wymienionych aplikacji powinny jak
najszybciej uruchomić system aktu-
alizacyjny – LiveUpdate i za jego
pośrednictwem pobrać poprawki.
Błędy związane z ActiveX są dość
powszechne – ale potrafią być wy-
jątkowo groźne. Problem polega na
tym, iż programiści piszący rozwią-
zania oparte na ActiveX nie dbają
odpowiednio o bezpieczeństwo ko-
du – mówi Johannes Ullrich z SANS
Institute.
Poważny błąd w programie Norton
Antivirus
Norton AntiVirus jest jednym z naj-
popularniejszych programów antywi-
rusowych na świecie, chroniącym pocz-
tę e-mail, komunikatory internetowe
oraz pliki, automatycznie usuwającym
wirusy, robaki i konie trojańskie. Posia-
da największą bazę danych wirusów,
którą można łatwo uaktualnić poprzez
moduł LiveUpdate. Program jest prosty
w obsłudze, podaje jasne i zrozumiałe
komunikaty oraz ostrzeżenia. Najnow-
sza wersja to Norton Antivirus 2007.
Zużywa ona mniej zasobów systemo-
wych od swoich poprzedników, oferu-
je szybsze skanowanie i posiada odno-
wiony interfejs użytkownika.
D
omena internetowa UK2.net stała
się celem ataku hakera, pozosta-
wiając tym samym internautów czaso-
wo odciętych od dostępu do e-maili.
Internauci pojawiający się na stro-
nie 12 lipca ujrzeli przeobrażoną wit-
rynę. Najwidoczniej była to sprawka
islamskiego hakera. Wiele osób zwró-
ciło się do nas w tej sprawie z informa-
cjami, że nie są w stanie wejść na swoje
konta – mówią pracownicy portalu.
Doświadczenia czytelnika Andy’e-
go są typowe:
UK2 była (dla mnie) nieosiągalna
od godziny 6:00 tego ranka, gdy nie
działał email przez POP3. Próbowa-
łem jeszcze raz o 12 w południe za
pomocą POP3 i strony internetowej, ale
bez rezultatu, oba nie działały – jedyne
Haker odcina dostęp do kont
e-mailowych na UK2.net
co mogły mi zaoferować to zmienioną
stronkę. Wcześniej też miałem dużo
problemów z UK2. Moje konta były nie-
stabilne przez 3 tygodnie pod koniec
maja i na początku czerwca. Czasa-
mi działało, ale zazwyczaj odmawiało
posłuszeństwa.
Firma oficjalnie ogłosiła, że w go-
dzinach porannych we czwartek stała
się ofiarą ataku hakerskiego. Atak unie-
możliwił internautom wejście na stronę
UK2 i na skrzynkę e-mailową. UK.net
na swoich stronach napisał, że ta kwe-
stia została już rozwiązana przez spe-
cjalistów. Pomimo tego, jak dodali au-
torzy komunikatu, niektórzy użytkow
nicy mogli nadal mieć problemy z dos-
tępem do serwisu, dopóki DNS nie
naniesie zmian.
hakin9.live
hakin9 Nr 11/2007
www.hakin9.org
10
hakin9.live
hakin9 Nr 11/2007
www.hakin9.org
11
N
a dołączonej do pisma płycie znajduje się dys-
trybucja hakin9.live (h9l) w wersji 4.0.2 on Back-
Track2.0, zawierająca przydatne narzędzia, do-
kumentację, tutoriale i materiały dodatkowe do artyku-
łów. Aby zacząć pracę z hakin9.live, wystarczy urucho-
mić komputer z CD. Po uruchomieniu systemu możemy
zalogować się jako użytkownik hakin9 bez podawania
hasła.
Programy:
• Advanced Office Password Recovery by Elcomsoft,
• Data Scrubber,
• Dr.Web Anti-virus,
• My privacy,
• Disk Cleaner from SBMAV,
• SecuBox by Aiko Solutions,
• SpyDetector by System SoftLab,
• SpyXie UnderNetwork – client/server.
Advanced Office Password Recovery
by Elcomsoft
Jest narzędziem do odzyskiwania straconych lub zagu-
bionych haseł do plików dokumentów stworzonych w pa-
kiecie Microsoft Office (wszystkie wersje do MS Offi-
ce 2003). Obsługuje następujące formaty plików: Word,
Excel, Access, PowerPoint, Visio, Publisher, Project, Out-
look, OneNote, Money, Backup, Schedule+, Mail, Internet
Explorer.
Data Scrubber
Umożliwia kompletne wyczyszczenie wszystkich infor-
macji o plikach, na których pracowałeś i zapewni Ci świa-
dectwo poufności Twojej pracy. Możesz być pewny, że
po użyciu Data Scrubber'a żadne narzędzie nie będzie
w stanie odzyskać plików, które edytowałeś.
Dr.Web Antywirus dla Windows
Jest nie tylko produktem antywirusowym. Posiada znacz-
nie większe możliwości mogąc wykrywać, leczyć i usu-
wać złośliwe oprogramowanie takie jak: robaki mass-ma-
iling, wirusy e-mail, wirusy plikowe, trojany, wirusy ste-
alth, wirusy polimorficzne, wirusy bezpostaciowe, wirusy
makro, wirusy MS Office, wirusy skryptowe, oprogramo-
wanie szpiegowskie, oprogramowanie wykradające ha-
sła, keyloggery, płatne dialery, oprogramowanie rekla-
mowe, backdoory, programy-żarty, złośliwe skrypty i in-
ne rodzaje malware.
Narzędzie może zostać zainstalowane już na zainfe-
kowanym komputerze i wyleczyć jego system bez potrze-
by instalowania żadnych dodatkowych aplikacji. Istnieje
opcja aktualizowania baz antywirusowych Dr.Web przed
Zawartość CD
instalacją, co zajmuje tylko kilka sekund i zapewnia po-
siadanie najnowszych sygnatur wirusów.
Aktualizacje baz antywirusowych Dr.Web są publiko-
wane natychmiast, gdy dodane są nowe rekordy – nawet
do kilkunastu razy w ciągu godziny. Najnowsze aktualiza-
cje są gotowe do pobrania zaraz po wychwyceniu nowe-
go zagrożenia przez producenta, jego analizie i opraco-
waniu 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 zasoby
komputera i jest całkowicie kompatybilny z Microsoft Win-
dows od wersji 95 OSR2 do XP Professional. Pakiet in-
stalacyjny Dr.Web for Windows do instalacji wymaga tyl-
ko 12-15 MB wolnej przestrzeni dyskowej. Oszczędza za-
soby 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 elek-
tronicznej Dr.Web (SpIDer Mail) będzie aktywny. Jego
zadaniem jest wykrycie i usunięcie szkodliwego 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.
Rysunek 1.
Dr.Web Antywirus
hakin9.live
hakin9 Nr 11/2007
www.hakin9.org
10
hakin9.live
hakin9 Nr 11/2007
www.hakin9.org
11
hakin9.live
hakin9 Nr 11/2007
www.hakin9.org
12
MyPrivacy
Jest narzędziem zapewniającym poufnym danym bez-
pieczeństwo, chroniąc je przed hakerami. Program oce-
nia także poziom Twojej ochrony prywatności i proponu-
je sposoby jego podwyższenia. MyPrivacy zapewnia to-
talną ochronę na dwóch poziomach, on-line i off-line, co
sprawia, że narzędzie to znajduje się w czołówce aplika-
cji zapewniających odpowiedni poziom bezpieczeństwa.
Disk Cleaner from SBMAV
Jest zaawansowanym narzędziem do czyszczenia dys-
ków twardych dla systemów Windows. Narzędzie jest tak
zaprojektowane, aby czyścić dysk z zalegających na nim
mało ważnych informacji. Używając Disk Cleaner'a mo-
żesz wyszukiwać i kasować tymczasowe pliki systemo-
we, nieprawidłowe skróty, które odpowiadają za nieistnie-
jące pliki czy foldery, resztki po odinstalowanych progra-
mach, niepotrzebne pliki cookies i duplikujące się pliki.
Program pomaga także pracować z plikami użytkownika:
potrafi wykrywać i kasować stare kopie zapasowe i do-
kumenty, wyszukiwać duplikaty plików wykorzystujących
różne parametry i następnie kasować te niepotrzebne.
SecuBox by Aiko Solutions
Jest narzędziem kodującym, które chroni poufne infor-
macje przechowywane na palmtopach, smartphone'ach
i kartach pamięci. Od kiedy kieszonkowe PC-ty są łatwe
do zgubienia, jesteś narażony na ryzyko utraty dokumen-
tów i plików, a nawet danych klientów, które mogą trafić
w niepowołane ręce. SecuBox tworzy bezpieczny kon-
tener dla wszystkich plików, zabezpieczając je praktycz-
nie niemożliwym obecnie do złamania algorytmem AES
z 256-bitowym kluczem. Dane zapisane do tego kontene-
ra są automatycznie kodowane. W przypadku, kiedy stra-
cisz urządzenie lub kartę pamięci, możesz być pewny, że
nikt nie będzie miał dostępu do twoich informacji. Secu-
Box dla kieszonkowych PC-tów oferuje wyjątkowo pro-
sty sposób użycia oraz nie zmniejsza wydajności same-
go urządzenia. Narzędzie zamienia palmtopa czy smart-
phone'a w wysoce bezpieczne urządzenie, niewymaga-
jące żadnego wysiłku i interakcji użytkownika.
Główne cechy programu:
• zaawansowany algorytm bezpieczeństwa (AES 256-bit),
• wsparcie dla wszystkich typów kart pamięci,
• łatwa instalacja,
• kodowanie w locie,
• weryfikacja złożoności hasła,
• bezpieczne usuwanie danych,
• konfiguracja właściwości,
• menu systemowe,
• przeglądarka plików,
• brak backdoorów.
SpyDetector
Jest narzędziem antyszpiegowskim, które wykrywa wszyst-
kie działające procesy na komputerze i wyświetla ewentual-
ne związane z nimi zagrożenia. Kolejną opcją programu jest
możliwość wykrywania procesów zawierających i wykonu-
jących obcy kod innego procesu. Użytkownicy już na pierw-
szy rzut oka widzą szczegółowe informacje dla wyselekcjo-
nowanych procesów oraz wszystkie wykryte zagrożenia,
w tym spyware, keyloggery oraz trojany. Narzędzie wyko-
rzystuje aż 17 metod wykrywania procesów. Poziom zagro-
żenia poszczególnych procesów jest zaznaczany odpowied-
nim kolorem, co umożliwia użytkownikowi łatwą ocenę sytu-
acji. Poza kolorystyką stopnia zagrożenia program pokazu-
je ID procesu, ID źródła, status bezpieczeństwa, nazwę pli-
ku .exe, ścieżkę do pliku wraz z jego opisem itd. Kiedy narzę-
dzie oznaczy proces na czerwono lub na żółto, użytkownik
może wybrać czy usunąć go z pamięci, czy zaakceptować
jako bezpieczny. Lista procesów może być wyeksportowana
do pliku Excela w celu późniejszej analizy. Program wykry-
wa także nowe, niewykrywalne przez skanery antywiruso-
we, trojany, wirusy i oprogramowanie spyware.
SpyXie UnderNetwork – client/server
Jest zdalnym komputerem monitorującym i administrują-
cym oprogramowaniem. Narzędzie daje Ci pełną kontro-
lę nad wszystkimi komputerami podłączonymi do sieci.
Z pojedynczego komputera administrującego możesz zo-
baczyć i kontrolować każdą czynność na zdalnie sterowa-
nych komputerach. Dzięki temu narzędziu możesz bardzo
łatwo połączyć się z każdym komputerem w sieci – jedy-
ne, czego potrzebujesz, to zainstalowany klient SpyXie na
sterowanych stacjach roboczych. Aplikacja służy także do
monitorowania w czasie rzeczywistym i śledzenia czyn-
ności użytkowników w sieci. Z SpyXie administrator mo-
że nadzorować pracę klawiatury, sprawdzać odwiedzane
strony i aplikacje, z których korzystał użytkownik. Wszyst-
kie czynności kontrolowanego komputera w sieci są za-
pisywane i można przejrzeć je w późniejszym terminie.
Przeznaczeniem tej aplikacji jest umożliwienie administra-
torowi wglądu i nadzoru stacji roboczych z tej samej do-
meny. SpyXie zapewnia dużą różnorodność funkcji admi-
nistracyjnych, takich jak monitorowanie i śledzenie błędów
aplikacji oraz użytkowników, a także prowadzenie proak-
tywnych korekt tych błędów w czasie rzeczywistym. l
Rysunek 2.
Disk Cleaner from SBMAV
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
14
Narzędzia
hakin9 Nr 11/2007
www.hakin9.org
15
hakin9 Nr 11/2007
www.hakin9.org
Narzędzia
I
nstalacja KIS 6 przebiega wyjątkowo szybko i bez-
problemowo. KIS składa się z modułów ochrony
plików, ochrony poczty, ochrony WWW, ochrony pro-
aktywnej, anti-spy, zapory ogniowej anti-hacker oraz
anti-spam. Użytkownik podczas instalacji ma możliwość
wyboru tylko tych modułów, które są mu potrzebne. Po
instalacji możemy też wyłączyć wybrany moduł, jeśli
stwierdzimy, że chwilowo jest nam zbędny – ale warto
zainstalować i uruchomić je wszystkie dla pełnej ochro-
ny naszego systemu. Brakuje trochę opcji czasowego
wyłączenia danego modułu, ale jeśli wyłączymy np.
moduł anti-hacker i zapomnimy ponownie uaktywnić
ochronę, program przypomni o tym przy najbliższym
uruchomieniu.
Zaraz po instalacji następuje proces aktywacji i konfi-
guracji produktu, podczas którego mamy m. in. możliwość
wyboru częstotliwości aktualizacji. Możemy także zabez-
pieczyć dostęp do ustawień programu hasłem. Autorzy
programu pomyśleli jednocześnie o drobnym udogodnie-
niu dla użytkowników w postaci opcjonalnego zapamię-
tywania hasła na czas trwania sesji, dzięki czemu mo-
żemy wpisać hasło tylko raz, a dostęp do zmiany opcji
programu będziemy mieli do chwili ponownego rozruchu
komputera.
Konfiguracja zapory sieciowej może wymagać tro-
chę wiedzy technicznej (sposoby adresowania, maski sie-
ciowe itp.), ale domyślne ustawienia powinny być pra-
widłowe i wystarczające dla większości użytkowników.
Aplikacje, które korzystają z połączeń sieciowych, zosta-
ną automatycznie wykryte i będą stworzone dla nich
domyślne reguły, które można w dowolnym momencie
zmienić.
Po instalacji i konfiguracji program proponuje restart
systemu i dobrze jest zaakceptować tę propozycję. Domyśl-
nie KIS 6 analizuje programy ładujące się przy starcie sys-
temu i obserwuje akcje, jakie zachodzą w systemie pod-
czas tego procesu. Pozwala to wychwycić oprócz trady-
cyjnych wirusów także rootkity. Warto również przeprowa-
dzić pełne skanowanie systemu, co zwiększy bezpieczeń-
stwo – w przeciwnym razie KIS będzie nam o tym notorycz-
nie przypominał.
Jeśli chodzi o moduł ochrony poczty i ochrony przed
spamem to – choć KIS 6 nie wyposażono we wtycz-
kę dla popularnego programu pocztowego Thunderbird
– domyślnie skanuje on cały ruch odbywający się pro-
tokołami SMTP i POP3. Dzięki temu nawet korzystając
z niestandardowych klientów pocztowych mamy zapew-
nioną ochronę.
Po instalacji programu w menu kontekstowym poja-
wia się opcja skanowania antywirusowego. W ten sposób
można skanować pojedyncze pliki lub katalogi oraz ca-
łe dyski. Podczas skanowania jest wyświetlany czas,
w jakim jest oczekiwane zakończenie procesu i, o dziwo,
czas ten zazwyczaj się sprawdza. Po zakończeniu ska-
nowania użytkownik podejmuje decyzje co do zainfe-
kowanych plików. W zależności od wyboru zagrożenia
można usunąć, poddać kwarantannie, bądź ignorować
infekcje.
W głównym oknie programu mamy dostęp do najważ-
niejszych informacji o stanie zabezpieczeń, jak np. aktu-
alność bazy sygnatur zagrożeń. Warto zaznaczyć, że
bazy te mogą być aktualizowane nawet kilka razy dzien-
nie, a proces ten jest całkowicie automatyczny.
Jeśli KIS stwierdzi, iż nasz system może nie być
wystarczająco chroniony (np. nie przeprowadzono peł-
nego skanowania antywirusowego), to poinformuje nas
o tym przy każdym starcie systemu, dopóki nie zdecy-
dujemy się przeskanować całego dysku twardego. Od-
powiednią notkę zobaczymy też w głównym oknie pro-
gramu.
Dla każdego z modułów programu możemy wybrać
poziom zabezpieczeń lub konfigurować ustawienia ręcz-
nie. Warto skorygować domyślne ustawienia dla zapew-
nienia większej ochrony naszego systemu. Szczególnie
zalecane jest uaktywnienie opcji Kontrola integralności
aplikacji oraz Ochrona rejestru w module ochrony pro-
aktywnej.
Ochrona anti-spy zawiera opcje blokowania okien
pop-up oraz opcję blokującą banery. Komfort przeglą-
dania stron przy użyciu tych opcji w moim przypadku
wyraźnie się podniósł. Większość niechcianych reklam
i niebezpiecznych treści jest blokowana. Nad bezpie-
czeństwem surfowania po stronach internetowych czuwa
ochrona WWW – przeglądając raport z jej działania
odkryłem wielką liczbę zagrożeń, przed jakimi KIS mnie
uchronił zaledwie w ciągu kilku minut, a poziom zabez-
pieczeń, jaki ustawiłem, był średni!
Co do systemu pomocy, to jest on dostępny w każdym
oknie programu i prezentuje informacje zgodne z kontek-
stem, w jakim się znajdujemy.
Łukasz Witczak
Producent: Kaspersky
System: Windows 2000, Windows XP, Windows Vista
Typ: Internet Security 6.0
Strona producenta: http://www.kaspersky.pl/
Ocena: 5/5
Recenzja KIS 6
14
Narzędzia
hakin9 Nr 11/2007
www.hakin9.org
15
hakin9 Nr 11/2007
www.hakin9.org
Narzędzia
mks_vir 2K7
Producent: MKS Sp z o.o.
System: Windows XP / Windows Vista
Typ: Program Antywirusowy
Strona producenta: http://mks.com.pl
Ocena: 5/5
F
irma MKS sp. z o.o. powstała w 1996 roku. Jej
założycielem był Marek Sell. Prężnie rozwijającą
się firmę zna chyba każdy. Pierwsze wersje MKSa
były napisane dla DOSa. Wtedy jeszcze Internet nie był
tak rozpowszechniony, wirusy atakowały pliki przeno-
szone na dyskietkach. Obecnie infekcja przebiega naj-
częściej drogą elektroniczną (strony WWW, poczta
elektroniczna, komunikatory). Naprzeciw tym zagroże-
niom wychodzi najnowszy produkt firmy MKS – mks_
vir 2K7.
Najprostszym sposobem zdobycia programu jest
odwiedzenie strony producenta. Po przejściu do działu
Pobierz znajdziemy interesujący nas program. Następ-
nie możemy ściągnąć najbardziej aktualną jego wersję
demonstracyjną (pełną funkcjonalnie, ale ograniczoną
czasowo). W tej recenzji będzie to mks_vir 2k7 DOM. Ze
ściągnięciem programu nikt nie powinien mieć proble-
mów, jednakże pozwoliłem sobie zamieścić link: http://
www.mks.com.pl/files/mksvir2007setup.exe
Po uruchomieniu ściągniętego pliku pojawia się okno
instalacji programu. Procedury instalacyjne w większo-
ści programów są podobne, więc nie powinny przyspo-
rzyć większych problemów. Ciekawym rozwiązaniem
jest konfigurowanie zapory poprzez włączenie lub wyłą-
czenie standardowych protokołów wykorzystywanych
przez użytkownika. Mamy do wyboru: WWW (porty 80,
443), pocztę (25, 110, 465, 995), udostępnianie plików
i drukarek (139, 445, 137, 138). Podczas instalacji jeste-
śmy także pytani o klucz aktywacyjny produktu. Nie ma
znaczenia, czy zainstalujemy wersję demonstracyjną,
gdyż w późniejszym czasie będzie można zmienić klucz
produktu z poziomu uruchomionego programu. Warto
tutaj wspomnieć o licencji, która pozwala nam na wszel-
kiego rodzaju aktualizacje, włączając w to pojawienie się
nowej wersji programu. W przypadku, gdy wybierzemy
wersję demonstracyjną, licencja jest ważna tylko przez
14 dni.
Obsługa programu jest bardzo prosta i nawet począt-
kujący użytkownicy komputera nie powinni mieć z nią
żadnych problemów. Nowoczesny wygląd oraz zmiany
organizacyjne w stosunku do poprzedniej wersji (polega-
jące na odpowiednim pogrupowaniu narzędzi) sprawiają,
że obsługa jest nie tylko łatwa, ale i przyjemna.
Program mks_vir 2k7 jest pakietem narzędzi chronią-
cych nasz komputer. Pakiet ten oparty jest na modułach,
które zostały pogrupowane w następujący sposób:
•
Program – zawiera informacje na temat stanu progra-
mu, licencji, ustawień ogólnych, posiada także zbiór
raportów ze wszystkich modułów, dostarcza pomocy
i informacji o wersji:
• moduł automatycznej aktualizacji programu i baz
zagrożeń.
•
Ochrona przed wirusami – grupa odpowiedzialna za
wykrywanie i neutralizację złośliwego oprogramo-
wania:
• skaner antywirusowy pozwalający na kontrolę
wybranych zasobów komputera,
• monitor antywirusowy stale skanujący wszystkie
wykorzystywane pliki,
• kwarantanna zainfekowanych plików.
•
Bezpieczeństwo w sieci – grupa zapobiegająca prze-
nikaniu infekcji do systemu:
• zapora (firewall), wykrywa każdy program próbu-
jący uzyskać dostęp do sieci Internet i wyświe-
tla zapytanie o pozwolenie. Obok bardzo uprosz-
czonej wersji konfiguracji istnieje także dostęp do
konfiguracji zaawansowanej.
• skaner poczty kontrolujący wszystkie odbierane i wy-
syłane listy,
• filtr niechcianej poczty AntySpam.
•
Narzędzia systemowe – grupa obsługująca system
operacyjny:
• menedżer procesów,
• monitor kontrolujący stan rejestru systemowego.
Rafał Podsiadły
Rysunek 1.
mks_vir 2k7 podczas pracy
www.hakin9.org
hakin9 Nr 11/2007
16
Początki
P
latforma .NET firmy Microsoft została
oficjalnie zaprezentowana w sierpniu
roku 2000, tworząc nowy standard pro-
gramowania dla systemów operacyjnych z ro-
dziny Windows. Jej powstanie to odpowiedź
na technologię Java firmy Sun oraz związa-
ny z nią zakaz sądowy samodzielnej modyfi-
kacji Javy. Platforma .NET składa się ze śro-
dowiska uruchomieniowego (.NET Framework)
oraz biblioteki klas i komponentów. Podstawo-
wym językiem programowania dla nowej plat-
formy jest język C#. Oczywiście można progra-
mować w języku C++ w kodzie zarządzanym,
jednak jest to dosyć pracochłonne zajęcie. In-
nym językiem, jakiego możemy standardowo
użyć, jest Visual Basic. Programy napisane dla
.NET nie są bezpośrednio kompilowane do po-
staci maszynowej, a jedynie tłumaczone na ję-
zyk pośredni MSIL (ang. Microsoft Intermedia-
te Language, nazywany czasem Common In-
termediate Language – CLI) i uruchamiane
przez środowisko uruchomieniowe CLR (ang.
Common Language Runtime). Zatem pomię-
dzy systemem operacyjnym, a napisanym pro-
gramem istnieje warstwa pośrednia. Nie jest to
nowość, ponieważ Java oferuje podobne roz-
wiązanie. Gwarantuje nam ono poprawę bez-
pieczeństwa i stabilności systemu oraz prze-
naszalność kodu pomiędzy różnymi architek-
turami procesorów, a nawet pomiędzy różnymi
systemami operacyjnymi. Ponieważ .NET jest
standardem ECMA (ang. European Computer
Manufacturers Association), powstają nieza-
leżne implementacje tego środowiska. Mowa tu
o projekcie Mono http://www.mono-project.com/,
C# – diagnostyka
połączeń sieciowych
Sławomir Orłowski
stopień trudności
Pisząc samodzielną aplikację dla systemu Windows, analizującą
połączenia sieciowe na lokalnym komputerze, musimy
zebrać wiele informacji dotyczących ustawień DHCP, DNS,
przydzielonych adresów IP itd. Używając do tego celu platformy
.NET możemy uniknąć kłopotliwego odwoływania się do systemu
operacyjnego.
Z artykułu dowiesz się
• jak obsługiwać środowisko programistyczne
Visual C# 2005 Express Edition,
• jak używać podstawowych klas platformy .NET
służących do analizy połączeń sieciowych na
komputerze lokalnym.
Co powinieneś wiedzieć
• znać podstawy jednego z następujących języ-
ków: C, C++, Java, lub oczywiście C#. W razie
niespełniania tego warunku potrzebny jest duży
zapał,
• znać podstawy programowania zorientowane-
go obiektowo,
• posiadać podstawową znajomość sieci kompu-
terowych.
hakin9 Nr 11/2007
www.hakin9.org
17
C# – diagnostyka połączeń sieciowych
sponsorowanym przez firmę Novell,
oraz o projekcie dotGNU http://www.
dotgnu.org/. W ramach technologii
.NET istnieje również implementa-
cja platformy dla urządzeń przeno-
śnych. Platforma .NET to również
szereg nowych technologii. Mamy tu
bardzo dobry mechanizm tworzenia
aktywnych stron internetowych ASP.
NET, obsługi baz danych ADO.NET
i XML. Sama nazwa zobowiązuje
również do posiadania rozbudowa-
nych możliwości programowania
aplikacji sieciowych. I rzeczywiście
tak jest – co, mam nadzieję, uda mi
się pokazać.
Visual C# 2005
Express Edition
Osoby programujące w C# pod Vi-
sual C# 2005 Express Edition mogą
bez większych obaw ominąć ten akapit.
Ma on pomóc wszystkim tym, którzy
nie mieli wcześniej kontaktu ani z ję-
zykiem C#, ani z innymi środowiska-
mi programistycznymi firmy Microsoft.
Rozpoczniemy od pobrania środowis-
ka Visual C# 2005 Express Edition.
I tu od razu miła niespodzianka. Jest
to środowisko darmowe! Można je
pobrać ze strony: http://msdn2.micro
soft.com/en-us/express/aa975050.
aspx. W momencie pisania tego arty-
kułu dostępna jest również wersja
beta 2 Visual Studio 2008. Dla Visual
C# 2005 Express Edition mamy możli-
wość wyboru instalacji: sieciowa lub lo-
kalna. Jeżeli zdecydujemy się na sie-
ciową, wówczas pobierzemy jedynie
mały plik, który sam pobierze i zain-
staluje całe środowisko oraz dodatko-
we komponenty. Jeśli zaś wybierze-
my instalację lokalną – pobierzemy ca-
ły obraz płyty. Myślę, że lepsze jest to
drugie rozwiązanie. Jeżeli nie posiada-
my na naszym komputerze platformy
.NET w wersji przynajmniej 2.0, wów-
czas instalator również ją zainstaluje.
Jest ona niezbędna do prawidłowego
działania środowiska Visual C# 2005
Express Edition oraz programu opisa-
nego dalej. Zachęcam również do ak-
tualizacji platformy .NET.
Po skutecznej instalacji możemy
uruchomić Visual C#. Aby teraz roz-
począć nowy projekt, z menu File
wybieramy opcję New Project… Zgło-
si się okno widoczne na Rysunku 1.
Mamy tu do wyboru kilka rodzajów pro-
jektów. Na początek wybieramy ikonę
Console Application, co pozwoli nam
napisać aplikację konsolową. Ozna-
cza to, że nasz program nie będzie
posiadał okna – będzie uruchamia-
ny z wiersza poleceń systemu Windows.
W polu Name wpisujemy nazwę na-
szej aplikacji, która będzie również
nazwą nowej przestrzeni nazw.
Po zatwierdzeniu wyboru klikamy
przycisk OK. Utworzony zostanie no-
wy projekt (patrz Rysunek 2). Środo-
wisko Visual C# 2005 Express Edi-
tion wygeneruje automatycznie stan-
dardowy kod dla aplikacji konsolo-
wej, który jest widoczny na Listin-
gu 1. Na początku kodu z Listingu 1.
następują deklaracje przestrzeni nazw,
jakich chcemy używać w projekcie.
Dalej zadeklarowana jest nowa
Rysunek 1.
Okno wyboru typu projektu
Listing 1.
Pusty projekt aplikacji konsolowej
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Text
;
namespace
NetInfo
{
class
Program
{
static
void
Main
(
string
[]
args
)
{
}
}
}
Listing 2.
Program Witaj Świecie
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Text
;
namespace
PierwszyProgram
{
class
Program
{
static
void
Main
(
string
[]
args
)
{
Console
.
WriteLine
(
"Witaj Świecie!"
);
}
}
}
hakin9 Nr 11/2007
www.hakin9.org
Początki
18
przestrzeń nazw dla naszej aplika-
cji i nowa klasa. Przestrzenie nazw
to bardzo pożyteczny pomysł. Po-
magają one grupować klasy o po-
dobnym działaniu lub operujące na
podobnych danych oraz zapobie-
gają konfliktom nazw. Przestrze-
nie nazw mogą zawierać podprze-
strzenie. Należy jednak pamiętać,
że deklaracja przestrzeni nazw nie
oznacza automatycznego dołącze-
nia wszystkich jej podprzestrzeni.
W klasie
Program
zadeklarowana
jest statyczna metoda
Main
. Jest to
wejście
do naszego programu. Kom-
pilator języka C# we wszystkich pli-
kach projektu szuka właśnie tej me-
tody, która jest uruchamiana przy
starcie programu przez platformę
.NET. Składnia języka jest bardzo
podobna do C/C++ i do Javy, zatem
sądzę, że większość Czytelników
sobie z nią poradzi. Jednak, aby tra-
dycji stało się zadość, napiszemy
program Witaj Świecie.
Przechodzimy do wnętrza metody
Main
i rozpoczynamy wpisywanie na-
zwy klasy
Console
, która reprezentuje
konsolę systemową. Od razu zgłasza
się nam system podpowiedzi Intelli-
Sense, który w środowiskach Visual
Studio działa naprawdę dobrze (patrz
Rysunek 3). Z rozwiniętego menu In-
telliSense możemy wybrać sobie od-
powiednią pozycję – bez wpisywania
całości nazwy. Jeszcze większą za-
letą jest mechanizm podpowiedzi
wszystkich własności i metod danej
klasy. W końcu nie sposób zapamię-
tać nazw wszystkich klas, a co dopiero
ich własności i metod. Po wpisaniu
Console
i naciśnięciu kropki powinna
pojawić się nowa podpowiedź syste-
mu IntelliSense. Teraz musimy wy-
brać statyczną metodę
WriteLine
, któ-
ra wyświetla na ekranie tekst przeka-
zany jako argument. Metody statycz-
ne pozwalają na ich użycie bez dekla-
rowania egzemplarza klasy, z której
dana metoda pochodzi.Myślę, że kod
programu Witaj Świecie nie wymaga
dalszych komentarzy (Listing 2).
Środowisko Visual C# 2005 Ex-
press Edition to naprawdę rozbudo-
wane narzędzie. Jego pełny opis wy-
rasta poza ramy tego artykułu. W tej
części opisane są jedynie najważ-
niejsze funkcje, które umożliwią nam
dalsze pisanie programów.
Połączenia sieciowe
Pora teraz na skorzystanie z szero-
kich możliwości platformy .NET w za-
kresie programowania sieciowego.
Napiszemy prostą aplikację konsolo-
wą, która wyświetli nam informacje
dotyczące interfejsów i połączeń sie-
ciowych na lokalnym komputerze. Ze
względu na wyświetlane dane, cały
kod tej aplikacji podzielony został na
6 części (Listingi 3-8), niemniej jed-
nak stanowi on jedną całość.
Aby uzyskać dostęp do klas umo-
żliwiających zebranie informacji na te-
mat połączeń sieciowych komputera
lokalnego, musimy w sekcji using za-
deklarować użycie odpowiednich prze-
strzeni nazw (Listing 3).
Przestrzeń nazw
System.Net.Net-
workInformation
daje programiście
dostęp do klas, które udostępniają sze-
reg informacji dotyczących wszyst-
kich zainstalowanych interfejsów
Rysunek 2.
Okno środowiska Visual C# 2005 Express Edition z otwartym
projektem aplikacji konsolowej
Listing 3.
Deklaracja nowych przestrzeni nazw
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Text
;
using
System
.
Net
.
NetworkInformation
;
using
System
.
Net
;
Listing 4.
Prezentacja nazwy komputera i nazwy domeny
namespace
NetInfo
{
class
Program
{
static
void
Main
(
string
[]
args
)
{
IPGlobalProperties
wlasnosciIP
=
IPGlobalProperties
.
GetIPGlobalP
roperties
();
Console
.
WriteLine
(
"Nazwa komputera: "
+
wlasnosciIP
.
HostName
);
Console
.
WriteLine
(
"Nazwa domeny: "
+
wlasnosciIP
.
DomainName
);
Console
.
WriteLine
();
hakin9 Nr 11/2007
www.hakin9.org
19
C# – diagnostyka połączeń sieciowych
sieciowych, ich statusu, adresów
MAC, IP, aktualnych połączeń sie-
ciowych, konfiguracji sieciowej kom-
putera (adresy serwerów DHCP, DNS,
WINS) itd. W przestrzeni nazw
Sys-
tem.Net
zawarte są podstawowe kla-
sy obsługujące protokoły sieciowe.
Rozpoczniemy od prezentacji nazwy
komputera oraz – jeżeli jest przydzie-
lona – nazwy domeny (Listing 4).
Użyliśmy klasy
IPGlobalProperties
z zadeklarowanej wcześniej prze-
strzeni nazw
System.Net.NetworkInfor-
mation
. Dzięki tej klasie mamy do-
stęp do informacji na temat aktual-
nych połączeń na komputerze lokal-
nym. W dalszej części użyjemy jej do
wypisania aktywnych połączeń TCP
i UDP. Teraz wypiszemy wszystkie
adresy IP, jakie przypisane są do na-
szego komputera. Jeżeli jedynym ad-
resem IP będzie adres pętli zwrotnej
(127.0.0.1), to wypiszemy komunikat
o braku połączenia z siecią. Referen-
cja klasy IPHostEntry, która jest konte-
nerem, będzie przechowywać wszyst-
kie odnalezione adresy IP, uzyskane
przy użyciu metody
GetHostEntry
klasy
Dns
. Argumentem tej metody jest naz-
wa hosta, dla którego chcemy uzy-
skać adres IP. Nazwę tę uzyskamy
używając z kolei metody
GetHostName
.
Jest to kolejny sposób, za pomocą
którego możemy uzyskać nazwę lokal-
nego komputera. Użyte w tej części
klasy należą do przestrzeni nazw
System.Net
. Ponieważ referencja Ad-
resyIP klasy
IPHostEntry
jest konte-
nerem, możemy w łatwy sposób wy-
świetlić wszystkie jej elementy, uży-
wając pętli
foreach
. Pętla ta iteruje
po wszystkich elementach z danego
zakresu, w związku z tym świetnie
nadaje się do prezentacji zawartości
kontenerów i wszelkiego rodzaju ko-
lekcji. Pojedynczy adres IP uzyskany
poprzez działanie metody
AddressList
reprezentowany będzie przez obiekt
klasy
IPAddress
. Wszystkie te czyn-
ności przedstawia Listing 5.
Przejdźmy teraz do wypisania
informacji na temat zainstalowa-
nych w komputerze kart sieciowych.
Dzięki własnościom klasy Networ-
kInterface w bardzo łatwy sposób
uzyskamy adres MAC, nazwę, opis,
status i maksymalną szybkość, z ja-
ką dana karta sieciowa może pra-
cować w sieci lokalnej. Statyczna
metoda
GetAllNetworkInterfaces
klasy
NetworkInterface
zwraca listę
(o elementach typu
NetworkInter-
face
) wszystkich interfejsów siecio-
wych zainstalowanych na lokalnym
komputerze. Aby je odczytać, wystar-
czy posłużyć się, tak jak poprzed-
nio, wygodną pętlą
foreach
. Całość
przedstawiona jest na Listingu 6.
Kolejnymi informacjami, jakie wy-
świetli pisany przez nas program,
będą adresy bram sieciowych, ser-
werów DNS, DHCP i WINS patrz Li-
sting 7. Informacje o adresach bram
sieciowych zaszyte są we włas-
ności
GatewayAddresses
. Jej użycie
zwraca obiekty klasy
GatewayIP
AddressInformation
. Własność Ad-
dress tego obiektu daje nam adres
bramy sieciowej w postaci obiektu
klasy
IPAddress
. Aby teraz taki ad-
res wyświetlić, musimy zamienić go
na obiekt typu
string
. Służy do tego
metoda
ToString
, która jest standar-
Rysunek 3.
Mechanizm IntelliSense
Listing 5.
Lista wszystkich przydzielonych adresów IP
IPHostEntry
AdresyIP
=
Dns
.
GetHostEntry
(
Dns
.
GetHostName
());
int
licznik
=
0
;
Console
.
WriteLine
(
"Przydzielone adresy IP: "
);
foreach
(
IPAddress
AdresIP
in
AdresyIP
.
AddressList
)
{
if
(
AdresIP
.
ToString
()
==
"127.0.0.1"
)
Console
.
WriteLine
(
"Komputer nie jest podłączony do sieci.
Adres IP: "
+
AdresIP
.
ToString
());
else
Console
.
WriteLine
(
" adres IP #"
+
++
licznik
+
": "
+
AdresIP
.
ToString
());
}
Console
.
WriteLine
();
Listing 6.
Zbieranie informacji na temat zainstalowanych interfejsów
sieciowych
licznik
=
0
;
foreach
(
NetworkInterface
kartySieciowe
in
NetworkInterface
.
GetA
llNetworkInterfaces
())
{
Console
.
WriteLine
(
"Karta #"
+
++
licznik
+
": "
+
kartySieciowe
.
Id
);
Console
.
WriteLine
(
" Adres MAC: "
+
kartySieciowe
.
GetPhysica
lAddress
()
.
ToString
());
Console
.
WriteLine
(
" Nazwa: "
+
kartySieciowe
.
Name
);
Console
.
WriteLine
(
" Opis: "
+
kartySieciowe
.
Description
);
Console
.
WriteLine
(
" Status: "
+
kartySieciowe
.
OperationalS
tatus
);
Console
.
WriteLine
(
" Szybkość: "
+
(
kartySieciowe
.
Speed
)
/
(
double
)
1000000
+
" Mb/s"
);
hakin9 Nr 11/2007
www.hakin9.org
Początki
20
dowo zaimplementowana dla więk-
szości klas. W podobny sposób uzys-
kujemy pozostałe informacje. Służą
do tego odpowiednio własności
Dhcp
ServerAddresses
i
WinsServersAddres-
ses
. Oprócz klasy
IPAddress
, która
należy do przestrzeni nazw
System.Net
,
użyte tutaj klasy należą do przestrze-
ni nazw
System.Net. NetworkInforma-
tion
. Komendy przedstawione na Lis-
tingu 7. zawarte są w pętli
foreach
, któ-
ra jest rozpoczęta na Listingu 6. Dla
pokazania zakresu tej pętli jej nawiasy
klamrowe zostały wytłuszczone.
Na koniec pozostała nam jeszcze
kwestia aktualnie otwartych portów
na komputerze lokalnym dla połączeń
TCP i UDP. I tym razem z pomocą przy-
chodzą nam dobrze skonstruowane
klasy platformy .NET. Rozpoczniemy
od połączeń TCP typu klient. Metoda
GetActiveTcpConnections
zwraca nam
listę obiektów klasy
TcpConnectionInf
ormation,
reprezentujących aktywne
połączenia. Aby wyświetlić całość in-
formacji, jak zwykle używamy pętli
foreach
. Chcąc odczytać zdalny adres
IP oraz port serwera, z którym nawią-
zaliśmy połączenie, używamy własno-
ści
RemoteEndPoint
klasy
TcpConnection
Information
(własności Address i Port).
Własność
State
określa stan, w jakim
znajduje się obecnie dane połączenie
TCP.
TcpState
jest zwracanym przez tę
własność typem wyliczeniowym i może
przyjmować następujące wartości:
•
Closed – połączenie TCP zamk-
nięte,
•
Closing – połączenie w trakcie za-
mykania. Komputer lokalny ocze-
kuje na potwierdzenie zamknię-
cia połączenia,
•
DeleteTcb – bufor kontrolny TCB
(ang. Transmission Control Buf-
fer) został skasowany,
•
Established – połączenie TCP
zostało ustanowione. Dane mo-
gą być transmitowane,
•
FinWait1 – komputer lokalny
oczekuje na sygnał zamknięcia
połączenia od komputera zdalne-
go lub oczekuje na potwierdzenie
zamknięcia, które zostało wcze-
śniej przez niego wysłane,
•
FinWait2 – komputer lokalny
oczekuje na sygnał zamknięcia
połączenia od komputera zdal-
nego,
Listing 7.
Komplet informacji dotyczących adresów bram sieciowych, serwerów DNS, DHCP i WINS
Console
.
WriteLine
(
" Adresy bram sieciowych:"
);
foreach
(
GatewayIPAddressInformation
adresBramy
in
kartySieciowe
.
GetIPProperties
()
.
GatewayAddresses
)
Console
.
WriteLine
(
" "
+
adresBramy
.
Address
.
ToString
());
Console
.
WriteLine
(
" Serwery DNS:"
);
foreach
(
IPAddress
adresIP
in
kartySieciowe
.
GetIPProperties
()
.
DnsAddresses
)
Console
.
WriteLine
(
" "
+
adresIP
.
ToString
());
Console
.
WriteLine
(
" Serwery DHCP:"
);
foreach
(
IPAddress
adresIP
in
kartySieciowe
.
GetIPProperties
()
.
DhcpServerAddresses
)
Console
.
WriteLine
(
" "
+
adresIP
.
ToString
());
Console
.
WriteLine
(
" Serwery WINS:"
);
foreach
(
IPAddress
adresIP
in
kartySieciowe
.
GetIPProperties
()
.
WinsServersAddresses
)
Console
.
WriteLine
(
" "
+
adresIP
.
ToString
());
Listing 8.
Lista aktualnych połączeń sieciowych dla protokołów TCP i UDP na lokalnej maszynie
Console
.
WriteLine
(
" Aktualne połączenia TCP typu klient:"
);
foreach
(
TcpConnectionInformation
poloczenieTCP
in
IPGlobalProperties
.
GetIPGlobalProperties
()
.
GetActiveTcpC
onnections
())
{
Console
.
WriteLine
(
" Zdalny adres: "
+
poloczenieTCP
.
RemoteEndPoint
.
Address
.
ToString
()
+
":"
+
polocz
enieTCP
.
RemoteEndPoint
.
Port
);
Console
.
WriteLine
(
" Status: "
+
poloczenieTCP
.
State
.
ToString
());
}
Console
.
WriteLine
(
" Aktualne połączenia TCP typu serwer:"
);
foreach
(
IPEndPoint
poloczenieTCP
in
IPGlobalProperties
.
GetIPGlobalProperties
()
.
GetActiveTcpListeners
())
Console
.
WriteLine
(
" Zdalny adres: "
+
poloczenieTCP
.
Address
.
ToString
()
+
":"
+
poloczenieTCP
.
Port
);
Console
.
WriteLine
(
" Aktualne połączenia UDP:"
);
foreach
(
IPEndPoint
poloczenieUDP
in
IPGlobalProperties
.
GetIPGlobalProperties
()
.
GetActiveUdpListeners
())
Console
.
WriteLine
(
" Zdalny adres"
+
poloczenieUDP
.
Address
.
ToString
()
+
":"
+
poloczenieUDP
.
Port
);
}
}
}
O autorze
Sławomir Orłowski – Z wykształcenia
fizyk. Obecnie jest doktorantem na Wy-
dziale Fizyki, Astronomii i Informatyki
Stosowanej Uniwersytetu Mikołaja Ko-
pernika w Toruniu. Zajmuje się symu-
lacjami komputerowymi układów bio-
logicznych (dynamika molekularna)
oraz bioinformatyką. Programowanie
jest nieodzowną częścią jego pracy
naukowej i dydaktycznej. Ma doświad-
czenie 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 infor-
matycznych. Strona domowa: http://
www.fizyka.umk.pl/~bigman/.
Kontakt: bigman@fizyka.umk.pl
hakin9 Nr 11/2007
www.hakin9.org
21
C# – diagnostyka połączeń sieciowych
•
LastAck – komputer lokalny ocze-
kuje na ostateczną odpowiedź
komputera zdalnego i zamknięcie
połączenia,
•
Listen – nasłuchiwanie. Kompu-
ter lokalny czeka na połączenie
TCP od dowolnego komputera
zdalnego,
Podsumowanie
W ten sposób stworzyliśmy pierwszy
program, który może dostarczać in-
formacji na temat połączeń siecio-
wych na komputerze lokalnym. Mam
nadzieję, że przekonałem dzięki nie-
mu Czytelników, iż platforma .NET
posiada ogromną liczbę klas, któ-
re znacznie ułatwiają i przyspiesza-
ją proces tworzenia aplikacji siecio-
wych. Proszę zauważyć, że w tym
przykładzie do zebrania odpowied-
nich informacji praktycznie nie mu-
sieliśmy używać żadnych sztuczek,
przechwytywania pakietów itd. Nie
używaliśmy interfejsu WinAPI, co
z pewnością pozytywnie wpływa na
jakość i niezawodność naszego ko-
du. Wszystko zrobiliśmy korzysta-
jąc ze standardowych klas .NET, ich
własności i metod. Zachęcam do sa-
modzielnych eksperymentów i do
rozszerzenia możliwości tego pro-
stego programu. l
W Sieci
• http://www.microsoft.com/poland/
developer/net/podstawy/default.
mspx – strona firmy Microsoft za-
wierająca informacje o podstawach
platformy .NET,
• http://msdn2.microsoft.com/en-us/
netframework/default.aspx – kolej-
na strona firmy Microsoft,
• http://www.codeproject.com/ – zbiór
bardzo wielu przykładów aplikacji
dla platformy .NET i nie tylko. Na-
prawdę godny polecenia,
• http://www.codeguru.pl/ - polska
strona dla programistów .NET.
•
SynReceived – synchronizacja
połączenia TCP. Lokalny kompu-
ter wysłał i odebrał prośbę o po-
łączenie i oczekuje odpowiedzi,
•
SynSent – synchronizacja połą-
czenia TCP. Lokalny komputer
wysłał pakiet synchronizacji (bit
SYN) i oczekuje na odpowiedź,
•
TimeWait – komputer lokalny
oczekuje przez określony czas,
aby upewnić się, że komputer
zdalny otrzymał pakiet informu-
jący o zakończeniu połączenia,
•
Unknown – stan połączenia TCP
nieznany.
Kolejnym krokiem jest wyświetlenie
wszystkich serwerów, jakie działają
na naszym komputerze. Służy do tego
metoda
GetActiveTcpListeners
. Wy-
świetla ona listę adresów IP oraz por-
tów, na jakich nastąpiło połączenie.
Na koniec wyświetlane są wszystkie
procesy, które oczekują na połączenie
UDP. Służy do tego metoda
GetActive
UdpListeners
pokazana na
Listingu 8.
R
E
K
L
A
M
A
www.hakin9.org
hakin9 Nr 11/2007
22
Atak
W
tej gałęzi rynku rywalizują tacy gi-
ganci jak Sony, producent rodziny
konsol: Playstation, Nintendo, oraz
Microsoft wraz ze swoim Xboksem i Xbok-
sem 360. Jednakże stworzenie dobrej konsoli
nie polega jedynie na zapewnieniu, że ma ona
świetne parametry graficzne. Liczy się również
prostota tworzenia gier oraz bezpieczeństwo
sprzętu. I właśnie tematowi bezpieczeństwa
konsoli Microsoftu poświęcimy więcej uwagi.
W artykule tym omówimy wszelkie błędy, jakie
zostały popełnione przy tworzeniu pierwszej
konsoli giganta z Redmond – Xboksa.
W 2 lata wykonamy plan
wieloletni
Microsoft konkuruje z koncernem Sony na rynku
multimediów. W roku 2000 Sony miało w swojej
ofercie takie produkty jak np. Discmany, nagry-
warki DVD oraz konsole Playstation. Microsofto-
wi brakowało do szczęścia tylko konsoli, którą
postanowił stworzyć przed wydaniem Playsta-
tion 2, czyli w czasie krótszym niż dwa lata. Jed-
nakże w tak krótkim czasie nie da się stworzyć
produktu, który można byłoby określić jako kon-
solę. To, co udało się zrobić, jest w rzeczywisto-
ści zminiaturyzowanym PC. Na pokładzie Xbok-
sa znalazł się procesor Intel Celeron 733, karta
graficzna Nvidia GeForce 3 z wyjściem TV, dysk
twardy 10 GB oraz DVD-ROM. Konsola posia-
dała także interfejsy Fast Ethernet oraz USB
i była nadzorowana przez zubożony Windows
2000, który zużywał mniej pamięci operacyjnej.
Warto wiedzieć, że wnętrze Xboksa kryje trzy
jeszcze bardziej interesujące rzeczy, a mianowi-
cie kontroler przerwań z 1982 roku (PIC), Timer
z 1982 roku oraz złącze A20, które zostało skon-
struowane przez firmę IBM i umożliwiało kon-
trolę nad High Memory Area (HMA), a konkret-
nie nad pierwszymi 64 kilobajtami pamięci. Tak
więc Microsoft właściwie nie stworzył konsoli,
lecz komputer, który miał na celu odgrywanie wy-
kreowanych gier. Takie podejście do sprawy stwo-
rzyło jednak pewne zagrożenia. Twór Microsoftu
potrzebował zatem systemu bezpieczeństwa.
Hakowanie Xboksa
Michał Majchrowicz, Marcin Wyczechowski
stopień trudności
Rynek gier komputerowych rozwija się dynamicznie od wielu
lat. Każdy czasem ma ochotę pograć w jakąś dobrą grę
o realistycznej grafice, dlatego wielkie koncerny informatyczne
starają się sprostać wciąż rosnącym wymaganiom, tworząc
popularne konsole do gier i coraz to wydajniejsze komponenty
bazowe do naszych komputerów domowych.
Z artykułu dowiesz się
• jak działają i jaka jest geneza zabezpieczeń
konsoli Xbox.
Co powinieneś wiedzieć
• znać architekturę x86.
Hakowanie Xboksa
hakin9 Nr 11/2007
www.hakin9.org
23
Jakie były potencjalne zagrożenia?
Rozpocznijmy od faktu, iż Microsoft na
pewno nie życzyłby sobie, aby na jego
konsoli uruchomiono inny system ope-
racyjny, np. Linux. W efekcie pozwoli-
łoby to na traktowanie Xboksa jak nor-
malnego PC, a to z kolei prowadziłoby
do strat finansowych. Nie byłaby rów-
nież korzystna możliwość stworzenia
przez kogoś oprogramowania działa-
jącego na konsoli, ponieważ MS dą-
żył do monopolu programowego na
tę platformę sprzętową. Doskonałym
przykładem jest odtwarzacz multime-
diów, czy też przeglądarka. Kłopot
sprawiałyby także skopiowane gry bez
licencji, napisane przez kogokolwiek
– to także powodowałoby uszczerbek
finansowy. Remedium na wszystkie te
problemy musiałoby zawrzeć się w jed-
nym systemie bezpieczeństwa. Jak to
zrobić? Główną zasadą działania sys-
temu bezpieczeństwa konsoli Xbox by-
ło uruchamianie tylko zaufanego kodu,
który przechodziłby kolejne testy zgod-
ności. Takie kolejne kroki potwierdza-
nia poprawności uruchamianego ko-
du określa się mianem Chain of Trust
– łańcucha zaufania.
Czemu ufamy i co z tym
robimy
Pora opisać, co dzieje się, kiedy włącza-
my Xboksa. Gdy konsola startuje, musi
załadować system operacyjny. Zanim
jednak to zrobi, sprawdza, czy system,
który zostanie uruchomiony jest w po-
rządku – czy jest sprawny i czy nikt nie
dokonał w nim żadnych zmian. Po zała-
dowaniu systemu operacyjnego nastę-
puje włączenie aplikacji lub gry, a na-
stępnie kolejne sprawdzenie, czy uru-
chamiany kod legitymuje się certyfika-
tem autentyczności. Przyjrzyjmy się te-
mu, co Xbox kryje wewnątrz. Znajdzie-
my tam procesor, procesor graficzny
zintegrowany z mostkiem północnym,
mostek południowy, RAM, oraz układ
pamięci Flash. Dokładny opis proce-
su startu konsoli możemy zobaczyć na
Rysunku 1.
Na Rysunku 1. znajdziemy mapę
pamięci. Na niej widzimy RAM, Flash
chip oraz resztę pamięci. CPU startuje
od adresu
0xFFFFFFFF0
. Kolejne 16 baj-
tów służy do wykonania dowolnego ko-
du uruchamiającego system, jak rów-
nież może na przykład przestawić pro-
cesor w tryb chroniony. Dokonują się
tam różnorodne procesy. Co się jednak
stanie, jeśli Flash chip zostanie zmody-
fikowany? Wówczas atakujący będzie
mógł uruchomić swój kod. W jaki więc
sposób moglibyśmy spowodować, aby
nasz kod znalazł się na początku wyko-
nywania instrukcji w pamięci? Możemy
usunąć Flash chip i zastąpić go innym
(np. własnym), ale to zbyt ryzykow-
ne. Lepszym pomysłem byłoby obej-
ście zainstalowanego na płycie ukła-
du przez użycie dodatkowego gniazda,
do którego podłączylibyśmy własnego
Flash chipa. Gniazdo takie zostało za-
instalowane z powodu zmniejszenia
kosztów produkcji konsoli. Przegranie
zawartości jednego układu pamięci na
drugi dzięki dodatkowemu gniazdu jest
o wiele bardziej ekonomiczne niż pod-
łączanie do płyty już zaprogramowa-
nego Flasha. Ostatnią metodą może
być po prostu nadpisanie Flash chipa
znajdującego się na płycie własnymi
instrukcjami. Tak więc system bezpie-
czeństwa Xboksa umożliwił nam doko-
nanie manipulacji już przy starcie sys-
temu. Rozważmy teraz, jak można by
zabezpieczyć się przed takim działa-
niem. Po pierwsze, istnieje opcja uży-
cia układu ROM, który nie mógłby być
nadpisany (ale nadal mógłby zostać
wymieniony na inny). Takie działanie
podniosłoby jednak koszty produkcji
konsoli. Inną alternatywą byłoby zinte-
growanie ROMu, z którego startowała-
by konsola, z jakimś innym komponen-
tem. Jest to dobry pomysł, bo nikt nie
wymieniłby takiego komponentu na in-
ny. To rozwiązanie niemal optymalne,
ale również prowadzące do podnie-
sienia ceny konsoli. Ciekawszym wyj-
ściem jest zintegrowanie małego RO-
Mu z jakimś innym chipem na płycie,
który weryfikowałby poprawność Fla-
sha, a następnie przekazywał do nie-
go kontrolę. Takie rozwiązanie jest bar-
dzo efektywne i znacznie tańsze. Ów
ROM można by zintegrować na przy-
kład z mostkiem południowym, gdyż
ten komponent jest zawsze tworzony
specjalnie pod daną architekturę. Na-
leży się zastanowić, jak wobec tego
będzie teraz wyglądać weryfikacja po-
prawności Flasha. Można by na przy-
kład sprawdzić poprawność sygnatu-
ry RSA. Niestety, nie da się umieścić
takiej sygnatury w 512 bajtach, a uży-
wanie większego ROMu znów podnio-
słoby bardzo koszty. Innym wyjściem
jest sprawdzenie sumy kontrolnej, lecz
wtedy nie ma możliwości uaktualnie-
nia kernela we Flashu bez zmiany ca-
łego chipsetu mostka południowego,
ponieważ każda modyfikacja zawar-
tości Flasha spowoduje zmianę sumy
kontrolnej. Bardzo dobrym rozwiąza-
niem byłoby dodanie jeszcze jedne-
go ogniwa w naszym Chain of Trust,
w którym zintegrowany ROM hasho-
wałby drugi bootloader. Co dzięki temu
Rysunek 1.
Mapa pamięci konsoli Xbox
���
�����
�����������
�
���������
����������
����������
�����
hakin9 Nr 11/2007
www.hakin9.org
Atak
24
można uzyskać? Ten drugi bootlo-
ader, znajdujący się we Flashu, mógł-
by już być dowolnej wielkości – dzięki
czemu bezproblemowo przeprowadził-
by sprawdzenie sygnatury RSA kerne-
la. Zapewnia to pewien poziom bez-
pieczeństwa. W celu modyfikacji jądra
systemu nie trzeba już wymieniać ca-
łego mostka południowego - wystarczy
wymienić Flash chip, ponieważ suma
kontrolna drugiego bootloadera pozo-
stanie niezmieniona. Skupmy się jesz-
cze przez chwilę na ROMie ukrytym w
mostku południowym. Jego zadania to
sprawdzenie sumy kontrolnej drugiego
bootloadera i przekazanie mu kontroli,
ale również jego deszyfracja (korzyst-
ne jest zaszyfrowanie całego Flashu).
I tu pojawia się drobny problem zwią-
zany z budową Xboksa. Mianowicie,
do deszyfracji potrzebna jest pamięć
RAM, która zaraz po włączeniu Xbok-
sa zachowuje się bardzo niestabilnie.
Można sobie zadać pytanie: dlaczego
tak jest? Dzieje się tak z prostej przy-
czyny. Microsoft zakupił kości RAM od
Samsunga. Nie były to jednak układy
o konkretnie ustalonych parametrach.
Gigant z Redmond zakupił każdą kość
RAM, jaką firma Samsung mogła mu
dostarczyć. Nie tylko te dobre kości,
ale również te z błędami. Jasne jest
więc, że dane układy działają na róż-
nych częstotliwościach zegara. Za-
tem przed ich użyciem konieczne jest
przeprowadzenie tzw. Stress Test, co
pozwala na ustalenie parametrów RA-
Mu. Dopiero potem możemy użyć go
do własnych celów. Jednakże takiego
działania nie jest w stanie dokonać kod
zapisany w pamięci ROM, ponieważ
przekraczałby on 512 bajtów. Wskaza-
ne jest więc zastosowanie innego roz-
wiązania. Można choćby umieścić we
Flashu wirtualną maszynę, która bę-
dzie zawierać napisane w specyficz-
nym języku instrukcje przeznaczone
do testowania RAMu. Ten język to tzw.
Xcodes. Wirtualna maszyna spraw-
dzałaby wydajność RAMu na zasadzie
jednej pętli, przesyłającej do pamięci
pewną daną i odczytującej ją. Jeśli da-
na zostanie odczytana poprawnie, wia-
domo już, z jaką częstotliwością pracu-
je RAM. W przeciwnym wypadku czę-
stotliwość zostanie zmniejszona i ca-
ły proces się powtórzy. Po ustawie-
niu wszystkich parametrów ROM mo-
że rozpocząć deszyfrację drugiego bo-
otloadera do RAMu. Jedyne zagroże-
nie stanowi możliwość poznania Xco-
des przez osobę niepożądaną. Trzeba
więc pisać instrukcje trudne do zrozu-
mienia bez znajomości zawartości Se-
cret ROMu.
Ataki na Secret ROM
Pierwszy możliwy do przeprowadzenia
atak w celu poznania zawartości Se-
cret ROMu byłby możliwy po dobrym
poznaniu Xcodes. Wówczas przy ich
użyciu zachodziłaby możliwość prze-
słania zawartości ROMu na jakiś niski
port i zesniffowanie tego na tym wła-
śnie porcie. By zabezpieczyć się przed
tego typu atakiem, należy uniemoż-
liwić Xcodes dokonywanie wszelkich
operacji na Secret ROMie. Alternatyw-
ny atak to możliwość wyłączenia Se-
cret ROMu. Po wyłączeniu ROMu wy-
konanie zostanie od razu przekazane
do pamięci Flash (która może być pod-
mieniona przez atakującego). Zatem
odpowiednie zabezpieczenia powinny
zapewnić, iż Xcodes nie mogą wyłą-
czyć Secret ROMu. W związku z tym,
należy sprawdzić za każdym razem,
Rysunek 2.
Schemat ideowy algorytmu deszyfrującego i haszującego
����������������������
��������
������������
����������
�����������
����������
����
Rysunek 3.
Górna częś pamieci oraz instrukcje wyłączające Secret ROM
�������������������������������
����������
������
�����
���
������
���
����������������
�����������
�����������
��������
��������
���������
���������� ���������� ���������� �������������������� ����������
����������
Hakowanie Xboksa
hakin9 Nr 11/2007
www.hakin9.org
25
czy jest w danym momencie wykony-
wana instrukcja
POKEPCI (8000880h,2)
.
Jeśli tak - musimy wyłączyć bit odpo-
wiadający za wyłączenie ROMu.
Jądro i jego
bezpieczeństwo
Teraz opiszemy, jak ma się sprawa de-
szyfracji kernela Xboksa, następująca
po inicjalizacji pamięci i wszystkich
czynnościach związanych z obsługą
wirtualnej maszyny. Na wstępie wy-
pada powiedzieć, że potrzebny jest
krótki, wydajny algorytm, pozwalający
na przeprowadzenie deszyfracji jądra.
Może on znajdować się w pamięci
Flash (możliwej do podmienienia). Na-
stępnie algorytm sprawdzi sumę kon-
trolną jądra. Niektóre z algorytmów po-
siadają tzw. secret key, przekazywany
do seeda, mogącego wygenerować
ciąg, który jest XORowany z każdym
zaszyfrowanym tekstem znajdującym
się we Flashu. Tym sposobem otrzy-
mujemy odszyfrowany tekst. Tak wła-
śnie działają algorytmy RC4 i RC5.
Dodatkową własnością jest możliwość
uruchomienia sprzężenia zwrotnego
– w tym wypadku odszyfrowany tekst
wraca do seeda, co widzimy na Ry-
sunku 2.
Efekt jest taki, że w przypadku
modyfikacji choćby jednego bajtu
w zaszyfrowanym tekście, zmie-
nia nam się tekst wyjściowy, a po-
przez sprzężenie zwrotne – także
cała część strumienia znaków se-
cret key. Powoduje to modyfikację
całości tekstu wyjściowego – aż do
ostatniego bajtu. W skrócie: dzięki
temu otrzymujemy nowy, darmowy
hash. Jest to bardzo efektywne dzia-
łanie, gdyż dzięki funkcjonowaniu
sprzężenia tekstu wyjściowego z se-
edem jednocześnie przeprowadza
się deszyfrację oraz hashowanie. Co
jednak powinno się dziać, jeśli spraw-
dzenie Flasha się nie powiodło?
W jaki sposób Xbox powinien po-
wiadomić użytkownika o nieprawi-
dłowościach? Wówczas powinno
się zaświecić diodę, wyłączyć CPU
oraz wyłączyć Secret ROM. Dzięki
temu zablokujemy możliwość łatwe-
go zrzucenia zawartości ROMu. Pro-
blem jednak jest, co dokładnie powin-
no się zrobić po wystąpieniu błędu we
Flashu. Jeśli najpierw zostanie wyłą-
czony CPU, nie ma możliwości wyłą-
czenia Secret ROMu. Z drugiej stro-
ny, gdzie mają się znaleźć instrukcje
do wyłączenia CPU po uprzednim
zablokowaniu Secret ROMu? Micro-
soft okazał się tutaj bardzo pomysło-
wy. Po nieudanym sprawdzeniu Fla-
sha, zostaje wykonany skok na sa-
mą górę pamięci, gdzie znajdują się
instrukcje wyłączające Secret ROM.
Po przejściu tych instrukcji kończy
się mapa pamięci i zgodnie ze spe-
cyfikacją Xboksa następuje błąd,
z powodu którego wyłącza się CPU.
Możemy to zobaczyć na Rysunku 3.
W ten sposób zostały przeprowadzo-
ne równocześnie dwa procesy: wyłą-
czenie Secret ROMu oraz CPU. Pod-
sumowując to, co dotychczas ustalili-
śmy na temat Xboksa, możemy krót-
ko powiedzieć, iż Secret ROM jest
ukryty w mostku południowym i nie
może zostać zastąpiony ani nadpi-
sany. Pamięć RAM jest inicjalizowa-
na z użyciem Xcodes, przeprowadza-
na jest deszyfracja i hashowanie dru-
giego bootloadera znajdującego się
we Flashu.
Po drugiej stronie
barykady
Pokażemy teraz, jak opisane wyżej
zabezpieczenia funkcjonują w rze-
czywistości, i co jest zgodne z zapo-
wiedziami Microsoftu. Na początku
porozmawiajmy na temat Secret RO-
Mu. Pewnej osobie o pseudonimie
Bunnie (odpowiedzialnej również za
złamanie konsoli Xbox 360) udało
się – sniffując magistralę HyperTran-
sport – wydobyć zawartość Secret
ROMu. W kodach znajdowała się
maszyna wirtualna, instrukcje do de-
szyfracji algorytmem RC4 oraz tzw.
panic code. Oczywiście drugi bootlo-
ader jest zahashowany. Przyjrzyjmy
się jeszcze raz algorytmowi RC5.
Jeśli zmieniłoby się jakikolwiek bajt
w tekście zaszyfrowanym, zmianie
uległby jednocześnie tekst wyjścio-
wy. Dzieje się tak z powodu istnie-
nia wyżej wspomnianego sprzężenia
zwrotnego. Jednakże tylko algorytm
RC5 ma takie sprzężenie. RC4 go
nie posiada i właśnie takiego algoryt-
mu używa Secret ROM. Możemy wy-
snuć jasny wniosek, że ten algorytm
nie może być stosowany do genero-
wania hasha. Jedyne, co należy zro-
bić, to zaszyfrować algorytmem RC4
własne instrukcje i umieścić je tam,
gdzie powinien znajdować się wła-
ściwy drugi bootloader. Takim dzia-
łaniem charakteryzują się tzw. Mod-
chipy. Dzielą się one na dwa rodzaje.
Tak zwana pierwsza generacja wyłą-
czała ROM umieszczony na płycie,
w wyniku czego poprzez dodatkowe
złącze można było uruchomić dodat-
kowy. Mógł on pozwalać na przy-
kład na uruchamianie skopiowanych
Rysunek 4.
Pamięć Xbox-a pokazana jako okrąg
�����������������
����������
���������� ���������� ���������� ���������� ���������� ����������
��������
�
�����������������
������������
�����������
��������
���
�����
���������
�
�
hakin9 Nr 11/2007
www.hakin9.org
Atak
26
gier. Druga generacja powodowa-
ła, że wirtualnie ROM znajdujący się
na płycie był pusty. Dzięki uziemie-
niu magistrali danych D0, konsola
korzystała z dołożonego zewnętrz-
nie ROMu.
Zwróćmy uwagę również na sy-
tuację, w której wedle specyfikacji,
gdy wykonywanie instrukcji dojdzie
do najwyższego adresu, następu-
je tzw. double fault i zatrzymywa-
ny jest CPU. Wartościową informa-
cją jest to, że pamięć tak napraw-
dę nie jest linią. Jest ona okręgiem
i gdy dojdziemy do jej końca, wró-
cimy na początek. A więc, czy tak
naprawdę po natrafieniu na adres
0xFFFFFFFF
następuje błąd? Otóż
nie. Po napotkaniu końcowego ad-
resu
0xFFFFFFFF
wykonanie przecho-
dzi do adresu zerowego, a ten adres
to adres pamięci RAM, co widzimy
na Rysunku 4.
W celu sprawdzenia słuszności ta-
kiej teorii, musimy umieścić nasz kod
na początku pamięci RAM i dobrowol-
nie sprawić, aby drugi bootloader spo-
wodował błąd. Jak wcześniej wspo-
mnieliśmy, spowoduje to przeskocze-
nie do końcowych obszarów pamięci,
gdzie nastąpi wyłączenie Secret ROM.
Aby zawrzeć instrukcje w RAMie, nale-
ży użyć Xcodes, ponieważ to one mo-
gą umieszczać dane w pamięci opera-
cyjnej. Umieścimy tam tylko dwa roz-
kazy, skaczące do początku pamię-
ci Flash, gdzie już znajdują się na-
sze instrukcje. Taka koncepcja działa.
Nie pojawia się żaden błąd. Wszystko
działa tak, jak chcieliśmy. Teraz posta-
ramy się wyjaśnić, dlaczego. Można
krótko przypomnieć, iż procesory Inte-
la zawsze zaczynały startując od naj-
wyższych adresów. Systemy operacyj-
ne jednak nie zawsze tak postępowały
(nawet te tworzone w Redmond). Aby
sprostać tym wymaganiom, Intel za-
stosował specjalną sztuczkę. Na pro-
cesorach tej firmy niepodłączone frag-
menty pamięci są zawsze zwracane
jako 0xFF, a kombinacja
0xFF,0xFF
na
procesorach z serii x86 zachowuje się
jak instrukcja NOP. Dzięki temu proce-
sor rozpoczynał działanie od adresu
0xFFFFFFF0
, następnie wykonywał 4 in-
strukcje
0xFF,0xFF
i dochodził do adre-
su zerowego, gdzie znajdował się sys-
tem operacyjny. I tu pojawia się pyta-
nie: czemu Microsoft postąpił wbrew
dokumentacji Intela? Odpowiedź jest
dość ciekawa. Dzieje się tak, ponieważ
procesory AMD nie posiadają takiej
funkcji. Procesory AMD z założenia
przerywają wykonanie kodu w takim
przypadku. Tylko co z tym wszystkim
ma wspólnego AMD? Otóż wszystkie
prototypy Xboksa korzystały z tych
procesorów. To bardzo interesująca
kwestia. Na początku uzgodniono,
że AMD robi chipset, natomiast Nvi-
dia – sprzęt graficzny. Tymczasem
w pewnym momencie Intel zapropo-
nował Microsoftowi, że to oni się tym
zajmą. Nie było to takie proste, wszyst-
kie komponenty wykonywało bowiem
AMD.
Okazuje się, że błędów Microsoftu
jest więcej. Istnieje również możliwość
wyłączenia Secret ROMu, a potem wy-
konania bezpośrednio kodu znajdu-
jącego się we Flashu. Wcześniej mówi-
liśmy o jednej instrukcji Xcodes, na
którą Xbox nie pozwala
(POKEPCI(8000
880h,2)
. Jeśli zajrzymy w specyfikację,
znajdziemy tam kompletny opis bitów,
jakie możemy ustawić. Znajduje się
tam kilka oznaczonych jako reserved.
Co się stanie, gdy zamienimy te bity na
FF? Nasza instrukcja wyglądać będzie
tak:
POKEPCI(FF00880h, 2)
. I to już za-
działa. Operacja nie zostanie wykryta
jako próba zamknięcia Secret ROMu,
a ROM mimo to będzie wyłączony i wy-
konanie będzie przekazane do Flasha.
Ten pomysł nie jest jedyną możliwo-
ścią wyłączenia Secret ROMu. Moż-
na również skorzystać z innych Xco-
des. Kilka odpowiednio napisanych in-
strukcji OUTB również nie jest spraw-
dzanych – a ich działanie jest takie sa-
mo, jak zmodyfikowanej instrukcji PO-
KEPCI. Popatrzmy teraz, jak na te
błędy zareagował Microsoft. Gigant
z Redmond zdecydował się na na-
prawienie hasha. Potrzebował do te-
go celu bardzo małego algorytmu ha-
shującego. Jeśli włączymy Google
i poszukamy tiny encryption algori-
thm to właśnie taki znajdziemy (TEA).
W RC4 zmieniono tylko secret key na
inny. Nie użyto algorytmu RC5, który
mógłby jednocześnie służyć jako al-
gorytm hashujący. Nie wiadomo, dla-
czego – być może na przeszkodzie
stanęły problemy patentowe. W każ-
dym razie Microsoft dostatecznie po-
prawił swoje błędy.
Kolejne podejście
W celu wydobycia Secret ROMu nadal
można było zrobić to samo, co po-
przednio, gdyż nie zostało to w żaden
sposób utrudnione. Znalazł się jednak
i inny pomysł. Jak już wcześniej wspo-
mnieliśmy, Xbox posiada bramę A20#.
Pozwalała ona zaadresować więcej
niż 1MB pamięci. Architektura proce-
Rysunek 5.
Schamat pamięci z pokazanym miejscem startu Xboks
po uziemieniu A20#
����������
����������
����������
�
����������
����������
����������
���
�����
�����
Hakowanie Xboksa
hakin9 Nr 11/2007
www.hakin9.org
27
sorów 8086 mogła zaadresować mniej
niż 1MB pamięci. Procesory 286 po-
siadały bramę A20# zapewniającą im
wsteczną kompatybilność. Jeśli w ar-
chitekturze 286 otworzyliśmy linię A20,
mieliśmy możliwość adresowania wię-
cej niż 1MB. MS-DOS nazywał to High
Memory. Jednak po zamknięciu tej
bramy, symulowaliśmy koło w pamięci,
a wszystkie adresy dokonywały ope-
racji logicznej
AND 0xFFEFFFFF
. Obec-
ne procesory x86 posiadają tę bramę,
lecz jest ona tylko pinem na proceso-
rze. Wróćmy do teraz naszej konsoli.
Jeśli więc linię A20 uziemimy, czyli in-
aczej mówiąc wyłączymy wszystkie in-
ne, dokonana zostanie operacja logicz-
na AND na adresach. Toteż procesor,
zamiast startować na
0xFFFFFFF0
, roz-
pocznie pracę na
0xFEFFFFF0
. Odzwier-
ciedlenie tej sytuacji w pamięci widzi-
my na Rysunku 5.
Widzimy tam odbicie Flasha na
16 MB pamięci. Zatem jedyną rze-
czą, jaką musimy zrobić, jest umiesz-
czenie w odpowiednim miejscu kodu,
który posłuży do zrzucenia zawarto-
ści Secret ROMu.
Błędy oprogramowania
Jak pamiętamy, podczas włącze-
nia konsoli Xbox mamy do czynie-
nia z tzw. Chain of trust. Zajmiemy
się teraz punktem tego łańcucha,
w którym Windows sprawdza po-
prawność gry. System weryfikuje grę
algorytmem RSA z 2048-bitowym
kluczem. Proces analizowania gry
wygląda na dość dobrze zabezpie-
czony, wszakże został zaimportowa-
ny z kodu MS Windows. Nie było tutaj
możliwości spowodowania błędu, jak
w przypadku wspomnianych 512 baj-
tów Secret ROMu. Kontynuując po-
szukiwania miejsca, w którym dało-
by się znaleźć błąd, widzimy, że brak
jest jakiejkolwiek weryfikacji w mo-
mencie, gdy gra wgrywa swoje da-
ne (co nie wydaje się w zasadzie po-
trzebne). Umożliwia to zastosowanie
standardowych metod prowadzą-
cych do uruchomienia kodu (np. buf-
fer overflow). Zastanówmy się teraz,
w jaki sposób przyczynić się do prze-
pełnienia bufora. Gra wgrywa wszyst-
kie grafiki i muzykę z płyty. Zamia-
na płyty z grą na dowolną własnej
produkcji (mamy tu na myśli DVD-R)
nie daje rezultatu – inny krążek nie
będzie działać, a stworzenie klona
płyty jest bardzo trudne. Inna moż-
liwość to użycie stanów gier, tzw.
Savegames. Zapisy stanów gier są
przechowywane na twardym dys-
ku Xboksa lub na pendrivie. Trzeba
tylko zaopatrzyć się w grę, która ma
błędy w przetwarzaniu zapisanych
stanów (np. 007), spreparować taki
stan odpowiednio i wczytać. Kolej-
ną, bardzo interesującą rzeczą jest
fakt, że przy standardowym użyciu
exploita (np. w Internet Explorerze),
nie mamy możliwości choćby włą-
czenia innego systemu, gdyż pra-
cujemy w danym momencie w trybie
użytkownika. Gry na Xboksie są uru-
chamiane w trybie nadzorcy, co daje
pełny dostęp. Nie wiadomo, dlacze-
go Microsoft tak zrobił – możliwe, że
dla osiągnięcia większej wydajności.
Zmodyfikowano Windows w ten spo-
sób, że nie posiada on już trybu użyt-
kownika, tylko tryb nadzorcy. Nieste-
ty, w celu włączenia Linuksa za każ-
dym razem musimy ładować grę,
a potem jej odpowiednio spreparo-
wany stan, umieszczony np. na pen-
drivie. Jest to więc bardzo uciążli-
we. Istnieje jednak prostszy sposób
na uruchomienie Linuksa. Przyjrzyj-
my się aplikacji, która uruchamia się
w momencie, gdy Xbox startuje i w
napędzie nie ma żadnej płyty DVD.
W aplikacji tej (tzw. Dashboard) mo-
żemy przejrzeć nasze stany gry, od-
tworzyć muzykę i zmienić pewne
dodatkowe ustawienia. Zastanawia
przyczyna, dla której ta aplikacja jest
przechowywana na dysku twardym
R
E
K
L
A
M
A
hakin9 Nr 11/2007
www.hakin9.org
Atak
28
i dlaczego w ogóle Microsoft go użył.
Twórcy konsoli GameCube umieścili
taki sam kod w chipie ROM o pojem-
ności 2 MB. Niestety, dla firmy Bil-
la Gatesa to było za mało. Utworzo-
na aplikacja zajęła aż 100 MB; ukła-
dy ROM o takiej pojemności kosztu-
ją sporo, a twórcy konsoli chcieli za-
oszczędzić. Wobec tego dodali dysk
twardy i starali się poszukać jakiejś
innej możliwości jego wykorzystania.
Na dysku można zatem przechowy-
wać na przykład muzykę. Dashbo-
ard ładuje pliki muzyczne, grafikę 3D
oraz czcionki do wyświetlania napi-
sów. Sprawdza również sumy kon-
trolne plików audio, grafiki, ale nie
czcionek. W przetwarzaniu tych ostat-
nich występuje błąd. Gdyby to wy-
korzystać, możemy zmienić Xboksa
w coś bardziej zadowalającego (Ry-
sunek 6).
Wykorzystując powyższą lukę,
możemy dodać do tej aplikacji nową
funkcję, np. startowanie bootloadera
Linuksa z dysku twardego. Konklu-
dując: jeżeli zamierzamy skorzystać
tylko z błędów popełnionych w opro-
gramowaniu, w celu uruchomienia
Linuksa. Możemy użyć spreparowa-
nego stanu gry lub wyeksploitować
błąd w aplikacji powitalnej. Nawet
gdyby gry nie ładowały się w trybie
nadzorcy, a suma kontrolna czcionek
byłaby sprawdzana, to istnieje jesz-
cze szereg innych popełnionych błę-
dów – na przykład związanych z listą
odtwarzanych plików muzycznych.
Jak wyglądała naprawa dashboar-
du przez Microsoft? Wydał on nową
wersję aplikacji, nieposiadającą tego
błędu. Osoby korzystające z sieci
w Xboksie również dostały odpo-
wiedni update. Nie spowodowało
to jednak dużych zmian, gdyż cią-
gle można było wydobyć stary dash-
board z lukami. Następnym krokiem
było wpisanie starej wersji na czarną
listę – wykluczono możliwość uru-
chomienia błędnego dashboardu.
Mimo to na dysku nadal znajdował
się plik o nazwie xonlinedash.xbe,
posiadający dziurę. Z biegiem cza-
su naturalnie poprawiono również
ten błąd, uniemożliwiając korzysta-
nie ze zbioru, lecz na dysku znajdo-
wał się jeszcze jeden plik – dashup-
date.xbe. Choć zawierał on takie sa-
me błędy, celowo nie umieszczono
go na czarnej liście – w takim przy-
padku osoby używające nowych kon
sol z tym uaktualnieniem zostały-
by pozbawione możliwości zagrania
w stare gry.
Podsumowanie
Podczas tworzenia konsoli Xbox Mi-
crosoft postawił zbyt duży nacisk na
niską cenę, a za mało dbał o bezpie-
czeństwo. Nie należało za wszel-
ką cenę dążyć do tego, aby konso-
la była jak najtańsza. Kłopoty spowo-
dowało choćby użycie wszelkich do-
stępnych kości pamięci RAM. Z te-
go powodu producent musiał wpro-
wadzić inicjalizację pamięci poprzez
wirtualną maszynę, w której były błę-
dy. Układ Secret ROM został umiesz-
czony w mostku południowym za-
miast od razu w CPU, co uniemożli-
wiłoby jego zesniffowanie przez ma-
gistralę. Ponadto nie należy próbo-
wać uzyskać tylko minimalnie więk-
szej wydajności na danym sprzęcie
kosztem bezpieczeństwa, jak zrobił
to Microsoft decydując się na uru-
chamianie gier w trybie nadzorcy.
Gigant z Redmond powinien rów-
nież zrozumieć, że tworzenie zabez-
pieczeń zaledwie trudnych do prze-
łamania nie spełnia swojej roli. Po-
winny być one niemożliwe (lub – re-
alnie – niemal niemożliwe) do złama-
nia dla hakerów. W innym wypadku
zawsze znajdzie się osoba z dostę-
pem do odpowiedniego sprzętu lub
innych zasobów, która to zrobi. Na-
leżałoby odpowiednio zabezpieczyć
dysk – najlepiej jakimś hasłem, mieć
pełną kontrolę nad stanami gier, uży-
wać tylko dobrych, sprawdzonych al-
gorytmów i – jeśli potrzeba – wy-
konać operację deszyfracji czy ha-
showania. Wskazane jest uważne
przyjrzenie się już wykrytym lukom
i metodzie ich wykorzystania. Jeśli
w systemie bezpieczeństwa znajdu-
ją się jeszcze podobne miejsca, ry-
chło mogą zostać wykryte kolejne
błędy. Dokonując zmian w ostatniej
chwili, należało dokładnie przeczy-
tać, z czego się korzysta. Mam tu na
myśli chociażby fakt, że dla proceso-
rów Intela pamięć jest kołem. Micro-
soft tego nie uwzględnił, bo nie prze-
czytano dokumentacji i nie sprawdzo-
no, jakie konsekwencje niosła za so-
bą zmiana procesora. Dobrym po-
mysłem byłaby również rozmowa
z tymi, którzy stoją po drugiej stronie
barykady. Umożliwiłoby to dojście do
kompromisu. Jeśli Microsoft pozwolił-
by na uruchamianie Linuksa na Xbok-
sie, pewnie pozbyłby się przynajmniej
Linuksowych hakerów. Niemniej po-
trzeba byłoby tutaj woli rozmowy z obu
stron, a takowej nigdy nie było. l
Rysunek 6.
Linux uruchomiony na konsoli Xbox
Portal internetowy na którym można znaleźć
garść informacji z wybranych dziedzin IT.
http://howto.pl/
Hacking, security to pojęcia znane profesjonali-
stom na tym portalu można dowiedzieć się cze-
goś więcej o tych zagadnieniach.
http://www.security-web.info
Strona zawiera ogłoszenia pracy na stanowi-
ska związane z branżą IT.
http://pracait.com
Portal poświęcony aktualnościom, artykułom
ze świata informatycznego. Zawiera ciekawe
linki, gry on-line i wiele innych interesujących
wiadomości.
http://hackme.pl
Serwis internetowy firmy QuarkBit Software,
która zajmuje się tworzeniem oprogramowania
dla firm i osób prywatnych.
http://www.quarkbitsoftware.pl
Misją serwisu jest dostarczanie rzetelnych infor-
macji z zakresu szeroko pojętej informatyki. Za-
wiera najświeższe informacje z rynku informa-
tycznego i recenzje czasopism takich jak Hakin9,
php solution, sdj.
http://www.itnews.icx.pl
To portal wydawnictwa CSH. Na tej stronie za-
interesowana osoba znajdzie garść potrzeb-
nych informacji: aktualności ze świata informa-
tycznego, informacje na temat szkoleń itd.
http://www.szkolahakerow.pl
Serwis informacyjny, na którym znajdują się
najświeższe aktualności i artykuły, można zalo-
gować się na forum i podyskutować z ciekawy-
mi osobami na interesujące teamty.
http://www.cc-team.org
Strona internetowa poświęcona aktualnościom
informatycznym. Umieszczone są na niej cie-
kawe artykuły oraz recenzje pism.
http://www.huntersq2.boo.pl
Strony
polecane >>>
Strony
polecane
Misją Infoprof jest zrozumienie potrzeb klienta
i taki dobór usług by jak najlepiej spełniały one
jego oczekiwania, jednocześnie nie narażając
go na niepotrzebne koszty.
www.infoprof.pl
Portal poświęcony zdalnym rozwiązaniom IT,
świadczone usługi są dyskretne i dokładne.
http://xesit.pl
Portal powstał w celu rozreklamowania firmy
zajmującej się kompleksową usługą związaną
z promowaniem stron WWW.
http://www.webgroup.net.pl
www.hakin9.org
hakin9 Nr 11/2007
30
Atak
O
becnie eksperci zajmujący się bez-
pieczeństwem komputerowym mo-
gą korzystać z całej gamy aplikacji
służących do analizy ruchu w sieci, pisania
exploitów, skanowania portów czy wykrywa-
nia włamań. Niektóre z tych programów ma-
ją już ugruntowaną pozycję i korzystanie z
nich stało się pewnym standardem. Bywa
jednak, że niektóre ze znanych narzędzi nie
spełniają wszystkich naszych wymagań lub
z pewnych przyczyn nie możemy z nich sko-
rzystać. Wtedy z pomocą przychodzi język
Python i nasza kreatywność – w kilka chwil
możemy napisać skrypt, który będzie dosto-
sowany do konkretnego problemu i, co naj-
ważniejsze, jego budowa będzie nam do-
brze znana.
Dlaczego Python?
Jest kilka powodów, dla których warto rozpo-
cząć naukę tego języka. Po pierwsze, jest to
język, który stale się rozwija i jest ciągle udo-
skonalany. Wydany jest na licencji Open So-
urce, zapewniającej stałe wsparcie rzeszy
oddanych programistów. Co więcej, Python
jest językiem łatwym w nauce, a jego kod jest
bardzo przejrzysty. Pozwala to na łatwą mo-
dyfikację źródła aplikacji, nawet przez oso-
by niebędące znawcami tego języka. Jednak
największym plusem jest ogromna ilość mo-
dułów i frameworków rozszerzających możli-
wości języka. Dotyczą one zarówno progra-
mowania sieciowego, interfejsów graficznych
jak i np. obróbki grafiki.
Idealnym przykładem jest moduł Inline-
Egg, który został już opisany na łamach ha-
kin9. Kolejnymi, doskonałymi przykładami,
mogą być rozszerzenia przybliżane w tym
Spoofing i Sniffing
w Pythonie
Piotr Łaskawiec
stopień trudności
Każdy specjalista ds. bezpieczeństwa komputerowego powinien
być w stanie pisać programy pomagające w audycie lub analizie
ewentualnych zagrożeń. Programy te powinny być proste,
przejrzyste i co najważniejsze, ich budowa powinna zajmować
mało czasu. Programy pisane w Pythonie spełniają wszystkie
powyższe warunki.
Z artykułu dowiesz się
• jak pisać aplikacje sieciowe w języku Python,
• jak szybko przechwytywać i odczytywać pakie-
ty w Sieci,
• czym jest spoofing i jak można napisać pro-
gram modyfikujący pakiety w Pythonie.
Co powinieneś wiedzieć
• powinieneś znać podstawy działania sieci
TCP/IP,
• powinieneś znać podstawy Pythona.
Aplikacje sieciowe w Pythonie
hakin9 Nr 11/2007
www.hakin9.org
31
artykule, czyli Pcapy i Impacket.
Wszystkie programy napisane na
potrzeby tej publikacji były testo-
wane na systemie operacyjnym Li-
nux, z zainstalowanym Pythonem
w wersji 2.5 (którego można po-
brać ze strony (1)).
Moduł Socket
Python posiada duży zbiór stan-
dardowych modułów służących do
programowania sieciowego. Ideą
Pythona jest udostępnienie wszyst-
kich najpotrzebniejszych narzę-
dzi wraz z pakietem instalacyjnym.
Moduł socket daje nam swobodny
dostęp do gniazd (sockets), czyli
abstrakcyjnych obiektów pozwala-
jących nam na nawiązywanie połą-
czeń, transmisję danych itd.
Funkcja
socket([rodzina _ adresu[,
typ _ gniazda[, numer _ protokolu]]])
odpowiedzialna jest za tworzenie
nowego gniazda. W Ramce przed-
stawione są możliwe typy gniazd
i rodziny adresów wraz ze sto-
sownym opisem. Do gniazda przy-
porządkowane są także niezbęd-
ne funkcje, odpowiadające opera-
cjom które może wykonywać soc-
ket:
•
listen()
– oczekiwanie na połą-
czenia dla danego gniazda,
•
accept()
– akceptacja oczekują-
cego połączenia,
•
bind()
– przypisanie adresu do
gniazda,
•
connect()
– nawiązanie połącze-
nia,
•
close()
– zamknięcie połączenia
i anulowanie wszystkich operacji.
Listingi 1 i 2 obrazują łatwość pisa-
nia programów w Pythonie. W kilka
minut można napisać prostą aplika-
cję typu klient-serwer. Kod pokaza-
ny na Listingach jest bardzo pro-
sty i tym samym jest dobrym wpro-
wadzeniem do dalszej części arty-
kułu.
Pcapy i Impacket
Są to dwa moduły usprawniające
programowanie sieciowe w Pytho-
nie. Pcapy pozwala na wyłapywa-
nie pakietów z sieci, natomiast Im-
packet służy do ich szczegółowej
analizy i modyfikacji. Obsługuje on
zarówno protokoły niskopoziomowe
(IP, TCP, UDP, ICMP), jak i proto-
koły wysokiego poziomu. Oba mo-
duły idealnie ze sobą współpracu-
ją. Można je pobrać ze strony (2).
W celu instalacji obu modułów,
przechodzimy do katalogu ze źró-
dłem i wydajemy polecenie:
python setup.py install
Należy także pamiętać, że do po-
prawnego działania Pcapy potrzeb-
Rodziny adresów
•
AF_UNIX
– Gniazdo uniksowe, zapewniające wydajną komunikację międzyproceso-
wą na tej samej maszynie. W Pythonie adresy tych gniazd reprezentowane są w po-
staci łańcuchów.
•
AF _ INET
– Gniazdo zapewniające komunikację na dwóch różnych maszynach
przy wykorzystaniu adresowania IPv4. Reprezentowane jest przez układ (
host
,
port
), gdzie
host
jest łańcuchem znaków a
port
liczbą całkowitą.
•
AF _ INET6
– Gniazdo różni się od
AF _ INET
tylko zmianą adresowania z IPv4 na
IPv6. Obecnie jest ono bardzo rzadko używane.
Typy gniazd
•
SOCK_STREAM
– odpowiada za komunikację połączeniową,
•
SOCK _ DGRAM
– odpowiada za komunikację bezpołączeniową,
•
SOCK _ RAW
– zapewnia dostęp do warstw położonych poniżej warstwy aplikacyj-
nej. Pozwala na manipulację surowymi pakietami na poziomie warstwy sieciowej,
•
SOCK _ RDM
– gniazdo komunikatów niezawodnie doręczanych,
•
SOCK _ SEQPACKET
– gniazdo pakietów uporządkowanych.
Rysunek 1.
Działanie sniffera
W Sieci
• http://www.python.org – strona domowa Pythona (1),
• http://www.oss.coresecurity.com/ – strona domowa modułów pcapy i impacket (2),
• http://www.tcpdump.org – strona projektu libpcap (3),
• http://www.twistedmatrix.com – strona projektu Twisted (4).
hakin9 Nr 11/2007
www.hakin9.org
Atak
32
ny jest Libcap w wersji 0.9.3 lub now-
szej. Można go pobrać ze strony (3).
Inne rozwiązania
Szybki wzrost popularności Py-
thona powoduje ciągłe powstawa-
nie nowych rozwiązań programi-
stycznych. Jednym z nich jest Twi-
sted – alternatywa dla omawianych
w tym artykule modułów Pcapy
i Impacket. Twisted jest framewor-
kiem, który dostarcza nam wielu
mechanizmów pomagających w pi-
saniu aplikacji sieciowych. Zapew-
nia on wsparcie takich protokołów
jak TCP, UDP, SSL/TLS, HTTP,
SSH itd. Z Twisted korzysta wie-
le znanych programów, m. in. Bit-
Torrent oraz Zope3. Twisted moż-
na pobrać ze strony (4). Instalacja
przebiega analogicznie, jak w przy-
padku Pcapy i Impacket. Wchodzi-
my do katalogu, w którym umiesz-
czone są źródła i wydajemy polece-
nie python setup.py install. Gorąco
polecam zaznajomienie się z tym
projektem w wolnej chwili.
Piszemy sniffer
Pierwszym przydatnym programem
który napiszemy, będzie sniffer. Za-
danie stawiane przed naszą apli-
kacją jest oczywiste – ma on prze-
chwytywać pakiety i wyświetlać ich
zawartość. Program ten stanowi
świetne narzędzie diagnostyczne
i jest nieoceniony w pewnych sytu-
acjach, dlatego uważam, że war-
to poznać jego budowę. Przeana-
lizujmy kod zamieszczony w Listin-
gu 3. Źródło składa się z kilkunastu
linijek i stanowi w pełni działający
sniffer. Program wykorzystuje tzw.
surowe gniazda (raw sockets) oraz
dwa moduły: moduł socket, któ-
ry jest standardowym składnikiem
Pythona, a także moduł Impacket.
W kodzie na Listingu 3. należy zwró-
cić uwagę na sposób tworzenia
obiektu socket. Do funkcji
socket()
przekazywane są 3 argumenty:
AF _ INET, SOCK _ RAW
i numer proto-
kołu. Numer protokołu jest elemen-
tem wymaganym podczas manipu-
lowania surowymi gniazdami. Nu-
mer ten możemy pozyskać za po-
mocą funkcji
getprotobyname()
, któ-
Listing 1.
Prosty serwer
import
socket
#tworzymy gniazdo
mysocket
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
#laczymy gniazdo z odpowienim portem
mysocket
.
bind
((
''
,
1234
))
mysocket
.
listen
(
5
)
while
True
:
#Akceptacja polaczenia
client
,
address
=
mysocket
.
accept
()
'Nowe polaczenie: '
,
address
# Wysylamy banner do klienta
client
.
send
(
'Witamy na testowym serwerze'
)
#Zamykamy polaczenie
client
.
close
()
Listing 2.
Prosty klient
import
socket
#tworzymy gniazdo
mysocket
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
#nawiazujemy polaczenie
mysocket
.
connect
((
'localhost'
,
1234
))
#odbior i drukowanie danych
temp
=
mysocket
.
recv
(
1024
)
temp
#zamykamy polaczenie
mysocket
.
close
()
Listing 3.
Sniffer-Impacket
import
socket
from
impacket
import
ImpactDecoder
#wykorzystywany protokol
protocol
=
"tcp"
#zamiana nazwy protokolu na liczbe
int_protocol
=
socket
.
getprotobyname
(
protocol
)
#tworzymy surowe gniazdo
mysocket
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_RAW
,
int_protocol
)
mysocket
.
setsockopt
(
socket
.
IPPROTO_IP
,
socket
.
IP_HDRINCL
,
1
)
"Nasluchuje..."
#tworzymy dekoder
ipdecoder
=
ImpactDecoder
.
IPDecoder
()
while
True
:
#odbieranie danych
packet
=
mysocket
.
recvfrom
(
4096
)[
0
]
if
0
==
len
(
packet
):
mysocket
.
close
()
break
;
else
:
#dekodowanie danych
packet
=
ipdecoder
.
decode
(
packet
)
packet
Aplikacje sieciowe w Pythonie
hakin9 Nr 11/2007
www.hakin9.org
33
ra zwraca nam odpowiednią liczbę
na podstawie nazwy protokołu. Ko-
lejną ważną i często używaną funk-
cją jest
setsockopt()
, która służy do
ustawiania opcji gniazda. W na-
szym przypadku ustawiamy para-
metr
IP _ HDRINCL
na wartość
True
.
Jest on odpowiedzialny za dostar-
czenie aplikacji nagłówków pakie-
tu. Opcja ta może występować tyl-
ko wtedy, gdy korzystamy z suro-
wych gniazd.
W kodzie przedstawionym na
Listingu 3. kluczową rolę odgrywa
obiekt
ipdecoder
. Jest on tworzony
poprzez
ipdecoder = ImpactDecoder
.IPDecoder()
i służy do konwersji su-
rowych pakietów na jednostki zrozu-
miałe dla modułu Impacket. Umożli-
wia to swobodną manipulację pakie-
tami i wyświetlenie pakietu w spo-
sób przejrzysty. Sam proces deko-
dowania odbywa się poprzez funkcję
decode()
, do której przekazujemy po-
brane dane.
Wykorzystanie modułu socket
nie jest jedyną drogą prowadzą-
cą do napisania sniffera. Możemy
również wykorzystać moduł Pcapy.
Kod programu, który opiera się na
Pcapy i Impacket, przedstawiony
jest na Listingu 4. Niewątpliwą za-
letą takiego rozwiązania jest moż-
liwość wykorzystania kilku przy-
datnych funkcji będących częścią
Pcapy.
Pierwszą rzeczą, na którą warto
zwrócić uwagę, jest funkcja
findall-
devs()
. Zwraca ona listę wszystkich
aktywnych interfejsów sieciowych.
Umożliwia to łatwy wybór źródła
pakietów i nie ogranicza nas do do-
myślnego interfejsu.
Kolejne ułatwienie przychodzi
wraz z funkcją
setfilter()
. Umożli-
wia ona dostosowywania naszego
sniffera do konkretnego protokołu.
Oprócz TCP, który został wykorzy-
stany w naszym przykładzie, może-
my także skorzystać z innych zna-
nych protokołów (np. ICMP).
Sercem programu jest funkcja
open _ live()
. Służy ona do otwie-
rania konkretnego urządzenia w ce-
lu wyłapania pakietów. Przekazuje-
my do niej nazwę urządzenia, ilość
pobieranych bajtów, flagę trybu pro-
miscuous i opóźnienie. Działający
sniffer przedstawia Rysunek 1.
Piszemy spoofer
Czas na napisanie innego, równie
przydatnego programu. Na Listingu
5. został zamieszczony kod proste-
go spoofera napisanego w Pythonie
przy użyciu modułów socket i Impac-
ket. W czasie pisania programu zo-
stały wykorzystane sposoby progra-
mowania opisane przy okazji wcze-
śniejszych przykładów. Sam pro-
gram spełnia kilka ważnych warun-
ków:
• kod jest krótki, przejrzysty i opty-
malny,
• program potrafi modyfikować ad-
res nadawcy i port,
• program potrafi zmieniać usta-
wienia flag SYN i ACK,
• spoofer potrafi zmieniać wartość
TTL (time-to-live).
Dzięki aplikacji z Listingu 5. jesteśmy
w stanie wysłać własnoręcznie zmo-
dyfikowany pakiet na dowolny adres
w sieci. Jest to przydatne przy pew-
nych rodzajach ataków, o których na-
piszę później. Nasz spoofer urucha-
miamy poprzez wywołanie z konso-
li komendy:
python sniff.py<adres_odbiorcy>
<port_odbiorcy><adres_nadawcy>
<port_nadawcy><wart_SYN>
<wart_ACK><wart_TTL>
Terminologia
• Sniffing – jest to monitorowanie komunikacji między urządzeniami w sieci. Snif-
fery pasywnie przechwytują pakiety komunikacji sieciowej serwera, routera czy
bramy. Podstawą działania sniffera jest tworzenie kopii informacji wysyłanych
i odbieranych przez urządzenie sieciowe. Wśród tych informacji można zna-
leźć wiele przydatnych danych, które mogą być pomocne w analizie architektu-
ry sieci lub podczas opracowywania odpowiedniego wektora ataku. Należy jed-
nak pamiętać, że sniffing jest możliwy tylko wtedy, gdy pakiety docierają do na-
szych interfejsów sieciowych.
• Spoofing – jest to podrabianie adresów IP i nazw DNS w celu uzyskania autoryza-
cji i możliwości komunikacji z chronioną stacją docelową. Spoofing polega głównie
na przechwyceniu i modyfikacji pakietów przesyłanych między dwoma urządzenia-
mi lub przekierowaniu pakietów ze stacji docelowej do atakującego.
Tryb promiscuous
Jest to tryb pracy karty sieciowej (lub innego, dowolnego interfejsu sieciowego), w któ-
rym przechwytuje ona wszystkie pakiety krążące w sieci, a nie tylko te adresowane
bezpośrednio do niej (poprzez adres MAC). Pozwala to na podsłuchiwanie ruchu w ra-
mach swojego segmentu Sieci.
Raw Sockets
Raw sockets są rodzajem gniazd sieciowych, które zapewniają dostęp do nagłów-
ków pakietów wysyłanych i pobieranych z sieci. W przypadku korzystania z raw soc-
kets, programista otrzymuje pełną kontrolę nad procesem tworzenia pakietu i co za
tym idzie, odpowiada za jego poprawne oznakowanie i zaadresowanie. Surowe gniaz-
da pozwalają także na dostęp do warstw leżących poniżej warstwy aplikacji w mode-
lu OSI, a więc do warstwy transportowej i warstwy sieciowej. Zwiększa to nasze moż-
liwości i oferuje praktycznie nieograniczone sposoby na modyfikację wysyłanych i od-
bieranych pakietów.
hakin9 Nr 11/2007
www.hakin9.org
Atak
34
Przeanalizujmy teraz kod progra-
mu. Po zaimportowaniu odpowied-
nich modułów następuje przypisa-
nie zmiennym wartości podanych
przez użytkownika oraz deklara-
cja protokołu (w naszym przypadku
jest to TCP). Korzystamy z surowych
gniazd, więc konieczne będzie obli-
czenie wartości liczbowej odpowia-
dającej protokołowi TCP. Następ-
nie tworzymy obiekt IP poprzez mo-
duł impacket. Instancja klasy IP jest
implementacją protokołu IP działają-
cego w warstwie sieciowej modelu
OSI. Zgodnie z tym uzupełniamy da-
ne potrzebne do prawidłowego zbu-
dowania nagłówka – adres nadawcy
i odbiorcy, a także wartość TTL. Do-
konujemy tego za pomocą funkcji:
set_ip_src(), set_ip_dst()
oraz
set_ip_ttl().
Analogicznie postępujemy z obiek-
tem reprezentującym protokół TCP.
Aby uzupełnić braki w nagłówku
TCP (port źródłowy, port docelowy,
wartości SYN i ACK), posługujemy
się funkcjami:
set_th_sport(), set_th_dport(),
set_th_seq()
i
set_th_ack().
Ostatnią rzeczą o jakiej musimy pa-
miętać, jest wygenerowanie sumy
kontrolnej. Suma kontrola (check-
sum) jest częścią nagłówka pakietu
TCP i jest wymagana do ustanowie-
nia połączenia:
tcp.calculate_checksum()
tcp.auto_checksum = 1
Ustawienie atrybutu
auto _ checksum
na wartość 1 (równoznaczne z
True
)
informuje program, że suma kontro-
lna będzie wygenerowana automa-
tycznie dla każdego kolejnego pa-
kietu. Zmiana tego atrybutu na 0
wymusi na nas ręczne podawanie
Listing 4.
Sniffer-Pcapy, Impacket
import
pcapy
from
impacket
import
ImpactDecoder
def
packet_recive
(
handler
,
data
):
#dekodowanie danych
decoded
=
ImpactDecoder
.
EthDecoder
()
.
decode
(
data
)
decoded
#listujemy interfejsy sieciowe
eths
=
pcapy
.
findalldevs
()
"Interfejsy sieciowe: "
i
=
0
for
eth
in
eths
:
"%d: %s"
%
(
i
,
eths
[
i
])
i
+=
1
choose
=
int
(
raw_input
(
"Wybierz interfejs: "
))
eth
=
eths
[
choose
]
#
source
=
pcapy
.
open_live
(
eth
,
1500
,
1
,
100
)
source
.
setfilter
(
'tcp'
)
"Siec:%s Maska:%s
\n
"
%
(
source
.
getnet
()
,
source
.
getmask
())
#reakcja na przychodzące pakiety
source
.
loop
(-
1
,
packet_recive
)
Listing 5.
Spoofer
import
socket
import
sys
from
impacket
import
ImpactPacket
protocol
=
"tcp"
int_protocol
=
socket
.
getprotobyname
(
protocol
)
dst_host
=
sys
.
argv
[
1
]
dst_port
=
int
(
sys
.
argv
[
2
])
src_host
=
sys
.
argv
[
3
]
src_port
=
int
(
sys
.
argv
[
4
])
SYN
=
int
(
sys
.
argv
[
5
])
ACK
=
int
(
sys
.
argv
[
6
])
TTL
=
int
(
sys
.
argv
[
7
])
#tworzymy obiekt IP
ip
=
ImpactPacket
.
IP
()
#deklarujemy adresata, odbiorce i wartosc TTL
ip
.
set_ip_src
(
src_host
)
ip
.
set_ip_dst
(
dst_host
)
ip
.
set_ip_ttl
(
TTL
)
#tworzymy obiekt TCP
tcp
=
ImpactPacket
.
TCP
()
tcp
.
set_th_sport
(
src_port
)
#deklarujemy port zrodlowy, port docelowy, wartosci SYN i ACK
tcp
.
set_th_dport
(
dst_port
)
tcp
.
set_th_seq
(
SYN
)
tcp
.
set_SYN
()
tcp
.
set_th_ack
(
ACK
)
tcp
.
set_ACK
()
ip
.
contains
(
tcp
)
#obliczamy sume kontrolna
tcp
.
calculate_checksum
()
tcp
.
auto_checksum
=
1
#nawiazujemy polaczenie i wysylamy pakiet
mysocket
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_RAW
,
int_protocol
)
mysocket
.
setblocking
(
0
)
mysocket
.
setsockopt
(
socket
.
IPPROTO_IP
,
socket
.
IP_HDRINCL
,
1
)
mysocket
.
sendto
(
ip
.
get_packet
()
,
(
dst_host
,
dst_port
))
sumy kontrolnej (co w niektórych przypadkach jest sytu-
acją pożądaną).
Ciekawą i na pewno godną zapamiętania funkcją
jest
setblocking()
. Gdy przekażemy do funkcji 0, gniaz-
do nie będzie blokowane. Oznacza to, że każde nie-
udane wysłanie pakietu danych lub brak możliwości
odebrania takiego pakietu z sieci spowodują wywoła-
nie wyjątku.
Należy teraz zastanowić się nad praktycznym za-
stosowaniem takiego programu. Istnieje wiele ataków,
u podstaw których leży modyfikacja wysyłanych pakie-
tów. Jednym z takich ataków jest atak typu SYN. Do ata-
kowanego komputera wysyłane jest żądanie połącze-
nia TCP (SYN). Wysyłane pakiety mają zmieniony ad-
res nadawcy (na adres innego komputera w sieci). Wy-
słanie odpowiednio dużej ilości takich pakietów powo-
duje zaangażowanie bardzo dużych zasobów na atako-
wanej maszynie.
W wyniku tego możemy doprowadzić do zawiesze-
nia atakowanej maszyny. Kolejnym atakiem wykorzy-
stującym spoofing jest DNS Amplification. Polega on
na wysłaniu zapytań do serwerów DNS ze zmodyfi-
kowanym adresem zwrotnym (adres zwrotny ustawia-
ny jest na adres atakowanej maszyny). Przy wykorzy-
staniu większej ilości komputerów wysyłających zapy-
tanie, komputer ofiary nie jest w stanie obsłużyć połą-
czeń kierowanych z serwerów DNS i najczęściej zawie-
sza się. Jak widać, spoofing ma swoje zastosowanie
w praktyce.
Podsumowanie
Umiejętność pisania aplikacji sieciowych w Pythonie jest
cenna. Pozwala nam szybko i przyjemnie pisać aplikacje
dostosowane do konkretnego przypadku. Łatwość pisa-
nia gwarantuje nam duży komfort pracy, a duże możliwo-
ści samego języka i jego modułów pozwalają na stworze-
nie praktycznie dowolnego programu.
W tym artykule zostały przedstawione podstawy pro-
gramowania sieciowego. Jest to pewna fundamentalna
wiedza, która przy odrobinie chęci i samozaparcia po-
zwala pisać bardziej złożone aplikacje. W dzisiejszych
czasach umiejętność pisania programów mających prak-
tyczne zastosowanie w procesie audytu jest na wagę zło-
ta. Równie ważny jest czas poświęcony na kodowanie.
Pamiętajmy więc, że Python jest językiem, który ideal-
nie łączy szybkość pracy z instynktownym programowa-
niem. l
O autorze
Piotr Łaskawiec od wielu lat związany z tematyką bezpie-
czeństwa komputerowego. Pasjonat języka Python. Założy-
ciel i przewodniczący Koła Naukowego PK IT Security Gro-
up (www.pkitsec.pl). W wolnych chwilach programuje i zajmu-
je się publicystyką.
Kontakt z autorem: hellsource@gmail.com
www.hakin9.org
hakin9 Nr 11/2007
36
Atak
I
stnieje wiele sposobów publikowania dyna-
micznych treści w Internecie. Najbardziej
popularne jest tworzenie odtwarzacza we
Flashu. To rozwiązanie wybrały takie serwi-
sy jak youtube, google, myspace czy lastfm.
Dzięki temu można stworzyć prostą i funkcjo-
nalną aplikację. Popularne jest również uży-
wanie tzw. streamingu, który stosuje – ostat-
nio bardzo popularne w Polsce – iTVP. Wy-
branie tej metody chroni przed pobieraniem
danych bezpośrednio z serwera http. W celu
ściągnięcia materiału na dysk należy odtwo-
rzyć plik programem obsługującym protokół
mms i włączyć funkcję zapisywania. Polecam
mplayer, który jest wieloplatformową aplikacją
i doskonale sobie radzi ze streamingiem. Za-
bezpieczenia odtwarzaczy możemy zmieniać
wprowadzając sesje, cookies,
mod _ rewrite
czy zwykłą autoryzację.
Pierwsze kroki,
czyli zbadanie terenu
Niedawno Google Inc. postanowiło zmienić kod
niektórych swoich aplikacji. Wśród nich znala-
zło się video.google.com. Jednak nadal może-
my pobierać dane. Wchodząc na stronę z fil-
mem widzimy, że odtwarzacz został napisany
we Flashu. Spoglądając w źródło strony może-
my zauważyć, iż zastosowano tu iframe, czy-
li tzw. ramkę HTML'a. Znacznik ten ma ID rów-
ny 3rdPartyFrame, a jego źródło jest pobiera-
ne poprzez funkcje JavaScript. Szukamy więc
w kodzie 3rdPartyFrame. Efekt został pokaza-
ny na Listingu 1.
Mamy potrzebny URL do analizy kodu. Jed-
nak jest on niepełny. Przypominam, że w PHP
Hakowanie serwisów
multimedialnych
Konrad Witaszczyk
stopień trudności
Wraz z nadejściem Web 2.0 trendy stały się strony internetowe
pozwalające na udostępnianie mediów wszystkim użytkownikom.
Znakomitym przykładem jest serwis YouTube, który dziennie
odwiedzają miliony osób. Jedyną wadą takich portali jest brak
możliwości pobierania plików.
Z artykułu dowiesz się
• w jaki sposób są udostępniane multimedia na
stronach,
• jakie są zabezpieczenia stron udostępniają-
cych multimedia,
• jak zbudować stronę, aby nie miała wycieku da-
nych.
Co powinieneś wiedzieć
• powinieneś znać obsługę podstawowych aplika-
cji systemowych (np. wget, mplayer),
• powinieneś wiedzieć, czym jest protokół mms,
• powinieneś posiadać podstawową wiedzę
o programowaniu.
Hakowanie serwisów multimedialnych
hakin9 Nr 11/2007
www.hakin9.org
37
wartości zmiennych GET znajdują
się po znaku =. Przyjrzyjmy się od-
powiedniemu ciągowi. Korzystając
z tablicy ASCII dla wartości szes-
nastkowych, możemy stwierdzić, że
\u003d to nic innego, jak właśnie
poszukiwany przez nas znak rów-
ności. Poprawmy adres i otwórzmy
stronę w przeglądarce. Nastąpiło
przekierowanie. Skorzystajmy zatem
z narzędzia każdemu znanego –
wget – aby pobrać plik strony. Wpisu-
jemy w konsoli:
wget "http://video.google.pl/
videohosted?docid=3418263437173679038"
Teraz możemy przeglądać ukryty
przez programistów kod. Skoro vi-
deo.google.com używa odtwarzacza
we Flashu, to będzie on mieć praw-
dopodobnie rozszerzenie swf. Wy-
szukajmy taki ciąg w pliku. Zosta-
ła znaleziona funkcja JS (skrót od
JavaScript) o nazwie
insertFlash
HtmlOnLoad()
. Widzimy wywołanie
odtwarzacza z parametrami (może
być również z adresem do filmu).
Zastanawiająca jest zmienna video-
Url. Wydaje się, że to ona jest wła-
śnie tym, czego szukamy. Zanim jed-
nak adres będzie gotowy do otwo-
rzenia, musimy zmienić znaki ASCII
na normalne.
Napiszmy aplikację, aby zauto-
matyzować ten proces. Wykorzystaj-
my w tym celu język ruby, ponieważ
idealnie nadaje się do tego typu za-
dań. Listing 2 przedstawia kod skryp-
tu. Zapisujemy go np. do google.rb
i uruchamiamy w konsoli:
ruby google.rb adres _ do _ filmu
gdzie „
adres _ do _ filmu
” to np.: http://
video.google.pl/videoplay?docid=
-8303451606856880000.
Streaming
Skoro już znamy samą ideę udo-
stępniania multimediów, możemy
zapoznać się z drugim – po odtwa-
rzaczu we Flashu – sposobem, czyli
zastosowaniem streamingu. Jako
przykład posłuży nam wcześniej
wspomniane iTVP. Przykładowy link
do odtwarzania filmu wygląda na-
Listing 1.
Wynik wyszukania frazy 3rdPartyFrame
function init()
{
sendform
=
ele(
"sendform"
)
;
_lpaf_onResize()
;
showRelated()
;
deleteCookie(
"ResultPageClick"
,
"video.google.pl"
)
;
ele(
'3rdPartyFrame'
).src
=
"http://video.google.pl/videohosted?docid\u003d
3418263437173679038"
+ document.location.hash
;
initPicker()
;
}
Listing 2.
Skrypt wyświetlający źródło filmu na video.google.com
require
'open-uri'
url
=
ARGV
[
0
]
unless
url
=
~
/.+?video\.google\..+?\/
.
+
?\?docid
=
.
+
?$/
puts
"
\n
Zły adres do filmu!"
exit
()
end
open
(
url
)
do
|f|
f.each_line
do
|line|
if
line
=
~
/
"(http:
\/\/
video
\.
\.
pl
\/
videohosted
\?
docid.+?)"
/
url_
=
$1
url_.
gsub
!
(
'\u003d'
,
'='
)
f_
=
`wget -O- "
#{url_}"`
f_.each_line
do
|line_|
if
line_
=
~
/&videoUrl\\u003d(http%3A%2F%2Fvp\.video\.google\.com%2Fvideodo
wnload%3Fversion%3D.+?%26secureurl%3D.+?%26begin%3D.+?
%26len%3D.+?%26docid%3D.+?)&/
out
=
$1
out.
gsub
!
(
'%3A'
,
':'
)
out.
gsub
!
(
'%2F'
,
'/'
)
out.
gsub
!
(
'%3F'
,
'?'
)
out.
gsub
!
(
'%26'
,
'&'
)
out.
gsub
!
(
'%3D'
,
'='
)
puts
"
\n\n
Adres do filmu to:
\n\n
"
+
out
+
"
\n\n
"
end
end
end
end
end
Rysunek 1.
Użycie wtyczki Live HTTP Headers dla Firefoksa
hakin9 Nr 11/2007
www.hakin9.org
Atak
38
stępująco: http://www.itvp.pl/player.
html?mode= 0&channel=452&vi-
deo_id=17747.
Zawiera on ID – video_id=17747
który przyda nam się do znalezienia
źródła. Zajrzyjmy do kodu powyżej
podanej strony. Wśród kilku skryp-
tów JS, znajduje się również:
<script type="text/javascript"
src="http:
//img.v2.itvp.pl/portal/js/
player2.js"></script>
Na pewno służy on do obsługi i łado-
wania multimediów. Przyjrzyjmy się
funkcji pokazanej na Listingu 3.
Widzimy tutaj parsowanie URLa
z wysyłaniem danych metodą GET.
Adres do tego pliku będzie wyglądał
tak: http://itvp.pl/pub/stat/common/
materialinfo2?video_id=17747.
Naszym oczom ukazał się prosty
xml, w którym m.in. znajdujemy:
<material>gcd1.b4a204694f9341e0b2427
363fe66aaaa</
material>
Mamy już jakieś informacje, ale zo-
baczmy, jakie jeszcze funkcje zawie-
ra player2.js. Jak wskazuje na to ko-
mentarz, w funkcji
initLoadFormat()
znajduje się część kodu, którego za-
daniem jest lokalizacja materiału (Li-
sting 4).
Postępując analogicznie do czyn-
ności wykonywanych przy
loadVideo()
,
przejrzyjmy plik: http://www.itvp.pl/
pub/sess/common/playrequest2?
material_id=gcd1.b4a204694f9341e
0b2427363fe66aaaa. Interesująca wy-
daje się linia
request _ id
, która u mnie
prezentuje się następująco:
<request_id>123.123.123.123_4jBSwvuh4S
ZjULvj7wqH65syi1gO2hnS_1183810606378
</request_id>
Wygląda na to, że mamy ID pliku
wideo, ale nie wiemy jeszcze, gdzie
faktycznie się on znajduje. W tym
celu możemy użyć wtyczki Live
HTTP Headers do popularnej prze-
glądarki Firefox. Można ją pobrać i za-
instalować ze strony https://addons.
mozilla.org/en-US/firefox/addon/3829.
Listing 3.
Funkcja ładująca plik wideo w serwisie iTVP
function loadVideo(videoid, mode)
{
var
bindArgs
=
{
content :
{
video_id : videoid,
mode : mode
}
,
method :
"GET"
,
url:
"/pub/stat/common/materialinfo2"
,
load: function(type, data)
{
processMaterialData(data)
;
}
,
mimetype: "text
/
xml
"
}
;
dojo.io.bind(bindArgs)
;
return
false
;
}
Listing 4.
Dalsza część pliku, który wczytuje dane
//
zlecenie lokalizacji materialu
function initLoadFormat(materialId, mode, formatId)
{
document.getElementById(
'playContentInfo'
).style.display
=
'block'
;
document.getElementById(
'playContent'
).innerHTML
=
'
<
div class
=
"foto"
><
img
src
=
"http:
//
img.v2.itvp.pl
/
video_new
/
images
/
'+current_
video_image.
substring
(
0
,
2
)+
'/uid_'
+current_video_imag
e.
substring
(
0
,current_video_image.
indexOf
(
'.jpg'
))+'_
width_406.jpg
" alt="" /></div>';
var
bindArgs
=
{
content :
{
material_id : materialId,
mode : mode,
format_id : formatId
}
,
method :
"GET"
,
url:
"/pub/sess/common/playrequest2"
,
load: function(type, data)
{
processFormatData(data)
;
}
,
mimetype: "text
/
xml
"
}
;
dojo.io.bind(bindArgs)
;
return
false
;
}
Listing 5.
Część kodu po dekompilacji odtwarzacza
if
(System.capabilities.playerType
==
"External"
)
{
_root.url
=
"http:
//
pyke.dev.dailymotion.com
/
get
/
1
/
320x240
/
flv
/
9375.
flv?key
=
9aee1d1b3fb343b16c13b9cbdd5cb8d012bd3ad
";
_root.preroll
=
"http:
//
mc-
01.
dailymotion.com
/
2
/
dailymotion
/
instream
/
12345
67890
@x08?DMVIDEO
=
3245859
";
_root.postroll
=
"http:
//
mc-
01.
dailymotion.com
/
2
/
dailymotion
/
instream
/
1234
567890
@x08?DMVIDEO
=
3245859
";
_root.allowZoom
=
1
;
}
Hakowanie serwisów multimedialnych
hakin9 Nr 11/2007
www.hakin9.org
39
Włączmy tę funkcję, otwórzmy na
nowo film i zobaczmy, czy zosta-
nie wyświetlony jakiś wpis z plikiem
ze streamingiem (np. z rozsze-
rzeniem asx). Wynik działania został
przedstawiony na Rysunku 1. Fak-
tycznie pojawiło się m.in.: http://
www.itvp.pl/pub/stat/common/itvp.
asx?request_id=80.50.255.74_UJp
BqY8Kwu0X1iYYhNMtYQsqTY29y-
JUl_1184664631558
Sprawdźmy, co dokładnie zawiera
ten plik. Wśród kilku wpisów znajdu-
je się adres: mms://212.191.227.67/
3 1j A 3 y D y r d % 2 bYm w k h y f 5 U -
E9euy%2bwABsYdjc1%2fc6QW-
P%2fg4%2foxU4VuA0dQ6yRU5y-
FVgAaQ1iBf68rbjdriZiyNztUpU0F
HWGLshdEind2NZbH1pWiQzH3mB
Oimwr%2fNuN1EjGN7q8chCTnGD
HZmSDcrIWkQw%3d%3d/1.wmv.
Znaleźliśmy film. Teraz wystar-
czy zmienić znaki ASCII i użyć do
ściągania programu mplayer:
mplayer -dumpstream
-dumpfile wideo.wmv adres
Uwaga: wideo.wmv to plik, do któ-
rego zostanie zapisany film, a ad-
res to link mms. Czasem dojście do
źródła zajmuje dużo czasu, jednak
wynik może być dla nas miłym za-
skoczeniem, np. kiedy w URLu po-
trzebny jest jedynie ID, który wi-
dać w adresie, jaki podaje nam do
filmu serwis. Spróbuję to zobrazo-
wać. Wróćmy do video.google.com
i sprawdźmy go jeszcze raz z wy-
korzystaniem Live HTTP Headers.
Po krótkiej analizie możemy stwier-
dzić, że wystarczy pobrać ID ze
zmiennej docid:
id = url.scan(/http:\/\/video
\.google\..+?\/.+?
\?docid=(-?\d+).{0,}$/).flatten
Końcowy adres może wyglądać na-
stępująco: return http://video.google.
com/videofile/GreetZ_From_def-
c0n.flv?docid="+ id.to_s
Jak widać, usunąłem tutaj pa-
rę zmiennych, zostawiając tylko
jedną. Uzyskałem podobny rezultat,
jak w przykładzie z odtwarzaczem
we Flashu. Nazwa pliku flv w ad-
resie nie musi być zgodna z poda-
ną przez serwis. Pobieranie danych
wymaga od nas nie tylko umiejęt-
nej analizy kodu, ale i logiczne-
go myślenia. Przykładowo link do
filmu na http://wrzuta.pl wygląda
tak: http://username.wrzuta.pl/vid/
file/id.
Jest go bardzo łatwo uzyskać,
ponieważ został podany jako para-
metr już na stronie z odtwarzaczem.
Inaczej jest z plikami dźwiękowymi.
Player nie jest tak samo skonstru-
owany. Możnaby w tej sytuacji użyć
Live HTTP Headers.
Zastosowanie tej metody byłoby
najłatwiejszym sposobem ściągnię-
cia danych, jednak spróbujmy roz-
wiązać ten problem inaczej. Link do
plików mp3 prezentuje się następu-
jąco: http://username.wrzuta.pl/aud/
file/id Jak widać vid to skrót od video,
a aud od audio. Zamiana będzie wy-
glądać tak:
• strona – http://cos.wrzuta.pl/au-
dio/cSds126da/tytul_piosenki,
• plik mp3 – http://cos.wrzuta.pl/
aud/file/cSds126da.
Dzięki temu ominęliśmy kilka dzia-
łań. Ostatnią metodą, jaką chciałbym
tu zaprezentować, jest dekompilacja
odtwarzacza. Zaprezentuję ją na przy-
kładzie dailymotion.com.
Player znajduje się pod adresem:
http://www.dailymotion.com/flash/
flvplayer.swf Na Listingu 5. zosta-
ła przedstawiona część kodu, który
zwrócił mój flash decompiler. Pierw-
szy link prowadzi do reklamy w for-
macie flv. W takich zdekompilowa-
nych plikach można znaleźć cieka-
we informacje na temat budowy róż-
nych serwisów.
Pobieranie a prawo
Pobieranie plików z serwisów, któ-
re je udostępniają, jest legalne tyl-
ko wtedy, gdy serwis poinformu-
je o tym użytkowników. Zazwyczaj
tak się nie dzieje. Wszystkie meto-
dy, które pokazałem wyżej, służą
więc jedynie do poznania zabez-
pieczeń stron, a nie do pozyskiwania
danych.
Zabezpieczenia przed
wyciekiem danych?
Przed ściąganiem multimediów ze
stron praktycznie nie da się zabez-
pieczyć, ponieważ możemy np. na-
grać to, co się dzieje aktualnie na
danym komputerze i zapisać do pli-
ku. Programista serwisu może je-
dynie utrudnić działanie użytkowni-
kom. Dlatego, gdy ktoś tworzy taki
portal, powinien pamiętać o wpro-
wadzeniu sesji, które wygasają po
odtworzeniu pliku i są generowane
za każdym razem. Oprócz tego
można skutecznie ukryć pliki przez
trzymanie ich na różnych serwerach.
Dobrym rozwiązaniem jest rów-
noczesne stosowanie streamingu,
lecz wtedy trzeba posiadać dobry
serwer, aby użytkownicy nie mieli
kłopotu z korzystaniem z danego
portalu. Musimy określić, co jest dla
nas ważniejsze: zabezpieczenie
danych czy zadowolenie odwiedza-
jącego wywołane sprawnym dzia-
łaniem usługi.
Podsumowanie
Zaskakującym faktem jest to, że ser-
wisy należące do takich znanych firm
jak MTV, BBC czy CNN słabo chronią
dane, na które nakładają prawa au-
torskie. Większego niedociągnięcia
dopuścił się AOL (America Online).
Udostępnia on pliki tylko mieszkań-
com Stanów Zjednoczonych, a mimo
to każdy może sprawić (w tym miesz-
kańcy Europy), iż dany film znajdzie
się na jego dysku. Powyższe przykła-
dy pokazały, jak mało dokładnie pro-
jektowane są niektóre witryny. Omi-
janie ograniczeń nakładanych przez
deweloperów portali może okazać się
trudne, ale całkowite zabezpieczenie
się przed tym jest jeszcze bardziej
skomplikowane. l
O autorze
Autor jest programistą PHP w firmie
zajmującej się projektowaniem stron in-
ternetowych. Dodatkowo prowadzi kil-
ka projektów, w tym Ruby Movie Get
(http://movie-get.org) oraz wyklady.net.
Kontakt z autorem:
defc0n@defc0n.iq.pl
www.hakin9.org
hakin9 Nr 11/2007
40
Atak
W
artykule pokażę, jak w Gadu-Gadu
w oknie Tlenofon zamienić oryginal-
ny banner reklamowy na swój, a tak-
że jak w komunikatorze Tlen zmienić stronę Po-
wiadom znajomego. Jeśli jesteś programistą,
to pewnie zainteresuje Cię informacja, jak się
zabezpieczyć przed innymi osobami grzebiący-
mi w Twoich plikach wykonywalnych.
Aby wykonać ćwiczenia zawarte w tym ar-
tykule będą Tobie potrzebne następujące pro-
gramy: UPX, HexWorkshop (lub inny edytor pli-
ków binarnych), kompilator języka C, Notatnik,
a także komunikatory: Gadu-Gadu i Tlen. Przy-
da się również miejsce na serwerze, gdzie bę-
dzie można wrzucać spreparowane strony.
Parę słów teorii
Aby napisać program, należy posiadać dowol-
ny kompilator. Program piszemy w zwykłym pli-
ku tekstowym, wydając odpowiednie komendy,
które zna dany kompilator. Następnie tak napi-
sany program kompilujemy do pliku wykonywal-
nego (czasami taka kompilacja składa się z kil-
ku etapów, ale to nie jest w tej chwili istotne).
Oczywiście dzisiaj nikt nie pisze programów
w Notatniku, zazwyczaj instalując dany kompi-
lator mamy do dyspozycji wygodny edytor z nim
zintegrowany. Jeśli w napisanym programie jest
jakiś błąd (albo zajdzie potrzeba dodania nowej
funkcjonalności) to należy wyedytować plik źró-
dłowy, a następnie go skompilować (nie może-
my naprawić błędu edytując plik wykonywalny).
Na Listingu 1. przedstawiam najprostszy pro-
gram napisany w języku C (jego celem jest wy-
świetlenie na ekranie napisu Hello world!).
Luki w plikach
wykonywalnych
Damian Daszkiewicz
stopień trudności
Nie trzeba posiadać wielkich zdolności programistycznych,
aby modyfikować pliki wykonywalne. Za pomocą zwykłego
edytora plików binarnych będziesz mógł podmieniać
w programach różnego rodzaju komunikaty.
Z artykułu dowiesz się
• jak edytować pliki wykonywalne,
• jak kompresować/dekompresować pliki wyko-
nywalne,
• jak zniechęcić innych do grzebania w Twoich
plikach wykonywalnych,
• jak usunąć w Gadu-Gadu banner reklamowy
w oknie dialogowym Tlenofon.
Co powinieneś wiedzieć
• znać podstawy dowolnego języka programo-
wania,
• umieć obsługiwać dowolny edytor plików binar-
nych (np. HexWorkshop),
• znać elementarne podstawy HTML'a i PHP.
Luki w plikach wykonywalnych
hakin9 Nr 11/2007
www.hakin9.org
41
Jeśli skompilujesz ten program
do pliku wykonywalnego (np. EXE),
to po otworzeniu tego pliku w Notat-
niku zobaczysz jakieś dziwne krza-
czki (Rysunek 1).
Co te krzaczki oznaczają? Otóż
są to rozkazy dla procesora (po prostu
w języku procesora jest tam zapisa-
ne, że ma wyświetlić na ekranie napis
Hello world!). W pliku źródłowym na-
tomiast też są rozkazy, ale są one za-
pisane w takim formacie, aby człowiek
mógł je zrozumieć. Kompilator przetłu-
maczył plik źródłowy (zrozumiały dla
człowieka) na plik wynikowy (zrozu-
miały dla procesora). Nie istnieją pro-
gramy tłumaczące plik wynikowy na
plik źródłowy (tzn. istnieją, ale tłuma-
czą one do języka asembler, który jest
dość trudny do zrozumienia, natomiast
istniejące programy tłumaczące plik
wykonywalny do języka wyższego po-
ziomu – np. C – są dość nieudolne).
W tym artykule pokażę, że jed-
nak można edytować pliki wykony-
walne – co prawda jest to znacznie
trudniejsze niż edytowanie plików
źródłowych. Zazwyczaj w plikach
wykonywalnych dokonuje się edycji
w celu obejścia jakiegoś zabezpie-
czenia, np. crackerzy starają się wpro-
wadzić w odpowiednim miejscu drob-
ną zmianę, która spowoduje, że pro-
gram w wersji trial zamieni się w peł-
ną wersję. Jednak to, co robią crac-
kerzy, jest nielegalne – a poza tym
wymaga bardzo dużej wiedzy, więc
w tym artykule zajmiemy się prost-
szymi modyfikacjami. Jeśli chciałbyś
w przyszłości zostać crackerem, to
musisz znać bardzo dobrze język ni-
skiego poziomu, jakim jest asembler.
Budowa pliku EXE
Zanim przystąpisz do edycji plików wy-
konywalnych, należy poznać ich budo-
wę. Nie będę tutaj szczegółowo oma-
wiał budowy plików EXE, gdyż jest to
temat na osobną książkę. Podam je-
dynie kilka niezbędnych informacji.
Po otworzeniu pliku wykonywal-
nego w dowolnym edytorze plików bi-
narnych (polecam HexWorkshop) za-
uważysz, że dwa pierwsze bajty pli-
ku EXE to znaki MZ – są to inicjały
pracownika Microsoftu (Mark Zbikow-
ski), który pracował nad plikami wyko-
nywalnymi dla systemu operacyjnego
DOS. W niektórych źródłach wyczy-
tałem, że standard dopuszcza, aby
dwa pierwsze znaki były ze sobą za-
mienione (ZM), jednak nigdy nie spo-
tkałem plików wykonywalnych z ta-
kim nagłówkiem (jeśli zamienię ze so-
bą te dwa znaki to plik EXE się uru-
chomi). Jeśli w danym pliku binarnym
dwa pierwsze znaki do MZ, to z dużym
prawdopodobieństwem można powie-
dzieć, że masz do czynienia z plikiem
wykonywalnym. Oprócz plików EXE
są też inne pliki wykonywalne: DLL
(plik z funkcjami bibliotecznymi), SCR
(wygaszacz ekranu – tak naprawdę to
zwykły plik EXE ze zmienionym roz-
szerzeniem), CPL (aplet panelu ste-
rowania), OCX (plik kontrolki ActiveX).
Pierwsze 27 bajtów pliku EXE zawie-
ra informacje niezbędne dla systemu
operacyjnego do uruchomienia dane-
go programu (np. informacja, pod któ-
rym bajtem znajduje się pierwsza in-
strukcja dla procesora).
Dla systemu operacyjnego Linux
pliki wykonywalne mają trzy pierw-
sze znaki: ELF – w tym artykule sku-
pię się na modyfikowaniu plików wy-
konywalnych dla systemu operacyj-
Listing 1.
Prosty program
w języku C
#include
<stdio.h>
void
main
(
void
)
{
printf
(
"Hello world!"
);
}
Rysunek 1.
Tak wygląda plik EXE
Rysunek 2.
Tak wygląda program HexWorkshop w akcji
hakin9 Nr 11/2007
www.hakin9.org
Atak
42
nego Windows, jednak pod Linuksem
większość rzeczy jest podobnych.
Pliki EXE dla systemu operacyjne-
go Windows są hybrydowe, tj. na po-
czątku znajduje się kod sprawdzający,
z jakiego systemu operacyjnego korzy-
stamy. Jeżeli jest to DOS, to zostanie
wyświetlony komunikat: This program
cannot be run in DOS mode (lub po-
dobny) i program zakończy swoje dzia-
łanie. Za tym kodem znajduje się dru-
gi nagłówek pliku EXE zaczynający się
od znaków PE, który zawiera podobne
informacje, co poprzednio omawiany
nagłówek zaczynający się od znaków
MZ, ale jest on przeznaczony dla sys-
temu operacyjnego Windows. Nie bę-
dziemy dokładnie wnikać w to, jakie in-
formacje znajdują w tych nagłówkach,
gdyż w dalszej części tego artykułu te
informacje nie będą potrzebne.
Pliki wykonywalne składają się
z sekcji. Są trzy rodzaje sekcji:
• kodu – są to instrukcje przezna-
czone dla procesora,
• dane – daną jest np. ciąg zna-
ków, który ma wyświetlić instruk-
cja printf, daną jest również za-
wartość tablicy lub zmiennej,
• zasobów – jeśli jesteś programi-
stą i miałeś do czynienia z pli-
kami RES, to wiesz dokładnie
co jest umieszczone w tej sekcji.
W sekcji zasobów znajdują się naj-
częściej bitmapy, ikony, kursory my-
szy. Czasami są tam dłuższe ciągi
znaków i okna dialogowe.
W tym artykule skupię się na edycji
sekcji danych.
Skompresowane
pliki EXE
Jeśli dany plik EXE jest skompreso-
wany (spakowany), to nie można przy-
stąpić do jego edycji, należy go wcze-
śniej rozpakować. Spakowane pli-
ki EXE z pozoru wyglądają tak samo
jak niespakowane. Nie trzeba wyko-
nywać specjalnych zabiegów aby taki
plik uruchomić – często nawet nie wie-
my, że taki plik jest skompresowany.
Rysunek 3.
Okno dialogowe powiadom znajomego, tlen.bmp
Rysunek 4.
Okno dialogowe
powiadom znajomego po
modyfikacji
Listing 2.
Zawartość pliku gg.php
<
html
>
<
head
>
<
/head
>
<
body topmargin=
"0"
leftmargin=
"0"
bgcolor=
"#FFFFE6"
frameborder=
"no"
scroll=
"no"
>
<
p
><
img SRC=
"banner.gif"
BORDER=
"0"
WIDTH=
"230"
HEIGHT=
"33"
><
/a
>
<
/p
>
<
/body
>
<
/html
>
Listing 3.
Funkcja kodująca/dekodująca znak algorytmem Cezara
char
cezar
(
char
z
,
int
offset
)
{
int
c
;
if
((
z
>=
'A'
)
&&
(
z
<=
'Z'
))
{
c
=
z
+
offset
;
if
(
c
>
90
)
c
-=
26
;
if
(
c
<
65
)
c
+=
26
;
return
(
c
);
}
else
if
((
z
>=
'a'
)
&&
(
z
<=
'z'
))
{
c
=
z
+
offset
;
if
(
c
>
122
)
c
-=
26
;
if
(
c
<
97
)
c
+=
26
;
return
(
c
);
}
else
return
(
z
);
}
Luki w plikach wykonywalnych
hakin9 Nr 11/2007
www.hakin9.org
43
Pewnie niejednokrotnie miałeś
do czynienia z kompresowaniem pli-
ków za pomocą programu WinZIP
lub WinRAR. Kompresowanie plików
EXE odbywa się na podobnej zasa-
dzie, jednak do tego celu używa się
specjalnego programu. Najpopular-
niejszy program do kompresji plików
wykonywalnych to darmowy UPX (the
Ultimate Packer for eXecutables).
Taki spakowany plik EXE działa
na tej zasadzie, że zostaje uruchomio-
na funkcja, która wczytuje do pamięci
resztę pliku wykonywalnego i dokonu-
je jego dekompresji w pamięci RAM.
Wszystko dzieje się automatycznie,
więc użytkownik nawet nie zdaje sobie
sprawy, że plik został wcześniej skom-
presowany. Przykładowo plik wykony-
walny komunikatora Tlen zajmuje oko-
ło 1,1 MB, jednak po dekompresji zaj-
muje aż 5 MB. Jedyna zaleta kompre-
sji plików wykonywalnych jest taka, że
taki plik zajmuje mniej miejsca na dys-
ku. Natomiast do wad można zaliczyć
fakt, że taki program się dłużej urucha-
mia, gdyż należy go rozpakować (przy
obecnych osiągach techniki nie jest
to odczuwalne). Kolejna wada (która
w pewnym sensie jest zaletą) jest ta-
ka, że skompresowany plik trudniej
edytować, gdyż przed przystąpieniem
do edycji należy go rozpakować.
Aby spakować plik wykonywalny
(programem UPX), należy w linii ko-
mend napisać:
upx <nazwa _ pliku>
. Że-
by z kolei tak skompresowany plik roz-
pakować, należy w linii komend napi-
sać
upx <nazwa pliku> -d
. Czasami
może wystąpić pewien problem z roz-
pakowaniem pliku – np. starszą wersją
programu UPX nie można rozpakować
plików skompresowanych nowszą wer-
sją aplikacji. Gdy dany plik wykonywal-
ny został skompresowany innym pro-
gramem, to należy znaleźć w Inter-
necie aplikację, która potrafi takie pliki
rozpakowywać (tutaj może się pojawić
problem, gdyż nie każdy producent ta-
kiego oprogramowania udostępnia na-
rzędzia pozwalające na dekompresję
plików skompresowanych danym pro-
gramem). Z mojego doświadczenia
wynika, że większość osób używa do
kompresji plików darmowego programu
UPX, który jest liderem w tej dziedzinie
(gdyż jest darmowy, a oprócz tego ist-
nieje również wersja dla Linuksa).
Modyfikacja
komunikatora Tlen
Po poznaniu niezbędnej teorii czas
na praktyczne ćwiczenie. Zmodyfi-
kujemy komunikator Tlen (podczas
pisania tego artykułu korzystałem
z wersji: 6.00.1.13).
Uwaga: Komunikator nie może
być uruchomiony podczas edycji pli-
ku Tlen.exe!
Przed każdą modyfikacją należy
wykonać kopię pliku, gdyż modyfikując
taki plik można go łatwo uszkodzić. Po
otworzeniu pliku Tlen.exe w edytorze
binarnym zauważysz, że na początku
pliku występują ciągi znaków UPX0,
UPX1. Jest to wskazówka, że plik zo-
stał skompresowany programem UPX.
Należy go rozpakować przed dalszym
przystąpieniem do edycji (po wyedy-
towaniu pliku nie ma potrzeby, aby go
kompresować). Jeśli rozpakujesz plik
i ponownie otworzysz go w edytorze bi-
narnym, to możesz przystąpić do edycji.
W tym ćwiczeniu proponuję odnaleźć
w pliku wszystkie ciągi znaków zaczy-
nające się od http://. W programie He-
xWorkshop należy wybrać opcję Edi-
t|Find, pojawi się okno dialogowe Find.
W polu Type należy wybrać Text String,
w polu Value należy wpisać poszuki-
wany ciąg znaków, natomiast w Pane-
lu Options wybierz opcję ASCII String.
W pliku Tlen.exe znajdziesz wiele róż-
nych adresów do różnych stron WWW,
jednak jeden jest dość ciekawy: http://
tlen.pl/pow/index.php?od= (każdy ciąg
znaków kończy się kodem ASCII 0).
Rysunek 2. przedstawia, jak powinien
wyglądać HexWorkshop po wyedyto-
waniu pliku.
Ta strona WWW ładuje się, gdy
w komunikatorze Tlen klikniesz
w przycisk Powiadom znajomego
(ikona strzałki znajdująca się pod
listą kontaktów). Okno dialogowe
przedstawiłem na Rysunku 3.
Możesz zmienić ten adres na ad-
res dowolnej strony WWW (np. alle-
gro.pl). Jednak tutaj mam dwie uwagi:
po pierwsze sprawdź, czy Twój edytor
pracuje w trybie nadpisywania (wtedy
jeśli wpiszesz jakiś znak, to nadpi-
szesz znak przy którym stoi kursor)
– tryb edycji zmienia się zazwyczaj
klawiszem Insert. Zmodyfikowany
plik wykonywalny nie może mieć in-
nej długości niż plik oryginalny, gdyż
w ten sposób uszkodzisz plik! Druga
uwaga jest taka, że wpisany adres nie
może być dłuższy od tego, który się
w nim oryginalnie znajduje, gdyż się
nie zmieści (nadpiszesz inne informa-
cje znajdujące się w pliku). Jeśli ciąg
znaków jest krótszy od oryginalnego
to znaki, które zostały, zastąp koda-
mi ASCII 0 (kod ASCII 0 informuje, że
w tym miejscu kończy się string).
Gdy dokonasz odpowiedniej zmia-
ny, możesz zamknąć edytor i urucho-
mić komunikator Tlen. Niestety, za-
miast oczekiwanej strony pojawił się
znany z przeglądarki Internet Explo-
rer komunikat: Ten program nie może
wyświetlić strony sieci Web. Dlaczego
tak jest? Odpowiedź jest prosta: ory-
ginalny adres to: http://tlen.pl/pow/
index.php?od=, czyli można się domy-
ślić, że po znaku = komunikator dokleja
login użytkownika Tlen.pl i taką stronę
ładuje w tym oknie dialogowym. Przy-
kładowo, jeśli wpisałem adres strony:
http://www.allegro.pl, a mój login w ko-
munikatorze to damiandaszkiewicz, to
komunikator Tlen spróbuje załadować
stronę http://www.allegro.pldamiandas
zkiewicz. Nie jest to zbyt dobre rozwią-
zanie, ale i na to jest sposób. Otóż na-
leży na swoim serwerze umieścić plik
PHP o dowolnej zawartości (może to
Rysunek 5.
Okno dialogowe
Tlenofon po modyfikacji
hakin9 Nr 11/2007
www.hakin9.org
Atak
44
być nawet statyczny plik HTML). Na-
stępnie modyfikując plik Tlen.exe na-
leży wpisać nazwę pliku z dodaną koń-
cówką ?a= np. http://313.pl/a.php?a=.
Komunikator załaduje wtedy stronę
http://313.pl/a.php?a=damiandaszkie-
wicz. Oczywiście ten skrypt może zu-
pełnie zignorować zmienną $a. Na Ry-
sunku 4. przedstawiam wygląd zmody-
fikowanego okna dialogowego Powia-
dom znajomego.
Modyfikacja
Gadu-Gadu
Komunikator Gadu-Gadu (w chwili pi-
sania tego artykułu używałem wersji
7.7.0 build 3445) również zawiera pew-
ną lukę. Niestety, w najnowszych wer-
sjach większość ciekawych stringów
jest zakodowanych (pamiętam, że w ro-
ku 2003 w komunikatorze można by-
ło zmienić banner z reklamą w oknie
rozmowy na dowolny banner). Jednak
nie wszystko stracone – można zmie-
nić banner pojawiający się w oknie dia-
logowym Tlenofon. Aby to zrobić, na-
leży otworzyć plik gg.exe (plik nie jest
skompresowany) w edytorze plików bi-
narnych i odnaleźć ciąg znaków: http://
adserver.gadu-gadu.pl/etphonebanner.
asp?uid= i zamienić go na dowolny
ciąg znaków wskazujący na plik PHP
znajdujący się na jakimś serwerze (do
tego ciągu znaków jest doklejany nu-
mer GG osoby korzystającej z Ga-
du-Gadu, więc ciąg znaków powinien
się kończyć sekwencją „?a=”, np. http://
www.313.pl/gg.php?a=). Natomiast plik
gg.php powinien mieć następującą za-
wartość (patrz Listing 2.):
Na Rysunku 5. przedstawiłem
efekt osiągnięty po dokonaniu edycji
pliku gg.exe.
Zagrożenia
Tak spreparowany komunikator moż-
na podrzucić na stronę WWW, nato-
miast w oknie dialogowym Powiadom
znajomego może ładować się sprepa-
rowana strona WWW mająca na ce-
lu zbieranie adresów emailowych. In-
nym zagrożeniem może być ładowa-
nie strony, która próbuje zainstalować
złośliwe oprogramowanie (np. wirusa).
Jest to tym bardziej niebezpieczne, że
komunikator Tlen tuż po instalacji za-
chęca użytkownika, aby powiadomił
znajomych, że używa tej aplikacji.
Jak się przed tym bronić?
Jeśli jesteś programistą, to dobrze by
było w jakiś sposób zakodować klu-
czowe stringi. Niestety, po skompilo-
waniu programu w pliku wykonywal-
nym wszelkie stringi są zapisywane w
zwykłym formacie tekstowym. Do za-
kodowania stringów można użyć do-
wolnego algorytmu. Najbardziej znany
algorytm kodowania to szyfr Cezara
(Juliusz Cezar kodował listy w ten spo-
sób, że pisał znak znajdujący się o 3
pozycje dalej w alfabecie niż znak któ-
ry chciał napisać, np. zamiast a pisał
d, zamiast b pisał e itp.). Jest to bardzo
prosty szyfr, niemający zastosowania
w profesjonalnych aplikacjach krypto-
graficznych. Jednak zakodowanie klu-
czowych stringów w aplikacji nawet
tak banalnym algorytmem spowodu-
je, że większość domorosłych cracke-
rów nie wyłowi z aplikacji przydatnych
stringów. Oczywiście nic nie stoi na
przeszkodzie, aby kodować stringi ja-
kimś wymyślniejszym sposobem.
Listing 3. przedstawia funkcję, która
dany znak koduje bądź dekoduje szy-
frem Cezara (jeśli jako offset podasz
liczbę dodatnią to zakodujesz znak, na-
tomiast podając offset ujemny odkodu-
jesz go). Ponieważ alfabet składa się z
26 znaków, więc może być 25 różnych
szyfrów Cezara. Niestety, funkcja ta nie
koduje nic innego poza małymi i wielki-
mi literami, jednak celem tego artykułu
nie jest omawianie wyjątkowo mocnych
algorytmów kryptograficznych, a jedy-
nie zasygnalizowanie problemu z nie-
zakodowanymi stringami.
Można również zakodować plik
EXE programem AsProtect (program
działa podobnie jak UPX, ale oprócz
kompresji pliku EXE jest możliwość
dodania kodu, który spowoduje, że
program będzie się uruchamiał np.
tylko przez pierwsze 30 dni). Program
kosztuje 99 lub 299 dolarów w zależ-
ności od rodzaju licencji.
Jeśli kwota 99 dolarów wyda-
je się zbyt duża, można plik wykony-
walny spakować darmowym progra-
mem UPX, a następnie w edytorze
binarnym zamienić trzy pierwsze wy-
stępujące na początku pliku ciągi zna-
ków UPX jakimiś innymi znakami (np.
abc). Z moich obserwacji wynika, że
taki plik będzie działał normalnie, na-
tomiast utrudni identyfikację programu,
jakim został on spakowany. Natomiast
przy próbie dekompresji programem
UPX pojawi się komunikat: upx: a.exe:
CantUnpackException: file is modified/
hacked/protected; take care!!!
Podsumowanie
Jeśli piszesz program, który będzie
wyświetlał banner reklamowy, posta-
raj się zabezpieczyć program kodując
kluczowe stringi lub skorzystaj z odpo-
wiedniego oprogramowania (np. As-
Protect). Jeśli zignorujesz tę lukę, mo-
żesz być pewien, że szybko powsta-
ną programy usuwające z Twojej apli-
kacji bannery reklamowe. l
O autorze
Damian Daszkiewicz jest samoukiem
od wielu lat interesującym się informa-
tyką i e-biznesem. Obecnie studiuje na
Politechnice Rzeszowskiej na kierunku
Informatyka. W roku 2003 wydawnictwo
Helion wydało jego książkę: Vademe-
cum hakera. Edycja plików binarnych.
Kontakt z autorem:
damian@daszkiewicz.net.
W Sieci
• komunikator Gadu-Gadu: http://gadu-gadu.pl/,
• komunikator Tlen: http://www.tlen.pl,
• HexWorkshop: http://www.bpsoft.com,
• UPX: http://upx.sourceforge.net,
• AsProtect: http://www.aspack.com/,
• książka Vademecum Hakera. Edycja plików binarnych: http://helion.pl/ksiazki/
vahace.htm,
• dwa krótkie artykuły, które są uzupełnieniem tego tekstu:
http://www.daszkiewicz.net/uzupelnienia.php.
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
88
7
13
4
5
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 11/2007
46
Atak
F
unkcje skrótu (znane też pod innymi na-
zwami, m. in. jako funkcje mieszające al-
bo hashujące) odwzorowują zbiory o do-
wolnej wielkości (często dużej) w zbiór o stałej
wielkości. W zależności od zastosowania stawia
im się szereg dodatkowych wymagań. Zacznij-
my od zastosowań niezwiązanych bezpośrednio
z bezpieczeństwem informatycznym. Pierwsze
z nich to tablice asocjacyjne. Są to takie struk-
tury danych, które wiążą klucz z odpowiadającą
mu wartością. Miłą własnością tych struktur jest
bardzo krótki czas dostępu do danych. Inne za-
stosowania funkcji skrótu to wszelkiego rodzaju
weryfikacja poprawności danych (np. przesyła-
nych potencjalnie stratnym kanałem).
Kryptograficzne funkcje skrótu
Od kryptograficznej funkcji skrótu wymaga się
już znacznie więcej niż od zwykłej funkcji skró-
tu. Dodatkowe wymagania dotyczą natural-
nie odporności na manipulacje zagrażające
bezpieczeństwu opartych na nich protokołów.
Dwie najpopularniejsze rodziny kryptograficz-
nych funkcji skrótu to Message Digest oraz Se-
cure Hash Algorithm. W Tabeli 1. zawarto naj-
bardziej znane algorytmy z tych rodzin wraz
z długością tworzonych przez nie skrótów.
Dobra kryptograficzna funkcja skrótu po-
winna zapewniać następujące cechy:
• odwzorowywać zbiór o dowolnej długości
w zbiór o stałej długości (zwany skrótem kry-
ptograficznym albo hashem),
• drobna zmiana wejścia (np. zmiana jedne-
go bitu) powinna skutkować istotną zmianą
wyjścia,
• odtworzenie wejścia na podstawie wyjścia
(odwracalność) powinno być możliwie trud-
ne (najlepiej niemożliwe). Nazywamy tę ce-
chę także odpornością na tzw. ataki prze-
ciwdziedzinowe,
Kryptograficzne
funkcje skrótu
Cezary G. Cerekwicki
stopień trudności
Kryptograficzne funkcje skrótu są bardzo ważnym prymitywem
kryptograficznym, służącym jako istotny element wielu
protokołów i algorytmów. Ich nieodwracalność to warunek
konieczny bezpieczeństwa prawie każdego działającego obecnie
systemu informatycznego.
Z artykułu dowiesz się
• jak działają najpopularniejsze kryptograficzne
funkcje skrótu,
• jakie typy ataków im zagrażają.
Co powinieneś wiedzieć
• wskazane jest rozumienie podstaw terminologii
kryptologicznej, elementarna znajomość mate-
matyki i informatyki.
Kryptograficzne funkcje skrótu
hakin9 Nr 11/2007
www.hakin9.org
47
• odnalezienie dla danego pliku
drugiego (różnego od niego) pli-
ku, który będzie mieć taki sam
skrót kryptograficzny, powinno
być możliwie trudne. Tę cechę
nazywamy odpornością na atak
drugiej przeciwdziedziny,
• kiedy moc przeciwdziedziny funk-
cji jest większa niż jej dziedzina,
funkcja na pewno nie będzie róż-
nowartościowa, a więc będą się w
niej zdarzały kolizje. Dobra funkcja
skrótu kryptograficznego powin-
na mieć owe kolizje porozrzucane
możliwie losowo, aby nie dało się
ich zbyt łatwo znajdować. Nazywa-
my tę cechę także odpornością na
tzw. ataki kolizyjne. Tu ciekawost-
ka: aby zapewnić tę własność,
wyjście funkcji skrótu musi być aż
dwukrotnie większe, niż jest to nie-
zbędne dla zapewnienia odporno-
ści na ataki przeciwdziedzinowe,
• funkcja musi być deterministyczna,
• powinno dać się ją w miarę szyb-
ko obliczyć.
Paradoks urodzin
Podchwytliwe pytanie: jeśli w danym
pokoju znajdą się 23 przypadkowe
osoby, to jakie jest prawdopodobień-
stwo, że dowolne dwie z nich mają
urodziny tego samego dnia w tym
samym miesiącu? Otóż okazuje się,
że zaskakująco duże, bo aż 50%.
Nie jest to paradoks w klasycznym
tego słowa znaczeniu, tzn. nie jest
to twierdzenie prowadzące do sprze-
czności. Jego paradoksalność leży
w sprzeczności z intuicją, wedle któ-
rej taka kolizja dnia urodzin jest dużo
mniej prawdopodobna. Ma to swoje
implikacje dla funkcji skrótu. Mogło-
by się wydawać, że liczba unikalnych
n-bitowych skrótów, które wygeneru-
jemy przed napotkaniem kolizji, bę-
dzie rzędu 2^n – lecz w rzeczywisto-
ści będzie to raczej 2^(n/2).
Ataki kolizyjne,
przez wydłużenie
Istotą ataków kolizyjnych jest odnajdy-
wanie takich kolizji funkcji skrótu, które
będą pozwalały na oszukanie jakie-
goś mechanizmu ochronnego. Ataki dru-
giej przeciwdziedziny możemy trakto-
wać jako wariant ataków kolizyjnych,
gdyż cel jest taki sam (znalezienie wia-
domości z kolizją skrótu), różna jest
tylko wartość wyjściowa (wiadomość
w przypadku ataku drugiej przeciw-
dziedziny i skrót w przypadku ataku ko-
lizyjnego). Ataki przez wydłużenie to
kolejny wariant ataku kolizyjnego. Po-
legają one na doawaniu redundantnej
Listing 1.
Pseudokod MD5
//
r
oznacza
liczb
ę
przesuni
ęć
na
rund
ę
r
[
0
..
15
]
:=
{
7
,
12
,
17
,
22
,
7
,
12
,
17
,
22
,
7
,
12
,
17
,
22
,
7
,
12
,
17
,
22
}
r
[
16
..
31
]
:=
{
5
,
9
,
14
,
20
,
5
,
9
,
14
,
20
,
5
,
9
,
14
,
20
,
5
,
9
,
14
,
20
}
r
[
32
..
47
]
:=
{
4
,
11
,
16
,
23
,
4
,
11
,
16
,
23
,
4
,
11
,
16
,
23
,
4
,
11
,
16
,
23
}
r
[
48
..
63
]
:=
{
6
,
10
,
15
,
21
,
6
,
10
,
15
,
21
,
6
,
10
,
15
,
21
,
6
,
10
,
15
,
21
}
// Jako stałych użyjemy binarnych części stałych sinusów liczb całkowitych
for
i
from
0
to
63
k
[
i
]
:=
floor
(
abs
(
sin
(
i
+
1
))
×
(
2
pow
32
))
// Inicjalizacja zmiennych
var
int
h0
:=
0x67452301
var
int
h1
:=
0xEFCDAB89
var
int
h2
:=
0x98BADCFE
var
int
h3
:=
0x10325476
// Obróbka wstępna
do
łą
cz
bit
„
1
”
do
wiadomo
ś
ci
do
łą
cz
tyle
bit
ó
w
„
0
”,
aby
d
ł
ugo
ść
wiadomo
ś
ci
w
bitach
by
ł
a
kongruentna
do
448
(
mod
512
)
do
łą
cz
bit
oryginalnej
wiadomo
ś
ci
(
czyli
tej
jeszcze
przed
dwiema
poprzednimi
operacjami
)
jako
64
-
bitow
ą
liczb
ę
ca
ł
kowit
ą
zakodowan
ą
jako
little
-
endian
.
// Najpierw definicja funkcji leftrotate
leftrotate
(
x
,
c
)
return
(
x
<<
c
)
or
(
x
>>
(
32
-
c
));
// Przez „<<” rozumiemy przesunięcie bitowe z zawinięciem
// Przetwarzaj wiadomość w blokach 512-bitowych
dla
ka
ż
dego
512
-
bitowego
bloku
wiadomo
ś
ci
{
podziel
blok
na
16
32
-
bitowych
s
łó
w
little
-
endian
w
[
i
]
,
0
?
i
?
15
// Inicjuj wartości skrótu dla tego bloku:
int
a
:=
h0
int
b
:=
h1
int
c
:=
h2
int
d
:=
h3
// Główna pętla
for
i
from
0
to
63
{
if
0
?
i
?
15
then
f
:=
(
b
and
c
)
or
((
not
b
)
and
d
)
g
:=
i
else
if
16
?
i
?
31
f
:=
(
d
and
b
)
or
((
not
d
)
and
c
)
g
:=
(
5
×
i
+
1
)
mod
16
else
if
32
?
i
?
47
f
:=
b
xor
c
xor
d
g
:=
(
3
×
i
+
5
)
mod
16
else
if
48
?
i
?
63
f
:=
c
xor
(
b
or
(
not
d
))
g
:=
(
7
×
i
)
mod
16
}
temp
:=
d
d
:=
c
c
:=
b
b
:=
b
+
leftrotate
((
a
+
f
+
k
[
i
]
+
w
[
g
])
,
r
[
i
])
a
:=
temp
// Dodaj skrót tego bloku do wyniku:
h0
:=
h0
+
a
h1
:=
h1
+
b
h2
:=
h2
+
c
h3
:=
h3
+
d
}
int
skr
ó
t
:=
h0
do
łą
cz
h1
do
łą
cz
h2
do
łą
cz
h3
//
wyra
ż
amy
to
jako
little
-
endian
hakin9 Nr 11/2007
www.hakin9.org
Atak
48
informacji do wiadomości w celu gene-
rowania kolejnych skrótów i liczeniu na
to, że któryś z nich będzie kolidował ze
skrótem oryginalnym.
Przykład 1
Wiele mechanizmów aktualizacji opro-
gramowania (polegających na ściąga-
niu z sieci patchy lub nowszych wer-
sji) używa kryptograficznych funkcji
skrótu dla potwierdzenia, że autor po-
prawki jest w rzeczywistości tym, za
kogo się podaje. Możemy sobie ła-
two wyobrazić wykorzystanie takie-
go mechanizmu do podrzucenia ko-
muś konia trojańskiego (np. Keylogge-
ra). Bobek ściąga kod, ale też pobie-
ra ze strony WWW skrót kryptograficz-
ny, po czym oblicza skrót dla pobrane-
go pliku (oczywiście używając takie-
go samego algorytmu). Jeśli są ta-
kie same, to uznaje ściągnięty kod za
autentyczny. Tu istotna uwaga: wiele
automatycznych mechanizmów aktu-
alizacji ma podobną procedurę zaszytą
w sobie. Jak więc można, pomimo za-
stosowania kryptograficznych funkcji
skrótu, jednak ominąć to zabezpiecze-
nie? Alicja pisze swojego trojana i do-
łącza go do autentycznego kodu (bę-
dziemy go nazywać nosicielem). Ata-
kowanym kodem może być aktualiza-
cja Windows, najnowszy kernel Linuk-
sa itd. Wybór nosiciela jest o tyle waż-
ny, że nasz spreparowany kod będzie
miał taki dostęp do systemu, jak nosi-
ciel. Należy zatem podczepić się pod
aplikację o wystarczających dla na-
szego podstępnego planu uprawnie-
niach, a jednocześnie nie zabezpie-
czoną zbyt starannie (np. jakimś do-
datkowym mechanizmem, prócz zwy-
kłego skrótu kryptograficznego). By-
łoby kolosalnym zbiegiem okoliczno-
ści, gdyby skrót kryptograficzny spre-
parowanego przez Alicję kodu był
akurat równy skrótowi kodu legalne-
go. Takiego szczęścia (lub nieszczę-
ścia, z punktu widzenia Bobka) ra-
czej mieć nie będziemy, ale szczęściu
można dopomóc. Zauważmy, że pli-
ków o identycznym działaniu, ale róż-
nej zawartości, może być bardzo du-
żo (teoretycznie nieskończenie wiele).
A więc dołączamy do atakowanego
archiwum całkowicie zbędny plik, któ-
rego jedynym celem jest różnicowa-
Listing 2a.
Pseudokod SHA-2
//
Inicjalizacja
zmiennych
// (pierwsze 32 bity części ułamkowych pierwiastków kwadratowych pierwszych
ośmiu liczb pierwszych 2..19):
h0
:=
0x6a09e667
h1
:=
0xbb67ae85
h2
:=
0x3c6ef372
h3
:=
0xa54ff53a
h4
:=
0x510e527f
h5
:=
0x9b05688c
h6
:=
0x1f83d9ab
h7
:=
0x5be0cd19
// Inicjalizacja tablicy stałych
// (pierwsze 32 bity części ułamkowych pierwiastków trzeciego stopnia
pierwszych 64 liczb pierwszych 2..311):
k
[
0
..
63
]
:=
0x428a2f98
,
0x71374491
,
0xb5c0fbcf
,
0xe9b5dba5
,
0x3956c25b
,
0x59f111f1
,
0x923f82a4
,
0xab1c5ed5
,
0xd807aa98
,
0x12835b01
,
0x243185be
,
0x550c7dc3
,
0x72be5d74
,
0x80deb1fe
,
0x9bdc06a7
,
0xc19bf174
,
0xe49b69c1
,
0xefbe4786
,
0x0fc19dc6
,
0x240ca1cc
,
0x2de92c6f
,
0x4a7484aa
,
0x5cb0a9dc
,
0x76f988da
,
0x983e5152
,
0xa831c66d
,
0xb00327c8
,
0xbf597fc7
,
0xc6e00bf3
,
0xd5a79147
,
0x06ca6351
,
0x14292967
,
0x27b70a85
,
0x2e1b2138
,
0x4d2c6dfc
,
0x53380d13
,
0x650a7354
,
0x766a0abb
,
0x81c2c92e
,
0x92722c85
,
0xa2bfe8a1
,
0xa81a664b
,
0xc24b8b70
,
0xc76c51a3
,
0xd192e819
,
0xd6990624
,
0xf40e3585
,
0x106aa070
,
0x19a4c116
,
0x1e376c08
,
0x2748774c
,
0x34b0bcb5
,
0x391c0cb3
,
0x4ed8aa4a
,
0x5b9cca4f
,
0x682e6ff3
,
0x748f82ee
,
0x78a5636f
,
0x84c87814
,
0x8cc70208
,
0x90befffa
,
0xa4506ceb
,
0xbef9a3f7
,
0xc67178f2
// Przetwarzanie wstępne
do
łą
cz
bit
1
do
wiadomo
ś
ci
do
łą
cz
k
bit
ó
w
„
0
”,
gdzie
k
to
minimalna
liczba
>=
0
taka
, ż
e
d
ł
ugo
ść
w
bitach
wynikowej
wiadomo
ś
ci
jest
kongruentna
do
448
(
mod
512
)
do
łą
cz
bit
oryginalnej
wiadomo
ś
ci
(
czyli
tej
jeszcze
przed
dwiema
poprzednimi
operacjami
)
jako
64
-
bitow
ą
liczb
ę
ca
ł
kowit
ą
zakodowan
ą
jako
little
-
endian
// Przetwarzaj wiadomość w blokach 512-bitowych
dla
ka
ż
dego
512
-
bitowego
bloku
wiadomo
ś
ci
{
podziel
blok
na
16
32
-
bitowych
s
łó
w
little
-
endian
w
[
i
]
,
0
?
i
?
15
// Rozszerz 16 32-bitowych słów na 64 32-bitowe słowa
for
i
from
16
to
63
s0
:=
(
w
[
i
-
15
]
rightrotate
7
)
xor
(
w
[
i
-
15
]
rightrotate
18
)
xor
(
w
[
i
-
15
]
rightshift
3
)
s1
:=
(
w
[
i
-
2
]
rightrotate
17
)
xor
(
w
[
i
-
2
]
rightrotate
19
)
xor
(
w
[
i
-
2
]
rightshift
10
)
w
[
i
]
:=
w
[
i
-
16
]
+
s0
+
w
[
i
-
7
]
+
s1
// Inicjalizuj wartość skrótu dla tego bloku
a
:=
h0
b
:=
h1
c
:=
h2
d
:=
h3
e
:=
h4
f
:=
h5
g
:=
h6
h
:=
h7
// Główna pętla
for
i
from
0
to
63
{
s0
:=
(
a
rightrotate
2
)
xor
(
a
rightrotate
13
)
xor
(
a
rightrotate
22
)
maj
:=
(
a
and
b
)
xor
(
a
and
c
)
xor
(
b
and
c
)
Kryptograficzne funkcje skrótu
hakin9 Nr 11/2007
www.hakin9.org
49
nie skrótów kryptograficznych. Może
my to opisać następującym algoryt-
mem:
• losujemy zawartość (i/lub dłu-
gość) zbędnego pliku,
• dołączamy go do patcha, pakuje-
my całość,
• liczymy z wyniku skrót kryptogra-
ficzny,
• jeśli jest on równy skrótowi legalne-
go kodu, ogłaszamy zwycięstwo,
• w przeciwnym wypadku skacze-
my do punktu 1.
Jak widać, jest to algorytm działający
w paradygmacie brutalnym, polegają-
cy na losowym przeszukiwaniu prze-
strzeni dziedziny funkcji skrótu w na-
dziei na znalezienie właściwej kolizji.
Jeśli się uda, będziemy mogli podło-
żyć spreparowany plik i mieć pew-
ność, że zostanie rozpoznany jako le-
galny patch. Na podstawie paradoksu
dnia urodzin możemy oczekiwać, że ja-
kaś sensowna kolizja trafi się relatyw-
nie szybko (a w każdym razie szybciej
niż w czasie 2^n, gdzie n jest ilością bi-
tów przeciwdziedziny; prędzej będzie
to 2^(n/2), a i to przy dość mało re-
alistycznych założeniach wstępnych).
Jeśli znana jest jakaś słabość kolizyj-
na użytej funkcji skrótu, możemy spró-
bować to wykorzystać do sprytniejsze-
go przeszukiwania przestrzeni dziedzi-
ny funkcji. Dla niektórych algorytmów
(np. MD5) znane są dość szybkie al-
gorytmy wyszukiwania kolizji. Mając
taki algorytm, możemy najpierw zna-
leźć możliwie dużo kolizji, a następnie
próbować dopasować nasz spreparo-
wany kod do którejś z nich.
Tabela 1.
Wybrane funkcje skrótu oraz długości generowanych przez nie
skrótów
Algorytm funkcji skrótu
Długość skrótu w bitach
Message Digest (MD4)
128
MD5
128
Secure Hash Algorithm 1 (SHA-1)
160
SHA-256
256
SHA-384
384
SHA-512
512
Listing 2b.
Pseudokod SHA-2
t2
:=
s0
+
maj
s1
:=
(
e
rightrotate
6
)
xor
(
e
rightrotate
11
)
xor
(
e
rightrotate
25
)
ch
:=
(
e
and
f
)
xor
((
not
e
)
and
g
)
t1
:=
h
+
s1
+
ch
+
k
[
i
]
+
w
[
i
]
h
:=
g
g
:=
f
f
:=
e
e
:=
d
+
t1
d
:=
c
c
:=
b
b
:=
a
a
:=
t1
+
t2
}
// Dołącz to do całego skrótu
h0
:=
h0
+
a
h1
:=
h1
+
b
h2
:=
h2
+
c
h3
:=
h3
+
d
h4
:=
h4
+
e
h5
:=
h5
+
f
h6
:=
h6
+
g
h7
:=
h7
+
h
}
// Wygeneruj ostateczną wartość skrótu (w notacji big-endian):
skr
ó
t
=
h0
do
łą
cz
h1
do
łą
cz
h2
do
łą
cz
h3
do
łą
cz
h4
do
łą
cz
h5
do
łą
cz
h6
do
łą
cz
h7
hakin9 Nr 11/2007
www.hakin9.org
Atak
50
Przykład 2
Dysponujemy dokumentem wery-
fikowanym skrótem i chcemy pod-
łożyć inny dokument, który będzie
mieć taki sam skrót. Na przykład Ali-
cja chciałaby zwędzone komuś refe-
rencje od poważnej firmy sfałszować
tak, aby Bobek myślał, że dotyczą
właśnie jej. W tym celu Alicja prepa-
ruje możliwie dużą liczbę dokumen-
tów, które mają następujące cechy:
• są w miarę wierną kopią orygina-
łu z podmienionymi danymi,
• są semantycznie tożsame, ale róż-
nią się na minimum jednym bicie.
Alicja może tworzyć takie warianty po-
przez dodawanie niewidocznych zna-
ków (np. spacji na końcach linii, za-
miany spacji na tabulacje i odwrotnie),
zamiany słów na ich synonimy, zmia-
nę szyku zdania itd. Następnie Alicja
generuje kryptograficzne skróty spre-
parowanych wariantów i porównuje je
z oryginałem. Jeśli będą takie same,
może zatańczyć taniec radości. Za-
uważmy, że trudność przeprowadze-
nia ataku kolizyjnego jest wprost pro-
porcjonalna do mocy przeciwdziedzi-
ny funkcji skrótu. Innymi słowy, im
większy jest generowany skrót, tym
trudniej jest znaleźć kolizję.
Ataki przeciwdziedzinowe
Atak przeciwdziedzinowy to (bardzo
ambitna) próba odtworzenia wejścia
funkcji skrótu na podstawie jej wyj-
ścia. Uważnemu Czytelnikowi od razu
przyjdzie na myśl, że z faktu koniecz-
ności istnienia kolizji wynika, że każdy
skrót odpowiada nie jednemu wejściu,
ale zbiorowi wejść (i to w dodatku teo-
retycznie nieskończenie dużemu). Ata-
ki przeciwdziedzinowe są – a raczej
byłyby – bardzo groźne, bo na nieod-
wracalności kryptograficznych funkcji
skrótu opiera się bezpieczeństwo wie-
lu algorytmów i ogromnej ilości syste-
mów. Byłyby, ponieważ efektywne ata-
ki przeciwdziedzinowe nie są znane
dla żadnej popularnej funkcji skrótu.
Wszystkie głośnio oznajmiane złama-
nia MD5, czy SHA-1 to były wyłącznie
ataki kolizyjne. Efektywny atak prze-
ciwdziedzinowy byłby zabójczy choć-
by dla mechanizmu składowania haseł
wykorzystywanego m. in. w Linuksie.
Kryptograficzne
funkcje skrótu
Najbardziej znane rodziny kryptogra-
ficznych funkcji skrótu to Message
Digest oraz Secure Hash Algorithm.
Message Digest
MD5 to jedna z najpopularniejszych
kryptograficznych funkcji skrótu, acz-
kolwiek w ostatnich latach gwałtow-
nie tracąca na popularności ze wzglę-
du na liczne (i, co gorsza, udane) ataki
kolizyjne. Funkcję tę zaprojektował Ro-
nald Rivest (tak, to ten od RSA) w 1991
roku. W 1996 oraz w 2004 roku odkry-
to poważne podatności MD5, w związ-
ku z czym algorytm ten jest uważany
za nieprzydatny dla nowo projektowa-
nych aplikacji. Oczywiście dotyczy to
tylko aplikacji, w przypadku których
niezbędna jest odporność na ataki ko-
lizyjne. MD5 ciągle daje się bezpiecz-
nie stosować tam, gdzie potrzebna jest
tylko odporność na ataki przeciwdzie-
dzinowe, choć nawet tam jest to algo-
rytm obecnie unikany. Niemniej trze-
ba go znać choćby dlatego, że ciągle
funkcjonuje mnóstwo systemów infor-
matycznych, w których MD5 stanowi
jeden ze składników systemu bezpie-
czeństwa. Listing 1. prezentuje algo-
rytm MD5 w pseudokodzie. Wszystkie
zmienne to 32-bitowe słowa bez zna-
ku. Stosowana jest wyłącznie arytme-
tyka modulo 2^32, zatem operacja 0-1
nie spowoduje rzucenia wyjątku wyj-
ścia poza zakres, tylko zawinięcie licz-
by do jej maksymalnej wartości. Dekla-
rujemy dwie tablice int[64] r oraz k.
Jak widać, MD5 wykonuje tylko
jedno przejście przez wiadomość
źródłową, co uważa się za podsta-
wową wadę tego algorytmu.
Secure Hash Algorithm
Funkcje z rodziny SHA powstały
w National Security Agency i są ame-
rykańskim standardem rządowym.
Funkcje zwracające skrót dłuższy niż
200 bitów określane są jako SHA-2.
Pseudokod SHA-2 przedstawiono na
Listingu 2. Wszystkie zmienne to 32-
bitowe słowa bez znaku. Stosowa-
na jest wyłącznie arytmetyka modu-
lo 2^32, zatem operacja 0-1 nie spo-
woduje rzucenia wyjątku wyjścia po-
za zakres, tylko zawinięcie liczby do
jej maksymalnej wartości.
Rightrotate jest analogiczne do Le-
ftrotate; Rightshift również – z tym, że
tu przesunięcie bitowe jest bez zawi-
nięcia. SHA-2 to ciągle (jak na stan-
dardy kryptograficzne) dość młoda ro-
dzina funkcji. Dla SHA-256 i SHA-512
nie znaleziono jak dotąd żadnego efek-
tywnego ataku kolizyjnego. Być może
w końcu zostanie on odkryty, ale szan-
se na to, że będzie mniej złożony niż
ataki na SHA-1 są raczej minimalne.
Dlatego na chwilę obecną w każdej
aplikacji, gdzie bezpieczeństwo jest
kwestią życia lub śmierci, warto użyć
którejś z funkcji z rodziny SHA-2. Nie
znaczy to, że SHA-1 jest mało bez-
pieczna. Najlepszy atak kolizyjny na
SHA-1 wymaga w przybliżeniu 2^69
iteracji, co jest liczbą astronomiczną,
więc zrealizowanie ataku na normal-
nym komputerze nie wchodzi w grę.
Niemniej po pierwsze, niektórzy napast-
nicy mogą dysponować znacznie wy-
dajniejszym środowiskiem obliczenio-
wym, a po drugie, zgodnie z prawem
Moore'a moc procesorów podwaja się
co 18 miesięcy, zatem opieranie się na
SHA-1 w nowo projektowanych aplika-
cjach generalnie nie jest zalecane.
Podsumowanie
W tekście opisano najważniejsze ce-
chy funkcji skrótu oraz dwie najpopu-
larniejsze rodziny algorytmów gene-
rujących skróty kryptograficzne – Mes-
sage Digest oraz Secure Hash Al-
gorithm. Przedstawiono charaktery-
stykę ataków na funkcje skrótu wraz
z przykładami nadużyć oraz algoryt-
mów wyszukujących kolizje. l
O autorze
Autor jest z wykształcenia informaty-
kiem i politologiem. Pracował jako pro-
jektant, programista, administrator, kon-
sultant, tłumacz, koordynator międzyna-
rodowych projektów, dziennikarz i publi-
cysta. Pisał programy w dziesięciu języ-
kach programowania (od asemblerów
po języki skryptowe), w czterech sys-
temach operacyjnych, na dwóch platfor-
mach sprzętowych. Kontakt do autora:
cerekwicki@tlen.pl
Kryptograficzne funkcje skrótu
hakin9 Nr 11/2007
www.hakin9.org
51
www.hakin9.org
hakin9 Nr 11/2007
52
Obrona
A
dministratorzy chcą jednak coraz le-
piej zabezpieczać swoje Sieci i sys-
temy komputerowe przed takimi ata-
kami. Najbardziej obszerny i skomplikowany
jest temat zabezpieczeń technicznych zawar-
tych w oprogramowaniu,sprzęcie kompute-
rowym i urządzeniach telekomunikacyjnych.
Trudno jest wykryć atak w jego pierwszych fa-
zach tym bardziej jeśli nasz system nie posia-
da odpowiedniego zabezpieczenia i bazuje tyl-
ko na programowym firewallu. Przeglądanie lo-
gów serwera w celu znalezienia czegoś podej-
rzanego jest czasochłonnym i żmudnym zaję-
ciem.
Strategie i warstwy
Istnieją różne strategie ochrony systemów in-
formatycznych. Jedna z nich to tradycyjna stra-
tegia opierająca się o analizę ryzyka. Identy-
fikuje ona obszary systemu, w których wyma-
gane jest wprowadzenie zabezpieczeń. Druga
strategia, oparta na metodach praktycznych,
nazywana jest w skrócie SKiP od sformułowa-
nia Security Knowledge in Practice. Strategia
została opracowana przez CERT i zakłada, że
system powinien być przygotowany do obsłu-
gi nadużyć bezpieczeństwa, które mogą wy-
stąpić. Schematyczny opis działania strategii
SKiP przedstawiono na Rysunku 1.
W SKiP proces zarządzania bezpieczeń-
stwem rozpoczyna się od analizy i wzmoc-
nienia obecnych w systemie środków bezpie-
czeństwa. Następnie należy przygotować się
na określone zdarzenia, monitorować system
celem wykrywania incydentów, wreszcie tak
poprawiać zabezpieczenia, aby ataki się nie
powtórzyły. Dwie wyżej opisane strategie cie-
szą się największą popularnością wśród ad-
ministratorów oraz są najczęściej wdrażane.
Techniczne zabezpieczenia systemu informa-
Niekonwencjonalne
metody wykrywania
włamań
Grzegorz Błoński
stopień trudności
W każdej firmie system informatyczny jest niezbędny do
jej prawidłowego funkcjonowania w dzisiejszych czasach.
Utrzymanie bezpieczeństwa takiego systemu jest więc
koniecznością. W ostatnich latach zwiększyła się liczba prób
ataków na przeróżne systemy informatyczne, a wszystko to za
sprawą bardzo szybkiego rozwoju technologii informatycznych.
Z artykułu dowiesz się
• co to są strefy zdemilitaryzowane (DMZ),
• jak działa typowy Intrusion Detection System,
• jakie są rodzaje IDS,
• jak działa honeypot – pułapka na hakera.
Co powinieneś wiedzieć
• znać szkieletową budowę Sieci,
• znać zasadę działania firewalli.
Niekonwencjonalne metody wykrywania włamań
hakin9 Nr 11/2007
www.hakin9.org
53
tycznego często dzieli się umownie
na tak zwane warstwy ochrony, do
których jako podstawowe zalicza-
ją się:
• warstwa zabezpieczeń systemu
operacyjnego,
• warstwa zabezpieczeń systemu
baz danych,
• warstwa zabezpieczeń aplikacji,
• warstwa zabezpieczeń siecio-
wych.
Prawidłowe współdziałanie wszyst-
kich warstw ma ogromny wpływ na
poziom bezpieczeństwa ochraniane-
go systemu. Bardzo ważne są logicz-
nie skonstruowane powiązania mię-
dzy warstwami, tak aby nie dopro-
wadzać do sytuacji, w której na przy-
kład zabezpieczenia warstwy siecio-
wej pozwolą na dokonanie ataku na
serwer bazy danych posiadającym
jakąś lukę.
Strefy
zdemilitaryzowane
Tworzenie stref bezpieczeństwa to
kolejna metoda ochrony przed ata-
kami. DMZ (DeMilitarized Zone) to
strefa zdemilitaryzowana, w której
umieszcza się serwery najbardziej na-
rażone na ataki z Internetu (WWW,
E-Mail, FTP). Gdy nastąpi włama-
nie na serwer położony w takiej stre-
fie, nie otwiera to drogi do zasobów
znajdujących się w wewnętrznej sie-
ci firmy.
Rysunek 2.
Strefa DMZ
��������
���
����������
�����������
��������
�����������������
���������������
���
Rysunek 3.
Schemat blokowy systemu IDS
�������
���������
�����������
��������
��������������
��������
����������������
��������������
���
��������
����
������
��������
����������
Rysunek 1.
Schemat działania SKiP
POPRAWIAJ
ZABEZPIECZENIA
ODPOWIADAJ
NA ATAKI
WYKRYWAJ
PRÓBY
ATAKÓW
PRZYGOTUJ
SIĘ NA ATAKI
WZMOCNIJ
I
ZABEZPIECZ
hakin9 Nr 11/2007
www.hakin9.org
Obrona
54
Systemy IDS / IPS
W celu wczesnego wykrywania wła-
mań powstało kilka technik, które
swój początek biorą od jednego sys-
temu nazwanego IDS (Intrusion De-
tection System – system wykrywania
intruzów). Typowe systemy IDS dzia-
łają podobnie jak sniffer, zbierając
pakiety krążące w sieci i poddając
je analizie. Niestety, proces bada-
nia przechwyconych ramek jest tyleż
skomplikowany, co narażony na po-
myłki, co znacznie wpływa na niską
wydajność takich systemów.
O jakości systemów IDS decydu-
je kilka własności:
• wykrywalność ataków,
• liczba fałszywych alarmów,
• wydajność,
• baza sygnatur i jej aktualizacja,
• zakres reakcji,
• dostrajanie zabezpieczeń,
• zarządzanie zabezpieczeniami.
Systemy IDS dzielimy na trzy głów-
ne grupy:
• HIDS – Host-based IDS, system
IDS bazujący na maszynie, na
której działa,
• NIDS – Network-based IDS, sys-
tem IDS bazujący na sieci, w któ-
rej działa,
• NNIDS – Network Node IDS, sys-
tem hybrydowy – połączenie obu
powyższych.
Dobrej klasy systemy IDS wykorzy-
stują przeróżne metody identyfikacji
ataków. Do najczęściej wykorzysty-
wanych należą między innymi:
• Stateful signatures – wykrywa-
nie oparte o bazę pełnostano-
wych sygnatur, które zawierają
informacje na temat wzorca ata-
ku oraz rodzaju komunikacji,
• Protocol Anomalies – wykrywa-
nie niezgodności ruchu sieciowe-
go ze standardami określonych
protokołów,
• Backdoor Detection – wykrywa-
nie aktywności koni trojańskich
poprzez analizę ruchu sieciowego
i porównanie z wzorcami, a także
analizę heurystyczną pakietów,
• Traffic Anomalies – rozpoznawa-
nie działań w sieci, które są nie-
dozwolone lub podejrzane (np.
skanowanie portów),
• Spoofing Detection – wykrywanie
ruchu sieciowego ze sfałszowa-
nymi adresami IP (IP Spoofing),
• Layer 2 Detection – wykrywanie
działań i ataków na poziomie 2
warstwy modelu OSI oraz adre-
sów MAC (ARP cache poisoning),
• Denial of Service Detection – wy-
krywanie ataków destabilizują-
cych pracę sieci oraz destrukcyj-
nych (DoS, SYN-Flood),
• Honeypot – maszyna, która uda-
je serwer lub urządzenie siecio-
we. Pracuje jako przynęta, uda-
jąc w pełni sprawną i wartościo-
wą część infrastruktury siecio-
wej. Jednocześnie rejestruje każ-
dą próbę ataku (jak np. skanowa-
nie portów) i informuje o tych po-
czynaniach administratora.
Istnieją także systemy nazywane inli-
ne IDS, które są połączeniem sniffe-
ra i firewalla. W przypadku takich sys-
temów klasyfikacja aktywności sie-
ciowej jest o wiele bardziej zaawan-
sowana niż w przypadku firewalli.
IDS stosuje do tego wiele technolo-
gii. Ogólnie mówi się, że IDS-y działa-
ją na podstawie dopasowywania sy-
gnatur ataków. Jest to duże uprosz-
czenie. W żadnym wypadku nie
Rysunek 4.
HIDS
Architektura sieci z Host IDS
FIREWALL
+ agent HIDS
Router
Koncentrator
Koncentrator
Konsola
zarządzania
HIDS
Hosty z agentami
HIDS
Hosty z agentami HIDS
WWW
MTA
DNS
LAN
Strefa
DMZ
INTERNET
Rysunek 5.
NIDS
Architektura sieci z Network IDS
FIREWALL
Router
Koncentrator
Koncentrator
Konsola
zarządzania
NIDS
Hosty
WWW
MTA
DNS
LAN
Strefa
DMZ
INTERNET
Sonda IDS
Sonda IDS
Niekonwencjonalne metody wykrywania włamań
hakin9 Nr 11/2007
www.hakin9.org
55
oznacza to, że IDS ma dokładny wzo-
rzec każdego ataku i z taką bazą da-
nych konfrontuje nadzorowany ruch.
Jeśli by tak było, to IDS-y dałoby się
bardzo łatwo oszukać. Przykłado-
wo, jeśli IDS analizowałby zapytania
SQL, to wstawienie jednej lub wię-
cej spacji spowodowałoby brak dopa-
sowania reguły i udałoby się obejść
zabezpieczenie. W rzeczywistości
współczesne IDS-y stosują wiele róż-
nych technik detekcji prób ataku – np.
normalizatory i interpretery poszcze-
gólnych protokołów, sygnatury opiso-
we w miejsce konkretnych wzorców
oraz metody heurystyczne.
Przykładem systemu IDS dla Li-
nuksa może być bardzo znany i ce-
niony SNORT, na temat którego moż-
na więcej przeczytać na stronie http://
www.snort.org. Jeśli chodzi o podobne
systemy dla środowiska Windows, to
warto wspomnieć o NetScreen IDP fir-
my Juniper Networks, który łączy w so-
bie różne metody wykrywania ataków
sieciowych i zapewnia wysoki poziom
bezpieczeństwa wykorzystując efekt
synergii tych metod.
Powstają nowe odmiany syste-
mów IDS, które są poszerzane o no-
we funkcje. Przykładem może być
DIDS – Distributed IDS, rozproszo-
ny system, w którym na każdym ho-
ście w chronionej sieci działają od-
powiednie czujniki.
Coraz większą popularnością cie-
szą się systemy IPS – Intrusion Pre-
vention Systems.
Czym są IPS? To sprzętowe lub
programowe rozwiązania, których
zadaniem jest nie tylko wykrywanie
ataków na system komputerowy, ale
także jednoczesne przeciwdziała-
nie i uniemożliwianie takich ataków.
Od strony technicznej można powie-
dzieć, że IPS to połączenie funkcjo-
nalności zapory sieciowej (firewall)
oraz systemu IDS.
Techniki przetwarzania
danych
Do analizy włamań w sieciach wyko-
rzystywanych jest wiele technik prze-
twarzania, które często są ze sobą
łączone w różnych rozwiązaniach.
Duża ilość danych zbieranych i reje-
strowanych przez systemy IDS oraz
IPS powoduje, że wyłowienie z nich
prawdziwego ataku czy skanowania
portów zajmuje dużo czasu, a wiele
wykrytych anomalii jest tak napraw-
dę fałszywym alarmem. Aby zmini-
malizować takie pomyłki, stosuje się
między innymi systemy ekspertowe,
których baza wiedzy jest zbiorem re-
guł opisujących atak. Wychwycone
poprzez IPS/IDS zdarzenia są kla-
syfikowane jako atak (lub nie) po do-
konaniu sprawdzenia i porównania
z bazą systemu ekspertowego.
Kolejną metodą jest analiza sy-
gnatur, w której – podobnie jak
w systemach ekspertowych – korzy-
sta się z pozyskiwania wiedzy o ata-
ku. Opis ataku jest transformowany
do postaci zgodnej z formatem bazy
sygnatur i dokonywane jest porów-
nywanie. Jeśli czynności rozpozna-
ne podczas ataku są zgodne z tymi
zapisanymi w bazie, są one klasyfi-
kowane jako atak. Wysoka skutecz-
ność tej metody znajduje zastosowa-
nie w rozwiązaniach komercyjnych,
takich jak Stalker czy Real-Source.
Sieci Petriego to kolejny ze spo-
sobów detekcji. Wykorzystuje on ko-
lorowane sieci do graficznej repre-
zentacji wykrytych ataków. Metoda ta
została zaimplementowana w syste-
mie wykrywania włamań IDIOT opra-
cowanym na Uniwersytecie Purdue.
Następna technika opiera się na
analizie przejść – stanów. Atak opi-
sywany jest jako zbiór podcelów
i przejść między nimi. Nie doczekała
się ona komercyjnych zastosowań.
Są to tylko wybrane metody, któ-
re doczekały się praktycznego wy-
korzystania w systemach wykrywa-
nia włamań.
Honeypot – Garnek
Miodu
W ostatnim czasie ogromnym zain-
teresowaniem cieszą się wspomnia-
ne wcześniej honeypoty (honeypot
to angielskie słowo określające gar-
nek miodu). Spełniają one rolę przy-
nęty, wabika, którym ma się zainte-
resować potencjalny atakujący. Tego
rodzaju systemy wczesnego ostrze-
gania o atakach są bardzo dobrym
rozwiązaniem ze względu na moż-
liwości, jakie dają administratorom.
Takie przynęty – a mogą nimi być
odpowiednio skonfigurowane pece-
ty, routery, przełączniki lub serwery
oparte o maszyny wirtualne – są co-
raz bardziej popularne.
Ze względu na to, że honeypot
nie jest maszyną produkcyjną (czy-
li nie bierze czynnego udziału w pra-
cy systemu informatycznego firmy),
ataki, które go dotykają, nie czynią
szkód w sieci produkcyjnej firmy. Od-
powiednio skonfigurowany honeypot
zbiera informacje o ataku i przesyła
je do administratora w celu podjęcia
odpowiednich działań.
Jednym z najbardziej znanych
komercyjnych systemów typu ho-
neypot jest KFSensor firmy KeyFo-
cus (www.keyfocus.net), bardzo czę-
Rysunek 6.
NNIDS
Architektura sieci z Network Node IDS
FIREWALL
+ agent NNIDS
Router
Koncentrator
Koncentrator
Konsola
zarządzania
NNIDS
Hosty z agentami
NNIDS
Hosty z agentami NNIDS
WWW
MTA
DNS
LAN
Strefa
DMZ
INTERNET
hakin9 Nr 11/2007
www.hakin9.org
Obrona
56
sto uaktualniany oraz wyposażony
w szereg mechanizmów wykrywa-
jących ataki. Inne znane rozwiąza-
nia to PatriotBox (www.alkasis.com)
oraz Specter:A (www.specter.com).
W przypadku systemów Unix/
Linux znane jest rozwiązanie Open
Source o nazwie Honeyd (www.ho-
neyd.org). Technologia wykorzysta-
nia honeypotów rozwija się w kierun-
ku automatyzacji procesu ich imple-
mentacji w danym systemie czy sie-
ci. Dynamiczne honeypoty mogą zre-
wolucjonizować rynek zabezpieczeń.
Założenia takich rozwiązań to samo-
uczenie się topologii i ruchu w sieci,
łatwiejsze integrowanie się z syste-
mem, wreszcie nawet automatyczna
implementacja nowych honeypotów.
Projekt Honeynet
Na stronach projektu Honeynet (http://
project.honeynet.org) można znaleźć
narzędzia, które pomogą nam w za-
stosowaniu takich rozwiązań.
Podzielono je na grupy. Pierwsza
z nich, High-Interaction, przedstawia
rozwiązania, które nie emulują ni-
czego – są zwyczajnymi systemami
spotykanymi w domowych kompute-
rach czy firmowych stacjach robo-
czych. Ich zaletą jest zdolność do
zebrania większej ilości informa-
cji o atakach. Możemy tam znaleźć
dwa programy przydatne do tworze-
nia takich honeypotów – Honeywall
oraz Sebek.
Druga grupa, Low-Interaction,
charakteryzuje się tym, że w pełni
emuluje komputery, usługi czy funk-
cjonalności serwerów produkcyjnych.
Takie honeypoty łatwiej jest zaimple-
mentować, natomiast zbierają one
mniej typów informacji. W tej grupie
znajdziemy na wspomnianej stronie
Nepenthes, Honeyd oraz Honeytrap.
Trzecia grupa, Client, to narzę-
dzia inicjujące połączenie z serwe-
rem i zbierające informacje o zdarze-
niach w aplikacjach klienckich usług
takich, jak E-mail czy WWW. Mamy
do wyboru dwa programy – Captu-
reHPC oraz HoneyC.
Kolejna grupa to Infrastructure. Za-
wiera ona narzędzia wspomagające
wdrażanie i zarządzanie honeypotami.
Dostępny zestaw narzędzi do wyboru
to: Pehunter, Google Hack Honeypot,
Honeymole oraz Honeystick.
Ostatnia z przedstawionych na
stronie grup narzędzi to Data Ana-
lysis. Jak sama nazwa wskazuje, są
to narzędzia do analizy danych prze-
chwyconych przez honeypoty. Znaj-
dują się tutaj dwa narzędzia: Honey-
snap oraz Capture BAT.
Po dokładniejsze opisy wszyst-
kich narzędzi odsyłam na stronę pro-
jektu. (http://project.honeynet.org)
Hybrydy
Zabezpieczeniom stawia się wyma-
gania nie tylko odnośnie poziomu
bezpieczeństwa chronionych zaso-
bów, ale także ich wydajności. Nie
powinny one powodować opóźnień
w transmisji danych. Systemy zapo-
rowe firewall są newralgicznym ele-
mentem, jeśli chodzi o wydajność.
Na rynku rozwiązań hybrydo-
wych prym wiodą takie rozwiązania,
które integrują w sobie kilka techno-
logii naraz – Stateful Inspection, Ap-
plication Gateway oraz Intrusion De-
tection. Dodatkowym elementem ta-
kich rozwiązań staje się często mo-
duł ochrony kryptograficznej trans-
misji danych VPN. Pracę firewal-
li można przyśpieszać programo-
wo poprzez wykonywanie podsta-
wowych algorytmów kontroli ruchu
sieciowego na niskim poziomie jądra
systemu operacyjnego.
Istnieją także sprzętowe sposoby
przyśpieszania, których przykładem
może być układ scalony ASIC (Ap-
plication Specific Integrated Circuit),
pozwalający na uzyskanie przepływ-
ności firewalla na poziomie 12Gb/s.
Podsumowanie
Ciągła rozbudowa i zwiększanie się
stopnia komplikacji systemów infor-
matycznych powoduje, że do ich
ochrony potrzebne są coraz bar-
dziej złożone zabezpieczenia. Fir-
my zajmujące się opracowywaniem
rozwiązań bezpieczeństwa dla sieci
i systemów informatycznych starają
się ciągle doskonalić swoje produk-
ty, aby nadążały one za technikami
wykorzystywanymi przez hakerów.
Wiele rozwiązań staje się popular-
nych, ciesząc się do tego dobrymi
ocenami użytkujących je instytucji,
firm czy administratorów.
Przykładem takiego rozwiązania
jest produkt firmy Checkpoint o na-
zwie IPS-1.
Korzysta on z hybrydowego sil-
nika wykrywania (Hybrid Detection
Engine), który doskonale sprawdza
się w rzeczywistym działaniu. Roz-
wiązanie Checkpointa zostało opar-
te o technologię przejętą od firmy
NFR Security. IPS-1 integruje w so-
bie firewalla, VPN, UTM i wspomnia-
ne rozwiązanie NFR Security.
Niewątpliwą zaletą rozwoju tech-
nologii wykorzystywanych do zabez-
pieczania sieci i systemów informa-
tycznych jest fakt możliwości wybo-
ru takiej, która odpowiada naszym
wymogom, założeniom i potrzebom.
Niestety, równolegle rozwijają się
technologie włamań i ataków, któ-
re są wykorzystywane przez hake-
rów. Nacisk na bezpieczeństwo po-
winien w dzisiejszych czasach być
na tyle duży, aby spowodować im-
plementowanie rozwiązań zapew-
niających nieprzerwaną pracę sys-
temu informatycznego – bez zakłó-
ceń i przerw spowodowanych przez
próby ataku.
Trudno jest wybrać drogę i me-
todologię stosowania rozwiązań
bezpieczeństwa, nie analizując je-
go obecnego stanu w systemie, któ-
ry chcemy lepiej chronić. Dokładne
i dogłębne przyjrzenie się słabym
punktom w naszej sieci, znalezienie
miejsc bardziej narażonych na ata-
ki, wyizolowanie stref mniej i bardziej
bezpiecznych ułatwi dokonanie wy-
boru stosownego rozwiązania. l
O autorze
Grzegorz Błoński z wykształce-
nia jest informatykiem, certyfiko-
wanym specjalistą IBM. Pracuje
w dużej firmie o zasięgu światowym.
Zajmuje się administracją oraz bez-
pieczeństwem sieciowym. Należy
do międzynarodowych organizacji
ISOC oraz ISACA, zajmujących się
szeroko pojętym bezpieczeństwem
IT. Kontakt z autorem: mancymo-
nek@wp.pl
Niekonwencjonalne metody wykrywania włamań
hakin9 Nr 11/2007
www.hakin9.org
57
www.hakin9.org
hakin9 Nr 11/2007
58
Obrona
J
eśli chcesz przesłać poufne informacje, mo-
żesz zakodować plik za pomocą specjali-
stycznego oprogramowania. Jednak od cza-
su do czasu słyszy się o złamaniu jakiegoś algo-
rytmu kodującego. Kiedy ktoś przechwyci zaszy-
frowany plik, może spróbować go rozkodować.
Istnieje kilka sposobów na zmylenie przeciwnika.
Można w tym celu wykorzystać pliki graficzne.
Struktura plików BMP
Plik BMP to zwyczajny plik graficzny. Jego cechą
charakterystyczną jest duży rozmiar, gdyż pliki
BMP nie są kompresowane. Format pliku BMP jest
bardzo prosty: pierwsze 54 bajty pliku to nagłó-
wek (zawierający podstawowe informacje o pli-
ku, np. szerokość i wysokość grafiki w pikselach),
a następne bajty to kody kolorów każdego piksela.
Pewną ciekawostką jest fakt, iż kolory poszcze-
gólnych pikseli są zapisane od dołu do góry, czy-
li pierwsze trzy bajty (w przypadku plików z 24-bi-
tową paletą kolorów) zawierają informacje o pik-
selu położonym w lewym dolnym rogu, natomiast
ostatnie trzy bajty przechowują dane o kolorze
piksela znajdującego się w prawym górnym rogu.
Do wykonania ćwiczenia opisanego w następ-
nym paragrafie wystarczy wiedzieć, że pod offse-
tem 12h (19-ty bajt od początku pliku) zapisano
szerokość obrazu w pikselach (jako liczbę 32-bi-
tową). Natomiast pod offsetem 16h (23-ci bajt od
początku pliku) znajduje się wysokość obrazu
w pikselach.
Algorytm wyświetlenia pliku BMP przez
program graficzny jest bardzo prosty. Najpierw
program musi odczytać informacje o wysokości
i szerokości grafiki. Następnie odczytywane są
kolory poszczególnych pikseli i aplikacja rysuje
je w odpowiednim miejscu na ekranie (od lewej
do prawej i z dołu do góry).
Modyfikacja pliku BMP
Na początku należy utworzyć w dowolnym
programie graficznym (może być nawet Paint)
Ukrywanie tajnych
informacji
Damian Daszkiewicz
stopień trudności
Artykuł omawia dwa ciekawe sposoby na ukrycie tajnych
informacji w plikach graficznych. Jeden sposób polega na
spreparowaniu nagłówka pliku BMP, natomiast drugi na
wygenerowaniu pliku BMP na podstawie zakodowanego pliku.
Z artykułu dowiesz się
• jaka jest budowa pliku BMP,
• jak ukrywać informacje w pliku BMP.
Co powinieneś wiedzieć
• umieć obsługiwać dowolny edytor plików binar-
nych (np. HexWorkshop),
• znać dowolny program graficzny tworzący pliki
BMP.
Ukrywanie tajnych informacji
hakin9 Nr 11/2007
www.hakin9.org
59
plik BMP o rozmiarach np. 192x96
pikseli (najlepiej, aby plik był mono-
chromatyczy czyli 2-kolorowy). Nas-
tępnie w pliku graficznym wprowadź
jakiś napis (np. tajne hasło). Rysu-
nek 1 przedstawia przykładowy plik
BMP.
Następnie otwórz plik w dowol-
nym edytorze plików binarnych (np.
HexWorkshop). Należy zamienić ze
sobą wartości znajdujące się pod
offsetami: 12h i 16h (są to 32-bitowe
liczby zawierające informacje o szero-
kości i wysokości obrazu). Po zapisa-
niu zmian w pliku możesz otworzyć go
w dowolnym programie graficznym.
Od razu widać, że plik przedstawia
losowy zbiór punktów (spójrz na Ry-
sunek 2).
Niestety, nawet po zmianie na-
główka widać, że prześwitują frag-
menty niektórych liter. Można temu
zapobiec – wystarczy utworzyć plik
mający rozmiary np. 200x100 pikseli,
jednak po wykonaniu tego ćwiczenia
większość programów graficznych
poinformuje, że plik jest uszkodzony
(efekt ten nie występuje, gdy szero-
kość i wysokość są liczbami podziel-
nymi przez 32). Jedynie Paint ta-
ki plik bez problemu otworzy. Rysu-
nek 3 przedstawia plik BMP ze zmie-
nionym nagłówkiem o rozdzielczo-
ści 200x100 pikseli (jest to ten sam
plik, co przedstawiony na Rysunku 1,
tylko przed dokonaniem ingerencji
w nagłówku zwiększyłem w progra-
mie graficznym jego wymiary wła-
śnie do 200x100 pikseli).
Generowanie
pliku BMP
Drugi pomysł jest bardzo prosty
– na podstawie istniejącego pliku
o dowolnej zawartości można utwo-
rzyć plik BMP. W tym celu wystar-
czy utworzyć 54-bajtowy nagłówek
pliku BMP, zaraz za nim należy zapi-
sać w postaci liczby 4-bajtowej roz-
miar kodowanego pliku, a następnie
przekopiować do pliku BMP zakodo-
wany zbiór i ewentualnie dopełnić go
zerami. W zależności od rozmiarów
pliku wejściowego, plik BMP mu-
si mieć odpowiednią rozdzielczość
(np. dla pliku o długości 9800 bajtów
plik BMP będzie mieć przykładową
rozdzielczość 100x100 pikseli, w tym
196 bajtów dopełnienia).
Jedną z ważniejszych rzeczy,
o których należy pamiętać, jest odpo-
wiednie wygenerowanie nagłówka pli-
ku BMP:
#
include
<
iostream
>
#
include
<
fstream
>
using namespace std;
//funkcja rozbija liczbę 32-bitową
//na 4 liczby 8-bitowe
void
rozbij32
(
int
S, unsigned
char
&b1,unsigned
char
&b2,
unsigned
char
&b3,unsigned
char
&b4
)
{
int
X;
b1=S
%256
;
b2=S/256;
X=S/65536;
b3=X
%256
;
b4=X/256;
}
int
main
(
int
argc,
char
*argv
[])
{
int
tmp;
char
b;
char
zero=0;
const
int
width=200;
unsigned
long
int
height;
unsigned
long
int
change;
unsigned
long
int
fsize;
unsigned
char
header
[
54
]
=
{
0x42,0x4D,0x96,0xEA,0x00,0x00,
0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,
0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
0x18,0x00
}
;
unsigned
char
fsiz
[
4
]
;
ifstream fileinput
(
argv
[
1
]
,ios::in | ios::binary
)
;
ofstream fileoutput
(
argv
[
2
]
,ios::binary
)
;
//sprawdzenie rozmiaru pliku
fileinput.seekg
(
0 , ios::
end
)
;
fsize = fileinput.tellg
()
;
fileinput.seekg
(
0 , ios::beg
)
;
//obliczenie "wysokości" pliku BMP
height=
(
int
)(((
fsize+4
)
/
(
3*width
))
+1
)
;
//zapisanie w nagłówku pliku BMP
//jego wysokości
header
[
22
]
=height
%256
;
header
[
23
]
=height/256;
//zapisanie w nagłówku szerokości pliku BMP
header
[
18
]
=width
%256
;
header
[
19
]
=width/256;
//zapisanie w nagłówku długość całego pliku w bajtach
rozbij32
(
3*width*height+54,
header
[
2
]
,
header
[
3
]
,
header
[
4
]
,
header
[
5
])
;
//zapisanie w nagłówku rozmiaru całego rysunku
rozbij32
(
3*width*height,
header
[
34
]
,
header
[
35
]
,
header
[
36
]
,
header
[
37
])
;
//obliczenie reszty (ile liczb trzeba dopisać jako
dopełnienie)
change=
(
height*3*width
)
-fsize-4;
//zapisz do pliku BMP nagłówek
for
(
tmp=0; tmp
<
54; tmp++
)
fileoutput
<<
header
[
tmp
]
;
//pierwsze cztery bajty w pliku BMP
//za nagłówkiem
//to rozmiar kodowanego pliku
rozbij32
(
fsize,fsiz
[
0
]
,fsiz
[
1
]
,fsiz
[
2
]
,fsiz
[
3
])
;
for
(
tmp=0; tmp
<
4; tmp++
)
fileoutput
<<
fsiz
[
tmp
]
;
//kopiuj do pliku BMP plik z danymi
while
(
!
(
fileinput.eof
()
)
)
{
b=fileinput.get
()
;
fileoutput
<<
b;
}
//wypełnij resztę pliku zerami
for
(
tmp=0; tmp
<
change; tmp++
)
fileoutput
<<
zero;
fileinput.close
()
;
fileoutput.close
()
;
return
0;
}
Rysunek 1.
Plik BMP zawierający
tajną informację
Listing 1.
Program generujący pliki BMP – kodujbmp.cpp
hakin9 Nr 11/2007
www.hakin9.org
Obrona
60
• pod offsetem 12h należy zapisać
szerokość obrazu w pikselach,
• pod offsetem 16h należy zapisać
wysokość obrazu w pikselach,
• pod offsetem 2h należy zapisać
długość całego pliku w bajtach,
• pod offsetem 22h należy zapisać
rozmiar samego rysunku (jest to
liczba mniejsza o 54 od liczby za-
pisanej pod offsetem 2h; wartość
tę można również obliczyć mno-
żąc ze sobą liczby: szerokość,
wysokość obrazu i ilość bajtów
opisujących jednen piksel).
Listing 1 przedstawia prosty program,
który na podstawie dowolnego pli-
ku generuje plik BMP (nazwy plików:
wejściowego i wyjściowego podaje
się jako parametry). Oto przykłado-
we wywołanie programu:
[kodujbmp.
exe plik.txt plik.bmp]
.
Program jest dość prosty, aby nie
zaciemniać listingu, zrezygnowałem
z dodania obsługi błędów (np. wy-
świetlania komunikatów, że plik wej-
ściowy nie istnieje). W programie na
sztywno założyłem, że szerokość ry-
sunku wynosi 200 pikseli, można to
zmienić edytując linijkę
const int
width=200;
. Rysunek 4. przedstawia
plik BMP wygenerowany z pliku calc.
exe.
Przyglądając się takiemu pliko-
wi BMP dość trudno jest wpaść na
pomysł, że zawiera on w sobie tajne
informacje. Raczej potencjalny na-
pastnik pomyśli sobie, że plik uległ
uszkodzeniu.
Do wyciągnięcia z pliku BMP cen-
nych danych potrzebne jest kolejne
proste narzędzie (patrz Listing 2). Po-
dobnie jak poprzednio, nazwy plików
podaje się jako parametry, np. (deko-
dujbmp.exe calc.bmp calc2.exe).
Program działa na bardzo intui-
cyjnej zasadzie: najpierw odczytuje
54-bajtowy nagłówek pliku BMP
(całkowicie go ignorując), następnie
odczytuje 32-bitową liczbę, która za-
wiera informację o tym jak długi jest
zakodowany plik. Następnie z pliku
BMP dane właściwe są kopiowane do
pliku wyjściowego. Program ten ma
pewną wadę: nie potrafi rozpoznać,
czy dany plik BMP był utworzony przy
pomocy poprzedniego programu, czy
jest to zwyczajny plik BMP. Ten pro-
blem można rozwiązać poprzez do-
dawanie do wygenerowanych plików
BMP jakiejś specjalnej sygnatury, któ-
ra by jednoznacznie informowała, że
nie jest to standardowa bitmapa.
Podsumowanie
Pierwszy sposób jest dość prosty
i świetnie się nadaje do przesyłania
Listing 2.
Program wyciągający zakodowane zbiory z plików BMP
– dekodujbmp.cpp
#
include
<
iostream
>
#
include
<
fstream
>
using namespace std;
int
main
(
int
argc,
char
*argv
[])
{
unsigned
long
int
fsize;
unsigned
long
int
fsize2;
unsigned
char
b1,b2,b3,b4;
int
tmp;
ifstream fileinput
(
argv
[
1
]
,ios::in | ios::binary
)
;
ofstream fileoutput
(
argv
[
2
]
,ios::binary
)
;
//Sprawdź rozmiar pliku BMP
fileinput.seekg
(
0 , ios::
end
)
;
fsize2 = fileinput.tellg
()
;
fileinput.seekg
(
0 , ios::beg
)
;
//odczytaj nagłówek pliku BMP
for
(
tmp=0; tmp
<
54; tmp++
)
b1=fileinput.get
()
;
//odczytaj rozmiar zakodowanego pliku
b1=fileinput.get
()
;
b2=fileinput.get
()
;
b3=fileinput.get
()
;
b4=fileinput.get
()
;
fsize=b4*16777216+b3*65536+b2*256+b1;
//Sprawdź, czy odczytana liczba nie jest większa od rozmiaru pliku BMP
if
(
fsize
>
fsize2
)
{
cerr
<<
"Plik BMP nie zawiera w sobie zakodowanego pliku"
;
return
0;
}
//Kopiuj dane z pliku BMP do pliku wyjściowego
for
(
tmp=0; tmp
<
fsize; tmp++
){
b1=fileinput.get
()
;
fileoutput
<<
b1;
}
fileinput.close
()
;
fileoutput.close
()
;
return
0;
}
Rysunek 2.
Uszkodzony plik BMP
Rysunek 3.
Nieco lepiej uszkodzony
plik
Ukrywanie tajnych informacji
hakin9 Nr 11/2007
www.hakin9.org
61
krótkich komunikatów. Jednak mo-
dyfikując nagłówek pliku BMP nale-
ży uważać. Po modyfikacji pliku ilo-
czyn wysokości i szerokości obra-
zu musi być taki sam, jak przed mo-
dyfikacją pliku. Wyobraź sobie taką
sytuację: istnieje plik BMP o roz-
dzielczości 100x200 pikseli, edytu-
jesz nagłówek tak, aby rozdzielczość
obrazu wynosiła 200x200 pikseli.
Po odczytaniu pewnej porcji danych
program graficzny poinformuje, że
plik jest uszkodzony (gdyż zabrak-
nie informacji o kolorach nieistnie-
jących fizycznie pikseli). Niektóre
programy graficzne nie otworzą ta-
kiego pliku, natomiast inne – braku-
jące miejsce zapełnią czarnymi pik-
selami. Jeśli oryginalny plik ma wy-
miary 200x100 pikseli a Ty zmienisz
wymiary np. na 400x50 pikseli, to
może pojawić się interesujący efekt
– na rysunku pojawią się dwukrot-
nie zapisane hasła, z tym, że będą
mieć one naturalną szerokość, a ich
wysokość będzie o połowę mniej-
sza niż w oryginalnym pliku. Mimo
to bez większych problemów da się
owe hasła odczytać!
Generowanie plików BMP na pod-
stawie zakodowanego pliku jest dość
ciekawym sposobem na zmylenie
przeciwnika. Ta sztuczka nadaje się
do przesyłania większych ilości taj-
nych informacji (mogą to być pliki bi-
narne). Zawiedzie jednak w przypad-
ku przesyłania plików tekstowych,
gdyż wystarczy taki plik BMP otwo-
rzyć w dowolnym edytorze plików bi-
narnych, aby odczytać jego zawar-
tość. Można ten problem wyelimino-
wać poprzez zakodowanie pliku tek-
stowego lub choćby poprzez skom-
presowanie go dowolnym progra-
mem pakującym pliki. l
Rysunek 4.
Plik BMP
wygenerowany na podstawie pliku
calc.exe
O autorze
Damian Daszkiewicz jest samoukiem
od wielu lat interesującym się informa-
tyką i e-biznesem. Obecnie studiuje na
Politechnice Rzeszowskiej na kierun-
ku Informatyka. W roku 2003 wydaw-
nictwo Helion opublikowało jego książ-
kę Vademecum hakera. Edycja plików
binarnych.
Kontakt z autorem:
damian@daszkiewicz.net
W Sieci
• opis struktury pliku BMP: http://pl.
wikipedia.org/wiki/BMP_(format)
R
E
K
L
A
M
A
www.hakin9.org
hakin9 Nr 11/2007
62
Obrona
T
echnologia ta pozwala na tworzenie bo-
gatych, atrakcyjnych wizualnie interfej-
sów użytkownika, które mogą pracować
w dowolnym środowisku – w przeglądarkach in-
ternetowych, na różnych urządzeniach i na róż-
nych systemach operacyjnych (np. Apple Macin-
tosh). Podobnie jak w przypadku WPF (Windows
Presentation Foundation), technologii prezenta-
cyjnej stworzonej wraz z .NET Framework 3.0,
podstawą Silverlight jest język XAML (eXtensible
Application Markup Language). Technologia ta,
pomimo tego, że jest ciągle w fazie rozwojowej
(w chwili obecnej dostępne są dwie wersje
Silverlight – 1.0 RC, czyli kandydat do wersji osta-
tecznej oraz wersja 1.1 alfa), staje się coraz bar-
dziej popularna i wciąż rośnie liczba serwisów
używających jej do celów prezentacji treści. Przy
tej okazji bardzo często padają pytania o bezpie-
czeństwo aplikacji opartych o Silverlight, głównie
ze względu na obsługę wielu platform. Artykuł
ma na celu wprowadzenie i ogólne przedstawie-
nie modelu bezpieczeństwa tej technologii.
Trudne początki, czyli wstęp
do modelu bezpieczeństwa
Jak wiadomo, już od samego początku założe-
niem nowej technologii było stworzenie minimal-
nego silnika do uruchamiania aplikacji opar-
tych o Silverlight, czyli de facto o .NET.
Silverlight zawiera bardzo mocno okrojoną
wersję CLR (Common Language Runtime).
Całość zajmuje ok. 5 MB. Znając podstawy
programowania w .NET Framework oraz obję-
tość wszystkich bibliotek i powiązań, można
się zastanawiać, jak to wszystko działa –
a w szczególności, jak rozwiązane są aspekty
bezpieczeństwa. Przecież każdy programista,
który pisał bezpieczne aplikacje, musiał poz-
nać różnorodne aspekty takich narzędzi, jak
Bezpieczeństwo
Silverlight
Artur Żarski
stopień trudności
Podczas konferencji MIX’07, która odbyła się na początku
maja 2007 roku w Las Vegas, została pokazana nowa technologia
prezentacji zawartości stron WWW. Jest nią Silverlight,
która z założenia ma działać na różnorodnych platformach.
Z artykułu dowiesz się
• nowości w modelu bezpieczeństwa technologii
Silverlight i jego aspektów istotnych dla progra-
misty.
Co powinieneś wiedzieć
• czytelnik powinien mieć wiedzę na temat tworze-
nia bezpiecznych aplikacji na platformie .NET,
• znać pojęcia takie jak CAS, kod przeźroczy-
sty, kod krytyczny oraz podstawowe elemen-
ty przestrzeni nazw System.Security.
Bezpieczeństwo Silverlight
hakin9 Nr 11/2007
www.hakin9.org
63
caspol.exe i specyfikę bezpieczeń-
stwa opartego na uprawnieniach
kodu (CAS – Code Access Security).
Bardzo dobrą informacją dla wszyst-
kich, którzy spędzili długie godziny
na rozgryzaniu działania tego roz-
wiązania oraz wszystkich jego usta-
wień jest to, że dla Silverlight po
prostu przestało ono istnieć. Stan-
dardowy CAS znany z pełnej wersji
.NET został wycofany.
W CoreCLR (tak nazywa się
CLR w Silverlight) nie znajdziemy już
uprawnień, poziomów zabezpieczeń
oraz przejść po stosie zabezpie-
czeń. Przestrzeń nazw System.Se-
curity została bardzo mocno ogra-
niczona. Wnikliwi programiści, któ-
rzy wykonają dekompilację biblioteki
mscorlib.dll, zauważą jednak, że kla-
sa
SecurityPermission
nadal istnie-
je. O co więc chodzi? Jeśli nasza bi-
blioteka zawiera jakiś niesprawdzo-
ny kod, wtedy kompilator wywoła fla-
gę
RequestMinimum
dla właściwości
SkipVerification
.
Model bezpieczeństwa w Co-
reCLR, który musi zastąpić CAS,
może zostać opisany następująco:
• każdy kod użytkownika, który
uruchamiany jest w CoreCLR,
jest zupełnie przeźroczysty,
• kod platformy (charakterystycz-
ny dla danego systemu opera-
cyjnego) może zawierać dwa
rodzaje kodu: przeźroczysty i kry-
tyczny. Jest on odpowiedzialny
za umożliwienie uruchomienia
przeźroczystego kodu w taki
sposób, aby miał on bezpieczny
dostęp do różnych usług syste-
mowych.
Reasumując, oznacza to, że w mo-
delu bezpieczeństwa CoreCLR apli-
kacje Silverlight nie mogą zawierać
kodu, który nie jest zweryfikowany
i mogą wywoływać tylko i wyłącznie
metody API, które są przeźroczyste
lub krytyczne.
Zagłębiamy się
w szczegóły
No dobrze, ale czym właściwie jest
kod przeźroczysty? Jest to taki kod,
który nie może wykonać żadnej ak-
cji skutkującej odwołaniem do sto-
su uprawnień. A dokładniej, prze-
źroczysty kod nie może w żaden
sposób spowodować sprawdzenia
zabezpieczeń, które zakończy się
sukcesem (może natomiast zakoń-
czyć się niepowodzeniem). Przeci-
wieństwem jest kod krytyczny, któ-
rego biblioteki mogą zawierać kom-
binacje kodu krytycznego i przeźro-
czystego. Pojedyncze metody mo-
gą być przeźroczyste lub krytycz-
ne, jednak nie mogą łączyć obu ro-
dzajów kodu.
Ograniczenia dla kodu przeźro-
czystego:
• nie może wykorzystywać atrybu-
tu LinkDemand,
• nie może wywoływać Assert
w CAS,
• nie może zawierać nieweryfiko-
walnego kodu,
• nie może wywoływać natywne-
go kodu przy użyciu P/Invoke lub
COM Interop,
• nie może zapewniać dostępu
do kodu krytycznego lub da-
nych tam, gdzie nie jest to po-
trzebne.
Na początku tekstu mówiliśmy, że
w Silverlight nie ma CAS, więc o co
chodzi w pierwszych dwóch ograni-
czeniach? Przecież bez Code Ac-
cess Security nie można wywołać
Assert, a nawet zwykłego LinkDe-
mand. Póki nie mamy koncepcji żą-
dań w Silverlight, którego mecha-
nizm wywołania nie jest właściwy,
zamiast tego wywołujemy wyjątek
klasy
MethodAccessException
– o ile
kod przeźroczysty próbuje złamać
ustalone zasady. Najbardziej inte-
resujące jest ostatnie ograniczenie.
W przypadku, gdy kod przeźro-
czysty próbuje bezpośrednio wy-
wołać kod krytyczny, to wywołany
będzie wyjątek klasy
MethodAccess-
Exception
. Niemniej jednak więk-
szość z interesujących nas usług
wymaga implementacji jako kod
krytyczny (np. dostęp do systemu
plików). Jeśli mamy do czynienia
z takim właśnie przypadkiem, to jak
Silverlight może uzyskać dostęp do
tego typu usług?
Wspominałem wcześniej o tym,
że dostęp do plików oraz wszelkie
operacje wejścia/wyjścia powinny
być implementowane jako bezpie-
czny kod. Aby mieć możliwość trwa-
łego przechowywania danych, mu-
simy posiadać jakąś warstwę dla ko-
du krytycznego, który będzie mógł
być wywoływany. W Silverlight tą
krytyczną warstwą jest
Isolated-
Storage
. Kiedy aplikacja Silverlight
wywołuje
IsolatedStorage
, wtedy
API sprawdza żądanie, aby mieć
pewność, że aplikacja żąda prawi-
dłowego pliku i że nie jest prze-
kroczony dla niej tzw. przydział
(ang. quote). Jest to analogiczne do
modelu wywołań w systemie ope-
racyjnym (patrz Tabela 1).
Podobnie jak aplikacje urucha-
miane na MacOS i Windows nie
mogą odwoływać się bezpośred-
nio do jądra systemu operacyjnego
bez przejścia przez powłokę wywo-
łań systemowych, tak też aplikacje
Silverlight nie mogą bezpośrednio
wywoływać krytycznego kodu bez
przejścia przez bezpieczną powło-
kę krytyczną. W Silverlight cały kod
jest standardowo przeźroczysty (i to
odróżnia go od CLR w wersji desk-
top, gdzie cały kod z definicji jest
krytyczny).
Tabela 1.
Przykłady zastosowania IsolatedStorage
System operacyjny
CoreCLR
Przykład IsolatedStorage
Kod w trybie użytkownika
Kod przeźroczysty
Aplikacja Silverlight
Wywołanie systemowe
Bezpieczne krytyczne API
System.IO.IsolatedStorage
Kod jądra
Krytyczne API
System.IO.FileStream
hakin9 Nr 11/2007
www.hakin9.org
Obrona
64
Kod platformy może być prze-
źroczysty, krytyczny oraz bezpie-
czny krytyczny (ang. safe critical).
CoreCLR automatycznie wykryje
kod platformy, wiedząc, skąd ła-
dowana jest biblioteka (bibliote-
ki platformy muszą być ładowane
z katalogu, w którym jest zainsta-
lowany Silverlight) oraz poprzez
sprawdzenie klucza publicznego,
którym ta biblioteka została pod-
pisana. Tylko i wyłącznie biblioteki
podpisane specyficznym kluczem,
którym podpisuje je Microsoft, bę-
dą traktowane jako biblioteki plat-
formy.
Jeśli metoda w bibliotece plat-
formy jest opisana atrybutem
Secu
rityCriticalAttribute
, oznacza to,
że zawiera ona kod krytyczny. Kod
przeźroczysty nie może wywołać
żadnej metody kodu krytycznego
– nawet, jeśli jest ona publiczna.
Każda próba złamania tej reguły
spowoduje wywołanie wyjątku
Me-
thodAccessException
.
Listing 1. pokazuje konstruktor
dla klasy FileStream w Silverlight 1.1.
Jest on krytyczny (widać to w linii 5),
ponieważ został opisany atrybutem
SecurityCriticalAttribute.
Podobnie jest z każdą metodą
w klasie Marshal – są one również
krytyczne, dopóki będą opisane atry-
butem
SecurityCriticalAttribute
(li-
nia 4 na Listingu 2).
Każda metoda w bibliotece plat-
formy oznaczona atrybutem
Securi
tySafeCriticalAttribute
jest oczy-
wiście bezpieczna krytyczna (safe
critical). Kod aplikacji może wywoły-
wać te metody, dopóki kod przeźro-
czysty może wywoływać bezpiecz-
ny kod krytyczny. Przykładem kry-
tycznego API jest metoda Isolated-
StorageFileStream.Write (linia 6 na
Listingu 3).
Ciekawostką jest fakt, że atrybut
SecuritySafeCriticalAttribute
jest
w rzeczywistości połączeniem dwóch
atrybutów z pełnej wersji .NET:
Secur
ityCriticalAttribute
oraz
SecurityT
reatAsSafeAttribute
.
Potrzeba jawnego określania
metod atrybutami SecurityCritical
oraz
SecurityTreatAsSafe
stała się
powszechna, dlatego też stworzo-
no atrybut
SecuritySafeCritical
.
Dzięki stosowaniu tego atrybutu
skracamy czas pisania aplikacji,
a dodatkowo zmniejszamy wielkość
metadanych. Jeśli metoda nie po-
siada ani atrybutu
SecurityCritical
,
ani atrybutu
SecuritySafeCritical
,
wtedy musi być ona przeźroczy-
sta. Jeśli metoda jest widoczna dla
kodu aplikacji, oznacza to, że apli-
kacja ma możliwość wywołania
jej – ponieważ przeźroczysty kod
ma zawsze możliwość wywołania
innego transparentnego kodu.
Dokładnie tak samo jest w sy-
tuacji, w której aplikacja Silverlight
chciałaby być sprytna i opisać się
jednym z atrybutów
SecurityCritical
lub
SecuritySafeCritical
. W tym mo-
mencie nie wydarzy się nic, ponie-
waż CLR wie, że kod aplikacji musi
być przeźroczysty.
Bardzo ważnym jest fakt, że re-
guły te nie zastępują standardowych
reguł dostępu (Public, Private, Inter-
nal), ale je dopełniają. Dlatego też
kod aplikacji nie może wywoływać
wewnętrznych metod w bibliotekach
systemowych – nawet, jeśli są one
przeźroczyste.
Tabela 2. pokazuje wszystkie te
zależności.
Dziedziczenie
Na koniec jeszcze kilka słów na te-
mat dziedziczenia w Silverlight. Na
początek określmy jednak logicz-
ny porządek pomiędzy poziomami
transparentności:
•
przeźroczysty (aplikacja i platfor-
ma),
Listing 1.
Przykład konstruktora dla klasy FileStream
1
.
method
public
hidebysig
specialname
rtspecialname
2
instance
void
.
ctor
(
string
path
,
3
valuetype
System
.
IO
.
FileMode
mode
)
cil
managed
4
{
5
.
custom
instance
void
System
.
Security
.
SecurityCriticalAttribute
::
.
ctor
()
=
(
01
00
00
00
)
6
7
// ...
8
}
Listing 2.
Przykład metody w klasie Marshal
1
.
class
public
abstract
auto
ansi
sealed
beforefieldinit
System
.
Runtime
.
Inte
ropServices
.
Marshal
2
extends
System
.
Object
3
{
4
.
custom
instance
void
System
.
Security
.
SecurityCriticalAttribute
::
.
ctor
()
=
(
01
00
00
00
)
5
6
// ...
7
}
//
end
of
class
System
.
Runtime
.
InteropServices
.
Marshal
Listing 3.
Metoda IsolatedStorageFileStream.Write.
1
.
method
public
hidebysig
virtual
instance
void
2
Write
(
uint8
[]
buffer
,
3
int32
offset
,
4
int32
count
)
cil
managed
5
{
6
.
custom
instance
void
System
.
Security
.
SecuritySafeCriticalAttribute
::
.
ctor
()
=
(
01
00
00
00
)
7
8
// ...
9
}
Bezpieczeństwo Silverlight
hakin9 Nr 11/2007
www.hakin9.org
65
•
bezpieczny krytyczny (tylko plat-
forma),
•
krytyczny (tylko platforma).
Ale jak się to ma do dziedziczenia?
Otóż kolejność ta jest bardzo istot-
na, kiedy chcemy określić czy da-
na klasa może pochodzić z kla-
sy rodzica. Każda klasa może po-
chodzić z innej, ale tylko i wyłącz-
nie z takiej, która jest na takim sa-
mym lub wyższym poziomie hierar-
chii. Nie może ona nigdy pocho-
dzić z niższej klasy bazowej w hie-
rarchii. Oznacza to, że klasy kry-
tyczne mogą pochodzić z innych
dowolnego typu, podczas gdy kla-
sy transparentne mogą pochodzić
tylko i wyłącznie z innych transpa-
rentnych.
Kolejną istotną kwestią jest moż-
liwość przeciążania metod wirtu-
alnych podczas dziedziczenia. Kie-
dy chcemy przeciążać metody, war-
to je wcześniej pogrupować we-
dług różnych poziomów bezpieczeń-
stwa:
•
przeźroczysty oraz bezpieczny
krytyczny kod,
•
kod krytyczny.
Po pogrupowaniu metod w taki wła-
śnie sposób zauważyć można, że
kod przeźroczysty ma dostęp do
wszystkiego, podczas gdy kod kry-
tyczny ma dostęp do grupy z pozio-
mu drugiego. Te same reguły sto-
suje się podczas implementacji in-
terfejsów. Wszystkie te reguły dzie-
dziczenia można opisać za pomo-
cą następujących zasad:
•
typy mogą pochodzić tylko z ty-
pów bazowych, które są przeźro-
czyste,
•
tylko przeźroczyste lub bezpiecz-
ne krytyczne metody mogą być
nadpisywane,
•
tylko transparentne lub krytycz-
ne-bezpieczne metody interfej-
su mogą być implementowane.
Podsumowanie
Jak widać, model bezpieczeństwa
Silverlight znacznie odbiega od tego,
który znamy z pełnej wersji .NET Fra-
mework. Został on znacznie uprosz-
czony, dzięki czemu jest łatwiejszy
w implementacji. Ważne jest, aby pro-
gramista zwracał uwagę na wszyst-
kie wymienione kwestie. l
Tabela 2.
Zależności przy stosowaniu różnych atrybutów i możliwość
wywoływania metod
Atrybut
bezpieczeństwa
Rodzaj
Możliwość
wywołania
przez kod
aplikacji
(jeśli metoda
jest widoczna)
Kod aplikacji
-
Przeźroczysty
Tak
Platforma
None
Przeźroczysty
Tak
Platforma
SecuritySafe
Critical
Bezpieczny
krytyczny
Tak
Platforma
SecurityCritical
Krytyczny
Nie
O autorze
Autor jest pracownikiem firmy Microsoft. Na co dzień zajmuje się m. in. tworze-
niem rozwiązań w oparciu o SQL Server w różnych aspektach – bazy relacyjne,
usługi integracyjne, usługi analityczne. Jest certyfikowanym administratorem baz
danych (MCDBA). W wolnych chwilach pasjonat fotografii.
Kontakt z autorem: arturz@microsoft.com
www.hakin9.org
hakin9 Nr 11/2007
66
Obrona
E
kstranet to wydzielona część sieci lo-
kalnej, udostępniona na zewnątrz, która
najczęściej zawiera stronę WWW danej
firmy, serwer DNS bądź zapewnia dostęp do
usług poczty e-mail dla klientów zewnętrznych
lub inne usługi udostępniane firmom współpra-
cującym czy też kontrahentom.
Ekstranety najczęściej są stosowane w celu
połączenia ze sobą dwóch lub więcej firm czy or-
ganizacji po to, by ich pracownicy mieli dostęp do
kluczowych informacji oraz aplikacji – w taki spo-
sób, aby zminimalizować utrudnienia i czas do-
stępu do danych. W istotny sposób zwiększa to
efektywność szeregu procesów, jakie zachodzą
w pracy firm czy organizacji. Ekstranet ma wiele
zalet, do których można zaliczyć między innymi:
• łatwiejsze zarządzanie danymi,
• automatyzacja wielu procesów,
• skrócenie łańcucha pośredników,
• spadek kosztów prowadzenia działalności,
• zapewnienie ciągłego dostępu do bazy da-
nych kooperantom firmy,
• szybszy dostęp do informacji na temat firmy
i jej kondycji,
• efektywniejsza komunikacja,
• możliwość płatności elektronicznych.
Lista zalet jest jak widać długa i zapewne zna-
lazłyby się jeszcze inne zalety natomiast chcąc
powiedzieć słów kilka na temat wad takiego
rozwiązania można powiedzieć że wadą stoso-
wania ekstranetu w sieci firmowej są koszty.
Niestety nie da się stworzyć bezpiecznego,
sprawnie działającego ekstranetu z szybkim
dostępem do danych, z autoryzacją przy pomo-
cy tokenów czy kart chipowych z bez ponosze-
nia nakładów finansowych.
Jednak jak pokazuje rzeczywistość wie-
le firm chcąc zapewnić swoim danym mak-
symalny stopień ochrony a swoim kontrahen-
Bezpieczny ekstranet
– strefy DMZ
Grzegorz Błoński
stopień trudności
Przy podziale sieci komputerowych często używa się sformułowań
intranetu, ekstranetu, które opisują specyficzne segmenty sieci.
Intranetem określa się wewnętrzną część sieci firmy, która nie jest
widoczna dla osób spoza firm, na przykład z poziomu Internetu.
Można wydzielić część intranetu i udostępnić ją w sposób
bezpieczny poprzez ekstranet.
Z artykułu dowiesz się
• co to jest ekstranet,
• co to jest strefa DMZ i po co się ją stosuje,
• jakie są rodzaje stref DMZ.
Co powinieneś wiedzieć
• znać budowę sieci i funkcje poszczególnych jej
elementów,
• znać podstawy iptables.
Bezpieczny ekstranet – strefy DMZ
hakin9 Nr 11/2007
www.hakin9.org
67
tom, przedstawicielom i innym zdal-
nym pracownikom komfort pracy
decyduje się na używanie bezpiecz-
nego ekstranetu. Kolejną wadą może
być większa ilość elementów w sie-
ci do kontrolowania i monitorowania
przez służby informatyczne choć w
większości przypadków administra-
torzy i specjaliści dbający o bezpie-
czeństwo sieci nie odczuwają zbyt-
niego wzrostu pracy którą muszą
włożyć w monitorowanie pracy eks-
tranetu.
Ryzyko
w ekstranecie
Ekstranet udostępnia określoną ilość
zasobów, przez co naraża w jakiś
sposób część sieci firmy na przeróż-
ne próby ataków, przeprowadzanych
w celu zdobycia cennych danych czy
też zakłócenia stabilności poszcze-
gólnych usług czy serwerów. Poniżej
wymieniłem trzy ważne wskazówki
pozwalające zadbać o właściwe za-
bezpieczenie ekstranetu:
• izolacja – należy zadbać o izolo-
wanie od siebie poszczególnych
części sieci: ekstranetu, intrane-
tu oraz Internetu poprzez właści-
wą konfigurację firewalli,
• silne uwierzytelnianie – kolejny
bardzo ważny element bezpiecz-
nego ekstranetu. Wszelkiego ro-
dzaju karty identyfikacyjne i to-
keny pozwalają na zachowanie
bezpieczeństwa połączeń do na-
szego ekstranetu,
• szyfrowanie – klienci powinni łą-
czyć się przy wykorzystaniu bez-
piecznych połączeń VPN SSL.
W celu zminimalizowania możliwości
ataków stosuje się różne techniki za-
bezpieczania wydzielonej części sie-
ci. Firewall jest standardowym i naj-
częściej stosowanym mechanizmem
zabezpieczania dostępu do zaso-
bów sieciowych. Zastosowanie ta-
kiego rozwiązania w przypadku eks-
tranetu, który jest częścią sieci intra-
netowej firmy, niesie niestety za so-
bą pewne ryzyko, gdyż złamanie za-
bezpieczeń (w tym przypadku kom-
promitacja firewalla) i uzyskanie do-
stępu do którejkolwiek maszyny, ser-
wera czy też stacji roboczej daje in-
truzowi nieograniczony dostęp do
praktycznie całej sieci.
Na Rysunku 1 widać, że zasoby
ekstranetu, czyli serwery i usługi na
nich udostępnione, nie są w żaden
sposób wydzielone – są po pro-
stu częścią intranetu, dlatego ta-
kie rozwiązanie nie zapewnia bez-
pieczeństwa całej sieci. Kiedy wła-
mywacz przedostanie się przez za-
bezpieczenia firewalla i uzyska nie-
autoryzowany dostęp do serwera,
i jeśli tylko uda mu się pozyskać do-
statecznie dużo informacji o struk-
turze sieci oraz o kontach użytkow-
ników, to już nic nie będzie w stanie
przeszkodzić mu w eksplorowaniu
sieci oraz odczytywaniu informacji,
do których nie powinien mieć do-
stępu.
W celu lepszego zabezpiecze-
nia sieci ekstranet stosuje się stre-
fy DMZ (DeMilitarized Zone) – strefy
zdemilitaryzowane, które często są
nazywane sieciami granicznymi czy
też brzegowymi lub sieciami ekra-
nującymi.
Stosowanie takich rozwiązań za-
pewnia większe bezpieczeństwo chro-
nionej części sieci, zatem uzyskanie
dostępu przez intruza do zasobów
w strefie DMZ nie jest groźne dla cen-
nych danych znajdujących się w czę-
ści intranetowej.
Jednym ze sposobów wydziela-
nia strefy DMZ jest stosowanie tak
zwanego stakowania firewalli (cza-
sami można też spotkać się z okre-
śleniem dual-firewall). Stakowanie,
czyli ustawianie firewalli w stos – po-
dobnie jak to się robi z koncentra-
torami w sieciach LAN – pozwala
na bardzo eleganckie wydzielenie
strefy DMZ. Na Rysunku 2 widać
takie rozwiązanie przy wykorzysta-
niu dwóch firewalli, gdzie strefa DMZ
znajduje się dokładnie pomiędzy
nimi.
Tego typu rozwiązania zwane
czasami mid-ground DMZ są dość
popularne, lecz okupione kosztami
związanymi z posiadaniem drugie-
Rysunek 1.
Zabezpieczanie intranetu przy pomocy firewalla
Rysunek 2.
Strefa DMZ pomiędzy dwoma firewallami
hakin9 Nr 11/2007
www.hakin9.org
Obrona
68
go firewalla. Jeden z firewalli chro-
ni strefę DMZ przed atakami z In-
ternetu, drugi natomiast chroni sieć
intranet w przypadku skuteczne-
go przełamania zabezpieczeń na
pierwszym firewallu. Rozwiązanie
takie pozwala na podwyższenie
poziomu bezpieczeństwa, ponie-
waż przełamanie zapory chroniącej
dostępu do strefy DMZ nie pozwa-
la jeszcze na przejście do strefy
intranetu.
Strefa DMZ jest częścią sieci
intranet, ale jednocześnie także czę-
ścią sieci Internet – z powodu umoż-
liwienia dostępu z zewnątrz do jej
zasobów. Ruch w strefie DMZ od-
bywa się najczęściej poprzez wirtu-
alne sieci prywatne (VPN – Virtual
Private Network), co polepsza bez-
pieczeństwo.
Kolejnym z rozwiązań zapew-
niających wysoki poziom bezpie-
czeństwa jest trójostrzowy firewall
(Three-pronged firewall), w któ-
rym firewall obsługuje trzy inter-
fejsy sieciowe chroniące kolejno:
strefę DMZ, intranet oraz Internet.
Rysunek 3 przedstawia przykład
takiego rozwiązania. Jest to tak
naprawdę najtańsza alternatywa,
ponieważ wykorzystuje tylko jeden
firewall.
Przykładem gotowego rozwiąza-
nia wykorzystującego technikę trójo-
strzową jest urządzenie o nazwie PIX
produkowane przez firmę Cisco, które
jest specjalizowanym firewallem, uży-
wanym przez bardzo wiele firm oraz
instytucji na całym świecie. W przy
padku sprzętowego firewalla PIX ma-
my zdefiniowany domyślnie podział
na poziomy bezpieczeństwa :
• poziom bezpieczeństwa 100 – naj-
wyższy możliwy poziom bezpie-
czeństwa, używany domyślnie
przez interfejs wewnętrzny,
• poziom bezpieczeństwa 0 – naj-
niższy możliwy poziom bezpie-
czeństwa, domyślnie używany
przez interfejs zewnętrzny. Ruch
sieciowy może płynąć z tego in-
terfejsu do innych interfejsów tyl-
ko jeśli ręcznie skonfigurujemy
taki przepływ,
• poziomy bezpieczeństwa 1–99
mogą być zdefiniowane na każ-
dym innym interfejsie firewalla
PIX. W trójostrzowym firewal-
lu PIX wewnętrzny interfejs ma
typowo przypisany poziom 100,
zewnętrzny 0, a trzeci interfejs
– 50.
Do konfiguracji stref DMZ wyko-
rzystać można także linuksowe ip-
tables – Listing 1 prezentuje odpo-
wiedni przykład. Jest to tylko frag-
ment skryptu zawierający podstawo-
we reguły dotyczące ruchu w strefie
DMZ. W Internecie można znaleźć
wiele innych przykładów z dokład-
nymi opisami konfiguracji stref DMZ
przy pomocy iptables.
Jak widać na Listingu 1, ruch z In-
ternetu do serwerów w strefie DMZ
jest akceptowany tylko na tych por-
tach, na których pracują udostępniane
usługi. Taka konfiguracja zapewnia
nam odrzucanie potencjalnych prób
połączeń do maszyn w strefie DMZ
na innych niż przez nas zdefiniowane
portach, co ma pozytywny wpływ nie
tylko na bezpieczeństwo, ale także na
skuteczne zmniejszenie wolumenu nie-
potrzebnego ruchu w sieci. W tym
Listing 1.
Skrypt iptables zawierający reguły ruchu w strefie DMZ
# Sekcja DMZ
#
# Reguły podstawowe
#
$IPTABLES
-A FORWARD -i
$DMZ_IFACE
-o
$INET_IFACE
-j ACCEPT
$IPTABLES
-A FORWARD -i
$INET_IFACE
-o
$DMZ_IFACE
-m state \
--state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES
-A FORWARD -i
$LAN_IFACE
-o
$DMZ_IFACE
-j ACCEPT
$IPTABLES
-A FORWARD -i
$DMZ_IFACE
-o
$LAN_IFACE
-m state \
--state ESTABLISHED,RELATED -j ACCEPT
#
# Serwer HTTP
#
$IPTABLES
-A FORWARD -p TCP -i
$INET_IFACE
-o
$DMZ_IFACE
-d
$DMZ_HTTP_IP
\
--dport 80 -j allowed
$IPTABLES
-A FORWARD -p ICMP -i
$INET_IFACE
-o
$DMZ_IFACE
-d
$DMZ_HTTP_IP
\
-j icmp_packets
#
# Serwer DNS
#
$IPTABLES
-A FORWARD -p TCP -i
$INET_IFACE
-o
$DMZ_IFACE
-d
$DMZ_DNS_IP
\
--dport 53 -j allowed
$IPTABLES
-A FORWARD -p UDP -i
$INET_IFACE
-o
$DMZ_IFACE
-d
$DMZ_DNS_IP
\
--dport 53 -j ACCEPT
$IPTABLES
-A FORWARD -p ICMP -i
$INET_IFACE
-o
$DMZ_IFACE
-d
$DMZ_DNS_IP
\
-j icmp_packets
Rysunek 3.
Trójostrzowy firewall chroni DMZ oraz intranet
Bezpieczny ekstranet – strefy DMZ
hakin9 Nr 11/2007
www.hakin9.org
69
miejscu chciałbym wspomnieć o roz-
wiązaniach hybrydowych które sto-
sowane są także przy budowie stref
DMZ. Bardzo często okazuje się że po-
łączenie kilku dobrych rozwiązań poz-
wala na zbudowanie bardziej skompli-
kowanej strefy DMZ w sytuacjach gdy
właśnie taka jest potrzeba.
Załóżmy że nasza firma współ-
pracuje z dwoma innymi i musi
część zasobów udostępnić jednej
i drugiej lecz każda z tych firm po-
winna mieć dostęp do innego ro-
dzaju zasobów które dodatkowo
znajdują się na różnych serwerach
w naszej firmie. Możemy więc utwo-
rzyć dwie oddzielne strefy DMZ
i tak pokierować ruchem na firewal-
lu znajdującym się po stronie inter-
netu aby połączenia z jednej firmy
były kierowane do strefy DMZ_1
a połączenia z drugiej firmy do strefy
DMZ_2. Warto zauważyć że w przy-
padku tego typu schematu stref DMZ
zakładając że poszczególne firewal-
le są dobrze skonfigurowane intra-
net naszej firmy jest bardzo dobrze
odseparowany od internetu przez co
ryzyko ataku na intranet jest bardzo
mocno obniżone.
Bardzo ciekawym projektem
pozwalającym na zabezpieczenie
sieci ekstranet jest SEVA (Sécu-
risation d'Extranet Virtuel en utili-
sant des Agents intelligents), fra-
mework, za pomocą którego moż-
na szybko i sprawnie skonfiguro-
wać i uruchomić bezpieczny eks-
tranet. Autorami projektu są Pierre
Vannel oraz Yves Roudier, francu-
scy specjaliści zajmujący się bez-
pieczeństwem w sieci, a sam pro-
jekt jest wspierany między innymi
przez francuskie Ministerstwo Fi-
nansów.
W celu zabezpieczania dostępu
do zasobów ekstranetu stosuje się
oprócz firewalli także inne rozwiąza-
nia, na przykład karty chipowe i to-
keny. Takie właśnie rozwiązania są
składnikami projektu SEVA, wspo-
magając między innymi dynamicz-
ną aktualizację informacji o ruchu
w sieci oraz weryfikując globalne
aspekty polityki bezpieczeństwa.
Dla przykładu, dostęp do zasobów
jest dynamicznie konfigurowany na
hakin9 Nr 11/2007
www.hakin9.org
Obrona
70
firewallu bez udziału człowieka.
Prawa dostępu mogą być automaty-
cznie aktualizowane dla każdego
użytkownika dzięki wykorzystywa-
nym smart-agentom. Użytkownicy
są bardzo dokładnie identyfikowa-
ni dzięki wykorzystaniu kart chipo-
wych oraz tokenów. Każdy użyt-
kownik ma dostęp do zasobów tyl-
ko wtedy, kiedy umieści w czytniku
swojej stacji roboczej kartę chipo-
wą albo token.
Po dokładniejsze informacje na
temat tego rozwiązania odsyłam na
stronę http://www.eurecom.fr/index.
en.htm.
Pisząc o strefach DMZ, bezpie-
cznym ekstranecie i firewallach PIX,
nie można nie wspomnieć o rozwią-
zaniu o nazwie Connectra, które
jest dziełem firmy Checkpoint – lide-
ra w dziedzinie rozwiązań bezpie-
czeństwa sieciowego. Connectra
wyposażona jest między innymi
w funkcję o nazwie One-Click SSL
Extranet, która dostarcza znacz-
nie prostszej struktury i możliwości
pozwalających na bezpieczny zdal-
ny dostęp współpracującym firmom
czy organizacjom. Użytkownicy eks-
tranetu mają dostęp poprzez sieć
Web do współdzielonych zasobów
firmy. Poprzez połączenie dostę-
pu do aplikacji, serwerów i innych
zasobów Connectra automatycznie
buduje unikatowy portal Web dla
określonych grup użytkowników eks-
tranetu. Connectra jest dużo prost-
szym rozwiązaniem niż konfiguro-
wanie pojedynczych serwerów dla
zdalnego dostępu czy budowanie
stref DMZ.
Podsumowanie
Sieci korporacyjne są podatne na
zagrożenia stwarzane przez nie-
upoważniony personel, a także tele-
pracowników. Administratorzy i spe-
cjaliści od ochrony sieci w wielu fir-
mach borykają się z takimi proble-
mami na co dzień. Każda sieć kor-
poracyjna jest w jakiś sposób po-
łączona z inną siecią – najczęściej
z Internetem, z którego pochodzi
wiele zagrożeń (na przykład ataki
Denial of Service mogą sparaliżo-
wać działanie krytycznych aplikacji
biznesowych firmy, a hakerzy przej-
mujący kontrolę nad serwerami fir-
my mogą dopuszczać się na nich
sabotażu). Dzisiejsze sieci w różnych
przedsiębiorstwach rozciągają się
niejednokrotnie na cały świat, obsłu-
gując nie tylko pracowników firmy,
ale także partnerów biznesowych,
klientów, dostawców i konsultan-
tów. Niezmiennie jednak największe
zagrożenie atakami zawsze pocho-
dzi z wewnątrz firmy, a więc poten-
cjalnym atakującym może okazać
się niedoceniony, sfrustrowany pra-
cownik.
W świetle informacji zawartych
w niniejszym artykule warto zastano-
wić się przy definiowaniu stref DMZ
lub konfigurowaniu firewalli nad tym,
czy ochrona przed atakami pocho-
dzącymi z Internetu to wystarczający
element dbałości o bezpieczeństwo
w sieci firmy bądź organizacji. 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 bezpie-
czeństwem sieciowym. Należy do międzynarodowych organizacji ISOC oraz ISACA,
zajmujących się szeroko pojętym bezpieczeństwem IT.
Kontakt z autorem: mancymonek@wp.pl
Rysunek 4.
Poziomy bezpieczeństwa interfejsów firewalla PIX
Rysunek 5.
Hybrydowy układ dwóch stref DMZ
Bezpieczny ekstranet – strefy DMZ
hakin9 Nr 11/2007
www.hakin9.org
71
hakin9 Nr 11/2007
www.hakin9.org
72
Księgozbiór
Księgozbiór
hakin9 Nr 11/2007
www.hakin9.org
73
Tytuł: Hakerskie łamigłówki
Autor: Ivan Sklyarov
Wydawca: Helion
Rok wydania w Polsce: 2006
Liczba stron: 280
Hakerskie łamigłówki to debiut Ivana Sklyarova. I to,
moim zdaniem, bardzo udany debiut. Sam autor przy-
znaje, że pisząc tę książkę chciał stworzyć lekturę inte-
resującą i różną od innych pozycji o podobnej tema-
tyce. W moim odczuciu ambitny cel został osiągnię-
ty. Książka składa się z dwóch części. Pierwszej – ze
sporą ilością łamigłówek oraz drugiej – z rozwiązania-
mi tychże zagadek. Łamigłówki zawarte w części pierw-
szej ułożone są w 6 wiązek tematycznych dotyczących
kryptoanalizy, sieci, systemu Windows, kodowania,
bezpiecznego programowania oraz techniki inżynierii
wstecznej. Jednak oprócz podstawowej wiedzy z pre-
zentowanego zakresu tematycznego, pozycja ta wyma-
ga od czytelnika dużego zaangażowania i samodyscy-
pliny, które będą niezbędne podczas rozwiązywania
zagadek.
Większość z nas musi zadowolić się rozwiązywaniem
zagadek ułożonych dla rozrywki: powieściami kryminal-
nymi i krzyżówkami. Odczytywaniem tajemniczych szy-
frów pasjonują się nieliczne jednostki.
Przyznam, że książka ta nie należy do łatwych,
lecz pomimo tego trudno się od niej oderwać. Język,
w jakim została napisana, jak również fakt bardzo prak-
tycznego i profesjonalnego podejścia autora do prezen-
towanych problemów sprawiają, że czytelnik sięgnie
po nią chętnie i w mojej opinii, z pewnością się nie za-
wiedzie.
Podsumowując: Hakerskie łamigłówki, zainteresują
tych, którzy chcą zgłębiać temat szeroko rozumianego
bezpieczeństwa sieci, aplikacji, danych i mają w tej dzie-
dzinie solidne podstawy, zaś rozwiązywanie logicznych
zagadek traktują jako wyzwanie, w celu sprawdzenia
swojej wiedzy.
Tomasz Przybylski
Wydana przez PWN książka PKI Podstawy i zasady dzia-
łania. Koncepcje, standardy i wdrażanie infrastruktu-
ry kluczy publicznych to kolejna publikacja z wyda-
wanej od niedawna serii (Nie)bezpieczeństwo. Jest
ona przeznaczona dla osób odpowiedzialnych za bez-
pieczeństwo informatyczne oraz wdrażanie infrastruk-
tury klucza publicznego (Public Key Infrastructure
– PKI) w firmie. Omawia zastosowanie szyfrowania
z użyciem klucza asymetrycznego (czyli pary klucz
publiczny/klucz prywatny) do tworzenia PKI. Autorzy
w kolejnych rozdziałach opisują historię kryptografii
klucza publicznego, koncepcję infrastruktury, podsta-
wowe usługi PKI (takie jak uwierzytelnianie, integral-
Tytuł: PKI. Podstawy i zasady działania. Koncepcje, standardy
i wdrażanie infrastruktury kluczy publicznych.
Autor: Carlisle Adams, Steve Lloyd
Wydawca: Wydawnictwo Naukowe PWN
Rok wydania w Polsce: 2007
Liczba stron: 360
ność i poufność), dodatkowe usługi zapewniane przez
PKI (bezpieczna komunikacja, znacznik czasu, elektro-
niczny notariat, niezaprzeczalność, zarządzanie upraw-
nieniami, prywatność), certyfikaty i certyfikacje, stan-
dardy związane z PKI oraz kwestie związane z wdraża-
niem PKI.
Infrastruktura klucza publicznego jest bardzo istotna
w nowoczesnym, zinformatyzowanym świecie, ponie-
waż oprócz uwierzytelniania użytkowników w dużej
sieci firmowej pozwala na skuteczne oferowanie usług
finansowych, bezpieczny handel internetowy oraz ofe-
ruje ogólnodostępny podpis cyfrowy. W naszym kraju
wszystkie z powyższych usług, poza podpisem elektro-
hakin9 Nr 11/2007
www.hakin9.org
72
Księgozbiór
Księgozbiór
hakin9 Nr 11/2007
www.hakin9.org
73
Tytuł: Hakerskie łamigłówki
Autor: Ivan Sklyarov
Wydawca: Helion
Rok wydania w Polsce: 2006
Liczba stron: 280
nicznym, są już dość powszechnie stosowane. Wpro-
wadzenie podpisu elektronicznego w Polsce napotyka
ogromne trudności i termin jego wdrożenia jest ciągle
przesuwany w bliżej nieokreśloną przyszłość. Książka
opisuje zasady działania oraz wdrażania infrastruktury
klucza publicznego i można mieć nadzieję, że jej wyda-
nie pozwoli na oswojenie się z podpisem elektronicz-
nym i pomoże przyspieszyć jego powszechne wprowa-
dzenie.
Książka robi dobre wrażenie już na pierwszy rzut
oka. Szczegółowy spis treści, interesujące, ale jedno-
cześnie oszczędnie dawkowane przypisy – widać solid-
nie i starannie przygotowane wydanie. Jest napisana w
dość przystępny i interesujący sposób, co nie jest proste,
ponieważ tematyka niektórych rozdziałów – delikat-
nie mówiąc – nie należy do szczególnie porywających.
Także tłumaczeniu i ogólnemu poziomowi technicznemu
nie można nic zarzucić. Nie napotkałem literówek, dziw-
nych sformułowań i innych niedogodności, które zdarza-
ją się w wydawanych naprędce książkach innych wydaw-
nictw informatycznych. Dobrym pomysłem jest także
zebranie na końcu książki odnośników do źródłowych
stron internetowych. Zwiększa to i tak znakomitą czytel-
ność książki.
Główny mankament, który od razu rzuca się w oczy, to
opóźnienie polskiego wydania w stosunku do oryginału aż o
4 lata – dlatego też stwierdzenie na ostatniej stronie okład-
ki mówiące o prezentacji najnowszych rozwiązań w dziedzi-
nie PKI jest chyba nieco przesadzone. Cztery lata to w infor-
matyce sporo czasu i w kryptografii poczyniono przecież
w tym czasie pewne postępy. Z drugiej jednak strony, książ-
ka nie opisuje konkretnych rozwiązań określonych firm, ale
raczej ogólne zasady oraz standardy, które nie zmieniają się
tak szybko. Książka ta z założenia jest zbiorem zasad, jakimi
rządzi się PKI oraz możliwych metod jej implementacji przy
pomocy różnych protokołów. Wydawnictwo PWN kolejny raz
udowodniło, że jest solidnym wydawcą.
Plusy:
• Solidne wydanie bez literówek, nieudolnego tłuma-
czenia i innych błędów spotykanych przy pospiesz-
nym i oszczędnym wydawaniu książek.
• Konkretny i rzeczowy opis cech, funkcji i zastosowań
PKI.
Minusy:
• Opóźnienie w stosunku do oryginału o 4 lata
Przemysław Prytek
R
E
K
L
A
M
A
Serdeczne podziękowania dla wydawnictwa Helion
i PWN, za udostępnienie książek do recenzji.
www.hakin9.org
hakin9 Nr 11/2007
74
Wywiad
hakin9:
Proszę przybliżyć swoją osobę Czytel-
nikom. Czym się Pan zajmuje?
Sebastian Małycha:
Swoją karierę za-
wodową rozpocząłem 10 lat temu – związa-
na jest głównie z pracą w dziale handlowym
– tam zaczynałem, ten dział jest też moim
ulubionym, ponieważ nie funkcjonuje w ode-
rwaniu od innych ludzi. A ja uwielbiam słu-
chać ludzi i do nich mówić. Od prawie 3 lat
pracuję w Mediarecovery – początkowo ja-
ko dyrektor handlowy, obecnie jako prezes
zarządu. Praca sprawia mi bardzo dużo ra-
dości, ta branża jest dla mnie niezwykle in-
teresująca. Informatyka śledcza jest bardzo
szybko rozwijającą się dziedziną. Odnajduję
się w niej w 100%!
h9:
Czym głównie zajmuje się firma Media-
recovery? Jakie są jej najważniejsze zadania?
SM:
Wyróżniłbym dwa obszary działań fir-
my Mediarecovery. Przede wszystkim jest to
największa w Polsce firma zajmująca się usłu-
gową informatyką śledczą – głównie na potrze-
by organów ścigania: policji, prokuratury i in-
nych służb. To około 90% naszej działalności w
tym obszarze. Pozostałe 10% to usługi dla firm
komercyjnych lub indywidualnych odbiorców
– np. rozwodzących się małżeństw, czy też po-
szukiwanie osób za pomocą informacji dostęp-
nych w formie elektronicznej.
Drugi zakres działania firmy to projekto-
wanie i budowa kompletnych platform bezpie-
czeństwa informacji, ściśle na potrzeby ryn-
ku komercyjnego – głównie w sektorach ta-
kich jak bankowość, finanse, telekomunika-
cja. Są to wysoko specjalizowane platformy,
jak choćby EnCase w wydaniu Enterprise. Bu-
dujemy także kompletne stanowiska do infor-
matyki śledczej, staramy się tłumaczyć dzia-
łom bezpieczeństwa w firmach, że w dzisiej-
szych czasach ważną rzeczą jest przygoto-
wanie się na sytuację, w której zaistnieje po-
trzeba zabezpieczenia dowodów w formie
elektronicznej.
h9:
Czy mógłby Pan opowiedzieć o jakimś
ciekawym zleceniu, jakie otrzymaliście?
SM:
Ciężko tu posługiwać się jakimiś kon-
kretnymi przykładami, ponieważ rzadko kto
chciałby ujawnić, że wyciekły mu cenne infor-
macje, albo że został okradziony przez swoje-
go pracownika. Mogę przytoczyć sprawę za-
walonej hali MTK w Katowicach, w której brali-
śmy udział – poprzez analizę nośników danych
z miejsca tragedii, udało nam się pozyskać
dużo cennych informacji. To dobry przykład
Wywiad z prezesem
Mediarecovery
– Sebastianem Małychą
Sebastian Małycha
Kariera Sebastiana Małychy
zaczęła się 10 lat temu.
Od prawie 3 lat pracuje
w Mediarecovery – początkowo
jako dyrektor handlowy,
obecnie jako prezes zarządu.
Wywiad
hakin9 Nr 11/2007
75
ukazujący, że nie jesteśmy związani tylko ze sprawami
dotyczącymi hakerstwa czy piractwa.
Kolejnym przykładem może być zaginięcie nastolet-
niego chłopaka. Rodzice nie potrafili w żaden sposób wy-
jaśnić, co mogło się stać. Po przeanalizowaniu zawarto-
ści komputera domowego okazało się, że chłopak praw-
dopodobnie należy do sekty – m. in. zajmował się jej stro-
ną internetową. Nie wiem, jak zakończyła się cała spra-
wa, ale przynajmniej udało nam się wskazać kierunek,
w którym należy prowadzić dalsze poszukiwania.
h9:
Co można zrobić, aby zwiększyć tak nikłą w Pol-
sce świadomość istnienia informatyki śledczej i ukazać
możliwości jakie ona stwarza?
SM:
To pytanie za 100 punktów. Jesteśmy polską fir-
mą, nie dysponujemy budżetem w wysokości kilku mi-
lionów dolarów na kampanię reklamową. Na tę chwilę
podjęliśmy szereg działań związanych z edukacją rynku
– konkretnie segmentu organów ścigania. Chcemy zwię-
kszyć wiedzę przedstawicieli organów ścigania w za-
kresie dowodu elektronicznego, przekonać ich, że taki
dowód nie jest żadną czarną magią, za to bardzo przy-
datną rzeczą. Staramy się zatem małymi kroczkami edu-
kować rynek i mam nadzieję że poziom świadomości bę-
dzie się zwiększać.
h9:
Czy uważa Pan, że korzystanie z Waszych usług
stanie się normą w życiu codziennym?
SM:
Korzystanie z usług takich firm jak nasza z pew-
nością stanie się powszechne. Wystarczy popatrzeć na
rynek amerykański, gdzie dowód elektroniczny to do-
słownie chleb powszedni. Do tego stopnia, że gdy od-
chodzi pracownik wyższego szczebla, robi się kopię bi-
narną jego dysku twardego. Jeżeli coś się wydarzy, bę-
dzie możliwość powrotu do zawartych tam informacji.
Przykładem może być tragedia WTC – przebadano wte-
dy ponad 1200 komputerów, stosując elementy informa-
tyki śledczej. Nie wyobrażam sobie, aby w Polsce – przy
tak szybkim rozwoju sektora IT – mogło być inaczej. Wy-
obraźmy sobie sytuację, w której dyrektor marketingu fir-
my X buduje sobie w ciągu roku trzeci dom w Hiszpanii.
To może budzić podejrzenia ze strony zarządu czy ra-
dy nadzorczej. W takiej sytuacji będziemy potrzebni my.
Proszę sobie założyć, że ta firma posiada np. 1500 kom-
puterów – odnalezienie i wyciągnięcie informacji doty-
czących tych 3 domów z tak rozbudowanej infrastruk-
tury bez odpowiedniego przygotowania, wiedzy i sprzę-
tu byłoby niemożliwe. Myślę, że pracodawcy zaczną do-
strzegać możliwości, jakie daje informatyka śledcza. Je-
steśmy w stanie odpowiedzieć na prawie każde pytanie
dotyczące określonej nieprawidłowości albo jeśli nie ma
śladów przestępstwa potwierdzić, że wszystko dzieje się
prawidłowo.
h9:
Jaki sprzęt potrzebny jest do odzyskiwania da-
nych? Czy odzyskiwanie danych to kosztowny zabieg
– jakiego rzędu są to koszta?
SM:
Odzyskiwanie danych to tylko około 20% ca-
łego procesu informatyki śledczej, nie zawsze zacho-
dzi taka konieczność. Jednak jeżeli zaistnieje sytuacja,
hakin9 Nr 11/2007
www.hakin9.org
Wywiad
76
w której ktoś skasuje dane z nośnika, to możliwe jest
ich odzyskiwanie niemal w locie. Posiadamy oprogra-
mowanie, które jest w stanie przeszukać całość struk-
tury dysku twardego. Szukając przykładowo pliku seba-
stian oprogramowanie to znajdzie wszystkie takie pliki,
nawet skasowane. Jest to w 90% oprogramowanie ame-
rykańskie, w pozostałej części niemieckie. Jeśli chodzi
o koszty to w odniesieniu do innych firm odzyskujących
dane, nasze laboratorium pobiera bardzo konkurencyj-
ne wynagrodzenie.
h9:
Jak wygląda schemat przeprowadzanego przez
Państwa śledztwa?
SM:
Co jest ważne przy tego rodzaju śledztwie?
Przede wszystkim tak zwany chain of custody czyli łań-
cuch zdarzeniowy, który musi zaistnieć od momentu po-
zyskania i zabezpieczenia informacji mających być do-
wodem, do momentu prezentacji w sądzie. Ten łańcuch
musi być nierozerwalny. Musimy być w stanie udowodnić,
co się działo z danym nośnikiem informacji na każdym
etapie od momentu zabezpieczania nośnika, aż do pre-
zentacji znajdujących się na nim dowodów. W tej pracy
trzeba być po trochu informatykiem, analitykiem i praw-
nikiem.
Łącząc te wszystkie umiejętności w jedną całość
otrzymujemy proces zwany informatyką śledczą. Składa-
ją się na nią trzy części: odpowiednie oprogramowanie,
sprzęt oraz wiedza. Żaden z tych elementów nie przy-
niesie efektów bez pozostałych dwóch. Wyobraźmy so-
bie sytuację, w której mamy do przeanalizowania 10 dys-
ków, każdy po 80 GB. Bez odpowiedniego oprogramowa-
nia nie jesteśmy w stanie tego zrobić w rozsądnym cza-
sie. Po drugie, nie będziemy w stanie zrobić nic z tymi no-
śnikami bez odpowiedniego sprzętu – na przykład tzw.
blokerów, które zabezpieczą nośnik przed dodawaniem
wpisów. Bez odpowiedniej wiedzy na temat tego łańcu-
cha zdarzeniowego nie będziemy w stanie zaprezento-
wać dowodów w sądzie.
h9:
Czy wasi klienci współpracują z wami profilak-
tycznie czy tylko w momencie pojawienia się zagroże-
nia?
SM:
Biorąc pod uwagę, że 90% naszych usług wy-
konywanych jest na potrzeby policji czy prokuratury
– można powiedzieć, że pojawiamy się już po fakcie,
a klienci zgłaszają się do nas po zaistniałym incyden-
cie. Natomiast na drugim obszarze działalności Media-
recovery, czyli budowania platform bezpieczeństwa,
klienci zdecydowanie chcą się zabezpieczyć jeszcze
przed wystąpieniem potencjalnego incydentu. Reasu-
mując, w kontekście oferowanych usług występujemy
po fakcie, natomiast od strony koncepcyjnej, przygoto-
wania pewnych rozwiązań dla firm – uprzedzamy wy-
darzenia.
h9:
Do jakiego rodzaju przestępstw stosuje się infor-
matykę śledczą?
SM:
W zasadzie dziedzinę tę można wykorzystać
w przypadku dowolnego rodzaju przestępstw. Informa-
tyka śledcza jest generalnie kojarzona z piractwem,
hakerstwem czy cyberterroryzmem. A tak naprawdę
dotyczy ona prawie każdej dziedziny życia – np. kra-
dzieży, zabójstw, przestępstw gospodarczych, wyłu-
dzeń, poszukiwania zaginionych osób. W dzisiejszych
czasach 90% informacji porusza się drogą elektronicz-
ną, jeżeli szukamy jakichkolwiek śladów, dowodów na
temat jakiegoś incydentu to prawdopodobnie ta infor-
macja znajduje się w jakimś komputerze, telefonie lub
innym nośniku danych. Powoli kończą się czasy, kie-
dy osiłek z kijem baseballowym przychodził do skle-
pu po haracz. Teraz niebezpieczny staje się facet mojej
postury w białym kołnierzyku z palcami zintegrowany-
mi z klawiaturą. Mało tego – jest on pewniejszy w swo-
im działaniu, bo kara jest w takim przypadku mniejsza,
a wielkość dochodów z cyberprzestępczości na wschód
od Polski przekroczyła już poziom profitów z handlu
narkotykami.
h9:
Czy jest możliwe odzyskanie przez Was danych
z dysku rozmagnesowanego przez profesjonalne urzą-
dzenia przeznaczone do tego celu?
SM:
Nie. Istnieje wiele mitów związanych z odzyski-
waniem danych, szczerze mówiąc nie zwykłem z nimi
walczyć. Na przykład – czy istnieje możliwość odzyska-
nia danych z połamanej płyty CD? Ja powiem, że nie, ale
ktoś inny stwierdzi, że dzisiaj nie. Zawsze można odpo-
wiedzieć, że dana rzecz nie jest możliwa dzisiaj. Przy tak
dynamicznym postępie technologicznym nie jesteśmy
w stanie przewidzieć, co będzie za 10 lat. Teraz mogę
powiedzieć, że nie ma możliwości odzyskiwania danych
z rozmagnesowanego dysku.
h9:
W jakim formacie są odzyskiwane dane – kon-
kretne pliki?
SM:
Tu uwidacznia się największa różnica między
odzyskiwaniem danych, a informatyką śledczą. Jeże-
li ktoś zleci nam odzyskanie dokumentu tekstowego, na
którym przykładowo znajduje się praca dyplomowa, to
na pewno zależy mu na odzyskaniu całości i to jest od-
zyskiwanie danych. Z punktu widzenia informatyki śled-
czej zastanawiamy się, czy w tym dokumencie teksto-
wym nie ma dowodów, które by o czymś świadczyły. In-
teresuje nas wtedy tylko jakiś fragment, część tej cało-
ści. Na tym polega różnica. W całym procesie tak na-
prawdę bardziej nas interesuje analizowanie danych niż
ich odzyskiwanie.
h9:
Czy obowiązuje Państwa jakaś klauzula tajności
narzucona przez prawo, czy tylko tajemnica zawodowa?
SM:
Przede wszystkim obowiązuje nas polskie pra-
wo. Jeżeli na pewnym etapie prac nad konkretną spra-
wą przetwarzanym informacjom zostanie nadana klauzu-
la tajności na poziomie poufne czy tajne – musimy to re-
spektować. W ramach firmy funkcjonuje kancelaria taj-
na oraz odpowiednio przeszkolone osoby po to, aby móc
przestrzegać tych wymagań. Jeżeli ktoś uzna, że doku-
menty powinny być poufne, to traktujemy je jako poufne
– zgodnie ze standardami MSWiA.
h9:
Dziękujemy za rozmowę.
SM:
Dziękuję.
TREND MICRO CHRONI
KOMPUTERY PRACUJĄCE POZA BIUREM
Punkty końcowe systemu przedsiębiorstwa są co-
raz częściej urządzeniami przenośnymi, a w wielu
dużych firmach laptopów jest już więcej niż kom-
puterów stacjonarnych. Przy coraz bardziej za-
awansowanych zagrożeniach czyhających na
użytkowników w Internecie wzrost liczby urządzeń
przenośnych wymaga od przedsiębiorstw nowego
podejścia do zabezpieczeń — mówi Max Cheng,
dyrektor generalny ds. rozwiązań dla przedsię-
biorstw w firmie Trend Micro
— OfficeScan rozsze-
rza zabezpieczenia poza sieć przedsiębiorstwa,
chroniąc komputery przed zagrożeniami interneto-
wymi w nowatorski i dynamiczny sposób.
OfficeScan 8.0 zapewnia przedsiębiorstwom
wielowarstowe zabezpieczenie skutecznie chro-
niące przed różnego rodzaju atakami, takimi jak
szkodliwe oprogramowanie, programy szpiegują-
ce, wirusy, rootkity oraz ataki z sieci, np. ze strony
hakerów. Obecnie wielu użytkowników mobilnych
łączy się z Internetem poza przedsiębiorstwem —
w hotelach, kawiarniach lub na lotniskach. Ta ten-
dencja będzie się rozwijać. Menedżerowie coraz
więcej czasu spędzają w delegacjach służbowych.
To samo dotyczy innych pracowników firm, han-
dlowców lub serwisantów. Korzystają oni z urzą-
dzeń przenośnych kontaktując się z firmą lub ak-
tualizując różnego rodzaju dane czy chociażby
sprawdzając pocztę. Wreszcie coraz więcej pracow-
ników korzysta ze służbowych notebooków rów-
nież w domu. Do tej pory było to dość ryzykowne.
Teraz dzięki nowatorskim mechanizmom zabez-
pieczającym komputer przed zagrożeniami z Inter-
netu aplikacja OfficeScan 8.0 gwarantuje ochronę
również poza siecią przedsiębiorstwa. Nowe me-
chanizmy stosują dynamiczną ocenę reputacji
domen DNS, zabezpieczając w ten sposób punkty
końcowe przed otwieraniem stron zawierających
szkodliwe oprogramowanie.
-
Wprowadziliśmy na rynek najnowszą wer-
sję aplikacji służącej do zabezpieczania kompu-
terów w przedsiębiorstwach, a także poza nimi.
OfficeScan 8.0 jest nie tylko pierwszym rozwią-
zaniem dla przedsiębiorstw wykorzystującym
metodę oceny reputacji treści internetowych,
lecz również pierwszym programem zabezpie-
czającym, który otrzymał certyfikat zgodności
z systemem operacyjnym Microsoft™ Windows
Vista. Ten produkt zapewnia lepszą ochronę przed
zagrożeniami z Internetu dzięki nowemu narzę-
dziu Web Security Rating oraz rozbudowanemu
mechanizmowi usuwania programów szpiegują-
cych – mówi Filip Demianiuk, Technical Channel
Manager Trend Micro - W ten sposób spełniliśmy
obietnicę, że przedsiębiorstwa, które planują
wdrożenie nowego systemu operacyjnego firmy
Microsoft, będą mogły się cieszyć tym samym
wysokim poziomem bezpieczeństwa – dodaje
Demianiuk.
Wdrożenie systemu zabezpieczeń może być
trudnym zadaniem, zwłaszcza w przypadku dużej
liczby klientów. Biorąc to pod uwagę, firma Trend
Micro wzbogaciła rozwiązanie OfficeScan o roz-
szerzalną architekturę modułową, która umożliwia
wdrażanie dodatkowych funkcji na zainstalowa-
nych klientach bez konieczności ponownego insta-
lowania lub dystrybuowania programu OfficeScan
przez administratorów. W rezultacie przedsiębior-
stwa mogą efektywnie zabezpieczać punkty koń-
cowe przy wykorzystaniu najbardziej aktualnych
mechanizmów OfficeScan.
OfficeScan jest głównym elementem strate-
gii Enterprise Protection Strategy firmy Trend Mi-
cro, która obejmuje również inne rozwiązania
tworzące razem wielowarstwowy system zabez-
pieczający komputer przed zaawansowanymi
atakami przeprowadzanymi za pośrednictwem po-
czty elektronicznej i Internetu. Strategia ta pro-
muje kompleksowy, wielowarstwowy model za-
bezpieczeń sieciowych, który należy do najsku-
teczniejszych jak dotąd zabezpieczeń dla przed-
siębiorstw i chroni każdy punkt sieci, od bra-
my po komputery na biurkach. Wszystkimi roz-
wiązaniami
Enterprise Protection Strategy moż-
na zarządzać centralnie za pomocą narzędzia
Trend Micro Control Manager™ umożliwiającego
koordynację ochrony przed zagrożeniami po-
chodzącymi z sieci.
Na razie aktualizacje i wersje próbne oprogra-
mowania Trend Micro OfficeScan 8.0 są dostępne
w języku angielskim ale wkrótce będą również po
polsku. Więcej informacji o tym oprogramowaniu
można znaleźć pod adresem www.trendmicro-eu-
rope.com. Na razie informacje o cenach są udzie-
lane na żądanie poszczególnych klientów.
Reklama
Menedżerowie i pracownicy firm, którzy korzystają ze swoich notebooków poza
siecią biura np. w domu lub w czasie wyjazdu służbowego również mogą już czuć
się bezpiecznie. Dzięki nowatorskiemu mechanizmowi oceny reputacji treści
internetowych najnowsza wersja oprogramowania Trend Micro™ OfficeScan™
rozszerza ochronę poza sieć przedsiębiorstwa. Office Scan 8.0 jest pierwszym
programem zabezpieczającym przed zagrożeniami internetowymi, który otrzymał
certyfikat zgodności z systemem operacyjnym Microsoft Windows Vista.
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 11/2007
www.hakin9.org
78
M
arzy mi się serwis, istny cud – nie żadne tam
pitu, pitu. Full packet na skalę światową plus
dream team, w którym znajdowaliby się tylko
best players. Ale jak takich zwerbować? W sumie to
proste – dzisiaj każdy chce wiedzieć więcej od wszyst-
kich innych, więc wystarczyłoby powiedzieć jednemu, że
drugi w to wchodzi, to trzeci też by poleciał. O! A tych,
co się nie lubią (a tacy zawsze się znajdą) by się poroz-
mieszczało w różnych sekcjach. Bo sekcji by trochę było.
Od BOKu i administracji przez security do hackingu, no
i po drodze firma audytorska. Każdy szanujący się serwis
ma dzisiaj co najmniej jedną. Pierwsze zlecenie poszło-
by na serwis, żeby deface'a konkurencja nam nie zrobi-
ła (o ile by jakaś się odważyła – w końcu dla nas nie ist-
niałyby granice i bariery – coś jak nietykalni w Indiach),
chociaż to zawsze jakieś promo jest, a potem wrzuciło-
by się kilka luczek, żeby ludki widziały, że my na poważ-
nie z tym wszystkim idziemy. Do kadry, myślę, można
by dodać jeszcze trochę freelancerów. Nie, nie za kasę.
Przecież w tym biznesie ma rządzić wena, a nie pienią-
dze (możliwość lansu by im na razie wystarczyła). Ci, co
myślą inaczej, niech lepiej zaczną od nowa. A dalej nasi
skrobnęliby trochę artów, po engliszu, bo po co rodacy
mają wiedzieć, o co kaman – skoro od razu na między-
narodówkę można wejść z polską domeną. Liczy się
świat, nie ojczyzna. I na hostingu by się zaoszczędziło.
Chłopaki mają wejścia, to by jedynie składka na jakie-
goś demona szybkości była (chociaż sponsor od razu też
by się znalazł), ale za to mirror na każdym MANie by był,
z minutową synchronizacją i monitoringiem przełączają-
cym DNSy w razie awarii – tak dla pewności, że nie da
się nas wyłączyć. Obowiązkowo baza Hacked by była -
rewersów bezpieczeństwa też trzeba kiedyś wprowadzić
na salony, no i to działa na skrypciaki jak Emacs prze-
chodzący przez Sendmaila. By być bardziej user friendly,
założylibyśmy od razu własną szkołę Tak. Elitarną (pod-
ręczniki już teraz można kupić w Internecie!). 2.700 PLN
za semestr – płyta z oprogramowaniem Open Source
gratis (wszystko za darmo prócz tego, jak z niego korzy-
stać) i możliwość zrobienia sobie zdjęcia z wykładow-
cami przed siedzibą w Warszawce. Dalej już chyba by
się samo rozkręciło. Początkowe ponad 15.000 odwie-
dzin dziennie by się przełożyło na obklejenie stronki ban-
Infomafia.pl
nerami w każdym boksie, w połowie artykułu (za możli-
wość przeczytania całego oczywiście płatność SMSem!)
i popupy w każdym aktywnym odnośniku. System newsów
– oczywiście Web 2.0, żeby nie posądzali nas o manipu-
lację medialną, chociaż własny streamer TV też z czasem
by się założyło. Wielki Brat w pokoju programistów to
czysta wiedza i doza humoru non stop. Wszyscy by wystą-
pili, żeby nie psuć atmosfery wspólnoty. Jakby parę kon-
traktów poszło w eter, to i każdy by dostał swojego laptopa
za 1.000 $ per developer, ale pod warunkiem obietnicy, że
wtedy własnego bloga utworzy. Coś pięknego. Ponad stu-
osobowa reprezentacja elity IT Polski (w tym ukryci tytani,
którzy teraz boją publicznie się przyznać, że kura kiedyś
była jajkiem) kształtowałaby gusta mas i to żaden low level
hacking by nie był. Za każdym razem oszlifowana informa-
cja, z odpowiednim nakierowaniem na Czytelnika. Syste-
mu komentarzy by nie było – bo po co, skoro te krytyczne
i tak by moderator wycinał. Trochę oprogramowania autor-
skiego by poszło na aukcje, wtedy na oszkloną siedzibę
byśmy uzbierali. Potem to tylko wejście na giełdę – własna
partia polityczna i oddział reprezentacyjny z szefem regio-
nu w każdym mieście, ale tylko tam, gdzie mamy lustrza-
ne serwery. Do zleceń byśmy wykorzystali system stoso-
wany przez korporacje taksówkarskie. Kto ma bliżej ten
dyga. Po odwiedzinach paru konferencji i końcowym roz-
głosie zawsze przychodzi czas na trochę relaksu. W okre-
sie wakacyjnym ograniczalibyśmy się do wywiadów i zdal-
nych konsultacji z miejsc wypoczynkowych. Gdyby inte-
resy trochę podupadały, bo członkowie by zaczęli two-
rzyć własne forki projektów, otworzyłoby się jakiś sklep
z firmowymi gadżetami: koszulki, kubki, smycze, długo-
pisy. Dzieciaki uwielbiają takie rzeczy. Ewentualnie wyda-
łoby się parę poradników dla topornych i książkę Skazani
na sukces z pozycjonowaniem w czołowych księgarniach.
Kasa by była duża, ale też dużo osób do podziału, dlate-
go nikt by nie zarzucił nam monopolu i że nie robimy tego
dla idei, a wiadomo – nie samym kodem człowiek żyje.
I to wszystko oczywiście dla bezpieczeństwa. Ewentualne
zyski pozwalałyby na dalszy rozwój i inwestycję w bada-
nia nad nowymi metodami i udoskonaleniami. Przecież nie
pojadę do klienta Peugeotem 106, skoro Lexus GS ucho-
dzi za jeden z najbezpieczniejszych samochodów świata.
Tak. To wszystko dla bezpieczeństwa. l
Patryk Krawaczyński agresor@nfsec.pl
Felieton
Tytuł
Ilość numerów
w roku
Ilość zamawianych
prenumerat
Od numeru pisma
lub miesiąca
Opłata w zł
z VAT
hakin9 (1 płyta CD)
Miesięcznik o bezpieczeństwie i hakingu
12
900
Dodatkowy drukowany egzemplarz
12
80
W sumie
(liczba prenumerat x cena)
Formularz zamówienia prenumeraty
Dane osoby / firmy zamawiającej
Imię i nazwisko
Stanowisko
ID kontrahenta*
* jeżeli jesteś już klientem firmy Software-Wydawnictwo Sp. z o.o. – wystarczy, że podasz swój numer ID kontrahenta; jeżeli nie posiadasz takiego numeru, podaj swe dane teleadresowe
Upoważniam firmę Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy
Pieczęć firmy i podpis
Nazwa firmy
Dokładny adres
Telefon (wraz z numerem kierunkowym)
Faks (wraz z numerem kierunkowym)
Adres e-mail
Numer NIP firmy
Prosimy wypełnić czytelnie i przesłać faksem na numer:
(22) 887 10 11
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) 887 14 44
UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.
w w w . b u y i t p r e s s . c o m . p l
Prenumerata korporacyjna hakin9 pozwoli Ci
na dowolne powielenie i rozpowszechnianie pisma
w obrębie Twojej firmy
Numer konta: NORDEA BANK POLSKA 46 1440 1299 0000 0000 0391 8238
W ramach prenumeraty korporacyjnej otrzymają Państwo:
1. Pismo w wersji elektronicznej
2. Dwa dodatkowe egzemplarze w wersji drukowanej
3. CD-ROM zawierający archiwum wszystkich numerów z 2006 roku
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 grudnia 2007 r.
Redakcja zastrzega sobie prawo zmiany zawartości pisma.
hakin9
12/2007
w następnym numerze
między innymi:
Zapowiedzi
Słabość mocnych haseł
Zastosowanie haseł to nadal podstawowa metoda uwierzytelniania w sys-
temach informatycznych. Wszelkiego typu klucze alfanumeryczne, tajne
słowa, PINy to często jedyne zabezpieczenie aktywów systemu przed nie-
upoważnionym dostępem. Niestety, w dobie stale rosnących możliwości obli-
czeniowych, jest to zabezpieczenie coraz mniej skuteczne, a haker dyspo-
nuje bogatym arsenałem środków i technik, aby ową nieskuteczność wyko-
rzystać.
Domenowi oszuści
Informacje o właścicielach domen internetowych są dostępne w bazie
WHOIS. Pewna firma korzysta z tej bazy w poszukiwaniu domen, które za
mniej niż 90 dni stracą ważność i wysyła informację o konieczności przedłu-
żenia tej domeny. E-mail jest tak skonstruowany, że niejedna osoba może
pomyśleć, iż domena została zarejestrowana w tej właśnie firmie.
Niebezpieczny firefox
Przeglądarka Mozilli zyskuje sobie coraz większą popularność. Wielu użyt-
kowników wybrało ją ze względu na bezpieczeństwo, które oferuje, wydajny
silnik Gecko, czy kilka udoskonaleń, które na stałe zagościły w przeglądar-
kach. Czy jednak Firefox jest tak bezpieczny, za jakiego jest uważany?
Farmy serwerów – zasady bezpieczeństwa
Artykuł Rafała Podsiadłego pokaże Czytelnikom zasady jakimi trzeba się
kierować budując takie farmy. Autor opisze te zagadnienia pod kątem bez-
pieczeństwa fizycznego.
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