客人的隨身碟插到電腦後,原本的資料夾不見了,只剩下一個「USB Drive」捷徑;點下去之後,電腦還會被植入常駐程式,再感染下一支插入的隨身碟。這是常見的「捷徑型蠕蟲」。本文整理它的運作方式、如何檢查電腦有沒有中毒,以及清除與預防的步驟。
重點先說:隨身碟裡客人的檔案通常沒有被刪除,只是被設成「隱藏+系統」屬性。先不要急著格式化。
一、怎麼運作的
這類變種(常被歸類為 VBS/Jenxcus 一類)不破壞檔案,目的是長期駐留並持續傳播:
| 檔案/項目 | 位置 | 作用 |
|---|---|---|
| USB Drive.lnk | 隨身碟根目錄 | 誘餌捷徑,約 2 KB,點了就啟動腳本 |
| USB Drive(資料夾) | 隨身碟根目錄 | 客人原本的檔案被移到這裡並隱藏 |
| uXXXXXX.vbs | 隨身碟 sysvolume\ | 要求系統管理員權限(UAC) |
| uXXXXXX.bat | 隨身碟 sysvolume\ | 把路徑加進 Defender 排除,再複製惡意檔 |
| uXXXXXX.dat | 隨身碟 sysvolume\ | 實際是 DLL,改副檔名躲避過濾 |
| uXXXXXX.dll | C:\Windows\System32\ | 電腦上的後門本體,監聽 USB 插入 |
| uXXXXXX(服務) | Windows 服務機碼 | 掛在 svchost 下,開機自動啟動 |
其中 XXXXXX 是 6 位數字,每次感染都會重新亂數產生,所以不能只靠固定檔名搜尋,要用「u+6 碼數字」的規則比對。
感染流程:插入隨身碟 → 點捷徑 → 跳出 UAC → 批次檔把 System32 與隨身碟加入 Defender 排除 → 惡意 DLL 複製到 System32 並註冊成服務 → 之後每插入一支乾淨隨身碟就自動再感染。
實際案例(2026/11/3 現場)
以下是我們處理客人電腦時拍下的畫面,可以對照上面的說明。注意:同一次感染裡,.vbs、.bat、.dat 與服務的 6 碼數字常常是不同的(例如 .bat 是 u580983、.dat 卻是 u908726),所以要用「u+6 碼數字」的規則比對,不能只認其中一組號碼。
二、先判斷電腦有沒有中毒
以系統管理員身分開啟 PowerShell,執行下列兩項檢查。
1. 找出可疑的服務
Get-ChildItem -Path "HKLM:\SYSTEM\CurrentControlSet\Services" | ForEach-Object {
$p = $_.PSPath
$img = (Get-ItemProperty -Path $p -Name ImagePath -ErrorAction SilentlyContinue).ImagePath
$param = (Get-ItemProperty -Path "$p\Parameters" -Name ServiceDll -ErrorAction SilentlyContinue).ServiceDll
if ($img -match 'u\d{6}' -or $param -match 'u\d{6}' -or $img -match 'sysvolume') {
[PSCustomObject]@{ ServiceName = $_.PSChildName; ImagePath = $img; ServiceDll = $param }
}
}
正常情況不會有任何輸出。
2. 檢查 Defender 是否被加了排除項
(Get-MpPreference).ExclusionPath
清單中若出現 C:\Windows\System32、抽取式磁碟代號或 sysvolume,就是異常(除非是您自己設定的)。
三、清除步驟
- 先拔掉所有隨身碟,整個過程不要插回去。電腦裡的常駐程式還在時,只要一插上隨身碟就會立刻重新寫入惡意檔案。
- 執行下方腳本(系統管理員身分)。它會結束帶有 u+6 碼檔名的行程、刪除惡意服務與 System32 內 u+6 碼的檔案(含沒有副檔名的)、移除 Defender 異常排除項,並清理已插入的隨身碟。
- 若提示檔案被占用,重開機後再執行一次,必要時進入安全模式處理。
- 一定要重新開機。惡意服務即使已刪除,只要還在記憶體裡就會繼續運作,要重開機才會完全消失。
- 重開機後(隨身碟仍不要插),再跑一次第二節的檢查,確認沒有輸出。
- 確認乾淨之後,才插入隨身碟,再執行一次腳本,處理隨身碟上的 sysvolume、捷徑與隱藏屬性。
# Fix-UsbWorm.ps1 — 請以系統管理員身分執行
$ErrorActionPreference = 'SilentlyContinue'
# 0. 結束「命令列含 u+6碼 的 dll/vbs/bat」的行程(只動這些,不會殺 svchost 或其他正常 rundll32)
Get-CimInstance Win32_Process | Where-Object {
$_.ProcessId -ne $PID -and $_.CommandLine -match 'u\d{6}\.(dll|vbs|bat)'
} | ForEach-Object {
Write-Host "結束行程: $($_.Name) (PID $($_.ProcessId))"
Stop-Process -Id $_.ProcessId -Force
}
# 1. 找出並刪除惡意服務(名稱或路徑符合 u + 6 碼數字)
Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services" | ForEach-Object {
$p = $_.PSPath
$img = (Get-ItemProperty -Path $p -Name ImagePath).ImagePath
$dll = (Get-ItemProperty -Path "$p\Parameters" -Name ServiceDll).ServiceDll
if ($img -match 'u\d{6}' -or $dll -match 'u\d{6}' -or $img -match 'sysvolume') {
Write-Host "發現可疑服務: $($_.PSChildName) $img $dll"
Stop-Service -Name $_.PSChildName -Force
sc.exe delete $_.PSChildName | Out-Null
}
}
# 2. 刪除 System32 內「u + 6碼數字」開頭的檔案(含 .dll、.dat,也含沒有副檔名的)
# 若被占用,重開機後再執行一次
Get-ChildItem "C:\Windows\System32" -File | Where-Object { $_.Name -match '^u\d{6}(\.[A-Za-z0-9]+)?$' } | ForEach-Object {
Write-Host "刪除: $($_.FullName)"
Remove-Item $_.FullName -Force
}
# 3. 移除被加入的 Defender 排除項(只動 System32 與 sysvolume)
(Get-MpPreference).ExclusionPath | Where-Object { $_ -like '*\Windows\System32' -or $_ -like '*sysvolume*' } | ForEach-Object {
Write-Host "移除排除項: $_"
Remove-MpPreference -ExclusionPath $_
}
# 4. 處理隨身碟:刪 sysvolume、刪根目錄捷徑、還原隱藏屬性
Get-CimInstance Win32_LogicalDisk | Where-Object { $_.DriveType -eq 2 } | ForEach-Object {
$root = "$($_.DeviceID)\"
Write-Host "處理隨身碟 $root"
Remove-Item "$($root)sysvolume" -Recurse -Force
Get-ChildItem $root -Filter *.lnk -Force | ForEach-Object { Write-Host "刪除捷徑: $($_.Name)"; Remove-Item $_.FullName -Force }
attrib.exe -s -h -r /s /d "$($root)*.*" | Out-Null
}
Write-Host "完成,請重新開機後再執行一次驗收指令。"
實際處理畫面
下圖是現場處理的結果:找到服務 u548586(掛在 svchost 下),停止並刪除;接著找出載入了 u+6 碼 dll 的行程;再刪掉 System32 內 u+6 碼的檔案(這次一共有 3 個:u157032、u548586.dll、u905435.dll,其中一個沒有副檔名);最後移除 System32 的 Defender 排除項。
處理完、重新開機後,執行下面的驗收指令,沒有任何輸出,代表惡意服務已清除:
Get-Service | Where-Object { $_.Name -match '^u\d{6}$' }
使用腳本前請注意
- 腳本會刪除隨身碟根目錄所有 .lnk 捷徑,客人若有自己放的捷徑也會被刪;感染後根目錄通常只剩惡意捷徑,但執行前請先看一眼。
- 腳本會對整支隨身碟執行「取消隱藏/系統屬性」,客人的原始檔案會重新出現,也請一併備份。
- 如果電腦上有其他需要的 Defender 排除項,腳本只會移除 System32 與 sysvolume 兩類,其他不受影響。
- 腳本不會強制結束 svchost:惡意服務掛在 svchost(-k DcomLaunch)底下,同一群組還有系統的關鍵服務,強行結束可能造成電腦當機或自動重開機。檔案被占用時,請改用重開機後再執行。
- 腳本只處理「抽取式磁碟」。若中毒的是外接硬碟(USB 硬碟),請改用上面的手動指令
attrib -s -h -r /s /d X:\*.*處理,並自行刪除 sysvolume 資料夾與根目錄的捷徑。 - 這是依特徵(u+6 碼數字)比對的處理方式,不能保證涵蓋所有變種。清完後建議再用 Windows Defender 完整掃描,或搭配其他防毒軟體交叉掃描。
清除後又長出 sysvolume?(重生的原因)
這是我們自己處理時遇到的情況:清完之後,重開機再插隨身碟,sysvolume 又自己長出來,而且檔名的 6 碼全換了一組。
| 階段 | 看到的檔名/服務 |
|---|---|
| 第一次處理 | 隨身碟:u660234.vbs、u580983.bat、u908726.dat;System32:u908726.dll;服務:u816711 |
| 清完、重開機、插隨身碟後 | 隨身碟長出新的:u607082.vbs、u732230.bat,準備寫入 u735501.dll(編號全部不同) |
| 再往下查 | 找到真正在運作的服務:u548586(svchost -k DcomLaunch,ServiceDll 指向 System32\u548586.dll) |
編號全換,代表電腦裡還有一個「常駐母體」在背景監看 USB 插拔:一偵測到隨身碟,就隨機產生新編號,重新寫入整組檔案。所以只刪舊檔名永遠清不乾淨,要把「正在運作的那一個」找出來。
怎麼找出殘留的母體
- 拔掉隨身碟,以系統管理員身分開啟 PowerShell。
- 先看有沒有帶 u+6 碼的行程(沒有輸出表示不是獨立行程,而是躲在 svchost 裡):
Get-CimInstance Win32_Process | Where-Object { $_.Name -match 'rundll32|wscript|cscript' -or $_.CommandLine -match 'u\d{6}' } | Select-Object ProcessId, Name, CommandLine | Format-List - 再用第二節的「找出可疑的服務」指令,依 ImagePath 與 ServiceDll 全面比對。不要只用服務名稱判斷,因為每次感染的名稱不同;這次的服務就是靠 ServiceDll 指向 u+6 碼 dll 才找到。
- 找到服務後(假設叫 u548586)停止並刪除:
看到「[SC] DeleteService 成功」即可。Stop-Service -Name "u548586" -Force\nsc.exe delete "u548586" - 刪除 System32 內 u+6 碼開頭的檔案(含沒有副檔名的),並移除 Defender 對 System32 的排除:
Get-ChildItem "C:\Windows\System32" -File | Where-Object { $_.Name -match '^u\d{6}' } | Remove-Item -Force\nRemove-MpPreference -ExclusionPath "C:\Windows\System32" - 重新開機,開機後再用第二節的指令確認服務、檔案都不存在,確認乾淨後才插入隨身碟處理。
如果檔案一直被占用刪不掉
表示惡意 dll 還被系統程序載入。可以進入「安全模式」處理(安全模式下第三方服務不會啟動):按住 Shift 並點「重新啟動」→ 疑難排解 → 進階選項 → 啟動設定 → 重新啟動 → 按 4 或 F4。進入後到 C:\Windows\System32\ 手動刪除所有 u+6 碼開頭的檔案,再正常重開機。
進階:連服務都找不到時
少數情況下惡意程式會用 WMI 事件訂閱來監看隨身碟。可以用下面的指令只列出、不刪除,看有沒有可疑的項目(命令列含 rundll32、wscript、u+6 碼或 sysvolume);若有,請先拍下畫面再決定如何處理,或洽專業人員。
Get-CimInstance -Namespace root\subscription -ClassName CommandLineEventConsumer | Select-Object Name, CommandLineTemplate※ 結束 svchost 行程的做法網路上很常見,但 svchost 同一群組可能包含系統關鍵服務,強制結束可能使電腦當機。建議以「刪除服務+重開機」取代。
四、隨身碟的處理
- 檔案救出並備份後,建議在檔案總管對隨身碟按右鍵「格式化」(exFAT 或 NTFS),把殘留的惡意內容清乾淨。
- 手動還原隱藏檔案的指令(X 換成隨身碟代號,以系統管理員身分開啟「命令提示字元」執行):
attrib -s -h -r /s /d X:\*.*
最後驗收(確認真的乾淨)
電腦的母體清掉、隨身碟也處理完之後,請依序做下面的驗收,全部通過才算完成:
- 隨身碟收尾:服務與 System32 檔案確認清除後,插入隨身碟,執行腳本,或在管理員命令提示字元手動執行(D 換成您的隨身碟代號):
開啟隨身碟,sysvolume 與捷徑不見了,原本的資料夾和檔案也恢復顯示。rd /s /q D:\sysvolume\ndel /f /q /a D:\*.lnk\nattrib -s -h -r /s /d D:\*.* - 先備份檔案,再對隨身碟按右鍵「格式化」(exFAT 或 NTFS,勾選「快速格式化」),把殘留的磁區記錄清乾淨。
- 拔出隨身碟,重新啟動電腦。
- 重開機後再插入隨身碟,等約 15 秒。確認不會再自動長出 sysvolume 或捷徑。
- 確認沒有殘留的服務:以管理員開啟 PowerShell 執行:
沒有任何輸出才正確。Get-Service | Where-Object { $_.Name -match '^u\d{6}$' } - 顯示隱藏檔案再看一次:檔案總管「檢視」→「顯示」→ 勾選「隱藏的項目」;再到「檢視」→「選項」→「檢視」分頁,暫時取消「隱藏保護的作業系統檔案」。確認隨身碟和 C:\Windows\System32 都看不到 u+6 碼開頭的檔案、sysvolume、未知的 .vbs/.bat。
- 把檢視設定改回來:重新勾選「隱藏保護的作業系統檔案(建議使用)」,避免平常誤動到 Windows 核心檔案。
上面都通過,這台電腦的後門服務與隨身碟感染鏈就算處理完成。
五、預防
- 關閉抽取式磁碟的自動執行:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "NoDriveTypeAutoRun" -Value 255 -Type DWord - 在檔案總管開啟「顯示副檔名」,並開啟顯示隱藏的檔案。
- 隨身碟插入後,如果資料夾圖示上有捷徑箭頭、或「資料夾」只有 1~2 KB,千萬不要雙擊,先用防毒軟體掃描。
- 在列印店、學校等公共電腦用過的隨身碟,帶回自己的電腦前先掃描一次。
需要協助嗎?
隨身碟檔案不見、電腦疑似已中毒,或不想自己執行腳本,歡迎聯絡名文電腦,我們可以協助檢查、救回檔案並清除。
※ 本文為一般性說明,自行操作屬使用者自行判斷與負責,操作不當可能造成資料遺失;名文電腦不對自行操作的結果負責。