Análisis y recuperación de archivos con TSK

Introducción

En esta entrada veremos una breve introducción a las herramientas que componen The Sleuth Kit para el análisis de imágenes forenses.

The Sleuth Kit o TSK, es un conjunto de herramientas de código abierto para el análisis forense de imágenes de disco a través de línea de comandos. TSK puede ser instalado en Windows o Linux.

Preparación

Usaremos la versión 4 de TSK la cuál puede ser descargada desde el sitio oficial http://www.sleuthkit.org/sleuthkit/download.php

Para la instalación en linux basta con ejecutar el siguiente comando

sudo apt install sleuthkit

Para el desarrollo de este ejercicio, hemos tomado una imagen forense creada con dc3dd de un equipo con sistema operativo Windows.

Iniciamos con la validación de la imagen forense, ejecutamos el comando file para confirmar que se trata de una imagen de disco.

file Case01.raw

Importante: Antes de iniciar cualquier análisis forense se debe validar la integridad del archivo para eso necesitamos el hash que se generó durante la adquisición forense de los medios (creación de la imagen), esta información generalmente está documentada en el formato de cadena de custodia.

Validamos el hash, en este caso puntual nos suministraron un SHA-1, el valor del hash deberá ser idéntico al documentado en la cadena de custodia.

sha1sum Case01.raw

Análisis

Comenzaremos el análisis visualizando la tabla de particiones con el comando fdisk (requiere privilegios) por eso anteponemos el comando sudo.

sudo fdisk -l Case01.raw

En el caso de esta imagen encontramos 7 particiones, en la columna start aparecerá el offset (inicio de la partición) debemos tener estos offset presentes para las siguientes fases del análisis.

También podemos obtener un resultado similar con el comando mmls que forma parte de Sleuth Kit

mmls Case01.raw

fsstat: El comando fsstat muestra el detalle del sistema de archivos, allí podemos ver tamaño de los bloques, dirección del primer inodo, los offsets (punto de inicio) y el tipo del sistema de archivo.

fsstat -o 2048 Case01.raw

El parámetro -o hace referencia al offset, es decir el sector en donde se ubica el inicio del sistema de archivos.

Ejecutamos fsstat sobre otro offset.

fsstat -o 3096576 Case01.raw

fls permite listar archivos y carpetas sobre una imagen incluyendo aquellos archivos que hayan sido borrados (marcados con un *).

fls -o 3096576 -f ntfs Case01.raw

La d hace referencia a carpetas, la r corresponde a archivos

Si queremos ver únicamente carpetas agregamos el parámetro -D

fls -o 3096576 -f ntfs Case01.raw -D

Para ver únicamente archivos agregamos el parámetro -F

fls -o 3096576 -f ntfs Case01.raw -F

Con el parámetro -l obtenemos mayor nivel de detalle, incluyendo el tipo de archivo, el inodo, el nombre del archivo, fecha de modificación en la MFT, fecha de acceso del archivo, fecha de modificación del archivo, fecha de creación del archivo, el tamaño del archivo (bytes), el id de usuario y el id de grupo.

fls -o 3096576 -f ntfs Case01.raw -l

Si queremos listar la información de manera recursiva utilizamos el parámetro -r , utilizamos | less para paginar la salida.

fls -o 3096576 -f ntfs Case01.raw -r | less

Los signos + indicarán que están dentro de una carpeta o varias según el número de signos que aparezcan al inicio del archivo.

Si queremos listar una Carpeta específica, utilizamos el parámetro -m y le indicamos la ruta desde donde debe listar, en este caso usaremos la carpeta Archivos de Programa.

fls -o 3096576 -f ntfs -m "Archivos de Programa" Case01.raw -r | less

Para nuestro propósito generaremos un archivo con el cual crearemos una línea de tiempo

fls -o 3096576 -f ntfs Case01.raw -r -l -m "/" > lista_archivos

si leemos el archivo generado mostrará un resultado como el que observamos a continuación.

Con el comando mactime y el archivo generado con fls crearemos nuestra linea de tiempo:

mactime -b lista_archivos > linea_de_tiempo

-b archivo de entrada

Si queremos generar un archivo separado por comas agregamos el parámetro -d, de esta forma se podrá leer el archivo con un programa que procese hojas de cálculo.

mactime -b lista_archivos -d > timeline

Con el archivo generado y el uso de filtros con grep o awk y algunas expresiones regulares podemos iniciar un análisis mas profundo de lo que sucedió en el sistema de archivos

ils permite listar la información de los inodos o los indices de nodo. Los inodos permiten acceder a un archivo en específico, cada archivo tiene un inodo único.

Usando ils generaremos un archivo

ils -o 3096576 -m Case01.raw -e > lista_inodos

la opción -m exporta la salida en formato mac (modificación, acceso, creación)

otras opciones adicionales a contemplar

-e: muestra todos los inodos
-p: Muestra inodos huérfanos

El archivo resultante se ve así

Este archivo contiene el inodo (número resaltado en rojo en la imagen previa). De la misma forma podemos usar el comando mactime para generar la línea de tiempo.

mactime -b lista_inodos

Recuperación de Archivos

Con base en el archivo de inodos vamos a ver como se puede recuperar un archivo borrado:

Tomamos uno de los inodos, en este caso el inodo 219264 que pertenece al uno de los binarios de calc.exe que fue borrado del sistema.

Ejecutamos el comando istat para visualizar la información del inodo

istat -o 3096576 -f ntfs Case01.raw 219264

Obtenemos la propiedades del inodo

Con el comando icat y el inodo recuperamos el archivo, en este caso envío la salida del comando a una ruta y le coloco el nombre_inodo para identificar más fácil el archivo.

icat -o 3096576 -f ntfs Case01.raw 219264 > /home/dvirus/DFIR/calc_219264.exe

Validamos el archivo generado con el comando file, y efectivamente es un archivo ejecutable PE32

file /home/dvirus/DFIR/calc_219264.exe

Podemos utilizar el comando ffind para buscar el nombre del archivo con base en el inodo.

ffind -o 3096576 -f ntfs Case01.raw 219264

Repetimos los comandos istat e icat con los inodos de interés. Posterior a la recuperación podemos analizar los archivos sospechosos con diversas técnicas de análisis de binarios las cuáles explicaré en otra entrada.

Rerefencias:

http://www.sleuthkit.org/

File System Forensic Analysis, Brian Carrier

Mastering FreeBSD and OpenBSD Security: Building, Securing, and Maintaining BSD Systems , Yanek Korff

Deja un comentario