Scalpel: data carving facile e multipiattaforma

Giocherellando per la tesi, ho scovato un’interessante utility per il data carving. Per dirla in breve, data carving significa “scavare alla ricerca di dati”, ovvero tentare di identificare e isolare determinate informazioni all’interno di un blocco più esteso. Un esempio concreto è il tentare di isolare singoli files all’interno di un’immagine binaria, ad esempio una copia bit-a-bit di una partizione.

Per identificare files il modo più semplice è cercare headers e footers specifici: ogni tipo di file inizia con una determinata sequenza di caratteri che lo identifica, e spesso termina con una sequenza altrettanto specifica. Non devo fare altro che ritagliare quello che c’è attorno, e ho il file che stavo cercando.

… altroaltroaltro <header> file da estrarre <footer> altroaltroaltro …

Questa procedura può servire a vari scopi: ad esempio, per estrarre files da un disco danneggiato di cui riesco comunque ad avere un’immagine, seppure incompleta (e quindi impossibile da montare). Oppure per estrarre files da immagini che non posso montare: ad esempio per la tesi devo estrarre files da dump della memoria fisica di cellulari, e questa è l’unica strada percorribile.

Scalpel fa esattamente questo: esamina un’immagine binaria alla ricerca di header e footer specificati, e dove li trova estrae il contenuto e ne crea un file. Installarlo è facile: sotto Ubuntu linux è presente nel portage, basta fare:

sudo apt-get install scalpel

Ma la parte divertente è senz’altro la possibilità di installarlo anche sotto mac, essendo open source e quindi allegramente compilabile. Basta scaricare i sorgenti dal sito, scompattarli e compilare:

tar -xzf scalpel-xyz.tar.gz

cd scalpel-xyz

make bsd

Una volta pronto l’eseguibile, bisogna dedicare un pò di attenzione al file di configurazione. Nella cartella dei sorgenti è disponibile un file denominato scalpel.conf, che andrà modificato (facciamone prima una copia di backup, che non fa mai male). Questo file altro non è che un descrittore di tutti i possibili files che il sistema è in grado di estrarre, descritti come segue:

png  y  20000000  \x50\x4e\x47?  \xff\xfc\xfd\xfe

Il primo campo (png) è l’estensione che avrà il file una volta estratto. Il secondo campo è un booleano y/n che indica se header e footer sono case sensitive. Il terzo campo è la dimensione massima che può avere un file di questo tipo (se ci sono errori nel carving, almeno a un certo punto il sistema sa di doversi fermare). Il quarto e quinto campo sono rispettivamente header e footer da cercare.

Nel file di configurazione sono presenti una serie di possibili descrittori di file, in origine tutti commentati (le righe che cominciano con #). Prima di eseguire il carving bisogna togliere il # dall’inizio delle righe corrispondenti ai file che stiamo cercando.

A questo punto lanciamo il programma:

./scalpel -o cartella_risultati -c file_configurazione dumpfile

Il software esamina il file dumpfile e ne estrae tutte le occorrenze di files, descritti nel file_configurazione; tutto quello che riesce a estrarre viene piazzato in cartella_risultati. Tale cartella deve essere vuota, altrimenti il programma non funziona (può anche non esistere, in tal caso viene creata al momento).

Et voilà! Il gioco è fatto!

Processing of image file complete. Cleaning up…
Done.
Scalpel is done, files carved = 294, elapsed = 3 seconds.

Questa voce è stata pubblicata in Uncategorized e contrassegnata con , , , . Contrassegna il permalink.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...