The Sleuth Kit

The Sleuth Kit, notas sobre su instalación, uso, mantenimiento y desinstalación.


Descripción

The Sleuth Kit® (TSK) es una biblioteca y un conjunto de herramientas de línea de comandos cuya funcionalidad principal es analizar volúmenes y sistemas de archivos. La biblioteca se puede integrar en herramientas forenses digitales más grandes y las herramientas de línea de comandos se pueden usar directamente para encontrar evidencia. Así, The Sleuth Kit permite examinar los sistemas de archivos de un equipo sospechoso de forma discreta mediante la línea de comandos. Dado que las herramientas no dependen del sistema operativo para procesar los sistemas de archivos, permiten mostrar el contenido eliminado u oculto.

TSK funciona en plataformas Windows y Unix1,2 y permite examinar la distribución de discos y otros medios admitiendo particiones DOS, BSD, Mac, segmentos Sun (índice de volumen) y discos GPT. Con estas herramientas, se puede identificar la ubicación de las particiones y extraerlas para su análisis con las herramientas de análisis de sistemas de archivos. TSK está escrito en C y Perl, y utiliza código y diseño de The Coroner’s Toolkit (TCT) que puede ser usado en:

  • Linux
  • macOS
  • Windows (Visual Studio y MingWin)
  • CYGWIN
  • Open y FreeBSD
  • Solaris

Adicionalmente, para facilitar su uso, se cuenta con Autopsy, una interfaz gráfica para las herramientas de The Sleuth Kit que automatiza la gestión de casos, la integridad de imágenes forenses de medios de almacenamiento, la búsqueda de palabras clave y otras operaciones.

Insumos

  • Analiza archivos RAW (p. ej., dd), Expert Witness (p. ej., E01/EnCase), VHD, VMDK y AFF, así como imágenes de disco.
  • Compatible con los sistemas de archivos NTFS, FAT, ExFAT, APFS, UFS 1, UFS 2, EXT2FS, EXT3FS, Ext4, HFS, ISO 9660 y YAFFS2 (incluso cuando el sistema operativo host no lo admite o tiene un orden de bits diferente).
  • Las herramientas pueden ejecutarse en un sistema Windows o UNIX activo durante la respuesta a incidentes. Estas herramientas mostrarán los archivos que han sido «ocultados» por rootkits y no modificarán el tiempo de acceso de los archivos visualizados.


Técnicas de búsqueda

  • Lista los nombres de archivos en formato ASCII y Unicode asignados y eliminados.
  • Muestra los detalles y el contenido de todos los atributos NTFS (incluidos los flujos de datos alternativos).
  • Muestra los detalles del sistema de archivos y la estructura de metadatos.
  • Crea cronogramas de la actividad de los archivos, que se pueden importar a una hoja de cálculo para crear gráficos e informes.
  • Consulta hashes de archivos en una base de datos como NIST NSRL, Hash Keeper y bases de datos personalizadas creadas con la herramienta md5sum.
  • Organiza los archivos según su tipo (por ejemplo, separa todos los ejecutables, los archivos JPEG y documentos). Se pueden crear páginas de miniaturas con imágenes para un análisis rápido.

macOS

Instalación

Existen muchas referencias en Internet sobre cómo instalar TSK. Las referencias a los unices no son muy explícitas y son muy pocas las detalladas para macOS. Las dos mejores, desde mi particular punto de vista, están enfocadas en la instalación de Autopsy4,5. Como suele pasar en esos casos, las descripciones se enfocan en un caso de éxito y la verdad es que cada equipo, cada instalación, es un caso con muchas dificultades. Aquí relato mi experiencia.

Existen dos formas de hacerse del The Sleuth Kit: me refiero a tenerlo en el equipo, más allá de su descarga, a instalarlo. Una es compilándolo directamente a partir del código fuente (que, desde mi particular punto de vista, es la más educativa y enriquecedora, especialmente para alguien que busca dedicarse a la investigación forense digital). Una segunda forma es usar Homebrew, que puede ser la alternativa a seguir cuando la primera falla o para cuando uno anda de prisa. Dada la facilidad de esta opción, no se describirá aquí. El interesado en esta puede consultar el artículo de Bruno Reis incluido en las referencias7.

