Como você disse, por padrão, o Snort registra duas maneiras:
-
alert
file - Contém metadados de alerta em formato de texto -
snort.log.##########
- PCAP do (s) pacote (s) que acionou o alerta
A maneira que eu iria fazer isso (com apenas comandos bash básicos do linux) seria:
A abordagem de alerta único
Para encontrar entradas de alerta:
Pesquise o arquivo alert
. Você pode pesquisar por endereço IP ou por nome de alerta usando grep
.
grep "PATTERN" /var/log/snort/alert
Uma linha típica de entrada de registro seria semelhante:
01/04-03:28:11.959559 [**] [1:1000001:1] Signature_Name [**] [Classification: Attempted User Privilege Gain] [Priority: 1] {TCP} 192.168.1.1:80 -> 192.168.1.128:39590
Para encontrar o arquivo PCAP correspondente:
Em seguida, para descobrir qual arquivo foi gravado, você pode consultar os horários modificados em uma longa listagem de diretórios ( ls -l
) ou converter o registro de data e hora (não se esqueça de adicionar o ano e colocar um espaço entre a data e a hora) para o horário de epoch usando o seguinte comando:
date "+%s" -d "01/04/2018 03:28:11.959559"
Saída:
1515054491
Em seguida, procure um arquivo chamado snort.log.1515054491
. Isso deve conter os dados do PCAP.
Se você precisar de vários registros para um endereço IP
Esta é a abordagem de marreta. Se eles quiserem entradas de ambos os arquivos pertencentes apenas a um único endereço IP, isso é o que eu faria:
Entradas do arquivo de alerta
Grep para o endereço IP e, em seguida, grave a saída em um arquivo separado.
grep "192.168.1.1" /var/log/snort > /tmp/alerts_192.168.1.1.txt
Isso deve apenas filtrar apenas as linhas em que o endereço IP aparece e redirecioná-lo para um novo arquivo que você possa fornecer à equipe de segurança.
arquivos PCAP
Eu teria cautela ao fazer isso, já que o diretório do snort log pode ser muito grande e iterar em um grande grupo de arquivos poderia sobrecarregar um sistema (especialmente se for um sensor com um volume de tráfego muito alto). Eu recomendaria usar uma máscara de arquivo para um período de tempo aproximado para os dados que você está procurando. Tenha em mente que esse período de tempo precisa estar no formato de época.
Digamos que a equipe queira tudo, desde agora, há uma hora (3600 segundos). Carimbo de data / hora da epoch é 1515054491. Subtraia 3600 disso e você obtém 1515050891.
1515050891 - Start
1515054491 - End
151505???? - File mask (close enough)
Eu criaria um loop for para iterar todos esses arquivos e executar um comando tcpdump para filtrar apenas o endereço IP em questão.
tcpdump -r infile -w outfile "BPF"
As opções:
- -r é para leitura de um arquivo (em oposição a iniciar uma captura ao vivo a partir de uma interface)
- -w é para saída de gravação em um arquivo
- "BPF" - Filtro de pacotes Berkley (Nesse caso, seria "host 192.168.1.1" para especificar quaisquer pacotes com esse IP.)
E agora, o loop for:
cd /var/log/snort
for file in snort.log.151505????
do
tcpdump -r $file -w /tmp/$file "host 192.168.1.1"
done
E agora, você deve ter uma cópia de todos os seus arquivos de alerta na pasta /tmp
, mas apenas com dados referentes a esse endereço IP específico. Se você tiver mergecap
instalado, recomendo combinar todos eles em um único arquivo PCAP usando o seguinte:
mergecap -w /tmp/snort_log_192.168.1.1.pcap /tmp/snort.log.*
Você deve saber ter dois arquivos em /tmp
:
- /tmp/alerts_192.168.1.1.txt
- /tmp/snort_log_192.168.1.1.pcap
Em seguida, forneça esses arquivos para sua equipe de segurança.