Análisis y recuperación de archivos con TSK
Contenido
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

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

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:
Deja un comentario