Nella digital forensics, ossia quella disciplina che si occupa delle investigazioni informatiche a fini di giustizia, forensi appunto, spesso serve creare delle timeline, cioè delle linee temporali per tracciare e capire le attività del dispositivo in esame nel tempo.
La creazione di timeline è sempre un'operazione delicata, che va vagliata attentamente, infatti ci sono delle considerazioni da fare, come gli scostamenti temporali, ad esempio se il dispositivo è stato ritrovato in una nazione col fuso orario diverso dal nostro dobbiamo tenerne conto, al fine di contestualizzare perfettamente gli orari, come anche del "time skew", che è l'aggiustamento fine se per esempio il dispositivo aveva l'orario sbagliato di ore o minuti. Grazie all'uso di questi parametri si può ottenere una timeline affidabile.
Per creare una timeline su un dispositivo o su un file immagine con gli strumenti Open Source, c'è l'immancabile coltellino svizzero che è The Sleuth Kit di Brian Carrier, che con due semplici comandi può risolvere il problema, esempio:
sudo tsk_gettimes /dev/sda -s 0 > /evidences/times.txt
il comando tsk_gettimes estrae i tempi e le date dal dispositivo /dev/sda, (poteva anche essere un file immagine DD o EWF o AFF), e scrive un file di testo times.txt di questo tipo:
0|vol2/SHARK-KEY (Volume Label Entry)|3|r/rrwxrwxrwx|0|0|0|0|1207210852|0|0 0|vol2/hotspot_lista.html|6|r/rrwxrwxrwx|0|0|389216|1334008800|1207718238|0|1207306079 0|vol2/hotspot_lista_files|9|d/drwxrwxrwx|0|0|16384|1207260000|1207306082|0|1207306080 ecc. ecc.
a questo punto basta lanciare:
sudo mactime -b /evidences/times.txt -z CET -d 2007-01-01..2009-01-01 >/evidences/report.csv
al fine di ottenere un file CSV con date, orari, permessi e nome file di questo tipo:
Il file CSV ottenuto
Ok, la solita solfa di GNU/Linux, righe di comando, parametri da ricordare, voglio la GUI! Dirà qualcuno, per questo ho scritto NBTempo un semplice GUI, realizzata usando YAD (Yet Another Dialog), ed un semplice bash script, ed anche sulla distribuzione GNU/Linux CAINE 2.5.1
Ecco come appare:
Clicchiamo su NBTempo
Scegliamo il file immagine
Poi scegliamo la directory di output e seguiamo il wizard:
Qui ci chiede se abbiamo già estratto una volta i valori grezzi (tsk_gettimes)
Perché se vogliamo cambiare il range di date, non abbiamo bisogno di rileggere tutto il dispositivo o il file immagine, NBTempo userà il file precedentemente scritto.
Alla fine avremo il report nella directory prescelta i file:
data-2008-04-23-2012-04-23.txt times.txt report-2008-04-23-2012-04-23.csv
Il file data-2008-04-23-2012-04-23.txt contiene un riepilogo dei parametri prescelti e un output di mmls (altro tool di Sleuthkit), per vedere le partizioni del dispositivo:
DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors Slot Start End Length Description 00: Meta 0000000000 0000000000 0000000001 Primary Table (#0) 01: ----- 0000000000 0000000062 0000000063 Unallocated 02: 00:00 0000000063 0000498014 0000497952 NTFS (0x07) 03: ----- 0000498015 0000503807 0000005793 Unallocated device: /home/caine/labo/lexar.dd from: 2008-04-23 to: 2012-04-23 Time Zone: time skew: 0
Mentre times.txt è l'output di tsk_gettimes ed infine il file report è un report facilmente consultabile con un programma come OpenOffice/LibreOffice Calc o MS Excel.
Chiaramente NBTempo è freeware ed Open Source, ogni miglioria è sempre possibile ed ogni consuglio è ben accetto. Tutto qui, allora buon lavoro con le timeline!