Melhore a análise de segurança com o Elastic Stack, Wazuh e IDS
O Elastic Stack fornece recursos de análise de segurança que são amplamente usados para detecção de ameaças, visibilidade e resposta a incidentes. A velocidade e escala com que o Elasticsearch pode indexar e pesquisar informações relativas à segurança permitem que os analistas de segurança trabalhem com mais eficiência, enquanto os painéis Kibana oferecem ampla visibilidade e permitem busca interativa de ameaças. E o motor de aprendizado de máquina pode automatizar a análise de conjuntos de dados complexos, possibilitando identificar invasores que de outro modo passariam despercebidos.
Os conhecidos IDSs (sistemas de detecção de invasão), como Wazuh ou Suricata, usam uma abordagem baseada em assinaturas à detecção de ameaças. Isso significa que eles comparam padrões encontrados em arquivos, logs e tráfego de rede com um banco de dados de padrões notadamente associado a atividade maligna, alertando quando é encontrada uma coincidência. Eles fornecem conjuntos de regras úteis para analisar e correlacionar dados, normalmente gerando milhares ou milhões de alertas por dia em um ambiente de produção.
Considerar várias opções pode garantir que todos os potenciais eventos de segurança sejam tratados, mas também aumenta o trabalho de vasculhar entre milhares (talvez milhões) de alertas diariamente. Os recursos de aprendizado de máquina do Elastic ajudam a reduzir esse problema identificando automaticamente comportamentos anormais. Esse é um evidente caso de uso em que as tecnologias baseadas em anomalias e em assinaturas são complementares entre si, tornando a detecção de ameaças mais fácil e as investigações mais eficientes.
O Wazuh, normalmente implementado juntamente com o Elastic Stack, é um sistema HIDS (sistema de detecção de invasões baseado em host) de código-fonte aberto. Ele oferece recursos de análise de log, monitoramento de integridade de arquivos, detecção de rootkit e vulnerabilidade, avaliação de configuração e resposta a incidentes. A arquitetura de solução do Wazuh tem como base agentes leves multiplataforma que são executados em sistemas monitorados, gerando relatórios para um servidor centralizado no qual é feita a análise dos dados. Além disso, ele fornece um plugin Kibana completo para gerenciamento de configurações, monitoramento de status, consultas e visualização de dados de alertas.
Em contrapartida, o Suricata é um motor de detecção de ameaças de rede gratuito e de código-fonte aberto, com capacidade de NIDS (detecção de invasões de rede em tempo real), NIPS (prevenção de invasões em linha), NSM (monitoramento de segurança de rede) e processamento pcap offline. O Suricata inspeciona o tráfego de rede usando suas próprias regras e linguagem de assinatura para procurar ameaças conhecidas, violações a políticas e comportamentos malignos, além de oferecer suporte a scripts para detecção de ameaças complexas.
Nesta postagem de blog, forneceremos uma visão geral de como detectar invasões usando uma integração do Wazuh e Suricata em combinação com os trabalhos de aprendizado de máquina do Elastic para ajudar a priorizar as investigações.
Integração do Wazuh, do Suricata e do Elastic Stack
Para a finalidade desta postagem de blog, configuramos um ambiente de laboratório em que agentes Wazuh foram implementados em vários servidores de contato com a Internet, monitorando dados de log de aplicativo e sistema, integridade de arquivos e chamadas de sistema.
Além disso, estamos executando um sensor do Suricata que cuida do monitoramento do tráfego de rede. Esse sensor geralmente é configurado para monitorar o tráfego via tap de rede, porta de espelhamento ou porta SPAN (analisador de porta em switch), mas também pode ser implementado diretamente em nossos servidores.
Para aproveitar ao máximo essas duas ferramentas, decidimos analisar os alertas do Suricata usando regras do Wazuh, unificando o formato dos alertas e nos permitindo fazer a correlação (por exemplo, com fontes de inteligência de ameaças) e disparar respostas automáticas.
Essa integração foi feita configurando um agente Wazuh para ler saída JSON do Suricata. Esse agente atua como um coletor que encaminha os alertas NIDS do Suricata ao servidor Wazuh, em que eles são processados através de regras de análise de log do Wazuh, resultando em novos eventos de segurança enriquecidos.
Agora, como resultado desse trabalho, tanto os alertas NIDS quanto os HIDS são enviados ao Elasticsearch via Filebeat (configurado para ler alertas do Wazuh) e Logstash (também usado para enriquecimento de geolocalização), em que usamos trabalhos de aprendizado de máquina para detectar anomalias e comportamentos anormais.
A seguir está um exemplo de uma implantação das tecnologias IDS baseadas em rede e em host, integradas juntamente com o Elastic Stack:
Detecção de atores malignos usando trabalhos de aprendizado de máquina
Em nosso ambiente de laboratório, habilitamos todas as regras e constatamos que, para apenas um dos nossos servidores Web de contato com a Internet, nosso agente Wazuh está gerando relatórios de 4 mil a 10 mil alertas IDS por dia. Em sua maioria eles estão relacionados a ataques Web, falhas de autenticação, problemas de configuração (detectados usando verificações de hardening), alterações de integridade de arquivos ou software vulnerável.
Para facilitar o trabalho dos analistas de segurança, os alertas IDS do Wazuh são enriquecidos com metadados, como valor de nível ou grupo, possibilitando filtrar por prioridade ou tipo. Além disso, o plugin Kibana do Wazuh fornece painéis pré-configurados com informações úteis relacionadas a status do agente, configuração e alertas. Veja a captura de tela a seguir:
As informações fornecidas pelo Wazuh com certeza são úteis, mas elas ainda não indicam comportamentos anormais. É nesse momento que um trabalho de aprendizado de máquina do Elastic pode ajudar.
O aprendizado de máquina do Elastic permite criar vários tipos de “trabalhos”. O trabalho é o elemento básico da análise de aprendizado de máquina. Em nosso caso, decidimos criar o que é conhecido como “análise de população”, em que instruímos o motor de aprendizado de máquina a criar um modelo básico de comportamento típico de endereço IP durante um período de tempo, identificando aqueles com comportamento anormal em comparação com o restante da população.
Mais especificamente, em nosso caso queríamos procurar endereços IP de origem que, quando em comparação com todos os outros endereços IP, geram respostas para um número absurdamente alto de tipos de alertas. Isso não pode ser feito apenas criando tabelas de agregação, porque as anomalias ocorreram em um determinado momento, desconhecido pelo nosso analista de segurança, e temos mais de 60 dias de dados de alerta (detectamos alguns ataques para os quais a duração foi de no máximo dois minutos).
Como resultado de nossa análise de população, identificamos vários comportamento anormais (na forma de uma lista de endereços IP de origem), que decidimos investigar. Usamos o “Anomaly Explorer” para saber quando cada um desses possíveis atores malignos estava atacando nosso ambiente.
Investigação de uma tentativa de invasão
Como exemplo de análise de segurança, destacamos a investigação de um dos endereços IP identificados pelo trabalho de aprendizado de máquina. Esse endereço IP específico gerou vários alertas NIDS e HIDS em menos de um minuto, disparando uma ação Wazuh automatizada que bloqueia o endereço IP no firewall local do nosso servidor Web.
Conforme mostrado na captura de tela anterior, o NIDS do Suricata detectou tráfego maligno partindo do endereço IP de origem indicado. Quatro regras coincidiram com o tráfego de entrada, gerando os seguintes alertas:
- ET DROP Dshield Block Listed Source group 1
- ET CINS Active Threat Intelligence Poor Reputation IP group 77
- SURICATA HTTP URI terminated by non-compliant character
- SURICATA HTTP METHOD terminated by non-compliant character
As duas primeiras regras, que fazem parte do conjunto de regras Emerging Threats, indicam que o endereço IP de origem é conhecido por ter uma baixa reputação de acordo com fontes de inteligência de ameaças: inteligência de ameaças Dshield e Active.
Além disso, duas outras assinaturas detectaram atividade HTTP anômala partindo do mesmo endereço IP de origem, mais provavelmente parte de uma etapa de varredura em que o invasor coleta informações procurando potenciais vulnerabilidades.
O componente HIDS do Wazuh também disparou diferentes alertas com base na análise dos logs de acesso do servidor Web. Essa abordagem, totalmente diferente da inspeção de pacotes de rede, acabou gerando os seguintes alertas:
- IP address found in AlienVault reputation database
- Host Blocked by firewall-drop.sh Active Response
- Host Unblocked by firewall-drop.sh Active Response
O primeiro alerta indica que o endereço IP de origem também é conhecido como parte de outra fonte de inteligência de ameaça: Banco de dados de reputação IP AlienVault OTX.
Os outros dois alertas são disparados pelo módulo Active Response do Wazuh que, como resultado dos alertas previamente mencionados, adicionaram automaticamente uma regra de firewall para bloquear o tráfego partindo desse endereço IP de origem específico durante exatamente 60 segundos (valor configurável). Essa ação foi suficiente para bloquear atividades de varredura e fez o ator maligno desistir da tentativa de invasão.
Conclusão
O emprego da detecção de invasões baseada tanto em assinaturas quanto em anomalias, por meio de tecnologias como Wazuh, Suricata e aprendizado de máquina do Elastic, pode tornar a detecção de ameaças mais fácil e as investigações mais eficientes.
Além disso, a integração de IDS baseado em host (usado para monitorar sistema no nível do host) com IDS baseado em rede (usado para inspecionar o tráfego de rede) também pode aumentar a detecção de ameaças e a visibilidade da segurança. O Wazuh facilita essa tarefa porque ele pode ser usado para integrar sistemas IDS baseado em host e em rede com o Elastic Stack, além de fornecer um mecanismo para executar respostas automatizadas e bloquear ataques em tempo real.