WEB訪問日誌自動化分析淺談

天府雲創發表於2018-02-02

1.概況

最近經常需要分析WEB訪問日誌,從中發現非法請求,然後做相應安全檢查,為了方便,所以寫了一個日誌分析平臺,支援提交iis,apapche,tomcat,ngnix等日誌格式,程式碼使用python語言。

另外,文章中所有的截圖、日誌都是使用工具掃描自己搭建的環境產生的日誌,不涉及到任何使用者。

2.架構

3.分析 3.1匯入資料

這裡並沒有使用splunk之類的平臺,而是根據日誌的格式進行資料分割,然後儲存到MongoDB中,比如apache的格式類似於

%h %l %u %t \"%r\" %>s %b

web訪問日誌的格式,類似於

1.1.1.1 - - [28/Oct/2017:01:58:11 +0800] "POST /admin/ HTTP/1.1" 200 14657

這裡需要注意的是,如果直接使用split按照空格分割的話,會存在一些問題,比如日誌中的時間([28/Oct/2017:01:58:11 +0800])中間也是存在空格的,可以用DictReader定義quotechar讀取資料。

下圖是我定義的日誌格式,包含了常用的引數

常規的WEB訪問日誌是沒有POST日誌的,所以能分析的內容都是基於GET引數、請求路徑等,但是有些WAF日誌是記錄了所有的請求內容,可以用來豐富。

下面分別介紹下可以使用的功能

3.2資料查詢

資料查詢是最基礎的功能,可以根據時間,ip等查詢,這樣就可以定義某個IP所有的行為,或者夜間某個時間點的訪問日誌

3.2正則匹配

正則匹配可能是WAF經常使用的規則,分析WEB訪問日誌時,也經常會用到,例如可執行指令碼在上傳目錄下(例如/images/cmd.aspx),那麼這個檔案就很有可能是webshell,常規的還有attachments|images|css|uploadfiles等,還有一些解析漏洞的格式都可以用來匹配。

針對敏感檔案/目錄的掃描則是判斷檔案的字尾、路徑等,例如rar,bak,swp等

對於SQL隱碼攻擊、XSS等漏洞則是針對引數進行匹配,但是如果規則不夠研究,可能會存在多個誤報問題。

3.3機器學習

上面講到,如果用正則匹配,那麼會存在很多誤報問題,所以我只定義了一部分嚴格的規則,保證匹配出來的一定是攻擊的日誌。對於其他的行為,則採用了機器學習模型機進行分類。

使用機器學習分類的重點和難點在於日誌的收集和特徵的選擇;俗話說的好,正常總是基本相似,異常卻各有各的異常,所以這裡面的重點又到了異常日誌的收集。

我從兩個方面找了異常日誌:

1.使用掃描器的模組掃描網站,比如使用SQLMAP掃描注入頁面,那麼WEB日誌大多數都是SQL隱碼攻擊;或者使用WVS的XSS模組掃描頁面,那日誌裡就有很多XSS的日誌。

2.從GITHUB上搜尋了很多個常用的poc和exp,然後進行分類。

這裡我用指令碼將訪問日誌的路徑都刪除,只保留了引數的值,正常日誌如下圖:

sql注入和xss的日誌如下:

當然還有很多其他型別的日誌,大家可以收集一下

使用TfidfVectorizer進行文字特徵提取

TfidfVectorizer(ngram_range=(2,2))

然後用隨機森林演算法進行訓練,準確率、召回率、F1引數

由於是第一個版本,所有還沒有做過多的特徵篩選和演算法選擇,後期慢慢改善演算法。

3.4威脅情報

針對威脅情報,在日誌分析中,主要用來分析IP,如果某個IP在一段時間內發生過情報,比如出現“遠控伺服器”,那麼這個IP就應該被列為威脅IP,它的所有訪問日誌都應該被重點關注。所以把訪問日誌中所有的IP進行匹配一次,檢視是否有惡意訪問的資訊

3.5統計分析

統計分析中主要是對IP和頁面進行統計分析,比如一般的黑客訪問都是用國外的代理IP訪問,所以將國外的IP篩選出來,定位分析是否存在安全風險。

另外,針對webshell的訪問,比較明顯的特徵是:由於webshell是孤島存在,所以基本會被很少的IP訪問,那麼我們將某個頁面被多少個IP訪問過統計出來,數量少的可以著重分析。

4.總結

1.本文只是將WEB日誌分析中常用的檢查方法用python實現出來,但是仍然有很多不足,並且還有一些功能還沒實現。

2.由於沒有POST資料,所以分析存在很多侷限性。

3.可以用機器學習的其他模型來嘗試解決該問題。

4.歡迎大家指正,或者提供一些自己平時用到的分析方法,感謝感謝。

【監控和自動化的指標】

還在用命令列查問題嗎?雲監控提供30餘種伺服器監控指標,等你來用!


資源使用率(CPU/MEM/DiskIO)、流量和頻寬、各種日誌(系統、訪問和應用)、web服務軟體(中介軟體)、URL應用本身的Page/list、程式、資料庫慢查詢和快取命中率(CDN)、應用API請求、訊息佇列、容器和排程、系統負載狀況、虛擬化、
檔案系統(檔案篡改/innode)以及網路(延遲和抖動等)和安全(資訊保安、網路安全ddos和資料安全等)。+歷史記錄

相關文章