Sieci Zombie.pdf

(1380 KB) Pobierz
4361615 UNPDF
Sieci Zombie
Atak
Dawid Gołuński, Krzysztof Kułaj
stopień trudności
Sieci botnet są coraz bardziej rozpowszechnione. Z danych
statystycznych wynika, że co 4 komputer domowy w sieci to
Zombie. W jaki sposób się one rozprzestrzeniają, co potraią
i dlaczego nie można sobie z nimi poradzić - na te pytania
Czytelnik uzyska odpowiedź po przeczytaniu tego artykułu.
sową skalę pod koniec 2003 roku - wy-
korzystując do tego celu lukę w inter-
fejsie RPC, wykrytą parę miesięcy wcześniej.
Luka ta stanowiła doskonałą okazję do zainfe-
kowania ogromnej liczby komputerów przy ma-
łym nakładzie środków. Na powodzenie zma-
sowanych ataków złożyło się tu wiele czynni-
ków, m.in.: niska świadomość użytkowników,
dostępność kodu P-O-C z optymalnym shel-
lcode’m oraz dostępność kodów źródłowych
botów (m.in. Sd-bot, Spybot ). Od tego czasu
oprogramowanie takie przeżywa rozkwit, do-
skonalone są techniki jego rozprzestrzeniania-
oraz ukrywania się w systemie.
niki i potraią na podstawie sygnatur lub zacho-
wania aplikacji wykryć znane boty. Innym spo-
sobem ich rozprzestrzeniania się jest wykorzy-
stywanie luk w aplikacjach sieciowych, najczę-
ściej Microsoft Internet Explorer oraz Microsoft
Outlook. Specjalnie utworzony exploit, instalu-
jący bota, jest umieszczany na serwerze Web.
Link do spreparowanej strony rozpowszechnia-
ny jest na wszelkie możliwe sposoby - poprzez
komunikatory sieciowe, IRC, mail, grupy dysku-
syjne czy też. fora internetowe. Gdy oiara ak-
Z artykułu dowiesz się
• W jaki sposób działają boty (metody infekcji,
ukrywanie się w systemie),
• Nauczysz się analizować skompilowany plik
bota,
• Poznasz zagrożenia płynące z sieci typu bot-
net.
Metody rozprzestrzeniania się
Jedną z podstawowych cech botów jest możli-
wość rozprzestrzeniania się. Techniki te ewolu-
owały od momentu powstania botów do dnia dzi-
siejszego. Początkowo boty rozprzestrzeniały
się w sposób podobny do wirusów – były wysyła-
ne jako załączniki e-mail. Treść listu była tworzo-
na z użyciem technik inżynierii społecznej ( so-
cial engineering) – tak, aby nakłonić użytkownika
do otwarcia załącznika. Dzisiaj programy anty-
wirusowe automatycznie skanują jednak załącz-
Co powinieneś wiedzieć
• znać podstawy C,
• znać podstawy assemblera,
• znać podstawy sieci TCP/IP.
2
hakin9 Nr 7/2007
www.hakin9.org
B oty zaczęły rozprzestrzeniać się na ma-
4361615.024.png 4361615.025.png 4361615.026.png
Sieci Zombie
tywuje link, a używana przeglądar-
ka jest podatna na błąd, bot zainsta-
luje się w systemie. Luki wykorzysty-
wane do tego ataku są wybierane ze
względu na takie czynniki, jak: ilość
podatnego oprogramowania, popu-
larność aplikacji, uniwersalny shellco-
de (najlepiej niezależny od wersji języ-
kowej Windows lub programu). Innym
sposobem na infekcję użytkowników
jest skanowanie sieci w poszukiwa-
niu niezaktualizowanych systemów.
Najczęściej wykorzystywane luki to :
SRVSVC (MS06-040), PNP (MS05-
039) , ASN.1 (MS04-007), LSASS
(MS04-011), DCOM (MS03-026)
– (MS03-043), (MS03-049). (bardziej
dociekliwi czytelnicy mogą zapoznać
się ze szczegółami tych luk na stro-
nach Microsoft, podając numery in-
deksowe zawarte w nawiasach). Pu-
blicznie dostępne boty, m.in. RxBot ,
GT-Bot posiadają zaimplementowa-
ne przeszukiwanie sieci oraz infek-
cję za pomocą wyżej wymienionych
dziur. Ciekawym sposobem infekowa-
nia systemów jest wyszukiwanie kom-
puterów i infekcja za pomocą Netbios.
Schemat ataku wygląda następująco:
agresor wyszukuje komputer z otwar-
tym portem 139, następnie próbuje się
z nim połączyć. Jeśli połączenie doj-
dzie do skutku z pustym hasłem, ko-
piuje się do wszystkich możliwych lo-
kacji. Jeśli istnieje hasło, bot będzie
próbował odgadnąć hasło, podsta-
wiając najczęściej występujące sło-
wa. Często wykorzystywane są dziu-
ry w standardowych lokalnych aplika-
cjach, np. Microsoft Word czy Micro-
soft PowerPoint. Atakujący wysyła
odpowiednio spreparowany plik .doc
lub .pps w załączniku do e-maila. Tym
sposobem można wykorzystać nie-
malże każdą lukę występującą w lo-
kalnym systemie. Jedynym ograni-
czeniem jest treść e-maila – musi być
wystarczająco przekonywująca – co
z reguły nie jest najtrudniejszym za-
daniem, jeśli rozszerzenie załączni-
ka nie jest plikiem wykonywalnym.
Ten atak ma jedną wadę – nie może
być on kierowany do wielu użytkowni-
ków, gdyż jeśli trai do irm antywiru-
sowych, jego sygnatury zostaną do-
dane do bazy wirusów i będzie wykry-
walny, co znacząco zmniejszy możli-
wości rozprzestrzeniania się. Stosun-
kowo prostym w implementacji sposo-
bem rozprzestrzeniania jest kopiowa-
nie bota na komputerze oiary, do fol-
derów, z których korzystają programy
P2P ( np. Emule, Kazaa ). Nazwy są
najczęściej dobierane wg. schematów
( crack-nazwa_gry.exe, key-gen-na-
zwa_gry.exe etc). Ta metoda jest sku-
teczna jedynie w przypadku dużych
botnetów, ponieważ im więcej kopii te-
go samego pliku w sieci P2P, tym wy-
żej znajduje się on na liście wyszuki-
wania. Ciekawą techniką zdobywa-
nia botów, której nie można zaliczyć
do infekcji są kradzieże botnetów. Ten
temat zostanie poruszony w punkcie
Zdobywanie informacji o bocie .
Instalacja
i ukrywanie w systemie
Domyślnie wszystkie boty instalują
się w kluczach startowych rejestru
Windows. Metoda ta jest bardzo za-
wodna, ponieważ wszystkie progra-
my antywirusowe oraz antyspywaro-
we w pierwszej kolejności sprawdza-
ją domyślne lokalizacje. Nawet stan-
Rysunek 1. Wywołanie bota, ukryte w usłudze Posłańca
Rysunek 2. Przechwycenie adresu serwera oraz nicka bota
www.hakin9.org
hakin9 Nr 7/2007
3
 
