Las imágenes pueden ser utilizadas para ocultar código malicioso. En este artículo analizaremos cómo es posible que una inocente fotografía contenga malware y qué indicios indican que pudo ser alterada.
Quizás no muchas personas estén familiarizadas con el término, pero la esteganografía es la gran respuesta al interrogante que plantea este artículo. Es la que confirma que sí es posible ocultar código malicioso en imágenes; también videos, audios, PDFs y cualquier otro tipo de archivo ejecutable.
A continuación, analizaremos cómo es posible ocultar malware en fotografías, y cuáles son las principales señales de que la imagen pudo ser alterada.
La esteganografía es la clave
Muchas veces, la esteganografía se confunde con la criptografía, ya que ambas técnicas pueden proteger la confidencialidad de la información. En la criptografía la información está visible pero inteligible, es decir, se sabe que está ahí, pero solo teniendo la clave para su descodificación se puede acceder a la información.
En cambio, la esteganografía está diseñada para que siquiera se pueda saber que hay información oculta.
Para ello, existen diversas técnicas de ocultar la información, aunque la gran mayoría se basa en sustituir el bit menos significativo del mensaje original por otro que contenga el mensaje oculto. Así, la información almacenada de forma camuflada en los archivos tendrá un tamaño limitado por la capacidad del archivo visible, logrando de esta manera pasar completamente desapercibida.
Durante mucho tiempo se pensó que los ficheros que podían contener malware solamente eran archivos ejecutables como .exe, .com, .bat. Pero se demostró cómo los documentos ofimáticos también podían contener malware gracias a la inclusión de las macros. No tardaría mucho en llegar el aprovechamiento por parte de los creadores de malware de los ficheros con imágenes.
¿Cómo se oculta malware en una foto?
Han sido varios los casos en los que las imágenes fueron utilizadas, de una forma u otra, para la distribución de código malicioso. Así, una imagen adorable de un gatito pudo ser usada como método de ocultación para otros archivos con malware o bien para descargar aplicaciones maliciosas en Android. Ahora bien, ¿cómo sucede esto?
Al utilizar esteganografía en una imagen es probable que ésta se vea alterada, dando así la pauta de que ha sido modificada. Esta técnica permite ocultar el código en aquellos bits menos significativos de una imagen. Es decir, reemplazar la información de ciertos pixeles logrando que las alteraciones sean prácticamente imperceptibles, sobre todo si se utiliza formato PNG antes que el JPG, por las mayores posibilidades de codificación que ofrece.
Es importante aclarar que hablamos de archivos multimedia normales, que tienen algunos píxeles o metadatos alterados y manipulados con mucha dedicación, pero no logran infectar si se los abre.
Un ejemplo es esta campaña de hace ya algunos años que utilizó una imagen de Kobe Bryant para olcutar un script para minar criptomonedas.
¿Puede una imagen ejecutar código malicioso?
Ahora bien, ¿cómo es que no estamos todos infectados con malware en el contexto en el que se comparten hoy fotos en WhatsApp, Facebook o Instagram? ¿Es tan fácil como parece?
La realidad es que fácil no es, pero tampoco imposible. Lo cierto es que, si un archivo de imagen es alterado con código malicioso, es muy probable que se corrompa. O lo que es lo mismo, que no cumpla con las normas del formato y no se muestre correctamente. Esto representa la primera alarma a la que debemos prestar atención y desconfiar.
En las redes sociales, por ejemplo, es aún más complicado que se comparta una foto con malware porque al subirse cambia su tamaño, se recomprime, al punto que puede ser recortada o corregir algún color de la imagen.
Allí surge un nuevo interrogante: ¿puede una imagen ejecutar código en un sistema que promueva las descargas e infecte un sistema? Si bien es (muy) poco probable que esto suceda, habría que encontrar una vulnerabilidad en el software de visualización de imágenes muy puntual y que de alguna forma ejecute los comandos que un atacante desea al leer el comando malicioso incrustado en la imagen.
¿Cómo se consigue esto? Transformando la imagen en un contenedor de código Javascript de forma que, cuando la cargue un navegador con el elemento HTML 5 Canvas, se ejecute este código. Este concepto de imagen más código Javascript es denominado por el investigador como IMAJS (IMAge+JavaScript).
Así, el atacante estaría en condiciones de ejecutar código malicioso y hasta tomar el control de un equipo de forma remota solo con que la víctima visitase una web con una imagen preparada usando esta técnica.
Conclusión
Con las redes sociales como principal epicentro de intercambio de imágenes, es muy probable que los cibercriminales continúen ocultando malware en una imagen gracias a las facilidades de la esteganografía.
Y si bien la infección no es tan fácil como con otros vectores, es importante prestar atención a ciertos detalles, como pequeñas diferencias en el color de la imagen, colores duplicados o si la imagen es mucho más grande que la original. Por supuesto, una solución de seguridad siempre será fundamental a la hora de detectar este y otro tipo de ataques.