我正在执行一项任务,我的安全团队要求我提供文件夹 /var/log/snort 下的 pcap 文件。他们从警报文件中获取了源 IPADDRESS,他们需要对该源 IP 地址的 pcap 文件(即 snort.log.xxxxxxx)进行更多分析。
警报文件和 snort.log.xxxxx 文件位于同一文件夹中。如何向他们提供准确的 snort.log.xxxxx 文件以供分析?请提供一些命令或任何技术来执行此操作。我对这个领域很陌生,我正在处理 snort 正在转储日志的 Linux 机器(Centos 7)。
答案1
就像您说的,默认情况下,Snort 将以两种方式记录:
alert
文件 - 包含文本格式的警报元数据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
然后,将这些文件提供给您的安全团队。