Visualizzazione post con etichetta data carving. Mostra tutti i post
Visualizzazione post con etichetta data carving. Mostra tutti i post

domenica 12 febbraio 2023

Linux: Data carving

Il data carving è una tecnica utilizzata per recuperare i dati da un supporto di memorizzazione, come un disco rigido o una scheda di memoria, in seguito a una cancellazione accidentale o intenzionale, oppure in caso di danneggiamento del supporto stesso. Il data carving consiste nell'analizzare l'immagine del supporto di memorizzazione per individuare i frammenti di dati ancora presenti e salvarli in una nuova posizione. Questa tecnica può essere utilizzata per recuperare file, immagini, video e altri tipi di dati ed è fondamentale anche nelle investigazioni digitali forensi.

Quando un file viene salvato su un disco rigido, viene suddiviso e scritto in contenitori logici detti cluster. Ogni cluster è composto da un certo numero di settori, che sono le unità di base di memorizzazione su un disco rigido. Il sistema operativo utilizza una File Allocation Table (FAT) o una Master File Table (MFT) per tenere traccia della posizione dei cluster sul supporto di memoria.

Ogni volta che un file viene salvato, il sistema operativo cerca una serie di cluster vuoti contigui che siano sufficienti per contenere tutti i dati del file. Una volta individuati, i cluster vengono marcati come utilizzati e i dati del file vengono scritti su di essi. Se un file è troppo grande e non ci sono cluster vuoti contigui in grado di contenerlo, viene diviso in più parti e memorizzato in cluster diversi e non contigui. Il sistema operativo utilizza la FAT o l'MFT per tenere traccia della posizione di ogni parte del file sulla memoria. In questo modo, quando si apre un file, il sistema operativo può riunire tutte le sue parti.

Quando si cancella un file questo non viene in realtà rimosso dall'hard disk; viene rimosso il suo riferimento nella struttura del file system e lo spazio occupato dal file viene classificato come spazio non allocato. Proprio sullo spazio non allocato in un sistema di storage (hard disk, pendrive, ecc) si applica il data carving per recuperare i file e catalogarli sulla base del loro header e footer (stringhe esadecimali all'inizio e fine del file). Per il riconoscimento del tipo di file si ricorre al database dei magic number (firme esadecimali). Il magic number è costituito da una serie di byte specifici (da 2 a 10 byte) solitamente posizionati all'inizio del file, che vengono utilizzati per identificarne il tipo. Ad esempio, un file JPEG avrà un magic number specifico (FF D8 FF EE) diverso da un file PNG (89 50 4E 47). Quasi tutti i formati di file sono identificati da un magic number

Data carving con Scalpel

Uno degli strumenti più utilizzati e molto apprezzato per il data carving è Scalpel (https://github.com/machn1k/Scalpel-2.0). Tale strumento è già presente in Kali Linux. Per installarlo su distribuzioni Linux derivanti da Debian è possibile utilizzare i seguenti comandi da terminale
sudo apt-get update
sudo apt-get install scalpel

Prima di avviare lo strumento è necessario andare a modificare il file di configurazione /etc/scalpel/scalpel.conf che ha tutte le righe commentate. In base alla tipologia di file che si intende recuperare è necessario andare a rimuovere il commento dalla relativa riga. 

Aprire il file di configurazione con un editor di testo. In Kali Linux è possibile utilizzare l'editor nano con il comando da terminale
sudo nano /etc/scalpel/scalpel.conf

Per recuperare un file PDF eliminato da una pendrive è necessario andare a rimuovere i commenti relativi ai tipi di file PDF (FIG 1) presenti nel file di configurazione. 
File di configurazione scalpel.conf
FIG 1 - File di configurazione scalpel.conf

Premere CTRL + X per uscire dall'editor e confermare la modifica premendo Y seguito da Invio.
Salva modifica del  file di configurazione
FIG 2 - Salva modifica del  file di configurazione


La sintassi di scalpel è la seguente
scalpel -c fileconfig.conf unità -o /percorso/file/output

Il percorso dell'output deve risiedere su un unità diversa da quella da cui si sta tentando di recuperare i dati. Per identificare la pendrive eseguire il comando
lsblk 
lsblk
FIG 3 - lsblk

Dalla FIG 3 si evince che la pendrive è stata montata come sdb1. Eseguire una finestra terminale come root ed avviare il data carving con il comando
scalpel -c /etc/scalpel/scalpel.conf /dev/sdb1 -o /home/kali/Desktop/Recover
Avvio data carving con scalpel
FIG 4 - Avvio data carving con scalpel
Il comando creerà una cartella Recover sul Desktop contenente un file audit.txt (in cui saranno elencati eventuali file recuperati e altre informazioni sul processo) e una cartella contenente i file recuperati.
Risultati del data carving di scalpel
FIG 5 - Risultati del data carving di scalpel

File audit.txt
FIG 6 - File audit.txt

File recuperati da scalpel
FIG 7 - File recuperati da scalpel


Scalpel consente di effettuare il data carving anche su immagini di dischi virtuali (VDI, Virtual Disk Image) di VirtualBox. In questo caso il comando da eseguire sarà del tipo
scalpel -c /etc/scalpel/scalpel.conf /percorso/Immagine/file.vdi -o /home/kali/Desktop/Recover