| assets/images | ||
| execute-me | ||
| README.md | ||
Execute me!
Descrizione
Autore: @davidedellagiustina
Camminando lungo dei vecchi binari, ormai inutilizzati da anni, vicino a casa sua, il mio amico Marco ha trovato una chiavetta USB che conteneva il seguente file. Aiuta Marco a scoprire di cosa si tratta!
Strumenti e conoscenze necessarie
Strumenti: comando binwalk, comando dd, un terminale, 7zip
Per risolvere questa challenge dobbiamo conoscere bene come modificare i file binari e la struttura generale dei file.
Spiegazione
binwalk è uno strumento utilizzato per analizzare file binari e individuare al loro interno dati nascosti o file incorporati.
In pratica, essa ci consente di "scansionare" un file e di identificare dove iniziano e finiscono contenuti annidati o nascosti.
Eseguendo un comando come:
binwalk file.bin
otterremo una lista di offset (posizioni in byte) in cui vengono rilevate firme di file conosciuti. Questo ci permette di individuare esattamente dove si trova il contenuto di interesse.
Una volta individuato l’offset corretto, il comando dd permette di estrarre porzioni specifiche di un file binario.
Ad esempio:
dd if=file.bin of=output.bin bs=1 skip=OFFSET
dove OFFSET è il valore trovato con binwalk.
Questo comando copierà i dati a partire da quella posizione in un nuovo file (output.bin).
Indizi
Apri indizio 1
Ricorda dove Marco ha trovato la chiavetta!
(Cammindando lungo dei vecchi binari... -> binarywalk -> binwalk)
Soluzione
Apri soluzione
La challenge ci offre un file eseguibile (execute me) che non sembra fare niente.
Possiamo provare il comando string sul file: string execute-me | grep "flag"
Ma non sembra che contenga la flag.
Possiamo utilizzare il comando binwalk per vedere dei contenuti che sono stati incorporati all'interno di file binari.
Quindi utilizzamo il comando binwalk per analizzare il contenuto del file: binwalk -e execute-me
Utilizziamo -e per estrarre automaticamente quello che binwalk trova
Con questo possiamo vedere che all'interno dell'eseguibile esiste un archivio con dentro un file chiamato listen-to-me.mp3 con la sua posizione di inizio e fine all'interno del file
Se non avessimo utilizzato l'opzione -e sul file, allora dovremo dividere / tagliare il file utilizzando il comando dd: dd if=execute-me of=archivio.zip bs=1 skip=16088
Le opzioni if sta per input file (quindi il file execute-me), e per of essa sta per il file output;
l'opzione bs sta per bytes, ossia quanti byte legge alla volta, e infine l'opzione skip ci dice quanti byte vogliamo saltare prima.
Da questo archivio possiamo estraiamo il file listen-to-me.mp3, ma se ascoltiamo il file scopriamo che ci dice la flag non è qui.
Possiamo provare a utilizzare il comando binwalk un'altra volta: binwalk -e listen-to-me.mp3
Allora scopriamo che all'interno di essa esiste un'altro achivio con un file chiamato scan-me.png, ora possiamo entrare nell'archivio estratto direttamente da binwalk e scannerizzare il codice QR per ottenere la flag.