Cargando
SecurityInside.info
  • Sobre SecurityInside
  • GitHub
  • Click to open the search input field Click to open the search input field Buscar
  • Menú Menú
  • Link to X
  • Link to Rss this site
  • Link to Youtube

Archivos poliglotas: No es pdf todo lo que parece

22 julio, 2015/en Malware/por Antonio López

Generalmente la forma más usual que utilizamos para reconocer el formato de un archivo es fijándonos en su extensión. En un sistema informático la aplicación empleada para abrir el fichero también se asocia (en primera instancia) con la extensión. Otro método, ampliamente utilizado en protocolos de internet como HTTP o SMTP es MIME, Multipurpose Internet Mail Extensions, que asocia un identificador tipo/subtipo para determinar la naturaleza de los datos transmitidos. Así por ejemplo, «image/jpeg» indicaría que una imagen en formato jpeg se adjunta en el mensaje. Este estándar de notación está regulado por el IANA . La fundación Apache también aporta un intesante listado con la correspondencia entre MIME y extensión de fichero.

No obstante, esta aproximación inicial para identificar un fichero de ninguna manera puede asegurarnos el contenido real del mismo. Por ejemplo, bastaría cambiar la extensión de «.pdf» por «.jpeg» en un archivo para que el sistema, en lugar de abrir el archivo con Adobe Reader, lo intentase con un visualizador de imágenes. Este comportamiento puede ser problemático desde el punto de vista de la seguridad, en el sentido que se se malinterpreta un contenido y que podría utilizarse de manera no esperada para realizar acciones maliciosas.

Cabeceras de fichero y números mágicos

Una forma más precisa para determinar el tipo de fichero es observando el contenido del mismo. Existen múltiples estándares de formato que utilizan unos pocos bytes (en binarios) o caracteres alfanuméricos (en ficheros de texto) del comienzo del archivopara identificar el contenido. Esta convención está estandarizada y se conoce como números mágicos. Un listado puede encontrarse en el siguiente enlace: https://en.wikipedia.org/wiki/List_of_file_signatures.

De este modo, una aplicación que trate de identificar de forma segura un archivo antes de abrirlo, comprobaría la cabecera del mismo para determinar el tipo de contenido. Esta estrategia que en principio podría parecer ideal, tampoco proporciona un método infalible debido a la «flexibilidad» de algunos formatos y la poca rigurosidad de ciertas aplicaciones a la hora de parsear y comprobar las cabeceras y opciones de los mismos. Este problema se pone de manifiesto cuando un mismo fichero puede ser interpretado de distintas formas, dependiendo de la aplicación que lo procese y de las opciones de formato que verifica. Este tipo de archivo se conoce con el nombre de archivo poliglota.

Archivos poliglotas: varios en uno

¿Que es un archivo poliglota?

Un archivo poliglota es un fichero con múltiples formatos válidos, es decir, que tiene una estructura que lo hace interpretable por distintas aplicaciones ya que cumple con el formato esperado por las mismas. Así por ejemplo, un mismo fichero de estas características podría ser abierto como una imagen por un visor de imágenes o ejecutar un script al abrirse con un navegador o un intérprete de comandos.

¿Por qué existen archivos poliglotas? ¿Que riesgos existen?

En general,  podemos decir que se debe a una excesiva flexibilidad a la hora de definir los formatos. Por ejemplo, un archivo PDF permite posicionar su «número mágico» ( 25 50 44 46 en hexadecimal o %PDF en ascii) dentro de los primeros 1024 bytes del archivo, mientras que otros (JPG,GIF, ELF, etc) son menos flexibles y obligan un «offset 0» es decir, a posicionar el número mágico justo al principio del archivo.

El riesgo proviene del hecho de que un mismo fichero puede ser interpretado de distintas formas y, aprovechando esta circunstancia, se  pueden realizar tareas no deseadas. Así, en un archivo con extensión .pdf podría incrustarse código javascript, php o shell script y ejecutarse en un cliente, en un servidor web o en un intérprete de comandos, si la organización de los datos dentro del fichero conserva una estructura válida para todos los formatos pretendidos.

Ejemplos de achivos poliglotas

Veamos un ejemplo muy sencillo (e inofensivo) donde se ha incrustado un comando linux (xeyes) en un pdf y, sin alterar su validez, comprobamos como puede abrirse con un visor de pdf y ejecutarse como un script bash:

bash_pdf

Obsérvese en el volcado hexadecimal, como en la cabecera justo al comienzo del archivo, aparece el comando xeyes. Unos pocos bytes más adelante aparece el identificador del PDF, resultando un archivo válido puesto que este formato permite un offset de hasta 1024 bytes para posicionar la cabecera (Adobe Reader).

Otro ejemplo: un archivo de imagen bmp que a la vez contiene un comando ejecutable windows (calc.exe):

calc2

 

Ataques poliglotas

