ESET:OceanLotus 網路組織的新後門交付方案

在這篇文章中,我們將告訴您網路組織 OceanLotus(APT32 和 APT-C-00)最近如何使用公開可用的漏洞之一 CVE-2017,11882、Microsoft Office 中的記憶體損壞漏洞,以及該組織的惡意軟體如何在受感染的系統上持久存在而不留下任何痕跡。 接下來,我們將介紹自 2019 年初以來,該組織如何使用自解壓縮檔案來運行程式碼。

OceanLotus 專門從事網路間諜活動,優先目標是東南亞國家。 攻擊者偽造文件吸引潛在受害者的注意,說服他們執行後門,並且還在開發工具。 用於創建蜜罐的方法因攻擊而異,從「雙擴展」文件、自解壓縮檔案、帶有巨集的文檔到已知的漏洞。

ESET:OceanLotus 網路組織的新後門交付方案

在 Microsoft 公式編輯器中使用漏洞

2018年中,OceanLotus開展了一次利用CVE-2017-11882漏洞的活動。 360威脅情報中心專家分析了該網路組織的一份惡意文件(研究 中文是什麼意思),包括漏洞利用的詳細描述。 下面的帖子包含了此類惡意文件的概述。

第一階段

文件 FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3)與上述研究中提到的類似。 它很有趣,因為它針對的是對柬埔寨政治感興趣的用戶(CNRP - 柬埔寨救國黨,於 2017 年底解散)。 儘管有 .doc 副檔名,但該文件是 RTF 格式(見下圖),包含垃圾程式碼,而且也被扭曲。

ESET:OceanLotus 網路組織的新後門交付方案
圖 1. RTF 中的“垃圾”

即使存在亂碼元素,Word 也能成功開啟此 RTF 檔案。 如圖 2 所示,偏移量 0xC00 處有一個 EQNOLEFILEHDR 結構,後面是 MTEF 標頭,然後是該字體的 MTEF 條目(圖 3)。

ESET:OceanLotus 網路組織的新後門交付方案
圖 2. FONT 輸入值

ESET:OceanLotus 網路組織的新後門交付方案
圖3。 FONT記錄格式

字段中可能存在溢出 名稱,因為在複製之前沒有檢查其大小。 名稱太長會觸發漏洞。 從 RTF 檔案的內容(圖 0 中的偏移量 26xC2)可以看出,緩衝區填入了 shellcode,後面跟著一個虛擬命令 (0x90) 和回傳地址 0x402114。 地址是對話框元素 EQNEDT32.exe, 表示指令 RET。 這會導致 EIP 指向欄位的開頭 名稱包含 shellcode。

ESET:OceanLotus 網路組織的新後門交付方案
圖 4. 漏洞利用 shellcode 的開始

地址 0x45BD3C 儲存一個被取消引用的變量,直到它到達指向當前加載的結構的指針 MTEFData。 其餘的 shellcode 在這裡。

shellcode 的目的是執行嵌入在開啟文件中的第二段 shellcode。 原始 shellcode 首先嘗試透過迭代所有系統描述符來尋找開啟文件的文件描述符(NtQuerySystemInformation 有一個論點 SystemExtendedHandleInformation)並檢查它們是否匹配 PID 描述符和 PID 這個過程 WinWord 以及文件是否是使用存取遮罩開啟的 - 0x12019F.

為了確認已找到正確的句柄(而不是另一個開啟文件的句柄),使用下列函數顯示文件的內容 CreateFileMapping,並且 shellcode 檢查文檔的最後四個位元組是否匹配“yyyy」(尋蛋法)。 找到匹配項後,文件將複製到臨時資料夾 (GetTempPath) 如何 ole.dll。 然後讀取文檔的最後 12 個位元組。

ESET:OceanLotus 網路組織的新後門交付方案
圖 5. 文件結束標記

標記之間的 32 位元值 AABBCCDD и yyyy 是下一個 shellcode 的偏移量。 它是使用函數呼叫的 CreateThread。 提取了與 OceanLotus 組織之前使用的相同的 shellcode。 Python模擬腳本,我們於 2018 年 XNUMX 月發布,仍然適用於第二階段轉儲。

第二階段

拆卸組件

檔案和目錄名稱是動態選擇的。 程式碼隨機選擇可執行檔或DLL檔的名稱 C:Windowssystem32。 然後它向其資源發出請求並檢索該字段 FileDescription 用作資料夾名稱。 如果這不起作用,程式碼會從目錄中隨機選擇一個資料夾名稱 %ProgramFiles%C:Windows (取自 GetWindowsDirectoryW)。 它避免使用可能與現有文件衝突的名稱,並確保它不包含以下單字: windows, Microsoft, desktop, system, system32syswow64。 如果目錄已存在,則名稱中會附加「NLS_{6 個字元}」。

資源 0x102 被分析並將文件轉儲到 %ProgramFiles%%AppData%,到隨機選擇的資料夾。 更改創建時間以使其具有相同的值 kernel32.dll.

例如,這是透過選擇可執行檔建立的資料夾和檔案列表 C:Windowssystem32TCPSVCS.exe 作為資料來源。

ESET:OceanLotus 網路組織的新後門交付方案
圖 6. 提取各種組件

資源結構 0x102 在滴管中是相當複雜的。 簡而言之,它包含:
— 檔案名稱
— 檔案大小和內容
— 壓縮格式 (COMPRESSION_FORMAT_LZNT1,由函數使用 RtlDecompressBuffer)

