我正在執行一項任務,我的安全團隊要求我在 /var/log/snort 資料夾下提供 pcap 檔。他們從警報檔案中取得了來源 IPADDRESS,並且需要對該來源 IP 位址的 pcap 檔案(即 snort.log.xxxxxxx)進行更多分析。
警報檔案和 snort.log.xxxxx 檔案位於同一資料夾中。如何給他們準確的 snort.log.xxxxx 檔案進行分析?請給予一些命令或任何技術來執行此操作。我對這個領域非常陌生,我正在處理 Linux 機器(Centos 7),其中 snort 正在轉儲日誌。
答案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 位址相關,我會這樣做:
警報文件條目
Grep 取得 IP 位址,然後將輸出寫入單獨的檔案。
grep "192.168.1.1" /var/log/snort > /tmp/alerts_192.168.1.1.txt
這應該只過濾出現 IP 位址的行,並將其重新導向到您可以提供給安全團隊的新檔案。
投射電容文件
我會謹慎執行此操作,因為 snort 日誌目錄可能非常大,並且迭代一大組文件可能會給系統帶來壓力(特別是如果它是流量非常高的傳感器)。我建議使用文件遮罩來確定您要查找的資料的大致時間範圍。請記住,該時間範圍需要採用紀元格式。
假設團隊希望一切從現在開始回到一小時前(3600 秒)。紀元時間戳記為 1515054491。
1515050891 - Start
1515054491 - End
151505???? - File mask (close enough)
然後,我將建立一個 for 迴圈來迭代所有這些文件,並執行 tcpdump 命令來僅過濾有問題的 IP 位址。
tcpdump -r infile -w outfile "BPF"
選項:
- -r 用於從檔案讀取(而不是從介面啟動即時捕獲)
- -w 用於將輸出寫入文件
- 「BPF」 - Berkley 封包過濾器(在本例中,將使用「主機 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
然後,將這些文件提供給您的安全團隊。