Cómo esconder un payload en los metadatos de una foto

A la hora de realizar un ciber ataque, los atacantes deben de pasar desapercibidos y no hacer saltar las alarmas, por ello se buscan técnicas que permitan evadir cortafuegos, que no los detecte un antivirus, etc. Existen numerosas maneras de llevar a cabo este tipo de tareas, en esta ocasión hablaremos de una técnica, que no es nueva, ocultar scripts en los metadatos de una fotografía

Un atacante puede distribuir scripts maliciosos en la red de manera muy sencilla, puede usar servicios que permiten alojar imágenes para que los usuarios lo descarguen y se consiga ejecutar el código en un equipo objetivo (no vale un ‘doble click’). Las redes sociales, como Twitter o Facebook, eliminan los metadatos. la demostración del ‘ataque’ que se muestra aquí es válido para sistemas macOS y Linux. Para hacer la prueba necesitaremos lo siguiente: una imagen, curl, exiftool, grep y una terminal Bash.

Construyendo el ataque

Como primer paso construimos el script que queremos ejecutar, en este caso nada complicado, aquí entra en juego la imaginación de cada uno.printf ‘touch ~/Pwned’ | base64 | tr -d ‘n’Que nos dará como resultado el siguiente string en base64: dG91Y2ggfi9Qd25lZA==.

Ahora haciendo uso de exiftool borramos todos los metadatos de la imagen y agregamos nuestro comando a una de sus opciones: exiftool -all= test.jpg; exiftool -Certificate=’dG91Y2ggfi9Qd25lZA==’ test.jpg

Figura 1: Ocultando el comando en la imagen

Si comprobamos la imagen, vemos como se ha modificado la opción Certificate y tiene el contenido que le indicamos en base64.

Figura 2: Comprobación del comando insertado en los metadatos

Ahora para descargar, extraer y decodificar el payload se tira de herramientas disponibles en el sistema, el comando y la demostración se puede ver en la figura 3. Como vemos, nada de doble click de ratón, es una sucesión de comandos.

Figura 3: Prueba de concepto

El comando ejecutado, se encarga de realizar lo siguiente: a partir de curl se descargar la imagen (-s: modo silencioso), con grep podemos leer los datos en “crudo” de la imagen y buscar el texto Cert, con sed obtenemos el código codificado, tr sirve para quitar posibles espacios en blanco al inicio, y base64 decodifica el código (opción -d). Por último con eval se ejecuta el código que hemos obtenido.

Aquí se ha utilizado “Certificate”, pero podrías elegir otra flag sin problema. Vemos así una manera fácil de ocultar nuestros scripts y evitar posibles detecciones.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.