background image
background image
background image
background image

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-

berDisk 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

background image

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.

background image

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.

background image

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.

background image

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.

background image

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. 

background image

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

background image

hakin9.live

hakin9 Nr 11/2007

www.hakin9.org

10

hakin9.live

hakin9 Nr 11/2007

www.hakin9.org

11

background image

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

background image

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

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

W razie problemów z płytą, proszę napisać pod adres: cd@software.com.pl

background image

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

background image

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

background image

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.

background image

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!"

);

        

}

    

}

}

background image

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

();

background image

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"

);

background image

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

background image

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

background image

www.hakin9.org

hakin9 Nr 11/2007

22

Atak

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.

background image

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

���

�����

�����������

���������

����������

����������

�����

background image

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

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

����������

������
�����

���
������

���

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

�����������

�����������

��������

��������

���������

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

����������

background image

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

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

����������

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

��������

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

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

�����������

��������

���

�����

���������

background image

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#

����������

����������

����������

����������

����������

����������

���

�����

�����

background image

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

background image

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

background image

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

background image

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.

background image

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).

background image

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

()

      

print

 

'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

)

print

 

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

)

print

 

"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

)

      

print

 

packet

background image

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.

background image

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

)

  

print

 

decoded

#listujemy interfejsy sieciowe

eths

 

=

 

pcapy

.

findalldevs

()

print

 

"Interfejsy sieciowe: "

i

=

0

for

 

eth

 

in

 

eths

:

      

print

 

"%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'

)

print

 

"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

))

background image

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

background image

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.

background image

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

\.

google

\.

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

background image

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

;

}

background image

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,
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

background image

www.hakin9.org

hakin9 Nr 11/2007

40

Atak

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.

background image

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

background image

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

);

}

background image

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

background image

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.

background image

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

PR

O

Prenumerata PRO

ko

nt

ak

t d

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

88

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

background image

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.

background image

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

background image

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

)

background image

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

background image

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 
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-

ftrotateRightshift 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

background image

Kryptograficzne funkcje skrótu

hakin9 Nr 11/2007

www.hakin9.org

51

background image

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.

background image

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

background image

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

background image

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

background image

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 InspectionAp-
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
 

background image

Niekonwencjonalne metody wykrywania włamań

hakin9 Nr 11/2007

www.hakin9.org

57

background image

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.

background image

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

background image

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

background image

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

background image

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.

background image

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

background image

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 (PublicPrivateInter-
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

   

}

background image

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

background image

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.

background image

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

background image

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

background image

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 

background image

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

background image

Bezpieczny ekstranet – strefy DMZ

hakin9 Nr 11/2007

www.hakin9.org

71

background image

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-

background image

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.

background image

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.

background image

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, 

background image

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 
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ę.

background image

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:

background image

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

background image

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

background image

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

background image

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

background image

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

background image
background image