4361615.001.png 4361615.002.png 4361615.003.png
 
Atak
Listing 1. Przełożenie funkcji decode() na język C
Scenariusz
przykładowego ataku
na konto w banku
internetowym
Jeśli użytkownik korzystający z
usług banku posiada bota, w skraj-
nych przypadkach może stracić pie-
niądze na swoim koncie. Zaprezen-
towana technika może zostać dosto-
sowana do każdego banku stosują-
cego tego typu zabezpieczenia. Ist-
nieją boty mające zaimplementowa-
ną funkcję powiadamiania na kanale,
jeśli na komputerze pojawią się okna
z danym tytułem. W przypadku, gdy
użytkownik wejdzie na stronę banku
– wiadomość z zapisanymi klawisza-
mi wciśniętymi w tym oknie (tj. login
i hasło) zostanie przesłane do wła-
ściciela botnetu. W tym momencie
może się on swobodnie logować na
konto bankowe użytkownika. Jednak
wszystkie kluczowe operacje na kon-
cie są zabezpieczone hasłem jedno-
razowym, które zna jedynie właści-
ciel konta oraz bank. Można sprepa-
rować stronę, do złudzenia przypomi-
char * decode (
char * text , int param , char * where )
{
int i ;
for ( i = 0 ; text [ i ] != 0 ; i ++) {
where [ i ] = text [ i ] - param - 3 * i ;
}
Where [ i ]= 0 ;
return where ;
}
dardowe narzędzia Windows ( np.
msconig ) są w stanie wykryć obec-
ność bota. Jednakże nie jest to jedy-
na metoda automatycznego urucha-
miania bota. Istnieje szereg innych,
mniej lub bardziej znanych metod.
Np. dopisanie się do systemowych
usług lub dll injection .
istnieją irmy płacące za klikanie w
reklamy na stronach – takie działa-
nie może doprowadzić do osiągnię-
cia korzyści inansowych. Boty czę-
sto są wykorzystywane do wysyła-
nia spamu, posiadają nawet własne
silniki SMTP. Według statystyk, oko-
ło 50% spamu wysyłanego w sieć
pochodzi z zainfekowanych kompu-
terów. Źródła botów potraiących wy-
syłać masowo spam nie są raczej pu-
blicznie dostępne, ale nawet średnio-
zaawansowanemu programiście roz-
szerzenie programu o takie funkcje
nie powinno sprawić trudności.
Możliwości botów
Pierwotnie boty były gromadzone w
celach ataków DOS i DDOS . Najczę-
ściej używany do tego celu jest syn-
lood oraz ping-lood . Z czasem boty
stały się coraz bardziej wyrainowa-
ne. Wachlarz ich możliwości stał się
dużo większy. Bardzo szybko została
dodana możliwość skanowania naci-
skanych klawiszy. Dodatkowo, w źró-
dle możemy określić nazwy okien, z
których klawisze mają być logowane.
Określając nazwę okna na:
• PuTTY– możemy uzyskać sporą
ilość kont z dostępem do shella,
• nazwy serwisów aukcyjnych – ha-
sła do kont umożliwiające zawie-
ranie transakcji w imieniu danej
osoby,
• nazwy banków – numery kart
kredytowych, jak również hasła
i loginy do kont bankowych.
Rysunek 3. Bot spakowany UPXem
To tylko kilka przykładów, potwier-
dzających, że najwrażliwsze dane
użytkownika są w zasięgu ręki po-
siadacza bonetu. Inne funkcje to np.
możliwość klikania w linki interneto-
we. Funkcja ta jest używana do oszu-
kiwania systemów zliczających klik-
nięcia w banery na stronach interne-
towych. Oznacza to, że osoba posia-
dająca bonet może w łatwy sposób
wpływać na wyniki wszelkiego rodza-
ju sond, ankiet, głosowań itp. Jako że
Rysunek 4. Sekcje dostępne w pliku bota
4
hakin9 Nr 7/2007
www.hakin9.org
4361615.004.png
 
