KeyFrame內部研究專用

DEF CON 33 - Go Malware Meets IoT - Challenges, Blind Spots, and Botnets - Asher Davila

DEFCONConference·10月10日週五·47 min英文

三句話摘要

Go語言惡意軟體分析技術與AI輔助逆向工程實戰演講 Go惡意軟體的逆向分析需打破傳統C/C++工具思維,建立Go特化工具鏈(Ghidra Go編譯器、go strings外掛、gore),配合AI輔助加速初期偵察,但最終判斷權必須掌握在人手上——AI加速但不替代驗證。 Go成為恶意软件首選的技術原因:跨平台支持16-17個作業系統、二進制預設靜態編譯導致文件龐大、自包含特性減少外部依賴,使安全掃描器因文件限制而跳過分析,難以逆向工程。

重點整理

重點
  • 1

    Go成為恶意软件首選的技術原因:跨平台支持16-17個作業系統、二進制預設靜態編譯導致文件龐大、自包含特性減少外部依賴,使安全掃描器因文件限制而跳過分析,難以逆向工程。

  • 2

    Go二進制分析的核心挑戰:靜態鏈接導致函數數量激增(典型案例1800個 vs C的10個),字符串採計數與長度元組存儲而非null終止,標準工具(如strings命令)失效,需Ghidra編譯器選項或NCC Group開發的go strings外掛才能正確識別。

  • 3

    AI輔助分析的實踐邊界:R2 AI如同Clippy助手提供命令建議而非自動化解决,Ghidra MCP可自動化執行命令序列但在自定義打包器上失效,Sidekick限定於單一函數提問;三款工具均能加速初期偵察但在複雜逆向(如CTF挑戰的自定義密碼)易陷困境。

  • 4

    混合驗證策略的必要性:演講者手動檢驗AI輸出發現誤判(如錯誤重建的HTTP payload),強調需交叉驗證字符串偏移、地址映射、CVE真假正例,最終人工確認前信息才可用於檢測簽名編寫。

實用技巧與重點

乾貨
  • 技術數據
  • Go首次公開發布:2009年11月
  • 支持操作系統數:16-17個
  • 靜態二進制示例(Hello World):C版本 16KB,Go版本 2.2MB
  • 函數數量對比:Go版本 ~1800個,C版本 10個
  • Botana Go發現時間:2021年
  • Botana Go針對的漏洞數:30+個
  • Botana Go VirusTotal檢測率:66個廠商中41個(62%)
  • Go二進制數據峰值:2025年2月-3月
  • 工具清單(開源優先)
  • 反彙編器/編譯器:Radare2(R2)、Ghidra、Binary Ninja
  • AI輔助:R2 AI、R2 MCP、Ghidra MCP、Sidekick(商用)
  • 字符串提取:go strings(NCC Group外掛)、gore、go red team
  • 命令:aaa(完整分析)、pd(打印反彙編)、fl(列表函數)、px(十六進制轉儲)、izz(字符串搜尋)
  • Go特殊結構
  • go build info section:所有ELF/Mach-O二進制都有,PE檔案位於data section
  • go PC line table:映射程序計數器到源代碼行號,用於函數重建,magic number隨Go版本變更(非固定0xF1FFFF)
  • struct func:包含uintptr(函數起點)與name(函數名稱)
  • 字符串類型:動態分配(運行時重建)與靜態分配(大型非結構化字符塊)
  • 具體案例樣本
  • Botana Go:SHA256(未在逐字稿中列出但提及可用)、ELF 64位、動態鏈接、非strip
  • PumaBot:目標巴西Pumatronic監控系統、SSH暴力破解、disguised服務名(my$QI而非mySQL)用於持久化
  • Goblin EXE反向題:自定義打包程序、Ninja Don't Cry header、版本5資料、失敗採用標準解壓算法
  • API設定
  • R2 AI provider範例:Gemini、本地模型、自有伺服器
  • 模型範例:Gemini 2.5 Pro、R2AI、DK(LLVM IR編譯模式)
  • Ghidra MCP設定:GitHub下載、Binary Ninja擴充、Claude本地MCP伺服器配置
  • 關鍵字符串指標
  • fmt.Println、runtime panic、Go版本號 → 識別Go二進制
  • infect_[vendor](如infect_alcatel、infect_dlink)→ 目標列表
  • HTTP payload字符串、wget命令、shell代碼 → 命令注入向量

