martes, febrero 23, 2021

ATTPwn: Emulación de una técnica de exfiltración MITRE ATT&CK en tus equipos Windows 10

Seguimos incrementando las capacidades de ATTPwn, la herramienta de simulación de adversarios basada en implementaciones de las técnicas de MITRE ATT&CK y de la que os hemos ido hablado varias veces por aquí. En ésta ocasión vamos a crear dos implementaciones con Powershell de la técnica de ATTPwn para simular un proceso de exfiltración en un sistema Microsoft Windows 10. 

Figura 1: ATTPwn: Emulación de una técnica de exfiltración
MITRE ATT&CK en tus equipos Windows 10

Si quieres conocer más sobre ATTPw, el código que hay detrás de la herramienta y cómo participar en su desarrollo creando tus propias implementaciones, puedes echar un vistazo al siguiente vídeo de presentación de nuestro compañero Pablo González para la EkoParty 2020.

Figura 2: Pablo González en EKO2020 presentando ATTPwn

¿Qué queremos decir con exfiltración?

Cuando hablamos de exfiltración estamos hablando prácticamente de robo de información. Generalmente la exfiltración tiene lugar en una etapa muy avanzada de una campaña de Red Team o un ciberataque real. Previo a la exfiltración se ha debido encontrar una vulnerabilidad cuya explotación nos haya dado acceso al sistema y, frecuentemente, se ha obtenido un cierto nivel de privilegios que nos permite acceso a toda la información que almacena el sistema comprometido.

Figura 3: Operaciones en un ejercicio de Red Team

En un ejercicio de Red Team, el objetivo de la exfiltración es poner a prueba la capacidad de la organización para detectar y prevenir el robo de información. El robo de información es útil cuando tratamos de explicar el resultado de la campaña a personas con un perfil no técnico, que pueden des-conocer lo que es un exploit o una elevación de privilegios, pero que entenderán la gravedad de la situación si se les muestra la filtración de los datos de su organización.

Figura 4: El Red Team de la empresa
de Eduardo Arriols

Desde la perspectiva de un ataque real, son muchas las ocasiones en las que la exfiltración es el objetivo final del ciberataque. Los datos robados de una organización pueden ser posteriormente vendidos o usados para la extorsión, puesto que en muchos casos se trata de información sensible y/o confidencial. Multitud de naciones, organizaciones, empresas e individuos particulares han sido víctimas de la filtración de sus datos. 
Algunos ejemplos se han hecho muy famosos en la prensa, como fueron el robo masivo de cuentas en Sony en 2011 o las del portal de citas Ashley Madison en 2015. Otros casos más recientes no han llegado a trascender a la prensa no especializada, pero han sido muy relevantes en el mundo de la ciberseguridad, como el ataque a la compañía FireEye en diciembre de 2020 en el que los cibercriminales consiguieron hacerse con potentes herramientas de hacking.

Implementando técnicas de exfiltración en ATTPwn

Con el uso de técnicas de exfiltración en ATTPwn incrementaremos el realismo de la simulación de una amenaza, permitiéndonos comprobar si tenemos la capacidad de detectar el robo de datos como tráfico malicioso o si, por el contrario, pasa inadvertido para los mecanismos de defensa que tenemos configurados. Para evitar que el robo de datos sea descubierto, es frecuente usar herramientas que ya estén disponibles en los sistemas comprometidos, además de utilizar protocolos de comunicación que puedan pasar desapercibidos como el HTTP(S), DNS e incluso ICMP, utilizando las técnicas de esteganografía que tanto se utilizan sobre ellos.

Figura 6: Libro de Esteganografía y Estegoanálisis
de Jordi Serrá y Daniel Lerch

Las dos implementaciones que haremos hoy hacen uso del protocolo HTTPS e intentarán que la exfiltración sea percibida como tráfico web común. Si no estás familiarizado con el uso de ATTPwn es un buen momento para leer los artículos sobre cómo levantar ATTPwn en Docker y usar su GUI y cómo crear implementaciones en ATTPwn.

En la primera implementación haremos uso de la web file.io, que nos permite alojar y descargar archivos de forma gratuita y sin necesidad de registro. Además cuenta con una API muy sencilla de utilizar. Como ya sabemos, la mejor forma de hacer nuevas implementaciones en la herramienta es partiendo del archivo skeleton file y, desde ahí, crear nuestro propio script: 

Figura 7: Código de la funcioón "invoque-exfiltrationWeb"

Si nos fijamos en la parte resaltada del código, podemos ver que el script hace fundamentalmente tres cosas:

1. Comprime el directorio home del usuario. 
 
2. Usa la herramienta curl para subir el archivo comprimido a file.io a través de una petición POST. La respuesta a esta petición contiene el enlace desde el que se podrá descargar el archivo. 
 
3. Elimina el archivo comprimido del sistema.

Como se puede ver en el vídeo de la Figura 8, el script funcionará correctamente, pero haciendo uso de esta implementación nos enfrentamos a dos problemas:

- El primer problema lo tenemos con curl, la herramienta que estamos usando para comunicarnos con la API. Curl viene instalado por defecto en los sistemas Windows 10 desde la build 17063 por lo que esta implementación no funcionará en versiones anteriores de Windows 10 o en sistemas que corran Windows 7.

- En segundo lugar, es mas que probable que file.io no sea un dominio de uso común en una organización, por lo que el tráfico web que hemos generado es fácil de de detectar como malicioso o puede que no esté permitido por un firewall.

Para solventar estos problemas vamos a crear una segunda implementación haciendo uso de Dropbox para alojar el archivo filtrado y en vez de hacer uso de Curl, utilizaremos el cmdlet Invoke-WebRequest de PowershellLa ventaja de usar Dropbox como canal de exfiltración y control es que es un servicio de uso frecuente en las empresas por lo que es más probable que el tráfico esté permitido y que levante menos sospechas.

Figura 8: PoC de ATTPwn exfriltracion en Windows 10

El beneficio de usar Powershell es que nos permitirá ejecutar el script en la mayoría de sis-temas Windows 7 y Windows 10, ya que todos ellos traen Powershell instalado por defecto. Para utilizar esta implementación necesitamos una cuenta en Dropbox y crear una aplicación desde este enlace para generar un token (API Key). Este token será el que nos identificará al hacer uso de la API de Dropbox. El cuerpo de nuestro nuevo script tendrá esta pinta:

Figura 9: Código de la función “invoke-exfiltrationDropbox”

Aunque pueda parecer más engorroso que el script anterior, en esencia, este hace las mismas tres cosas: comprimir la carpeta home del usuario, subirla a Dropbox y eliminar el archivo del sistema. Esta vez hay que recordar que antes de lanzar un plan que contenga esta implementación contra un warrior, somos nosotros los que debemos suministrar la API Key desde la interfaz web de ATTPwn en la sección del loot del warrior:

Figura 10: Introducción de la APIKey en el loot del un warrior

Con esto ya hemos creado dos implementaciones que nos permiten añadir una técnica de exfiltración al diseño de un plan de amenaza al utilizar ATTPwn. Espero que te hayas animado a implementar otras muchas técnicas, recuerda que es un proyecto Open Source y se nutre de la aportación de todos.

No hay comentarios:

Publicar un comentario