在15章講過利用Logstash 的Grok做資料欄位切割並傳到Elasticsearch,這章來講一下利用資料探勘來進一步做分析
資料探勘(英語:data mining)是一個跨學科的電腦科學分支 。 它是用人工智慧、機器學習、統計學和資料庫的交叉方法在相對較大型的資料集中發現模式的計算過程。 資料探勘過程的總體目標是從一個資料集中提取資訊,並將其轉換成可理解的結構,以進一步使用。
https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98
我們在前幾章收了很多Log 也能做mining嗎? 查一下還蠻多人在做的,這裡先參考: An Evaluation Study on Log Parsing and Its Use in Log Mining這篇論文的作法
https://slideplayer.com/slide/12299621/
拿到Log的Raw Data後,逐步將資料從非結構化 -> 半結構化 -> 結構化,結構化的資料容易看得懂,並且很容易利用分析
參考資料: 結構化資料是什麼? 數據分析前,重新認識你的資料!
https://daxpowerbi.com/%E7%B5%90%E6%A7%8B%E5%8C%96%E8%B3%87%E6%96%99/
參考: A Directed Acyclic Graph Approach to Online Log Parsing
https://arxiv.org/pdf/1806.04356.pdf
拿這份OpenSSH Log來練習 https://github.com/logpai/loghub/blob/master/OpenSSH/SSH_2k.log
首先做分類
再來作抽象化,轉成變數來達到資訊壓縮減量
抽象化(類型2)
如果以時間及事件作矩陣,會發現Event 2~6 會同一起出現
回去查看原始資料會發現,這是一個驗證登入錯誤的事件,並且有相關性,Event2後面應該要接著3、4、5、6,假設Log沒有漏紀錄,之間少一個可能判定異常
有上過資安方丈Jason課曾經講過,Windows 從開關機紀錄ID可以看出問題
正常開關機順序是:
Event ID | Description |
---|---|
6009 | 在系統啟動時檢測到的操作系統版本。 |
6005 | 事件日誌服務已啟動。指示系統啟動。 |
6013 | 系統正常運行時間(以秒為單位)。 |
6006 | 事件日誌服務已停止。指示正確的系統關閉。 |
哪天如果看到Windows EventLog是
時間 | 事件識別碼 |
---|---|
11:26 | 6013 |
11:26 | 6005 |
11:26 | 6009 |
11:24 | 6013 |
11:24 | 6005 |
11:24 | 6009 |
11:23 | 6006 |
上面記錄少了6006,表示並沒有正常關機動作,如非斷電從開等情況,很有可能是駭客攻擊打到系統強制重開機(惡意程式於開機期間成功埋入)
因此利用Log之間的關聯關係,也是一種能判斷是否有異常的方式