CTF Resources

Uno dei trucchi steganografia più comuni è quello di nascondere un file all’interno di un’immagine. Il file si aprirà normalmente come immagine, ma anche contenere i file nascosti all’interno, comunemente zip, testo, e anche altri file di immagine.

Il motivo per cui funziona è perché quando viene letto un file immagine ha inizio e fine byte che dettano la dimensione dell’immagine. Il visualizzatore di immagini utilizzato utilizzerà le informazioni tra questi byte per presentare un’immagine, ignorando qualsiasi cosa dopo il byte di terminazione.

Ad esempio, il byte di terminazione per un JPEG è FF D9 in hex, quindi usando un visualizzatore hex (xxd è buono per linux, o qualcosa come HxD per Windows) puoi scoprire dove finisce l’immagine. Questi byte sono a volte difficili da trovare in un mare di numeri, quindi guardare il dump dell’esadecimale (il testo che rappresenta i byte esadecimali) può anche aiutarti a trovare nascosto .txt o .file zip.

Esempio

Nell’esempio viene utilizzata un’implementazione molto semplice di questa strategia.file jpg in questa directory. Se lo si salva sul computer e lo si apre con un visualizzatore di immagini, si dovrebbe essere presentato con una semplice immagine jpg.

Ora proviamo a trovare la bandiera. Apri l’immagine nel tuo editor esadecimale preferito e inizia a guardarti intorno per qualcosa di strano (potresti trovare la bandiera stessa dal dump a questo punto, ma per esempio prova ad estrarla). Nella parte inferiore del file dovresti vedere il byte di terminazione di un jpg ffd9:

01e17a0: 685c 7fab 8eb4 5b32 61f1 c4ff d950 4b03 h\....[2a....PK.

Un’altra parte importante di questa linea è PK vicino alla fine. PK sono le iniziali di Phil Katz, l’inventore del file zip, e indicano che un file zip inizia a quel punto.

Usando queste informazioni possiamo usare un altro pratico strumento linux, dd). Il comando dd è molto versatile e consente la copia e la conversione di una moltitudine di file. Nel nostro caso, lo useremo per estrarre il file zip.

Sappiamo dove si trova la posizione del file zip, ma dd prende solo valori decimali, quindi convertiamo la posizione esadecimale 0x01e17ad da esadecimale a decimale per ottenere 1972141.

Pluging questo in dd:

dd if=example.jpg bs=1 skip=1972141 of=foo.zip

Questo prende nell’esempio dell’immagine.jpg, il’ in file ‘ se, legge un blocco alla volta,’ block size ‘bs, salta al blocco 1972141, salta e lo scrive nello zip ‘out file’ che chiamiamo foo.zip. Al termine, dovresti avere un file zip che puoi facilmente decomprimere per accedere al file di testo all’interno.

Questo è il lungo modo di risolvere un semplice problema di steganografia, ma mostra come funziona la strategia. Nella sezione Solving sono descritti metodi più concisi ed efficienti.

Rilevamento

Queste sfide sono solitamente presentate come una semplice immagine senza altre istruzioni, e spetta al concorrente eseguirlo attraverso un editor esadecimale per scoprire se si tratta di steganografia. Se ti viene presentata un’immagine e nessuna istruzione, la tua scommessa più sicura è che ha qualcosa di nascosto dopo i tag di chiusura dell’immagine.

Solving

Sebbene sia possibile e talvolta pratico risolvere questi compiti usando strumenti linux come dd, ci sono alcuni strumenti che lo rendono molto più semplice. Binwalk è uno strumento estremamente utile che rileva ed estrae automaticamente i file nascosti con strumenti di steganografia

CTF Esempio

Steganografia di questo tipo di solito non è segnato molto, ma è decentemente diffusa. BackdoorCTF 2014 ha creato uno che è generalmente semplice, ctfexample.jpg, ma coinvolge più livelli.

XXD

HxD

DD

Binwalk

Leave a Reply

Il tuo indirizzo email non sarà pubblicato.