En el campo de la Informática Forense, uno de los puntos más importantes es la recolección de la evidencia, también conocido como Adquisición Forense, ya que, si al momento de tomar la evidencia no se toman los recaudos correspondientes puede echarse a perder todo el análisis posterior. Es muy importante recalcar este punto debido a que la alteración de la evidencia llevará a la invalidez de toda la investigación.
Introducción
El post se centrará principalmente en cómo recolectar los datos del disco rígido sin la alteración de los mismos utilizando una herramienta OpenSource y gratuita.
En nuestro caso de estudio trabajaremos con la distribución de DEFT Zero, la cual dispone de todas las herramientas necesarias para realizar la toma de evidencia. Para la misma utilizaremos una herramienta muy sencilla y util a la vez: dd.
Sin embargo, daremos un paseo por un listado de buenas prácticas que son recomendables realizar previo a la recolección de la evidencia.
Buenas Prácticas antes de comenzar la recolección
Según las Buenas Prácticas del Servicio Secreto de Estados Unidos, estos son algunos puntos importantes a tener en cuenta al momento de comenzar con la recolección de la evidencia dentro del ámbito de la Informática Forense:
- No utilizar la computadora ni intentar buscar evidencia.
- Fotografiar el equipo del frente y de atrás tal como se encuentra, con los cables y dispositivos conectados.
- Si la computadora se encuentra apagada, no encenderla.
- Si la computadora se encuentra encendida y en la pantalla se muestre algo, sacar una fotografía a la misma. En el caso de que la pantalla esté apagada, encenderla; y en el caso de que no se muestre la imagen en la misma mover el mouse para que se muestre en pantalla alguna imagen y luego fotografiar la misma.
- Desconectar el cable de tensión por detrás del equipo.
- En el caso de tratarse de una Notebook y que la misma no se apague al desconectar el cable, extraer la batería de la misma para que el equipo se apague.
- Etiquetar los cables para luego identificar los dispositivos conectados.
- Desconectar todos los cables y dispositivos.
- Documentar todo el procedimiento realizado.
- Mantener todos los medios, incluyendo el gabinete, lejos de imanes, radiotransmisores y otros elementos potencialmente dañinos.
- Entre otras acciones.
Identificando unidades
Tal como indicamos al comienzo e iremos recordando durante todo el post, lo más importante es que, al momento de la recolección, la evidencia no sea alterada. Por tal motivo, es indispensable que el sistema con el que trabajemos no monte las unidades conectadas de manera automática, ya que si el mismo es montado la evidencia se altera. La versión de DEFT Zero que utilizaremos no monta las unidades automáticamente.
En nuestro caso, sabemos que contamos con 2 unidades de disco. Ambos de tecnología SATA, por lo tanto, el sistema los reconocerá como sd. El que contiene la evidencia a recolectar tiene un tamaño de 100MB y el otro de 1GB. Para ver cómo los reconoce el sistema es necesario ver los logs.
En donde identificamos ambos discos. En el caso de la evidencia el sistema lo detectó como sda y el otro como sdb. Por lo tanto, para guardar la evidencia necesitaremos montar nuestro disco, en particular la unidad lógica del mismo (sdb1).
Recolectando la evidencia
La recolección de evidencia se puede hacer por partición o por disco. Es recomendable trabajar con el disco completo, ya que si eligiésemos trabajar con particiones y fuese necesario buscar información borrada en el disco no estaremos analizando las partes que no se encuentren particionadas. Durante todo el post se realizarán copias de disco completo, o como se lo conoce: Adquisición Física.
dd
Es un comando de la familia de los Sistemas Operativos Unix/Linux que permite copiar a bajo nivel (bit a bit o bloque a bloque) cualquier archivo dentro del sistema. Es importante recordar que para este tipo de Sistemas Operativos todo es un archivo. Uno de los puntos fuertes de dd es que copia los datos en crudo (raw data) y otro punto muy importante es que viene por defecto con todas las distribuciones de Unix/Linux.
Un ejemplo de cómo utilizar el comando puede ser el siguiente:
En este caso le estamos especificando que el archivo de entrada es /dev/sda, el archivo de salida es /mnt/root/forensic/artefacto01.dd y que el tamaño en que leerá los bloques será de 64 bytes.
Uno de los puntos a tener en cuenta es el tamaño del bloque, ya que cuanto más chico sea más tardará en realizar la copia. Por ejemplo, utilizando un bloque de 4096 bytes el tiempo será mucho menor.
Para determinar este tipo de tamaño es importante saber si la unidad se encuentra dañada o no, ya que de estarlo es preferible utilizar bloques más pequeños de manera de reducir la cantidad de datos corruptos. En el caso de encontrar errores en la unidad también es recomendable utilizar las opciones conv=noerror,sync. La opción noerror permite continuar después de encontrar errores y la opción sync permite rellenar los errores encontrados con 0’s.
Si bien con ambos archivos se crean en momentos diferente y se utiliza el parámetro bs distinto, se puede ver que los HASH’s tanto del dispositivo y de las evidencias tomadas son iguales.
Una buena metodología para corroborar la integridad de la evidencia es tomando los HASHs de los mismos. En este post se utilizaremos SHA256, esto es debido a que MD5 y SHA1 son algoritmos que se encuentran rotos.
Problemas de espacio
Debido a que en la actualidad los discos rígidos son muy grandes y en el hipotético caso de que necesitemos partir el archivo, podemos utilizar el comando split (también incorporado en todos los sistemas Linux)
split -d -b 50m artefacto01.dd artefacto-partido
Cuando necesitemos volver a ensamblarlo podemos utilizar el comando cat de la siguiente manera:
cat artefacto-partido* >> artefacto-reensamblado.dd
Siempre tenemos que tener presente comprobar que el HASH sea el mismo que el original, hay que recordar que estamos manejando evidencia y que la misma tiene que ser integra y consistente.
Otra manera de reducir el tamaño de la evidencia es comprimir el archivo al momento de generarlo utilizando el comando gzip
Claramente el tamaño del archivo comprimido es muy inferior, pero no debemos olvidar de corroborar su integridad comparando los HASH’s.
Adquisición Indirecta
En el caso que estemos imposibilitados de realizar la copia en el mismo equipo (Adquisición directa), podemos enviar la evidencia por la red a algún equipo donde podamos almacenar el archivo. Para este proceso podemos utilizar el comando nc.
Nuevamente corroboramos que tanto el origen como el destino tienen el mismo contenido.
Una de las contras de dd es que no muestra progreso y que todas las comprobaciones deben realizarse de forma manual, aunque podemos utilizar las siguientes alternativas:
Utilizando el comando kill, el cual viene con todas las distribuciones Linux podremos ver el estado de nuestra copia bit a bit.
Ojo que si lo utilizamos mal podríamos matar el proceso de copia y no queremos volver a empezar.
Para que nos diga el estado de dd le pasaremos el parámetro -USR1, también es necesario pasarle el PID. Nos quedará algo por el estilo algo por el estilo:
kill -USR1 $(ps -ef | fgrep .dd | grep -v grep | awk '{print $2}')
El comando
ps -ef | fgrep .dd | grep -v grep | awk '{print $2}'
nos permite extraer el PID, siempre y cuando hayamos utilizado la extensión .dd.
La ejecución del kill nos dará la siguiente pantalla:
También podríamos utilizar otra herramienta que nos mantenga al tanto de lo que hace dd, como por ejemplo pv.
pv no viene por defecto con esta distro, con lo cual hay que instalarla desde el repo
apt-get update
apt-get install pv
Como no podía ser de otra manera, tenemos que corroborar el HASH de nuestra copia.
Bueno, hemos hecho un largo recorrido con el copiado bit a bit de la mano de dd, les dejo para que prueben Uds. otros comandos que suelen utilizarse para realizar adquisiciones bit a bit: dc3dd, dd_rescue, ewfadquire y para los que les gusta el entorno gráfico Guymager.
Una vez que hayan probado los mismos podrán decidir Uds. mismos qué herramienta por software utilizarán para realizar Adquisiciones Forenses.
Espero que les haya resultado interesante el artículo.
Nos vemos en el próximo post.
forense