Obtener los Hashes de Todos los Archivos Residentes en un Sistema de Archivos

  • Posted on: 7 September 2016
  • By: ReYDeS

Durante un proceso de análisis forense, se requiere frecuentemente obtener los hashes correspondientes a cada uno de los archivos residentes en un disco o dispositivo de almacenamiento. Para este propósito es factible utilizar el comando “find”, y una opción la cual permita ejecutar un comando sobre cada archivo encontrado. De esta manera será factible obtener una lista muy útil de los hashes para cada archivo.

Para el siguiente ejemplo se utiliza la imagen forense capturada desde un disco flexible.

Se procede a montar la imagen forense.

$ sudo mount -t vfat -o ro,noexec,loop practical.floppy.dd /mnt/floppy/

En el directorio donde se ha realizado el montado, se procede a realizar un listado recursivo de archivos y directorios.

$ ls -alR

Se ejecuta un comando el cual encontrará todos los archivos regulares residentes en el sistema de archivos, para luego ejecutar un comando el cual generará los hashes desde todos ellos.

El comando “find” permite buscar archivos. El “punto” indica iniciar la búsqueda en el directorio actual. La opción “-type f” indica buscar cualquier archivo regular. La opción “-exec” indicar ejecutar el comando “sha1sum” sobre todos los archivos encontrados. “{}”. La salida es redireccionada hacia un archivo de nombre “/tmp/hashes.txt”. El “\;” es una secuencia de escape para finalizar el comando “-exec”.

$ find . -type f -exec sha1sum {} \; > /tmp/hashes.txt

El resultado es una lista de archivos generados a partir del contenido en el punto de montaje y sus respectivos hashes SHA1.

$ cat /tmp/hashes.txt

También se puede utilizar Linux para hacer la verificación, y de esta manera corroborar nada ha sido cambiado en el dispositivo de almacenamiento original. Para esto puede utilizar la opción “-c” con el comando “sha1sum”. Si el contenido del dispositivo no ha sido alterado, el comando devolverá un “OK”.

$ sha1sum -c /tmp/hashes.txt

Los hashes SHA en el archivo serán comparados con los hashes SHA tomados desde el dispositivo de almacenamiento (en el punto de montaje). Si algo ha cambiado, el programa presentará un mensaje ”failed” o Fallido. Los archivos sin cambio serán marcados con un “OK”. Esta es la manera más rápida de verificar los hashes.

Anotar los nombres de archivos inician con “./”. Esto indica una ruta relativa. Eso significa se debe estar en el mismo directorio relativo cuando se verifiquen los hashes, pues es donde el comando buscará por los archivos.

Fuentes:

http://linux.die.net/man/1/find
http://linux.die.net/man/1/sha1sum
http://linuxleo.com/

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense