惡意程式
攻擊跡象顯示,全球最大的暗網市場之一 Genesis Market 可能死灰復燃,濫用 Node.js 以及延伸驗證程式碼簽章 (EV Code Signing)
趨勢科技 Trend Micro Managed XDR 團隊最近偵測到一些攻擊行動,似乎使用了2023 年 4 月已經遭警方關閉,因專門協助詐騙而惡名昭彰,曾經是全球最大的線上犯罪市場之一「創世紀市場」(Genesis Market)用過的技巧。
趨勢科技 Trend Micro Managed XDR 團隊最近偵測到一些攻擊行動,似乎使用了 Genesis Market 網站曾經用過的技巧,該網站是 2023 年 4 月已經遭警方關閉的一個專門協助詐騙的網站,許多駭客或網路詐騙者,常利用該網站購買受害者帳號密碼。(不過,仍有一些報導指出其基礎架構和商品仍在地下市場上販售,這或許能解釋為何 Genesis Market 所使用的技巧又出現在目前的攻擊中。) 這些攻擊幕後的駭客使用者 Node.js 來當成後門平台,並利用延伸驗證 (Extended Validation,簡稱 EV) 程式碼簽章 (Code Signing) 來躲避偵測,同時可能還利用 Google Colab 架設了一些經過搜尋引擎最佳化處理的下載網站。被感染的使用者可能會讓駭客在他們的系統上執行後門指令以及惡意檔案,如 Lu0bot 惡意程式,該程式可以幫駭客執行各種任務,包括:蒐集資料、發動阻斷服務 (DoS) 攻擊等等。
本文提供這些攻擊的技術分析,包括我們如何確定我們的推論正確,以及駭客還使用了哪些其他技巧。
感染過程
以下是我們觀察到的事件發生時間順序:
時間順序 | 活動 |
---|---|
T0 | 一個名為「microsoft_barcode_control_16.0_download.exe」的檔案 (3364dd410527f6fc2c2615aa906454116462bf96) 經由瀏覽器被下載。 |
+ 20 秒 | 使用者執行該檔案。 |
+ 1 分 15 秒 | 第一個惡意檔案被執行。 |
+ 1 秒 | 第二個惡意檔案被執行。 |
+ 13 秒 | 經由 lu0bot 執行第一道後門指令。 |
+ 3 分 20 秒 | 經由 lu0bot 執行最後一道後門指令。 |
表 1:觀察到的事件發生時間順序。
Trend Vision One 的攻擊執行狀況 (Execution Profile) 功能顯示了下列感染活動:
攻擊的第一階段
我們蒐集到了某個惡意執行檔,這是第一階段感染所使用的載入器 (後面會談到駭客如何突破防線的可能方式)。其中的一個載入器當中含有一段使用者可用搜尋引擎查詢的文字:
- C:\Users\{username}\Dwnloads\microsoft_barcode_control_16.0_download.exe
(3364dd410527f6fc2c2615aa906454116462bf96)
在分析過 microsoft_barcode_control_16.0_download.exe 這個檔案 (SHA256: 3364dd410527f6fc2c2615aa906454116462bf96) 之後,我們發現它是使用 Inno Setup 這個免費的 Windows 軟體安裝程式來壓縮檔案,這一點跟 Sector 7 的報告分析到的樣本一致。
這個載入器的目的是要執行一個被注入惡意程式碼的 explorer.exe (瀏覽器) 處理程序,並從幕後操縱 (CC) 伺服器下載檔案來進入第二階段。
其 TMP 暫存檔案之所以使用相同的檔名,是因為它用了 Inno Setup 安裝程式來植入必要的檔案。我們可以透過第三方工具,如 innounp (Inno Setup 的解壓縮程式) 來查看安裝檔裡面有哪些檔案,以及安裝腳本。
眼前分析的這個樣本會執行 SutiLauncher.exe 這個檔案 (SHA256: 506accb774d2a2be4b0ee3bdd3c549f09684ab9b),而不是 Sector 7 的報告中所提到的 DLL 檔案。但這個執行檔會載入 SutiLauncher.dll (SHA256: e3887b1eddbdd9d4e5b042a85909b69919204570),裡面含就有惡意程式碼。
SutiLauncher.dll 是一個編譯過的 .NET Core 檔案,可執行下工作:
- 連上 hxxps://iplogger[.]com/1uPSK4 來檢查連線。
- 連上 hxxps://sito-company[.]com/launcher/auth?login={login}&pass={pass} 來取得網站的回應,如果網站的回應是「true」,就執行 tool.exe 這個檔案。
- 連上 hxxps://complete-s[.]monster/upd.php 來下載一個加密過的 shellcode,將它載入記憶體中解密並執行。
根據 Vision One 所記錄到的感染過程顯示,惡意程式碼是被注入的,隨後便進入攻擊的第二階段。
這個將惡意程式碼注入 explorer.exe 的動作有可能是由前述下載的 shellcode 來執行。不過,該網址在我們分析時已經無法連上,所以我們也無法透過逆向工程方式來確認這項行為。
攻擊的第二階段
在攻擊的第二階段,載入器會先安裝一個惡意的 Google Chrome 擴充功能。這個擴充功能安裝完成後,就會不斷將瀏覽器上的敏感資訊,包括使用者的登入憑證,傳送給駭客。這個惡意的擴充功能、被植入的捷徑,以及負責執行安裝動作的 PowerShell 腳本,都跟之前 Genesis Market 的樣本非常類似。
接下來,若使用者透過這階段產生的捷徑來執行 Chrome,就會啟動惡意擴充功能。
載入器會幫擴充功能建立下列檔案 (註:這些檔案的路徑可用來偵測系統是否遭到感染):
- C:\Users\{username}\AppData\Local\Default\app.html
- C:\Users\{username}\AppData\Local\Default\config.js
- C:\Users\{username}\AppData\Local\Default\ico.png
- C:\Users\{username}\AppData\Local\Default\manifest.json
- C:\Users\{username}\AppData\Local\Default\modules\content-scripts-register-polyfill.4.0.0.js
- C:\Users\{username}\AppData\Local\Default\rules.json
- C:\Users\{username}\AppData\Local\Default\src\background.js
- C:\Users\{username}\AppData\Local\Default\src\content\main.js
- C:\Users\{username}\AppData\Local\Default\src\functions\clipper.js
- C:\Users\{username}\AppData\Local\Default\src\functions\commands.js
- C:\Users\{username}\AppData\Local\Default\src\functions\csp.js
- C:\Users\{username}\AppData\Local\Default\src\functions\domain.js
- C:\Users\{username}\AppData\Local\Default\src\functions\exchangeSettings.js
- C:\Users\{username}\AppData\Local\Default\src\functions\extensions.js
- C:\Users\{username}\AppData\Local\Default\src\functions\getMachineInfo.js
- C:\Users\{username}\AppData\Local\Default\src\functions\injections.js
- C:\Users\{username}\AppData\Local\Default\src\functions\notifications.js
- C:\Users\{username}\AppData\Local\Default\src\functions\proxy.js
- C:\Users\{username}\AppData\Local\Default\src\functions\screenshot.js
- C:\Users\{username}\AppData\Local\Default\src\functions\screenshotRules.js
- C:\Users\{username}\AppData\Local\Default\src\functions\settings.js
- C:\Users\{username}\AppData\Local\Default\src\functions\tabs.js
- C:\Users\{username}\AppData\Local\Default\src\functions\utils.js
- C:\Users\{username}\AppData\Local\Default\src\mails\gmail.js
- C:\Users\{username}\AppData\Local\DesktopCleanup\Google Chrome.lnk
- C:\Users\{username}\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Google Chrome.lnk
- C:\Users\{username}\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Google Chrome.lnk
- C:\Users\{username}\OneDrive\Desktop\Google Chrome.lnk
在攻擊的第二階段,載入器會啟動第二個惡意檔案。在趨勢科技分析的一個案例中,載入器在第一階段會啟動 explorer.exe 並注入惡意程式碼來植入並執行一個名為 svchost.Bat 的批次檔。接著會執行一個 MSI 安裝程式 (Node.js)。
接下來的感染程序會安裝一個舊版的合法 Node.js 檔案,它內含一個合法有效的程式碼簽章憑證。這裡很重要的一點是,這並非意味著被感染的使用者是因為使用了舊版的 Node.js 模組才遭到感染,因為此模組是駭客帶來植入到系統上的 (而非原本就已經安裝在系統上)。
- SHA1 雜湊碼:6817df1da376e8f6e68fd1ad06d78f02406b6e19
- 檔案版本:0.10.41
- 簽署者:Node.js Foundation
- 簽署日期:2015-12-04 03:46:00 UTC
- 安裝路徑:C:\ProgramData\DNTException\node.exe
在仔細研究過這個惡意檔案之後,趨勢科技發現它就是 Any.run 所分析到的 Lu0Bot 惡意程式。
此惡意檔案在安裝之後就會在 Node.js 上啟動,接著它會收到數個來自 CC 伺服器經由後門傳送過來的指令 (有可能是經由人為操作),接著會執行這些指令:
- "C:\Users\{username}\AppData\Local\Temp\nvnnimjsd\fnichvxlmq.exe"
- "C:\Users\{username}\AppData\Local\Temp\nvnnimjsd\lgjnbyhdmf.dat" 3721679456
- attrib.exe +H "C:\ProgramData\Intel\Intel(R) Management Engine Components"
- attrib.exe +H "C:\ProgramData\Intel\Intel(R) Management Engine Components\Intel MEC 3573217561"
- attrib.exe +H "C:\ProgramData\Intel\Intel(R) Management Engine Components\Intel MEC 3806163581"
- attrib.exe +H C:\ProgramData\DNTException
- attrib.exe +H C:\ProgramData\DNTException\node.exe
- attrib.exe +H C:\ProgramData\Intel
- C:\Users\{username}\AppData\Local\Temp\nvnnimjsd\fnichvxlmq.exe C:\Users\{username}\AppData\Local\Temp\nvnnimjsd\lgjnbyhdmf.dat 3721679456 1369574819
- cacls.exe C:\ProgramData\DNTException /t /e /c /g Everyone:F
- cacls.exe C:\ProgramData\Intel /t /e /c /g Everyone:F
- cmd.exe /c dir C:\
- icacls.exe C:\ProgramData\DNTException /t /c /grant *S-1-1-0:(f)
- icacls.exe C:\ProgramData\Intel /t /c /grant *S-1-1-0:(f)
- ipconfig.exe /all
- netstat.exe -ano
- node.exe node.lib 3721679456 3015897030
- reg.exe add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Intel Management Engine Components 1808681674" /t REG_SZ /d "wscript.exe /t:30 /nologo /e:jscript \"C:\ProgramData\Intel\Intel(R) Management Engine Components\Intel MEC 3573217561\" \"C:\ProgramData\Intel\Intel(R) Management Engine Components\" 2779289286" /f
- reg.exe add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Intel Management Engine Components 1808681674" /t REG_SZ /d "wscript.exe /t:30 /nologo /e:jscript \"C:\ProgramData\Intel\Intel(R) Management Engine Components\Intel MEC 3573217561\" \"C:\ProgramData\Intel\Intel(R) Management Engine Components\" 2779289286" /f
- reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
- reg.exe query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- reg.exe query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- reg.exe query HKLM\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}
- reg.exe query HKLM\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000
- reg.exe query HKLM\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001
- route.exe print
- systeminfo.exe /fo csv
- tasklist /fo csv /nh
- wmic process get processid,parentprocessid,name,executablepath /format:csv
- wmic process get processid,parentprocessid,name,executablepath,commandline /format:csv
Vision One 的執行狀況分析顯示了 MSI 安裝程式啟動的過程。首先是安裝 Node.js,然後在該模組上啟動 Lu0Bot 惡意程式,接著是執行後門指令。
在前一節中,我們提到 svchost.Bat 檔案植入了一個舊版的 Node.js 模組以及 Lu0Bot 惡意程式。不過,我們也觀察到載入器還會啟動幾個其他類型的次要惡意程式,它們同樣也是偽裝成一個 svchost 檔案。這些是由第一個惡意程式所啟動,我們沒有偵測到任何跟這些惡意程式相關的 Node.js 的濫用情況。
目前趨勢科技觀察到的案例有:
- C:\Users\{username}\AppData\Local\Temp\RTIvsEUane3TLWA\svchost.exe
- C:\Users\{username}\AppData\Local\Temp\nJAnCiq3sxgojkV\svchost.dll
- C:\Users\{username}\AppData\Local\Temp\6\kzC88czML4rqbVN\svchost.dll" (43f11d6ec961fc82cf53e4eca97c429285026f3e)
這顯示這些次要惡意程式是可以隨時更換的,並且是在第一階段載入器執行期間所取得,所以看來駭客執行的惡意行為會隨感染的時間點或感染的樣本而異。
載入器與惡意程式擁有延伸驗證 (EV) 程式碼簽章憑證
我們在調查期間發現了數個擁有延伸認證 (EV) 程式碼簽章憑證的樣本,駭客很可能是利用這項技巧來躲避偵測 (讓樣本看起來像合法程式)。
如同趨勢科技先前的報告所說,駭客從網際網路下載的執行檔中會含有 EV 程式碼簽章。這顯示,駭客積極地躲避網站、搜尋引擎、瀏覽器和操作系統的偵查,尤其是可執行文件從網路上下載時。這樣做還有一個效果是,可以在使用者啟動執行檔時,盡量避免作業系統發出警告。
我們發現兩個同樣經過 EV 程式碼簽署、且來自不同地點的載入器擁有不同的檔案名稱 (取決於使用者搜尋時使用的關鍵字),但兩個檔案的雜湊碼卻完全相同。
- C:\Users\{username}\Downloads\microsoft_barcode_control_16.0_download.exe (3364dd410527f6fc2c2615aa906454116462bf96)
- C:\Users\{username}\Downloads\avenir next heavy font.exe (3364dd410527f6fc2c2615aa906454116462bf96)
在本文撰稿時,這些憑證都已經被撤銷。EV 程式碼簽章憑證規定金鑰必須符合高強度規格,而且今日已經不能再利用過去那種竊取私密金鑰的方式,從軟體中竊取出 PKCS12 檔案內的金鑰和憑證。本次簽章所用的憑證很可能是來自一家普通的小型企業,他們應該是受害者。除了駭客可能自己本身就持有私密金鑰之外,也有可能駭客是使用了被盜的遠端簽署服務帳號,或是取得了私密金鑰所連接的主機的存取權限。目前我們並不清楚駭客如何取得這個程式碼簽章憑證的私密金鑰。
突破防線
請注意,儘管我們對於駭客突破防線的方式無法下定論,但我們有證據顯示駭客可能使用了何種技巧來進入他們的目標系統,以下將逐一討論。
Trend Vision One 記錄了整個感染流程的動作,包括執行預設瀏覽器 (此處為 Google Chrome,由 Zoom 所啟動),然後下載用來突破防線的惡意檔案。這意味著 Zoom 可能是這次攻擊的破口,但我們無法確定這點。
被下載的檔案擁有某個特殊字型的名稱,所以有可能使用者原本是在下載字型檔,因為使用者的下載目錄中有好幾個擁有這個字型名稱的檔案。
除了誘騙受害者加入惡意 Zoom 會議,攻擊者還可能利用精心優化搜尋排名的 Google Colab 網站,一旦訪問這些網站,就可能啟動感染鏈。
當我們在調查這個案例時,發現了一個經由 Google Colab 網站大規模散播惡意檔案的行動,駭客甚至幫這些網站做了 SEO 搜尋引擎最佳化處理,以提高搜尋結果露出排名。2023 年 7 月由 Sucuri 撰寫的一份報告指出,該行動從 2022 年 7 月便開始活躍,其經過 SEO 搜尋引擎最佳化處理的關鍵字是賭博相關的字詞。不過,駭客目前的 SEO 字詞範圍似乎有縮小,主要針對工具和字型,而非那些較不可能被列在搜尋結果頂端的一般性字詞。
在我們的調查期間,某家被感染的使用者,跟我們提到他們下載了一個搜尋結果頁面上列出的檔案。當我們自己使用該工具的名稱去試圖搜尋時,我們發現第一頁上出現了一個可疑的網站。
當點選這個網站時,就會出現一個 Google Colab 文件,裡面提供了一個似乎是用來下載某個合法工具的連結 (參見圖 7)。然而若點選該連結,就會被帶到各種不同的惡意網頁 (每次點選都會被帶到不同網頁)。
我們發現了許多像這樣利用 Colab 來誘騙使用者下載檔案的網站。在調查期間,我們甚至可透過像 site:colab.research.google.com trend micro 這樣的搜尋關鍵字來搜尋,就能發現一些含有趨勢科技內容的網站。
在一開始調查時,如果我們試著存取任何被濫用的 Cobal 網站,就會被帶到一個下載 Opera GX 合法瀏覽器的網頁。但改天再回來調查時,我們卻被帶到一個下載合法 7zip 安裝程式的網頁。所以,駭客有可能已設置了一套躲避分析的機制來管理該將使用者重導到哪些地點。
雖然我們確實有一名使用者在試圖下載某個工具或字型檔時,遭遇到濫用 Colab 的網站,但我們卻無法發現這些網站本身有散播任何惡意程式的行為。因此,我們將這些 Colab 網站列為可能用來突破防線的入侵點,而非確定的入侵點。
類似的攻擊使用了相同的基礎架構
我們在研究過程中也發現了一些類似 (但不同) 的攻擊使用了相同的 CC 基礎架構和模組。
在 explorer.exe 被注入程式碼之後,我們偵測到有某個連線連上以下兩個 CC IP 位址:91[.]212[.]166[.]16:443 和 91[.]103[.]252[.]74:80。這兩個 IP 位址曾經跟一些資訊竊取程式扯上關係,如 StealC 和 Vidar。其中某次的連線似乎試圖下載一個名為 rar.exe 的檔案。
趨勢科技之前就對這些 CC 位址有所掌握跟了解,而這就是為何我們能夠攔截並阻斷這一段的攻擊鏈。
結論與建議
由於這起攻擊的入侵點很可能來自下載網站,或是經由通訊軟體散播,所以使用者很重要的就是要對自己從網路下載的檔案和程式隨時保持警覺。使用者應避免安裝任何從網路下載的程式(尤其是在企業電腦上),除非是來自官方來源或網站。
當下載經由社群媒體或聊天應用程式發送的檔案時,使用者首先應該考慮的是安全性。以下分享一些值得遵守的良好習慣。使用者在下載任何檔案之前,都應該先確認發送人的身分。如果訊息看起來可疑或者不請自來,請先透過其他管道驗證一下發送人的身分。一般而言,使用者應特別小心執行檔 (也就是 .exe 檔案) 或者副檔名看起來很奇怪的檔案,因為這些檔案經常被惡意程式攻擊當成突破防線的工具。
最後一個良好的資安習慣是,不論個人或企業都應該定期更新自己的軟體。更新當中經常會包含一些可防範潛在漏洞的資安修補。
此外,像 Trend Vision One 這樣的全方位偵測及回應解決方案能提供強大的 XDR 功能,這些功能會蒐集和交叉關聯來自各防護層的資料,涵蓋電子郵件、端點、伺服器、雲端工作負載及網路,同時還提供自動化防護來遏止攻擊,並持續偵測任何值得關注的事件。
入侵指標資料
如需本文提到的入侵指標完整清單,請至此處。