日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Unit 42研究人員討論了基于虛擬機監控程序的沙盒中基于內存的工件構建的機器學習渠道,該沙盒是Advanced WildFire的一部分。可以提高對惡意軟件的檢測精度。

正如我們以前所介紹的,惡意軟件開發者正在不斷完善他們的攻擊手段,以使靜態分析和沙盒等策略失效。封裝方法和沙盒逃避等技術的不斷發展讓防御者防不勝防。

更糟糕的是,流行的檢測技術,如結構分析、靜態簽名和許多類型的動態分析,并不能很好地應對目前越來越復雜的攻擊。

惡意軟件開發者越來越多地采用逃避技術,如混淆、封裝和在進程內存中執行動態注入的shellcode。使用來自文件結構的線索進行惡意軟件檢測可能并不總是成功的。封裝技術可以充分修改文件結構以消除這些線索。因此,僅在這類特征上訓練的機器學習模型將無法有效地檢測出此類樣本。

這種檢測方法的另一種流行的替代方法是使用機器學習模型,該模型基于惡意軟件在沙盒內的執行痕跡來預測惡意行為。然而,正如我們原來所詳細介紹的那樣,沙盒逃避非常普遍,有效負載通常會根據任何數量的線索選擇不執行,這些線索會指向正在模擬的樣本。

惡意軟件也可能會無意或有意地破壞沙盒環境,覆蓋日志文件,或由于其所使用的低級技巧而阻止成功分析。這意味著,在執行日志上訓練機器學習模型也不足以捕捉這些逃避類的惡意軟件。


使用NSIS Crypter加密的GuLoader惡意軟件

在這篇文章中,我們將分析一個使用Nullsoft Scriptable Install System(NSIS)加密器加密的GuLoader下載器。NSIS是一個用于創建windows安裝程序的開源系統。

Hash cc6860e4ee37795693ac0ffe0516a63b9e29afe9af0bd859796f8ebaac5b6a8c


為什么靜態分析沒有幫助

GuLoader惡意軟件是加密的,它也是通過NSIS安裝文件傳遞的,這對于靜態分析來說并不理想,因為必須首先解壓縮文件內容。一旦它被解壓縮,我們仍然有加密的數據和一個NSIS腳本。腳本本身也會動態地解密代碼的某些部分,這是使其難以檢測的另一個因素。

然而,沒有太多的結構線索可以識別這可能是惡意軟件。因此,在可移植可執行文件(PE)結構上訓練的機器學習模型將不能有效地將該文件與其他良性文件區分開來。


NSIS腳本和提取GuLoadershellcode

要提取NSIS腳本,我們必須使用7-Zip的舊版本15.05。這個版本的7-Zip能夠解包腳本,而新版本已經刪除了解包NSIS腳本的功能。一旦我們提取了文件內容和NSIS腳本(如圖1所示),我們就可以開始分析腳本并查看GuLoader示例是如何執行的。

NSIS腳本

如果向下滾動腳本,我們會很快注意到文件正在復制到新創建的名為%AppDATA%FarveladeSkaermfeltet的文件夾中。雖然不清楚原因,但所使用的文件路徑似乎是丹麥語。在復制活動之后,腳本中有常規的安裝邏輯,但是有一個名為func_30的有趣函數。

在此函數被調用之前,字符串$INSTDIRFilterposerneMalkekvg. exeNat被復制到名為$4的字符串變量中,如圖2和圖3所示。函數func_30從Programmeludviklinger210中讀取數據。Kon文件并構建代碼,它將在字符Z被看到后立即調用這些代碼。

NSIS允許開發人員能夠從Windows DLL調用任何導出的函數,并且還允許他們將結果直接保存在NSIS寄存器/堆棧中。此功能允許惡意軟件開發者在運行時動態調用Windows API函數,并使靜態分析更加困難,因為在分析之前必須對其進行評估。

調用函數func_30

解碼NSIS代碼

要解碼動態代碼,我們可以編寫一個簡短的Python/ target=_blank class=infotextkey>Python腳本,該腳本再現行為并提取Windows API調用:

下圖顯示了上述腳本產生的解碼數據

解碼的Windows API調用

解碼后的函數一起從NSIS壓縮文件中的另一個文件中讀取shellcode,并使用EnumWindows函數執行它。如果我們必須用偽代碼編寫這個過程,它看起來應該是這樣的:

為了使其余的分析更容易,我們將使用shellcode生成一個PE。為了生成可執行文件,我們可以使用Cerbero Profiler或LIEF Python庫等工具。

在本例中,我們使用了LIEF庫來構建一個新的可執行文件。我們所要做的就是添加一個包含Malkekvg.Nat文件內容的新部分,并將入口點設置為正確的偏移量。一旦我們得到了這些,就應該能夠在IDAPro中打開shellcode,并看到它包含有效的x86指令。

在IDA Pro的入口點生成PE文件


Shellcode分析

現在我們在PE文件中有了Shellcode的第一階段,我們可以在動態分析中運行它,看看會發生什么。我們將看到的第一件事是它檢測到虛擬機,并在顯示消息框后停止執行。此文本在運行時使用4字節XOR密鑰解密。

無法在虛擬環境中執行該示例

如果我們在IDA Pro中打開文件并稍微遵循代碼,就應該能夠看到用于解密第一階段的大函數。雖然函數圖概述看起來很大,但識別垃圾代碼仍然很容易。

進行解密的代碼如下圖所示。在下圖中,我們可以看到跳轉到第二階段的最終調用。此時,我們可以將第二階段轉儲到另一個可執行文件中進行解密。

我們可以直接從內存中轉儲可執行文件,但是必須確保將入口點修補到正確的地址(在本例中為0x404328)。

第一階段的Shellcode解密

調用到下一階段

第二階段使用了許多反分析技術,其中的一些反分析技術為:

內存掃描已知沙盒字符串;

虛擬機監控程序檢查;

時間測量;

為了獲得GuLoader正在下載的最終負載,我們必須手動繞過所有這些檢查,在不受所有這些技術影響的沙盒中運行它,或者在裸金屬沙盒上運行它。


提取有效負載信息

為了在不分析第二階段的情況下獲得有效負載信息(包括所有字符串),我們可以使用Spamhaus描述的一個小技巧。GuLoader使用簡單的XOR加密來加密其字符串,其中包括有效負載URL。

要解密字符串,我們可以對已經知道存在于第二階段中的模式使用暴力。XOR運算的結果就密鑰。對此的唯一限制是模式必須足夠大,以便我們能夠完全解密有效負載URL。例如,一個好的模式可能是用戶代理字符串,默認設置為Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) ,如Gecko。

為了快速自動找到解密密鑰,我們必須首先加密一個短模式(例如,用戶代理字符串的前8個字節),然后搜索該結果是否在文件中的某個位置。如果它在文件中的某個位置,那么我們可以繼續解密剩余的模式以獲得完整的加密密鑰。

我們會在本文的最后附上Python腳本,該腳本能夠通過上述方法從有效負載中找到加密密鑰。在任何轉儲的第二階段GuLoader負載上運行腳本后,我們應該能夠看到一些字符串和負載URL。

GuLoader有時在有效負載URL前面包含7到8個隨機字符,它在運行時將其替換為http://或https://。使用http還是https的區別是由隨機模式中的第四個字符決定的。

在此示例中,有效負載URL為http://ozd[.]com[.]ar/wp-includes/nHMoYlbGLWls101.qxd,并且在分析時有效載荷仍然在線。

最終下載的有效負載來自FormBook惡意軟件家族,其SHA256值為fa0b6404535c2b3953e2b571608729d15fb78435949037f13f05d1f5c1758173。


機器學習如何檢測?

在之前的一篇文章中,我們詳細介紹了在實時沙盒運行期間可以從內存中提取的幾種可觀察工件。我們發現,當與機器學習結合使用多種逃避技術檢測惡意軟件時,來自內存分析的數據是非常強大的。

