Análise de Alertas do Snort

CibersegurançaBeginner
Pratique Agora

Introdução

O Snort é um poderoso Sistema de Detecção de Intrusão (IDS) de código aberto que monitora o tráfego de rede em tempo real e o compara com um conjunto de regras predefinidas. Quando uma atividade suspeita corresponde a uma regra, o Snort gera um alerta. Compreender como ler e interpretar esses alertas é uma habilidade fundamental para qualquer profissional de cibersegurança.

Gerar um alerta é apenas o início do fluxo de trabalho defensivo. Os analistas ainda precisam decidir se o evento é relevante, o que aconteceu na rede e se é necessária uma ação de acompanhamento. É por isso que a interpretação de alertas é tão importante quanto a criação de regras. Uma pilha de detecção robusta é inútil se os humanos não conseguirem ler e triar seus resultados com precisão.

Neste laboratório, você aprenderá a interagir com os alertas do Snort. Você iniciará o Snort com uma configuração personalizada, gerará tráfego de rede para acionar regras de detecção específicas e, em seguida, analisará os arquivos de log resultantes. O Snort pode gerar logs em vários formatos; focaremos no log fast (que fornece um resumo rápido de uma linha sobre o evento) e no log full (que inclui informações detalhadas do cabeçalho do pacote).

Acionar Múltiplas Regras

Nesta etapa, você iniciará o Sistema de Detecção de Intrusão Snort e gerará tráfego de rede para acionar as regras personalizadas que foram pré-configuradas para você.

Criar tráfego de teste conhecido como "bom" é um hábito padrão de engenharia de detecção. Se você sabe exatamente quais pacotes devem acionar quais regras, você tem uma base clara para validar se o pipeline de monitoramento está funcionando de ponta a ponta.

O ambiente foi configurado com duas regras simples do Snort: uma que detecta tráfego ICMP (Ping) e outra que detecta tráfego HTTP (web) na porta 80. Também criamos um arquivo de configuração personalizado em /etc/snort/custom.conf que instrui o Snort a salvar alertas em dois formatos diferentes: um log "fast" e um log "full".

Primeiro, inicie o Snort no modo daemon (segundo plano) usando o arquivo de configuração personalizado. A flag -D diz ao Snort para rodar em segundo plano, -c especifica o arquivo de configuração, -l especifica o diretório de log e -i eth0 diz ao Snort para escutar na interface de rede padrão.

sudo snort -c /etc/snort/custom.conf -l /var/log/snort -i eth0 -D

Você deverá ver uma mensagem indicando que o Snort foi inicializado e colocado em execução como daemon com sucesso.

Em seguida, gere algum tráfego de rede para acionar as regras. Enviaremos três pacotes de ping ICMP para um servidor DNS público (8.8.8.8) para acionar a regra ICMP.

ping -c 3 8.8.8.8

Agora, gere algum tráfego HTTP usando o comando curl para buscar uma página da web. Isso acionará a regra HTTP. Usamos > /dev/null para ocultar a saída HTML e não poluir seu terminal.

curl -s http://example.com > /dev/null

Por fim, aguarde um momento para que o Snort processe os pacotes e os grave nos arquivos de log. Você pode verificar se os arquivos de log foram criados listando o conteúdo do diretório de log do Snort.

sleep 2
ls -l /var/log/snort

Você deverá ver fast_alert.log e full_alert.log na saída, indicando que o Snort detectou o tráfego com sucesso e gerou os alertas.

total 8
-rw-r--r-- 1 root root  345 Sep 15 10:00 fast_alert.log
-rw-r--r-- 1 root root 1250 Sep 15 10:00 full_alert.log

Analisar o Log Rápido (Fast Log)

Nesta etapa, você examinará o arquivo fast_alert.log. O formato de alerta "fast" foi projetado para ser conciso e de fácil leitura. Ele registra as informações mais críticas sobre um alerta em uma única linha, tornando-o ideal para revisões rápidas ou para análise por scripts automatizados.

Este é o formato com o qual muitos analistas interagem primeiro, pois a triagem geralmente começa de forma ampla. Você quer saber o que foi disparado, quando foi disparado e quais endpoints estavam envolvidos antes de decidir se detalhes mais profundos do pacote são necessários.

Use o comando cat para exibir o conteúdo do arquivo de log rápido.

cat /var/log/snort/fast_alert.log

Sua saída será semelhante a esta:

