
假 GitHub 工具扮活躍:222 個 repository 背後嘅 Windows RAT 誘餌網
假 commit 同 Go pseudo-version 堆出活躍假象,再用加密壓縮檔載入 RAT
你喺 GitHub 搵到一個細工具,README 寫得齊,commit 幾分鐘前先更新,仲有過千個 Go 版本,第一眼好易當佢係活躍項目。iThome 報道,Socket 由一個扮 DNS 同 subdomain scanner 嘅 Go module,追到代號 Operation Muck and Load 嘅誘餌網絡。研究團隊確認 222 個 repository、190 個帳戶;呢啲係惡意基建數量,公開資料暫時冇受害人數。
惡意 code 藏喺 scanner 開工之前
Socket 話,涉事 module github[.]com/kaleidora/dnsub-scanning-tool 借用合法開源工具 dnsub 嘅名稱同功能描述做包裝。佢由 1 月 24 日起累積逾 1,200 個版本,超過 700 個含惡意 code,程式入口仲會喺 scanner 邏輯開始前偷偷開 hidden PowerShell。Socket 同時補充,公開 source code 部分功能未寫齊,照正常 Go build 或 install 流程未必完整跑到。版本數只反映投放規模,推算唔到幾多部機中招。
惡意段落一跑,就會下載經編碼處理嘅內容,再借 Windows 內建 certutil 解碼成 PowerShell script。跟住個 script 會去 Pastebin、Telegram、Google Docs 等公開服務搵加密下載位置,拉取有密碼保護嘅 7-Zip 壓縮檔,最後喺扮 Microsoft Photos 嘅 folder 開 Windows payload。Socket 分析到嘅活動涉及 AsyncRAT、Quasar、Remcos 類 RAT、Vidar 竊資程式同 XMRig 相關挖礦程式,亦見到讀取瀏覽器資料、截圖同建立持久存取嘅行為。

圖片:Socket
Commit 多,只可以證明 automation 跑得勤力
嗰 222 個 repository 用 GitHub Actions 重複改寫時間或 log 檔案,再 commit 同 force-push。Workflow 會將顯示名稱設成 repository owner,同時沿用同一個 email 指紋,於是每個帳戶睇落都似自己密密更新。YAML 寫成每分鐘觸發;Sophos 提醒,GitHub Actions schedule 實際最短間距係五分鐘,不過已經足以堆出大量綠色活動紀錄。正常維護會有修 bug、review 同 release note,呢批 commit 就主要得時間紀錄。
Socket 嘅計法幾保守:同一個 workflow context 要同時見到相關 email 同自動 commit 模式,先計入 222 個確認 repository。部分 repository 只負責做誘餌,研究人員就喺分析過嘅範圍確認至少 14 個唔重複嘅惡意檔案。題材集中喺 crypto wallet、交易 bot、Discord/Telegram bot、遊戲外掛同攻擊工具,全部都係用家較容易照住 README 執行陌生 script 或 binary 嘅場景。

圖片:Socket
Go proxy 封咗,GitHub 嗰層仲未清晒
iThome 報道 Go security team 已封鎖涉事 module,Socket亦將確認到嘅 GitHub 基建交畀 GitHub security team。截至 7 月 15 日 11:34 UTC,GitHub 公開 API 仍顯示主要涉事 repository 同帳戶係 public,repository 最後一次 push 係 11:09 UTC;同一時間,Go proxy 嘅公開版本清單已經回傳空白。Go 團隊封咗 package 分發入口,GitHub 上面嗰批誘餌仍要繼續處理,狀態亦可能隨時再變。
過千個「版本」係 Go pseudo-version 俾人玩壞
Go 官方文件解釋,未打 semantic version tag 嘅 commit,可以用時間同 commit hash 組成 pseudo-version。攻擊者密密製造冇實際內容嘅 commit,每個 commit 都有機會變成可解析版本,版本頁自然愈堆愈長;所以逾 1,200 個版本完全唔代表有成熟 release 管理。go.sum 同 Go checksum database 會驗證下載內容有冇俾人改過,唔會判斷入面嘅 code 係咪惡意,團隊仍要查來源身份、版本紀錄同執行行為。
四步自查,先保住開發機同 CI
先盤點 dependency: 搜尋
go.mod、go.sum、go.work、vendor folder、SBOM、container image 同舊 build log,有冇出現涉事 module path。喺乾淨環境用go list -m -json all列出完整 dependency graph,再跑govulncheck ./...;後者主要查已知漏洞,唔好當佢係新惡意 code 嘅萬能掃描器。再睇版本同 repository 身份: 對清楚 owner、module namespace、tag、release note、contributors、issue 紀錄同每次 commit 實際改咗咩。細工具短時間出現幾百個 pseudo-version、workflow 只改日期檔、長期 force-push,或者 README 指去另一個知名項目,都要先停低核實。
下載來源同執行鏈要拆開查: Review
main()、build script、.github/workflows同 release asset,特別留意 hidden PowerShell、certutil、停用憑證檢查、外部 paste 服務同有密碼嘅壓縮檔。陌生 binary 唔好直接喺日常 Windows 開發機或有公司 VPN 嘅環境試,真係要分析就用冇 credentials 嘅隔離 sandbox。跑過就當 credentials 有風險: 即時隔離相關開發機或 runner,保留 EDR、PowerShell 同 CI log,再輪換 GitHub token、SSH key、雲端 access key、package registry token 同 deployment secret。GitHub Actions 嘅
GITHUB_TOKEN預設收窄至 read-only,第三方 action 固定到完整 commit SHA,亦要翻查有冇異常 workflow run 同 release upload。
GitHub stars、近期 commit、長 README 同大量版本,都可以用好低成本批量整出嚟,唔代表個項目可信。公司批准採用新 dependency 前,至少要核實來源、鎖定版本、檢查 dependency diff,同留意執行時嘅連線行為;用開 Go 配 Windows build machine 嘅團隊,亦要繼續留意 GitHub 清理進度,同時翻查現有 CI/CD credentials 有冇曾經暴露畀陌生 code。
參考來源
- iThome — 惡意Go模組牽出GitHub誘餌網路,涉及222個儲存庫 — original report
- Socket:Malicious Go Module Exposes GitHub Malware Lure Network Spanning 222 Repositories — 原始技術研究,提供載入鏈、確認範圍、惡意檔案種類、IOC 同緩解建議
- Go 官方:Module version numbering — 核對 Go pseudo-version 點樣由時間同 commit hash 組成
- Go 官方:Module Mirror and Checksum Database Launched — 解釋 Go checksum database 驗證內容完整性嘅用途同界線
- GitHub Docs:Secure use reference — 核對 Actions 最小權限、credentials 輪換同固定第三方 action SHA 嘅建議
- Sophos:The strange tale of ischhfd83 — 交叉核實同一 email、假 commit workflow、舊一批惡意 repository 同攻擊手法脈絡
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







