Snort 使用 snort.logs.xxxxxxx 查找警报文件数据

Snort 使用 snort.logs.xxxxxxx 查找警报文件数据

我正在执行一项任务,我的安全团队要求我提供文件夹 /var/log/snort 下的 pcap 文件。他们从警报文件中获取了源 IPADDRESS,他们需要对该源 IP 地址的 pcap 文件(即 snort.log.xxxxxxx)进行更多分析。

警报文件和 snort.log.xxxxx 文件位于同一文件夹中。如何向他们提供准确的 snort.log.xxxxx 文件以供分析?请提供一些命令或任何技术来执行此操作。我对这个领域很陌生,我正在处理 snort 正在转储日志的 Linux 机器(Centos 7)。

答案1

就像您说的,默认情况下,Snort 将以两种方式记录:

  1. alert文件 - 包含文本格式的警报元数据
  2. snort.log.##########- 触发警报的数据包的 PCAP

我执行此操作的方式(仅使用基本的 Linux Bash 命令)如下:

单一警报方法

查找警报条目:

搜索alert文件。您可以使用 按 IP 地址或按警报名称进行搜索grep

grep "PATTERN" /var/log/snort/alert

典型的日志条目行如下所示:

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

要查找相应的 PCAP 文件:

然后,为了确定哪个文件被写入,您可以查看长目录列表(ls -l)中的修改时间,也可以使用以下命令将时间戳(不要忘记添加年份并在日期和时间之间留一个空格)转换为纪元时间:

date "+%s" -d "01/04/2018 03:28:11.959559"

输出:

1515054491

然后查找名为 的文件snort.log.1515054491。该文件应该包含 PCAP 数据。

如果您需要针对一个 IP 地址记录多个日志

这是最强硬的方法。如果他们想要两个文件中只属于一个 IP 地址的条目,我会这样做:

警报文件条目

查找 IP 地址,然后将输出写入单独的文件。

grep "192.168.1.1" /var/log/snort > /tmp/alerts_192.168.1.1.txt

这应该只过滤出现 IP 地址的行并将其重定向到您可以提供给安全团队的新文件。

PCAP 文件

我会谨慎执行此操作,因为 snort 日志目录可能非常大,对一大组文件进行迭代可能会给系统带来压力(尤其是当传感器的流量非常大时)。我建议使用文件掩码来获取您要查找的数据的大致时间范围。请记住,这个时间范围需要采用纪元格式。

假设团队想要从现在开始追溯一个小时前(3600 秒)的所有数据。纪元时间戳为 1515054491。从中减去 3600 可得到 1515050891。

1515050891 - Start
1515054491 - End
151505???? - File mask (close enough)

然后,我将创建一个 for 循环来遍历所有这些文件,并执行 tcpdump 命令来仅过滤有问题的 IP 地址。

tcpdump -r infile -w outfile "BPF"

选项:

  • -r 表示从文件读取(而不是从界面开始实时捕获)
  • -w 用于将输出写入文件
  • “BPF”——伯克利数据包过滤器(在本例中,它将是“主机 192.168.1.1”来指定任何具有该 IP 的数据包。)

现在,for 循环:

cd /var/log/snort
for file in snort.log.151505????
do
    tcpdump -r $file -w /tmp/$file "host 192.168.1.1"
done

现在,您应该在文件夹中拥有所有警报文件的副本/tmp,但仅包含与该特定 IP 地址相关的数据。如果您已mergecap安装,我建议使用以下命令将所有这些合并为一个 PCAP 文件:

mergecap -w /tmp/snort_log_192.168.1.1.pcap /tmp/snort.log.*

您应该知道有两个文件/tmp

  • /tmp/alerts_192.168.1.1.txt
  • /tmp/snort_log_192.168.1.1.pcap

然后,将这些文件提供给您的安全团队。

相关内容