Para instalar The Sleuth Kit compilándolo a partir del código fuente, requieren algunos prerrequisitos3. Aquí se muestran los pasos para la instalación mínima, es decir, sin incluir programas ni bibliotecas opcionales. Estos pasos están acordes con las dos principales referencias mencionadas4,5 anteriormente. Si se desea, puede optar por seguir dichas descripciones, teniendo en consideración la versión del sistema operativo en la que se basó su elaboración, pero, una vez llegado al punto de la instalación de Java, recomiendo tomar en cuenta las anotaciones que aquí hago.

Cabe señalar que, además, The Sleuth Kit puede construirse de varias formas y que, aparentemente, los archivos de configuración y los scripts de compilación proporcionan lo necesario para ello. Sin embargo, algunas de estas alternativas parecen más enfocadas en el desarrollador del producto que en el usuario final. Aquí se aborda en particular sólo una de ellas.

Prerequisitos

1. Instalar las herramientas de línea de comando de Xcode

Si no se cuenta con Xcode, que es un programa de varios GB, no es necesario instalarlo. Para hacerse de las Command Line Tools únicamente, se puede usar:

sudo xcode-select --install

Esto activará un pequeño instalador para trabajar desde la línea de comando. La página dedicada a Xcode ofrece más información al respecto.

2. Instalar Homebrew

Si no se cuenta con Homebrew, este puede instalarse fácilmente mediante la ejecución de un script remoto. En la página de este producto se encuentran todas las instrucciones al respecto. Asimismo, la página dedicada a Homebrew en este sitio ofrece información sobre la experiencia de instalación y algunos pormenores adicionales.

3. Instalar las bibliotecas necesarias

Los dos pasos previos deben fluir sin mayores contratiempos. A partir de este paso es cuando se pueden presentar algunas dificultades, pero es imposible cubrir todas las posibilidades. Son muchos los factores que intervienen en este punto.

Las bibliotecas necesarias pueden ser instaladas todas juntas, como podría ser con:

$ brew install imagemagick testdisk gstreamer gst-plugins-base gst-plugins-good ant libpq afflib libewf automake autoconf libtool wget

Pero en la instalación de algunas de ellas, Homebrew llega a mostrar datos o información de uso que vale la pena poder revisar y tener presente para hacer troubleshooting. Si se está instalando por primera vez, a fin de observar el resultado de cada una, es mucho mejor proceder con:

$ brew install imagemagick
...
$ brew install testdisk
...
$ brew install gstreamer gst-plugins-base gst-plugins-good
...
$ brew install ant libpq afflib libewf
...
$ brew install automake autoconf libtool wget

4. Instalación del Java Development Kit (JDK)

Autopsy ha sido desarrollado en Java, pero varios de los tutoriales o guías que uno encuentra en la internet hacen referencia de forma muy específica a «una versión específica de Java» que ya ha quedado «rebasada por el tiempo» y que dará problemas con la compilación de las últimas versiones del TSK. Al momento de actualizar estas notas, yo ya contaba con un par de versiones de Java y decidí usar la identificada como «24» (pero resultó no ser la adecuada; lo supe hasta tratar de usar Autopsy y encontrar que se esperaba la presencia de bibliotecas de JavaFX que ya no se incluyen en el JDK).

$ ls /Library/java/JavaVirtualMachines/
jdk-24.jdk openjdk-21.jdk

Quienes estén más familiarizados con Java, creo que podrán resolver el problema mencionado, llegado el momento. Esto quizás implique modificar un shell script de Autopsy 4 para poder utilizar las mencionadas bibliotecas.

Aquí voy a proceder con la idea original de esos tutoriales o guías4,5. El mencionado énfasis sobre «una versión específica de Java» lleva a malas interpretaciones, ya que debería ser sobre «una distribución específica de Java«, en este caso, la que hace Bellsoft6. Así que se registra el repositorio del tercero y se descarga una distribución de Java. La selección de la versión depende de varias cosas; en este ejemplo he usado la última que soportaba una característica llamada «Security Manager».

$ brew tap bell-sw/liberica
$ brew install --cask liberica-jdk17-full

Con esto, he procedido a:

$ sudo rm /usr/local/opt/openjdk
$ export JAVA_HOME="/Library/java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home"
$ export openjdk="$JAVA_HOME"
$ sudo ln -s $JAVA_HOME /usr/local/opt/openjdk

Para comprobar que todo esté bien, el interrogar a java por la versión deberá mostrar lo propio.

