Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Wykorzystanie opensourcowego projektu Cuckoo do analizy malware’u
Wstęp
W pracy administratora sieci warto posiadać stanowisko do analizy złośliwego oprogramowania. Malware, który ostatnio masowo przychodzi jako scam mailowy jest często niewykrywalny przez silniki antywirusów w pierwszym etapie. Nawet jeśli nasz skaner mailowy zablokował podejrzany załącznik dobrze jest przeanalizować tego typu oprogramowanie, co może dać nam odpowiedź na pytanie, czy nasza sieć była specyficznym celem danego wirusa? Również, gdy jest już za późno i odkryliśmy już efekty jego szkodliwej aktywności w naszej sieci, warto przeanalizować podejrzane pliki w bezpiecznym środowisku. Taka wiedza o działaniu malware’u da nam wiedzę, jakie pliki lub wpisy do rejestru zostały zmodyfikowane, co umożliwi nam pełne oczyszczenie zainfekowanych stacji.
Instalacja Cuckoo
W Internecie znajdziemy dużo tutoriali instalacyjnych Cuckoo. Tu wskażemy ciekawsze poradniki:
- Oficjalny manual projektu,
- Tutorial opisujący instalację opcjonalnych ale istotnych i ciekawych rozszerzeń Cuckoo – Yara i Volatility.
Dzięki Yara możemy wykorzystywać sygnatury innych badaczy malware’u i go klasyfikować ale też możemy tworzyć własne sygnatury po przeprowadzeniu analizy i wyłuskaniu charakterystycznych cech kodu.
Volatility służy nam do analizy zrzutów pamięci z systemu poddanego działaniu złośliwego kodu. Volatility umożliwia rozpoznanie ukrytych procesów, ekstrakcję binariów z rozpoznanych procesów i dzięki analizie pamięci mamy pełny obraz aktywności malware’u.
Budowa środowiska Cuckoo
Środowisko Cuckoo budujemy w oparciu o dystrybucję Linux, najwięcej tutoriali opisuje instalację na Ubuntu LTS lub Debian. Dzięki oprogramowaniu do wirtualizacji VirtualBox uruchamiamy maszyny wirtualne z różnymi systemami operacyjnymi, wersjami, patchami. System hosta zawiera oprogramowanie Cuckoo napisane w Pythonie, a z wirtualnymi maszynami komunikuje się poprzez wydzieloną sieć Host-Only 192.168.56.0. W naszym przykładzie host posiada adres sieciowy 192.168.56.1 a maszyna wirtualna, w której uruchamiamy malware ma adres 192.168.56.101. Konfigurujemy również współdzielony katalog dla hosta i maszyny wirtualnej, gdzie za pomocą skryptu submit.py umieszczamy analizowany kod w maszynie testowej.
Przykładowa analiza pliku program.exe
Każdą analizę poprzedza przywrócenie maszyny wirtualnej do stanu zerowego – musimy mieć czysty, niezainfekowany system.
Uruchamiamy Cuckoo, który startuje przygotowaną wirtualną maszynę w tym wypadku Windows XP Service Pack2 i przesyłamy do Cuckoo podejrzany plik.
Cuckoo uruchomi binarkę program.exe, następnie zostaną przechwycone wywołania systemowe, importowane biblioteki, odwołania do rejestrów, ruch sieciowy z analizowanej maszyny, zrzut pamięci a także zostanie przeprowadzona analiza statyczna pliku program.exe.
Gdy Cuckoo przeprowadza analizę, warto uruchomić przygotowany serwer www, gdzie będzie można zobaczyć rezultaty działań w formacie html.
Z pierwszych linijek raportu dotyczących struktury pliku dowiadujemy się, że program.exe to plik wykonywalny zgodny ze standardem Portable Executable, co często potwierdza nam przypuszczenia, że mamy do czynienia z programem wykonywalnym ukrytym pod rozszerzeniami przeznaczonymi dla innych plików np. pdf, paf itp.. Ciekawsza informacje jest taka, że plik jest spakowany za pomocą UPX, co umożliwia oszukanie silników antywirusów.
Po rozpakowaniu program.exe i wykonaniu ponownej analizy okaże się, że w sekcji Static będziemy mogli podejrzeć właściwe importy bibliotek. Po lewej stronie importy spakowanej wersji (wszystkie importy), po prawej rozpakowany program.exe (fragment importów).
Dalej w sekcji Strings można przenalizować kod programu w poszukiwaniu charakterystycznych ciągów znaków – możemy tam znaleźć np. nazwy serwerów C&C kontrolujących botnet, a może znajdą tam się odwołania do naszej domeny… Jednakże w przypadku analizy strings lepsze efekty daje ekstrakcja binariów ze zrzutu pamięci (np. za pomocą Volatility), ponieważ plik znajdujący się na dysku może posiadać wielokrotnie spakowany i kodowany zapis, co ma uniemożliwić wykrycie przez oprogramowanie antywirusowe.
W kolejnej sekcji Network Analysis znajdziemy informacje o hostach, które uczestniczyły w komunikacji w czasie działania malware’u, co może wskazać nam lokalizację serwera C&C lub atakującego hosta. Jednakże w naszej gestii jest odpowiednia konfiguracja sieciowa i zabezpieczenie sieci w przypadku podłączenia stanowiska Cuckoo Internetu. Zalecamy separację segmentów sieci Cuckoo od sieci produkcyjnej.
W raporcie umieszczony jest link do pliku PCAP całego ruchu sieciowego, jaki miał miejsce w czasie działania podejrzanego pliku, możemy przenalizować ten ruch w innym oprogramowaniu np. Wireshark.
W sekcji Behaviour wkraczamy w świat analizy zachowań malware’u, czyli tego co jest sednem działania Cuckoo.
Z sekcji Files dowiadujemy się, że oprogramowanie wykorzystuje bibliotekę RSA -najprawdopodobniej do szyfrowania swojego ruchu sieciowego, który odbywał się pomiędzy atakowaną stacją, a serwerem atakującego właśnie na porcie 443, w celu zamaskowania podejrzanego ruchu w szumie innej komunikacji https. Następne informacje wskazują, że malware odczytał lub skopiował plik C:boot.ini oraz utworzył w katalogu tymczasowym plik backdoor.bat. Analizowany program również odwoływał się do Dziennika Zdarzeń systemu Windows, co może wskazywać, że kod ten usuwa z dziennika ślady swojej aktywności. Oprócz plików mamy również informacje o wpisach do rejestrów, do których odwołuje się malware, który m.in. sprawdzał nazwę komputera.
Te poszlaki służą nam jako punkty wyjściowe w szczegółowej analizie działania procesu program.exe.
Uzyskujemy tu potwierdzenie, że program.exe służy do ściągnięcia kolejnego pliku o nazwie backdoor.bat, który trzeba będzie poddać dalszej analizie. W kolejnym kroku pobierany jest plik konfiguracyjny C:\\boot.ini.
Malware czyści Dziennik zdarzeń systemu Windows:
Sprawdzając kolejne wywołania procesu program.exe odkrywamy odwołanie do bibliotek samsrv.dll, co oznacza, że prawdopodbnie został wykonany zrzut hashy haseł użytkowników systemu. Zatem oczyszczanie maszyn należy zacząć od wymuszenia zmiany haseł i/lub blokady kont.
Podsumowanie
Posiadanie stanowiska do analizy malware’u jest niezbędne do pełnej pracy administratora IT. Cuckoo jako rozwiązanie opensource może świetnie wzbogadzić tę pracę i pozwala zwiększyć nam tak bezpieczeństwo, jak świadomość zagrożeń w naszej sieci. W analizowanym przykładzie zostało przedstawiona analiza binarki program.exe, która została przygotowana na potrzeby tego artykułu, ma wartość stricte edukacyjną i jej celem było zaznajomienie szerszego grona odbiorców z zaletami posadania środowiska sandboxowego Cuckoo do walki z malware’em.
Działanie program.exe:
- nawiązuje połączenie z serwerem atakującego (192.168.56.1) na porcie 443,
- przekazuje plik backdoor.bat do zainfekowanej stacji,
- pobiera plik C:\boot.ini,
- czyści Dziennik Zdarzeń Windows,
- wykonuje zrzut hashy haseł użytkowników systemu Windows,
- pobiera informacje o systemie
Cuckoo umożliwiło nam analizę spakowanej binarki i odkrycie wszystkich wymienionych powyżej czynności analizowanego złośliwego kodu program.exe. Forensics jest skomplikowany – trzeba wiedzieć, gdzie patrzeć i czego szukać, ale trening na Cuckoo z kodem, który kontrolujemy jest w stanie poszerzyć tę wiedzę.
– Bartek Jerzman
Artykuł super, ale nazwa własna to nie Linuks, a Linux.
Cytat: „Środowisko Cuckoo budujemy w oparciu o dystrybucję Linuks,…”
Można napisać Linuksa, proszę o poprawienie. Pozdrawiam.
Taka dygresja na temat tej alternatywnej formy przy odmianie. Myślę, że nie jest takie dobre. Szkoda, że RJP zezwalając na taką odmianę, nie opisała przypadków, gdy jest to niezalecane. Moim zdaniem w języku technicznym, gdzie ważna jest nazwa pierwotna, powinno się stosować zapis z „x”. Teraz zapis z „ks” i „x” to równorzędne formy. Póki z Linuxem każdy się domyśli o co chodzi, to przy informacji nt. „Foobareksa”, nie wiemy czy chodzi o „Foobarex” czy „Foobareks”. Może zaczną się kiedyś scamy wykorzystujące problem z tą odmianą? ;)
A za artykuł dziękuję, bardzo fajny :)
PS: Brr, może zbytnio chcę dbać o mniejszości, ale polecam poszukać coś o dyskalkulii. To tak na temat captchy.
Foreks?
Faktycznie, to na prawdę strasznie ważne.