KeyFrame內部研究專用

Deobfuscating Angel Drainer JS Kit | Shahar Madar (Fireblocks)

DeFi Security Summit - DSS·12月22日週日·10 min英文

三句話摘要

Fireblocks 安全團隊公開逆向工程「資產清空器」(Asset Drainer)惡意 JavaScript 的完整去混淆方法論。 對惡意 JS 進行去混淆的核心不在工具本身,而在「靜態 + 動態」雙軌策略:用 Babel AST 解構間接引用,用沙盒執行破解字串映射,缺一不可。 混淆是惡意軟體的核心防禦手段:惡意程式開發者透過混淆來延緩研究人員逆向進度、規避偵測系統,並維持大規模抽取錢包資金的能力;破解混淆等同於釜底抽薪。

重點整理

重點
  • 1

    混淆是惡意軟體的核心防禦手段:惡意程式開發者透過混淆來延緩研究人員逆向進度、規避偵測系統,並維持大規模抽取錢包資金的能力;破解混淆等同於釜底抽薪。

  • 2

    靜態分析不夠,必須能動態執行:研究團隊設定三個目標:程式碼可讀、可執行調試、最大化使用開源工具。純靜態分析無法解決字串映射問題,因此他們在沙盒中直接運行解包函式來取得真實字串。

  • 3

    三層混淆結構各有專屬破解策略:E(間接引用)用 Babel AST 替換為直接字串;D(字串映射表)用沙盒動態執行取得真實值;W(反調試層)用 WebCrack 移除,最終解鎖調試器存取能力。

  • 4

    逆向工程的最大價值在於發現「意外的簡單」:經數週工作後,团队發現某個讓研究人員大費周章的函式,其實只是關閉一個彈窗——這恰恰說明完整去混淆能揭露攻擊者真實意圖,避免對假複雜度浪費資源。

實用技巧與重點

乾貨
  • 受害者規模:數十萬人,損失超過 2000 萬美元
  • 資產清空器近期與競爭對手合併,能力進一步增強
  • 原始惡意程式碼:壓縮後單行 ~50 萬字元
  • 壓縮格式:XZ 壓縮 + Base64 編碼
  • 解包後程式碼量:28,000 行
  • JS 保護層:obator.io(常見商業混淆工具)
  • 工具鏈(按處理順序):
  • Unminify — 移除 JS 壓縮(Minification)
  • WebCrack — 破解 obator.io 保護,維持可調試性
  • Babel AST — 將間接引用(E 層)替換為直接字串(智慧型 Find & Replace)
  • 沙盒動態執行 — 解析字串映射表(D 層)
  • 三個混淆層代號:E(間接引用)、D(字串映射)、W(反調試)
  • 最新版本:Angel X(Angel Drainer 的升級版)
  • 鏈上 C2 機制:利用 Smart Contract Storage 進行指令控制
  • 延伸研究起點:Blockhead Research 部落格

結論

結論

對惡意 JS 進行去混淆的核心不在工具本身,而在「靜態 + 動態」雙軌策略:用 Babel AST 解構間接引用,用沙盒執行破解字串映射,缺一不可。

完整解析

詳細

資產清空器(Asset Drainer)是 Web3 領域最惡名昭彰的惡意工具包之一,已累計造成數十萬名受害者超過 2000 萬美元的損失。它近期更與同類競爭工具合併,使其能力大幅躍升。Fireblocks 產品安全團隊負責人 Shahar 與團隊成員 Matan 決定正面迎戰:真正去理解它的程式碼——但第一道牆就是嚴密的混淆保護。

混淆(Obfuscation)的存在並非意外。從惡意軟體開發者的視角,混淆能有效延緩逆向工程速度、增強惡意軟體韌性、逃避偵測系統,並讓大規模抽取加密錢包的行為更難被中斷。研究團隊因此設下三個明確目標:一、讓程式碼可讀(移除所有混淆層);二、讓程式碼可執行並能調試(不只做靜態分析);三、最大化使用開源工具,不重複造輪子。

