
A volte è necessario creare una copia bit-image di un computer senza (o almeno prima di) chiudere il sistema.
Per bit-image si intende una copia di ogni bit sul disco rigido a prescindere da come il sistema operativo lo vede, piuttosto che non copiare ogni file. Una copia bit-image è da preferire a quella dei file in quanto include file e dati frammentati o cancellati che altrimenti risulterebbero nascosti.
Quando usare la copia bit-image
Una situazione tipica in cui si può rendere necessaria la creazione di una bit-image è quella di un server critico che non può essere fermato. In questo articolo tecnico, considereremo un server Windows con un singolo disco.
Una delle questioni più importanti quando si crea un'immagine di un server è di stabilire dove memorizzare tale immagine. Siccome ovviamente non potete salvarla sul drive che state copiando, due buone opzioni sono un drive USB oppure attraverso la rete. Noi spiegheremo la copia via rete.
I tool DD e netcat
Tutto ciò di cui avete bisogno per creare l'immagine disco e copiarla su un altro computer tramite la rete è una versione Windows dei tool GNU/Linux DD e netcat, che sono entrambi gratuiti e open source.
DD crea la copia bit-image del disco e netcat la invia attraverso la rete. Naturalmente, sarà necessario un secondo computer sulla rete, che riceverà l'immagine e che perciò deve avere uno spazio capacità sufficiente per tale immagine. Sarà bene che mettiate questi due tool su un supporto sicuro, preferibilmente un CD. In questo modo, vi assicurerete che non "subiranno danni" quando li utilizzerete su un sistema compromesso.
DD crea la copia leggendo ogni cluster del disco, dall'inizio fino alla fine del disco stesso. Su un computer in funzione, il contenuto del disco viene aggiornato con una frequenza proporzionale al suo livello di attività, quindi possono essere apportate delle modifiche a un segmento del disco dopo che DD lo ha già copiato.
Come DD, useremo Dcfldd: questa versione di DD è stata creata dal Computer Forensics Lab del Dipartimento della Difesa statunitense. È funzionalmente identica alla versione normale di DD, ma sono state aggiunte alcune funzioni relative all'hashing dei dati copiati.
L'hash crea una firma che permette di verificare se l'output è lo stesso dell'input del disco originale. Dal momento che siamo realizzando un'immagine del server "dal vivo", il disco è in continua attività, il che significa che una seconda immagine non avrà un hash corrispondente a quello della prima immagine.
Dcfldd è un tool abbastanza semplice da usare e la sua documentazione si può trovare nell'homepage di sourceforge.net.
Il parametro "if =" viene usato per specificare l'input, in genere il disco o la partizione del disco di cui si sta facendo l'immagine. Determinare il nome corretto per il vostro dispositivo di input può essere un po' complicato (la documentazione cygwin vi spiega in dettaglio come fare).
Un metodo rapido è usare "/dev/sda" per riferirsi al primo disco rigido, "/dev/sdb" al secondo disco, "/dev/sdc" al terzo disco e così via.
Alcune altre versioni di DD, che non supportano l'hashing, forniscono un comando "--list" che è piuttosto comodo perché numera automaticamente le unità del sistema. È possibile usare DD per copiare l'immagine di un disco fisico utilizzando un file immagine come if e un dispositivo fisico come of.
Un esempio di DCFLDD
Vediamo nel dettaglio il seguente comando:
dcfldd if=/dev/sdc hash=sha256 hashwindow=512M sha256=mydrivehashes.log / bs=512 conv=noerror split=2G of=mydrive.dd
Questo esempio si occupa di:
- Copierà il terzo disco fisso (/dev/sdc) sul file mydrive.dd.
- Utilizzerà SHA256 per creare l'hash del contenuto del disco in un segmento di 512 Mb.
- Registrerà gli hash nel file mydrivehashes.log.
- Dividerà il file in file da 2GB.
- Salterà gli errori di lettura invece di fermarsi (conv=noerror).
Ho mostrato come creare un'immagine disco, ma solo per un file locale sul sistema. Questa operazione però non è utile quando non vi è alcun supporto fisico esterno su cui memorizzare tale immagine. In tal caso si usa netcat, nc.exe, per reindirizzare l'output di DCFLDD su una connessione di rete.
Questa copia non sarà criptata e quindi se l'immagine server contiene materiale sensibile potrebbe essere intercettato da chiunque stia monitorando la vostra rete.
Quando l'uscita (of =) viene omessa, DCFLDD effettuerà la copia sull'output standard. Ciò significa che è possibile reindirizzare verso un altro tool, come netcat (online si trova facilmente Netcat per Windows).
Anzitutto, sul server di destinazione, lanciate netcat come "ascoltatore" e reindirizzatelo a un file. Avrete così netcat in ascolto sulla porta TCP 3333 e il file immagine sarà scritto in myimage.dd.
nc.exe --l --p 3333 > myimage.dd
Successivamente, potete creare l'immagine del server (10.1.1.1) e inviarla (tramite un insicuro testo in chiaro) al server di destinazione dirigendo l'output su netcat, attraverso l'uscita standard, senza specificare il file di output (of).
dcfldd if=/dev/sdc hash=sha256 hashwindow=512M sha256=mydrivehashes.log / bs=512 conv=noerror split=2G | nc 10.1.1.1 3333
Se avete bisogno di creare una bit-image, assicuratevi di documentare esattamente cosa state facendo e in quale momento. Questo è un aspetto critico, soprattutto nell'ambito di possibili controversie legali.
Se non avete bisogno di arrivare a questo livello di dettaglio, e non vi serve l'hash record, potrebbe essere meglio scegliere un versione diversa di DD, che supporti --list per numerare i dischi.
*senior consultant presso GlassHouse Technologies Inc
