sábado, 14 de enero de 2017

Clonación, bit a bit, de un disco con #Guymager y #DD en #Linux

Linux da mucho juego. Cuando digo que da mucho juego es que es muy flexible y ofrece múltiples posibilidades. Vamos a ver varias formas para realizar esta operación.

La primera de ellas es usar un entorno Live, (en este caso me decantaré por DEFT), y hacer uso de Guymager.

Para ello, arrancamos el sistema desde el dispositivo USB y elegimos la opción ‘DEFT Linux 8 live’

001

Una vez que arrancado el sistema, levantamos una consola de terminal y tipeamos

guymager

002

De esta forma se ejecuta esta herramienta, que nos presenta las unidades de disco que tenemos disponible.

003

Si seleccionamos una de ellas y realizamos un clic derecho con el ratón, se nos desplegará un menú contextual, en el que elegiremos la opción ‘Acquire image’.

004

Ahora se nos presentará la ventana con las opciones de configuración de la adquisición forense.

005

En esta ventana, tendremos opción de elegir el formato de salida del fichero de imagen, (por compatibilidad recomiendo el formato .dd). Podremos elegir si dividir el fichero de imagen del disco en otros más pequeños. Tendremos que elegir el directorio de salida, (a otro medio extraíble, recordad). Y tendremos que dar un nombre al fichero originado.

En lo referente al cálculo Hash y la verificación… ¿Tenemos prisa? NINGUNA. Por ello vamos a calcular los hashes en sus algoritmos MD5, (De este, realmente, se podría prescindir), en SHA-1 y SHA-256. Marcaremos la opción de releer el recurso después de la adquisición y marcaremos también la opción de verificar la imagen después de la adquisición.

Toda medida es poca para garantizar la integridad de la evidencia.

Cuando estemos seguros, clicaremos en el botón ‘Start’, que dará comienzo al proceso de adquisición.

006

Mientras se encuentra activo el proceso podemos observar la información del mismo, en la parte inferior de la ventana.

007

Y una vez que ha finalizado, lo veremos en el estado, con un aviso en verde, que nos dictará ‘Finished – Verified & ok’, y el progreso en el 100%.

008

Ahora podemos listar los ficheros generados, con

ls -l | grep ImagenDisco

009

Podemos ver, también, el fichero de información de la adquisicón.

Si queremos unir los ficheros posteriormente, para comenzar a trabajar con la imagen, basta con ejecutar

cat ‘/media/root/TOSHIBA EXT/ImagenDisco.000’ ‘/media/root/TOSHIBA EXT/ImagenDisco.001’ ‘/media/root/TOSHIBA EXT/ImagenDisco.002’ ‘/media/root/TOSHIBA EXT/ImagenDisco.003’ … > ‘/media/root/TOSHIBA EXT/ImagenDiscoUnida’

010

Que, entre otras, nos devuelve información del disco adquirido.

011

E información del proceso de adquisición.

012

Este fichero deberá de ser adjuntado al informe pericial correspondiente.

Vamos a ver ahora cómo realizar esta operación con ‘DD’, en modo local y en remoto.

Uso de DD en local

Para adquirir la imagen en bruto de un disco duro con ‘DD’ en modo local, basta con tipear en la consola

sudo dd conv=sync,noerror bs=64K if=/dev/sda | pv | dd ‘of=/media/marcos/TOSHIBA EXT/ImagenDiscoDuro.dd’

010

Con ‘sudo’ ejecutamos la utilidad con privilegios de administración, (es necesario).

dd llama a la utilidad.

conv=sync,noerror le dice a la utilidad que omita los errores del disco, (sectores defectuosos).

bs=64K establece la medida del bloque.

if=/dev/sda indica el disco o partición de origen, (input file).

