FlagYard — Matryoshka |
Digital Forensics Write-up
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 *.mkvPara 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.
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.ttfY analicé sus metadatos:
exiftool -a -u -G1 font.ttfDescubrí que la fuente había sido modificada por FlagYard y se identificaba como FlagYFont.
3. Análisis de los subtítulos
Extraje la pista de subtítulos:
mkvextract tracks "Matryoshka (9).mkv" 2:subtitulos.vtt
cat subtitulos.vttEntre 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.
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, ImageFonttexto = "籿段籺粀粒粔粆粒理籿粈粇粍理籺粆籺粓粂粇粀理粂粌粇粍籸粂粍粖"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




