
Framework de ataque modular em Python3 para automatizar a exploração de plataformas SIEM (Splunk, Graylog, OSSIM, QRadar, McAfee) através de roubo de credenciais, implantação de payload e módulos de pós-exploração.
MultiSIEM Modular Python3 Attack Framework
Por ElevenPaths https://www.elevenpaths.com/
Uso: python3 ./siemsframework.py
SIEMs são ferramentas defensivas cada vez mais utilizadas no campo da cibersegurança, especialmente por grandes empresas e companhias que monitoram sistemas e redes altamente críticos. No entanto, do ponto de vista de um atacante, as permissões concedidas aos SIEMs em sistemas e contas de redes corporativas são altas. Além disso, o acesso administrativo aos SIEMs pode ser usado para obter execução de código no servidor onde tal SIEM está instalado, e às vezes também em máquinas clientes, considerando que um SIEM coleta eventos como servidores Active Directory, servidores AWS, bancos de dados e dispositivos de rede (por exemplo, Firewalls e Roteadores).
Durante nossa investigação, detectamos uma grande quantidade de vetores de ataque que podem ser usados nos vários SIEMs para comprometê-los, por exemplo:
• Obter contas de usuário e senhas armazenadas no SIEM de sistemas críticos (servidores LDAP/AD, bancos de dados, dispositivos de rede, servidores AWS).
• Desenvolver e instalar aplicações maliciosas como reverse shells Windows/Linux, bind shells Windows/Linux ou scripts maliciosos com o objetivo de comprometer o servidor onde o SIEM está instalado.
• Desenvolver e instalar aplicações maliciosas como reverse shells Windows/Linux, bind shells Windows/Linux ou scripts maliciosos com o objetivo de comprometer as máquinas das quais o SIEM coleta eventos.
• Criar e aplicar ações ou notificações maliciosas que permitam executar comandos quando um determinado evento ocorrer, por exemplo com o propósito de obter uma reverse shell no servidor onde o SIEM está instalado.
• Aproveitar senhas padrão e fraquezas do SIEM nas configurações das imagens OVA para obter credenciais de administrador do servidor, banco de dados ou até mesmo da interface web do SIEM.
• Realizar ataques de dicionário ou ataques de força bruta contra a interface web ou administrativa, ou contra o software cliente do SIEM, para obter credenciais de administrador.
• Ler arquivos arbitrários do servidor onde o SIEM está instalado.
• Obter informações de configuração do SIEM e outros parâmetros relevantes para realizar ataques adicionais.
Com base nos resultados da investigação, foi desenvolvida a ferramenta Open Source SIEMs Framework. É uma ferramenta modular desenvolvida em Python3 pela equipe de Inovação e Laboratório da ElevenPaths. Ela permite automatizar potenciais ataques a vários SIEMs existentes no mercado (tanto comerciais quanto open source).
O SIEMs Framework suporta múltiplos payloads de ataque que podem ser selecionados de acordo com o SIEM a ser atacado e seu sistema operacional. Existem payloads disponíveis em PowerShell, Python, Bash, Exe e mais formatos. Uma vez executado o ataque selecionado, a ferramenta mostra os resultados na tela e é possível retornar e executar qualquer outro ataque no mesmo SIEM ou selecionar outro SIEM para comprometer. Possui uma interface simples, fácil de usar e intuitiva. Atualmente pode ser usado com os seguintes SIEMs: Splunk, Graylog e OSSIM.
O SIEMs Framework pode ser baixado do nosso Github baixando o arquivo .zip ou clonando o repositório, e apresenta os seguintes requisitos que podem ser instalados através de pip3 install -r requirements.txt:
• splunk-sdk
• requests
• python-nmap
• colorama
• pandas
• paramiko
• pymongo
• qradar4py
• requests_mock
• urllib3
Uma vez instalados os requisitos, a ferramenta pode ser usada da seguinte forma: python3 ./siemsframework.py
Quando a ferramenta é executada, o menu principal é exibido, e lá você deve selecionar se deseja escanear um IP específico onde haveria um SIEM ou uma rede para detectar os SIEMs dentro dela. Para escanear e detectar o SIEM dentro de um endereço IP específico você deve usar a opção 1, e para escanear a rede a opção 2.
Ao selecionar a opção 1 “Scan and Detect SIEM”, a ferramenta solicita o endereço IP para escanear as portas específicas dos SIEMs suportados e conectar-se à interface web ou de gerenciamento para verificar que é realmente um SIEM.
Uma vez detectado o SIEM seguindo os métodos acima, a ferramenta mostra o SIEM detectado em vermelho e oferece a opção de lançar o módulo de ataque daquele SIEM.
Ao selecionar a opção 2 “Find SIEMs on the network” a ferramenta solicita a rede a ser escaneada em notação CIDR, por exemplo: 192.168.137.0/24. Uma vez inserida a informação, o SIEMs Framework realiza primeiramente uma descoberta para detectar os sistemas ativos; em seguida, as portas padrão dos SIEMs suportados são escaneadas, e finalmente ele se conecta à interface web ou de gerenciamento de cada um desses sistemas para verificar que é realmente um SIEM.
Uma vez detectados os SIEMs seguindo os métodos acima, a ferramenta mostra os SIEMs detectados em vermelho e solicita o endereço IP do SIEM a ser atacado.
Ao digitar “y” e selecionar o lançamento dos módulos de ataque Splunk, a ferramenta mostra todos os possíveis ataques a serem realizados contra este SIEM. Para os dois primeiros ataques não são necessárias credenciais, mas para o quinto são necessários privilégios de administrador do Splunk.
Este módulo de ataque contém um dicionário específico para Splunk chamado dict.txt, composto pelas 100 senhas mais usadas em 2018 e várias permutações do nome comercial do SIEM e seu usuário admin, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /splunk/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido. A política de senhas do Splunk não se aplica a usuários com função admin, portanto restrições quanto a bloqueio de conta devido a tentativas de acesso sem sucesso não se aplicam. Antes de iniciar o ataque de dicionário, a ferramenta verifica se o Splunk a ser analisado possui a versão Free que não utiliza nenhum tipo de autenticação, ou se ainda mantém a senha padrão “changeme” das versões mais antigas deste software:
Caso o servidor Splunk a ser analisado tenha a interface web ativa, este módulo permite obter informações do servidor e da sessão diretamente da interface web sem necessidade de autenticação. 8000 é a porta padrão da interface web do Splunk; para usar este módulo é necessário saber e informar a porta onde a interface web está publicada.
Este módulo pode ser usado no Splunk Server ou Universal Forwarder. Para usá-lo, são necessárias credenciais de administrador do Splunk, que podem ser obtidas por exemplo através de um ataque de dicionário (1º ataque). O resultado do módulo são as informações da instalação atual do Splunk: versão, sistema operacional, configurações do Splunk e mais.
Este módulo é usado apenas em servidores Splunk. Para usá-lo, são necessárias credenciais de administrador do Splunk, que podem ser obtidas por exemplo através de um ataque de dicionário (1º ataque). O resultado do módulo são todas as credenciais armazenadas pelos aplicativos usados no Splunk para conectar-se aos dispositivos dos quais os eventos são obtidos.
Este módulo pode ser usado no Splunk Server Linux. Para usá-lo, são necessárias credenciais de administrador do Splunk, que podem ser obtidas por exemplo através de um ataque de dicionário (1º ataque). O módulo usa um índice para carregar o arquivo em questão, e seu resultado é o conteúdo do arquivo /etc/shadow do servidor onde o Splunk está instalado.
Este módulo estará disponível na próxima versão do SIEMs Framework. Para comprometer Universal Forwarders, até o momento podem ser realizados o ataque 1 para obter credenciais e em seguida o ataque 7 para instalar aplicações maliciosas dependendo da plataforma.
Este módulo de ataque permite desenvolver e instalar no Splunk uma aplicação maliciosa projetada para comprometer o sistema em questão. Primeiramente, deve ser selecionado o tipo de payload a ser usado de acordo com o sistema operacional e o tipo de Splunk a atacar (Splunk Server ou Universal Forwarder). Você pode usar Linux Python Reverse ou Bind Shell para Splunk Server ou UF; Windows Python Reverse ou Bind Shell para Splunk Server (onde o Python está instalado por padrão); e Executable Bind Shell ou um script para adicionar um usuário admin no Windows Universal Forwarders (onde o Python não está instalado por padrão). Em seguida, devem ser informados o nome de usuário, a senha de administrador do Splunk e o endereço IP do atacante.
Ao digitar “y” e selecionar o lançamento dos módulos de ataque Graylog, a ferramenta mostra todos os possíveis ataques a serem realizados contra este SIEM. Para os três primeiros ataques não são necessárias credenciais, mas para o quarto são necessários privilégios de administrador do Graylog.
Este módulo de ataque contém um dicionário específico para Graylog chamado dict.txt, composto pelas 100 senhas mais usadas em 2018 e várias permutações do nome comercial do SIEM e seu usuário admin, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /graylog/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido.
Este módulo de ataque verifica se o Graylog a ser analisado possui credenciais padrão na interface web do Graylog (admin/admin), bem como se possui credenciais padrão para conectar-se ao sistema por console ou SSH (ubuntu/ubuntu). Este par de credenciais é configurado por padrão nos appliances de máquina virtual do Graylog, tanto em OVA quanto em AMI.
Este módulo de ataque verifica se o Graylog a ser analisado possui banco de dados Mongo DB configurado sem autenticação. Nesse caso, ele se conecta ao MongoDB e obtém informações de configuração, credenciais LDAP (dependendo da versão atual do Graylog podem estar em texto plano ou criptografadas) e chaves de acesso e secret configuradas no plugin AWS. Caso esteja criptografado, a chave do usuário LDAP é criptografada com AES CBC. A chave são os primeiros 16 bits do campo password_secret, localizado no arquivo de configuração server.conf, ou graylog.conf em caso de instalações padrão; ou o campo secret_token localizado no arquivo graylog-secrets.json em caso de instalações OVA; o IV é o salt exibido na tela.
Este módulo de ataque obtém informações de configuração e credenciais para LDAP e AWS em texto plano a partir da REST API do Graylog. Para usar este módulo são necessárias credenciais de administrador do Graylog.
Ao digitar “y” e selecionar o lançamento dos módulos de ataque OSSIM, a ferramenta mostra todos os possíveis ataques a serem realizados contra este SIEM. Para o primeiro ataque não são necessárias credenciais, mas para os subsequentes são necessárias credenciais de administrador do OSSIM.
Este módulo de ataque contém um dicionário específico para OSSIM chamado dict.txt, composto pelas 100 senhas mais usadas em 2018 e várias permutações do nome comercial do SIEM e seu usuário admin, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /ossim/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido.
Este módulo de ataque permite obter informações de configuração do servidor OSSIM. Para usá-lo, são necessárias credenciais de administrador do OSSIM, que podem ser obtidas por exemplo através de um ataque de dicionário (1º ataque). O resultado do módulo são as informações relevantes de configuração da instalação atual: usuários definidos, parâmetros de login incluindo configurações LDAP e políticas de senha.
Este módulo de ataque permite obter uma reverse shell do servidor OSSIM para o sistema do atacante. Para usá-lo, são necessárias credenciais de administrador do OSSIM, que podem ser obtidas por exemplo através de um ataque de dicionário (1º ataque). O módulo desenvolve uma ação maliciosa que será conectada via netcat ao sistema do atacante. Em seguida, dispara uma nova política que usa essa ação para alertar caso ocorra algum evento de segurança, e esse evento é acionado através de uma tentativa de login SSH mal-sucedida no servidor OSSIM. Consequentemente, uma reverse shell é obtida do servidor OSSIM para o sistema do atacante na porta 12345 com privilégios root.
Ao digitar “y” e selecionar o lançamento dos módulos de ataque QRadar, a ferramenta mostra todos os possíveis ataques a serem realizados contra este SIEM. Para os dois primeiros ataques não são necessárias credenciais, mas para os subsequentes são necessárias credenciais de administrador do QRadar ou chave de API.
Este módulo de ataque contém um dicionário específico para QRadar chamado dict.txt, composto pelas 100 senhas mais usadas em 2018 e várias permutações do nome comercial do SIEM e seu usuário admin, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /qradar/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido. Este ataque é muito lento porque o QRadar tem uma proteção que permite apenas 5 tentativas a cada 30 minutos.
Este módulo de ataque contém um dicionário específico para QRadar chamado apikeys.txt, composto por 1000 opções diferentes de chaves de API que mantêm a estrutura necessária neste SIEM. Caso deseje usar qualquer outra lista diferente da mencionada acima, /qradar/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido. O programa oferece a opção de criar o arquivo com chaves de API aleatoriamente.
Este módulo de ataque nos permite obter as configurações do servidor através do uso da chave de API. Para usá-lo, é necessária uma chave de API de administrador do QRadar, que pode ser obtida por exemplo através de um ataque de dicionário (2º ataque). O resultado do módulo são as informações relevantes de configuração da instalação atual: usuários definidos, hierarquia de rede e hosts de implantação.
Este módulo de ataque nos permite obter a lista de usuários que estão salvos no banco de dados Ariel. Para usá-lo, é necessária uma chave de API de administrador do QRadar, que pode ser obtida por exemplo através de um ataque de dicionário (2º ataque). O resultado do módulo são as informações relevantes de configuração dos usuários que tiveram contato com o banco de dados Ariel.
Ao digitar “y” e selecionar o lançamento dos módulos de ataque McAfee, a ferramenta mostra todos os possíveis ataques a serem realizados contra este SIEM. Para o primeiro ataque não são necessárias credenciais, mas para os subsequentes são necessárias credenciais de administrador do McAfee.
Este módulo de ataque contém um dicionário específico para McAfee chamado dict.txt, composto por 7000 senhas criadas aleatoriamente com várias permutações do nome comercial do SIEM e seu usuário admin, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /mcafee/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido. Este ataque é muito lento porque o McAfee tem uma proteção que permite apenas 3 tentativas a cada 10 minutos.
Este módulo de ataque contém um dicionário específico para McAfee chamado dict.txt, composto por 7000 senhas criadas aleatoriamente com várias permutações do nome comercial do SIEM e seu usuário admin, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /mcafee/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido.
Este módulo de ataque nos permite obter as configurações do servidor através do uso de credenciais de administrador. Para usá-lo, são necessárias credenciais de administrador SSH, que podem ser obtidas por exemplo através de um ataque de dicionário (2º ataque). O resultado do módulo são as informações relevantes de configuração da instalação atual: nameserver na rede, serviços ativos, configuração de rede e configuração de firewall.
Este módulo de ataque nos permite obter as configurações do servidor através do uso de credenciais de administrador. Para usá-lo, são necessárias credenciais de administrador SSH, que podem ser obtidas por exemplo através de um ataque de dicionário (2º ataque). O resultado do módulo são as informações relevantes de configuração da instalação atual: Número de release do SIEM, dados de hdd, dados de ram, dados de processador, tempo ativo, status da próxima data de verificação, status da data de verificação de regras e próxima data de backup.
Este módulo de ataque nos permite obter as configurações do servidor através do uso de credenciais de administrador. Para usá-lo, são necessárias credenciais de administrador SSH, que podem ser obtidas por exemplo através de um ataque de dicionário (2º ataque). O resultado do módulo são as informações relevantes sobre os usuários do sistema.
Ao digitar “y” e selecionar o lançamento dos módulos de ataque SIEMonster, a ferramenta mostra todos os possíveis ataques a serem realizados contra este SIEM. Para o primeiro ataque não são necessárias credenciais, mas para os subsequentes são necessárias credenciais de administrador do SIEMonster.
Este módulo de ataque contém um dicionário específico para SIEMonster chamado dict.txt, composto por 7000 senhas criadas aleatoriamente com várias permutações do nome comercial do SIEM e seu usuário admin, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /siemonster/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido.
Este módulo de ataque nos permite obter as configurações do servidor através do uso de credenciais de administrador. Para usá-lo, são necessárias credenciais de administrador SSH, que podem ser obtidas por exemplo através de um ataque de dicionário (1º ataque). O resultado do módulo são as informações relevantes de configuração da instalação atual: nameserver na rede, contêineres docker ativos, lista de serviços ativos, configuração de rede e configuração de firewall.
Este módulo de ataque nos permite obter as configurações do servidor através do uso de credenciais de administrador. Para usá-lo, são necessárias credenciais de administrador SSH, que podem ser obtidas por exemplo através de um ataque de dicionário (1º ataque). O resultado do módulo são as informações relevantes sobre os usuários do sistema.### Módulos de Ataque ElasticSIEM Ao inserir “y” e selecionar o lançamento dos módulos de ataque do ElasticSIEM, a ferramenta mostra todos os possíveis ataques a serem realizados contra este SIEM. Para o primeiro ataque não são necessárias credenciais, mas para os subsequentes são necessárias credenciais de administrador do ElasticSIEM.
Este módulo de ataque contém um dicionário específico para o ElasticSIEM chamado dict.txt, composto pelas 7000 senhas mais usadas em 2018 e várias permutações do nome comercial do SIEM e do seu usuário administrador, em letras maiúsculas e minúsculas, e substituindo vogais por números. Caso deseje usar qualquer outra lista diferente da mencionada acima, /elasticsiem/dict.txt pode ser substituído por qualquer outra lista de palavras, desde que o nome do arquivo seja mantido.
Este módulo de ataque permite obter a configuração do servidor através do uso de credenciais de administrador. Para usá-lo, são necessárias credenciais SSH de administrador, que podem ser obtidas, por exemplo, através de um ataque de dicionário (1º ataque). O resultado do módulo são as informações de configuração relevantes da instalação atual: servidor de nomes na rede, contêineres docker ativos, lista de serviços ativos e configuração de rede.
Por favor, reporte qualquer erro abrindo uma issue no GitHub. Sua colaboração é muito apreciada!