Marco de ataque modular en Python3 para automatizar la explotación de plataformas SIEM (Splunk, Graylog, OSSIM, QRadar, McAfee) mediante robo de credenciales, despliegue de cargas útiles y módulos de post-explotación.
Framework de ataque modular MultiSIEM en Python3
Por ElevenPaths https://www.elevenpaths.com/
Uso: python3 ./siemsframework.py
Los SIEM son herramientas defensivas cada vez más utilizadas en el ámbito de la ciberseguridad, especialmente por grandes empresas y compañías destinadas a monitorizar sistemas y redes altamente críticos. Sin embargo, desde el punto de vista de un atacante, los permisos otorgados a los SIEM sobre sistemas y cuentas de redes corporativas son elevados. Además, el acceso administrativo a los SIEM puede utilizarse para obtener ejecución de código en el servidor donde está instalado dicho SIEM, y a veces también en las máquinas cliente, considerando que un SIEM recolecta eventos de servidores como Active Directory, servidores AWS, bases de datos y dispositivos de red (por ejemplo, firewalls y routers).
Durante nuestra investigación, detectamos una gran cantidad de vectores de ataque que podrían utilizarse sobre los distintos SIEM para comprometerlos, por ejemplo:
• Obtener cuentas de usuario y contraseñas almacenadas en el SIEM de sistemas críticos (servidores LDAP/AD, bases de datos, dispositivos de red, servidores AWS).
• Desarrollar e instalar aplicaciones maliciosas como reverse shells de Windows/Linux, bind shells de Windows/Linux o scripts maliciosos con el objetivo de comprometer el servidor donde está instalado el SIEM.
• Desarrollar e instalar aplicaciones maliciosas como reverse shells de Windows/Linux, bind shells de Windows/Linux o scripts maliciosos con el objetivo de comprometer las máquinas desde las cuales el SIEM recolecta eventos.
• Crear y aplicar acciones o notificaciones maliciosas que permitan ejecutar comandos cuando ocurra un evento determinado, por ejemplo con el propósito de obtener una reverse shell en el servidor donde está instalado el SIEM.
• Aprovechar contraseñas por defecto y debilidades del SIEM en la configuración de las imágenes OVA para obtener credenciales de administrador del servidor, la base de datos o incluso la propia interfaz web del SIEM.
• Realizar ataques de diccionario o ataques de fuerza bruta contra la interfaz web o de administración, o contra el software cliente del SIEM, para obtener credenciales de administrador.
• Leer archivos arbitrarios del servidor donde está instalado el SIEM.
• Obtener información de configuración del SIEM y otros parámetros relevantes para realizar más ataques.
Sobre la base de los resultados de la investigación, se desarrolló la herramienta Open Source SIEMs Framework. Es una herramienta modular desarrollada en Python3 por el equipo de Innovación y Laboratorio de ElevenPaths. Permite automatizar ataques potenciales a varios SIEM existentes en el mercado (tanto comerciales como de código abierto).
SIEMs Framework soporta múltiples payloads de ataque que pueden seleccionarse según el SIEM a atacar y su sistema operativo. Hay payloads disponibles en PowerShell, Python, Bash, Exe y más formatos. Una vez ejecutado el ataque seleccionado, la herramienta muestra los resultados en pantalla y es posible regresar y ejecutar cualquier otro ataque sobre el mismo SIEM o seleccionar otro SIEM para comprometer. Tiene una interfaz simple, fácil de usar e intuitiva. Actualmente puede utilizarse con los siguientes SIEM: Splunk, Graylog y OSSIM.
SIEMs Framework puede descargarse desde nuestro Github descargando el archivo .zip o clonando el repositorio, y presenta los siguientes requisitos que pueden instalarse mediante pip3 install -r requirements.txt:
• splunk-sdk
• requests
• python-nmap
• colorama
• pandas
• paramiko
• pymongo
• qradar4py
• requests_mock
• urllib3
Una vez instalados los requisitos, la herramienta puede usarse de la siguiente manera: python3 ./siemsframework.py
Cuando se ejecuta la herramienta, se muestra el menú principal, y allí debe seleccionar si desea escanear una IP específica donde haya un SIEM o una red para detectar los SIEM dentro de ella. Para escanear y detectar el SIEM dentro de una dirección IP específica debe usar la opción 1, y para escanear la red la opción 2.
Al seleccionar la opción 1 "Escanear y detectar SIEM", la herramienta solicita la dirección IP para poder escanear los puertos específicos de los SIEM soportados y conectarse a la interfaz web o de gestión para verificar que realmente es un SIEM.
Una vez detectado el SIEM siguiendo los métodos anteriores, la herramienta muestra el SIEM detectado en rojo y le da la opción de lanzar el módulo de ataque de ese SIEM.
Al seleccionar la opción 2 "Encontrar SIEM en la red", la herramienta solicita la red a escanear en notación CIDR, por ejemplo: 192.168.137.0/24. Una vez ingresada la información, SIEMs Framework realiza primero un descubrimiento para detectar los sistemas activos; luego, escanea los puertos por defecto de los SIEM soportados, y finalmente se conecta a la interfaz web o de gestión de cada uno de esos sistemas para verificar que realmente es un SIEM.
Una vez detectados los SIEM siguiendo los métodos anteriores, la herramienta muestra los SIEM detectados en rojo y solicita la dirección IP del SIEM a atacar.
Al ingresar "y" y seleccionar el lanzamiento de los módulos de ataque de Splunk, la herramienta muestra todos los posibles ataques a realizar contra este SIEM. Para los primeros dos ataques no se requieren credenciales, pero para el quinto se necesitan privilegios de administrador de Splunk.
Este módulo de ataque contiene un diccionario específico para Splunk llamado dict.txt, compuesto por las 100 contraseñas más usadas de 2018 y varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desee usar cualquier otra lista diferente a la mencionada, /splunk/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo. La política de contraseñas de Splunk no se aplica a usuarios con rol de administrador, por lo que las restricciones sobre contraseñas o bloqueo de cuentas por intentos de acceso fallidos no aplican. Antes de iniciar el ataque de diccionario, la herramienta verifica si el Splunk a analizar tiene la versión Free que no utiliza ningún tipo de autenticación, o si aún conserva la contraseña por defecto "changeme" de las versiones más antiguas de este software:
En caso de que el servidor Splunk a analizar tenga la interfaz web activa, este módulo permite obtener información del servidor y de la sesión desde la propia interfaz web sin necesidad de autenticarse. 8000 es el puerto por defecto de la interfaz web de Splunk; para usar este módulo es necesario conocer e ingresar el puerto donde está publicada la interfaz web.
Este módulo puede usarse en el servidor Splunk o en el Universal Forwarder. Para usarlo, se necesitan credenciales de administrador de Splunk, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (1er ataque). El resultado del módulo es la información de la instalación actual de Splunk: versión, sistema operativo, configuraciones de Splunk y más.
Este módulo se usa solo en servidores Splunk. Para usarlo, se necesitan credenciales de administrador de Splunk, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (1er ataque). El resultado del módulo son todas las credenciales almacenadas por las aplicaciones utilizadas en Splunk para conectarse a los dispositivos de los cuales se obtienen eventos.
Este módulo puede usarse en servidores Splunk Linux. Para usarlo, se necesitan credenciales de administrador de Splunk, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (1er ataque). El módulo utiliza un índice para cargar el archivo en cuestión, y su resultado es el contenido del archivo /etc/shadow del servidor donde está instalado Splunk.
Este módulo estará disponible en la próxima versión de SIEMs Framework. Para comprometer Universal Forwarders, hasta ahora se puede realizar el ataque 1 para obtener credenciales y luego el ataque 7 para instalar aplicaciones maliciosas según la plataforma.
Este módulo de ataque permite desarrollar e instalar en Splunk una aplicación maliciosa diseñada para comprometer el sistema en cuestión. Primero, se debe seleccionar el tipo de payload según el sistema operativo y el tipo de Splunk a atacar (Splunk Server o Universal Forwarder). Puede usar Reverse Shell o Bind Shell de Python para Linux para Splunk Server o UF; Reverse Shell o Bind Shell de Python para Windows para Splunk Server (donde Python está instalado por defecto); y Bind Shell ejecutable o un script para agregar un usuario administrador en Universal Forwarders de Windows (donde Python no está instalado por defecto). Luego, se debe ingresar el nombre de usuario, la contraseña de administrador de Splunk y la dirección IP del atacante.
Al ingresar "y" y seleccionar el lanzamiento de los módulos de ataque de Graylog, la herramienta muestra todos los posibles ataques a realizar contra este SIEM. Para los primeros tres ataques no se requieren credenciales, pero para el cuarto se necesitan privilegios de administrador de Graylog.
Este módulo de ataque contiene un diccionario específico para Graylog llamado dict.txt, compuesto por las 100 contraseñas más usadas de 2018 y varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desee usar cualquier otra lista diferente a la mencionada, /graylog/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo.
Este módulo de ataque verifica si el Graylog a analizar tiene credenciales por defecto en la interfaz web de Graylog (admin/admin), así como si tiene credenciales por defecto para conectarse al sistema por consola o SSH (ubuntu/ubuntu). Este par de credenciales están configuradas por defecto en las máquinas virtuales de Graylog, tanto en OVA como en AMI.
Este módulo de ataque verifica si el Graylog a analizar tiene la base de datos MongoDB configurada sin autenticación. En tal caso, se conecta a MongoDB y obtiene información de configuración, credenciales LDAP (dependiendo de la versión actual de Graylog pueden estar en texto plano o cifradas) y claves de acceso y secretas configuradas en el plugin de AWS. En caso de que esté cifrado, la clave de usuario LDAP está cifrada con AES CBC. La clave son los primeros 16 bits del campo password_secret, ubicado en el archivo de configuración server.conf, o graylog.conf en instalaciones estándar; o el campo secret_token ubicado en el archivo graylog-secrets.json en instalaciones OVA; el IV es la salt mostrada en pantalla.
Este módulo de ataque obtiene información de configuración y credenciales para LDAP y AWS en texto plano desde la API REST de Graylog. Para usar este módulo se necesitan credenciales de administrador de Graylog.
Al ingresar "y" y seleccionar el lanzamiento de los módulos de ataque de OSSIM, la herramienta muestra todos los posibles ataques a realizar contra este SIEM. Para el primer ataque no se requieren credenciales, pero para los siguientes se necesitan credenciales de administrador de OSSIM.
Este módulo de ataque contiene un diccionario específico para OSSIM llamado dict.txt, compuesto por las 100 contraseñas más usadas de 2018 y varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desee usar cualquier otra lista diferente a la mencionada, /ossim/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo.
Este módulo de ataque permite obtener información de configuración del servidor OSSIM. Para usarlo, se necesitan credenciales de administrador de OSSIM, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (1er ataque). El resultado del módulo es la información de configuración relevante de la instalación actual: usuarios definidos, parámetros de inicio de sesión incluyendo configuraciones LDAP y políticas de contraseñas.
Este módulo de ataque permite obtener una reverse shell desde el servidor OSSIM hacia el sistema del atacante. Para usarlo, se necesitan credenciales de administrador de OSSIM, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (1er ataque). El módulo desarrolla una acción maliciosa que se conectará vía netcat al sistema del atacante. Luego, activa una nueva política que usa dicha acción para alertar en caso de que ocurra algún evento de seguridad, y este evento se desencadena mediante un intento fallido de inicio de sesión SSH al servidor OSSIM. Como consecuencia, se obtiene una reverse shell desde el servidor OSSIM hacia el sistema del atacante en el puerto 12345 con privilegios de root.
Al ingresar "y" y seleccionar el lanzamiento de los módulos de ataque de QRadar, la herramienta muestra todos los posibles ataques a realizar contra este SIEM. Para los primeros dos ataques no se requieren credenciales, pero para los siguientes se necesitan credenciales de administrador de QRadar o una clave de API.
Este módulo de ataque contiene un diccionario específico para QRadar llamado dict.txt, compuesto por las 100 contraseñas más usadas de 2018 y varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desee usar cualquier otra lista diferente a la mencionada, /qradar/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo. Este ataque es muy lento porque QRadar tiene una protección que solo permite 5 intentos cada 30 minutos.
Este módulo de ataque contiene un diccionario específico para QRadar llamado apikeys.txt, compuesto por 1000 opciones diferentes de claves de API que mantienen la estructura requerida en este SIEM. En caso de que desee usar cualquier otra lista diferente a la mencionada, /qradar/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo. El programa le da la opción de crear el archivo con claves de API aleatorias.
Este módulo de ataque nos permite obtener la configuración del servidor mediante el uso de una clave de API. Para usarlo, se necesita una clave de API de administrador de QRadar, la cual puede obtenerse, por ejemplo, mediante un ataque de diccionario (2do ataque). El resultado del módulo es la información de configuración relevante de la instalación actual: usuarios definidos, jerarquía de red y hosts de despliegue.
Este módulo de ataque nos permite obtener la lista de usuarios guardada en la base de datos Ariel. Para usarlo, se necesita una clave de API de administrador de QRadar, la cual puede obtenerse, por ejemplo, mediante un ataque de diccionario (2do ataque). El resultado del módulo es la información relevante de los usuarios que han tenido contacto con la base de datos Ariel.
Al ingresar "y" y seleccionar el lanzamiento de los módulos de ataque de McAfee, la herramienta muestra todos los posibles ataques a realizar contra este SIEM. Para el primer ataque no se requieren credenciales, pero para los siguientes se necesitan credenciales de administrador de McAfee.
Este módulo de ataque contiene un diccionario específico para McAfee llamado dict.txt, compuesto por 7000 contraseñas creadas aleatoriamente con varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desee usar cualquier otra lista diferente a la mencionada, /mcafee/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo. Este ataque es muy lento porque McAfee tiene una protección que solo permite 3 intentos cada 10 minutos.
Este módulo de ataque contiene un diccionario específico para McAfee llamado dict.txt, compuesto por 7000 contraseñas creadas aleatoriamente con varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desee usar cualquier otra lista diferente a la mencionada, /mcafee/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo.
Este módulo de ataque nos permite obtener la configuración del servidor mediante el uso de credenciales de administrador. Para usarlo, se necesitan credenciales de administrador SSH, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (2do ataque). El resultado del módulo es la información de configuración relevante de la instalación actual: servidor de nombres en la red, servicios activos, configuración de red y configuración del firewall.
Este módulo de ataque nos permite obtener la configuración del servidor mediante el uso de credenciales de administrador. Para usarlo, se necesitan credenciales de administrador SSH, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (2do ataque). El resultado del módulo es la información de configuración relevante de la instalación actual: número de versión del SIEM, datos de disco duro, datos de RAM, datos del procesador, tiempo activo, estado de la próxima fecha de verificación, estado de la fecha de verificación de reglas y próxima fecha de copia de seguridad.
Este módulo de ataque nos permite obtener la configuración del servidor mediante el uso de credenciales de administrador. Para usarlo, se necesitan credenciales de administrador SSH, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (2do ataque). El resultado del módulo es la información relevante sobre los usuarios del sistema.
Al ingresar "y" y seleccionar el lanzamiento de los módulos de ataque de SIEMonster, la herramienta muestra todos los posibles ataques a realizar contra este SIEM. Para el primer ataque no se requieren credenciales, pero para los siguientes se necesitan credenciales de administrador de SIEMonster.
Este módulo de ataque contiene un diccionario específico para SIEMonster llamado dict.txt, compuesto por 7000 contraseñas creadas aleatoriamente con varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desee usar cualquier otra lista diferente a la mencionada, /siemonster/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo.
Este módulo de ataque nos permite obtener la configuración del servidor mediante el uso de credenciales de administrador. Para usarlo, se necesitan credenciales de administrador SSH, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (1er ataque). El resultado del módulo es la información de configuración relevante de la instalación actual: servidor de nombres en la red, contenedores Docker activos, lista de servicios activos, configuración de red y configuración del firewall.
Este módulo de ataque nos permite obtener la configuración del servidor mediante el uso de credenciales de administrador. Para usarlo, se necesitan credenciales de administrador SSH, las cuales pueden obtenerse, por ejemplo, mediante un ataque de diccionario (1er ataque). El resultado del módulo es la información relevante sobre los usuarios del sistema.### Módulos de Ataque de ElasticSIEM Al ingresar “y” y seleccionar el lanzamiento de los módulos de ataque de ElasticSIEM, la herramienta muestra todos los posibles ataques a realizar contra este SIEM. Para el primer ataque no se requieren credenciales, pero para los posteriores se necesitan credenciales de administrador de ElasticSIEM.
Este módulo de ataque contiene un diccionario específico para ElasticSIEM llamado dict.txt, que está compuesto por las 7000 contraseñas más usadas durante 2018 y varias permutaciones del nombre comercial del SIEM y su usuario administrador, en mayúsculas y minúsculas, y reemplazando vocales por números. En caso de que desees usar cualquier otra lista diferente a la mencionada anteriormente, /elasticsiem/dict.txt puede ser reemplazado por cualquier otra lista de palabras, siempre que se mantenga el nombre del archivo.
Este módulo de ataque nos permite obtener la configuración del servidor mediante el uso de credenciales de administrador. Para usarlo, se necesitan credenciales de administrador SSH, y se pueden obtener, por ejemplo, a través de un ataque de diccionario (1er ataque). El resultado del módulo es la información de configuración relevante de la instalación actual: servidor de nombres en la red, contenedores Docker activos, lista de servicios activos y configuración de red.
Por favor, reporta cualquier error abriendo un issue en GitHub. ¡Tu colaboración es muy apreciada!