Memlabs lab2 – Walkthrough
Il presente Write-up mostra lo svolgimento del Lab2 del repository github Memlabs che potete trovare al presente Link: https://github.com/stuxnet999/MemLabs.
Gli strumenti utilizzati:
- Volatility Framework
- Cyberchef https://gchq.github.io/CyberChef/
- Comandi Linux (grep, file)
- 7zip
PRIMO FLAG:
Come prima operazione definiamo con il plugin imageinfo la versione del sistema target:

utilizziamo quindi per la nostra indagine il profilo Win7SP1x64 ricordiamoci sempre di specificare il profilo con “ – – profile=”
Dopo aver letto il “quesito” procediamo con l’analisi dei processi in corso al momento del dump, useremo il plugin pslist:

Questo plugin ci fornirà una serie di informazioni interessanti:
- è presente il processo di dumpit.exe, lo strumento usato per fare il dump di memoria
- è presente il processo notepad.exe, potenzialmente usato per la copia di password, come appoggio
- è presente il processo keepass.exe, gestore di password, molto interessante e utile per la risposta al quesito
- è presente il processo chrome.exe, anche questo utile per la risposta al quesito
Eseguiamo il plugin cmdline:

l’output evidenzia chiaramente l’utilizzo di un file apparentemente importante “hidden.kdbx”, sia dal processo keepass che notepad.
Procediamo quindi all’estrazione delle informazioni relative ai file usati con il plugin filescan ricordandoci di salvare l’output in un file di testo in modo da agevolare l’analisi e tenere l’output a portata di mano:
vol.py -f MemoryDump_Lab2.raw –profile=Win7SP1x64 filescan > filescan.txt
ora filtriamo il file di testo con il comando “grep” su hidden.kdbx

da questo output salviamoci l’offset del file utile per il prossimo passo in cui procederemo all’estrazione con il plugin dumpfiles:
vol.py -f MemoryDump_Lab2.raw –profile=Win7SP1x64 dumpfiles -Q 0x000000003fb112a0 -D .
non fidiamoci dell’estensione del file e verifichiamone la natura:

perfetto, ora abbiamo il modo di aprire questo file con l’applicativo keepassx ma ci viene richiesta una password:

Per poter recuperare la password per sbloccare il database, ho pensato che la password potesse essere contenuta in qualche file, quindi ho filtrato il file filescan.txt (contenente l’output del plugin filescan) con alcune parole chiave come password, Pass, assword, pwd, Pwd e così ho recuperato il file immagine contenente la password:

Procediamo ad estrarre il file png:
vol.py -f MemoryDump_Lab2.raw –profile=Win7SP1x64 dumpfiles -Q 0x000000003fce1c70 -D .
Ora apriamolo 😉 :

Abbiamo ottenuto la nostra password “P4SSw0rd_123” che proviamo ad usare per aprire il db in keepass.
La password è corretta e procediamo a consultare il db:


ecco recuperato il nostro flag:
flag{w0w_th1s_1s_Th3_SeC0nD_ST4g3_!!}
SECONDO FLAG
Iniziamo questa seconda fase riprendendo il plugin cmdline/cmdscan:
All’organizzatore del CTF piace prendersi gioco di noi =) :

L’intro della sfida ci dice che il soggetto è un attivista ambientale e quindi proviamo ad eseguire il plugin envars per la variabili di ambiente per il processo 2068:
vol.py -f MemoryDump_Lab2.raw –profile=Win7SP1x64 envars -p 2068
molto interessante l’output:

In particolare, interessante la definizione di una nuova variabile tmp “NEW_TMP”:
ZmxhZ3t3M2xjMG0zX1QwXyRUNGczXyFfT2ZfTDRCXzJ9
ha l’aria di essere in base64, ora a nostra discrezione possiamo definire il metodo per estrarre il testo in “chiaro” anche se non è propriamente i modo corretto per definirlo.
Io ho utilizzato cyberchef:

Ed ecco la nostra bandiera: flag{w3lc0m3_T0_$T4g3_!_Of_L4B_2}
TERZO FLAG
Siamo arrivati all’ultimo flag, possiamo riprendere dall’analisi dei processi, tappa fondamentale per l’inizio di ogni analisi forense della memroia volatile.
Ci manca da approfondire la questione di google chrome e la relativa cronologia quindi analizziamo i processi di google..

la cronologia di google chrome è salvata solitamente in un file DB “History” nel percorso: “C:\Users\nome_utente\AppData\Local\Google\Chrome\User Data\Default”, da qui spiegata la scelta del filtro grep… come prima appuntiamoci l’offset del file: 0x000000003fcfb1d0.
Procediamo con il dump del file:
vol.py -f MemoryDump_Lab2.raw –profile=Win7SP1x64 dumpfiles -Q 0x000000003fcfb1d0 -D .
una volta estratto il file possiamo procedere con la navigazione del db con sqlitebrowser..
Dopo un’attenta analisi estraiamo dalla sezione URLS un url sospetto, ovvero un link di mega.

Il link ci fa scaricare un archivio protetto da password “Important.zip”, provando a estrarre il file con il comando unzip:

La password richiesta sembrerebbe essere lo sha1 del flag del terzo stage nel dump usato in Lab1:
flag{w3ll_3rd_stage_was_easy}
ora calcoliamo con cyberchef lo sha1 e il gioco è fatto:
6045dd90029719a039fd2d2ebcca718439dd100a

procediamo con l’utilizzo dell’hash per l’estrazione del file di interesse:

Apriamo l’immagine estratta ed ecco il flag finale:

flag{oK_So_Now_St4g3_3_is_DoNE!!}
Anche questa volta abbiamo visto quante informazioni possono essere estratte da un dump di memoria ram di un dispositivo.
Questa analisi è fondamentale sia in casi di analisi forense, incident response e malware analysis perchè è in grado di fornire interessanti informazioni su ciò che avviene live in quel device e specialmente, come avviene. Possono emergere importanti IOC da un analisi di questo tipo che utilizzati nel modo opportuno sono molto utili ad un blue team.
I plugin che possono essere usati in volatility sono davvero tanti, oggi ne abbiamo visti una minima parte ma ce ne sono moltissimi altri utili come ad esempio hashdump…provate a utilizzarlo e ditemi se trovate qualcosa di importante! 🙂
PS: vi do un indizio …

Share this content:
Lascia un commento