在這篇文章中,我們將討論 OceanLotus 網路組織(APT32 和 APT-C-00)最近如何利用一個公開的漏洞來 、Microsoft Office 中的記憶體損壞漏洞,以及該組織的惡意軟體如何在受感染的系統中實現持久性而不留下任何痕跡。接下來,我們將描述自 2019 年初以來,該組織如何使用自解壓縮檔案來運行程式碼。
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 格式(見下圖),包含垃圾程式碼,並且已損壞。

圖 1. RTF 中的“垃圾”
儘管存在損壞的元素,Word 仍成功開啟此 RTF 檔案。從圖 2 可以看出,在偏移量 0xC00 處有一個 EQNOLEFILEHDR 結構,後面跟著一個 MTEF 標頭,然後是字體的 MTEF 記錄(圖 3)。

圖 2. FONT 記錄值

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

圖 4. 漏洞利用 shellcode 的開始
地址 0x45BD3C 儲存一個被取消引用的變量,直到它到達指向當前加載的結構的指針 MTEFData。其餘的 shellcode 位於此處。
這個shellcode的目的是執行嵌入在開啟的文件中的shellcode的第二個片段。首先,原始 shellcode 嘗試透過遍歷所有系統描述符來尋找開啟文件的文件描述符(NtQuerySystemInformation 有一個論點 SystemExtendedHandleInformation)並檢查它們是否匹配 PID 描述符和 PID 過程 WinWord 以及文件是否使用存取遮罩開啟— 0x12019F.
為了確認找到了正確的句柄(而不是另一個打開的文件的句柄),使用函數顯示文件內容 CreateFileMapping,shellcode 檢查文檔的最後四個位元組是否匹配“yyyy「(尋蛋法)。一旦找到匹配項,文件就會被複製到臨時資料夾 (GetTempPath) 如何 ole.dll。然後讀取文檔的最後 12 個位元組。
![]()
圖 5. 文件結束標記
標記之間的 32 位元值 AABBCCDD и yyyy – 這是下一個 shellcode 的偏移量。它使用函數調用 CreateThread。提取了與 OceanLotus 組織之前使用的相同的 shellcode。 我們在 2018 年 XNUMX 月發布的,仍然適用於第二階段轉儲。
第二階段
提取組件
檔案和目錄名稱是動態選擇的。程式碼隨機選擇一個可執行檔或 DLL 檔案的名稱 C:Windowssystem32。然後它向其資源發出請求並檢索字段 FileDescription 用作資料夾名稱。如果這不起作用,程式碼將從目錄中隨機選擇一個資料夾名稱 %ProgramFiles% 或 C:Windows (取自 Get)WindowsDirectoryW)。它避免使用可能與現有文件衝突的名稱,並確保它不包含以下單字: windows, Microsoft, desktop, system, system32 或 syswow64。如果目錄已經存在,則會在名稱後面附加「NLS_{6 個字元}」。
資源 0x102 分析並將文件轉儲到 %ProgramFiles% 或 %AppData%,放入隨機選擇的資料夾中。建立時間變更為具有與 kernel32.dll.
例如,這是透過選擇可執行檔建立的資料夾和檔案列表 C:Windowssystem32TCPSVCS.exe 作為資料來源。

圖6. 各種成分的萃取
資源結構 0x102 滴管內部相當複雜。簡而言之,它包含:
— 檔案名稱
— 文件的大小和內容
— 壓縮格式(COMPRESSION_FORMAT_LZNT1,由函數使用 RtlDecompressBuffer)
第一個文件被轉儲為 TCPSVCS.exe,這是合法的 AcroTranscoder.exe (根據 FileDescription、SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).
您可能已經注意到,一些 DLL 檔案大於 11 MB。這是因為可執行檔內部放置了一個包含隨機資料的大型連續緩衝區。這可能是一種避免被某些安全產品偵測的方法。
確保持久性
資源 0x101 此投放器包含兩個 32 位元整數,用於指定如何提供持久性。第一個值指定惡意軟體如何在沒有管理員權限的情況下保持持久性。

表 1. 無需管理員權限的持久性機制
第二個整數的值指定惡意軟體以管理員權限執行時應如何確保持久性。

表 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 只是呼叫另一個函數。存在一些模糊謂詞:

圖 7. 模糊謂詞
經過這些誤導性的檢查後,代碼會得到一個部分 .text 文件 TCPSVCS.exe,將其防禦改為 PAGE_EXECUTE_READWRITE 並透過添加虛擬指令來覆蓋它:

圖 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。我們使用發布的模擬器腳本成功解壓縮了其有效載荷 .
腳本提取最後階段。這個組件是一個後門,我們已經分析過 。這可以透過 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 腳本如下所示:

圖 9. SFX 指令
惡意軟體重置 {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC),以及一張圖片 2018 thich thong lac.jpg.
誘餌圖像如下所示:

圖 10. 誘餌影像
您可能已經注意到,SFX 腳本中的前兩行調用了兩次 OCX 文件,但這並不是錯誤。
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
OCX 檔案的控制流與其他 OceanLotus 元件非常相似 - 大量指令序列 JZ/JNZ и PUSH/RET,與垃圾代碼交替出現。

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

圖 12. 主安裝程式碼
基本上,第一次通話 DllRegisterServer 匯出設定註冊表值 HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model 用於 DLL 中的加密偏移量(0x10001DE0).
當第二次呼叫函數時,它會讀取相同的值並在該位址執行。從這裡讀取和執行資源,並在 RAM 中執行許多操作。
該 shellcode 與先前的 OceanLotus 活動中使用的 PE 載入程式相同。可以使用以下方式進行模擬 。最後他放棄了 db293b825dcc419ba7dc2c49fa2757ee.dll,將其載入到記憶體並執行 DllEntry.
DLL 提取其資源的內容,解密(AES-256-CBC)並解壓縮(LZMA)。此資源具有特定的格式,可以輕鬆反編譯。

圖 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.
後門設定檔
後門配置被加密並嵌入到其資源中。配置文件的結構與前一個非常相似。

圖14.後門配置結構(KaitaiStruct Visualizer)
儘管結構相似,但與提供的數據相比,許多字段的值已經更新 .
二進制數組的第一個元素包含 DLL(HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), 。但由於導出名稱已從二進位檔案中刪除,因此雜湊值不符。
額外的研究
在收集樣本時,我們注意到了一些特徵。剛剛描述的樣本出現在 2018 年 2019 月左右,其他類似的樣本出現得更晚,出現在 XNUMX 年 XNUMX 月中旬至 XNUMX 月初。使用的感染媒介是一個 SFX 檔案,它釋放了一個合法的誘餌文件和一個惡意的 OCX 檔案。
儘管 OceanLotus 使用偽造的時間戳,但我們注意到 SFX 和 OCX 檔案的時間戳始終相同(0x57B0C36A (08年14月2016日晚上7:15 UTC)和 0x498BE80F (分別為 02 年 06 月 2009 日 @ 上午 7:34 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 屬性 и .
來源: www.habr.com