$ java -version
openjdk version "17.0.16" 2025-07-15 LTS
OpenJDK Runtime Environment (build 17.0.16+12-LTS)
OpenJDK 64-Bit Server VM (build 17.0.16+12-LTS, mixed mode, sharing)

Creando The Sleuth Kit

The Sleuth Kit debe ser compilado y construido a partir del código fuente.

1. Descarga

El primer paso es descargar el código desde su repositorio (en este sitio uno debe hacer clic en el título de cada sección para poder ver los paquetes de distribución). De acuerdo con el título, uno busca la versión que le interesa. Otra opción es clonar el repositorio, que es la que se presenta aquí.

$ git clone https://github.com/sleuthkit/sleuthkit.git

2. Checkout

Ya clonado el repositorio, uno debe hacer checkout de la correspondiente rama de la versión que a uno le interesa.

$ cd sleuthkit
$ git checkout sleuthkit-4.14.0

3. Compilación

Los preparativos de compilación del código fuente son:

$ eval "$(/opt/homebrew/bin/brew shellenv)"
$ export CPPFLAGS="-I/usr/local/opt/libpq/include"
$ ./bootstrap
$ ./configure --enable-java --with-afflib=$HOMEBREW_PREFIX --with-libewf=$HOMEBREW_PREFIX
...
config.status: executing tsk/tsk_incs.h commands
configure:
Building:
afflib support: yes
libewf support: yes
zlib support: yes

libbfio support: no
libvhdi support: no
libvmdk support: no
libvslvm support: no
Features:
Java/JNI support: yes
Multithreading: yes
$

Es importante que se obtengan los mismos «yes» que se muestran aquí. Sólo entonces podrá procederse con la compilación (usamos la mayor capacidad de nuestro equipo para tener jobs concurrentes en este paso)

$ make -j"$(sysctl -n hw.ncpu)"
...
[javadoc] 3 warnings

-javadoc-browse:

javadoc:

default:

