ATT&CK Matrix Tool: Emular amenazas en tu organización
Después de ver las técnicas de auditoría y hacking de BLE en el artículo anterior, ahora toca hablar de la charla de Cybercamp 2019. El objetivo de la presentación era contextualizar la emulación de adversarios en una organización, mostrar la matriz ATT&CK, tanto como matriz para mapear controles y amenazas, como utilizarlo como fuente de conocimiento para técnicos.
Además, presentaba una prueba de concepto en forma de herramienta básica para hacer una implementación de la matriz ATT&CK a través de funciones de Powershell y poder poner a prueba la emulación de las amenazas sobre entornos de dominio.
Los primeros puntos de la charla fueron la contextualización de conceptos como un ejercicio de Red Team y qué es una emulación de un adversario. Los vectores en los que se basa un ejercicio basado en escenarios de Red Team y las diferencias principales con una auditoría o con un Ethical Hacking. Además, la definición de la matriz ATT&CK como catálogo de tácticas y técnicas que implementan las amenazas es algo muy potente, pero no solo desde el punto de vista del mapeo de controles, sino de conocimiento para la gente técnica que hace auditoría, pentesting y ejercicios de red team diariamente.
Se dejó claro cuál era el objetivo de un Red Team, el cual se puede agrupar o enumerar de la siguiente manera:
Ya hemos hablado en el blog sobre esto a través de un artículo sobre Caldera. MITRE ATT&CK es una base de conocimiento de acceso global de tácticas y técnicas adversarias basadas en observaciones del mundo real. La base de conocimientos de ATT&CK se utiliza como base para el desarrollo de modelos y metodologías de amenazas específicas en el sector privado, en el gobierno y en la comunidad de productos y servicios de ciberseguridad
Las tácticas se utilizan para describir los pasos de ataque de alto nivel utilizados por un adversario. La forma en que se ejecuta una determinada táctica se describe mediante una variedad de técnicas. Para cada técnica, MITRE ATT&CK incluye una descripción, recomendaciones de detección y prevención y actores de amenazas conocidos que utilizan la técnica.
MITRE ATT&CK asume la brecha y por lo tanto la "primera" táctica es la intrusión inicial. Cualquier actividad realizada anteriormente está cubierta por el marco de PRE-ATT&CK. En la web del MITRE podemos encontrar el browser de ATT&CK, el cual es dinámico y se actualiza, relativamente, cada poco tiempo. Es decir, pueden aparecer nuevas tácticas y, por supuesto, nuevas técnicas especificadas en la matriz.
En la matriz podremos encontrar, cómo llevar a cabo la técnica, por lo que es interesante para el aprendizaje y el reciclaje de cualquiera. Podemos encontrar la mitigación, detección y los ejemplos donde se ha utilizado la técnica. Es decir, se indica qué amenazas han utilizado cada técnica.
Como tercer punto se habló del plan de emulación. Toda emulación debe llevar asociado un plan que indique las fases de la amenaza y las técnicas que van ejecutarse en cada fase. El plan de emulación recoge los puntos fundamentales de una amenaza y la emula. Esto es interesante y es que no se ejecuta la amenaza completamente, pero sí se recogen los puntos fuertes de ésta y son ejecutados contra el entorno a probar. Hubo un apartado para hablar de herramientas que implementan entornos de emulación de adversarios. En su día hablamos de Caldera y fue una de las herramientas a probar.
Idea Loca: Construir una herramienta en PowerShell para emular ATT&CK
Y llegó a punto de mostrar la prueba de concepto para utilizar funciones de Powershell y mapearlo con ATT&CK, así como poder llevar a cabo la emulación de adversarios. Hay un listado de cosas por hacer y mejorar que, poco a poco, se irán haciendo. La idea de todo esto era construir una herramienta con agentes y un nodo raíz para planificar y ejecutar el plan. Con varios objetivos.
En resumen, se genera un agente de Powershell con un pequeño código que solicitará una función consola. Este código se debe desplegar en los equipos que simularán la amenaza. Cuando esto se ejecuta los agentes se conectan contra el master o nodo raíz. Aquí comienza el flujo de conexión “HI”.
En este flujo se puede ver cómo se envían una serie de datos: un ID aleatorio para identificar al agente e información del sistema operativo como, por ejemplo, nombre de máquina, arquitectura, versión de Windows, PID, etcétera.
Tras la realización de conexión se solicita un plan. Aquí puede ocurrir dos cosas, que el servidor aún no tenga configurado un plan de emulación para el agente, ya que éste depende del usuario y lo que haya configurado. En el instante que hay una solicitud de plan y éste existe, se procede a servir el plan. El plan tiene un ID de plan, un ID de agente para que ese agente lo ejecute, el nombre de las funciones o tareas que se deben ejecutar y el número de tareas a ejecutar. Cuando esta información llega al agente tiene un bucle que le permite iterar contras las acciones.
En este punto, el agente irá solicitando cada función o tarea que debe realizar. El nodo central recibe la petición “getTask” y le devuelve la función correspondiente. El agente la ejecute y devuelve los resultados que hayan dado mediante la llamada “putResult”.
El nodo raíz tiene una serie de funcionalidades a través de una interfaz web con Flask y Bootstrap. Podemos encontrar:
Además, se ha realizado un script de consola con el que podemos hacer un seguimiento de todo lo que ocurre, así como generar planes para los agentes. Este script puede ser utilizado por personal más técnico para poder ver las salidas devueltas, en detalle, de los agentes.
Hasta aquí un poco la participación en Cybercamp 2019. Un taller y una charla hechas con la ilusión de los anteriores. Solo nos queda decir gracias a la ciudad de Valencia y a la gente de Incibe por hacer esto posible.
Saludos,
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
Para consultas puedes usar el Buzón Público para contactar con Pablo González
Figura 1: ATT&CK Matrix Tool: Emular amenazas en tu organización |
Además, presentaba una prueba de concepto en forma de herramienta básica para hacer una implementación de la matriz ATT&CK a través de funciones de Powershell y poder poner a prueba la emulación de las amenazas sobre entornos de dominio.
Figura 2: Libro de Pentesting con PowerShell (2ª Edición) |
Los primeros puntos de la charla fueron la contextualización de conceptos como un ejercicio de Red Team y qué es una emulación de un adversario. Los vectores en los que se basa un ejercicio basado en escenarios de Red Team y las diferencias principales con una auditoría o con un Ethical Hacking. Además, la definición de la matriz ATT&CK como catálogo de tácticas y técnicas que implementan las amenazas es algo muy potente, pero no solo desde el punto de vista del mapeo de controles, sino de conocimiento para la gente técnica que hace auditoría, pentesting y ejercicios de red team diariamente.
Se dejó claro cuál era el objetivo de un Red Team, el cual se puede agrupar o enumerar de la siguiente manera:
• Demostrar nivel exposición y riesgo.¿Qué es el MITRE ATT&CK?
• Demostrar impacto en el negocio y ayudar a la toma de decisiones.
• Demostrar las capacidades de prevención que tiene la organización.
• Demostrar las capacidades de detección.
• Evaluar al equipo de seguridad ante una amenaza.
Ya hemos hablado en el blog sobre esto a través de un artículo sobre Caldera. MITRE ATT&CK es una base de conocimiento de acceso global de tácticas y técnicas adversarias basadas en observaciones del mundo real. La base de conocimientos de ATT&CK se utiliza como base para el desarrollo de modelos y metodologías de amenazas específicas en el sector privado, en el gobierno y en la comunidad de productos y servicios de ciberseguridad
Las tácticas se utilizan para describir los pasos de ataque de alto nivel utilizados por un adversario. La forma en que se ejecuta una determinada táctica se describe mediante una variedad de técnicas. Para cada técnica, MITRE ATT&CK incluye una descripción, recomendaciones de detección y prevención y actores de amenazas conocidos que utilizan la técnica.
Figura 3: Matriz de técnicas y operaciones |
MITRE ATT&CK asume la brecha y por lo tanto la "primera" táctica es la intrusión inicial. Cualquier actividad realizada anteriormente está cubierta por el marco de PRE-ATT&CK. En la web del MITRE podemos encontrar el browser de ATT&CK, el cual es dinámico y se actualiza, relativamente, cada poco tiempo. Es decir, pueden aparecer nuevas tácticas y, por supuesto, nuevas técnicas especificadas en la matriz.
En la matriz podremos encontrar, cómo llevar a cabo la técnica, por lo que es interesante para el aprendizaje y el reciclaje de cualquiera. Podemos encontrar la mitigación, detección y los ejemplos donde se ha utilizado la técnica. Es decir, se indica qué amenazas han utilizado cada técnica.
Figura 4: Caldear para emulación ATT&CK |
Como tercer punto se habló del plan de emulación. Toda emulación debe llevar asociado un plan que indique las fases de la amenaza y las técnicas que van ejecutarse en cada fase. El plan de emulación recoge los puntos fundamentales de una amenaza y la emula. Esto es interesante y es que no se ejecuta la amenaza completamente, pero sí se recogen los puntos fuertes de ésta y son ejecutados contra el entorno a probar. Hubo un apartado para hablar de herramientas que implementan entornos de emulación de adversarios. En su día hablamos de Caldera y fue una de las herramientas a probar.
Idea Loca: Construir una herramienta en PowerShell para emular ATT&CK
Y llegó a punto de mostrar la prueba de concepto para utilizar funciones de Powershell y mapearlo con ATT&CK, así como poder llevar a cabo la emulación de adversarios. Hay un listado de cosas por hacer y mejorar que, poco a poco, se irán haciendo. La idea de todo esto era construir una herramienta con agentes y un nodo raíz para planificar y ejecutar el plan. Con varios objetivos.
Figura 5: Idea de herramienta a construir en PowerShell
• Construir una herramienta básica y mostrar cómo todos podían hacer una propia. Además, poder incluir de manera sencilla y rápida el conocimiento que cada uno tiene.
• Aplicar ATT&CK a través de diferentes técnicas con Powershell.
• Ejecutar la planificación a través de agentes desplegados en las máquinas. Estos agentes estarán escritos en Powershell.
• Proporcionar una planificación de acciones, tal como indica el plan de emulación.¿Cómo funciona el flujo básico de la herramienta? En las siguientes imágenes se puede ver el flujo básico de conexión “HI” y el flujo básico de solicitud de planificación y ejecución de tareas.
Figura 6: Flujo definido de la herramienta para una conexión "Hi" |
En resumen, se genera un agente de Powershell con un pequeño código que solicitará una función consola. Este código se debe desplegar en los equipos que simularán la amenaza. Cuando esto se ejecuta los agentes se conectan contra el master o nodo raíz. Aquí comienza el flujo de conexión “HI”.
En este flujo se puede ver cómo se envían una serie de datos: un ID aleatorio para identificar al agente e información del sistema operativo como, por ejemplo, nombre de máquina, arquitectura, versión de Windows, PID, etcétera.
Figura 7: Flujo de planificación y despliegue del plan |
Tras la realización de conexión se solicita un plan. Aquí puede ocurrir dos cosas, que el servidor aún no tenga configurado un plan de emulación para el agente, ya que éste depende del usuario y lo que haya configurado. En el instante que hay una solicitud de plan y éste existe, se procede a servir el plan. El plan tiene un ID de plan, un ID de agente para que ese agente lo ejecute, el nombre de las funciones o tareas que se deben ejecutar y el número de tareas a ejecutar. Cuando esta información llega al agente tiene un bucle que le permite iterar contras las acciones.
Figura 8: Herramienta ATT&CK Matrix Tool |
En este punto, el agente irá solicitando cada función o tarea que debe realizar. El nodo central recibe la petición “getTask” y le devuelve la función correspondiente. El agente la ejecute y devuelve los resultados que hayan dado mediante la llamada “putResult”.
Figura 9: Información remitida por el agente |
El nodo raíz tiene una serie de funcionalidades a través de una interfaz web con Flask y Bootstrap. Podemos encontrar:
• Inicio: Aquí se listarán los agentes que tenemos disponibles o que han reportado al nodo en algún momento.
• Plan: Permite generar el plan que desplegarán sobre los agentes.
• Resultados: Muestra los resultados de la ejecución de los agentes.
• Guerreros: Aquí se generan los agentes de Powershell que se desplegarán.Los resultados se pueden visualizar de manera ejecutiva, es decir, si la técnica se ha ejecutado correctamente o ha habido algún control que ha evitado o mitigado la ejecución.
Figura 10: Información y comandos de agente |
Además, se ha realizado un script de consola con el que podemos hacer un seguimiento de todo lo que ocurre, así como generar planes para los agentes. Este script puede ser utilizado por personal más técnico para poder ver las salidas devueltas, en detalle, de los agentes.
Figura 11: Script para analizar la salida de los agentes |
Hasta aquí un poco la participación en Cybercamp 2019. Un taller y una charla hechas con la ilusión de los anteriores. Solo nos queda decir gracias a la ciudad de Valencia y a la gente de Incibe por hacer esto posible.
Saludos,
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
Para consultas puedes usar el Buzón Público para contactar con Pablo González
No hay comentarios:
Publicar un comentario