Non potevo accontentarmi di lasciare perdere l’argomento, trattato qualche giorno fa, rimanendo con un punto interrogativo. Quindi eccomi di nuovo qui a riprendere il discorso sui file cancellati in NTFS e sui tool forensi.
Ho condotto ulteriori analisi, in particolare sulle due immagini disco generate con Windows XP ed ho scoperto cose interessanti, lavorando però di dump esadecimale.
Ho estratto il file $MFT da entrambe le immagini, ne ho fatto il dump esadecimale e li ho messi a confronto usando gvimdiff, la versione grafica del noto editor Vim nella variante per mostrare le differenze fra due file.
Il file è la Master File Table del filesystem e contiene praticamente tutte le informazioni per mettere insieme i pezzi del filesystem. La struttura è molto complessa, ma per quello che ci serve cercheremo di limitarci all’essenziale per capire come stanno le cose, a scapito dell’estremo dettaglio, che in questo specifico caso non ci interessa.
Riassumo il problema: nella directory docs sono stati cancellati due dei quattro file PDF presenti (pdf2.pdf e pdf4.pdf), e solo uno risulta presente e recuperabile (pdf2.pdf), l’altro pare svanito nel nulla. Tutti i tool forensi provati mostrano questo risultato, sia open source che commerciali.
Confrontando i dump esadecimali delle due MFT si trova il problema. La directory è un file come tutti gli altri, che in questo caso viene memorizzato all’interno della MFT stessa, nello stesso record, vista la ridotta dimensione, condizione in cui il file viene chiamato “residente”. Da qui partono i puntatori agli altri record che rappresentano i singoli file presenti nella directory. Nella MFT dell’immagine con tutti i file prima della cancellazione il record è posizionato nella entry numero 29, all’offset 0×7400 del file. I file sono invece posizionati come segue:
- pdf1.pdf – entry 33
- pdf2.pdf – entry 31
- pdf3.pdf – entry 32
- pdf4.pdf – entry 30
cosa verificabile con Autopsy nella sezione dei metadati. La struttura dati della directory è lunga 464 bytes, sempre secondo la MFT.
Nell’immagine con i file cancellati la struttura della directory è lunga solo 256 bytes, indice che è stata “accorciata”, fra poco vedremo il perché. Le entry di prima contengono:
- pdf1.pdf – entry 33
- pdf2.pdf (deleted) – entry 31
- pdf3.pdf – entry 32
- images/Thumbs.db – entry 30
andando a vedere la struttura della directory nella MFT si nota questo:
00007590: 0803 7000 6400 6600 3100 2E00 7000 6400 ..p.d.f.1...p.d.
000075A0: 6600 0000 0000 0000 2000 0000 0000 0100 f....... .......
000075B0: 6800 5200 0000 0000 1D00 0000 0000 0100 h.R.............
000075C0: 96D8 C62C C323 C901 00D0 106D 741D C901 ...,.#.....mt...
000075D0: 00D0 106D 741D C901 F03A C92C C323 C901 ...mt....:.,.#..
000075E0: 0094 0200 0000 0000 E493 0200 0000 0000 ................
000075F0: 2000 0000 0000 0000 0803 7000 6400 0800 .........p.d...
00007600: 3300 2E00 7000 6400 6600 0000 0000 0000 3...p.d.f.......
00007610: 0000 0000 0000 0000 1000 0000 0200 0000 ................
00007620: FFFF FFFF 8279 4711 2E4F BD2C C323 C901 .....yG..O.,.#..
00007630: 0003 BA45 741D C901 0003 BA45 741D C901 ...Et......Et...
00007640: 5275 3E14 5B24 C901 009E 0200 0000 0000 Ru>.[$..........
00007650: D99D 0200 0000 0000 2000 0000 0000 0000 ........ .......
00007660: 0803 7000 6400 6600 3400 2E00 7000 6400 ..p.d.f.4...p.d.
00007670: 6600 0000 0000 0000 0000 0000 0000 0000 f...............
00007680: 1000 0000 0200 0000 FFFF FFFF 8279 4711 .............yG.
00007690: 2E4F BD2C C323 C901 0003 BA45 741D C901 .O.,.#.....Et...
000076A0: 0003 BA45 741D C901 5275 3E14 5B24 C901 ...Et...Ru>.[$..
000076B0: 009E 0200 0000 0000 D99D 0200 0000 0000 ................
000076C0: 2000 0000 0000 0000 0803 7000 6400 6600 .........p.d.f.
000076D0: 3400 2E00 7000 6400 6600 0000 0000 0000 4...p.d.f.......
000076E0: 0000 0000 0000 0000 1000 0000 0200 0000 ................
000076F0: FFFF FFFF 8279 4711 0000 0000 0000 0000 .....yG.........
che nella MFT prima della cancellazione è invece così:
00007590: 0803 7000 6400 6600 3100 2E00 7000 6400 ..p.d.f.1...p.d.
000075A0: 6600 0000 0000 0000 1F00 0000 0000 0100 f...............
000075B0: 6800 5200 0000 0000 1D00 0000 0000 0100 h.R.............
000075C0: E213 C22C C323 C901 8037 4114 741D C901 ...,.#...7A.t...
000075D0: 8037 4114 741D C901 3C76 C42C C323 C901 .7A.t...<v.,.#..
000075E0: 0034 0200 0000 0000 3C33 0200 0000 0000 .4......<3......
000075F0: 2000 0000 0000 0000 0803 7000 6400 6600 .........p.d.f.
00007600: 3200 2E00 7000 6400 6600 0000 0000 0000 2...p.d.f.......
00007610: 2000 0000 0000 0100 6800 5200 0000 0000 .......h.R.....
00007620: 1D00 0000 0000 0100 96D8 C62C C323 C901 ...........,.#..
00007630: 00D0 106D 741D C901 00D0 106D 741D C901 ...mt......mt...
00007640: F03A C92C C323 C901 0094 0200 0000 0000 .:.,.#..........
00007650: E493 0200 0000 0000 2000 0000 0000 0000 ........ .......
00007660: 0803 7000 6400 6600 3300 2E00 7000 6400 ..p.d.f.3...p.d.
00007670: 6600 0000 0000 0000 1E00 0000 0000 0100 f...............
00007680: 6800 5200 0000 0000 1D00 0000 0000 0100 h.R.............
00007690: 2E4F BD2C C323 C901 0003 BA45 741D C901 .O.,.#.....Et...
000076A0: 0003 BA45 741D C901 E213 C22C C323 C901 ...Et......,.#..
000076B0: 009E 0200 0000 0000 D99D 0200 0000 0000 ................
000076C0: 2000 0000 0000 0000 0803 7000 6400 6600 .........p.d.f.
000076D0: 3400 2E00 7000 6400 6600 0000 0000 0000 4...p.d.f.......
000076E0: 0000 0000 0000 0000 1000 0000 0200 0000 ................
000076F0: FFFF FFFF 8279 4711 0000 0000 0000 0000 .....yG.........
Proviamo a riassumere. La directory è stata compattata per conservare i dati di soli due file invece di quattro e nella operazione le entry dei file pdf3.pdf e pdf4.pdf vanno a soprascrivere quella del file pdf2.pdf, poi viene accorciata, perdendo le indicazioni relative al file pdf4.pdf. Tutte queste informazioni si perdono e solo andando di dump esadecimale diretto sul file $MFT si possono vedere.
La entry 30, riguardante il file pdf4.pdf viene soprascritta autonomamente da Windows: nel momento in cui sono andato dalla directory docs alla directory images è passato alla modalità “visualizzatore di immagini”, creando e scrivendo il file delle thumbnail (Thumbs.db), soprascrivendo di fatto la entry del file pdf4.pdf. Il file pdf2.pdf è recuperabile perché, anche se eliminato dalla struttura dati della directory, è ancora presente la sua entry nella MFT, mentre il file pdf4.pdf, pur se ancora presente nella entry della directory docs, non è all’interno di alcuna struttura dati valida, e la sua entry è stata soprascritta da un altro file. Ecco perché il file pdf4.pdf è “sparito”.
Insomma, alla fine niente di strano o preoccupante in sé, solo normali operazioni del filesystem e le sue decisioni autonome relative all’efficienza ed al mantenimento della coerenza interna. Se non mi fossi posto il dubbio, e non avessi operato in questo modo, non avrei mai notato le discrepanze e la “scomparsa” dei file cancellati. Lavorando solo con i tool non si ottiene “tutta la verità”. Occorre come sempre competenza ed un pizzico di scetticismo, che non guasta mai.
Quindi, a maggior ragione
Trust no one


#1 da Nanni Bassetti il 18 November 2008 - 08:09
Bhè il fatto che tu avessi sfogliato il disco creando il thumbs.db non l’avevi detto però…chiaramente su una dimensione così piccola, quest’ultimo ha sovrascritto delle entry della MFT. Pensavo che avessi fatto la cancellazione da riga di comando col del
Aspetto che posti il link di questo post su CFI
#2 da Mario Pascucci il 18 November 2008 - 09:30
@Nanni
A parte il fatto che il file delle thumbnail è ben visibile dentro la directory delle immagini, in una situazione di forensic reale non è che il proprietario del disco ti dica per filo e per segno cosa ci ha fatto.
Il punto è un altro, e forse non sono stato abbastanza chiaro: nonostante le tracce del file ci siano nella MFT, non vengono viste da nessun tool, pur tenendo pure conto che le tracce sono “fuori” dalle strutture effettivamente allocate nella MFT. Lo scopo di quanto scritto era appurare cosa effettivamente vede un tool e cosa in realtà c’è sul supporto.
#3 da Nanni Bassetti il 22 November 2008 - 09:13
Ok ma in una situazione reale, avrei usato i tool di recupero e poi il carving ed avrei recuperato tutto, come abbiamo sperimentato….non mi sarei posto il problema del perchè alcuni file non erano stati recuperati col tool di recupero, avrei pensato, semplicemente, che erano nell’unallocated space…
Cmq sì…rimane un esperimento molto interessante
#4 da wiz4rd il 4 December 2008 - 11:59
Ciao , io ho trovato l’articolo veramente interessante e l’analisi che hai fatto ha evidenziato come affrontare con occhio critico le operazione apparentemente banali.
Complimenti
#5 da Mario Pascucci il 4 December 2008 - 16:31
@wiz4rd
Grazie. Lo scopo è proprio quello di mettere in guardia contro il metodo “pilota automatico”, ossia fare le cose contando solo sugli strumenti, col cervello spento.