2010.08_Analiza złośliwego kodu.pdf

(1612 KB) Pobierz
439176229 UNPDF
ATAK
Analiza złośliwego kodu
Hardik Shah, Anthony L. Williams
Sieci komputerowe oraz internet zalane zostały plagą
złośliwego kodu oraz ich wrogich skutków które odczuwać
będziemy długo. Artukuł ten zaprezentuje wstęp do
podstawowych ale praktycznych użyć analizy malware
w środowisku kontrolowanym.
Dowiesz się:
• co to jest złośliwy kod,
• narzędzia oraz techniki wykorzystywane do analizy złośliwe-
go kodu,
• jak analizować robaka NetSky-P.
Powinieneś wiedzieć:
• podstawy binarnych technik debuggowania,
• podstawy analizy pakietów,
• środowisko Windows.
ry został stworzony w celu wykonywania nisz-
czących działań na normalnym komputerze.
Przykłady takich niszczących działań to np. kradzież
danych użytkownika lub danych osobistych, infekcja
maszyn w sieci czy też używanie zainfekowanych ma-
szyn do rozsyłania spamu.
Istnieje wiele kategorii złośliwego kodu, które zawiera-
ją wirusy, robaki, konie trojańskie i boty, ale nie są ogra-
niczone tylko do nich. Każda z tych kategorii różne ce-
chy charatkerystyczne zależne od przeznaczenia. Idąc
naprzeciw, chcielibyśmy przedyskutować różne technikil,
które mogą zostać wykorzystane w celu efektywnej ana-
lizy złośliwego kodu.
pii samego siebie ma inne hosty (terminale komputero-
we w seci) i jest w stanie tego dokonać bez interwencji
użytkownika.
Boty: bot jest złośliwym programem, który otrzymuje
instrukcje z kontrolera oraz wykonuje operacje zawarte
w otrzymanych instrukcjach. Z natury boty replikują się
dzięki różnym technikom np wykorzystuąc zdalne sys-
temy, rozsyłając pocztę elektroniczną z zawartymi tech-
nikami socjotechnicznymi oraz kolejno tworząc sieci bo-
tów określanych jako botnety. Taka sieć współpracują-
cych komputerów może być użyta do ataku typu Dustri-
buted Denial of Service, instalacji malware oraz przepro-
wadzania innych podejrzanych działań. Boty z dnia na
dzień zyskują na popularności.
Typy złośliwego kodu
Pozwolę sobie przedyskutować podstawowe definicje
różnych typów złóśliwego kodu:
Wirus: wirusy są prostymi programami, które zostały na-
pisane aby zmienić sposób pracy kopmutera bez pozwole-
nia użytkownika. Wirus nie może zarazić innego kompute-
ra w sieci dopóki ktoś nie uruchomi zainfekowanego pliku.
Koń Trojański: W kontekście oprogramowania kompu-
terowego, Koń Trojański jest programem, który w przeci-
wieństwie do wirusa, zawiera lub instaluje złośliwe opro-
gramowanie (czasem nazywane trojanami) pod przy-
krywką innej operacji.
Robaki: robak komputerowy jest samoreplikującym
się programem. Korzysta z sieci w celu rozsyłania ko-
Słabe punkty
Złośliwy kod taki jak robak czy boty, wykorzystują wiele
słabych punktów w różnych środowiskach oprogramo-
wania komputerowego. Takie działania mogą zakończyć
się utratą tajności danych, haseł, numerów kart kredy-
towych lub przeprowadzeniem ataku DdoS czy wyłu-
dzaniem pieniędzy. Wielu autorów botnetów udostępnia
swoje wyłowione z sieci maszyny zombie lub wynajmu-
je je za pieniądze.
Tego typu oprogramowanie powoduje wiele implikacji
wśród użytkowników komputerów. Kilkanaście organiza-
cji straciło miliony dolarów z powodu rozprzestrzeniania
się takiego oprogramowania w ich sieciach. Na przykład
w północno-wschodniej firmie produkcyjnej, złośliwy kod
12
8/2010
Z łośliwy kod może być zdefiniowany jako kod, któ-
439176229.018.png
 
