WEB訪問日誌自動化分析淺談
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和資料安全等)。+歷史記錄
相關文章
- nginx自動切割訪問日誌Nginx
- Tomcat訪問日誌淺析Tomcat
- [原創]淺談Web UI自動化測試WebUI
- 自動化測試框架:日誌的分析框架
- SEO優化之淺談蜘蛛日誌優化
- 6.23 Web日誌分析&php&自動化工具WebPHP
- 淺談自動化測試
- 淺談SAP Cloud for Sales 自動化Cloud
- awstats分析web日誌Web
- 淺談自動化構建之grunt
- 淺談自動化構建之gulp
- 淺談倉儲UI自動化之路UI
- 【自動化】淺度分析自動化行業,深度好文!行業
- Apche日誌系列(1):訪問日誌(轉)
- 淺談 Web 影象優化Web優化
- 淺談自動化測試框架開發框架
- 支付寶客戶端架構分析:自動化日誌收集及分析客戶端架構
- OSS訪問日誌分析(1):概念+巨集觀指標指標
- 使用go+gin編寫日誌中間,實現自動化收集http訪問資訊,錯誤資訊等,自動化生成日誌檔案GoHTTP
- 淺談融雲即時通訊服務「日誌優化」優化
- FeignClient配置日誌訪問client
- EDP .Net開發框架--自動化日誌框架
- 淺談自動過帳
- [淺談 ui 自動化專案的個人套路]UI
- JB測試之旅-淺談自動化知識
- 淺談自動化測試功能模組的分解
- 使用 Log Analyzer 和 Symptom Editor 實現自動化的日誌分析
- 日誌服務之分析使用者訪問行為
- 自動化 Web 效能優化分析方案Web優化
- 配置Tomcat的訪問日誌格式化輸出Tomcat
- 使用Fluentd + Elasticsearch收集訪問日誌Elasticsearch
- Nginx 訪問日誌格式設定Nginx
- 淺談PHP自動化程式碼審計技術PHP
- 日誌分析-apache日誌分析Apache
- Nginx 訪問日誌實時解析 ngxtopNginx
- AWK應用之統計訪問日誌
- 使用外部表訪問監聽日誌
- SecureCRT自動記錄日誌Securecrt