Forensics, Quick and Dirty Intro

By Fernando Cadena aka kd3n4
@kd3n4_fer


Durante el Capture The Flag UTCTF edición 2020 en el cual participe con mi equipo Mayas, logramos resolver todos los retos de la categoría Forensics.

*[basics] forensics
Empezamos a calentar motores con este reto.
Nos proporcionan un archivo llamado "secret.jpg", como primer paso analizamos el archivo con el comando file ya que es algo común que los tipos de archivos no coincidan con las extensiones que tienen.
comando:
file secret.jpg


Figura 1

Ya que al parecer no es una imagen si no un archivo de texto, suponemos que la flag está dentro, así que con la herramienta strings extraemos todas las cadenas de texto del archivo, y con grep filtramos la salida para encontrar la flag.
comando:
strings secret.jpeg | grep flag

Figura 2


*Observe Closely
En este reto nos proporcionan un archivo llamado "Griffith_Observatory.png"
como siempre, el primer paso es revisar el tipo de archivo con el comando fileen la Figura 3 se muestra que efectivamente es un archivo PNG:

 Figura 3

Al tener archivos de tipo imagen, es muy probable que hayan usado alguna técnica de esteganografía para ocultar la flag, aunque también es probable que la flag esté embebida, para comprobar esta idea usamos la herramienta binwalk.
comando:
binwalk Griffith_Observatory.png


Figura 4

observamos que tiene un archivo ZIP embebido y dentro del archivo ZIP hay un archivo llamado "hidden_binary" , extraemos todo con la herramienta binwalk 
comando: 
binwalk -e Griffith_Observatory.png
como resultado nos creará una carpeta la cual contiene los archivos que se extrajeron.
comando: 
cd _Griffith_Observatory.png.extracted
con la herramienta strings no se encontró la bandera embebida en el archivo "hidden_binary" por lo que se otorgaron permisos para ejecutarlo.
comandos: 

chmod +x hidden_binary

./hidden_binary


Figura 5


*1 Frame per Minute 
Continuamos con un reto un tanto peculiar donde nos proporcionan un archivo "signals.wav", en la misma descripción nos dice que la información que contiene esta en un formato llamado "Slow Scan Television (SSTV)", se encontró la herramienta para windows llamada "RX-SSTV", la cual permite extraer la información.

Figura 6
para extraer la flag solo debemos reproducir el audio, de modo que un micrófono lo capte. El software automáticamente detectará el formato y mostrará una imagen con la flag.


Figura 7



*SPECTRE 
El siguiente reto es uno muy común en la categoría de esteganografía,  ya que es el típico mensaje oculto en el espectrograma del archivo de audio "song.wav", y es fácil verlo con audacity o herramientas online como spectrum-analyzer.


Figura 8



*The Legend of Hackerman, Pt. 1

En este reto nos proporcionan otro archivo PNG llamado "hackerman.png", pero con el comando file obtenemos la información de que solo era DATA
comando:
file hackerman.png

Figura 9


Se encontró algo interesante al ver el archivo en hexadecimal con la herramienta xxd
comando:

xxd hackerman.png | less


Figura 10


Se observa que los primeros bytes están en 00 y esa es la razón por la que no se reconoce el tipo de archivo, en esta página podremos encontrar los Magic Numbers de todos los tipos de archivos. Estos primeros bytes son el Header de los archivos y permiten identificar cada tipo de archivo o Mime Type.
La extensión del archivo nos indica que es un archivo PNG y la cabecera debería ser "89 50 4E 47 0D 0A 1A 0A", observamos que la mitad de la cabecera coincide,por lo que deducimos que es un archivo PNG. Una vez modificada la cabecera con cualquier editor hexadecimal, por ejemplo hexed.it,
el resultado es:


Figura 11



*The Legend of Hackerman, Pt. 2

Este reto parece ser la segunda parte del anterior, pero en esta ocasión nos proporcionan un archivo DOCX llamado "Hacker.docx". En el contenido del archivo no mostraba nada interesante, por lo que se procedió a hacer un análisis estático. Tengo entendido que los archivos DOCX son similares a los archivos comprimidos, ya que pueden contener múltiples archivos, como imágenes, archivos de texto, configuración del documento, fuentes, estilos, etc. entonces nos hizo pensar que podía contener archivos extras.
comando:
binwalk Hacker.docx


Figura 12


-La idea fue correcta, tenía muchas imágenes dentro y fue necesario extraerlas todas para analizarlas.

comando:
binwalk -e Hacker.docx
Se revisaron todas las imágenes en la carpeta de "/word/media/" hasta encontrar la flag en el archivo "image23.png"

comando:
cd _Hacker.docx.extracted/word/media/


Figura 13


*Zero
En este último reto nos proporcionan un archivo de texto llamado "zero.txt", el cual contiene una sola linea, esta linea es un texto aleatorio que se usa para rellenar páginas web que están en construcción, aquí un generador en línea. 


Figura 14
Analizando más el archivo, algo no tenía sentido, el número de caracteres no parecía ser el que nos mostraba, ver la Figura 15, el número de caracteres que nos daba la herramienta wc era 1952, sin embargo, visualmente parecían menos en comparación con la Figura 14. En python imprimí el carácter 'A' 1952 veces, y aún sin espacios eran muchos más caracteres que los que mostraba el archivo "zero.txt" 
                           
Figura 15

Al abrir el archivo "zero.txt" con el editor vi se pudo visualizar los caracteres extra, como lo muestra la Figura 16:
comando: 
vi zero.txt

Figura 16


Buscando en Internet estos caracteres, encontré que el "200b<200b>" es conocido como zero-width space, y llegué a este post, al parecer son caracteres UTF-16 y los usan para ocultar mensajes. 


UTF-16 8203 = 0
UTF-16 8204 = 1
UTF-16 8205 = separador

buscando una forma de decodificar el mensaje encontré una herramienta online:
Unicode Steganography with Zero-Width Characters

Resultado: utflag{whyNOT@sc11_4927aajbqk14}



Gracias a Drummer, por su apoyo en la realización de este blog.

Go Mayas!


Referencias:

Comentarios

  1. Excelente post gracias por compartir un poco de su conocimiento.
    Saludos,

    ResponderBorrar
  2. Excelente post gracias por compartir un poco de su conocimiento.
    Saludos,

    ResponderBorrar

Publicar un comentario