¿Cómo es posible incrustar código ejecutable en una imagen?

31

Estaba leyendo sobre FireEye y encontré este artículo de NYTimes que detalla un chat de Skype donde se envió una imagen cargado con malware :

Cita:

  

Para obtener acceso a la información en los dispositivos ..., los piratas informáticos se hicieron pasar por mujeres en Skype, identificaron los tipos de dispositivos que los objetivos estaban usando y enviaron fotos cargadas de malware.

     

La segunda foto fue una pieza de malware particularmente potente que copió archivos de la computadora de destino

Sé que los datos exif y los encabezados IPTC existen en las imágenes y estoy bastante seguro de que podría rellenar alguna información adicional en un archivo de imagen utilizando la información del encabezado MIMETIME de FileMagic, pero, ¿cómo es posible incrustar código ejecutable en una imagen?

El formato del archivo de imagen era pif , por lo tanto, a menos que la computadora tuviera una aplicación que abriera el archivo y mostrara una imagen mientras ejecutaba un código en secreto, no veo cómo es posible.

    
pregunta Jeremy Thompson 15.02.2015 - 06:58
fuente

7 respuestas

55

La respuesta es simple. Eso fue no una foto. Y .pif es no un formato de imagen. Cuente con NYTimes para proporcionar la información técnica correcta.

Como dice el registro en el artículo de NYTimes, y como informe real de FireEye confirma que el archivo utilizado fue un archivo .pif file . Es una de las extensiones de archivo ejecutables de Windows menos conocidas.

.pif es heredado de MS-DOS, como .com. Se pretende que sea un "archivo de información del programa" (de ahí el nombre), que almacena un acceso directo a un programa (DOS) junto con información diversa al sistema sobre cómo tratarla. Incluso hoy, Windows le da a los archivos .pif un icono de tipo de acceso directo.

Lo gracioso es que, hoy en día, a Windows realmente no le importa si el .pif es realmente solo un archivo de información del programa. Pruébelo: cambie el nombre de cualquier archivo .exe a .pif y ejecútelo. Puede haber alguna diferencia, como el icono que no se muestra, pero eso es todo. Eso es lo que consigue el tratamiento uniforme de archivos de diferentes formatos. ¡Gracias, Microsoft!

¿Por qué sucede esto? Respuesta corta: Porque Windows . Respuesta más larga: Windows ejecuta un .pif a través de ShellExecute , que técnicamente debería encontrar un programa adecuado para abrir un archivo y luego usarlo para abrirlo. Con los archivos .pif, primero comprueba si realmente es un archivo que apunta a un ejecutable de MS-DOS. Si no se ajusta al formato de archivo .pif, ShellExecute verifica si contiene código ejecutable. Si lo hace, se ejecuta como si fuera un .exe. ¿Por qué? Porque Windows!

¿Qué hicieron los piratas informáticos suemivos y terroríficos? Estos chicos no se molestaron en hacer nada complicado: crearon un archivo SFXRAR autoextraíble y ejecutable a partir de un instalador de virus y un programa (probablemente solo un .bat) abriendo una imagen de una niña que encontraron en Internet. renombró ese artilugio diabólico a un archivo .pif y lo envió al luchador por la libertad indefenso.

¿Por qué usaron .pif? Por dos razones, obviamente:

  1. Pocas personas saben que puede ejecutarse como un archivo ejecutable ( ¡gracias, Microsoft! )

  2. Obviamente suena como .gif o .tiff o .pdf o algo muy image-y . Incluso no dudó de su nombre que era un formato de imagen, ¿verdad, OP? ;)

Con respecto a su pregunta real ("cómo es posible incrustar código ejecutable en una imagen"). Sí, es posible ejecutar código a través de una imagen especialmente diseñada siempre que se abra en un programa vulnerable. Esto se puede hacer explotando un ataque como un desbordamiento de búfer . Pero estos hackers específicos probablemente no fueron lo suficientemente inteligentes para esto.

Editar

Nota interesante: estos chicos realmente utilizaron DarkComet, que tiene la capacidad de generar ejecutables comprimidos con diferentes extensiones, y .pif está en su lista. No estoy seguro de mostrar una imagen, pero esto podría ser una funcionalidad agregada en una versión más reciente.

Otra edición

