假 GitHub 工具扮活躍:222 個 repository 背後嘅 Windows RAT 誘餌網
Tech News

假 GitHub 工具扮活躍:222 個 repository 背後嘅 Windows RAT 誘餌網

圖片:via iThome — https://www.ithome.com.tw/news/177326
TechLab 編輯部(譯)·

假 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 將 4,219 個 GitHub 搜尋結果收窄至 222 個確認誘餌 repository 嘅漏斗圖

圖片: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 嘅場景。

由惡意 Go module 經 PowerShell、公開 dead drop 同加密壓縮檔載入 Windows payload 嘅流程圖

圖片: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.modgo.sumgo.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。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook