2016年6月10日

透過Splunk 分析惡意C&C伺服器

最近公司有個資安上的需求,需要對於DNS的Log做分析,簡單來說就是有人的電腦可能被植入木馬或是不明原因造成會去連一些惡意的中繼伺服器 (C&C伺服器),雖然已事先在DNS主機上對於這些C&C伺服器清單做了強制的Hosts檔對應到一組不存在的IP,然後再透過Firewall做阻攔,但因為仍無法看到是否為偶發性的上網點到廣告網址或是真的中了木馬才去連線C&C伺服器的List清單,因些有需要將DNS的Log分析,並在有異常時可以自動發出告警信來通知相關資安處理人員。幸好目前的上班公司有買Splunk,那就來做一下大數據分析囉!!!

以下為利用虛擬機器在VM上的LAB實作的步驟
Step 1:先在DNS Sever上將偵錯模式打開,記錄DNS的查詢封包的Log,選勾以下選項可以知道哪些內部電腦查詢了哪些網址,之後會透過Splunk分析這些網址與C&C伺服器清單做大數據比對,不需要勾選到詳細資料的欄位,因為這樣子Log會長的太快,而且不利分析,只需要知道簡單的幾個必要欄位即可



Step 2:透過Splunk的Forward功能將DNS主機上的dnslog.txt Import到index的機器上做檔案監控分析,在Import時要注意中文亂碼與網址格式難辦視的問題如下圖

所以需要在加入以下的參數來做修正語系與正規化表示法來顯示簡單易讀的網址格式
CHARSET = Big5
MAX_TIMESTAMP_LOOKAHEAD = 150
NO_BINARY_CHECK = 1
TZ = Asia/Taipei
pulldown_type = 1
SEDCMD-ad1 = s/\(\d+\)/./g

Step 3:產生數據索引後,再透過Splunk的擷取攔位功能,定義出網址字串並命名為domain
(?i) .*? \.(?P[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4})
利用上面的正規化表示法定義字串,並確保網址都有被列入索引字串,後面會透過這個來做分析比對惡意網址

Splunk查詢網址的結果如下
Step4:安裝Splunk App Getwatchlist來做C&C伺服器清單的Import,輸入以下指令產生CSV檔
| getwatchlist http://mirror1.malwaredomains.com/files/domains.txt relevantFieldName="domain" relevantFieldCol=3 categoryCol=4 referenceCol=5 dateCol=6 isbad=true  | outputlookup malwaredomains.csv

malwaredomains.csv 清單會產生於下列路徑C:\ProgramFiles\Splunk\etc\apps\search\lookups/malwaredomains.csv
接著在Splunk中去定義查閱表格
Manager >> Lookups >> Lookup table files
Manager >> Lookups >>Lookup definitions

定義完成後,測試一下比對分析結果,會利用我們DSN Server上的Log記錄與malwaredomains.csv裡的網址去做查詢Filter後,就可以看到哪些Client IP有去連到惡意網址了,接著再將結果定義成Splunk裡的事件告警後,便可以知道到底哪些電腦是中毒、哪些只是不小心點到惡意的廣告連結了!!
sourcetype="ad1" NOT 8.8.8.8 | lookup malwaredomains domain | search isbad=true
sourcetype="ad1" NOT 8.8.8.8 | lookup malwaredomains domain | search isbad=true | stats count by domain QueryIP | sort 100 -count

sourcetype="ad1" NOT 8.8.8.8 | lookup malwaredomains domain | search isbad=true | chart count by domain QueryIP

定期可收到Report提醒相關資安處理人員










沒有留言:

張貼留言