O statycznej analizie plików Microsoft Office słów kilka albo i więcej cz.I
Napisał: Piotr Kaczmarzyk
12/11/2021 w Bezpieczeństwo Brak komentarzy. (artykuł nr 801, ilość słów: 1443)
Bardzo często jesteśmy zmuszeni szybko ocenić potencjalną szkodliwość pliku MS Office, aby zobaczyć czy dany plik należy dalej analizować, czy też możemy od razu stwierdzić, że zawiera on potencjalnie złośliwy kod. Często otrzymujemy różnego rodzaju wiadomości na nasze skrzynki e-mail i czasem nawet wiadomości od znanych nam osób wyglądają dziwnie lub zupełnie nie poruszają tematu naszych dotychczasowych konwersacji, a nie chcemy wysyłać plików od razu do sandboksów typu Virustotal. Tu przechodzimy do meritum tytułu. Statyczna analiza jest próbą określenia potencjalnych oznak złośliwego kodu bez uruchamiania tego pliku.
Do takiej analizy świetnie nadaje się środowisko systemu Linux, które w samo w sobie zawiera kilka ciekawych narzędzi, jak i również specjalnie do tego przeznaczona dystrybucja Remnux. Jest również SANS SIFT. Wstępnie zakładamy, że udało nam się ściągnąć podejrzany plik na maszynę Linuksową. Na początku należałoby określić hash pliku i sprawdzić, czy plik nie jest już znany antywirusom. Abolutnie przeważająca część dzisiejszych kampanii szkodliwego oprogramowania (ang. malware) nie jest skierowana przeciw konkretnemu odbiorcy, a jest wysyłana do wielu zróżnicowanych celów i istnieje spora szansa, że już ktoś podał dany plik analizie. Jako przykład służy mi tutaj próbka Quakbota z niedawno przeprowadzonej kampanii.
remnux@remnux:~/Downloads/Qakbot$ sha256sum Claim-1025548890-09242021.xls 57b98be20090b2f662ba9ea531b94f283788619e1ff905fa395870c4f357363b Claim-1025548890-09242021.xls
Inne polecenia, które możemy użyć do sum kontrolnych to:
md5sum # hash MD5 sha1sum # hash SHA1
I na pierwszy rzut oka widać, że próbka raczej nie ma pokojowych zamiarów:
https://www.virustotal.com/gui/file/57b98be20090b2f662ba9ea531b94f283788619e1ff905fa395870c4f357363b
https://www.malwares.com/report/57b98be20090b2f662ba9ea531b94f283788619e1ff905fa395870c4f357363b
W przypadki serwisu VirusTotal polecam zajrzeć również w zakładkę community (społeczność) jako, że często znajdują się tam interesujące komentarze i linki do analiz innych badaczy (choć tu należy również zachować ostrożność). Ale na chwilę przyjmijmy, że nie posiadamy tych informacji i musimy sami określić czy plik, z którym mamy do czynienia, jest rzeczywiście tym za którego się podaje:
remnux@remnux:~/Downloads/Qakbot$ file Claim-1025548890-09242021.xls Claim-1025548890-09242021.xls: Composite Document File V2 Document, Little Endian, Os: Windows, Version 10.0, Code page: 1251, Author: Test, Last Saved By: Test, Name of Creating Application: Microsoft Excel, Create Time/Date: Fri Jun 5 19:17:20 2015, Last Saved Time/Date: Fri Sep 24 10:05:02 2021, Security: 0
Innymi przydatnymi narzędziami są:
remnux@remnux:~/Downloads/Qakbot$ trid Claim-1025548890-09242021.xls TrID/32 - File Identifier v2.24 - (C) 2003-16 By M.Pontello Definitions found: 13114 Analyzing... Collecting data from file: Claim-1025548890-09242021.xls 46.5% (.XLS) Microsoft Excel sheet (alternate) (56500/1/4) 26.7% (.XLS) Microsoft Excel sheet (32500/1/3) 20.1% (.XLS) Microsoft Excel sheet (alternate) (24500/1/2) 6.5% (.) Generic OLE2 / Multistream Compound (8000/1) remnux@remnux:~/Downloads/Qakbot$ exiftool Claim-1025548890-09242021.xls ExifTool Version Number : 12.30 File Name : Claim-1025548890-09242021.xls Directory : . File Size : 410 KiB File Modification Date/Time : 2021:09:24 15:14:44-04:00 File Access Date/Time : 2021:11:09 09:30:41-05:00 File Inode Change Date/Time : 2021:11:09 09:25:09-05:00 File Permissions : -rw-r--r-- File Type : XLS File Type Extension : xls MIME Type : application/vnd.ms-excel Author : Test Last Modified By : Test Software : Microsoft Excel Create Date : 2015:06:05 18:17:20 Modify Date : 2021:09:24 09:05:02 Security : None Code Page : Windows Cyrillic Company : App Version : 16.0000 Scale Crop : No Links Up To Date : No Shared Doc : No Hyperlinks Changed : No Title Of Parts : Sheet1 Heading Pairs : Worksheets, 1 Comp Obj User Type Len : 32 Comp Obj User Type : .Microsoft Excel 2003 Worksheet
Można stwierdzić, że istotnie jest to plik Excel, ale w informacjach zawartych powyżej powinno nam się zapalić parę czerwonych światełek: czy nasz nadawca przedstawia się nam jako Test oraz czy jest użytkownikiem cyrylicy? Przejdźmy do dalszej analizy tego, co jest wewnątrz pliku. Bardzo pomocnym jest tu polecenie strings
. Oczywiście ilość wyników może być duża:
remnux@remnux:~/Downloads/Qakbot$ strings Claim-1025548890-09242021.xls | wc -l 4754
W celu przefiltrowania wyników w poszukiwaniu konkretnych wzorców możemy pomóc sobie poleceniem grep
:
remnux@remnux:~/Downloads/Qakbot$ strings Claim-1025548890-09242021.xls | grep http http://190.14.37.173/ http://111.90.148.104/ http://51.89.115.111/ remnux@remnux:~/Downloads/Qakbot$ strings Claim-1025548890-09242021.xls | grep Win -C 3 = DV Dim obj tectedVi ewWindow7Al GGo0To 0 O?No hingD^@W -- `.Add. ~(sM Excel Win16 Win32 Win64F VBA6 VBA7 VBAProject -- asWorkbook_Activateas InitWorkbook saWorkbook_Opensa$ objProtectedViewWindow^*0 ProtectedViewWindow4 ssaaInitWorkbookssaa Application Version -- C:\Program Files\Common Files\Microsoft Shared\VBA\VBA7.1\VBE7.DLL C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE Excel C:\Windows\System32\stdole2.tlb stdole C:\Program Files\Common Files\Microsoft Shared\OFFICE16\MSO.DLL Office MSForms C:\Windows\system32\FM20.DLL C:\Users\Test\AppData\Local\Temp\VBE\MSForms.exd auto_open auto_close
Już po tych dość prostych wyszukiwaniach widać kilka interesujących wyników, które wskazują na użycie makra wewnątrz dokumentu w dodatku odwołującego się do plików DLL. Możemy też sprawdzić reputację adresów, które znaleźliśmy w wynikach np.: https://www.virustotal.com/gui/ip-address/190.14.37.173/detection. Również i tutaj przechodząc do zakładki relations (powiązania) możemy dowiedzieć się dodatkowych informacji i czy jakieś inne pliki są powiązane z tym adresem IP i jaką reputację mają. Dalej możemy jeszcze przeskanować plik przy pomocy clamscan
i signsrch
. Choć nie koniecznie może to dać wymierne wyniki:
remnux@remnux:~/Downloads/Qakbot$ clamscan Claim-1025548890-09242021.xls /home/remnux/Downloads/Qakbot/Claim-1025548890-09242021.xls: OK ----------- SCAN SUMMARY ----------- Known viruses: 8574390 Engine version: 0.102.4 Scanned directories: 0 Scanned files: 1 Infected files: 0 Data scanned: 1.23 MB Data read: 0.40 MB (ratio 3.08:1) Time: 19.523 sec (0 m 19 s) remnux@remnux:~/Downloads/Qakbot$ signsrch Claim-1025548890-09242021.xls Signsrch 0.2.4 by Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org optimized search function by Andrew http://www.team5150.com/~andrew/ disassembler engine by Oleh Yuschuk - open file "Claim-1025548890-09242021.xls" - 419328 bytes allocated - load signatures - open file /usr/share/signsrch/signsrch.sig - 3075 signatures in the database - start 2 threads - start signatures scanning: offset num description [bits.endian.size] -------------------------------------------- 0005f704 2417 MBC2 [32.le.248&] 00060dfc 2418 MBC2 [32.be.248&] - 2 signatures found in the file in 0 seconds - done
Kiedy jesteśmy już przy sygnaturach to nie sposób nie wspomnieć o narzędziu yara:
remnux@remnux:~/Downloads/Qakbot$ yara -w index.yar Claim-1025548890-09242021.xls Big_Numbers0 Claim-1025548890-09242021.xls Contains_VBA_macro_code Claim-1025548890-09242021.xls office_document_vba Claim-1025548890-09242021.xls
Należy zauważyć, że dla uproszczenia dany przykład nie był poddany obfuskacji, w takim przypadku można użyć poleceń: xorsearch
, brxor.py
, bbcrack
i oczywiście FLOSS.
string
widzimy auto_open
oraz odwołania do plików DLL i zakodowane adresy IP, które raczej nie wzbudzają zaufania. Jeśli chodzi nam o stwierdzenie potencjalnej złośliwości pliku, to właściwie na podstawie dostępnych poszlak moglibyśmy w tym monecie przestać. W następnej części przyjrzymy się jak można pójść krok dalej i obejrzymy zestaw narzędzi od Didiera Stevensa.