439176229.019.png 439176229.020.png 439176229.001.png 439176229.002.png 439176229.003.png
Analiza złośliwego kodu
Rysunek 1. File Inspector wskazuje na kompresor UPX
zniszczył wszystkie firmowe programy oraz generatory
kodów. W konsekwencji, firma straciła miliony dolarów,
straciła czołową pozycję na rynku i musiała zwolnić 80
pracowników.
Analiza martwa
Analiza martwa inaczej statyczna, jest najbezpieczniej-
szą metodą inspekcji dowolnych złośliwych binarii. Ko-
rzystając z tej techniki badawczej nigdy nie uruchomimy
programu, ale skorzystamy z różnego rodzaju deasem-
blerów np Win32Dasm czy IDA Pro w celu bezpieczne-
Potrzeba analizy
Podobnie jak istnieje potrzeba tworzenia złośliwego ko-
du istnieje także niezliczona liczba powodów aby ana-
lizować robaki, wirusy i malware. Główną przyczyną
zmuszającą do analizy malware jest fakt braku dostę-
pu do kodu źródłowego. Jedynym sposobem zrozumie-
nia zasad działania tego typu oprogramowania jest ich
dogłębna analiza. Inna przycyzna leży w naturze osób
uwielbiających odkrywać ukryte funkcje programów po-
przez testowanie i rozbieranie ich na kawałki przy użyciu
deasemblera i debuggera.
Główne techniki analizy kodu to:
• analiza (statyczna) martwa
• analiza (dynamiczna) na żywo
Przedyskutujemy każda z tych strategii w następnych
rozdziałach. Dla tej konkretnej analizy wybralismy ro-
baka o nazwie NetSky-P. Należy on do ścisłej czo-
łówki na liście robaków zgłaszanych przez antywirusa
SOPHOS w miesiącu maju 2007 ( http://sophos.com/
security/top-10/ ).
Rysunek 2. Temat wiadomości e-mail
www.hakin9.org
13
 
 
439176229.004.png 439176229.005.png 439176229.006.png
 
ATAK
go zbadania zawartości pliku binarnego. Z tych narzędzi
będziemy korzystać w następnym rozdziale.
stając z ich pomocy jesteśmy w stanie wypakować wie-
le plików popularnych kompresorów.
Czasami autor malware stara się utrudnić wypakowa-
nie konkretnych plików poprzez zamaskowanie w bina-
riach bajtów sygnatury aby wyżej wymienione narzędzia
nie mogły wykryć poprawnego kompresora. Aby poko-
nać ten problem, narzędzia takie jak ProcDump posia-
dają funkcję analizy heurystycznej, która dostarczy na-
zwę kompresora opartą o definicję heurystyczną W nie-
których przypadkach, musimy ręcznie rozpakować bina-
ria. Manualne wypakowywanie jest innym ciekawym te-
matem, o którym ze względu na miejsce, nie możemy
tutaj dyskutować. Na cele artykułu pozostaniemy przy
narzędziach dekompresji wspomnianych wcześniej.
Przyjmijmy, że akcja inicjalizującą jest wykrycie, czy
badany plik jest faktycznie spakowany czy nie. W tym
celu skorzystamy z narzędzia nazwanego file insPEctor
XL. Jak widać na Rysunku 1, narzędzie to zgłasza, że
plik jest spakowany przy użyciu Ultimate Packer for Exe-
cutables (UPX).
UPX jest narzędziem o otwartym kodzie ( open sour-
ce ), które jest dostępne za darmo na stronach Source-
forge.net. Po ściągnięciu i zainstalowaniu, może zostać
użyte przy pomocy linii poleceń/komend wraz z nazwą
naszego malware jako argumentem tworzącym dane
wyjściowe zaprezentowane na Liscie 1.
Kopresory i dekompresory
Istnieje popularny format plików wykonywalnych na plat-
formie MS Windows zwany formatem PE. Każdy plik wy-
konywalny w systemie MS Windows jest plikiem formatu
PE. Zazwyczaj autor złośliwego kodu korzysta z unikal-
nych technik, aby podstawowe sposoby analizy nie od-
niosły porządanych rezultatów.
Typowe podejście dla wielu twórców malware po-
lega na wykorzystaniu kompresorów binarnych, któ-
re zmniejszają ilośc wymaganego miejsca oraz zmie-
niają zawartość przy użyciu algorytmów maskują-
cych. W tych scenariuszach dezasemblacja nie bę-
dzie efektywna. Pośród najczęściej używanych kom-
presorów plikowych znajdują się narzędzia takie jak
UPX i ASPack.
Aby dowiedzieć się który kompresor został użyty mo-
żemy skorzystać z narzędzia o nazwie insPEctor XL.
Jak nazwa wskazuje, narzędzie to zrobi inspekcję pliku
w celu wykrycia sygnatur z których wywnioskuje nazwę
kompresora. Pliki poddane fazie analizy powinny zo-
stać wypakowane, istnieją różne narzędzia, które potra-
fią to zrobić w zabezpieczonym środowisku. Jedno z ta-
kich narzędzi nazywa się PEID, inne ProcDump. Korzy-
Listing 1. Rozpakowywanie pliku przy użyciu UPX
C : \ Documents and Settings \ Hardik Shah \ Desktop \ upx300w \ upx300w > upx - d malware . exe
Ultimate Packer for eXecutables
Copyright ( C ) 1996 , 1997 , 1998 , 1999 , 2000 , 2001 , 2002 , 2003 , 2004 , 2005 , 2006 , 2007
UPX 3. 00 w Markus Oberhumer , Laszlo Molnar & John Reiser Apr 27 th 2007
File size Ratio Format Name
-------------------- ------ ----------- -----------
28160 <- 6384 58.18 % win32 / pe malware . exe
Unpacked 1 ile .
Rysunek 3. Różne ciągi znaków zawarte w widomościach wychodzących
14
8/2010
439176229.007.png
 
