Le chiavi di registry e gli hive file di interesse
In questo articolo non viene fornita alcuna spiegazione generica sui registry di Windows, nè sul formato delle informazioni memorizzate, ivi compreso il LastWriteTime, nè sugli hive file, perché in Internet si trova veramente abbondante materiale al riguardo, anche in italiano. Tali concetti si riterranno pertanto nel seguito già noti al lettore.
Per lo stesso motivo la presente analisi non tiene conto delle differenti caratteristiche dei registry delle diverse versioni di Windows. Per semplicità quanto segue assume che il sistema in esame sia basato su Windows Xp. Il “porting” di quanto detto ad altre versioni di Windows dovrebbe risultare al lettore abbastanza semplice.
Le chiavi dei registry dove si trovano informazioni interessanti ai fini della presente analisi sono:
- HKLM\SYSTEM\MountedDevices, che contiene:
- il ParentIdPrefix del dispositivo USB,
- l’identificativo del Volume associato al dispositivo USB, l’ultima volta che è stato inserito
- HKU\SID\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\CPC\Volume, che contiene:
- L’elenco dei Volumi montati con l’account dell’utente, con la data di ultima installazione
- HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR, che contiene:
- il nome/marca del dispositivo USB,
- il suo Serial Number (laddove presente, in quanto non tutti dispositivi lo forniscono) verificabile con appositi tool quali UVCView
- il suo “ParentIdPrefix” (corrispondente a quello reperibile nella prima chiave di cui sopra)
- la data di primo inserimento del dispositivo nel PC
- la data di ultimo inserimento del dispositivo nel PC
Incrociando le informazioni contenute nella terza chiave con la prima chiave si può sapere quali dispositivi USB sono associati a quali Volumi (l’ultima volta che sono stati inseriti). Incrociando quest’ultima informazione con l’elenco contenuto nella seconda chiave, si può sapere con quale utente sono stati collegati l’ultima volta quegli stessi dispositivi USB.
La prima e la terza chiave si trovano in HKLM\System, quindi possono essere trovate negli hive file di tipo “system” che si trovano in %SYSTEMROOT%\System32\config, oltre che negli equivalenti salvati nei punti di ripristino.
La seconda chiave va cercata nello hive file HKCU\SID dell’utente SID, che si trova nella sua home directory, ovvero in %USERPROFILE%\NTUSER.DAT (da non confondersi con l’hive file HKU\SID_CLASSES che si trova in %USERPROFILE%\Local Settings \Application Data\Microsoft\Windows\UsrClass.dat).
Il tool regripper di H. Carvey
Il tool utilizzato per la presente analisi è regripper di H. Carvey, keydet89@yahoo.com. Si tratta di un tool open source, scritto in Perl, reperibile presso http://regripper.wordpress.com/. La versione qui esaminata è la 2.02 del 12 Maggio 2008.
Regripper per Windows ha una GUI abbastanza semplice codificata nel file rr.pl. Qui, viene caricata la main window che, oltre a consentire di scegliere l’hive file su cui effettuare l’analisi ed impostare il nome del file di output, consente anche di selezionare i plugin da utilizzare.
Come spiegato dallo stesso Carvey in un breve articolo di accompagnamento, i plugin sono singoli moduli in perl, situati nella directory .\plugins, che effettuano uno specifico tipo di analisi. Ad esempio, mountdev.pl effettua l’estrazione dei dati disponibili alla chiave HKLM\SYSTEM\MountedDevices. A titolo di curiosità tra i plugin è disponibile anche un file mountdev2.pl che probabilmente corrisponde ad una versione successiva ma che, a quanto risulta allo scrivente, non viene utilizzato nella release in esame. Analogamente, usbstor.pl effettua l’estrazione dei dati presenti nella chiave HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR. Curiosamente anche per questo file esiste una versione 2 non utilizzata.
Ovviamente non tutti i plugin sono adatti per tutti gli hive file. A questo scopo regripper prevede un meccanismo di pacchettizzazione dei plugin in modo che a seconda dell’hive in esame si possa scegliere il pacchetto di plugins indicato. I pacchetti disponibili nella versione in esame sono:
- all: esegue il plugin regtime, che effettua l’esame di tutte le Hkeys dell’hive file estraendole e riportando anche il LastWriteTime
- ntuser: esegue i plugin finalizzati all’analisi dell’omonimo hive file
- sam: esegue il plugin samparse.pl finalizzato all’analisi dell’omonimo hive file
- security: esegue il plugin auditpol.pl finalizzato all’analisi dell’omonimo hive file
- software: esegue i plugin finalizzati all’analisi dell’omonimo hive file
- system: esegue i plugin finalizzati all’analisi dell’omonimo hive file
La selezione dei plugin da eseguire è dinamica ed è costruita nel modo seguente:
- Il programma effettua a runtime una lettura dei contenuti della directory .\plugins, selezionando tutti i file che non hanno estensione “.pl”, corrispondenti ai pacchetti di plugin sopra descritti
- Questi file vengono visualizzati nella combo di lista dei plugin. Nella versione attuale solo uno dei pacchetti può essere selezionato, determinando quali plugin eseguire.
Il meccanismo di costruzione dei pacchetti di plugin è talmente semplice che volendo aggiungerne o modificarne uno è sufficiente creare un nuovo file di testo, con l’elenco dei plugin di interesse, e salvarlo nella directory .\plugins.
Nel nostro caso noi vogliamo quindi utilizzare i plugin mountdev.pl e usbstor.pl per l’esame degli hive file di tipo system.
Invece, per l’esame della chiave HKU\SID\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 utilizzeremo il plugin mp2.pl sugli hive file di tipo ntuser.dat reperibili nelle home directory degli utenti del sistema in esame.
Per effettuare questa analisi è sufficiente utilizzare l’interfaccia utente di regripper, selezionando opportunamente l’hive file ed il plugin. Se fosse necessario si ricorda che l’hive file di un sistema live non può essere acceduto direttamente senza l’ausilio di strumenti appositi.
L’analisi “storica” basata sui Restore Point
Come già detto in un altra serie di articoli, “L’Analisi forense dei ‘Punti di Ripristino’ (Restore Points)”, gli hive file vengono memorizzati da Windows nei Restore Point generati dalla utilità di ripristino configurazione di sistema. Questo consente di recuperarli e di effettuare analisi di una determinata chiave di registro “nel corso del tempo”, andando a vedere ad esempio come il valore dell’ultimo utilizzo di un dispositivo USB risulta aggiornato nel tempo.
A questo scopo è conveniente utilizzare l’eseguibile da linea di comando fornito con regripper con il quale si possono selezionare i plugin da utilizzare e che può anche essere inserito in un batch per effettuare la stessa analisi sui diversi hive file. Con questa utility, volendo solo effettuare l’analisi della chiave di registro HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR è possibile usare questa sintassi:
rip -r $system_hive_file -p usbstor >> report_file
dove $system_hive_file può essere una variabile contenente i nomi dei vari hive file di tipo system recuperati dai diversi Restore Point.
Ad esempio, in Windows XP ad ogni salvataggio della configurazione di sistema, gli hive file vengono salvati nella directory snapshot che si trova sotto la directory RPXX (dove XX è il numero progressivo del restore point) che si trova a sua volta due livelli sotto la directory “System Volume Information”.
L’unico accorgimento da tenere presente in questo caso è che gli hive file vengono rinominati. Nel nostro caso l’hive_file system di interesse per l’analisi dell’USBSTOR è reperibile come _REGISTRY_MACHINE_SYSTEM.