File system · Lezione 8 di 8
Recupero dei file eliminati: recupero tramite metadati e carving
12 min di lettura
L'eliminazione di un file raramente ne cancella il contenuto: il file system contrassegna i metadati e i cluster come liberi e i byte rimangono finché lo spazio non viene riutilizzato o il dispositivo non li scarta. Questa lezione confronta il recupero tramite metadati e il carving dei file: che cosa restituisce ciascun metodo, quali sono i suoi limiti e come convalidare e documentare il risultato. Le domande d'esame richiedono spesso di individuare l'esatto input per il calcolo dell'hash, il numero di record o l'offset in byte coinvolto in questo tipo di recupero.
Due famiglie di metodi di recupero
Il recupero tramite metadati funziona finché il file system descrive ancora il file eliminato. La struttura che conteneva il nome, la dimensione e la posizione del file è contrassegnata come inutilizzata, ma non è stata sovrascritta; uno strumento può quindi seguire i vecchi puntatori fino ai vecchi cluster.
- NTFS. All'eliminazione viene azzerato il flag di utilizzo nell'intestazione del record MFT (il campo dei flag di 2 byte all'offset 0x16): 0x0001 diventa 0x0000 per un file, 0x0003 diventa 0x0002 per una directory. Il bit del record nella bitmap della MFT stessa e i bit dei cluster del file in
$Bitmapvengono azzerati e la voce viene rimossa dall'indice della directory padre. Il record stesso, con i suoi attributi$STANDARD_INFORMATION,$FILE_NAMEe$DATA, rimane normalmente intatto finché non viene riutilizzato. Un file residente (con i dati all'interno del record) viene recuperato dal solo record. - FAT. Il primo byte della voce di directory di 32 byte viene impostato a 0xE5 e la catena di cluster del file nella FAT viene azzerata. Il resto del nome, i timestamp, il cluster iniziale e la dimensione del file rimangono, quindi uno strumento può recuperare il file supponendo che fosse contiguo e leggendo ceil(dimensione / dimensione del cluster) cluster a partire dal cluster iniziale. Su exFAT viene azzerato il bit di utilizzo di ciascun tipo di voce (0x85 diventa 0x05, 0xC0 diventa 0x40). La lezione 1.5 tratta entrambe le strutture.
- ext4. Il recupero tramite metadati è molto più difficile. Quando ext4 elimina un file, in genere azzera le voci degli extent nell'inode e ne imposta la dimensione a zero, quindi l'inode non registra più dove si trovavano i dati. Il nome può sopravvivere nel blocco della directory e copie precedenti dell'inode possono sopravvivere nel journal (lezione 1.6), ma spesso il carving è l'unica opzione.
Il carving dei file non richiede metadati del file system. L'esaminatore cerca nei byte grezzi, solitamente nello spazio non allocato o in un'intera immagine, la struttura di tipi di file noti: una firma di intestazione, un marcatore finale o altri marcatori. Funziona anche su volumi riformattati, file system danneggiati e acquisizioni della memoria.
Che cosa conserva ciascun metodo
| Proprietà | Recupero tramite metadati | Carving |
|---|---|---|
| Nome originale del file | Sì | No; lo strumento genera un nome |
| Percorso | Sì, se il record della directory padre esiste ancora | No |
| Timestamp del file system | Sì | No |
| Dimensione esatta | Sì, ricavata dai metadati | Stimata dal marcatore finale o dalla struttura |
| Contenuto | Sì, se i cluster non sono stati riutilizzati | Sì, se contiguo e non sovrascritto |
| Funziona senza un file system | No | Sì |
Il carving perde i metadati del file system, non quelli all'interno del contenuto: un JPEG recuperato tramite carving può conservare tag EXIF come DateTimeOriginal, e un DOCX il proprio docProps/core.xml. Questi elementi vanno indicati nel rapporto come metadati applicativi incorporati, non come timestamp del file system.
Che cosa limita il recupero
Riutilizzo e sovrascrittura. Entrambi i metodi falliscono quando lo spazio viene riutilizzato, ma in modi diversi. Con il recupero tramite metadati, il record può sopravvivere mentre i suoi cluster appartengono ormai a un altro file e lo strumento estrae il nuovo contenuto con il vecchio nome. Con il carving, un'intestazione può sopravvivere mentre i cluster successivi sono stati sovrascritti, producendo un file che inizia correttamente e poi contiene dati non pertinenti. Quando un record MFT viene riutilizzato, i suoi metadati sono persi, anche se i cluster possono ancora essere recuperabili tramite carving.
TRIM sugli SSD. Quando un file viene eliminato su un SSD che lo supporta, il sistema operativo invia un comando TRIM (UNMAP su SCSI, Deallocate su NVMe), immediatamente o durante una successiva esecuzione pianificata, a seconda del sistema operativo e delle sue impostazioni, indicando all'unità quali blocchi logici non contengono più dati. L'unità cancella quelle pagine durante la garbage collection e molti SSD restituiscono immediatamente zeri per i blocchi interessati da TRIM, prima di qualsiasi cancellazione fisica. Un'immagine acquisita successivamente mostra solitamente zeri, quindi nessuno dei due metodi può recuperare i dati. La formattazione di un SSD può applicare TRIM all'intero volume.
Unità flash USB. La maggior parte delle unità flash USB e molti bridge USB non supportano TRIM tramite l'archiviazione di massa USB, quindi i dati eliminati su una tipica chiavetta USB rimangono generalmente finché non vengono sovrascritti. Ciò dipende dal dispositivo e dal bridge: alcuni contenitori e bridge UASP inoltrano i comandi UNMAP. Non si deve presumere né l'una né l'altra eventualità; la presenza di zeri dove dovrebbero trovarsi i dati eliminati è compatibile con TRIM o con una cancellazione sicura e va riportata come tale.
Firme, marcatori finali e struttura
| Tipo | Intestazione (esadecimale) | Marcatore finale |
|---|---|---|
| JPEG | FF D8 FF | FF D9 (fine dell'immagine) |
| PNG | 89 50 4E 47 0D 0A 1A 0A | Chunk IEND, che termina con 49 45 4E 44 AE 42 60 82 |
25 50 44 46 2D (%PDF-) | 25 25 45 4F 46 (%%EOF), eventualmente seguito da un terminatore di riga | |
| ZIP, DOCX, XLSX, PPTX | 50 4B 03 04 | Fine della directory centrale 50 4B 05 06, 22 byte più il commento |
Il carving basato su intestazione e marcatore finale copia i dati da un'intestazione al successivo marcatore finale corrispondente, oppure fino a una dimensione massima. È rapido, ma semplicistico. Un JPEG con una miniatura EXIF contiene una seconda coppia FF D8 FF … FF D9, quindi il primo FF D9 può terminare la miniatura anziché la fotografia. Un PDF modificato con aggiornamenti incrementali contiene diversi marcatori %%EOF e l'ultimo conclude il file.
Il carving basato sulla struttura analizza il formato. Uno strumento di carving JPEG percorre i segmenti dei marcatori, ciascuno con un campo di lunghezza di 2 byte, fino ai dati dell'immagine, quindi cerca FF D9. Uno strumento di carving ZIP legge il record di fine della directory centrale, il cui campo di lunghezza del commento di 2 byte all'offset 20 indica la fine esatta del file, e verifica che le voci della directory centrale rimandino a intestazioni locali valide. Nei file Office Open XML, [Content_Types].xml e cartelle come word/ o xl/ identificano il tipo di documento.
Poiché i file non residenti iniziano sul confine di un cluster, gli strumenti di carving spesso cercano le intestazioni soltanto all'inizio dei settori o dei cluster: ciò è più rapido e riduce i falsi riscontri.
Frammentazione e convalida
Il carving semplice presuppone un'archiviazione contigua. Un file frammentato viene recuperato tramite carving come il suo primo frammento seguito da qualsiasi dato presente subito dopo sul disco; un JPEG viene tipicamente decodificato correttamente nella parte superiore e diventa grigio o illeggibile più in basso. Ogni file recuperato tramite carving deve quindi essere convalidato: occorre aprirlo o analizzarlo, verificare che la sua struttura interna sia coerente (directory centrale ZIP, tabella dei riferimenti incrociati PDF, CRC dei chunk PNG) e confrontarne l'hash con quello di file noti, ove disponibili, come un elenco di hash di file di interesse o un insieme di file noti e affidabili utilizzato per escludere i file di sistema. Un file parziale non corrisponderà a un hash di riferimento anche quando è riconoscibile; va indicato come parziale nel rapporto.
Strumenti a titolo di esempio
- Recupero tramite metadati:
fls -d -r -pdi The Sleuth Kit elenca le voci eliminate con i relativi percorsi completi;icatestrae il contenuto di un file in base all'indirizzo dei metadati;blkstatmostra se un cluster è allocato;ifind -dindividua a quale voce di metadati appartiene un cluster. Autopsy integra le stesse funzioni. - Carving: PhotoRec (che tiene conto della struttura per molti formati), Foremost e Scalpel (strumenti configurabili di carving basato su intestazione e marcatore finale) scrivono ciascuno un file di audit o di rapporto che elenca dove è stato trovato ogni file.
- Estrazione di elementi informativi: bulk_extractor esamina i byte grezzi alla ricerca di elementi come indirizzi email, URL e nomi di dominio, registrando l'offset in byte di ciascuno.
Se si esegue il carving dell'output di blkls (solo cluster non allocati), gli offset si riferiscono a quel flusso; prima di riportarli, occorre ricondurre gli indirizzi dei suoi blocchi al volume con blkcalc -u.
Esempio svolto 1: recupero tramite la MFT
fls -d -r -p -o 2048 disk.E01 su un'immagine di volume NTFS (volume che inizia al settore 2.048, cluster di 4 KiB) elenca un file eliminato come record MFT 41. Il campo dei flag del record contiene 00 00. Il suo attributo $DATA non residente mostra una dimensione reale di 14.862 byte, una dimensione allocata di 16.384 byte e la run list 31 04 A0 3F 01 00.
- Decodificare la sequenza di cluster. Intestazione 0x31: il nibble meno significativo (1) è la dimensione del campo di lunghezza e il nibble più significativo (3) è la dimensione del campo di offset. Lunghezza 0x04 = 4 cluster. Offset
A0 3F 01little-endian = 0x013FA0 = 81.824. I dati occupavano i cluster da 81.824 a 81.827; il terminatore00conclude l'elenco. - Calcolare gli offset. Offset nel volume: 81.824 × 4.096 = 335.151.104. Offset nell'immagine: 335.151.104 + 2.048 × 512 = 335.151.104 + 1.048.576 = 336.199.680. La sequenza copre 4 × 4.096 = 16.384 byte, di cui 14.862 sono dati del file e 1.522 sono spazio residuo (slack).
- Controllare
$Bitmap. Ogni cluster ha un bit, a partire dal bit meno significativo. 81.824 / 8 = 10.228 con resto 0, quindi i cluster da 81.824 a 81.827 corrispondono ai bit da 0 a 3 del byte 10.228. Se tutti e quattro i bit sono 0, i cluster non sono allocati. Se uno qualsiasi è 1, il cluster appartiene ora a un altro file:ifind -o 2048 -d 81824 usb.E01ne indica il nome e il contenuto non può essere attribuito al record 41. Una bitmap con i bit azzerati non dimostra che i cluster non siano mai stati riutilizzati e poi liberati nuovamente, quindi occorre convalidare il contenuto. - Estrarre, calcolare l'hash e convalidare.
icat -o 2048 usb.E01 41 > rec41.binscrive esattamente 14.862 byte (non utilizzare-s, che aggiunge lo spazio residuo). Calcolarne l'hash con SHA-256. Se il nome termina con.pdf, i primi byte all'offset 336.199.680 nell'immagine dovrebbero essere25 50 44 46 2D, il file dovrebbe terminare con%%EOFe dovrebbe aprirsi in un analizzatore PDF.
Esempio svolto 2: carving di un JPEG
Uno strumento di carving segnala un'intestazione JPEG FF D8 FF E1 all'offset 419.430.400 nell'immagine (settore 819.200). Rispetto al volume, (419.430.400 − 1.048.576) / 4.096 = esattamente 102.144, quindi l'intestazione si trova all'inizio del cluster 102.144, come previsto per l'inizio di un file. Lo strumento di carving basato sulla struttura salta il segmento EXIF, inclusa la miniatura incorporata, e trova il marcatore di fine immagine FF D9 all'offset 419.478.226. La lunghezza del file è 419.478.226 + 2 − 419.430.400 = 47.828 byte. Il file di output riceve un nome generato, in genere costruito a partire da un numero progressivo o da un numero di settore. Occorre convalidarlo decodificando l'intera immagine, calcolarne l'hash e registrare che il nome originale, il percorso e i timestamp del file system sono sconosciuti.
Documentare il recupero
Per ciascun file recuperato, registrare: l'immagine di origine e il relativo hash verificato; l'offset della partizione; il metodo (recupero tramite metadati o carving), lo strumento e la versione; per il recupero tramite metadati, il numero del record MFT o la posizione della voce di directory e le sequenze di cluster; per il carving, l'offset iniziale in byte e la lunghezza; lo SHA-256 del file recuperato; la convalida eseguita e il suo risultato; e, per i file recuperati tramite carving, una dichiarazione esplicita che il nome originale e i timestamp sono sconosciuti. Ciò supporta la ripetibilità prevista da ISO/IEC 27042.
Copie precedenti dei file eliminati possono esistere anche nelle Volume Shadow Copies e negli snapshot del file system; la lezione 1.7 tratta gli snapshot APFS, mentre le Volume Shadow Copies vengono trattate più avanti nel corso.
Focus sull'esame: È necessario saper calcolare un offset in byte a partire da un numero di cluster, decodificare una breve sequenza di dati e stabilire se i cluster di un file eliminato siano stati riutilizzati. Occorre conoscere le firme e i marcatori finali della tabella e quali proprietà sopravvivono con ciascun metodo. Occorre sapere che lo SHA-256 del contenuto recuperato deve essere calcolato soltanto sulla dimensione logica, senza spazio residuo, e come trovare il numero del record MFT di un file eliminato.
Punti chiave
- Il recupero tramite metadati utilizza i record superstiti del file system e conserva nome, percorso, timestamp e dimensione esatta; il carving conserva soltanto il contenuto e assegna un nome generato.
- Le eliminazioni su NTFS e FAT lasciano solitamente intatte le posizioni; ext4 in genere azzera gli extent, quindi spesso è necessario il carving.
- Prima di considerare affidabile il contenuto recuperato, controllare la bitmap di allocazione e convalidare il file analizzandolo e calcolandone l'hash.
- TRIM sugli SSD fa spesso sì che i dati eliminati vengano letti come zeri; le unità flash USB generalmente non ricevono TRIM, a seconda del dispositivo e del bridge.
- Il carving basato su intestazione e marcatore finale fallisce con file frammentati e firme annidate; il carving basato sulla struttura è più affidabile, ma richiede comunque una convalida.
- Documentare offset, metodo, versione dello strumento, SHA-256 e, per i file recuperati tramite carving, il fatto che il nome originale e i timestamp siano sconosciuti.
Domande di esercitazione
Verifica la tua comprensione. Queste domande non contano per l’esame.
Accedi per salvare i tuoi progressi e riprendere da dove hai lasciato. È gratuito. Accedi