Memlabs lab3 – Walkthrough
Nella sfida di oggi mostrerò la risoluzione del laboratorio numero 3 di MemLabs reperibile al seguente link: https://github.com/stuxnet999/MemLabs/tree/master/Lab%203
Il modus operandi è sempre lo stesso, scaricate il file dump di memoria, calcolatene l’hash e confrontatelo con quello della sorgente, in modo da verificarne l’integrità.
A differenza delle sfide precedenti questa non richiede di recuperare i 3 soliti flag, ma solo uno.
Nello specifico la consegna suggerisce che il flag è composto da due parti, da unire per formarne un unico finale.
Questa cosa mi da l’idea già subito di investigare in due direzioni, a seconda naturalmente dell’output dei processi in esecuzione..
1) Cominciamo quindi con la “prima metà analisi”.
Procediamo con l’identificazione dell’immagine e del sistema operativo:

Ora analizziamo i processi in esecuzione:


Da un primo sguardo dei processi dobbiamo cercare qualcosa che abbia a che fare con esecuzione di script, notepad.exe potrebbe essere un processo coinvolto e quindi teniamolo sotto controllo, appuntiamoci il PID e approfondiamo la questione con il plugin cmdline:

ecco fatto! Gli ultimi due processi in lista aventi PID ___ ____ hanno qualcosa di sospetto, ora sappiamo che lo script coinvolto è un certo evilscript.py e il file vip.txt che contiene probabimente un suo output.
Ora che possiamo fare? Procediamo con l’estrazione dei file, ma per fare ciò dobbiamo conoscerne gli offest.
Con il plugin filescan esportiamo tutte le info in un file di testo filescan.txt.

Filtriamo ora l’output con il comando grep di linux e il nome dei file di interesse sopra citati, appuntiamoci l’offset del file e con memdumps estraiamoli!

Ecco i nostri file, non ci resta che aprire il file script python:

e apriamo anche il file vip.txt:

Ha l’aria di una stringa codificata in base64 e un xor con chiave 3 (emerge dallo script python qui sopra), cyberchef potrebbe tornarci utile ancora una volta!

Ecco la nostra prima metà del flag: inctf{0n3_h4lf
2) Procediamo quindi con la “seconda metà analisi”, come? Dalla consegna ovviamente…
Un indizio è il fatto che ci viene suggerito l’utilizzo di steghide.. cosa è steghide?
Steghide è un tool per la steganografia, ci sarà un post dedicato interamente a questo, ma per ora vi basta sapere che è un tool che vi permette di “nascondere” del testo all’interno di un file immagine, necessita di una password per la cifratura e decifratura, quindi, è necessario che i capi della comunicazione conoscano la pwd utilizzata.
Se volete un alternativa a steghide in questo video viene mostrato il tool stegosuite: https://www.youtube.com/watch?v=rEh1H7vKqcE
Ora che sappiamo cosa potrebbe servirci, filtriamo il nostro filescan.txt e andiamo alla ricerca di file immagine filtrando con il comando grep per estensione “jpg, jpeg, png e altro”.
Ci sono moltissimi file immagine, che potrebbero essere anche varie icone memorizzate in cache per esempio…
Il filtro jpeg invece proprone un solo file “suspision1.jpeg”, direi che già il nome lo rende il sospettato numero 1 no?

Ecco il contenuto del file:

Utilizziamo steghide:
con il comando “steghide extract -sf suspision1.jpeg” e inseriamo la prima metà del flag, potrebbe essere quella la password… all’inizio pensavo potesse essere la password dell’utente “hello” che con hashcat ho craccato – ma lascio il compito a voi di scoprirla – ma non era quella richiesta, quindi ad esclusione inseriamo come pwd il primo metà flag…

et voilà! File di testo estratto con successo!
Ora facciamo un cat del file per visionarlo: seconda metà recuperata, _1s_n0t_3n0ugh} !

Per ottenere quindi il flag completo possiamo unire le due parti: inctf{0n3_h4lf_1s_n0t_3n0ugh}
Considerazioni finali:
Le difficoltà presenti in questa sfida sono sostanzialmente due, la prima: utilizzare cyberchef intuendo di usare la trasformazione XOR con chiave 3, questa cosa dipende molto dalla capacità soggettiva di saper interpretare lo script e di conseguenza lo XOR in python.
La seconda: ricercare il file immagine da dare in pasto a steghide, l’intuito in questo caso ha giocato un ruolo fondamentale, altrimenti avrei dovuto scorrermi e testare moltissimi file immagine!
Share this content:
Lascia un commento