Data Carving

A cura di: Alessandro Molinari (Team Hackerhood)

Tramite gli strumenti specifici per le analisi forensi è possibile recuperare molti files che presumibilmente sono stati cancellati da un sistema informatico.

Il data carving tratta esattamente questo e se vogliamo veramente eliminare del tutto determinati files dobbiamo fare un ulteriore sforzo.

Lo strumento di “data carving” per eccellenza ( “intagliatore di dati” letteralmente ma per l’amore delle nostre orecchie evitiamo di tradurlo in Italiano), è Scalpel,  in grado di rilevare molti  file con diverse estensioni e formati.

Non importa con quale filesystem sia stato formattato il disco: Scalpel utilizza un database con headers e footers (di cui ogni file è dotato) utile per tracciarli.

Molte distribuzioni hanno nei loro repository versioni precedenti di Scalpel che svolgono bene il loro lavoro, ma non hanno tutte le funzionalità dell’attuale versione 2.0, come le regular expressions” per gli headers ed i footers, il multithreading, l’input/output asincroni o data-carving accelerata dalla GPU (solo se è installato l’SDK CUDA di NVidia).

Tuttavia se si desidera utilizzare queste funzionalità, è necessario compilare Scalpel dal codice sorgente.

In passato, i data carvers scansionavano i dischi alla ricerca di modelli di headers e footers e scrivevano tutti i risultati su un nuovo supporto, il che richiedeva molto spazio di archiviazione.

Scalpel, invece, si limita a controllare due volte il disco per mettere insieme tutte le informazioni necessarie.

La prima volta che si esegue Scalpel, cerca gli headers e memorizza i risultati in un database; quindi, identifica i footers (di cui ogni file è dotato). Nel fare ciò, Scalpel tiene sempre conto della logica  che un header è sempre seguito da un footer, accelerando così la ricerca.

A questo punto si dispone di un indice con le posizioni degli headers e dei footers, che costituisce la base per la seconda esecuzione. Di seguito Scalpel confronta gli headers ed i footers e scrive i file trovati direttamente in una nuova posizione dalla memoria, senza dover accedere nuovamente al disco.

Prima di iniziare la ricerca dei dati perduti, Scalpel legge il file di configurazione scalpel.conf 

Prima di iniziare il processo di ricerca, è opportuno effettuare alcune configurazioni che limitino la ricerca a un numero minimo di tipi e dimensioni di file.

ANALISI

In questo tutorial utilizzeremo Scalpel proprio per recuperare alcuni files (PDF e png) da un filesystem NTFS. Esattamente come farebbe un investigatore forense, faremo un’immagine del disco da analizzare, questo perché nelle analisi forensi non si lavora mai sui dischi originali!.

Nel caso di un procedimento di analisi forense reale inoltre dovrebbero essere usati degli speciali strumenti di hardware chiamati “write blockers” in grado di  impedire qualsiasi operazione di scrittura sul file oggetto dell’analisi, inoltre ogni fase deve necessariamente essere documentata con quanta più documentazione possibili sia scritte che visive (files di testo, immagini, video, etc..).

Un “write blocker” hardware

Alla fine vedremo anche come, nel caso di un cover track di un generico pentesting , potremmo essere in grado di eliminare alcune delle tracce con lo strumento “shred” su Kali Linux. 

In realtá vi sono altre operazioni da completare per essere sicuri di non aver lasciato alcuna traccia, ma questo è già materiale per un altro articolo….

Tool utilizzati

  • Kali Linux: distro Linux orientata al pentesting 
  • Scalpel: strumento di “data carving” per il recupero dei dati 
  • Shred : strumento da riga di comando Linux per eliminare dati in modo sicuro
  • VirtualBox : hypervisor tipo II

Analisi

Iniziamo col creare un disco virtuale con Virtualbox eccetto questa procedura seguente sarebbe la stessa su un disco fisico o un drive USB.

Abbiamo creato un disco NTFS ed allocato il suo spazio, chiamandolo in modo molto fantasioso “HD Test”

Abbiamo poi creato due files di test in pdf e jpeg che 

andremo  in seguito a cancellare.

Unita “disco test” montata su macchina Kali

Montiamo il disco sotto un sistema operativo Kali e elenchiamo i files presenti nel disco con il comando [ls] e dopodiché li cancelliamo definitivamente con il comando [rm -R *.*] equivalente in windows a cancellare definitivamente i files con [shift + canc] oppure semplicemente svuotando il cestino.