09/15-10:00:01.123456  [**] [1:1000001:1] ICMP Ping Detected [**] {ICMP} 192.168.1.10 -> 8.8.8.8
09/15-10:00:01.123456  [**] [1:1000001:1] ICMP Ping Detected [**] {ICMP} 8.8.8.8 -> 192.168.1.10
09/15-10:00:05.654321  [**] [1:1000002:1] HTTP Traffic Detected [**] {TCP} 192.168.1.10:45678 -> 93.184.216.34:80

Vamos detalhar os componentes de uma linha de alerta rápido:

  • Timestamp: 09/15-10:00:01.123456 mostra a data e a hora exatas em que o pacote foi capturado.
  • Gerador, SID e Revisão: [1:1000001:1] representa o ID do Gerador (1 significa que é uma regra padrão do Snort), o ID do Snort (SID) que identifica exclusivamente a regra (1000001) e o número da Revisão da regra (1).
  • Mensagem: ICMP Ping Detected é a mensagem legível por humanos definida na regra.
  • Protocolo: {ICMP} ou {TCP} indica o protocolo de rede utilizado.
  • Origem e Destino: 192.168.1.10:45678 -> 93.184.216.34:80 mostra o IP e a porta de origem, uma seta indicando a direção do tráfego e o IP e a porta de destino.

Ao ler este log, um analista de segurança pode determinar rapidamente quem está atacando (IP de Origem), qual é o alvo (IP e Porta de Destino) e que tipo de ataque é suspeito (Mensagem).

Inspecionar Dumps Completos de Pacotes

Embora o log rápido seja ótimo para uma visão geral, ele carece dos detalhes técnicos profundos necessários para uma investigação completa. Nesta etapa, você examinará o arquivo full_alert.log.

O log completo suporta uma pergunta diferente: não apenas "qual alerta foi disparado?", mas "como era o pacote que disparou o alerta?". Esse contexto mais profundo ajuda os analistas a validar alertas, entender o comportamento do protocolo e investigar possíveis falsos positivos ou tentativas de evasão.

O formato de alerta "full" inclui as informações completas do cabeçalho do pacote. Isso permite que os analistas inspecionem detalhes como o Time to Live (TTL), Type of Service (TOS), comprimento do pacote e flags TCP, que podem ser cruciais para entender a natureza de um ataque ou identificar falsos positivos.

Como o log completo contém várias linhas por alerta, ele pode ser bastante longo. Use o comando head para visualizar as primeiras 30 linhas do arquivo, o que mostrará os detalhes dos primeiros alertas.

head -n 30 /var/log/snort/full_alert.log

Sua saída será semelhante a esta:

[**] [1:1000001:1] ICMP Ping Detected [**]
09/15-10:00:01.123456 192.168.1.10 -> 8.8.8.8
ICMP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:84 DF
Type:8  Code:0  ID:15  Seq:1  ECHO
...
[**] [1:1000002:1] HTTP Traffic Detected [**]
09/15-10:00:05.654321 192.168.1.10:45678 -> 93.184.216.34:80
TCP TTL:64 TOS:0x0 ID:54321 IpLen:20 DgmLen:60 DF
******S* Seq: 0x1A2B3C4D  Ack: 0x0  Win: 0xFAF0  TcpLen: 40

Observe os detalhes adicionais fornecidos no log completo:

  • Informações do Cabeçalho IP: TTL:64 (Time to Live), TOS:0x0 (Type of Service), ID:12345 (Identificação IP) e DgmLen:84 (Comprimento do Datagrama).
  • Especificidades ICMP: Type:8 Code:0 indica uma solicitação de eco ICMP (um ping padrão).
  • Especificidades TCP: ******S* representa as flags TCP definidas no pacote (neste caso, a flag SYN está definida, indicando o início de uma conexão). Ele também mostra números de sequência (Seq), números de confirmação (Ack) e tamanho da janela (Win).

Ao analisar esses dumps completos de pacotes, você pode obter uma compreensão muito mais profunda do tráfego de rede que acionou o alerta do IDS.

Resumo

Neste laboratório, você configurou e executou com sucesso o Sistema de Detecção de Intrusão Snort para monitorar o tráfego de rede. Você aprendeu como acionar regras de detecção personalizadas gerando tipos específicos de tráfego de rede, como pings ICMP e solicitações HTTP. Além disso, você explorou as diferenças entre os logs de alerta fast e full do Snort, ganhando experiência prática na leitura e interpretação das informações críticas que eles contêm, desde IPs básicos de origem e destino até flags detalhadas de cabeçalho de pacotes. Essas habilidades são essenciais para monitorar a segurança da rede de forma eficaz e responder a ameaças potenciais.