技術處理流程分為多個階段。第一層:惡意 JS 載入器是壓縮後的單行程式碼,約 50 萬字元,用 XZ 壓縮並以 Base64 編碼。研究員用 Unminify 解壓縮後,逆向操作——先 Base64 解碼、再 XZ 解壓——取得較可讀的 JavaScript。第二層:解包後的程式碼受 obator.io 保護,這是常見的商業級 JS 混淆工具。研究員比較了數個開源工具後,選擇 WebCrack,原因是它在去混淆的同時仍保持程式碼的可調試性。解包後得到約 28,000 行程式碼,但仍存在三個關鍵混淆層。

針對三個混淆層,研究團隊各施策略:「E 層」是大量間接引用,研究員使用 Babel 將程式碼解析為抽象語法樹(AST),再以智慧型替換將所有間接引用轉為直接字串,類似結構感知的 Find & Replace。「D 層」是字串映射表,靜態分析無從下手,因此研究員將該函式抽出,在沙盒環境中直接執行,用實際執行結果消除字串間接性。「W 層」是反調試保護,最後一輪 WebCrack 將其全數移除,使調試器終於能正常掛接。

經過數週工作,團隊成功拿到可讀且可執行的完整原始碼。最具諷刺意味的收穫是:某個讓研究人員大費周章的函式,拆開後發現它只是「關閉一個彈窗」。這個結果恰好證明了完整去混淆的核心價值——你必須真正讀懂程式碼,才能分辨哪些是真正的攻擊邏輯、哪些只是迷霧。目前 Angel X(資產清空器的最新版本)已成為下一個研究標的,其中特別值得關注的是它以 Smart Contract Storage 實現的鏈上指令控制(On-Chain C2)機制,研究起點可參考 Blockhead Research 部落格。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

Risky Bulletin: Russia starts blocking DoH and DoT
編輯精選
8 min
Web2 安全英文PODCAST8月26日

Risky Bulletin: Russia starts blocking DoH and DoT

Risky Business

  • 國家級網路管制層級提升:俄羅斯主動封鎖加密 DNS 協定對抗審查工具,中國加速淘汰 Windows 系統並遷移自主 Linux 發行版,各國正透過技術與法律手段強化網路主權與信息控制能力。
  • 詐騙犯罪走向精密化與自動化:從冒充警察的聲音詐騙(竊取 7.2 百萬美元)、AI 語音代理自動化破解 iPhone 啟用鎖、到跨越數百網站的投資詐騙(詐騙 7400 萬美元),犯罪組織正利用自動化工具與 AI 技術大幅降低成本並擴大規模。
  • AI 惡意軟體威脅實際上被嚴重誇大:405 個整合 AI 的惡意軟體樣本中僅 12 個於真實感染被偵測,其餘來自測試環境,證明當前 AI 惡意軟體仍停留於實驗階段,尚未構成主流威脅。
SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;
5 min
Web2 安全英文PODCAST8月26日

SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;

SANS Stormcast

  • SSRF 攻擊者已進化出高級繞過手段,不直接使用元數據服務 IP(169.254.169.254),而改用專門域名服務將請求轉址,支援點或破折號分隔 IP,甚至可自部署 DNS 伺服器進行 DNS 重綁定攻擊,使傳統簡易過濾機制失效。
  • 本地 AI 模型並非完全隱私:微軟 Paint 雖在本地執行生成邏輯,但安全檢查需上傳提示文字至遠程伺服器,返回時圖像內嵌不易移除的伺服器 GUID 隱形浮水印,可見浮水印(Copilot 圖標)則易被移除。
  • 傳統 FTP 協議被新型惡意軟體重新利用為命令控制通道,透過 FTP banner 傳遞指令於連接埠 21,防守者應視任何出站 FTP 流量為異常信號。
SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。