
"¡Incidentes de Seguridad en una Caja!" Un herramienta modular, basada en menús, multiplataforma para construir eventos de seguridad personalizados, retardados y distribuidos. Cree fácilmente cadenas de eventos personalizadas para ejercicios de Equipos Azules y Rojos y mapeo de sensores/alertas. Los Equipos Rojos pueden crear incidentes señuelo, distracciones y cebos para apoyar y escalar sus operaciones. Construya secuencias de eventos ("narrativas") para simular escenarios realistas y generar los artefactos de red y sistema de archivos correspondientes.
DumpsterFire Toolset - "¡Incidentes de seguridad en una caja!"
(Actualización 27/05/2020: Sí, migraré todos mis proyectos de Github a Python3 durante el verano de 2020.)
El conjunto de herramientas DumpsterFire es una herramienta modular, basada en menús y multiplataforma para construir eventos de seguridad repetibles, retardados en el tiempo y distribuidos. Cree fácilmente cadenas de eventos personalizadas para ejercicios del Blue Team y mapeo de sensores/alertas. Los Red Teams pueden crear incidentes señuelo, distracciones y trampas para apoyar y escalar sus operaciones. Convierta ejercicios de mesa en papel en eventos controlados de "fuego real" en campo. Construya secuencias de eventos ("narrativas") para simular escenarios realistas y generar los artefactos de red y sistema de archivos correspondientes.
El conjunto de herramientas está diseñado para ser dinámicamente extensible, permitiéndole crear sus propios Fires (módulos de eventos) para añadir a la colección incluida de Fires del conjunto de herramientas. Simplemente escriba su propio módulo Fire y colóquelo en el directorio FireModules. El conjunto de herramientas DumpsterFire detectará automáticamente sus Fires personalizados al inicio y los pondrá a disposición para su uso.
Joe Gervais (TryCatchHCF)
Los Red Teams y Blue Teams suelen estar sobreextendidos. Lo que falta es una forma de escalar las capacidades de cada equipo, proporcionando una actividad de Red Team más efectiva y ejercicios de Blue Team / Purple Team más realistas (y útiles). ¡La automatización al rescate! El conjunto de herramientas DumpsterFire es una solución multiplataforma basada en menús que le permite crear fácilmente incidentes de seguridad personalizados combinando eventos modulares encadenados en una narrativa coherente. Esas colecciones de eventos (DumpsterFires) pueden entonces ejecutarse como procesos automatizados con retardo de tiempo. (Por supuesto, también pueden activarse inmediatamente.)
¿El resultado? Mientras estás en una reunión o disfrutando de la vida, tu DumpsterFire espera su activación por fecha-hora. En un compromiso de Red Team, mientras explotas ese servicio expuesto en un servidor B2B olvidado, tus DumpsterFires clonados y sincronizados en el tiempo están iluminando el SIEM de la organización objetivo en una subred lejana, distrayendo a su equipo de respuesta. Los Blue Teamers pueden convertir ejercicios de mesa en papel en eventos de campo de "fuego real", con cadenas de eventos DumpsterFire controladas y preaprobadas para activar sensores y alertas, y entrenar a sus analistas utilizando su entorno operativo real. Las operaciones de Purple Team ahora pueden ejecutar cadenas de eventos metódicas y repetibles para mapear consistentemente su postura de sensores y alertas. Puede generar escenarios novedosos para probar y entrenar a sus equipos, adelantándose al espacio de amenazas para estar preparados para contingencias de seguridad.
¿Alguna vez te has preguntado cómo respondería tu Blue Team a la actividad del bot Mirai en tu red interna? ¡Ahora puedes descubrirlo! (No te preocupes, el módulo Fire del bot Mirai no pivota, pero sí utiliza los mismos nombres de usuario y contraseñas para realizar ataques de fuerza bruta a sesiones telnet en la red objetivo.)
¿No tienes un Red Team pero deseas tener una forma fácil de ejecutar ejercicios controlados, repetibles y personalizados contra todos tus equipos del SOC? ¡Hecho!
¿Te gustaría poder apoyar un compromiso de Red Team contra un equipo remoto que está a 7 zonas horarias de distancia, sin despertarte a las 3:00 a.m.? ¡Pulsa ese botón de posponer!
¿Alguna vez quisiste rickrollear simultáneamente todos los sistemas de tus oponentes durante tu ejercicio anual de ciberguerra? "¡Nunca te voy a defraudar!"
Vea ejemplos de DumpsterFires más abajo. Y por supuesto la sección de Travesuras.
Consulte mis diapositivas de CactusCon 2017 (incluidas en el proyecto). Las diapositivas están escritas para ser autónomas, proporcionando antecedentes, enfoques, casos de uso específicos y más. Pondrán todo en contexto y tampoco te harán dormir. A menos que te hagan dormir, en cuyo caso probablemente necesitabas descansar de todos modos, así que realmente todos salimos ganando aquí.
DumpsterFire crea un registro de eventos con marca de fecha y hora para que los equipos Rojo y Azul puedan coordinar y rastrear eventos, correlacionándolos con lo que fue detectado (o no detectado) por sus sensores, qué alertas se activaron o no, etc. También permite a los equipos confirmar qué eventos fueron parte de su operación/ejercicio, manteniendo a todos fuera de problemas. Todo el seguimiento de fecha y hora se realiza en UTC, por lo que sus operaciones globales se pueden correlacionar fácilmente sin preocuparse por conversiones entre zonas horarias y líneas internacionales de cambio de fecha.
Los registros de eventos con marca de fecha y hora generados automáticamente también proporcionan un valor añadido sin esfuerzo a sus compromisos. Genere una colección de DumpsterFires para sus compromisos con clientes, adaptados a sus superficies de ataque. Al final de sus operaciones, puede entregar los registros como un entregable adicional de Purple Team a su cliente para su análisis posterior al compromiso.
El flujo de trabajo del conjunto de herramientas DumpsterFire está diseñado para ser fácil de usar y robusto. Todo se puede hacer desde el script dumpsterFireFactory.py basado en menús. Ejecute el script y la herramienta lo guiará a medida que avanza. Puede comenzar explorando los módulos Fire existentes y los DumpsterFires guardados. Cuando esté listo para crear sus propios DumpsterFires, la herramienta lo guiará a través del flujo de trabajo para realizar el trabajo. Finalmente, será el momento de encender su DumpsterFire. Después de seleccionar el DumpsterFire de su elección, revisará los módulos Fire y la configuración del DumpsterFire. Si todo se ve bien, ¡enciéndalo!
Cuando está construyendo un DumpsterFire, después de haber elegido todos los módulos Fire que desea incluir, la herramienta recorrerá la lista de Fires. Si un Fire tiene opciones de configuración personalizadas, la herramienta llamará al método Configure() de ese Fire para presentarle indicaciones para su configuración (por ejemplo, la dirección IP de una red objetivo).
Una vez que todos los Fires hayan sido configurados, se le dará la opción de asignar retardos de tiempo individuales a sus Fires. Esto permite que el DumpsterFire imite mejor operaciones reales al ejecutar su cadena de eventos. Por ejemplo, el primer Fire puede visitar varios sitios web de hacking, el siguiente Fire descarga algunas herramientas de hacking comunes antes de lanzar el tercer Fire que comienza a escanear la red local. Si todo esto sucediera en cuestión de segundos, ningún analista del SOC creería que fue un humano. Al agregar varios minutos o incluso horas entre esos eventos, crea una cadena de eventos más realista.
Después de que todos los Fires hayan sido configurados y se hayan asignado los retardos individuales opcionales, se le pedirá que nombre su DumpsterFire. No use espacios ni caracteres especiales extraños, solo use letras, números, guiones bajos y guiones.
¡Voilà! Ahora ha creado su primer DumpsterFire. ¡Es hora de encender uno!
Cuando esté listo para encender un DumpsterFire, la herramienta primero le mostrará la configuración del DumpsterFire. Si todo se ve bien, se le preguntará si desea asignar un retardo de fecha-hora antes de encender. Todo el procesamiento de fecha-hora se realiza en UTC para garantizar una ejecución consistente independientemente de la ubicación de ejecución de su DumpsterFire. De lo contrario, puede rechazar el retardo de fecha-hora y la ejecución comenzará inmediatamente después de que dé la confirmación final.
A medida que el DumpsterFire se ejecuta, recibirá comentarios regulares con marca de fecha y hora sobre el estado de cada Fire y los eventos críticos. Esto no solo le ayuda a rastrear el progreso, sino que también proporciona un registro cronológico de las actividades de su DumpsterFire, algo crítico para coordinar y desconflictuar sus eventos del ruido de fondo general que inunda cada SOC. También puede entregar el registro cronológico a sus clientes externos después de que sus operaciones estén completas, como un registro de valor añadido de sus actividades que pueden usar para revisar la configuración de sus sensores y alertas. Todo sin esfuerzo adicional de su parte.
¡El 1 de abril ocurre! También los ciberjuegos de guerra o el cumpleaños de tu mejor amigo. Algunas circunstancias requieren un pequeño extra. ¿Finalmente infiltraste el perímetro de tu oponente en esa competencia de net wars? ¡Celebra con Travesuras mientras aseguras tu victoria! ¿Tu mejor amigo dejó la pantalla desbloqueada en la noche de juegos? ¡Compartir es cuidar! Las Travesuras de DumpsterFire te permiten agregar algo de sabor a tu operación.
¿Quieres abrir el navegador predeterminado del sistema y transmitir toda esa grandiosidad de Rick Astley? ¿Después de configurar el volumen del sistema al máximo? ¿Qué tal abrir cualquier URL que elijas? ¿O configurar los alias del shell del sistema para fingir que el sistema de archivos está corrupto?
dumpsterFireFactory.py - Herramienta basada en menús para crear, configurar, programar y ejecutar DumpsterFires
FireModules/ - Directorio que contiene subdirectorios de Fires, cada subdirectorio es una Categoría específica de Fires para mantener sus módulos Fire organizados. Los Fires se agregan a un DumpsterFire para crear una cadena de eventos y acciones.
DumpsterFires/ - Directorio que contiene su colección de DumpsterFires
igniteDumpsterFire.py - Script sin interfaz, invocado desde la línea de comandos con el nombre de archivo del DumpsterFire que desea ejecutar. Útil para encender DumpsterFires distribuidos.
testFireModule.py - Script de utilidad para pruebas unitarias de los métodos de clase de sus módulos Fire personalizados, sin la molestia de ejecutar todo el proceso de DumpsterFire Factory para depurar. También es útil para ejecutar un solo Fire para verificar su configuración. testFireModule.py le pedirá la configuración cuando corresponda.
Archivos __init__.py - Requeridos para que Python trate los directorios como si contuvieran paquetes de Python, permite que el conjunto de herramientas DumpsterFire encuentre y cargue los módulos Fire.
Python 2.7.x
$ ./dumpsterFireFactory.py
El script de DumpsterFire Factory basado en menús lo guía a través de cada paso, con ayuda contextual a lo largo del camino.
En nuestro primer ejemplo, tenemos un DumpsterFire que podría ser un ejercicio del SOC o una distracción del Red Team. El DumpsterFire primero realiza una búsqueda en Google de herramientas de hacking. El siguiente Fire abre sesiones web en varios sitios web de hacking. A continuación, un Fire posterior descarga algunas herramientas de hacking comunes. Luego, un escaneo de puertos se dirige a la subred, seguido de intentos de inicio de sesión por fuerza bruta contra un solo host a través de Telnet. El Fire final ejecuta una serie de comandos de Linux. Observe que entre cada Fire, el creador de este DumpsterFire ha insertado algunos retardos de tiempo. Esto hace que el flujo de eventos parezca más realista.
En el siguiente ejemplo, los Purple Teamers han creado un DumpsterFire para ayudar a analizar y validar sus configuraciones de sensores y alertas. Este DumpsterFire ejecuta una serie coreografiada de escaneos de puertos, cada uno dirigido a diferentes colecciones de puertos y servicios, con diferentes velocidades de sonda también. Han insertado un retardo de 5 minutos entre cada Fire de escaneo para simplificar el aislamiento del tráfico asociado con cada Fire de escaneo. Cuando ejecuten este DumpsterFire, también verán marcas de fecha y hora al comienzo de cada Fire para ayudar a desconflictuar la actividad de red del Fire frente a otros eventos de red.
El diseño modular de DumpsterFire te da flexibilidad para crear cualquier número de narrativas de cadenas de eventos. Los módulos Fire que tienen configuraciones personalizables le permiten establecer redes o sistemas objetivo, etc. Sin embargo, hay algunos módulos Fire que le brindan flexibilidad inmediata para expandir enormemente sus secuencias de eventos DumpsterFire.
Sin crear ninguna nueva clase FireModule, puede usar estos módulos Fire "personalizados" existentes para aprovechar y extender sus DumpsterFires:
Puede agregar cualquier cantidad de estos a su DumpsterFire, cada uno con sus propias acciones personalizadas. Por ejemplo, podría encadenar una docena de módulos 'custom_url.py' para construir una narrativa de navegación completa y adaptada. Luego podría tener varias instancias de 'OSCommand/' Fire que ejecuten comandos del sistema para reforzar aún más la narrativa de eventos deseada. Los Fires de 'OSCommand/' en particular le brindan una flexibilidad increíble. Cada Fire individual en su cadena de eventos DumpsterFire acepta cualquier comando de shell que sea apropiado para el sistema operativo del host:
Ejemplo: Linux/Unix (y terminal OSX)
find /home -name '*.bash_history' -exec cat {} ; ; echo "Never gonna give you up" > rickroll.txt ; wall rickroll.txt
DumpsterFire está listo para usar de fábrica, pero su verdadero valor radica en lo fácilmente que puede extender el baúl de escenarios de DumpsterFire creando sus propios módulos Fire personalizados. Al crear y adaptar módulos Fire para que coincidan con sus necesidades específicas, puede expandir rápidamente los tipos de escenarios DumpsterFire que puede construir y ejecutar. Simplemente escriba su nuevo módulo Fire y colóquelo en un directorio existente dentro de FireModules/ y el conjunto de herramientas DumpsterFire lo cargará automáticamente en tiempo de ejecución y lo pondrá a disposición.
¿Quiere mantener sus módulos Fire personalizados completamente separados en su propia Categoría? ¡Fácil! Simplemente cree un nuevo directorio dentro de FireModules/ y el conjunto de herramientas DumpsterFire lo detectará automáticamente y lo pondrá a disposición como una nueva Categoría de Fires.
NOTA: Asegúrese de que su nuevo directorio tenga un archivo vacío llamado __init__.py; de lo contrario, el administrador de paquetes de Python no podrá encontrarlo y DumpsterFire no lo verá.
Su módulo Fire hereda de una clase llamada FireModule. Como punto de partida, puede copiar un módulo Fire existente. Asegúrese de cambiar el nombre del archivo y todas las referencias de nombre de clase en el archivo para que coincidan con su nuevo Fire. (Actualice también las referencias de ruta de Categoría en los métodos constructores de la clase, si es necesario.)
Métodos de clase requeridos:
Configure() - Solicita entrada al usuario, completa los parámetros de FireModule
Description() - Devuelve una cadena que contiene una descripción de FireModule
GetParameters() - Devuelve una sola cadena de los parámetros de Fire
SetParameters( string ) - Toma una sola cadena y completa los miembros de Fire
ActivateLogging( boolean ) - Establece una bandera para que Fire genere un registro de sus actividades (excelente para revisión) NOTA: Para el lanzamiento inicial, el registro en salida estándar siempre está activado.
Ignite() - Ejecuta las acciones de Fire
Probar clases de Python puede ser molesto, especialmente cuando desea probar unitariamente cada uno de los métodos de la clase, obligándolo a pasar por todos los casos de uso de la aplicación para asegurarse de que cada método de clase se ejecute en el orden correcto. Bleh. Por eso he escrito e incluido un script que invocará correctamente cada método de sus nuevas clases derivadas de FireModule, permitiéndole pasar rápidamente por la depuración. De nada. :-) También es una excelente manera de ejecutar un Fire por sí solo para probar su configuración, ver qué hace, etc.
En la línea de comandos, proporcione al script testFireModule.py la ruta de archivo relativa a su módulo Fire personalizado. El script de prueba llamará a cada uno de los métodos requeridos de FireModule por usted, en la secuencia adecuada (obteniendo la configuración antes de guardar, etc.). El script de prueba no utiliza manejo de excepciones, porque Python solo le da errores útiles (como señalar que falta una comilla doble) cuando se bloquea. ¡Estrellese y quémese hacia un Fire personalizado exitoso!
Actualmente tengo alrededor de 30 módulos Fire más en varias etapas de desarrollo y depuración. Los lanzaré durante octubre y noviembre. Por cada uno que creo, termino queriendo crear dos más, así que esté atento a este espacio para actualizaciones.