NFsec Logo

O statycznej analizie plików Microsoft Office słów kilka albo i więcej cz.I

12/11/2021 (3 tygodnie temu) 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.

Podsumowując: z analizy dowiedzieliśmy się, że autorem podesłanego arkusza był „Test”, a używaną przez niego czcionką była cyrylica. Dodatkowo z polecenia 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.

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , , , , , ,

Komentowanie tego wpisu jest zablokowane.