結論

結論

Go惡意軟體的逆向分析需打破傳統C/C++工具思維,建立Go特化工具鏈(Ghidra Go編譯器、go strings外掛、gore),配合AI輔助加速初期偵察,但最終判斷權必須掌握在人手上——AI加速但不替代驗證。

完整解析

詳細

Go語言自2009年開源以來,因其跨平台特性與靜態編譯模式,逐漸被惡意軟體作者青睞。Palo Alto Networks研究團隊在過去一年的內部監測中發現,Go惡意軟體在2025年2月至3月出現明顯峰值,涵蓋botnet、挖礦程式與sleeper植入物等多種類型。這股趨勢反映在野外樣本中——從針對烏克蘭SCADA系統的Frosty(攻擊Modbus協議)、到大規模掃描IoT設備的Botana Go與PumaBot——Go已成為高級威脅的載體。

分析Go惡意軟體的首要困難在於二進制的異常龐大:同一個Hello World程序,C編譯後16KB,Go卻膨脹到2.2MB。這龐大的體積源於Go的靜態鏈接策略——所有標準庫與運行時都被內嵌到二進制中。結果是函數爆炸:同樣的程序,Go包含1800多個函數,C僅10個。標準反彙編工具難以應對,IDA或Ghidra打開時往往需要手動指定Go編譯器選項才能正確解析。更棘手的是字符串處理——Go的字符串不使用C風格的null終止符,而是由指針與長度元組組成,導致strings命令輸出一團亂碼。NCC Group開發的go strings外掛透過八步工序(包括資料段提取、結構推斷)才能把雜訊中的合法字符串篩選出來。

演講者以Botana Go為案例,展示如何在Radare2中交叉參考漏洞編號與payload字符串,發現該惡意軟體針對TP-Link、D-Link、Fiber Home等30多個IoT廠商的已知漏洞執行命令注入攻擊。關鍵發現來自go build info區段——Go二進制預設保留編譯元資料(Go版本、編譯時間、架構),這是C strip後消失的信息。go PC line table更提供函數地址映射,成為重建二進制的關鍵;但務必注意magic number隨Go版本變更,寫自動化工具時不能硬編碼0xF1FFFF。

為了加速分析,研究團隊引入AI輔助工具。R2 AI扮演「Clippy助手」角色,根據用戶查詢(如「這個程序用什麼語言寫的?」)動態建議Radare2命令,或利用Gemini 2.5 Pro進行反彙編到偽代碼的轉譯。Ghidra MCP則走向完全自動化——用戶提交「分析這個二進制」,MCP自動執行disassemble、函數列表、payload重建等步驟,一次性產出攻擊向量與C2地址。Sidekick(Binary Ninja外掛)則聚焦單一函數,用戶逐次提問(「這個函數在做什麼?」「它連接到哪個C2?」),逐步揭示惡意行為。

但三款工具都有侷限。R2 AI在Goblin EXE CTF挑戰中試圖解析自定義打包程序,反覆檢驗標準解壓算法(zlib、LZMA),最終無法突破;Ghidra MCP重建的HTTP payload有時取錯地址參考,需人工驗證;Sidekick容易遺漏重要字符串(如演講者追問C2域名時才補充)。演講者強調,AI的真正價值在於大規模樣本篩選——當每日面對數千個未知惡意軟體時,AI可自動標記明顯特徵(SSH暴力破解、服務持久化)供分析師優先檢視,而非試圖獨立破譯複雜打包。

實戰案例PumaBot揭示的是持久化機制的隱蔽性——該malware偽裝系統服務名稱為「my$QI」而非「mySQL」,混淆人工檢查。通過AI協助與手動驗證相結合,團隊快速確認這是Pumatronic(巴西監控系統製造商)特定品牌的變種,目標明確。這流程總結為:初步AI偵察 → 字符串與地址交叉驗證 → 手動payload重建 → CVE真假正檢驗 → 檢測簽名編寫——缺一不可。

關鍵時刻

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 錯誤報告,進而收集目標系統配置情報。