客人的隨身碟插到電腦後,原本的資料夾不見了,只剩下一個「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 碼數字」的規則比對,不能只認其中一組號碼。

隨身碟根目錄:原本的資料夾不見,只剩 sysvolume 和兩個「USB Drive」(一個是約 2 KB 的捷徑)
隨身碟根目錄:原本的資料夾不見,只剩 sysvolume 和兩個「USB Drive」(一個是約 2 KB 的捷徑)
sysvolume 資料夾內:u+6 碼的 .bat、.vbs、.dat 與一個 .bin
sysvolume 資料夾內:u+6 碼的 .bat、.vbs、.dat 與一個 .bin
批次檔內容:把隨身碟與 System32 加入 Defender 排除,再把 .dat 複製成 System32 下的 .dll,並用 rundll32 啟動
批次檔內容:把隨身碟與 System32 加入 Defender 排除,再把 .dat 複製成 System32 下的 .dll,並用 rundll32 啟動
服務管理員裡多出的 u+6 碼服務(啟動類型為自動)
服務管理員裡多出的 u+6 碼服務(啟動類型為自動)
左:.vbs 以系統管理員身分(runas)重新啟動自己,再呼叫 .bat;右:.bat 加入排除項、複製 .dll 並用 rundll32 載入
左:.vbs 以系統管理員身分(runas)重新啟動自己,再呼叫 .bat;右:.bat 加入排除項、複製 .dll 並用 rundll32 載入

二、先判斷電腦有沒有中毒

以系統管理員身分開啟 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,就是異常(除非是您自己設定的)。

三、清除步驟

  1. 先拔掉所有隨身碟,整個過程不要插回去。電腦裡的常駐程式還在時,只要一插上隨身碟就會立刻重新寫入惡意檔案。
  2. 執行下方腳本(系統管理員身分)。它會結束帶有 u+6 碼檔名的行程、刪除惡意服務與 System32 內 u+6 碼的檔案(含沒有副檔名的)、移除 Defender 異常排除項,並清理已插入的隨身碟。
  3. 若提示檔案被占用,重開機後再執行一次,必要時進入安全模式處理。
  4. 一定要重新開機。惡意服務即使已刪除,只要還在記憶體裡就會繼續運作,要重開機才會完全消失。
  5. 重開機後(隨身碟仍不要插),再跑一次第二節的檢查,確認沒有輸出。
  6. 確認乾淨之後,才插入隨身碟,再執行一次腳本,處理隨身碟上的 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 排除項。

在系統管理員 PowerShell 逐步處理的畫面
在系統管理員 PowerShell 逐步處理的畫面

處理完、重新開機後,執行下面的驗收指令,沒有任何輸出,代表惡意服務已清除:

Get-Service | Where-Object { $_.Name -match '^u\d{6}$' }
Get-Service 比對 u+6 碼名稱,沒有任何結果
Get-Service 比對 u+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 插拔:一偵測到隨身碟,就隨機產生新編號,重新寫入整組檔案。所以只刪舊檔名永遠清不乾淨,要把「正在運作的那一個」找出來。

怎麼找出殘留的母體

  1. 拔掉隨身碟,以系統管理員身分開啟 PowerShell。
  2. 先看有沒有帶 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
  3. 再用第二節的「找出可疑的服務」指令,依 ImagePath 與 ServiceDll 全面比對。不要只用服務名稱判斷,因為每次感染的名稱不同;這次的服務就是靠 ServiceDll 指向 u+6 碼 dll 才找到。
  4. 找到服務後(假設叫 u548586)停止並刪除:
    Stop-Service -Name "u548586" -Force\nsc.exe delete "u548586"
    看到「[SC] DeleteService 成功」即可。
  5. 刪除 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"
  6. 重新開機,開機後再用第二節的指令確認服務、檔案都不存在,確認乾淨後才插入隨身碟處理。

如果檔案一直被占用刪不掉

表示惡意 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:\*.*

最後驗收(確認真的乾淨)

電腦的母體清掉、隨身碟也處理完之後,請依序做下面的驗收,全部通過才算完成:

  1. 隨身碟收尾:服務與 System32 檔案確認清除後,插入隨身碟,執行腳本,或在管理員命令提示字元手動執行(D 換成您的隨身碟代號):
    rd /s /q D:\sysvolume\ndel /f /q /a D:\*.lnk\nattrib -s -h -r /s /d D:\*.*
    開啟隨身碟,sysvolume 與捷徑不見了,原本的資料夾和檔案也恢復顯示。
  2. 先備份檔案,再對隨身碟按右鍵「格式化」(exFAT 或 NTFS,勾選「快速格式化」),把殘留的磁區記錄清乾淨。
  3. 拔出隨身碟,重新啟動電腦。
  4. 重開機後再插入隨身碟,等約 15 秒。確認不會再自動長出 sysvolume 或捷徑。
  5. 確認沒有殘留的服務:以管理員開啟 PowerShell 執行:
    Get-Service | Where-Object { $_.Name -match '^u\d{6}$' }
    沒有任何輸出才正確。
  6. 顯示隱藏檔案再看一次:檔案總管「檢視」→「顯示」→ 勾選「隱藏的項目」;再到「檢視」→「選項」→「檢視」分頁,暫時取消「隱藏保護的作業系統檔案」。確認隨身碟和 C:\Windows\System32 都看不到 u+6 碼開頭的檔案、sysvolume、未知的 .vbs/.bat。
  7. 把檢視設定改回來:重新勾選「隱藏保護的作業系統檔案(建議使用)」,避免平常誤動到 Windows 核心檔案。

上面都通過,這台電腦的後門服務與隨身碟感染鏈就算處理完成。

五、預防

  1. 關閉抽取式磁碟的自動執行:
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "NoDriveTypeAutoRun" -Value 255 -Type DWord
  2. 在檔案總管開啟「顯示副檔名」,並開啟顯示隱藏的檔案。
  3. 隨身碟插入後,如果資料夾圖示上有捷徑箭頭、或「資料夾」只有 1~2 KB,千萬不要雙擊,先用防毒軟體掃描。
  4. 在列印店、學校等公共電腦用過的隨身碟,帶回自己的電腦前先掃描一次。

需要協助嗎?

隨身碟檔案不見、電腦疑似已中毒,或不想自己執行腳本,歡迎聯絡名文電腦,我們可以協助檢查、救回檔案並清除。

※ 本文為一般性說明,自行操作屬使用者自行判斷與負責,操作不當可能造成資料遺失;名文電腦不對自行操作的結果負責。