INFORMATICA - VOLATILITA'/PERSISTENZA DATI

...una copia certificata dei dati a disposizione è la base per un approccio ottimale all'analisi forense ma è sempre possibile individuare i dati rilevanti e copiarli?

Luglio 2007

Quello che qualsiasi investigatore tecnico informatico vorrebbe è una copia di tutti i dati di un elaboratore organizzata in maniera più o meno strutturata in un "contenitore" digitale di adeguate dimensioni che nulla abbia a che fare con il reperto originale. Sfortunatamente questo è di principio impossibile. Ci si accontenta in genere di avere la copia di livello più basso possibile delle sole memorie di massa, o nel migliore dei casi della RAM, per poi poter applicare un qualche tool forense. Di seguito un piccolo approfondimento.

Diversi gradi di volatilità

Riprendendo quanto riportato in [42] si deve innanzitutto considerare il tempo di vita medio dei dati nelle diverse memorie digitali, ossia il periodo di tempo medio nel quale risultano non modificati. Ovviamente risulta inversamente proporzionale alle velocità di accesso delle stesse e dipende dal tipo di tecnologia o dal particolare impiego che si fa del dispositivo. Un registro o una cache, memorie estremamente performanti, determinano, per i loro dati, dei tempi di vita medi di solo alcuni nanosecondi, fattore che si alza a decine di nanosecondi per la RAM ed a secondi per dati di processi. Minuti, anni e decine di anni si evidenziano invece per memorie di massa rispettivamente magnetiche e ottiche.

Una domanda immediata è quindi la seguente: ha senso effettuare la copia di dati il cui tempo di vita medio è inferiore o uguale a qualche secondo?

In taluni casi può aver senso e si può anche eseguire ma sono situazioni molto al limite. Ad esempio se un processo deve essere posto sotto controllo e può essere riattivato in "ambiente controllato" (es. una virtual machine) senza vincoli di tempo è possibile realizzare dei dump talmente mirati da conseguire l'immagine di tutti i dati coinvolti a prescindere dal loro tempo di vita.

Tutto ciò, sfortunatamente, in una scena del crimine è utopico o quanto meno molto raro. In essa infatti, le situazioni tendono a susseguirsi diverse e le condizioni perdurano poco da cui devono essere "immortalate", spesso, senza possibilità di prevederle in anticipo.

Osservabilità dei dati

Si configura un vero e proprio problema di osservabilità dei dati, soprattutto per le memorie molto veloci. Si faccia l'ipotesi di voler copiare in un istante i valori presenti su tutti i registri di una CPU. Sfortunatamente uno dei metodi naturali per effettuare la copia è lanciare un interrupt hardware o software verso la CPU stessa con il risultato che se ne vanno quanto meno a modificare alcuni registri (e poi a seguire almeno la RAM...). In definitiva l'osservazione corrisponde implicitamente ad una modifica.

Sempre con riferimento a [42] è straordinario vedere la similitudine che si crea tra questo fenomeno e l'osservazione delle particelle sub-atomiche per le quali l'osservazione, corrispondente ad inviare almeno un fotone verso di loro o un'altra particella sonda, ne modifica lo stato (per gli amanti della fisica basta leggere i tomi del Werner Heisemberg...).

Per le memorie ad alte prestazioni come registri e cache (hardware) se ne deduce la non osservabilità anche solo dal punto di vista teorico. Per la RAM vi è un'osservabilità limitata dal tipo di tool (hardware/software) sonda in quanto vi è la possibilità che legga i dati che lui stesso ha modificato! Per le memorie di massa esiste un'osservabilità di livello alto (beninteso non sempre massima come risulta dalla pagina sul live forensics di questo sito).

Misure del "Data Persistence"

Ci sono in letteratura diversi lavori di ricerca relativi al "Data Persistence", ossia allo studio della persistenza dei dati nelle diverse memorie con differenti gestioni ed impieghi. In particolare segnalo il [43] in cui ci si concentra proprio sulla persistenza dei dati in RAM su un sistema UNIX-like.

E' interessante osservare che l'obiettivo della ricerca sulla persistenza dei dati è dare una ragion d'essere alla computer forensics ed in particolare al live forensics. L'idea di base è che se la persistenza è al di sotto di una certa soglia non ha proprio senso svolgere un'analisi forense post-mortem ma è obbligatoria l'analisi sul posto (real-time). Nella nostra legislazione penale dimostrare un fatto del genere equivarrebbe ad ammettere che tutti gli accertamenti tecnici informatici sono IRRIPETIBILI!!! Un avvocato con buone conoscenze tecniche nel settore o un consulente informatico con buona conoscenza legale potrebbero guardare a questa frase come ad una notevole leva in dibattimento...

In ogni caso, in [43], un risultato importante è che, in RAM, in diverse condizioni di carico del sistema e limitatamente al sistema operativo UNIX (o UNIX-like), persistono raramente dati rilevanti (che abbiano almeno un senso compiuto) appartenenti a file scritti/letti su/da memorie di massa mentre tendono a persistere per un discreto numero di ore dati di sistema e relativi a processi.

Si potrebbe dedurre che non ha senso repertare nella RAM i dati di file aperti o comunque impiegati dal sistema? E' possibile, ma sono necessarie, a mio avviso, ulteriori ricerche (l'ambito di studio è ancora troppo limitato e prototipale di laboratorio). Potremmo quasi concludere "la RAM alla RAM e le memorie di massa alle memorie di massa" a voler intendere di poco sognare repertamenti di file presenti ad esempio su hard disk per mezzo della loro immagine temporaneamente e/o parzialmente spostata in memoria centrale. Questo comunque dipende sempre dall'evoluzione che gli elaborati avranno nei prossimi anni...

Ulteriori studi si sono svolti e si stanno svolgendo sulla persistenza dei dati non strutturati (o che hanno perso la struttura), primi fra tutti ovviamente i dati cancellati o persi. In RAM si studia il tempo di decadimento del contenuto dell'area dati dei processi all'atto della loro chiusura. Per le memorie di massa è classico lo studio dei file (o aree) di swap, dei cluster persi (orfani), e dei dati di sistema, soprattutto in relazione ai due principali eventi di attivazione e spegnimento del sistema operativo.

Un cenno alla validità dei dati

Lo studio approfondito del data persistence potrebbe risultare di notevole utilità per la definizione di un grado di affidabilità tecnico ed ufficialmente riconosciuto della validità di un recupero di dati cancellati a diversi livelli.

In dibattimento mi è capitato spesso di aver testimoniato quale tecnico forense, non sul contenuto di quanto recuperato ma piuttosto su:

(1) l'affidabilità del processo di recupero: è stato recuperato tutto? poteva esserci altro che è sfuggito? il recupero è corretto o il dato ottenuto proviene da un'elaborazione che lo ha alterato o "inventato"?

(2) la validità del dato e la sua rappresentatività: il dato così recuperato cosa può dimostrare?

(3) si può stabilire da dove viene il dato recuperato (es. rete, processo locale, ecc.) ? a quale file apparteneva originariamente, ecc.

Le risposte che ho dato venivano, ovviamente, dal singolo caso investigativo, ma sono convinto che è possibile creare una sorta di scala generale di media validità dei dati recuperati su qualsiasi memoria digitale, sia essa un chip su uno smartphone, una smartcard, la RAM di un PC o una memoria di massa. Vedremo la ricerca scientifica nel settore come evolverà!