CONFIGURAZIONE DI SCALPEL

Come spesso accade, per configurare un tool da riga di comando è necessario editare un file di testo rimuovendo gli  “#” all’inizio di ogni linea di testo che vogliamo che il programma prenda in considerazione.

Configuriamo il file “scalpel.conf” al fine di fare in modo che recuperi files PDF e grafici:

rimuoviamo i commenti “#” prima di files “PDF” e prima di files grafici

 Finalmente siamo pronti per eseguire il Scalpel con il comando che specifica il file di configurazione che abbiamo appena editato, sda2 è il drive da cui estrarre i dati persi o distrutti ed con l’ opzione “-o” vogliamo che eventuali files recuperati vengano scritti in un file di testo

Attendiamo che Scalpel termini la ricerca 

 Su unità molto grandi ci vorrà molto tempo ma per semplicità abbiamo optato per un disco di 500 MB ai fini dimostrativi, dopo qualche minuto , lo strumento avrà completato il suo lavoro e generato un file di nome “audit” che conterrá le informazioni riassuntive dell’operazione appena completata.

Il file audit con dal quale si evince che sono stati recuperati tre files due pdf en un file di immagine 

A quanto pare il nostro scalpello digitale ha recuperato tre files.

Scalpel creerà alcune cartelle nel file system  e manualmente si dovrà verificare l’integrità di ciascun file onde evitare sorprese.

Quindi verifichiamo ora l’integrità dei files recuperati 

Il primo file é stato recuperato con successo

Il secondo è stato  file recuperato con successo

Il terzo file, JPG NON é stato recuperato

Come si puó vedere, non tutti i files sono stati recuperati, spesso infatti recuperare JPG risulta più difficile ed il risultato non é mai garantito.

SHRED – IL DISTRUTTORE

L’eliminazione di file in formato digitale richiede gli stessi protocolli che si utilizzano per eliminare un documento cartaceo.

Come appurato, quando si elimina un file sul computer, il sistema svuota i blocchi della memoria eliminando il riferimento all’allocazione del file in memoria. Il file non viene eliminato ed è ancora accessibile con un software avanzato come scalpel, cosa che, come abbiamo visto, potrebbe non essere il risultato  che desideriamo.

È qui che entra in gioco  shred.

Shred è uno strumento a riga di comando che sovrascrive il contenuto di un file ricorsivamente con dati casuali per renderlo irrecuperabile. 

Consente inoltre di eliminare il file dopo averne riscritto i dati sovrascrivendo il contenuto di un file più volte con stringhe di zeri, rendendo impossibile per chiunque visualizzare il contenuto originale. Dopodiché, se lo si desidera, può rimuovere in modo sicuro il file dalla memoria di sistema.

Di seguito utilizzeremo il comando 

shred -v -n 5 –zero + NOMEFILE 

per dire a SHRED di cancellare i files riscrivendo per 5 tentativi sulla posizione di memoria [-n 5] (di default tre) mentre con l’opzione [ -zero ] aggiungiamo un ulteriore sovrascrittura di “0” per eliminare anche le tracce di “shredding” (distruzione), rendendo di fatto impossibile qualsiasi recupero.

I 5 tentativi ricorsivi  di SHRED

CONCLUSIONI

Scalpel non può sostituire un backup, ma può venire in soccorso in molti casi. Tuttavia, non aspettatevi miracoli: i file frammentati o i difetti di archiviazione fisica rendono difficile individuare le estremità (headers and footers) dei file e spingono Scalpel ai suoi limiti.

In questo caso, i file “salvati” si rivelano spesso inutili, inoltre il tool spesso non recupera files JPG mentre fa meno “fatica” con files TIFF.

Nel caso invece in cui sia necessario rimuovere definitivamente determinati dati si devono utilizzare strumenti appositi al fine di rendere vano qualsiasi tentativo di recupero dei suddetti, come SHRED

Una nota importante: ritornando in ottica Pentesting, l’eliminazione definitiva dei files é solamente una parte di ciò che il professionista deve fare per coprire le proprie tracce: si devono inoltre cancellare tutti i messaggi di errore, gli alert, i “security events” che sono stati registrati e la lista dei comandi eseguiti contenuti in specifici file di log, considerando sempre che, anche attuando procedure professionali  si rende in generale difficile eliminare definitivamente le tracce da un sistema informatico.

Tags:

Comments are closed