pv es una utilidad para monitorizar el progreso, (de esta forma no tendremos que usar ‘time’.

dd vuelve a llamar a la utilidad

‘of=/media/marcos/TOSHIBA EXT/ ImagenDiscoDuro.dd’ le dice a la utilidad dónde tiene que escribir el fichero generado, (output file).

Uso de DD en remoto con NC, (Netcat)

Para adquirir la imagen en bruto de un disco duro con ‘DD’, en modo remoto con ‘NC’, (Netcat), lo primero que hay que saber es la IP de la máquina desde la que queramos trabajar, (en mi caso he elegido trabajar sobre la máquina de destino del fichero). Para ello ejecutamos

ifconfig

011

Hecho esto, levantamos la consola y tipeamos

nc -l -p 3333 | sudo dd ‘of=/media/marcos/TOSHIBA EXT/ImagenDiscoNC.dd'

013

nc –l –p 3333 llama a la utilidad y le dice que permanezca a la escucha de una conexión entrante en el puerto 3333

sudo eleva los privilegios, (es necesario)

dd llama a la utilidad

‘of=/media/marcos/TOSHIBA EXT/ImagenDiscoNC.dd’ indica la ubicación del fichero de salida. Este fichero, este disco externo, debe estar conectado en esta máquina, (por algo le indicamos que el fichero de salida lo genere ahí.

Ahora nos vamos a la máquina objeto de la extracción del disco.

En ella, tras levantar un terminal, tipeamos

sudo dd conv=sync,noerror bs=64K if=/dev/sda | pv | nc 192.168.1.39 3333

012

sudo eleva los privilegios, (es necesario).

dd llama a la utilidad

conv=sync,noerror le indica que ignore los errores del disco, (sectores defectuosos).

bs=64K establece la medida del bloque.

if=/dev/sda indica el disco o partición de origen.

pv es una utilidad para monitorizar el progreso, (de esta forma no tendremos que usar ‘time’.

nc 192.168.1.39 3333 indica llama a la utilidad Netcat y le indica que se conecte a la máquina con IP 192.168.1.39 a través del puerto 3333.

Uso de DD en remoto, a través de SSH, (1)

Para adquirir una imagen de un disco duro, a través del protocolo SSH, lo primero que hay que saber el la IP de la máquina con la que deseemos trabajar. Vamos a ver las dos formas, (desde la máquina objeto de la extracción y desde la máquina destino del fichero de imagen. Tipeamos

ifconfig

001

Es necesario, si no está levantado, iniciar el servicio SSH. Para ello escribimos

sudo service ssh start

002

Ahora nos vamos a la otra máquina y probamos la conexión, mandando 3 paquetes, con

ping -c 3 192.168.1.38

003

Si no tenemos problemas de conexión, podemos proceder con la extracción, mediante

ssh -p 22 marcos@192.168.1.38 “sudo dd if=/dev/sda | gzip -1 –“ | pv | dd ‘of=/media/marcos/TOSHIBA EXT/ImagenDiscoRemoto’

004

ssh –p 22 indica que queremos establecer conexión mediante este protocolo a través del puerto 22.

marcos@192.168.1.38 indica el nombre de usuario y el host de destino.

sudo eleva los privilegios de la utilidad que se llamará a continuación.

dd llama a la utilidad

if=/dev/sda indica el disco o partición objeto de la extracción.

gzip -1 – indica que queremos comprimir la imagen que se genere en ese nivel de compresión, (1).

pv es una utilidad para monitorizar el progreso, (de esta forma no tendremos que usar ‘time’).

dd vuelve a llamar a la utilidad

‘of=/media/marcos/TOSHIBA EXT/ImagenDiscoRemoto’ indica la ubicación del fichero de salida. Este fichero, este disco externo, debe estar conectado en esta máquina, (por algo le indicamos que el fichero de salida lo genere ahí.

Uso de DD en remoto, a través de SSH, (2)

La otra forma de realizar este proceso, es ejecutando la orden en la otra máquina.

Para ello, deberemos saber también su dirección IP, con

ifconfig

006

Volvemos a levantar el servicio SSH, mediante

sudo service ssh start

Después de esto, si desconocemos qué disco queremos extraer, podemos ejecutar

sudo fidisk -l

007

Realizamos una prueba de conexión entre ambas máquinas, enviando 3 paquetes, con

ping –c 3 192.168.1.39

008

Ahora procedemos a la adquisición del disco, mediante

sudo dd if=/dev/sda | gzip -1 - | pv | ssh -p22 marcos@192.168.1.39 dd ‘of=/media/marcos/TOSHIBA EXT/ImagenRemota’

009

sudo eleva los privilegios.

dd llama a la utilidad.

if=/dev/sda indica el disco o partición objeto de la extracción

gzip -1 indica que queremos comprimir el fichero originado en el nivel 1.

pv monitoriza el progreso de adquisición

ssh –p22 indica que queremos conectarnos a través del protocolo SSH y del puerto 22

marcos@192.168.1.39 indica el usuario y el host de la otra máquina.

dd vuelve a llamar a la utilidad

‘of=/media/marcos/TOSHIBA EXT/ImagenRemota’ indica la ruta donde se generará el archivo de imagen del disco.

Para terminar, SIEMPRE, SIEMPRE, SIEMPRE, sin limpiar la pantalla, (clear), listaremos ese fichero que hemos adquirido, calcularemos su firma digital, como mínimo con el protocolo SHA-1, y copiaremos ese fichero a otro medio extraíble. Para ello, escribimos

ls -l ‘/media/marcos/TOSHIBA EXT’ | grep ImagenDiscoRemoto
sha1sum ‘/media/marcos/TOSHIBA EXT/ImagenDiscoRemoto’
cp ‘/media/marcos/TOSHIBA EXT/ImagenDiscoRemoto’  ‘/media/marcos/TOSHIBA EXT/CopiaImagenDiscoRemoto’
ls -l ‘/media/marcos/TOSHIBA EXT’ | grep ImagenDiscoRemoto

005

Tras esto, realizamos una captura de pantalla, que será adjuntada al informe pericial correspondiente.

Hay más formas de adquirir una imagen de disco. Sólo os he mostrado algunas.

Con esto hemos terminado la fase de adquisición de evidencias.

Marcos @_N4rr34n6_