Desenmascarando la extensión de un archivo según sus cabeceras

Seguramente te habrá ocurrido que en determinadas ocasiones quisiste ejecutar un archivo desconocido o que parecía corrupto, que fue hecho en otro sistema operativo, que tenía una extensión modificada o directamente que no tenía ninguna.

En esta entrada desarrollaremos las estructuras básicas de un archivo con extensión y función desconocida. El objetivo principal será entender de qué forma ejecutar o poder leer un archivo no reconocido por el sistema operativo, identificando algunos patrones como las cabeceras.

Este tipo de proceso es muy frecuente cuando se analizan los comportamientos de códigos maliciosos, ya que muchas veces se descargan archivos sin extensión que luego son transformados en una segunda etapa de ejecución, o directamente guardan configuraciones para personalizar una infección en una muestra.

Como vemos en la siguiente imagen, este es un claro ejemplo de error que se da cuando el archivo no corresponde a la estructura de la extensión involucrada:

error de tamaño de imagen

En la informática forense se utiliza la esteganografía, una técnica anti forense que intenta lograr que la información contenida quede almacenada de manera imperceptible. Las siguientes técnicas resultan muy útiles, ya que es posible que en muchos casos se localicen archivos que puedan aportar un valor a la investigación: ya sea por encontrar información oculta o intentando descubrir pruebas que hayan tratado de camuflarse, ayudarán a entender el modo en que ocurrió el incidente de seguridad.

Analizando archivos de forma manual

Llegado el caso, podemos estudiar el archivo mediante su firma hexadecimal y deducir qué tipo de extensión posee para saber, luego, con qué tipo de aplicación intentar ejecutarlo o de qué manera  poder leerlo.

Existen varias aplicaciones que nos facilitarán este trabajo, sin embargo en un principio analizaremos los códigos hexadecimales en forma manual, para que se comprenda mejor el proceso.

En primer lugar, utilizaremos algún editor hexadecimal como es HxD, que contiene una interfaz sencilla, se puede ejecutar desde una versión portable, es gratuito y de ligeros consumos de recursos.

Por otra parte, también utilizaremos distintos tipos de archivos para investigar su encabezado, como por ejemplo alguna imagen, archivos de audio, video, comprimidos y de sistemas operativos como Linux.

  • Archivos de ofimática

Veamos el primer ejemplo. Se trata de un archivo que al parecer no posee extensión; sin embargo, como podemos observar en la imagen, su cabecera comienza con “00 CF 11 E0”. Esta es común para los archivos de ofimática, como es el caso de los famosos archivos de texto con extensión “.DOC”. En consecuencia, podemos discernir que se trata de uno de este tipo tan utilizado.

2 cabecera de doc

En la siguiente tabla podremos encontrar algunas de las cabeceras (headers) más utilizadas, indicando el tipo de extensión correspondiente.

Tipo de ArchivoCabeceraEn ASCII
.ZIP50 4B 03 04PK
.RAR52 61 72 21Rar!
.TAR1F 8B 08 00
.TGZ1F 9D 90 70
.DOCD0 CF 11 E0ÐÏ.à
.XLSD0 CF 11 E0
.PDF25 50 44 46%PDF
.WMV30 26 B2 75
.FLV46 4C 56 01FLV
.BMP42 4D F8 A9/ 62 25 / 76 03BM, BMp% , BMv
.GIF47 49 46 38 39 61 / 37 61GIF89a GIF87a
.ICO00 00 01 00
.JPEGFF D8 FF E0 / FEJFIF
.PNG89 50 4E 47PNG
.SFW43 57 53 06 / 08Cws
.MP349 44 33 2E /03ID3
.EXE4D 5A 50 00 /90 00MZP / MZ
.DLL4D 5A 90 00MZ
Linux bin7F 45 4C 46ELF
  • Archivos comprimidos

En este caso, si analizamos las cabeceras podemos saber qué tipo de archivo es y además, por ejemplo, si está protegido con contraseña. En esta caso vemos que en el Offset 0000 tenemos el valor “50 4B 03 04” y en ASCII los strings de PK, indicándonos que coincide con la estructura de un archivo de extensión “.ZIP”.

4 cabecera de zip

En caso de que no encuentres la cabecera que buscas en la tabla anterior, puedes intentar conseguirla desde la siguiente lista pública  que se encuentra en Wikipedia y te proporcionará una mayor cantidad de patrones.

Utilizando herramientas, la manera más sencilla

La segunda opción para desenmascarar archivos es utilizar alguna herramienta. Podría ser una aplicación que se ejecute en forma local como TrIDNet, Locate Opener, Smart File Advisor o Identify!, o aprovechar algún servicio en Internet que realice un estudio de manera automática, indicando de qué archivo se trata o cuál sería la extensión más probable (como se puede advertir en la imagen inferior).

5 tool online

Como es de esperarse, esta última opción no es la recomendada para estudiar archivos de tamaño elevado.

De forma local, podrás utilizar alguna aplicación de las mencionadas con tal fin. A modo de ejemplo veremos de qué manera sencilla deberás correr la aplicación de TrIDNet.

Una vez bajada e instalada la aplicación, debemos también instalar sus últimas firmas (actualizadas al 30/09/2015), lo que nos permitirá reconocer más de 6.000 diferentes patrones en cabeceras de archivos.

Seleccionando el objeto a estudiar, y haciendo clic en la casilla de “Analizar!”, obtendremos los resultados deseados en cuestión de segundos, indicándonos en este caso la probabilidad más alta por los patrones encontrados:

doc y mp3 6

Como vemos en la imagen superior, este software detectó tanto la extensión de un archivo de audio como es el .MP3, como de uno de ofimática como es la extensión .DOC.

Ahora es tu turno. Te desafío a que encuentres nuevos patrones en diferentes clases de archivos e intentes generar tus propias bibliotecas, ya sea de forma manual o utilizando herramientas como las mencionadas.

Créditos imagen: ©Jeff Mikels/Flickr

Autor , ESET

Síguenos