Black Hat Europe 2025 | The Forensic Trail On GitHub: Hunting For Supply Chain Activity
三句話摘要
如何通過分析 GitHub 公開數據追踪供應鏈攻擊,以及威脅情報人員調查攻擊者身份和活動的技術方法。 GitHub 已成為攻擊者的關鍵基礎設施,但通過系統性地分析 GitHub 公開數據,防禦者可以有效追踪攻擊者身份、活動模式,進而保護供應鏈安全。 GitHub 成為多功能攻擊平台:攻擊者利用 GitHub 的「受信任網站」地位繞過網路白名單,用於存儲恶意載荷、進行數據窃取、建立命令控制通道。Shai Hulu、Ultralytics、TJ Actions 等重大供應鏈攻擊都將 GitHub 作為攻擊基礎設施的關鍵節點,甚至北朝鮮行為者透過虛假招聘流程誘騙開發人員下載惡意代碼。
重點整理
重點- 1
GitHub 成為多功能攻擊平台:攻擊者利用 GitHub 的「受信任網站」地位繞過網路白名單,用於存儲恶意載荷、進行數據窃取、建立命令控制通道。Shai Hulu、Ultralytics、TJ Actions 等重大供應鏈攻擊都將 GitHub 作為攻擊基礎設施的關鍵節點,甚至北朝鮮行為者透過虛假招聘流程誘騙開發人員下載惡意代碼。
- 2
PON 請求攻擊機制:攻擊者在易受攻擊的倉庫中創建拉取請求,利用 pull_request_target 配置錯誤觸發代碼執行。研究人員通過監控分支名中的攻擊載荷、追踪多次嘗試和演進過程,成功識別了攻擊者、受害組織,甚至發現了內部人員的參與證據。
- 3
多維度用戶追踪調查:威脅情報人員可通過用戶名相似性、頭像反向搜索、社交網絡關係、PGP/SSH 密鑰匹配、代碼全局搜索、提交郵箱地址、活動時間區域分析進行關聯,尤其是時間區域線索能支持地理位置歸因。即使用戶帳戶被刪除,事件 API 的公開記錄仍可揭示其活動痕跡。
- 4
刪除內容可恢復的技術特性:由於 GitHub 基於 Git 協議,拉取請求本質上是特殊分支、已刪除的提交可通過跨 fork 網絡恢復、刪除的 gist 可用特殊 URL 格式重新獲取,讓研究人員在攻擊者試圖掩蓋踪跡後仍能恢復關鍵證據。
實用技巧與重點
乾貨- 關鍵攻擊案例
- Shai Hulu 1/2(NPM 生態蠕蟲)、Ultralytics 供應鏈攻擊、TJ Actions、Review Dog、Adgen Android、EthCode VSCode 擴展、Coinbase Agent Kit 偵查
- 北朝鮮「感染面試」(Contagious Interview):虛假招聘→下載 GitHub 惡意代碼
- GitHub 特有漏洞與機制
- PON 請求(Pull Request On):GitHub Actions 特有漏洞,通過惡意分支名/PR 標題/內容注入觸發
- Gist:輕量級倉庫,支持 clone、fork、commit log 檢視
- 事件 API/Firehose:紀錄所有公開 GitHub 活動
- 數據窃取工具與服務
- Webhook.site:免費版 100 請求限制,公開查看所有請求(Shai Hulu 利用)
- Oastify.com:OAST 信標(常見於研究人員)
- Nord Stream(Synaptive)、Got-X(A-Non):開源 PON 請求利用工具
- 調查工具與資源
- Pivot Atlas(gopivot.ing):GitHub 用戶追踪方法彙總
- GitHub Code Search:跨全網代碼搜索
- GitHub Archive / ClickHouse:事件 API 數據存檔(約 50% 丟失率)
- ghdig:自動化 GitHub 調查工具(PR 恢復、commit 恢復、gist 恢復、用戶調查、缺失證據搜索)
- git-threat-hunter:事件 API 過濾工具,識別已知 exfiltration 域名、惡意載荷、文件分隔符
- 删除内容恢復方法
- PR 恢復:clone 已刪除 PR 的分支(refs/pull/[PR-number]/head)
- 提交恢復:通過跨 fork 參考使用提交雜湊恢復
- Gist 恢復:`git clone https://gist.github.com/[ID]/[COMMIT-HASH].git`
- 數據完整性問題
- 事件 API:未記錄所有事件,文檔不充分,不可靠
- GitHub Archive:約 50% 丟失率
- 代碼搜索:僅索引默認分支,不索引所有分支
- 用戶隱私:私密帳戶無法直接查看,但公開用戶與其互動仍可推斷
結論
結論“GitHub 已成為攻擊者的關鍵基礎設施,但通過系統性地分析 GitHub 公開數據,防禦者可以有效追踪攻擊者身份、活動模式,進而保護供應鏈安全。”
完整解析
詳細GitHub 已成為現代互聯網的關鍵基礎設施,但威脅情報分析對其利用遠未充分。傳統威脅情報工作主要關注 IP 地址、文件哈希和證書等指標,而攻擊者實際上在 GitHub 上進行著複雜多樣的惡意活動。演講者展示了通過監控 GitHub 公開數據追踪真實攻擊的具體案例——針對 Adgen Android 項目的 PON 請求攻擊。通過追蹤分支名中逐步演進的攻擊載荷,研究人員能夠觀察攻擊者的多次嘗試、不同的利用機制,甚至發現 Adgen 員工參與了漏洞修復,進而識別了受害者身份。
攻擊者選擇 GitHub 的原因在於其「受信任網站」地位。許多企業將 GitHub 列入網路白名單,攻擊者可藉此繞過網路防禦。近年來的重大供應鏈攻擊——包括 Shai Hulu 1/2(針對 NPM 生態的蠕蟲)、Ultralytics 漏洞、TJ Actions 和 Review Dog 的入侵——都涉及 PON 請求這種 GitHub Actions 特有的漏洞。攻擊者利用 pull_request_target 的錯誤配置,讓惡意拉取請求執行任意代碼。除了直接的代碼執行攻擊,攻擊者還利用 GitHub 進行載荷存儲、數據窃取、命令控制。北朝鮮行為者甚至創造了「感染面試」流程——通過虛假招聘機構和職位發布,誘騙開發人員下載 GitHub 上的惡意代碼。
威脅情報人員的調查方法基於對 Git 技術特性的深入理解。追踪攻擊者身份時,可從多個維度進行關聯:檢查是否存在相似用戶名跨平臺、使用頭像反向圖像搜索、分析社交網絡(followers、following、組織成員),以及提取公開的 PGP 和 SSH 密鑰進行匹配。GitHub 代碼搜索能跨整個網站搜索代碼、issue、discussion;事件 API(firehose)提供原始活動日誌;提交中的邮箱地址能追蹤攻擊者的用戶名變更;時間區域分析能幫助地理位置歸因。關鍵的是,即使用戶帳戶被刪除,其公開活動記錄仍在事件 API 中保留。
GitHub 基於 Git 協議的特性意味著「刪除」並非真正消失。拉取請求本質上是特殊分支,可通過特定的 Git 引用恢復;已刪除的提交能通過跨 fork 網路的提交雜湊恢復;刪除的 gist(輕量級倉庫)可用特殊 URL 格式重新 clone。這些技術讓研究人員能在攻擊者試圖掩蓋踪跡後仍然恢復完整的攻擊代碼和演進歷史。在 TJ Actions 調查中,研究人員恢復了已刪除的 gist,並從 git log 中發現了之前未公開的 webhook.site exfiltration URLs 和特定的目標組織名稱。
但調查中也存在實際限制。事件 API 並不記錄所有事件,且官方文檔不充分;GitHub Archive 的歷史數據有約 50% 的丟失率;代碼搜索僅索引默認分支,其他分支的信息需手動查詢;用戶可設置隱私帳戶。更複雜的是,GitHub 和攻擊者自身都會刪除惡意內容。在 Shai Hulu 攻擊中,GitHub 單方面刪除了大量洩露組織秘密的倉庫——這既防止了進一步傷害,也意味著受害者無法確定哪些秘密被洩露,進而無法有針對性地輪換憑證。因此,防禦者需要採取積極措施,在威脅事件發生時立即複製相關數據,建立本地語料庫以支持長期調查。
為了降低調查門檻,演講者開源了三套工具。首先是 PON 請求攻擊的端到端演示實現,讓防禦者理解整個攻擊流程;ghdig 是 GitHub 活動調查工具,自動化實現 PR 恢復、commit 恢復、gist 恢復、用戶調查和缺失證據搜索;git-threat-hunter 是威脅活動過濾工具,能從事件 API 的巨量噪音中識別已知 exfiltration 域名、惡意載荷模式和可疑文件操作。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

