一. 概述

大量的惡意軟件/程序攻擊給用戶帶來了極大的困擾。國內外的研究人員檢測惡意程序的技術主要分為:基于程序結構、文件數據特征等惡意程序靜態識別技術,基于程序運行時函數行為調用序列、函數參數信息等惡意程序動態識別技術[1]。目前,基于規則等檢測技術以及基于機器學習等檢測技術均存在相關問題。當未知惡意異常程序進行檢測時,基于規則(YARA等)檢測技術需要靠追加規則來實現,無法應對未知惡意異常程序的檢測。此外,由于設備產生的數據量巨大,存在線索難以調查的問題,導致有效攻擊線索淹沒在背景數據中,基于機器學習檢測技術通常具有較高的誤報率和漏報率,難以快速識別。構建溯源圖,能夠作為威脅狩獵的關鍵資源,為威脅的識別、評估、關聯提供豐富的上下文。《Provenance Mining:終端溯源數據挖掘與威脅狩獵》[2]一文,介紹了終端溯源數據(Provenance)以及溯源圖(Provenance Graph)的概念,并介紹了如何在溯源數據完整有效采集的情況下,通過溯源圖的后向追溯(backward-trace)和前向追溯(forward-trace),實現攻擊事件的溯源與取證。為了檢測未知惡意程序,相關研究人員[3]提出MatchGNet,通過數據驅動的方法進行檢測,利用圖神經網絡來學習表示以及相似性度量,捕獲不同實體之間的關系,利用相似性學習模型在未知程序與現有良性程序之間進行相似性評分,發現行為表示與良性程序有區分的未知惡意程序,最終,通過實驗證明了有效性。隨著異常程序檢測技術的發展,攻擊者躲避檢測的方式也越來越多。本文將分析屬性圖在檢測異常程序的應用。

二.基于屬性圖的異常程序檢測方法

目前,大部分企業面對異常軟件/程序檢測時采用基于yara等規則檢測技術以及基于機器學習的檢測技術。其中,yara規則會從二進制數據層面檢測惡意樣本,可通過自定義的規則從文件的內容、哈希值、程序函數功能二進制特征、文件大小等維度對檢測內容進行約束,來檢測識別。雖然yara規則檢測技術較為準確,但是當新出現一種樣本,或者加殼、混淆時,需要靠追加規則來覆蓋新的這些場景。

基于屬性圖來對異常程序進行檢測[6],首先,利用屬性圖對攻擊者進行建模需要明確屬性、頂點與邊。由于屬性圖包含終端日志,因此,涉及到進程、文件、服務等信息的構圖。然后,通過規則檢測匹配進程中的內容,進程映射的磁盤文件,進程的外聯IP以及cpu占有率高的進程是否超過閾值,將潛在受害的數據進行威脅度標注。利用預處理后的數據結合規則匹配的威脅度標注構建屬性圖。

基于屬性圖中的異常檢測主要是找出在行為模式上與其他節點差異較大的節點。相關基于屬性圖的檢測方法,可以參考文章攻擊推理專題-屬性圖異常檢測及在網絡安全領域的應用[4]。通過PyGOD[5]可以快速調用多種最新的圖異常檢測算法。相關檢測算法如下圖所示。

圖 1 PyGOD實現的算法

針對上述方案進行簡單的實驗效果說明,首先,運行兩個樣本,其中,一個可以通過已知規則方法檢測出來,另一個因為加殼緣故等相關規則檢測不到。將日志導出后基于上述方案進行構圖,通過訓練好的異常檢測算法進行檢測。在高威脅度的top10節點中,存在由加殼緣故等導致相關規則檢測不到軟件引起的異常程序,如下圖所示。

圖2 異常檢測結果

三.結束語

傳統靜態特征規則等驅動的異常程序檢測方法,難以應對日益更新的相關攻擊帶來的潛在重大風險。基于屬性圖的異常程序檢測技術依賴更加自動化的數據與知識挖掘基礎設施,以彌補專家視野的局限性,為異常程序檢測帶來新的視角,拓寬其監控范圍,自動化的識別更廣泛的威脅。如何在后續工作中提高算法在不同真實場景下的檢測性能,需要進一步的探索。