1. 程式人生 > >利用ML&AI判定未知惡意程式——裡面提到ssl惡意加密流檢測使用N個payload CNN + 位元組分佈包長等特徵綜合判定

利用ML&AI判定未知惡意程式——裡面提到ssl惡意加密流檢測使用N個payload CNN + 位元組分佈包長等特徵綜合判定

利用ML&AI判定未知惡意程式

導語:0x01、前言 在上一篇ML&AI如何在雲態勢感知產品中落地中介紹了,為什麼我們要預測未知惡意程式,傳統的安全產品已經無法滿足現有的安全態勢。那麼我們要使用新的技術手段武裝我們的安全產品,通過大資料的手段更好的解決未知惡意程式

0x01、前言

在上一篇ML&AI如何在雲態勢感知產品中落地中介紹了,為什麼我們要預測未知惡意程式,傳統的安全產品已經無法滿足現有的安全態勢。那麼我們要使用新的技術手段武裝我們的安全產品,通過大資料的手段更好的解決未知惡意程式給我們帶來的危害。

0x02、落地技術架構

一、如何檢測

上篇文章講了大致的落地方法,本文主要是給大家暴露更多的技術細節。

利用ML&AI判定未知惡意程式

1、IDS Agent還原檔案會計算一下MD5hash值與FIleHash快取系統對比一下,如果有則直接報告為惡意軟體,並且附上惡意軟體家族分類,如果沒有根據聚類演算法分成不同的未知分類,不儲存該檔案,更新快取,把發生的時間和次數記錄一下,為下一步流行度統計使用。

2、如果沒有這個檔案,那麼儲存到物件儲存(公有云IAAS元件,OSS)。儲存完成後向下一個環節投遞,發出kafka Topic訊息給主程式。設計這個是因為在公有云環境下需要鑑定的檔案是海量的,需要一套大資料流轉系統快取。

3、主程式使用多執行緒的方式啟動多個處理單元。接收到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(相鄰雙字) )

    隱藏通訊通道檢測

        使用隨機森林演算法

4、主程式同時需要做靜態檔案檢測,根據不同檔案型別送入到不同的型別靜態檔案分類器。

    針對PE/ELF檔案處理流程

        需要通過yara檔案簡單判斷一下是否加殼&加密。

        未加殼&加密經過靜態反編譯服務中,計算出彙編序列,然後送入到靜態PE/ELF分類器判斷。

    針對其它型別檔案,需要不同的ML學習模型判斷。

        比如說指令碼檔案powershell,調研一般都有不同的操作碼。這都需要深耕細作。

        還有比如說webshell檢測,也需要對不同的webshell做不同的處理。php馬是一個很典型的例子,還有菜刀等。

5、檢測結果都發往決策中心。根據多類決策樹判斷。得出最終結果發往惡意檔案家族分類器。

    惡意檔案家族分類一般使用兩種多分類器方法。

        機器學習演算法推薦使用k-means

        深度學習方法建議使用卷積神經網路CNN演算法

        最後建議再過一遍聚類,找出孤立點。

6、形成惡意檔案家族和未知惡意分類。最終儲存到ElasticSearch方便提供給前端使用者展示。

二、如何訓練

通過上述全棧機器學習和深度學習演算法的描述,所有模型加起來15+。那麼這麼多模型如何訓練,如何更新是本次換“芯”最重要的部分。

1、那麼針對機器學習部分,我們需要儲存所提交的樣本,無論什麼形式都通過流量的形式傳送到kafka最終儲存到HIVE重,然後匯入到spark mlib中進行模型計算。當然,還有一些公網中加入的黑白樣本,也是通過同樣的形式進入到這個迴圈中。

2、那些針對深度學習的模型,需要我們建立深度計算GPU服務叢集,裝置需求規格:24核128G記憶體/流量50Gbps(20% https流量) NVidia GeForceGTX1080 GPU https:7000QPS計算文字和影象加起來需要8臺物理伺服器。惡意軟體病毒家族分類看規模大約8臺可以滿足目前頻寬情況下的檔案還原速度(25萬個樣本/day)。

3、在有限的資源下,大約1周更新一次所有模型。

0x03、總結

通過以上描述,大家可以基本瞭解未知威脅檢測的ML&AI的大致原理。剩下的就是如何程式碼實現其功能。當然演算法調優也是一個漫長的過程。最終實現提升態勢感知產品自動化程度,以及實現安全能力的智慧化輸出。

如若轉載,請註明原文地址:  http://www.4hou.com/technology/13181.html