Panoramica
Disclaimer: tutto ciò che viene mostrato in questo post è stato eseguito esclusivamente su una macchina virtuale, utilizzando la Flare VM, in un ambiente isolato e sicuro.
Uno scenario molto comune è quello di ricevere un allegato via email, oppure di scaricarlo direttamente da internet. Il file che ci troviamo davanti ha estensione `.doc`, ma solo l'estensione non basta: nulla ci garantisce che il file sia realmente un documento Word.
In questo articolo vedremo come riconoscere il vero tipo di un file, come analizzarlo da un punto di vista statico e come riconoscere gli indicatori di un potenziale malware camuffato da allegato innocuo.
Riconoscere il tipo di file
La prima cosa da fare è capire che tipo di file abbiamo davanti. Nel nostro caso il file ha estensione `.doc`, ma ciò che ci interessa è il formato reale del contenuto, non la semplice etichetta.
Come si vede nel video, eseguendo il comando `file` il contenuto viene identificato come un documento RTF (Rich Text Format) e non come un `.doc` Word come suggerirebbe l'estensione. Questa discrepanza è già di per sé un forte campanello d'allarme.
Cos'è un file RTF
Un file RTF permette di inserire testo formattato: grassetti, testo colorato, immagini e molto altro.
Oltre al testo, può contenere oggetti OLE (Object Linking and Embedding), una tecnologia sviluppata da Microsoft che permette di incorporare un file dentro un altro file. Per assurdo, un file RTF potrebbe quindi contenere al suo interno un file eseguibile.
Per fugare ogni dubbio sull'origine del file, il passo successivo è calcolare la hash SHA-256 del file e confrontarla con le database online: basta caricare il file su servizi come VirusTotal, oppure cercare l'hash in rete.
A questo punto possiamo constatare con ragionevole certezza che il file contiene un exploit per un componente di Microsoft, oppure un malware vero e proprio, oppure un loader che, una volta aperto, scaricherà da internet il malware stesso.
Analisi statica
Ora che sappiamo che tipo di file è e come funziona, siamo in grado di usare gli strumenti giusti per l'analisi.
Un passo fondamentale è verificare se il file RTF contiene oggetti OLE incorporati e, se sì, cercare di estrarli per analizzarli singolarmente. Per farlo possiamo sfruttare lo strumento rtfobj, incluso nella suite di Flare VM.
Come si osserva nell'immagine, lo strumento ha rilevato la presenza di un oggetto OLE all'interno del documento. Questo è un chiaro segnale che il file non è un semplice testo formattato, ma un contenitore di contenuti potenzialmente malevoli.
Un altro passaggio utile è quello di cercare le stringhe nel file:
Se convertiamo le stringhe dal formato HEX otteniamo questo:
Quindi proviamo a cercare su google:
È chiaro cosa sta succedendo: questo file `.doc` sfrutta una vulnerabilità nel processo EQNEDT32.EXE appartenente a Microsoft Office. Non ci resta altro che trovare lo shellcode, ovvero il pezzo di codice che verrà eseguito una volta aperto il file.
Per avere una visione più chiara rispetto a `strings`, usiamo rtfdump: l'output è il seguente:
La riga numero 4 indica chiaramente la presenza di un oggetto OLE (Object Linking and Embedding). Estraiamo e decodifichiamo l'oggetto numero 4:
```sh rtfdump.py -s 4 -H -d file.doc > payload_ole.bin ```
A questo punto abbiamo il file payload_ole.bin, che possiamo analizzare con scdbg, un emulatore apposito per l'analisi dello shellcode:
Vediamo subito che il primo offset (il numero 0) contiene una chiamata alla API GetProcAddress. Visualizziamo il contenuto selezionando 0:
Vediamo che viene scaricato un file eseguibile: Fortyggedes.exe, che viene posizionato nella directory `C:\Users\ich\AppData\Roaming\word.exe`.
Infine viene eseguito con un'altra chiamata alle API di Windows:
CreateProcessW( , C:\Users\ich\AppData\Roaming\word.exe ) = 0x1269
Ora il malware vero e proprio — Fortyggedes.exe, rinominato come word.exe per mimetizzarsi meglio tra gli altri processi — è in esecuzione con un suo processo ed è completamente indipendente. Viene quindi chiuso il processo di EQNEDT32.EXE che aveva scaricato ed avviato il malware:
ExitProcess(0)
Quello che abbiamo appena analizzato è chiamato anche Stager: il file iniziale con estensione `.doc` fa da ponte per poi scaricare da internet il vero malware.