Descubriendo archivos ocultos en imágen de disco con The Sleuth Kit (TSK) y FTK Imager

Por Berenice F (@dark1t)

Este write-up corresponde al reto Space Saver (100pts) de la categoria Misc, resuelto durante el evento PlaidCTF 2019.

Se descarga un archivo con extensión .dd y se verifica qué tipo de archivo usando el comando file.

root@kali:~/plaidctf/space# file space_saver.dd 
space_saver.dd: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "MSDOS5.0", sectors/cluster 4, reserved sectors 8, root entries 512, Media descriptor 0xf8, sectors/FAT 200, sectors/track 63, heads 255, hidden sectors 128, sectors 204800 (volumes > 32 MB), reserved 0x1, serial number 0x7c740ddd, unlabeled, FAT (16 bit)

El resultado arroja que se trata de un raw image FAT 16, el cual es utilizado para almacenar la imagen de un volumen o un disco, por lo que contiene archivos obtenidos de un dispositivo.
Los archivos raw image comúnmente contienen archivos ocultos, un método común para esconderlos es eliminarlos, sin embargo, es posible recuperarlos aunque stos ya hayan sido borrados.

Un conjunto de herramientas llamado The Sleuth Kit (TSK), es comúnmente utilizado para el análisis forense. Este kit es una colección de herramientas de línea de comandos y una librería C, y permite analizar imágenes de discos y recuperar archivos de ellas. TSK ya viene pre-instalado por defecto en la distribución Kali Linux.

La primera herramienta de TSK bastante sencilla de utilizar para analizar imágenes de discos y buscar archivos ocultos es fls.

Para ejecutar la herramienta, sólo se necesita escribir el commando fls NombreImagen. Al analizar la imagen del reto se obtiene el siguiente resultado:

root@kali:~/plaidctf/space# fls space_saver.dd 
r/r 3: NEW VOLUME  (Volume Label Entry)
r/r 5: flag.png
r/r * 7: P.png
r/r * 9: PP.png
r/r * 11: PPP.png
r/r * 13: space.rar
v/v 3270275: $MBR
v/v 3270276: $FAT1
v/v 3270277: $FAT2
V/V 3270278: $OrphanFiles

En el resultado obtenido se observan varios archivos listados con un asterisco (*) a un lado, lo cual significa que esos archivos fueron borrados, pero se pueden recuperar.
De los archivos listados se observan tres archivos con extensión PNG y uno con extensión RAR que fueron eliminados. Además, se observa un archivo flag.png que está disponible directamente en la imagen (es decir, no fue eliminado)

Se pueden recuperar fácilmente todos los archivos listados con la herramienta tsk_recover(la cual también forma parte de TSK) utilizando el siguiente comando:

root@kali:~/plaidctf/space# mkdir archivos 
root@kali:~/plaidctf/space# 
root@kali:~/plaidctf/space# tsk_recover -e -f fat16 ./space_saver.dd ./archivos/ 
Files Recovered: 5
root@kali:~/plaidctf/space# 
root@kali:~/plaidctf/space# ls -lah archivos 
total 80K
drwxr-xr-x 2 root root 4.0K Apr 15 18:06 .
drwxr-xr-x 3 root root 4.0K Apr 15 18:05 ..
-rw-r--r-- 1 root root  20K Apr 15 18:06 flag.png
-rw-r--r-- 1 root root  15K Apr 15 18:06 P.png
-rw-r--r-- 1 root root  15K Apr 15 18:06 PP.png
-rw-r--r-- 1 root root  15K Apr 15 18:06 PPP.png
-rw-r--r-- 1 root root 3.8K Apr 15 18:06 space.rar
root@kali:~/plaidctf/space#

Una vez que se extrajeron los archivos, se analizó uno por uno y se descubrió lo siguiente.

flag.png

A pesar que el archivo se llama flag, parece que sólo es un archivo troll, ya que no contiene nada que pueda ayudar a resolver el reto.


Se utilizaron otras técnicas como análisis de encabezados y el uso herramientas de análisis de archivos e imágenes como binwalk, exiftool, zsteg o stegsolver para ver si se obtenía alguna otra información escondida en la imágen pero no se obtuvo ninguna información útil (no se ahondará en el uso de estas herramientas en este write-up, pero es indispensable mencionarlas  para entender el desarrollo de la lógica del reto)

