ICT & Digital Forensics Consulting

Il carving delle strutture dati

Com’è noto, la maggior parte dei tool di informatica forense consente il carving dei file, ovvero:

  • Recupero di file cancellati:  possibile quando la entry del file (ad esempio nell’MFT dell’NTFS) viene invalidata, cioè resa disponibile, ma non ancora riutilizzata ed inoltre i cluster del file non sono stati ancora riallocati
  • Riconoscimento di file all’interno di cluster non allocati: (Parti di) file possono essere recuperati da porzioni di cluster contigue quando vengono riconosciuti determinati pattern caratteristici di specifici tipi di file

Quando non è possibile ricostruire i file cancellati perché le entry del file system sono state sovrascritte, è possibile tentare il recupero dei metadati contenuti in strutture dati memorizzate all’interno dei file stessi. Alcune di queste strutture dati, contenenti metadati di interesse, hanno infatti un “footprint” riconoscibile, ad esempio una struttura variabile ma che risponde a determinate regole che danno luogo a pattern identificabili. Ricercando in tutti i cluster del disco tali pattern è possibile identificare i settori del disco candidati a contenere tali strutture dati e quindi tentare di leggere le informazioni ivi contenute.

Il procedimento concettuale è il seguente (a meno di ovvie ottimizzazioni dovute all’allineamento dei dati nel filesystem):

  1. Posiziono il puntatore in lettura al primo byte del primo cluster del disco
  2. Se una struttura con un certo pattern cominciasse dove ho posizionato il mio puntatore, che significato avrebbe il valore che assume i(l) byte che leggo? Ad esempio potrebbe(ro) essere:
    • un marker di identificazione della struttura (se la struttura inizia con un marker)
    • oppure un offset al quale trovare il primo byte stringa significativo
    • oppure la dimensione della struttura
    • oppure altri parametri che determinano la semantica dei byte successivi
  3. Interpretando i(l) byte in esame come se fosse(ro) parte della struttura ipotizzata, traggo delle conclusioni sulla struttura stessa e continuo a leggere i byte successivi
  4. Se procedendo in questo modo trovo dei risultati consistenti quali
    • Le informazioni di tipo stringa della mia ipotetica struttura contengono solo caratteri ASCII o UNICODE che costituiscono stringhe “sensate” (tale valutazione non può che essere euristica)
    • I valori degli offset sono tra loro compatibili e compatibili con le dimensioni della struttura
    • Trovo tutti i campi che mi aspetto con valori che si collocano nei range previsti per la struttura in esame
  5. Allora posso concludere di avere trovato una struttura dati del tipo in esame, estrarne le informazioni contenute e spostare il mio puntatore di lettura alla fine della struttura appena letta
  6. In alternativa, sposto il mio puntatore di lettura al byte successivo a quello appena esaminato
  7. Torno al punto 2, sino a quando non ho terminato il disco.

Ad esempio i file di Microsoft Office contengono una struttura, denominata SummaryInfo che contiene metadati interessanti per l’analisi forense. Per intenderci si tratta della struttura dati che contiene le informazioni visualizzabili nella finestra “Proprietà del documento” (ad esempio in Word 2007 si accede a tale finestra attraverso il menu Office -> Prepara -> Proprietà -> Proprietà Documento -> Proprietà avanzate… in precedenti versioni di Word era molto più accessibile…) quali la data di creazione del file, l’ultima modifica, l’autore dell’ultimo salvataggio, il numero di revisione, il numero di caratteri contenuti nel documento ed il tempo totale di modifica. Come sopra accennato questi dati sono contenuti in una struttura dati che si trova memorizzata all’interno dei file Office.

Le caratteristiche di tale struttura dati, e dei file Office sono “abbastanza” ben documentate nella letteratura tecnica resa disponibile da Microsoft. Con un po’ di pazienza, un po’ di prove ed errori e qualche slancio di fantasia, è stato possibile implementare una procedura software in grado di effettuare con successo l’analisi descritta sopra, producendo in output un report automatico con l’evidenza di tutte le strutture individuate.

Questo approccio è stato utilizzato  con successo nel corso di un importante processo penale allo scopo di verificare la presenza al computer dell’imputato asseritamente impegnato in attività di video scrittura mediante l’applicativo Microsoft Word. In tal caso, oltre alle informazioni sulla data ed autore di ciascun salvataggio, si sono rivelate estremamente interessanti anche le informazioni sul numero di revisione e sul numero complessivo di caratteri del documento Word, presenti nella struttura SummaryInfo sopra richiamata, che hanno consentito di ricostruire la progressione delle attività di scrittura nel periodo in esame.

Successivamente la procedura è stata utilizzata anche con file di diversa tipologia con risultati sorprendentemente interessanti. Ad esempio analizzando le strutture dati dei file di tipo thumbs.db prodotti da Windows Xp è stato possibile ricostruire la presenza nell’hard disk di un indagato di determinati file video cancellati tempo addietro, associando anche i titoli degli stessi con le relative preview (thumbnails).