Veo que está preguntando cómo protegerse contra esta " vulnerabilidad " específica. La respuesta es simple.

Primero, asegúrese de que Windows le muestre las extensiones de archivo . En su mayoría, Windows los oculta de forma predeterminada ( gracias, Microsoft! )

Entonces aprende esto de memoria: .exe .com .cmd .bat .pif .vb .vba .vbs .msi .reg .ws .wsc .wsf .cpl .lnk . Estos son los tipos de archivo más conocidos que pueden ejecutar fácilmente códigos maliciosos o dañar su computadora si se abren, ya sea que tenga aplicaciones vulnerables instaladas o no. Si alguien te envía un archivo que dice que es una imagen de una niña bonita, puedes estar seguro de que es otro pirata informático de bajo perfil como estos tipos sirios.

Otra opción es simplemente ser proactivo y verificar y verificar dos veces cualquier archivo descargado con un formato de archivo desconocido. Podría ser malware, ya sabes.

En cuanto a las imágenes reales con exploits ... probablemente podría intentar mantener su software actualizado.

    
respondido por el Mints97 18.02.2015 - 14:36
fuente
9

Nada es perfecto, y un tipo común de error es un desbordamiento de búfer, donde en breve se copian los datos donde no debería estar, y en algunos casos esto puede llevar a la ejecución de código arbitrario.

Por ejemplo, aquí es un error en las versiones anteriores de Microsoft, en el que si ve un cierto imagen con IE que código arbitrario podría ser ejecutado.

Tenga en cuenta que esto es muy específico de la implementación, por lo que abrir la misma imagen en firefox o chrome simplemente resultaría en una imagen rota, pero sin ejecución de código.

Desbordamiento de búfer en términos sencillos

Detalles técnicos de desbordamiento de búfer

    
respondido por el Shelvacu 15.02.2015 - 09:35
fuente
5
La respuesta de

Mints97 es genial, pero creo que puede haber más que eso. Un problema especialmente maravilloso (leído: terrible) con Windows es que admite el conjunto completo de caracteres Unicode en los nombres de archivo, incluido (y este es el peor), U-202E.

Aunque estoy seguro de que tiene algunos buenos usos inocuos, pero puede permitir que las personas cambien maliciosamente el nombre de archivo de una manera que sea difícil de notar para el usuario promedio. Esto está excelentemente documentado en este artículo de howtogeek.com .

Esencialmente, el pirata informático puede poner U-202E en un nombre de archivo y cambiar de filename by gnp.tab a filename by bat.png . El carácter invierte el orden de todos los nombres después de sí mismo. Todo lo que el atacante debe hacer es elegir el tipo de archivo correcto que se ejecuta, y Windows lo asociará con el nombre del ejecutable.

Esto es más difícil de proteger de lo que piensas. La mejor defensa sería escanear los nombres de los archivos para esto. El comando CMD dir parece reportar un ? para este carácter Unicode. Python, y estoy seguro de que otros idiomas, pueden obtener el nombre de Unicode, por lo que un script o programa de algún tipo podría evitar este problema.

Por mucho, la solución más simple es mirar las cuatro letras antes de una extensión de archivo y asegurarse de que el reverso no sea un nombre ejecutable. (Creo que hay algunos nombres ejecutables de cuatro letras, pero no estoy seguro).

¡Ten cuidado!

EDITAR: hice un script en Python descargar aquí que lee los nombres de los archivos en un directorio para U-202E. Le indica si a) el nombre real yb) la extensión. Debería ser compatible con trabajar con múltiples archivos y múltiples U-202E en un nombre.

    
respondido por el IronManMark20 24.02.2015 - 02:10
fuente
2

Usted escribió: "El formato del archivo de imagen era pif", pero el artículo dice que "los investigadores de FireEye encontraron una colección de chats y documentos mientras investigaban malware oculto en documentos PDF". El formato archivo de información del programa se usó en los sistemas Microsoft Windows, aunque los archivos en ese formato son más raros ahora que antes. Hubo vulnerabilidades asociadas con los archivos PIF, por ejemplo, vea Microsoft Windows ejecuta automáticamente el código especificado en los archivos de acceso directo , pero El artículo del New York Times menciona documentos en PDF.

