Incident Response, Security and Forensics"

.

miércoles, 28 de enero de 2009

Disk Imaging

Pongamos el caso de que queremos copiar un 'pendrive' y convertirlo a imagen para su posterior análisis y verificación.

Uno de los procedimientos más manuales a la hora de realizar una copia de un dispositivo es utilizar el comando DD y Netcat para su copia en remoto

El comando dd (duplicate disk) es un comando pensado entre otras cosas para transferir datos desde un dispositivo o archivo hacia otro dispositivo u otro archivo

La sintaxis básica del comando es la siguiente:

dd if=origen of=destino

Donde if significa "input file", es decir, lo que queremos copiar y of significa "output file", o sea, el archivo destino (donde se van a copiar los datos); origen y destino pueden ser dispositivos (lectora de CD, diskettera, usb, pendrives etc.), archivos, etc.

El comando Netcat (a menudo referida como la navaja multiusos de los hackers) es una herramienta de red bajo licencia GPL (en la versión de GNU) disponible para sistemas UNIX, Miscrosoft y Apple que permite a través de intérprete de comandos y con una sintaxis muy sencilla abrir puertos TCP/UDP en un host (quedando netcat a la escucha), asociar una shell a un puerto en concreto y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos).

Para el caso que nos trata, voy copiar un dispositivo 'pendrive' de 512 Mg de una maquina con Linux a una máquina con Windows 2003.

Para ello voy a utilizar las herramientas anteriormente citadas.

En la máquina Windows:

Ejecuto el comando Netcat poniendo a la escucha en el puerto 80 para que reciba los datos del pendrive de la máquina Linux. Mientras va recibiendo los datos creara un fichero 'usbimagen.img' en el disco c: que finalizará cuando se aborte la copia en la máquina Linux. Este fichero tendrá el mismo tamaño que el 'pendrive'

c:\>nc -l -p 80 >c:\usbimagen.img

En la Máquina Linux

Ejecuto el comando fdisk -l para ver la ruta que monta el dispositivo pendrive. En mi caso está en /dev/sdb1 y a continuación escribo el siguiente comando:

dd if=/dev/sdb1 | nc 10.2.86.82 80 (donde 10.2.86.82 es la IP Windows destino)

Una vez ha finalizado la copia ya tengo en el c: de Windows el fichero resultante de la imagen del 'pendrive'.



Referencias:

http://netcat.sourceforge.net/
http://joncraton.org/files/nc111nt.zip (netcat para Windows)

2 comentarios:

En primer lugar darte la enhorabuena por el blog, llevo algun tiempo leyendolo y me resulta muy interesante.

Solo un apunte, para discos más grandes, resulta mas efectivo (al menos en cuanto a reducir el tiempo de duración del proceso de adquisición) modificar el tamaño de bloque utilizado de forma predeterminada por dd, el cual es de tan solo 512 bytes. Según recomienda Brian Carrier aquí, sería algo más eficiente utilizar algo como:

dd if=/dev/sdb1 bs=2k | nc 10.2.86.82 80

Saludos y de nuevo mis mas sinceras felicitaciones

Estoy totalmente de acuerdo. Gracias por la apreciación.