Kompleksowe szkolenie: wprowadzenie do bezpieczeństwa IT od sekuraka z rabatem 50%. Jedyna taka okazja w tym roku. Nie przegap! :-)

Wykorzystanie opensourcowego projektu Cuckoo do analizy malware’u

16 marca 2015, 10:24 | Aktualności | komentarze 4

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:

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.

image001

Uruchamiamy Cuckoo, który startuje przygotowaną wirtualną maszynę w tym wypadku Windows XP Service Pack2 i przesyłamy do Cuckoo podejrzany plik.

image002

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.

image003

Gdy Cuckoo przeprowadza analizę, warto uruchomić przygotowany serwer www, gdzie będzie można zobaczyć rezultaty działań w formacie html.

image004

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.

image005

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).

image006

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.

image008

W sekcji Behaviour wkraczamy w świat analizy zachowań malware’u, czyli tego co jest sednem działania Cuckoo.

image009

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.

image010

Te poszlaki służą nam jako punkty wyjściowe w szczegółowej analizie działania procesu program.exe.

image011

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.

image012

Malware czyści Dziennik zdarzeń systemu Windows:

image013

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.

image014

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

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. gunter

    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.

    Odpowiedz
    • 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.

      Odpowiedz
      • Foreks

        Foreks?

        Odpowiedz
    • Faktycznie, to na prawdę strasznie ważne.

      Odpowiedz

Odpowiedz na Krzysiu