Metathief, exfiltrando secretos corporativos en Metadatos

Diego Samuel Espitia    12 septiembre, 2019
Metathief, exfiltrando secretos corporativos en Metadatos

A lo largo de la historia se han producido numerosas filtraciones de datos, algunas de las más recientes, tan masivas y potencialmente peligrosas, como las que pusieron en manos de cibercriminales millones de cuentas de usuario de Dropbox, LinkedIn o Yahoo, explicadas ya en nuestro blog. En el día a día y con la intención de detectar y reducir el riesgo a las fugas, algunas empresas han implementado controles como analizadores de tráfico, soluciones DLP, IDS/IPS y Next-Generation Firewalls. A pesar de ello, la cantidad de información que se hace pública debido a dichas fugas de datos continúa en aumento, como lo demuestran las estadísticas.

Un atacante puede utilizar una gran cantidad de técnicas diferentes para exfiltrar información de una máquina corporativa sin necesidad de tener control de la misma, aprovechando el desconocimiento de los usuarios y los vacíos de seguridad recurrentes en algunos equipos.

Tras muchos años de realizar investigaciones y trabajar con metadatos, seguimos sosteniendo que son uno de esos vacíos que los equipos de seguridad generalmente dejan sin proteger, ya que consideran estar protegidos por alguno de los dispositivos de seguridad instalados en la red.  A partir de esta premisa y jugando un poco con las posibilidades, desarrollamos una pequeña herramienta tipo PoC para determinar el nivel de protección ante una fuga de información que utilice como mecanismo de transporte los propios metadatos, extrayendo documentos de las máquinas y escondiendolos entre los metadatos de archivos PDF que no resulten sospechosos.

¿Como funciona?

Para la ejecución de la PoC se desarrollaron dos scripts, el primero es el que realiza la extracción de la información del equipo víctima, usando los metadatos y esteganografía para superar las medidas de protección que pueda tener una red; el segundo script es el encargado de recuperar la información oculta en los metadatos y reconstruir la información filtrada en el equipo del atacante.

Empecemos viendo un poco más en detalle el primer script. Lo primero que identifica es el tipo de sistema operativo donde se encuentra, para así poder determinar el directorio principal del usuario afectado, y utilizará dicho dato como ubicación inicial para la búsqueda de la información a extraer.

Usando técnicas forenses básicas para identificar el tipo de archivo, el script busca documentos cuya  cabecera de identificación confirme que son del tipo PDF, y posteriormente valida que el tamaño sea inferior a 1MB; todos los PDF’s identificados en el equipo serán usados como “portadores” de los documentos de ofimática  que se extraerán de la máquina víctima.

Usando la misma técnica de identificación se genera una lista de los archivos de ofimática (docx, xlsx y pptx) que se encuentren en el equipo. Con la lista de los archivos a exfiltrar, se procede a fragmentar cada uno de los archivos que superen los 300Kb con la finalidad de mitigar la posibilidad de detección.

Ya identificados los archivos “portadores” y creados los fragmentos necesarios de los archivos a exfiltrar, el script procede a crear nuevos archivos PDF usando como base los archivos portadores (PDFs existentes), donde se carga un  nuevo atributo en los metadatos, llamado “Comment” y que contiene alguno de los fragmentos creados con los archivos a exfiltrar. Como se ve en la imagen 1.

Imagen 1: Carga de fragmento en los portadores

Una vez que se tiene embebida la información de los archivos a extraer en los PDFs portadores, el archivo creado se le da un nombre clave, que contiene el numero de documento exfiltrado, el nombre del usuario, el identificador del fragmento y la cantidad de fragmentos total que componen el archivo original.

Cada uno de esos archivos creados se envía por correo electrónico en la prueba de concepto, como se puede apreciar en la imagen 2, pero podría utilizarse cualquier otro mecanismo de extracción como subir la información a un servidor de comando y control o a algún otro sitio controlado por el atacante.

Imagen 2: Recepción de los archivos exfiltrados

Como mecanismo de comprobación del funcionamiento de este primer script, se puede usar el bot de Metashield para Telegram, cargando uno de los archivos recibidos desde la maquina víctima y se puede ver como en el campo “Comment” se evidencia una información en hexadecimal que corresponde a un fragmento del archivo, como se puede apreciar en la imagen 3.

Imagen 3: Análisis de metadatos de archivo exfiltrado

Cuando se tienen todos los documentos exfiltrados es hora de usar el segundo script que se desarrollo, el cuál recibe de entrada el dato de cuántos documentos son lo que se han exfiltrado (que se obtiene con los nombres de los archivos recibidos pues el primer numero del nombre indica cuantos son los archivos comprometidos). El segundo dato que solicita es la ruta donde están almacenados los archivos recibidos (si esta no es ingresada se toma la ruta donde se encuentra el script) y por último, solicita de forma obligatoria el nombre del usuario víctima, que también esta dentro del nombre de los archivos recibidos. Como se ve en la imagen 4.

Imagen 4: Parámetros a cargar en el script de reconstrucción

El script inicia un recorrido organizado por los archivos leyendo el atributo llamado “Comment” en los metadatos de todos los archivos y concatena la información hasta reconstruir cada documento extraído., indicándole al usuario cuando cada archivo es reconstruido y el nombre asignado, como se ve en la imagen 5.

Imagen 5: Proceso de reconstrucción de archivos exfiltrados

Para poder identificar a qué tipo de archivo pertenecen los documentos exfiltrados, se usó un comando de Linux, que nos permite conocer el filetype de los archivos, como se puede apreciar en la imagen 6.

Imagen 6: Detección de tipo de archivos exfiltrados

Con esta PoC se demuestra que los metadatos pueden ser un canal de exfiltración de información además de los otros usos maliciosos sobre los cuales hemos hablado en muchos años, y por ello, deben ser controlados.  Si quieren descargar esta PoC para realizar pruebas internas, pueden hacerlo desde nuestro repositorio de GitHub.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *