投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分

透過本文,我們完成了專門用於分析惡意軟體的系列出版品。 在 第一部分 我們對一家歐洲公司透過郵件收到的受感染文件進行了詳細分析,並發現了 AgentTesla 間諜軟體。 在 第二部分 描述了 AgentTesla 主模組的逐步分析結果。

今天,CERT Group-IB 的惡意軟體分析專家 Ilya Pomerantsev 將透過 CERT Group-IB 專家實踐中的三個小案例來討論惡意軟體分析的第一階段 - 對 AgentTesla 樣本進行半自動解包。

通常,惡意軟體分析的第一階段是移除加殼器、加密器、保護器或載入器形式的保護。 在大多數情況下,可以透過執行惡意軟體並執行轉儲來解決此問題,但在某些情況下此方法不適合。 例如,如果惡意軟體是加密器,如果它保護其記憶體區域不被轉儲,如果程式碼包含虛擬機器偵測機制,或惡意軟體在啟動後立即重新啟動。 在這種情況下,採用所謂的「半自動」拆包,即研究人員完全控制該過程並可以隨時幹預。 我們以 AgentTesla 系列的三個範例為例來考慮此過程。 如果您停用其網路訪問,這是一種相對無害的惡意軟體。

樣品1號

原始檔是一個利用漏洞CVE-2017-11882的MS Word文件。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
結果,有效負載被下載並啟動。

對流程樹和行為標記的分析顯示注入到流程中 RegAsm程序.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
AgentTesla 具有行為特徵特徵。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
下載的範例是可執行的 。NET-受保護程式保護的文件 .NET反應器.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
讓我們在實用程式中打開它 dnSpy x86 並移動到入口點。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
透過轉到函數 日期時間偏移量,我們會找到新的初始化程式碼 。NET-模組。 讓我們把 斷點 上線我們感興趣的並運行該文件。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
在返回的緩衝區之一中,您可以看到 MZ 簽名(0x4D 0x5A)。 讓我們保存它。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
轉儲的可執行檔是一個動態庫,它是一個載入程序,即從資源部分提取有效負載並啟動它。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
同時,轉儲中並不存在必要的資源本身。 它們位於父樣本中。

效用 網絡間諜 有兩個非常有用的功能,可以幫助我們從兩個相關文件快速創建「科學怪人」。

  1. 第一個允許您將動態庫“貼上”到父範例中。

    投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分

  2. 二是重寫入口點的函數程式碼,以呼叫插入的動態函式庫所需的方法。

    投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分

我們拯救我們的“弗蘭肯斯坦”,設置 斷點 傳回帶有解密資源的緩衝區,並與前一階段類比產生轉儲。

第二個轉儲寫入 VB.NET 受我們熟悉的保護器保護的可執行文件 混淆者Ex.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
移除保護器後,我們使用先前編寫的 YARA 規則,並確保解壓縮後的惡意軟體確實是 AgentTesla。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分

樣品2號

來源檔案是 MS Excel 文件。 內建巨集會導致惡意程式碼的執行。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
結果,PowerShell 腳本被啟動。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
該腳本解密 C# 程式碼並將控制權轉移給它。 從沙箱報告中也可以看出,程式碼本身就是一個引導程式。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
有效負載是可執行檔 。NET-文件。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
打開文件在 dnSpy x86,你可以看到它被混淆了。 使用實用程式消除混淆 德4點 並返回分析。

檢查程式碼時,您可能會發現以下函數:

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
編碼線引人注目 入口點 и 調用。 我們把 斷點 到第一行,運行並保存緩衝區值 位元組_0.

轉儲又是一個應用程式 。NET 並受到保護 混淆者Ex.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
我們使用以下方法消除混淆 德4點 並上傳到 網絡間諜。 從文件描述中我們了解到我們面臨著 CyaX-Sharp 裝載機.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
此載入程式具有廣泛的反分析功能。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
此功能包括繞過內建 Windows 保護系統、停用 Windows Defender 以及沙箱和虛擬機器偵測機制。 可以從網路載入有效負載或儲存在資源部分。 啟動是透過注入到自己的進程、自己的進程的副本或進程中來執行的 MSBuild.exe, 執行程式 и 註冊表服務程序 取決於攻擊者選擇的參數。

