Clonazione di dispositivi con dcfldd

Il comando dd è usato in ambiente linux/Unix per creare copie bit a bit fra device.

Vediamone un esempio di seguito:

sudo dd if=/dev/Sr0 of=/home/seawolf/backup.iso bs=2048 conv=sync

L’opzione conv=sync indica a dd di sincronizzare l’input e l’output assicurando una protezione contro la perdita di dati. A seconda della velocità del proprio lettore, il processo potrebbe richiedere un pò di tempo e al termine si avrà un’immagine ISO che successivamente si potrà anche masterizzare.

Questo comando durante la sua esecuzione, non mostra a video nessun output mentre è in esecuzione e quindi non è possibile sapere fino a dove è arrivato a creare l’immagine del nostro device ed è per questo che ci viene in soccorso dcfldd, che è praticamente uguale a dd ma con l’aggiunta della scrittura sullo standard output, in modo tale che possiamo vedere in tempo reale fino a che punto siamo arrivati con la costruzione dell’immagine che stiamo creando.

Prendiamo spunto dal rilascio della versione 1.2 (http://prdownloads.sourceforge.net/dcfldd/) per parlare di questa versione di DD modificata ed adattata al lavoro “duro” in ambito Computer Forensics dai programmatori del DoD(Department of Defense) Computer Forensic Lab, in particolare da Nick Harbour che, pur non essendo più affiliato al DCFL ne continua la manutenzione ed implementazione.

Chi già utilizza dd come programma principale nella fase di duplicazione e nel trattamento generico di blocchi di dati non troverà particolare difficoltà nell’impiego di questo tool.

Il cuore del programma è lo stesso, i comandi di base sono gli stessi, la robustezza di dd è stata semplicemente integrata con funzionalità atte a migliorare il lavoro di duplicazione ed a velocizzare per quanto possibile la verifica di un dispositivo, fase che costituisce sempre uno spreco di tempo non indifferente. In particolare sono state inserite funzionalità di hashing, di wiping con patterns definiti e lo stato di output.

La pagina man di dcfldd risulta particolarmente scarna, il contenuto è praticamente lo stesso ottenibile con l’opzione –help da linea di comando.

Il vantaggio maggiore del programma risiede senza dubbio nel calcolo dell’hash simultaneamente alla creazione della copia eliminando il passaggio aggiuntivo richiesto con l’utilizzo di dd. Non solo, con la funzione ‘hashwindow=’ possiamo impostare un range per il quale calcolare l’hash relativo, oltre ovviamente a quello corrispondente all’immagine totale.

L’opzione ‘hashalgorithm=’ permette di scegliere il tipo di algoritmo da utilizzare, con la versione attuale sono disponibili: MD5 (default), SHA-1, SHA-256, SHA-384 e SHA-512.

L’altra opzione rilevante è ‘textpattern=’ , che assieme a ‘pattern=’permette di inserire una stringa di testo personalizzata come input e quindi come output nella fase di cancellazione dei supporti (‘pattern’ utilizza uno specificato pattern binario al posto del testo).

Vediamo una serie di esempi su una chiave usb da 32Mb in /dev/sda1.

Utilizzato come dd non risultano particolari differenze, a parte il comodo output in tempo reale dei blocchi processati. E’ possibile disabilitare l’output attraverso l’opzione ‘status=off’:

$ dcfldd if=/dev/sda1 conv=sync,noerror of=/mnt/morgue/case1.img

Con la funzione ‘hashwindow’ calcoliamo l’hash dell’immagine parallelamente alla duplicazione ed attraverso ‘hashlog’ reindirizziamo il risultato in un file. Da tener presente che l’attivazione della funzionalità di hashing avviene attraverso l’opzione ‘hashwindow=0’ in quanto il parametro 0 forza l’hashing dell’intera immagine :

$ dcfldd if=/dev/sda1 conv=sync,noerror hashwindow=0 hashlog=/mnt/morgue/case1.img.md5 of=/mnt/morgue/case1.img

Modifichiamo l’opzione ‘hashwindow=0’ in ‘hashwindow=4M’ ed otteniamo in output il calcolo del valore md5 ogni 4Mb oltre al normale hash md5 dell’immagine completa:

$ dcfldd if=/dev/sda1 conv=sync,noerror hashwindow=4M hashlog=/mnt/morgue/case1.img.md5 of=/mnt/morgue/case1.img

Attraverso il parametro ‘hashalgorithm=sha256’ utilizziamo l’algoritmo relativo al posto del predefinito md5 (tener presente che all’aumento di complessità dell’algoritmo corrisponde un aumento del tempo necessario alla procedura di duplicazione):

$ dcfldd if=/dev/sda1 conv=sync,noerror hashalgorithm=sha256 hashwindow=0 hashlog=/mnt/morgue/case1.img.md5 of=/mnt/morgue/case1.img

Col seguente comando cancelliamo il device inserendo come pattern la stringa “cybercrimes.it”:

$ dcfldd textpattern=”cybercrimes.it” of=/dev/sda1

Due parole su quest’ultima funzionalità: personalizzare la “sterilizzazione” di un disco è una caratteristica interessante a patto di non abusarne in quanto oltre a complicare la fase di verifica della cancellazione completa, può creare non pochi problemi durante l’analisi producendo una moltitudine di falsi positivi nella ricerca di stringhe e valori.

Loading Facebook Comments ...

Lascia un commento