439176229.008.png 439176229.009.png
 
Analiza złośliwego kodu
Dezasemblacja i identyfikacja ciągów danych
Złośliwy plik wykonywalny może zawierać różne cią-
gi , które programista mógł na stałe zaporogramować
podczas rozwijania aplikacji. Taki ciąg może być komu-
nikatem błędu lub może być związany z funkcjonowa-
niem złośliwego kodu. Na przykład, jeśli plik wykony-
walny wysyła wiadomości elektroniczne może zawierać
zróżnicowane ciągi dla różnych tytułów na przyład: RE:
Oto załącznik, ++ Wirusa nie stwierdzono ++, i tak da-
lej. Dlatego, po rozpakowaniu pliku, musimy go zdeza-
semblować korzystając z narzędzi typu Win32Dasm al-
bo IDA Pro w celu analizy pospolitych ciągów. Ta anali-
za da nam ogólną wiedzę na temat działania pliku. Ist-
nieją różne ciągi, które możemy potwierdzić przez anali-
zę. Ciągi te mogą zawierać strukturę wiadomości e-ma-
il albo temat czy nazwę załączonego pliku, który robak
właśnie wysyła.
Teraz, kiedy z powodzeniem rozpakowaliśmy bina-
ria, możemy przejść do dezasemblacji oraz przeprowa-
dzić prace śledcze. Pozwólcie, że przeprowadzimy sta-
tyczną analizę binariów korzystając z dezasemblera IDA
Pro. Pierwsza rzecz na którą zwrócimy uwagę podczas
dezasemblacji to ciągi. Mogą one dostarczyć różnorod-
nych informacji takich jak temat wiadomości e-mail, wia-
domość, wpisy rejestru, rozszerzenia pliku, oraz nazwy
pliku. Przykład na Rysunku 2 pokazuje temat wiadomo-
ści e-mail, którego robak NetSky-p używa kiedy wysyła
wiadomości z zainfekowanej maszyny.
Bazując na zebranych do tej pory informacjach, mo-
żemy bezpiecznie stwierdzić, że robak NetSky-P wysyła
wiadomości e-mail używając różnych tytułów, nazw pli-
ków i rozszerzeń. Co więcej, przecho-
wuje niektóre wpisy w rejestrze aby mógł być włączany
przy każdym starcie zainfekowanego komputera.
Analiza na żywo
W scenariuszu analizy na żywo (dynamicznej), musi-
my sprawdzić ogólną funkcjonalność oraz wewnętrzne
działania kodu poprzez uruchomienie aplikacji w kontro-
lowanym środowisku. To pomaga nam w eliminowaniu
fałszywych pozytywów przypisanych do procesów anali-
zy statycznej. Niektórzy autorzy malware specjalnie za-
wierają różnego rodzaju ciągi i funkcje w celu uniemożli-
wienia dokładnej analizy ich aplikacji (lub zawierają kod,
który wykrywa wirtualne środowisko i zmienia ścieżki
wykonywania); takie maskujące zagrywki, mogą być za-
uważone właśnie podczas analizy na żywo.
Z tego powodu mamy zestaw dwóch systemów pracu-
jących na MS Windows XP Professional SP2. Na pierw-
szej maszynie zainstalowaliśmy Ollydbg aby umożliwić
debugging robaka NetSky-P, drugi system był podłączo-
ny do tej samej sieci tak abyśmy aktywnie mogli mo-
nitorować różne zachowania robaka w czasie rzeczy-
wistym. Na obydwu komputerach uruchomiliśmy Wire-
skark, oraz FileMon tylko na drugim.
Musisz wiedzieć, że należy użyć wszelkich możli-
wych środków ostrożności podczas pracy z malware,
aby utrzymać go w kwarantannie, z daleka od środo-
wiska roboczego. W naszym przypadku zdecydowa-
liśmy na maksymalnie wyizolowaną sieć (air-gapped
network) bez dostępu do sieci produkcyjnych czy in-
ternetu. Wielu innych wybiera popularne środowisko
VMWare do przeprowadzenia tego typu eksperymen-
Rysunek 5. Nazwy plików z których korzysta robak na zainfekowanym systemie
Rysunek 4. Wyświetlanie typów rozszerzeń
plików, które robak NetSky-P umieszcza w
wysyłanych załącznikach
Rysunek 6. Ilustruje niektóre wpisy w rejestrze używanych przez robaka
www.hakin9.org
15
 
 
439176229.010.png 439176229.011.png 439176229.012.png 439176229.013.png 439176229.014.png
 