然而,對我們來說,它們的重要性不如 反傾銷-新增的功能 混淆者Ex。 其原始碼可以在以下位置找到 GitHub上.

要停用保護,我們將利用機會 網絡間諜,它允許您編輯 IL-代碼。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
儲存並安裝 斷點 到呼叫有效負載解密函數的行。 它位於主類別的建構函數中。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
我們啟動並轉儲有效負載。 使用先前編寫的 YARA 規則,我們確保這是 AgentTesla。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分

樣品3號

原始檔是可執行檔 VB 本機 PE32-文件。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
熵分析顯示存在大量加密資料。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
在分析申請表時 VB反編譯器 您可能會注意到奇怪的像素化背景。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
熵圖 bmp-image與原始檔案的熵圖相同,大小為檔案大小的85%。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
圖像的整體外觀顯示使用了隱寫術。

讓我們注意進程樹的外觀以及注入標記的存在。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
這表示正在解包。 對於 Visual Basic 載入器(又稱 VB加密 VB注入器) 典型用途 殼碼 初始化有效負載,以及執行注入本身。

分析於 VB反編譯器 顯示事件的存在 加載 在表格上 Fegatassoc氣球2.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
讓我們去 IDA專業版 到指定的地址並研究函數。 該代碼非常混亂。 我們感興趣的片段如下所示。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
這裡掃描進程的位址空間以取得簽章。 這種做法極為可疑。

一、掃描起始位址 0x400100。 該值是靜態的,並且在基數移動時不會調整。 在理想的溫室條件下,它將表明結束 PE- 可執行檔的標頭。 然而,資料庫不是靜態的,它的值可以改變,並且搜尋所需簽名的真實地址,雖然不會導致變數溢出,但是可能需要很長的時間。

其次,簽名的含義 工作小組。 我認為顯然 4 個位元組太小而無法保證唯一性。 而如果考慮到第一點,犯錯的可能性就相當高了。

事實上,所需的片段附加在先前找到的末尾 bmp- 按偏移量顯示的圖片 0xA1D0D.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
執行 外殼程式碼 分兩個階段進行。 首先破解主體。 在這種情況下,密鑰是透過暴力來決定的。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
轉儲解密的 外殼程式碼 並查看線條。

首先,我們現在知道建立子進程的函數: 創建進程內部W.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
其次,我們意識到系統中的固定機制。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
讓我們回到原來的流程。 讓我們把 斷點 創建進程內部W 並繼續執行。 接下來我們看到連接 NtGetContextThread/NtSetContextThread,將執行起始位址變更為位址 外殼程式碼.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
我們使用調試器連接到創建的進程並激活事件 暫停庫加載/卸載,恢復進程並等待載入 。NET- 圖書館。

進一步利用 流程駭客 包含未打包的轉儲區域 。NET-應用。

我們停止所有進程並刪除已嵌入系統中的惡意軟體的副本。

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
轉儲的文件受保護器保護 .NET反應器,可以使用實用程式輕鬆刪除 德4點.

投票失敗:讓我們讓特斯拉特工接觸乾淨的水。 第3部分
使用先前編寫的 YARA 規則,我們確保這是 AgentTesla。

總結

因此,我們以三個迷你案例為例詳細演示了半自動樣本拆包的過程,並基於一個完整的案例對惡意軟體進行了分析,發現所研究的樣本是AgentTesla,建立了其功能和特徵。妥協指標的完整清單。

我們對惡意對象進行的分析需要大量的時間和精力,這項工作應該由公司中的專門員工來執行,但並非所有公司都準備好聘請分析師。

Group-IB 電腦取證和惡意程式碼分析實驗室提供的服務之一是回應網路事件。 為了避免客戶在網路攻擊期間浪費時間批准文件和討論文件,Group-IB 推出了 事件響應保持器,一種預訂閱事件回應服務,還包括惡意軟體分析步驟。 有關此的更多資訊可以找到 這裡.

如果您想再次研究 AgentTesla 樣本是如何解包的,並了解 CERT Group-IB 專家是如何做到這一點的,您可以下載有關此主題的網路研討會錄音 這裡.

來源: www.habr.com

添加評論