La siguiente entrada del blog presenta el concepto de flujo de datos alternativo y cómo se ha utilizado en la naturaleza, tanto en el pasado como en estos días: como una técnica utilizada para ocultar una carga útil maliciosa en el sistema de archivos. Aunque podría considerarse una técnica antigua, sigue siendo relevante hoy en día y común en la naturaleza.
¿Qué es un flujo de datos alternativo?
El flujo de datos alternativo (ADS, por sus siglas en inglés) es la capacidad de un sistema de archivos NTFS (el formato principal del sistema de archivos en Windows) para almacenar diferentes flujos de datos, además del flujo predeterminado que se utiliza normalmente para un archivo. Cuando se creó esta característica, su objetivo principal era proporcionar soporte al Sistema de Archivos Jerárquico (HFS) de macOS.
El sistema de archivos NTFS contiene archivos con atributos. El atributo relevante para nuestro ámbito es el atributo $DATA, que se utiliza para almacenar los flujos de datos de un archivo.
En el pasado, era común almacenar una carga útil maliciosa dentro de un ADS de un archivo legítimo. Pero hoy en día, muchas soluciones de seguridad detectan y analizan los ADS. Sin embargo, le mostraremos en este post, un ADS todavía puede ser utilizado para ejecutar cargas útiles mientras se oculta del usuario, así como varios productos de seguridad.
Para simplificar los conceptos que se presentan en este artículo, todos los ejemplos se basan en herramientas nativas de Windows.
Cómo usar ADS
En los buenos tiempos de Windows Vista, Alternate Data Streams (ADS) era un método común para los desarrolladores de malware para ocultar su código malicioso. Un flujo de datos alternativo se utilizaba eficazmente para ocultar la presencia de archivos maliciosos corruptores, metiéndolos dentro de un archivo legítimo. Al poner el malware en el flujo de datos alternativo, el archivo de Windows contendría información e instrucciones para los archivos legítimos, pero también para el archivo malicioso. Para ejecutar el código malicioso que el hacker ha depositado en el flujo de datos alternativo, querría crear un enlace simbólico utilizando el comando mklink. Pero para ello es necesario tener derechos administrativos en la máquina. Considerando que el comportamiento normal de un usuario no requiere operar como administrador, los hackers tienden a acercarse a sus objetivos asumiendo que aterrizan en una caja sin derechos de administrador.
Enumeración – La corriente principal bajo $DATA es la cadena vacía (por lo tanto: «», también llamada la corriente sin nombre). Este flujo se utiliza para contener el flujo regular de un archivo.
El siguiente es un ejemplo de enumerar los flujos de datos de un archivo con PowerShell:
También puede utilizar dir /R, o SysInternals\streams.exe para enumerar un ADS de un archivo / recursivamente en un directorio
Como se puede ver arriba, el archivo sólo contiene el flujo sin nombre.
Sin embargo, a veces se puede encontrar un ADS dentro de un archivo legítimo, ya que hay varios usos legítimos para esta técnica.
A continuación se muestra un ejemplo de enumeración de flujos de datos de un archivo con un ADS con PowerShell:
Este es también un ejemplo de un uso legítimo de ADS: el Zone. Identificador. Este campo presenta el nivel de confianza de la fuente del archivo. Este es un uso de los navegadores para almacenar el Su macOS correspondiente es el «bit de cuarentena».
Creación – Mientras que puede haber usos legítimos para ADS, ADS también puede ser utilizado para almacenar una carga útil maliciosa. Los atacantes podrían preferir este método en lugar de guardar la carga útil en el flujo sin nombre, porque su presencia estará oculta para el usuario – no es accesible desde explorer.exe (y el tamaño mostrado de un archivo no incluye el tamaño de ADS). Además, no se muestra por defecto con el comando «dir» (sin embargo, la bandera /R muestra el ADS, y se aplica desde Windows Vista).
Crear un ADS es bastante sencillo.
Un ejemplo de creación de un ADS con el comando type:
Hasta Windows XP, era posible ejecutar un ADS con el comando start. Sin embargo, desde versiones posteriores de Windows, ya no es posible.
Acceso a los datos – Abusar de los ADS sigue siendo una amenaza relevante, ya que existen múltiples formas de leer y ejecutar un ADS.
El primer uso es acceder a los datos. Se puede acceder fácilmente al contenido del ADS. El siguiente es un ejemplo con PowerShell:
Ejecución – Además de leer los datos, también es posible ejecutarlos. Aunque no es posible ejecutar un ADS con el comando «start», sí se puede ejecutar desde otros programas. Por ejemplo, con WMI:
«wmic process call creates» – ejecuta un proceso con WMI. También puede ejecutar un ADS. Ejemplo:
Hay otras herramientas nativas legítimas de Windows que se pueden utilizar para ejecutar directamente un ADS. Por ejemplo, una DLL puede guardarse dentro de un ADS y ser llamada por DllMain a través de rundll32.exe; también, un HTA puede guardarse dentro de un ADS y ser llamado a través de mshta.exe; y así sucesivamente.
Campañas maliciosas que abusan de ADS
Puede parecer que Windows ha logrado manejar las amenazas que residen dentro de ADS. Sin embargo, hay muchas familias de malware en la naturaleza que todavía abusan de los ADS.
Otro ejemplo de 2017 es BitPaymer, un ransomware que utilizó dos ADS en la secuencia de ataque, con el fin de añadir sigilo a las acciones y ocultar la actividad maliciosa. El primer ADS fue creado con el fin de ejecutar el comando «net view» para obtener los recursos compartidos de red, luego el segundo ADS codifica los datos en el disco y los recursos compartidos de red.
Para concluir, el abuso de ADS es una técnica que sigue siendo relevante hoy en día. De hecho, las versiones recientes de Windows han limitado y endurecido la funcionalidad de ADS. Sin embargo, el dominio básico de las herramientas nativas de Windows, como Power-Shell y WMI, o algunos conocimientos de la línea de comandos de Windows permiten a los actores de amenazas continuar y aprovechar ADS en sus ataques. Curiosamente, las recientes campañas que utilizan ADS se consideran bastante sofisticadas y tienden a minimizar el uso de archivos persistentes en el disco.