返回
2026/11/11
你下載的資安工具本身就是惡意程式:假冒的 GitHub 儲存庫感染 2,000 多台 Windows 電腦
Doctor Web 在 GitHub 上發現建置時就會執行惡意程式的假資安工具。本文說明其手法,以及建置複製下來的程式碼前應檢查的項目。
你在 GitHub 上找到一個小工具,可以整理網路掃描器的輸出結果。它有 README、Visual Studio 專案和建置說明。你把它複製下來,按下「建置」。一切看起來都很正常,但在編譯器啟動之前,一道隱藏的命令已經在你的工作站上執行了。
這正是 Doctor Web 在 2026 年 11 月 5 日揭露的陷阱。其研究人員發現了一批偽裝成掃描自動化、安全測試和日誌分析工具的 GitHub 儲存庫,並統計到在研究進行時已有 2,000 多台 Windows 電腦遭到感染。本文將說明這個陷阱的運作方式、它為何連經驗豐富的工程師也能騙過,以及在建置剛複製下來的程式碼之前應該檢查什麼。
重點摘要
- 這些儲存庫偽裝成資安工具,惡意命令會在建置過程中或啟動指令碼時執行,不需要另外啟動任何程式。
- 惡意程式碼藏在 Visual Studio 專案檔、
.suo檔案中,以及 Python 和 Go 原始檔中大段空白字元的後面。 - 最終酬載包括兩個 AsyncRAT 後門、一個劫持剪貼簿中加密貨幣錢包地址的程式,以及一個竊取瀏覽器資料、VPN 與 FTP 設定以及 Discord 權杖的資訊竊取程式。
- 建置之前先閱讀建置檔案,並在不存放任何憑證的拋棄式虛擬機器中建置來路不明的程式碼。
- 如果你已經建置過這類專案,應將該工作站視為已遭入侵,並從一台乾淨的裝置變更其中存放的所有憑證。
Doctor Web 發現了什麼
根據 Doctor Web 的報告,最早的受感染儲存庫大約出現在兩年前。當時它們鎖定的是加密貨幣錢包使用者,偽裝成區塊鏈遊戲、遊戲機器人和外掛。如今,攻擊者已將目標轉向資訊安全專業人員。其中一個假儲存庫包含一個用來解析、清理並格式化 Fscan 網路掃描器輸出的指令碼。
這並不是軟體漏洞,也沒有可以修補的 CVE。這是一場供應鏈與社交工程攻擊:攻擊者發布一個看似有用的專案,然後等著有人去建置它。BleepingComputer 對這項研究的摘要指出,利用空白字元隱藏程式碼是一種老技巧,但至今仍然有效。
陷阱的運作方式
Doctor Web 在三類檔案中發現了惡意程式碼。它們都不是審查者通常最先開啟的檔案。
| 藏匿位置 | 會發生什麼事 | 為何容易被忽略 |
|---|---|---|
.csproj 專案檔 | PreBuildEvent 會在專案編譯前執行一道命令 | 審查者看的是原始碼,而不是專案檔 |
.suo 檔案 | 檔案中夾帶一道 PowerShell 命令 | 它是二進位設定檔,Visual Studio 通常將其放在隱藏資料夾中 |
| Python 和 Go 原始檔 | 惡意程式碼藏在大量空白字元之後 | 除非往右捲動很遠或開啟自動換行,否則這一行看起來是空的 |
之後的攻擊鏈都相同。一個 PowerShell 指令碼(報告中舉例為 C:\Users\Public\Pictures\t.ps1 和 L.ps1)會向攻擊者的伺服器,或 YouTube、Telegram、Google Docs、GitCode、Pastebin 等合法服務索取一段加密字串。解密後,該字串是一個壓縮檔的下載連結,壓縮檔會被解壓縮到 C:\ProgramData\Windows.Microsoft.Photos。
其中包含一個以 Electron 為基礎、名為 Microsoft.exe 的載入器,Doctor Web 將其偵測為 Trojan.Loader.3261。該載入器會透過 Telegram 機器人回報系統資訊,嘗試提升權限,並關閉 Windows Defender、使用者帳戶控制、通知、系統還原和磁碟區陰影複製。它還會嘗試移除 ESET、McAfee 和 Malwarebytes 的產品,並修改 hosts 檔案以封鎖防毒軟體廠商的網域。
為了避免被察覺,載入器在預設模式下會讓 explorer.exe 看起來像是它的父處理程序,修改登錄值 VerifiedAndReputablePolicyState 以繞過智慧型應用程式控制,還原 ntdll.dll 的原始程式碼以移除資安產品在其中設下的掛鉤,直接進行系統呼叫,並修補用於事件追蹤和指令碼掃描的 Windows 函式。接著,它會將酬載注入 RegAsm.exe 等合法的 Windows 處理程序。
接下來是三個酬載:
- 兩個 AsyncRAT 後門。兩個檔案完全相同,但使用不同的網路連接埠。Doctor Web 表示,這可能讓兩名操作者能同時控制同一台裝置。
- 一個剪貼簿劫持程式(clipper)。它會替換剪貼簿中的加密貨幣錢包地址,並將螢幕截圖、目前視窗標題、使用者登入名稱和 IP 位址傳送給一個 Telegram 機器人。
- 一個資訊竊取程式(JS.Stealer.191)。它會檢查沙箱和虛擬機器,然後蒐集瀏覽器資料、FileZilla、MobaXterm 和 Total Commander 的連線檔案、VPN 設定、通訊軟體檔案、遊戲帳號資料和 Discord 權杖,並透過 Telegram 機器人傳送出去。
Doctor Web 也發現了一個尚未完成的元件,它會安裝一項 Windows 服務,並在載入器被刪除後重新下載。這顯示攻擊者仍在持續開發這套工具。
為何專業人士也會中招
這場攻擊利用的,正是通常被視為良好做法的習慣。
- 從原始碼建置感覺比執行下載的程式更安全。許多工程師拒絕執行來路不明的二進位檔,卻樂於編譯一個專案,因為他們可以閱讀程式碼。而在這裡,他們讀到的程式碼是乾淨的,命令藏在建置設定中。
- 沒有「執行這個程式」的那一刻。命令是在一般建置過程中啟動的,因此啟動未知程式前通常會有的那一下遲疑根本不會出現。
- GitHub 是值得信任的地方。一個 README 整齊、附有安裝說明的儲存庫,看起來就和成千上萬個正常專案一樣。Doctor Web 指出,攻擊者甚至提供了安裝 Visual Studio 和複製儲存庫的說明。
- 工程師的工作站握有鑰匙。儲存的瀏覽器工作階段、VPN 設定檔和伺服器連線檔案,正是資訊竊取程式要蒐集的東西,而它們往往能打開通往正式環境系統和客戶環境的大門。
建置前應檢查什麼
這些檢查只需要幾分鐘,適用於你剛複製下來的任何專案,無論是在 Windows、Linux 還是 macOS 上。請在用 IDE 開啟專案之前,在儲存庫資料夾中執行。
# 1. Build hooks and command execution in project files
grep -rniE 'PreBuildEvent|PostBuildEvent|<Exec |powershell|cmd\.exe' \
--include='*.csproj' --include='*.vbproj' --include='*.vcxproj' \
--include='*.props' --include='*.targets' .
# 2. Visual Studio user-option files that should not be in a repository
find . -name '*.suo'
# 3. Files with very long runs of spaces or tabs on one line
grep -rlE '[[:space:]]{200,}' .
在沒有 Unix 風格 shell 的 Windows 上,可以用 PowerShell 完成同樣的空白字元檢查:
Get-ChildItem -Recurse -File |
Select-String -Pattern '\s{200,}' -List |
Select-Object -ExpandProperty Path
有命中並不代表一定是惡意程式。許多正常專案都會使用建置事件,壓縮過的檔案也會有很長的行。但這足以成為一個理由:在任何東西執行之前,先打開檔案,看看那道命令究竟做了什麼。
- 先閱讀建置檔案。專案檔、
Makefile、setup.py、套件安裝指令碼和 CI 檔案都可以執行命令。要像審查原始碼一樣仔細閱讀它們。 - 刪除隨儲存庫一起出現的
.suo檔案和.vs資料夾。它們是個別使用者的設定,專案建置並不需要它們。 - 開啟自動換行或顯示空白字元,在編輯器中審查不熟悉的程式碼時尤其要這麼做。
- 查看儲存庫的歷史紀錄。新建立的帳號、只有一次大型提交、幾乎沒有真正的 issue 或貢獻者、功能與知名專案重複的工具,這些都是需要更加小心的訊號。單憑星號和分支數說明不了什麼,因為它們可以造假。
- 在拋棄式環境中建置來路不明的程式碼。使用不存放密碼、沒有 VPN 設定檔和 SSH 金鑰的拋棄式虛擬機器或容器,用完後將其刪除。
提示:保留一個乾淨的虛擬機器快照,專門用來試用工具。在其中複製、建置和測試,之後再還原到快照。如果某個工具確實有用,請在它接近你日常使用的工作站之前,先完整審查一遍。
如果你已經建置過
Doctor Web 已在其入侵指標清單中公布了檔案雜湊值、網域、位址和儲存庫名稱範例。報告中描述的跡象包括:
- 存在
C:\ProgramData\Windows.Microsoft.Photos資料夾或名為Microsoft.exe的程式; C:\Users\Public\Pictures中有t.ps1或L.ps1;- Windows Defender 中有並非你自己新增的
regasm.exe或dwm.exe排除項目; hosts檔案中出現防毒軟體廠商的網域,或系統還原和陰影複製遭到關閉;- 資安軟體消失或停止更新。
如果發現上述任何跡象,或你確定自己建置過清單中的專案,請假設這台電腦上的所有內容都已被讀取,並採取以下行動:
- 中斷該工作站的網路連線,並通知你的資安團隊。
- 從另一台乾淨的裝置變更瀏覽器中儲存的密碼,並登出所有使用中的工作階段,讓遭竊的工作階段 Cookie 失效。
- 更換 VPN 設定檔,以及 FTP 和終端機用戶端中儲存的密碼或金鑰,並檢查這些憑證能連到的伺服器。
- 重設 Discord 及其他通訊軟體的工作階段,並將加密資產移到在乾淨裝置上建立的錢包。
- 重新安裝作業系統,而不是嘗試清除。該載入器會關閉安全和復原功能,並安裝兩個後門,清除過的系統很難讓人信任。
提示:檢查伺服器和 VPN 日誌,看看受影響的帳號在建置該專案之後是否有登入紀錄。遭竊的連線檔案會在攻擊者的系統上使用,而不是在受感染的工作站上。
LOGIQ 能提供哪些協助
LOGIQ 協助企業安全地運行開源軟體,涵蓋企業級 Linux、OpenJDK 以及相關的建置與部署管線。如果你希望有人協助檢視團隊將外部程式碼引入環境的方式,或需要協助將建置系統與重要憑證隔離開來,歡迎與我們聯絡。
Global
Japan
Korea
China
Vietnam
Thailand
Indonesia
Portugal
Spain
France
Germany
Egypt
Russia