Guida verificata con Ubuntu: 20.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Foremost è uno strumento da riga di comando per il recupero dei file. La tecnica utilizzata è il data carving, che utilizza le tracce degli header, dei footers e della struttura interna dei dati stessi, senza considerare i metadati del filesystem.
Foremost può operare sia su file immagine, sia su supporti fisici quali unità flash, hard disk, schede di memoria ecc. Supporta diversi tipi di filesystem (Fat16/32, Ext3/4, NTFS ecc.) e moltissimi formati di file (.jpg, .png, .zip, .avi, .pdf, .doc, .exe, ecc.).
Sviluppato originariamente da enti governativi statunitensi quali l'Ufficio Investigazioni speciali della United States Air Force e il CISR (Center for Information Systems Security Studies and Research), è stato successivamente reso di pubblico dominio.
Per evitare sovrascritture accidentali di dati, si raccomanda di eseguire il programma su un file immagine di backup a basso livello (a tal fine è possibile usare lo strumento dd), anziché operare direttamente sul supporto di memoria dal quale si vogliono recuperare i file.
Installazione
Installare il pacchetto foremost.
Utilizzo
Durante l'estrazione dei dati, il programma esegue di default le seguenti azioni:
crea una cartella chiamata output nella stessa posizione dal quale viene lanciato il comando (ad esempio la Home dell'utente, se il terminale è su ~).
crea all'interno di questa directory delle sottocartelle corrispondenti al formato dei file che vengono recuperati (ad esempio jpg, txt, zip ecc.). Per consultare tutti i formati di file riconosciuti consultare la pagina man del programma.
- al termine della procedura elimina eventuali sottocartelle vuote, per le quali non sono stati trovati file corrispondenti.
crea all'interno della cartella di salvataggio il file audit.txt, contenente un report delle azioni svolte dal programma.
- attribuisce ai file eventualmente trovati un nome ricavato dall'indirizzo del settore sul quale sono allocati (non considera perciò il nome originario, in quanto il programma non tiene conto dei metadati del filesystem).
Utilizzo di base
Supponendo di voler cercare dei file eliminati in una partizione /dev/sdb1, digitare nel terminale il seguente comando:
sudo foremost -i /dev/sdb1
Ricerca da file immagine
Per il recupero da file di immagine è sufficiente sostituire nel comando il nome del disco o partizione (ad esempio /dev/sda) con il nome stesso del file (ad esempio backup.dd).
Ricerca di file specifici
Per cercare soltanto determinati tipi di file è inoltre possibile usare l'opzione -t, con i formati di file separati da una virgola. Ad esempio per cercare in una partizione /dev/sdb1 soltanto file .doc e .pdf, digitare nel terminale il seguente comando:
sudo foremost -t doc,pdf -i /dev/sdb1
È possibile inoltre usare l'opzione -t all per il recupero di tutti i tipi di file conosciuti.
Scelta della cartella di salvataggio
Per evitare sovrascritture accidentali, con consequente impossibilità di recupero dei file, si raccomanda di non impostare la destinazione di salvataggio nello stesso disco e/o partizione in cui sono presenti i file da recuperare.
Per specificare una determinata cartella di salvataggio (diversa da output, ad esempio denominata dati) è possibile usare l'opzione -o, come nel seguente esempio:
sudo foremost -i /dev/sdb1 -o /home/utente/dati
Qualora la cartella di destinazione non esistesse il programma provvederà a crearla.
Nel caso in cui, invece, fosse già presente apparirà un messaggio simile al seguente:
ERROR: /home/utente/dati is not empty Please specify another directory or run with -T.
Come suggerito dall'output, sarà possibile a propria scelta:
- usare una destinazione differente
usare l'opzione -T. Quest'ultima provvede a creare una nuova cartella con lo stesso nome, ma inoltre contrassegnata con ora e data (prendendo ancora in esame l'esempio precedente, verrà nominata /home/utente/dati_Sat_Sep_25_16_32_38_2021).
In questo modo sarà possibile ripetere più volte la ricerca di file, salvando i dati estratti in diverse cartelle, senza modifiche ai risultati di eventuali precedenti operazioni di recovery.
File di configurazione
Il file di configurazione di Foremost è /etc/foremost.conf.
All'interno del file stesso è possibile consultare le istruzioni (in inglese) utili per aggiungere alla ricerca altri formati di file.
A tale scopo sono infatti presenti diversi esempi commentati che mostrano la sintassi da utilizzare. Basterà quindi aprire il file, con privilegi di amministrazione e con un editor di testo, per decommentare le righe relative ai formati di proprio interesse, aggiungendoli alla ricerca.
Di seguito viene riportato un esempio relativo ai file .tif:
# TIF # tif y 200000000 \x49\x49\x2a\x00
La sintassi della seconda riga nell'esempio contiene i seguenti campi (separati da TAB), da sinistra verso destra:
- estensione
case sensitive (y in caso positivo e n in caso negativo)
- dimensione massima del file (espressa in byte)
- footer (opzionale, può essere omesso)
Diversi formati di file presenti in /etc/foremost.conf sono già supportati nativamente. È infatti presente in corrispondenza la dicitura: «(NOTE THESE FORMATS HAVE BUILTIN EXTRACTION FUNCTION)».
Aggiungere supporto a nuovi formati di file
Basandosi sull'esempio precedente, è quindi possibile aggiungere alla ricerca ulteriori formati, non presenti nel file di configurazione.
Di seguito viene riportato l'esempio di aggiunta dei file in formato flac:
flac y 30000000 \x66\x4c\x61\x43\x00\x00\x00\x22
Per conoscere o controllare l'header di un tipo di file, può talvolta tornare utile il comando: hd -c nome_file.estensione.file|head (sostituire nome_file e estensione.file con le relative voci).
Esempio concreto di utilizzo
Di seguito sono illustrati tutti i passaggi necessari per estrarre dei file inavvertitamente cancellati su un ipotetico disco /dev/sda.
Si ipotizza, inoltre, che i file da recuperare vengano salvati su un secondo disco /dev/sdb. Si dovrà quindi montare su quest'ultimo una cartella appositamente creata per salvare i file recuperati (ad esempio /recovery/foremost), modificando infine i permessi di quest'ultimi.
Se necessario, individuare le partizioni presenti.
Creare sul disco /dev/sda la cartella /recovery/foremost:
sudo mkdir -p /recovery/foremost
Montare il disco /dev/sdb nella cartella /recovery:
sudo mount /dev/sdb /recovery
Avviare foremost digitando il comando:
sudo foremost -i /dev/sda -o /recovery/foremost
I file recuperati saranno di proprietà dell'utente root. Per cambiare i permessi digitare il seguente comando:
sudo chown -R nomeutente:nomegruppo /recovery/foremost
sostituendo «nomeutente:nomegruppo» (rappresentano rispettivamente il nome dell'utente e il nome del gruppo di appartenenza; generalmente utente e gruppo hanno lo stesso identificativo).
Terminato il recupero, sarà possibile smontare il disco esterno con il comando:
sudo umount /dev/sdb
Ulteriori risorse
Voce enciclopedica (in inglese)
Guida originae (in inglese)