導語:0x0一、前言 在上一篇ML&AI如何在雲態勢感知產品中落地中介紹了,爲何咱們要預測未知惡意程序,傳統的安全產品已經沒法知足現有的安全態勢。那麼咱們要使用新的技術手段武裝咱們的安全產品,經過大數據的手段更好的解決未知惡意程序php
0x0一、前言html
在上一篇ML&AI如何在雲態勢感知產品中落地中介紹了,爲何咱們要預測未知惡意程序,傳統的安全產品已經沒法知足現有的安全態勢。那麼咱們要使用新的技術手段武裝咱們的安全產品,經過大數據的手段更好的解決未知惡意程序給咱們帶來的危害。前端
0x0二、落地技術架構web
1、如何檢測算法
上篇文章講了大體的落地方法,本文主要是給你們暴露更多的技術細節。shell
一、IDS Agent還原文件會計算一下MD5hash值與FIleHash緩存系統對比一下,若是有則直接報告爲惡意軟件,而且附上惡意軟件家族分類,若是沒有根據聚類算法分紅不一樣的未知分類,不存儲該文件,更新緩存,把發生的時間和次數記錄一下,爲下一步流行度統計使用。緩存
二、若是沒有這個文件,那麼存儲到對象存儲(公有云IAAS組件,OSS)。存儲完成後向下一個環節投遞,發出kafka Topic消息給主程序。設計這個是由於在公有云環境下須要鑑定的文件是海量的,須要一套大數據流轉系統緩存。安全
三、主程序使用多線程的方式啓動多個處理單元。接收到kafka消息後,從消息中取出OSS的文件路徑,而後下載文件到本地,而後調用動態沙箱的文件送檢API接口傳遞到下一個環節。而後等待沙箱回調函數,有回調消息後,獲取沙箱的report,而後把相關信息填充到kafka Topic中向下傳遞。固然中間能夠加數據補齊的流程等。在這有兩個分支服務器
分支一:把APICall信息傳遞給SparkMlib庫作動態文件二分類器判斷。這裏主要是使用GBDT、XGBOOST (具體使用哪一個算法須要看準確率、召回率 、F1_score 最終的結果選定)網絡
分支二:網絡流量從沙箱鏡像出來,而後向網絡重放一下。經過異常流量檢測引擎,這四個檢測又是4個ML&AI判斷模型。
惡意SSL流量檢測
特徵工程,有具體意義特徵->CNN
·flowMetadata[上行字節數/下行字節數/上行報數/下行包數/持續時間]
·sequence of packet[長度序列/間隔時間序列]
·Byte distribution[字節分佈機率]
·TLS header[TLS加密套件/TLS擴展/公鑰長度]
前N個包payload 直接轉化成圖像CNN
合併兩個檢測結果判斷惡意SSL流量
DNS異常域名檢測
經過LSTM聚類的方法,找出高度關聯的域名和獨立點。孤立點設爲可疑域名。
DGA域名檢測
特徵工程主要包含如下3點
·域名隨機性(隨機性和熵)
·域名長度較長
·n-gram(bigram(相鄰雙字) )
隱藏通信信道檢測
使用隨機森林算法
四、主程序同時須要作靜態文件檢測,根據不一樣文件類型送入到不一樣的類型靜態文件分類器。
針對PE/ELF文件處理流程
須要經過yara文件簡單判斷一下是否加殼&加密。
未加殼&加密通過靜態反編譯服務中,計算出彙編序列,而後送入到靜態PE/ELF分類器判斷。
針對其它類型文件,須要不一樣的ML學習模型判斷。
好比說腳本文件powershell,調研通常都有不一樣的操做碼。這都須要深耕細做。
還有好比說webshell檢測,也須要對不一樣的webshell作不一樣的處理。php馬是一個很典型的例子,還有菜刀等。
五、檢測結果都發往決策中心。根據多類決策樹判斷。得出最終結果發往惡意文件家族分類器。
惡意文件家族分類通常使用兩種多分類器方法。
機器學習算法推薦使用k-means
深度學習方法建議使用卷積神經網絡CNN算法
最後建議再過一遍聚類,找出孤立點。
六、造成惡意文件家族和未知惡意分類。最終存儲到ElasticSearch方便提供給前端用戶展現。
2、如何訓練
經過上述全棧機器學習和深度學習算法的描述,全部模型加起來15+。那麼這麼多模型如何訓練,如何更新是本次換「芯」最重要的部分。
一、那麼針對機器學習部分,咱們須要保存所提交的樣本,不管什麼形式都經過流量的形式發送到kafka最終存儲到HIVE重,而後導入到spark mlib中進行模型計算。固然,還有一些公網中加入的黑白樣本,也是經過一樣的形式進入到這個循環中。
二、那些針對深度學習的模型,須要咱們創建深度計算GPU服務集羣,設備需求規格:24核128G內存/流量50Gbps(20% https流量) NVidia GeForceGTX1080 GPU https:7000QPS計算文本和圖像加起來須要8臺物理服務器。惡意軟件病毒家族分類看規模大約8臺能夠知足目前帶寬狀況下的文件還原速度(25萬個樣本/day)。
三、在有限的資源下,大約1周更新一次全部模型。
0x0三、總結
經過以上描述,你們能夠基本瞭解未知威脅檢測的ML&AI的大體原理。剩下的就是如何代碼實現其功能。固然算法調優也是一個漫長的過程。最終實現提高態勢感知產品自動化程度,以及實現安全能力的智能化輸出。