
假 Go DNS 掃描器背後:GitHub repo 有 commit 都唔代表可信
222 個 repo 扮活躍,Windows 開發機要特別小心
GitHub repo 有 commit 都唔夠
GitHub repo 有 README、有 commit、有版本號,平時好多人已經當佢半可信。Socket 今次拆到嘅 Operation Muck and Load 就係一個幾現實嘅反例:一個扮 DNS/subdomain 掃描器嘅 Go module,路徑係 github[.]com/kaleidora/dnsub-scanning-tool,由 2026 年 1 月 24 日第一個版本開始,幾個月內滾到超過 1,200 個版本;Socket 7 月 8 日原文話逾 700 個係惡意,Tom's Hardware 7 月 11 日再跟進報道。今次值得睇嘅位有兩個:有人放惡意 code,仲識用開源世界最常見嘅信任訊號包裝自己:活躍 commit、好多版本、GitHub release,同埋一堆睇落正常嘅 repo。

圖片:Socket
Pseudo-version 俾人拎嚟刷假活躍
Go 嘅 pseudo-version 本身係正常設計。Go 官方文件講得好清楚,當 repo 冇 semantic version tag,Go 可以用 commit 時間同 hash 砌出一個 v0.0.0-yyyymmddhhmmss-hash 呢類版本,方便你 pin 住某個 commit。今次問題係攻擊者用 GitHub Actions 一直改 log 或 timestamp file,再 force-push,令每次 commit 都有機會變成可解析嘅 module 版本。版本多本來應該代表 release 節奏,喺呢度反而係煙幕。
Socket 今次點數都幾保守:同一個 email 唔足夠入帳,佢哋仲要同時見到 ischhfd83@rambler[.]ru 同重複嘅 GitHub Actions workflow,先計入 confirmed set,最後係 222 個 repo、190 個帳戶。呢個做法反而令數字仲值得信,因為佢避開咗「似係但未肯定」嗰堆。對開發者嚟講,真正警號係:一個新 repo 如果有異常密嘅 commit、成堆 pseudo-version、少到可疑嘅真人維護痕跡,就要停一停。

圖片:Socket
Windows 開發機風險最高
Socket 原文冇見到香港受害資料,呢點要講清楚。風險實際喺用 Windows 做開發、會試冷門 GitHub 工具、會快速 go get demo repo 嗰批人:developer、startup 工程 team、IT team、學生都算。Socket 指 main.go 一開始就叫起隱藏 PowerShell,拉 encoded stage,再用 dead drop resolver 搵加密 payload 位置;後段樣本對應 AsyncRAT、Quasar、Remcos 類 RAT、Vidar infostealer 同 XMRig miner。開發機通常有 GitHub token、cloud credential、SSH key、browser session,俾 infostealer 入到嚟,傷害唔止一部機。
Dead drop 令清理變麻煩
今次另一個值得睇嘅位係 dead drop resolver。攻擊者冇單靠一條固定下載 link;加密後嘅 payload 位置藏喺公開平台內容入面,Socket 列到 Pastebin、Rlim、YouTube、Instagram、Telegram、Google Docs 同 GitCode 呢類位置。defender 刪咗一個 paste 或封咗一個檔案,loader 仲可以試其他地方;攻擊者改中間指向,第一段 Go loader 未必使改。呢種設計同 GitHub repo 扮活躍夾埋,就令普通人喺 install 前仲難一眼睇穿。
點查先有用
安全工具有用,但開發者第一步係養成幾個細動作。先睇 go.mod 同 go.sum,有冇陌生 owner、有冇 v0.0.0-yyyymmddhhmmss-hash 呢種 pseudo-version、有冇新 repo 但版本多到反常。再開 source 睇入口位,特別係 main、init、build script、GitHub Actions workflow;見到隱藏 PowerShell、certutil、奇怪 public URL、長串 Base64、XOR、寫入 Public folder 呢類 pattern,就唔好喺自己主力機 build。
工具方面,Socket 呢類 supply-chain scanner 可以幫你標 package 行為同 malware alert;Go 官方 govulncheck 都值得放入 CI,但要知佢主要查已知漏洞同你 code 有冇 call 到受影響 function,唔係萬能 malware scanner。換句話講,govulncheck 冇紅燈唔代表 package 乾淨;佢係基本盤,source review、dependency review、出網限制同 endpoint 監控先可以補返缺口。
Team 層面要管依賴
公司 team 如果有用 Go,最好唔好畀每個人喺自己 Windows 機隨便試未知 repo。PR 入面要睇 dependency diff,新增 module 要有 owner、tag、maintenance pattern 同 source 行為檢查;CI runner 要同 production secret 隔開,build job 出網要收窄,避免一 build 就可以任意拉 PowerShell stage 或 release asset。EDR 規則亦要留意 go build、VS Code、terminal 之後突然出現隱藏 PowerShell、certutil、7z、奇怪 Microsoft path 呢類行為。
呢單嘢值得記低
截至 2026 年 7 月 11 日,Go proxy endpoint 回 403 SECURITY ERROR,顯示呢個 module 已俾擋住;Socket 都話 Go security team 已經回應同 block 咗 module proxy。問題係,擋一個 module 只係處理咗今次見到嗰條路。Operation Muck and Load 提醒咗一件事:開源 repo 表面睇落活躍,可以係刷出嚟,版本數都可以俾自動 commit 推到好誇張。用 Windows 做開發、成日試冷門工具、公司又冇 dependency gate 嘅人,今次最好抽十分鐘睇返新加嘅 Go dependency,尤其係冇 tag、owner 陌生、版本多到唔合理嗰批。
參考來源
- Tom's Hardware — Fake Go DNS scanner spread malware through over 200 GitHub repos — 'Operation Muck and Load' has published 700 malicious modules since January — original report
- Socket - Malicious Go Module Exposes GitHub Malware Lure Network Spanning 222 Repositories — 主要研究來源,確認 module 名、222 個 repo、時間線、payload 類型、Go proxy block 同建議。
- Socket package analysis - github.com/kaleidora/dnsub-scanning-tool — 核對 package 頁嘅 malware alert、版本量同截圖來源。
- Go Modules Reference - Pseudo-versions — Go 官方文件,核對 pseudo-version 用 commit 時間同 hash 嘅規則。
- Govulncheck tutorial - The Go Programming Language — Go 官方教學,核對 govulncheck 係查已知漏洞同 dependency 風險。
- Sophos - The strange tale of ischhfd83 — 背景研究,確認 ischhfd83 cluster 早喺 2025 年已用 backdoored repo、game cheat lure 同自動 commit。
- Go module proxy block response for dnsub-scanning-tool — 核對 Go proxy endpoint 回 403 SECURITY ERROR,確認 module 已俾擋住。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