Las imágenes se pueden almacenar dentro de documentos PDF y alguien que abre un documento PDF puede hacerse vulnerable a las vulnerabilidades al usar archivos PDF. En ese caso, es poco probable que el problema sea creado por la imagen, sino por el contenedor, es decir, el archivo PDF en el que se transmitió. Para conocer algunas vulnerabilidades de PDF, consulte amenazas actuales en pdf y El aumento de la explotación de antiguas vulnerabilidades de PDF . Por ejemplo, la última referencia menciona una vulnerabilidad asociada con JavaScript dentro de un archivo PDF que señala que "el JavaScript incorporado puede contener instrucciones maliciosas, como comandos para descargar e instalar otro malware".

    
respondido por el MoonPoint 15.02.2015 - 22:31
fuente
0

Bueno, comienzas con el análisis del formato de archivo. Y luego adivine cómo reaccionará el software diferente.

Por ejemplo, JPEG - enlace : utiliza marcadores especiales para delimitar el inicio y el final de imagen. Ahora, uno apostaría a que el software que se ocupa de JPEG solo buscará el inicio y el final de los marcadores de imagen y trazará todo lo que se encuentre entre ellos. Si no se encuentra ninguno de los marcadores, entonces el jpeg no es válido, ¿verdad? Y ahora, si nosotros, después del final del marcador de imagen, agregamos una marca de Fin de archivo, y después de eso, agregamos nuestra carga útil ejecutable. Bueno, apuesto a que la mayoría de los plotters jpeg por ahí simplemente ignorarán la carga útil y funcionarán como se supone. Éxito en este punto hemos adjuntado una carga útil en la imagen. Ahora para hacer que se ejecute, bueno, esto es un poco más difícil. Podríamos hacer que nuestro "software" busque material después del final del marcado de la imagen y, si está presente, ingerirlo, o podemos intentar inyectar el encabezado ELF / EXE / COM con un desplazamiento del código antes del inicio del marcado de la imagen y esperar que el trazado el software lo ignorará, pero el sistema operativo no.

El problema es que inicialmente el sistema y las redes se construyeron con la idea errónea de que las personas son honestas y se comportan como máquinas y no romperán los patrones ni utilizarán el software fuera de los casos previstos. Y debido a esto, se hicieron muchas suposiciones. Sí, el usuario escribirá a lo sumo 200 caracteres, sí, el usuario siempre escribirá un formato legible y así sucesivamente. Cuando piensa en casos de uso, como programador, adquiere el hábito de pensar que los casos son absolutos y no tienen excepciones. Adivina qué sucede cuando aparece alguien que está pensando fuera de la caja ...

    
respondido por el user283885 18.02.2015 - 16:48
fuente
0

Hace unos años hubo una vulnerabilidad muy publicitada que usaba un error en una biblioteca jpeg particular y ampliamente distribuida. El efecto neto de este exploit fue permitir ejecutar. código arbitrario en la máquina de las víctimas, cuando nominalmente todo lo que estaban haciendo era intentar para ver una imagen.

También, por ejemplo, hubo una vulnerabilidad de los archivos de texto enriquecido (formato rtf) que no requiere un error, solo usando una característica poco conocida del formato rtf para ejecutar Código en la máquina de los usuarios.

Otro ejemplo es incrustar macros en documentos de Word. Las macros son increíblemente poderosas. y una función útil, pero cuando puede darle a alguien un documento que contiene macros de su Al elegir, también puede ser una poderosa herramienta de piratería.

En general, es realmente tentador integrar características en formatos de archivos complejos que les dan Capacidades equivalentes al turismo. Tampoco es una buena idea.

    
respondido por el ddyer 19.02.2015 - 21:42
fuente
-1

Recuerdo en los viejos tiempos al ver o cargar un archivo .ico con las API que se enviaban con las ventanas utilizadas para permitir la ejecución directa de código si se creaban con la suficiente malicia.

Y todo el concepto detrás del formato de archivo wmf fue llamar directamente a las rutinas gráficas. (de ahí la creación del formato de mapa de bits independiente del dispositivo, también conocido como archivos .bmp)

Así que sí, es posible, y se ha hecho en el pasado. aunque poco probable en estos días. No lo descartaría por completo, pero diría que se necesitaría un atacante extremadamente hábil para lograrlo.

    
respondido por el Damian Nikodem 18.02.2015 - 18:35
fuente

Lea otras preguntas en las etiquetas