接下來我們回仔細觀察所有這些關于運行時內存中被修改的內容,并將它們與大規模的機器學習相結合,用于惡意軟件檢測。該算法可以自動找到模式,并且可以識別惡意軟件試圖在內存中隱藏其足跡、動態分配和執行shellcode或使用解包的共性。

在這個GuLoader示例中,人類分析人員會立即識別出有幾個獨特的函數指針。我們還會注意到,惡意軟件已經將其自身進程內存中的多個頁面的頁面權限更改為可寫和可執行。我們的機器學習模型能夠自動執行這些活動,從各種內存構件中提取有關特征來檢測GuLoader示例。

如上所述,我們為Advanced WildFire創建的自動分析平臺將以一種高性能的方式自動提取所有這些基于內存的工件。這意味著所有與動態解析函數指針、權限更改和解包可執行文件相關的信息都可以在我們手動管理的檢測邏輯中使用,也可以用于我們的機器學習渠道。


使用機器學習模式的檢測

下圖顯示了我們如何創建一個機器學習模型渠道的高級視圖,該模型渠道是根據從上述基于內存的工件中提取的自定義特征進行訓練的。我們選擇的特性被設計成保留來自冗長工件的最有用的信息。

我們還將惡意軟件執行跟蹤作為額外的信息源,并構建了一個集成模型來檢測惡意樣本。如下圖所示,從四個內存工件和惡意軟件執行痕跡中自動提取各種自定義特征,并將它們傳遞給一個分類模型以檢測惡意樣本。此外,我們還構建了一個集成模型,該模型基于內存工件和基于執行跟蹤的特性進行訓練,以提高其性能。

機器學習模型架構

文件樣本由流程渠道處理,以將內存工件和其他惡意軟件屬性保存到功能存儲中。特征提取階段使用流式處理和批處理PySpark作業的組合來生成用于訓練模型的最終特征向量。

ground truth標簽來自一個單獨的渠道,該渠道根據惡意軟件特征和研究人員輸入為樣本分配標簽。該渠道通過使用樣本首次出現的時間和哈希來生成非重疊的訓練和評估數據集。


解釋模型預測

為了識別模型的局限性和能力,理解機器學習模型的預測是至關重要的。機器學習很容易出現誤報,因為它嚴重依賴于訓練數據的質量和多樣性,以及對不斷變化的文件進行預測的泛化能力。因此,具有識別預測的因果特征的能力是非常有用的。


Shapley值

Shapley加法解釋(SHAP)是一種博弈論方法,用于解釋任何機器學習模型的輸出。與基線預測相比,SHAP值解釋了每個特征對輸入特征向量的實際預測的影響。在下圖中,從右到左的紅色特征是將模型推向惡意預測的最頂層特征。從左到右,藍色的特征表示降低預測為惡意軟件概率的最頂層特征。

如上圖所示,我們繪制了具有重要SHAP值的前七個特征及其相應原始特征值的力圖。由于這些頂級特征的存在,我們的機器學習模型能夠檢測到GuLoader。這些特性對應于幾個特定的動態解析API指針及其在內存中的相對位置,以及樣本所做的內存頁權限更改的相對類型。


通過聚類尋找相似樣本

另一種理解模型預測的方法是在訓練數據集中識別相似的樣本。我們使用基于密度的掃描(DBScan)作為聚類技術,如下圖所示,因為它允許異常值和不同形狀的聚類。

基于DBSCAN的集群


總結

GuLoader家族是unit42開發的機器學習模型檢測惡意軟件的一個很好的示例,因為GuLoader使用沙盒逃避和靜態防護,使得傳統防御很難單獨使用結構線索和執行日志進行檢測。

在Advanced WildFire中,開發人員引入了一個基于虛擬機監控程序的沙盒,它可以在執行期間暗中觀察GuLoader的內存,以解析有意義的內存駐留工件和對機器學習檢測渠道有用的信息。這允許安全防護人員使用從觀察到的基于內存的工件中提取的特征來準確地檢測惡意行為。

參考及來源:https://unit42.paloalt.NETworks.com/malware-detection-accuracy/

分享到:
標簽:惡意 軟件
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定