BUILD SUCCESSFUL
Total time: 2 seconds
make[1]: Nothing to be done for `all-am'.

El resultado debe ser «BUILD SUCCESSFUL»; sólo con esto podrá procederse con la instalación. Opcionalmente, puede verificarse que todo esté en orden con los scripts de prueba.

$ sudo make check

Instalando The Sleuth Kit

Para proceder con la instalación, ejecutar:

$ sudo make install

La instalación se lleva a cabo en los directorios /usr/local/lib, /usr/local/bin, /usr/local/share, y /usr/local/include.

Téngase presente que, para desinstalar TSK, es necesario echar mano del Makefile usado en su instalación, por lo que se recomienda conservar en algún lugar el directorio de su compilación.


Mantenimiento

Actualización

… en desarrollo …

Agregando funcionalidad

La «adición de funcionalidad» a esta aplicación abarca un amplio espectro de posibilidades. Una de estas es agregar el soporte para poder trabajar con algún formato de imagen de disco o extender su alcance con algún plug-in.

Como regla general antes de agregar una nueva funcionalidad o capacidad de soporte, se recomienda:

  1. Verificar que la funcionalidad a agregar no está ya presente (ver ejemplo de uso de fls).
  2. Proceder con la desinstalación de The Sleuth Kit y limpieza del área de trabajo (make clean).
  3. Proceder con los pasos necesarios para agregar y validar que la nueva funcionalidad ha sido agregada.

Soporte para VMDK

Como se habrá podido observar en el paso 3 de la construcción de la suite, el resultado de la configuración previa a la compilación reporta el que no hay soporte para libvmdk. Para agregarla, lo primero es construir o conseguir (si puede) la biblioteca. Con la biblioteca ya instalada, uno procede a repetir el proceso de construcción:

$ export JAVA_HOME="/Library/java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home"
$ export openjdk="$JAVA_HOME"
$ eval "$(/opt/homebrew/bin/brew shellenv)"
$ export CPPFLAGS="-I/usr/local/opt/libpq/include"
$ ./bootstrap
$ PKG_CONFIG_PATH="$(brew --prefix)/lib/pkgconfig:$PKG_CONFIG_PATH" ./configure --enable-java --with-afflib=$HOMEBREW_PREFIX --with-libewf=$HOMEBREW_PREFIX --with-libvmdk=/usr/local
...
config.status: executing tsk/tsk_incs.h commands
configure:
Building:
afflib support: yes
libewf support: yes
zlib support: yes

libbfio support: no
libvhdi support: no
libvmdk support: yes
libvslvm support: no
Features:
Java/JNI support: yes
Multithreading: yes

$ make -j"$(sysctl -n hw.ncpu)"
$ sudo make install

Nótese que la opción para libvmdk apunta al directorio donde se instaló libvmdk; la ejecución del script de configuración debe reportar que ya reconoce la existencia de la biblioteca.

Tras la instalación, conviene revisar que esta sea debidamente reconocida, que puede ser mediante el comando fls (compárese con lo que fls reportaba antes de agregar el soporte a VMDK).

$ fls -i list
Supported image format types:
raw (Single or split raw file (dd))
aff (Advanced Forensic Format)
afd (AFF Multiple File)
afm (AFF with external metadata)
afflib (All AFFLIB image formats (including beta ones))
ewf (Expert Witness Format (EnCase))
vmdk (Virtual Machine Disk (VmWare, Virtual Box))

Desinstalación

Como se advirtió en la instalación, para desinstalar TSK, es necesario echar mano del Makefile usado durante la compilación e instalación. Así que, colocándose en el directorio donde se compiló TSK, la desinstalación consiste en:

$ sudo make uninstall

Idealmente, el comando debe ejecutarse desde o con el mismo usuario o cuenta que se empleó en su instalación (que puede ser diferente del de compilación). Si además se desea retirar las bibliotecas de Homebrew y Java, puede hacerse, pero hay que seguir los pasos adecuados en cada caso (que debería ser un proceso inverso— de desinstalación —).

Si la desinstalación se lleva a cabo por la adición de una nueva funcionalidad o simplemente por la eliminación del directorio de trabajo usado para su construcción, se recomienda primero ejecutar el proceso de limpieza incluido en el make, i.e.:

$ make clean

Uso

The Sleuth Kit es una suite de varias herramientas

fls

fls permite listar archivos y directorios en una imagen de disco. Los formatos soportados pueden ser listados mediante:

$ fls -i list
Supported image format types:
raw (Single or split raw file (dd))
aff (Advanced Forensic Format)
afd (AFF Multiple File)
afm (AFF with external metadata)
afflib (All AFFLIB image formats (including beta ones))
ewf (Expert Witness Format (EnCase))

Referencias

  1. «Open Source Digital Forensics«, sleuthkit.org, web. Visited: 2025.04.03. URL: https://www.sleuthkit.org/.
  2. «The Sleuth Kit«, wikipedia.org, web. Visited: 2025.04.03. URL: https://en.wikipedia.org/wiki/The_Sleuth_Kit
  3. «Installation Instructions«, github.com/sleuthkit, repository. Updated: 2025.03.31; visited: 2025.04.03. URL: https://github.com/sleuthkit/sleuthkit/blob/develop/INSTALL.txt
  4. ArcPoint Forensics, «Installing Autopsy on macOS Big Sur«, medium.com, web. Published: 2021.09.30; visited: 2025.10.15. URL: https://arcpointforensics.medium.com/installing-autopsy-on-macos-big-sur-1e9cff8fa5ef.
  5. «Installing Autopsy on MacOS Catalina«, github.io, repository. Visited: 2025.10.15. URL: https://slo-sleuth.github.io/tools/InstallingAutopsyOnMacOS.html.
  6. «BellSoft web site«, bell-sw.com, web. Visited: 2025.10.16URL: https://bell-sw.com/.
  7. Bruno Reis, «Hands-On Forensics: Analyzing Disk Images with The Sleuth Kit (TSK) on macOS«, techdatabasket.com, blog. Published: 2025.07.08; visited: 2025.10.23. URL: https://www.techdatabasket.com/2025/07/08/test-analysis-using-the-sleuth-kit-tsk-on-macos/.


Twitter Wordpress eMail
© Todos los derechos reservados.
Dr. Eduardo René Rodríguez Ávila
Creación: 2025.04.02
Última actualización: 2025.10.28
El contenido de este sitio puede ser copiado y reproducido libremente, siempre que no se altere y se cite su origen. Marcas y productos registrados se citan por referencia y sin fines de lucro ni dolo. Todas las opiniones son a título personal del o de los autores de estas y, salvo que se exprese de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello de lo que se trata. Para conocer más sobre la posición de privacidad y responsabilidad respecto de lo que se presenta en este sitio web y de cómo se ha obtenido, consulte la declaración al respecto.