第一個檔案重置為 TCPSVCS.exe,這是合法的 AcroTranscoder.exe (根據 FileDescription,SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

您可能已經注意到,某些 DLL 檔案大於 11 MB。 這是因為可執行檔內放置了大量連續的隨機資料緩衝區。 這可能是避免某些安全產品檢測的一種方法。

確保堅持

資源 0x101 釋放器中包含兩個 32 位元整數,指定如何提供持久性。 第一個值指定惡意軟體在沒有管理員權限的情況下如何持續存在。

ESET:OceanLotus 網路組織的新後門交付方案
表 1. 無管理者權限的持久化機制

第二個整數的值指定惡意軟體在以管理員權限執行時應如何實現持久性。

ESET:OceanLotus 網路組織的新後門交付方案
表 2. 具有管理者權限的持久化機制

服務名稱是不含副檔名的檔案名稱; 顯示名稱是資料夾的名稱,但如果它已經存在,則會在其後附加字串“Revision 1」(數量不斷增加,直到找到未使用的名稱)。 操作員確保服務的持久性是穩健的 - 如果發生故障,服務應在 1 秒後重新啟動。 然後是值 WOW64 新服務的註冊表項設定為4,表示它是32位元服務。

計劃任務是透過幾個COM介面建立的: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler。 本質上,惡意軟體會建立隱藏任務,設定帳戶資訊以及當前使用者或管理員訊息,然後設定觸發器。

這是一項每日任務,持續時間為 24 小時,兩次執行之間的間隔為 10 分鐘,這意味著它將連續運行。

惡意位

在我們的範例中,可執行文件 TCPSVCS.exe (AcroTranscoder.exe)是載入隨其一起重置的 DLL 的合法軟體。 在這種情況下,有趣的是 Flash Video Extension.dll.

它的功能 DLLMain 只是呼叫另一個函數。 存在一些模糊謂詞:

ESET:OceanLotus 網路組織的新後門交付方案
圖 7. 模糊謂詞

經過這些誤導性檢查後,代碼會得到一個部分 .text 文件 TCPSVCS.exe,將其防禦更改為 PAGE_EXECUTE_READWRITE 並透過添加虛擬指令來重寫它:

ESET:OceanLotus 網路組織的新後門交付方案
圖 8. 指令序列

最後是函數位址 FLVCore::Uninitialize(void), 導出 Flash Video Extension.dll,新增指令 CALL。 這意味著惡意DLL載入後,當運行時調用 WinMain в TCPSVCS.exe,指令指標將指向NOP,導致 FLVCore::Uninitialize(void), 下個階段。

該函數只是創建一個互斥體,開頭為 {181C8480-A975-411C-AB0A-630DB8B0A221}後跟當前用戶名。 然後,它會讀取轉儲的 *.db3 檔案(其中包含與位置無關的程式碼),並使用 CreateThread 來執行內容。

*.db3 檔案的內容是 OceanLotus 組織通常使用的 shellcode。 我們再次使用我們發布的模擬器腳本成功解壓縮了其有效負載 在 GitHub 上.

腳本提取了最後階段。 該組件是一個後門,我們已經分析過 之前的海蓮花研究。 這可以透過GUID來確定 {A96B020F-0000-466F-A96D-A91BBF8EAC96} 二進位檔案。 惡意軟體配置在 PE 資源中仍然是加密的。 它的配置大致相同,但 C&C 伺服器與以前的不同:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

OceanLotus 團隊再次展示了不同技術的組合來避免檢測。 他們帶回來了一張「精緻」的感染過程圖。 透過選擇隨機名稱並用隨機資料填充可執行文件,它們減少了可靠 IoC 的數量(基於雜湊值和檔案名稱)。 而且,由於使用了第三方DLL加載,攻擊者只需刪除合法的二進位檔案即可 AcroTranscoder.

自解壓縮檔案

在 RTF 檔案之後,該小組轉向使用常見文件圖示的自解壓縮 (SFX) 存檔,以進一步迷惑使用者。 Threatbook 對此寫道(連結 的英文)。 啟動後,自解壓縮 RAR 檔案將被刪除,並執行帶有 .ocx 副檔名的 DLL,其最終有效負載已在先前記錄過 {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll。 自 2019 年 XNUMX 月中旬以來,OceanLotus 一直在重複使用該技術,但隨著時間的推移改變了一些配置。 在本節中,我們將討論技術和變化。

製作誘餌

文件 THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB)於 2018 年首次發現。 這個 SFX 檔案是明智地創建的 - 在描述中(版本信息)它說這是一張 JPEG 影像。 SFX 腳本如下所示:

ESET:OceanLotus 網路組織的新後門交付方案
圖 9.SFX 指令

惡意軟體重置 {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC),還有一張圖片 2018 thich thong lac.jpg.

誘餌圖像如下所示:

ESET:OceanLotus 網路組織的新後門交付方案
圖 10. 誘餌影像

您可能已經注意到,SFX 腳本中的前兩行調用 OCX 檔案兩次,但這不是錯誤。

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

OCX 檔案的控制流程與其他 OceanLotus 元件非常相似 - 許多命令序列 JZ/JNZ и PUSH/RET,與垃圾代碼交替。

ESET:OceanLotus 網路組織的新後門交付方案
圖 11. 混淆程式碼

過濾掉垃圾程式碼後,匯出 DllRegisterServer,稱為 regsvr32.exe, 如下:

ESET:OceanLotus 網路組織的新後門交付方案
圖 12. 基本安裝程式碼

基本上,在第一次通話時 DllRegisterServer 匯出設定註冊表值 HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model 對於 DLL 中的加密偏移量(0x10001DE0).

當第二次呼叫函數時,它會讀取相同的值並在該位址執行。 從這裡讀取並執行 RAM 中的資源和許多操作。

該 shellcode 與過去 OceanLotus 活動中使用的 PE 載入程式相同。 可以使用它來模擬 我們的劇本。 最後他重置了 db293b825dcc419ba7dc2c49fa2757ee.dll,將其加載到內存中並執行 DllEntry.

DLL 提取其資源的內容,對其進行解密 (AES-256-CBC) 和解壓縮 (LZMA)。 此資源具有特定的格式,易於反編譯。

ESET:OceanLotus 網路組織的新後門交付方案
圖 13. 安裝程式配置結構 (KaitaiStruct Visualizer)

配置是明確指定的 - 根據權限級別,二進位資料將被寫入 %appdata%IntellogsBackgroundUploadTask.cpl%windir%System32BackgroundUploadTask.cpl (或者 SysWOW64 對於 64 位元系統)。

透過創建名為的任務來確保進一步的持久性 BackgroundUploadTask[junk].job哪裡 [junk] 代表一組位元組 0x9D и 0xA0.

任務應用程式名稱 %windir%System32control.exe,參數值為下載的二進位檔案的路徑。 隱藏任務每天都會運行。

從結構上來說,CPL 檔案是一個具有內部名稱的 DLL ac8e06de0a6c4483af9837d96504127e.dll,導出一個函數 CPlApplet。 該檔案解密其唯一的資源 {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll,然後載入這個DLL並呼叫它唯一的導出 DllEntry.

後門設定檔

後門配置已加密並嵌入其資源中。 設定檔的結構與上一個非常相似。

ESET:OceanLotus 網路組織的新後門交付方案
圖 14. 後門配置結構(KaitaiStruct Visualizer)

儘管結構相似,但許多字段值已從圖中所示的值進行了更新 我們的舊報告.

二進位數組的第一個元素包含一個 DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), 經騰訊鑑定。 但由於導出名稱已從二進位檔案中刪除,因此雜湊值不符。

額外的研究

在收集樣本時,我們注意到一些特徵。 剛剛描述的標本出現在 2018 年 2019 月左右,其他類似標本最近出現在 XNUMX 年 XNUMX 月中旬至 XNUMX 月初。 SFX 檔案被用作感染媒介,丟棄合法的誘餌文件和惡意 OSX 檔案。

儘管 OceanLotus 使用假時間戳,但我們注意到 SFX 和 OCX 檔案的時間戳始終相同(0x57B0C36A (世界標準時間 08 年 14 月 2016 日 @ 晚上 7:15)和 0x498BE80F (分別為 02/06/2009 @ 7:34am UTC)。 這可能表明作者有某種“設計者”,使用相同的模板,只是改變了一些特徵。

在我們自 2018 年初以來研究的文件中,有各種名稱表明了攻擊者感興趣的國家:

— 柬埔寨媒體新聯絡資訊(New).xls.exe
— 李建香 (個人簡歷).exe(簡歷的偽造 pdf 文件)
— 回饋,28 年 29 月 2018 日至 XNUMX 日在美國舉行的集會.exe

自從發現後門 {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll 以及幾位研究人員發布的分析結果,我們觀察到惡意軟體配置資料發生了一些變化。

首先,作者開始從輔助 DLL 中刪除名稱(DNSprov.dll 和兩個版本 HttpProv.dll)。 然後操作員停止打包第三個 DLL(第二個版本 HttpProv.dll),選擇只嵌入一個。

其次,許多後門配置欄位被更改,隨著許多 IoC 可用,可能會逃避偵測。 作者修改的重要欄位包括:

  • AppX 登錄項目已變更(請參閱 IoC)
  • 互斥編碼字串(“def”、“abc”、“ghi”)
  • 端口號

最後,分析的所有新版本都在 IoC 部分中列出了新的 C&C。

發現

海蓮花不斷發展。 網路小組專注於完善和擴展工具和誘餌。 作者使用引人注目的文件來偽裝惡意負載,這些文件的主題與目標受害者相關。 他們開發新方案並使用公開可用的工具,例如公式編輯器漏洞。 此外,他們正在改進工具以減少受害者電腦上殘留的工件數量,從而減少被防毒軟體偵測到的機會。

妥協指標

妥協指標以及 MITRE ATT&CK 屬性均可使用 關於Welive安全 и 在 GitHub 上.

來源: www.habr.com

添加評論