Stary log, nowe narzędzie

Pokazywałem już użycie narzędzia NetGrok do network forensic. Postanowiłem zobaczyć jak zostanie zaprezentowany ruch sieciowy zarejestrowany podczas infekcji systemu przez malware.

W tym eksperymencie użyłem starego zrzutu, o którym pisałem w cyklu o analizie malware, zrzuty można pobrać stąd. To, co interesuje mnie tym razem, to możliwość prostego odtworzenia sekwencji zdarzeń, a konkretnie sekwencji nawiązywanych połączeń. Prezentowane dalej przykłady pochodzą z pliku 2-infekcja.pcap.

Jeszcze małe uzasadnienie tego eksperymentu. Śmieszą mnie “hakerskie filmy” z latającymi cyferkami i innymi takimi efektami wizualnymi, ale muszę również przyznać, że jestem wzrokowcem , łatwiej mi dostrzec pewne rzeczy i powiązania między nimi, gdy zamiast białych literek na czarnej konsoli, mam nieco ładniejszą wizualizację sytuacji.

Najpierw spojrzenie na całą historię zdarzeń zarejestrowaną w pliku.

Komputer o adresie 172.16.0.41 to ofiara malware. Jak widać w czasie objętym zrzutem nawiązywał on komunikację z sześcioma innymi komputerami, z czego jeden znajdował się w sieci lokalnej, jeden natomiast nie odpowiedział (ten bez koloru oznaczony przerywanymi liniami). Poniżej zarejestrowana w logu informacja o aktywności 172.16.0.41 pokazana przy użyciu NetworkMiner:

To, czego brakuje mi w NetworkMiner to możliwość ustalenia sekwencji zdarzeń. Co prawda sesje TCP są opatrywane informacjami dotyczącymi czasu ich rozpoczęcia i zakończenia, ale już wysłane pakiety UDP nie.

Ponieważ celem jest uzyskanie sekwencji zdarzeń, w NetGrok można zmniejszyć zakres czasowy wizualizowanego ruchu sieciowego do minimum (np. kilku sekund), a następnie “przesuwać okno” po całym zarejestrowanym logu. Można uzyskać następujące rezultaty:

Rolę komunikacji z wewnętrznym serwerem o adresie IP 172.16.0.254 stosunkowo łatwo ustalić, tu można skorzystać z narzędzia NetworkMiner , które przedstawia następującą informację o pakietach wysyłanych z 172.16.0.41 do 172.16.0.254:

172.16.0.41 (Windows) –> 172.16.0.254 : 11 packets (696 Bytes), 0,00%25 cleartext (0 of 0 Bytes) UDP: 1030 –> 53 : 10 packets (638 Bytes), 0,00%25 cleartext (0 of 0 Bytes) UDP: 1032 –> 53 : 1 packets (58 Bytes), 0,00%25 cleartext (0 of 0 Bytes)

Jak widać host 172.16.0.41 korzysta z usługi DNS udostępnionej na 172.16.0.254, lista ciekawych wykorzystanych nazw:

Tu widać nawiązanie połączenia z adresem 67.43.232.37. Informację o tej sesji łatwo uzyskać z NetworkMiner :

Server: 67.43.232.37 [ss.MEMEHEHZ.INFO] TCP 8080 (1850 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1031 (215 data bytes sent), Session start: 2008-05-17 21:47:19, Session end: 2008-05-17 21:49:21

Tu z kolei nawiązane zostało połączenie z 72.10.167.74, kolor tego hosta świadczy o stosunkowo dużej ilości przesłanych danych. W NetworkMiner znajdują się następujące informacje o sesjach:

Server: 72.10.167.74 [nadsam0.info] TCP 80 (26445 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1033 (45 data bytes sent), Session start: 2008-05-17 21:47:21, Session end: 2008-05-17 21:47:22

Server: 72.10.167.74 [nadsam0.info] TCP 80 (38735 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1034 (48 data bytes sent), Session start: 2008-05-17 21:47:21, Session end: 2008-05-17 21:47:23

Server: 72.10.167.74 [nadsam0.info] TCP 80 (69452 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1035 (45 data bytes sent), Session start: 2008-05-17 21:47:21, Session end: 2008-05-17 21:47:23

Patrząc na port (80) oraz wielkość danych wysyłanych/pobieranych, można przypuszczać, że w tym momencie pobierane są pliki.

Tu pojawia się połączenie z 72.10.172.212.

Server: 72.10.172.212 [xx.sqlteam.info] TCP 5190 (1598 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1036 (178 data bytes sent), Session start: 2008-05-17 21:47:31, Session end: 2008-05-17 21:47:34

A tu znowu pojawia się komunikacja z IP: 72.10.167.74:

Server: 72.10.167.74 [nadsam0.info] TCP 80 (9552 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1038 (49 data bytes sent), Session start: 2008-05-17 21:47:34, Session end: 2008-05-17 21:47:35

Server: 72.10.167.74 [nadsam0.info] TCP 80 (26445 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1039 (45 data bytes sent), Session start: 2008-05-17 21:47:34, Session end: 2008-05-17 21:47:35

Server: 72.10.167.74 [nadsam0.info] TCP 80 (23375 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1037 (47 data bytes sent), Session start: 2008-05-17 21:47:34, Session end: 2008-05-17 21:47:35

Tu pojawia się z kolei połączenie z Server: 67.43.236.106:

Server: 67.43.236.106 [u.sqlteam.info] TCP 7000 (642 data bytes sent), Client: 172.16.0.41 (Windows) TCP 1041 (59 data bytes sent), Session start: 2008-05-17 21:47:35, Session end: 2008-05-17 21:47:36

Tutaj następuje próba komunikacji z 72.8.143.183, wysłany jest jeden pakiet UDP:

172.16.0.41 (Windows) –> 72.8.143.183 [serv1.alwaysproxy3.info] : 1 packets (32 Bytes), 0,00%25 cleartext (0 of 0 Bytes) UDP: 1044 –> 18386 : 1 packets (32 Bytes), 0,00%25 cleartext (0 of 0 Bytes)

I to wszystko. Nic nowego w stosunku do oryginalnej analizy, ale tak jakoś ładniej, bo z obrazkami.

Oryginał tego wpisu dostępny jest pod adresem Stary log, nowe narzędzie

Autor: Paweł Goleń