Sitemap

FlagYard — Matryoshka |

Digital Forensics Write-up

--

Press enter or click to view image in full size
Lab Flagyard

Introducción

En este desafío de FlagYard, recibí 13 archivos .mkv que debía analizar para encontrar una flag oculta.

El reto consistía en descubrir información escondida dentro de un contenedor multimedia, utilizando técnicas de análisis forense.

1. Análisis de metadatos

Comencé examinando los metadatos de todos los archivos con ExifTool:

exiftool -a -u -G1 *.mkv

Para identificar información relevante, filtré los resultados:

exiftool -a -u -G1 *.mkv | grep -Ei \
'title|comment|description|encoder|writing|date|tag|flag|author|uid'

Encontré que Matryoshka (9).mkv contenía un archivo adjunto y una pista de subtítulos.

Press enter or click to view image in full size

2. Extracción del archivo oculto

Utilicé MKVToolNix para inspeccionar el contenedor:

mkvmerge -i "Matryoshka (9).mkv"

El resultado mostró un archivo adjunto llamado font.ttf de 64 KB y una pista de subtítulos WebVTT.

Get Tomasmromero’s stories in your inbox

Join Medium for free to get updates from this writer.

Extraje la fuente:

mkvextract attachments "Matryoshka (9).mkv" 1:font.ttf

Y analicé sus metadatos:

exiftool -a -u -G1 font.ttf

Descubrí que la fuente había sido modificada por FlagYard y se identificaba como FlagYFont.

Press enter or click to view image in full size
Exiftool font.tff

3. Análisis de los subtítulos

Extraje la pista de subtítulos:

mkvextract tracks "Matryoshka (9).mkv" 2:subtitulos.vtt
cat subtitulos.vtt

Entre los diálogos encontré una línea con caracteres Unicode inusuales:

籿段籺粀粒粔粆粒理籿粈粇粍理籺粆籺粓粂粇粀理粂粌粇粍籸粂粍粖

La sospecha era que esos caracteres podían representar otro mensaje al utilizar la fuente personalizada.

Press enter or click to view image in full size
fuente modificada

4. Recuperación de la flag

Después de comprobar con FontTools que la fuente incluía los caracteres sospechosos, decidí renderizarlos con Python y Pillow.

from PIL import Image, ImageDraw, ImageFont
texto = "籿段籺粀粒粔粆粒理籿粈粇粍理籺粆籺粓粂粇粀理粂粌粇粍籸粂粍粖"font = ImageFont.truetype("font.ttf", 42)img = Image.new("RGB", (1800, 250), "white")
draw = ImageDraw.Draw(img)
draw.text((30, 70), texto, font=font, fill="black")img.save("mensaje_decodificado.png")

Al abrir la imagen generada, los caracteres aparecieron como texto legible:

Flag:

flagy{my_font_amazing_isnt_it}

Conclusión

Este desafío demostró cómo se puede ocultar información utilizando una fuente TrueType modificada.

La flag estaba almacenada en los subtítulos mediante caracteres Unicode, mientras que el archivo font.ttf permitía representarlos visualmente como letras latinas.

La principal lección fue que en un análisis forense no solo importa el contenido de un archivo, sino también cómo se interpreta y representa.

#DigitalForensics #Cybersecurity #CTF #Steganography #Python

--

--