ATAK
tów aby pozostać w granicach maszyn wirtualnych. Ko-
niec końców jest to wybór osobisty w jakim środowisku
zechcesz experymentować, nalegamy tylko aby było
ono odpowiednio chronione. Po przygotowaniach śro-
dowiska uruchomiliśmy debugger OllyDbg oraz załado-
waliśmy plik NetSky.exe . Następnie ustawiliśmy punk-
ty kontrolne na różnych ciągach tak jak to zostało po-
kazane na Rysunku 7. Ustawiliśmy punkt kontrolny na
ciągu: System\Current Control Set\Services\WksPatch
i uruchomil OllyDbg, który zatrzymał się na wyzna-
czonym punkcie. Ostrożne badanie ciągu potwierdzi-
ło wszystkie wcześniejsze odkrycia uzyskane podczas
analizy statycznej. Teraz usuwamy początkowo usta-
wione punkty kontrolne oraz korzystamy z właściwo-
ści typu animate over oraz innych metod debugowania
(step in and step out) w celu wyśledzenia różnych zapy-
tań API Windowsa takich jak GetinternetconnectionSta
te() i RegCreateKeyEx() . Z tej analizy wnioskujemy, że
robak tworzył również oddzielne wątki wysyłające wia-
domości e-mail.
Klucze rejestru
Aby się rozprzestrzenić, złośliwy kod potrzebuje być
w jakiś sposób uruchomiony. Może to być osiągnięte za-
równo poprzez uruchomienie złośliwego pliku albo klik-
nięcie w odnośnik na stronie internetowej czy też opcje
autostartu dostępną w rejestrze Windowsa. Nowocze-
sne malware korzystają różnego rodzaju chwyty socjo-
techniczne. Po tym jak użytkownik końcowy uruchomi
plik poraz pierwszy, aplikacja będzie mogła się urucha-
miać poprzez wpisy w rejestrze za każdym razem, gdy
włączamy komputer.
Aby zbadać takie zachowanie, będziemy używać na-
rzędzia nazwanego RegMon znajdującego się na sysin-
Rysunek 7. Punkt kontrolny w OllyDebugger
Rysunek 8. Jeden z wpisów rejestru utworzonych przez robaka
16
8/2010
439176229.015.png
 
439176229.016.png 439176229.017.png
 
Zgłoś jeśli naruszono regulamin