Este tipo de archivo constituye en sí un problema de seguridad y, es responsabilidad del usuario o una aplicación establecer las comprobaciones oportunas que eviten situaciones de peligro en caso de un uso malintencionado. En esta materia Ange Albertini (@angealbertini) es un reconocido investigador que ha publicado numerosos trabajos relacionados con los formatos de archivo con muchos ejemplos y métodos para construir archivos poliglotas. En su repositorio de Github ( https://github.com/corkami ) encontraréis gran cantidad de información para profundizar en este interesante campo.

Conclusiones:

Como el propio Ange dice: No olvides abrir tu pdf en un editor hexadecimal , cargar una imagen en un reproductor de sonido… o ejecutar un documento en intérprete de comandos. Eso sí, siempre desconfiando de las apariencias.

Bola extra

En este enlace  se proporciona un pdf. Échale un vistazo… y reprodúcelo con VLC player 😉

 

Video: Funky File Formats  (Ange Albertini)

 

 

 

  • Acerca de
  • Últimas entradas
Antonio López
Antonio López
Técnico de Seguridad en Incibe_
Físico reciclado en el mundo de la seguridad informática. Curioso por naturaleza, intrépido "por defecto".

Ver descripción | Ver perfil en LinkedIn
Antonio López
Últimas entradas de Antonio López (ver todo)
  • Contenedores Linux y seguridad. Docker - 6 julio, 2016
  • De Charleta: «A Year in the Backdoor Factory» (Joshua Pitts) - 30 mayo, 2016
  • De Charleta: «Writing Bad @$$ Malware For OS X» (Patrick Wardle) - 7 marzo, 2016

¿Nos ayudas a compartir?

  • Compartir en X (Se abre en una ventana nueva) X
  • Compartir en LinkedIn (Se abre en una ventana nueva) LinkedIn
  • Comparte en Facebook (Se abre en una ventana nueva) Facebook
  • Haz clic en Pinterest (Se abre en una ventana nueva) Pinterest
  • Compartir en Reddit (Se abre en una ventana nueva) Reddit
  • Enviar un enlace a un amigo por correo electrónico (Se abre en una ventana nueva) Correo electrónico

Relacionado

Compartir esta entrada
  • Compartir en WhatsApp
https://www.securityinside.info/wp-content/uploads/image-file-types1.jpg 375 792 Antonio López https://securityinside.info/wp-content/uploads/logo.png Antonio López2015-07-22 14:44:102024-11-06 12:23:21Archivos poliglotas: No es pdf todo lo que parece

Categorías

  • Anonimato (18)
  • Auditoría (30)
  • Charlas y ponencias (68)
  • Cloud Security (9)
  • Control de acceso (29)
  • Desarrollo (32)
  • Dispositivos (19)
  • Eventos (25)
  • Exploiting (6)
  • Forense (6)
  • Formación (39)
  • Gobierno IT (36)
  • Hacking (20)
  • Herramientas (26)
  • I+D (13)
  • Ingeniería inversa (6)
  • ISO 27001 (10)
  • Live (20)
  • Malware (22)
  • Noticias (54)
  • Pentesting (12)
  • Privacidad (39)
  • Sin categoría (1)
  • Vulnerabilidades (24)

Archivo

  • mayo 2026
  • abril 2025
  • septiembre 2024
  • junio 2024
  • abril 2024
  • marzo 2024
  • enero 2021
  • septiembre 2020
  • abril 2020
  • febrero 2020
  • enero 2020
  • octubre 2019
  • septiembre 2019
  • julio 2019
  • junio 2019
  • mayo 2019
  • abril 2019
  • febrero 2019
  • enero 2019
  • octubre 2018
  • agosto 2018
  • mayo 2018
  • abril 2018
  • marzo 2018
  • febrero 2018
  • diciembre 2017
  • noviembre 2017
  • octubre 2017
  • septiembre 2017
  • julio 2017
  • junio 2017
  • mayo 2017
  • abril 2017
  • marzo 2017
  • febrero 2017
  • enero 2017
  • diciembre 2016
  • noviembre 2016
  • octubre 2016
  • septiembre 2016
  • julio 2016
  • junio 2016
  • mayo 2016
  • abril 2016
  • marzo 2016
  • febrero 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • octubre 2015
  • septiembre 2015
  • agosto 2015
  • julio 2015
  • junio 2015
  • mayo 2015
  • abril 2015
  • marzo 2015
[2015 - 2024] - SecurityInside.info - Segura gracias a Defender Eye
  • Link to X
  • Link to Rss this site
  • Link to Youtube
Link to: Sandbox «La Caja Mágica» Link to: Sandbox «La Caja Mágica» Sandbox «La Caja Mágica»sandbox-caja-magica Link to: Vulnerabilidades en Tor ponen en peligro el anonimato en los servicios ocultos Link to: Vulnerabilidades en Tor ponen en peligro el anonimato en los servicios ocultos Vulnerabilidades en Tor dejan al descubierto los servicios ocultosVulnerabilidades en Tor ponen en peligro el anonimato en los servicios ocul...
Desplazarse hacia arriba Desplazarse hacia arriba Desplazarse hacia arriba