P.png, PP.png, PPP.png

A simple vista, los 3 archivos de nombre similar contienen la misma imágen.


Lo anterior se comprueba verificando el sum de las imágenes, el cual arroja el mismo valor para las tres.

root@kali:~/plaidctf/misc/space/archivos# md5sum P* 
f0a3e92098d91a065b2b5671b451ff64  P.png
f0a3e92098d91a065b2b5671b451ff64  PP.png
f0a3e92098d91a065b2b5671b451ff64  PPP.png
root@kali:~/plaidctf/misc/space/archivos# 

Las imágenes PPP también se analizaron con las técnicas mencionadas anteriormente (binwalk, exiftool, etc y se checaron encabezados), pero tampoco se obtuvo ninguna información relevante.

Por último, se analizó el archivo space.rar. Al intentar descomprimirlo pedía una contraseña, por lo que se probó usar como contraseña algunas palabras comunes en el reto (P, PP, PPP, space) pero todas marcaron error.


root@kali:~/plaidctf/space/archivos# unrar e space.rar 

UNRAR 5.50 freeware      Copyright (c) 1993-2017 Alexander Roshal


Extracting from space.rar

Enter password (will not be echoed) for space/final.png: 

Extracting  final.png                                                 97%
Checksum error in the encrypted file space/final.png. Corrupt file or wrong password.
Total errors: 1

root@kali:~/plaidctf/space/archivos#

En este punto no se consideró la posibilidad de hacer un ataque de fuerza bruta a la contraseña del archivo .rar, ya que PlaidCTF no es conocido por diseñar retos que requieran aplicar este ataque.
Tampoco se encontró alguna palabra evidente que se pudiera utilizar como contraseña, por lo que se intentó buscar archivos ocultos en el .rar pero no se tuvo éxito.

Dado que todos los intentos anteriores no arrojaron resultados positivos, se determinó que había algo escondido en los archivos recuperados pero que no se estaba utilizando la herramienta adecuada para analizar la imagen de disco.

Otra herramienta que permite analizar una imagen de disco es FTK Imager. Esta es una herramienta  gráfica para sistemas operativos Windows y es muy sencilla de usar. Se siguieron los siguientes pasos para montar la imagen y analizar los archivos.

1. File > Add Evidence Item


2. Image File > Select


3. Select Image > Finish


Ya que se da click en Finish, se regresa a la ventana principal y debajo de Evidence Tree se pudo observar la imagen montada y sus ramificaciones:


Se accedió a la carpeta [root] y se encontraron los archivos descargados con las herramientas de TSK, pero se observaron también otros archivos adicionales de tipo File Slack. Este tipo de archivos se refieren al espacio que existe más allá del término del archivo lógico pero dentro del área reservada a ese archivo por el sistema de archivos.


Se dió clic a cada uno de los archivos slack y se observó un string legible en cada uno, por ejemplo, el string que se obtuvo para la imagen P.png.FileSlack fue Spac


Se analizaron los restantes archivos slack y se obtuvo lo siguiente:
PP.png.FileSlack -> 3ei2
PPP.png.FileSlack -> herE

Después de esto se encontró que al menos dos de los strings anteriores contenían palabras legibles  en inglés (como space y here), así que se unieron en uno sólo y se obtuvo el siguiente string: Spac3ei2herE

Sin olvidar el archivo space.rar protegido, se intentó usar el nuevo string como contraseña y se logró descomprimir el archivo satisfactoriamente:

root@kali:~/plaidctf/space/archivos# unrar e space.rar 

UNRAR 5.50 freeware      Copyright (c) 1993-2017 Alexander Roshal


Extracting from space.rar

Enter password (will not be echoed) for space/final.png: 

Extracting  final.png                                                 OK 
All OK

root@kali:~/plaidctf/space/archivos#

Para finalizar, se abrió el archivo extraído final.png y se obtiene la bandera:


Flag: PCTF{2pac3_3v34ry_wh3r3}

Go Mayas!!!

Comentarios