4361615.005.png
 
4361615.006.png
 
4361615.007.png 4361615.008.png
 
4361615.009.png 4361615.010.png 4361615.011.png
 
Sieci Zombie
nającą stronę banku. Posiadając bo-
ta na komputerze oiary, jesteśmy w
stanie przekierować użytkownika na
podstawioną przez nas stronę. Gdy
użytkownik -- będąc przekonanym,
że kontaktuje się z właściwą stroną
-- wpisze hasło jednorazowe, zamiast
traić do banku traia do właściciela
botów. W tym momencie, atakujący
może zrobić wszystko z naszym kon-
tem bankowym. Działanie to może
wydawać się początkowo skompliko-
wane, jednak coraz więcej osób pada
oiarami tego typu przestępstw. Banki
starają się walczyć z takimi praktyka-
mi, wprowadzając losowe wybieranie
haseł jednorazowych z listy lub hasła
przesyłane na telefonu komórkowe.
wać program bota), przejęcia botnetu
(poprzez poinstruowanie komputerów,
aby wgrały określoną przez nas wersję
bota jednocześnie usuwając starą).
duje się bot. W tym celu można po-
służyć się popularnym snifferem o
nazwie Ethereal . Po uruchomieniu
sniffera, należy wybrać odpowiedni
interfejs za pomocą okna Capture-
-> Interfaces . Po kliknięciu przycisku
Capture przy danym interfejsie, roz-
pocznie się nasłuchiwanie pakietów.
Wystarczy teraz uruchomić plik wy-
konywalny bota i odczekać kilkana-
ście sekund. Po wciśnięciu przyci-
sku stop w programie Ethereal na-
słuchiwanie zostanie przerwane, a
Podsłuchiwanie,
czyli snifing
Najłatwiejszym, a zarazem najszyb-
szym sposobem na ustalenie adresu
docelowego serwera, nazwy kanału
oraz klucza kanału, jest podsłucha-
nie sieciowych pakietów wychodzą-
cych z komputera, na którym znaj-
Zdobywanie
informacji o bocie
Przechwycony plik wykonywalny bo-
ta może wiele powiedzieć o docelo-
wej sieci. Przeprowadzając odpo-
wiednie działania, możemy poznać
dokładną konigurację bota, a w
szczególności:
Rysunek 5. Niezakodowane dane koniguracyjne bota
• Adres serwera IRC, z jakim na-
stępuje połączenie
• Nazwa kanału IRC, do którego
dołącza bot
• Klucz dostępowy kanału IRC
• Dane potrzebne do uwierzytel-
nienia
Te informacje mogą posłużyć do na-
mierzenia atakującego, zniszczenia
botnetu (znając dane potrzebne do
uwierzytelnienia, jesteśmy w stanie
zalogować się na każdym z zaatako-
wanych komputerów oraz odinstalo-
Rysunek 6. Podłączanie pod proces bota
W Sieci
• http://www.google.com/codesearch
– wyszukiwarka źródeł ułatwiająca
odnalezienie botów (RxBot, GT-bot
Sd-Bot, Spy-Bot.)
• http://www.secretashell.com/
codomain/peid/ – strona programu
PEiD
• http://www.ollydbg.de/ – strona
programu OllyDbg
• http://upx.sourceforge.net/ – strona
programu UPX
Rysunek 7. Dane widoczne po podłączeniu się pod proces bota
Rysunek 8. Lista odwołań do funkcji API
www.hakin9.org
hakin9 Nr 7/2007
5
 
4361615.012.png 4361615.013.png 4361615.014.png
 
Atak
przechwycone pakiety zostaną wy-
świetlone.
W jednym z pierwszych pakietów
zobaczymy nawiązanie połączenia
TCP pomiędzy botem a serwerem
IRC. Uzyskujemy tym samym adres
serwera oraz numer portu, na którym
działa usługa IRC. Jeżeli podczas
nasłuchiwania mieliśmy uruchomio-
ne również inne programy sieciowe
– warto ustawić iltr, który usunie nie-
istotne dla nas pakiety. Jeżeli połą-
czenie z serwerem zostało nawiąza-
ne na porcie 6667, można wówczas
ustawić iltr, który pokaże jedynie pa-
kiety odnoszące się do tego portu:
pakerem dla plików wykonywalnych,
takim jak UPX. Jest to dosyć częstą
praktyką wśród twórców botów, ze
względu na to, że skompresowanie
pliku exe pozwala na znaczne zmniej-
szenie objętości, a także utrudnia wy-
krycie programom antywirusowym.
Jeżeli mamy wątpliwości co do pake-
ra, jaki został użyty do skompresowa-
nia pliku, możemy posłużyć się narzę-
dziem PeiD (link w ramce W Sieci ).
W tym przypadku bot jest skom-
presowany programem UPX. W ce-
lu rozpakowania pliku należy wydać
komendę:
Trudne pojęcia
• kod P-O-C – czyli Proof Of Concept,
jest to nieszkodliwy kod (np. uru-
chamiający kalkulator) – dołączany
do opisu błędu/techniki jako dowód
istnienia błędu oraz pokaz możliwo-
ści jego wykorzystania.
O autorach
Dawid Gołuński jest samoukiem, pa-
sjonatem, od wielu lat interesującym
się Informatyką, a w szczególności
aspektami bezpieczeństwa. Studiu-
je sieci komp. w ramach programu Ci-
sco Network Academy na Politechnice
Poznańskiej.
golunski@crackpl.com
Krzysztof Kułaj jest studentem kierun-
ku Elektronika i Telekomunikacja na
Uniwersytecie Zielonogórskim, na co
dzień zajmuje się wdrożeniami syste-
mów antywirusowych.
krzysztof_kulaj@o2.pl
upx –d bot.exe
tcp.port eq 6667
Kolejne pakiety odzwierciedlają ko-
munikację bota z usługą IRC. Ethe-
real oznacza polecenia wydawane
przez bota jako IRC Request. Środ-
kowe okno ukazuje treść danego po-
lecenia. Jak określa specyikacja pro-
tokołu IRC, klient zobowiązany jest
przesłać nazwę pod jaką będzie wi-
dziany – nick . W tym przypadku nick
bota ma postać bot_no-12 . Następ-
nym istotnym poleceniem jest JOIN ,
wywołane w taki sposób:
Jeśli nie uzyskaliśmy błędów przy
dekompresji, możemy wczytać otrzy-
many plik do edytora hiew . Wciskając
[ F4 ] przełączamy edytor w tryb hek-
sadecymalny.
Następnie przy pomocy sekwen-
cji klawiszy [ F8 ] , [ F6 ] przechodzimy
do tabeli, w której znajduje się spis
sekcji pliku EXE. Aby obejrzeć zade-
JOIN #my-botnet-00 botnet-#chan-00
Rysunek 9. Kod przy wywołaniu funkcji gethostbyname
Pierwszy parametr stanowi nazwę
kanału, a drugi klucz.
Na podstawie tych informacji je-
steśmy w stanie połączyć się z botne-
tem. Po wejściu na kanał powinniśmy
ujrzeć pozostałe komputery tworzące
sieć. Ze względu na brak hasła, nie
jesteśmy w stanie dokonać uwierzy-
telnienia, dlatego jesteśmy ogranicze-
ni do biernej obserwacji kanału.
Czytanie pliku
binarnego
Główną wadą poprzedniej metody
jest brak możliwości uzyskania hasła.
Podgląd pliku binarnego bota, stwarza
niekiedy szansę na odczytanie zmien-
nych przechowujących dane konigu-
racyjne – w tym hasła. Dobrze do tego
celu nadaje się edytor szesnastkowy
o nazwie hiew . Przed rozpoczęciem
analizy pliku należy zwrócić uwagę
na to, czy plik nie jest skompresowany
Rysunek 10. Ciało funkcji decode
Rysunek 11. Referencje do funkcji dekodującej
6
hakin9 Nr 7/2007
www.hakin9.org
4361615.015.png
 
4361615.016.png
 
4361615.017.png
 
4361615.018.png 4361615.019.png
 
4361615.020.png 4361615.021.png 4361615.022.png 4361615.023.png
 
Zgłoś jeśli naruszono regulamin