網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 網絡的流行,讓我們的世界變得更加美好,但它也有讓人不愉快的時候。當您收到一封主題為“I Love You”的郵件,用興奮得幾乎快發抖的鼠標去點擊附件的時候;當您瀏覽一個信任的網站之后,發現打開每個文件夾的速度非常慢的時候,您是否察 覺病毒已經闖進了您的世界呢?2000年5月4日歐美爆發的“愛蟲”網絡蠕蟲病毒。由于通過電子郵件系統傳播,愛蟲病毒在短短幾天內狂襲全球數百萬計的電腦。微軟、Intel等在內的眾多大型企業網絡系統癱瘓,全球經濟損失達幾十億美元。而去年爆發的新歡樂時光病毒至今都讓廣大電腦用戶更是苦不堪言。上面提及的兩個病毒最大的一個共同特點是:使用VBScript編寫。以愛蟲和新歡樂時光病毒為典型代表的VBS腳本病毒十分的猖獗,很重要的一個原因就是其編寫簡單。下面我們就來逐一對VBS腳本病毒的各個方面加以分析: 一、Vbs腳本病毒的特點及發展現狀 VBS病毒是用VB Script編寫而成,該腳本語言功能非常強大,它們利用Windows系統的開放性特點,通過調用一些現成的Windows對象、組件,可以直接對文件系統、注冊表等進行控制,功能非常強大。應該說病毒就是一種思想,但是這種思想在用VBS實現時變得極其容易。VBS腳本病毒具有如下幾個特點: 1.編寫簡單,一個以前對病毒一無所知的病毒愛好者可以在很短的時間里編出一個新型病毒來。 2.破壞力大。其破壞力不僅表現在對用戶系統文件及性能的破壞。他還可以使郵件服務器崩潰,網絡發生嚴重阻塞。 3.感染力強。由于腳本是直接解釋執行,并且它不需要像PE病毒那樣,需要做復雜的PE文件格式處理,因此這類病毒可以直接通過自我復制的方式感染其他同類文件,并且自我的異常處理變得非常容易。 4.傳播范圍大。這類病毒通過htm文檔,Email附件或其它方式,可以在很短時間內傳遍世界各地。 5.病毒源碼容易被獲取,變種多。由于VBS病毒解釋執行,其源代碼可讀性非常強,即使病毒源碼經過加密處理后,其源代碼的獲取還是比較簡單。因此,這類病毒變種比較多,稍微改變一下病毒的結構,或者修改一下特征值,很多殺毒軟件可能就無能為力。 6.欺騙性強。腳本病毒為了得到運行機會,往往會采用各種讓用戶不大注意的手段,譬如,郵件的附件名采用雙后綴,如.jpg.vbs,由于系統默認不顯示后綴,這樣,用戶看到這個文件的時候,就會認為它是一個jpg圖片文件。 7.使得病毒生產機實現起來非常容易。所謂病毒生產機,就是可以按照用戶的意愿,生產病毒的機器(當然,這里指的是程序),目前的病毒生產機,之所以大多數都為腳本病毒生產機,其中最重要的一點還是因為腳本是解釋執行的,實現起來非常容易,具體將在我們后面談及。 正因為以上幾個特點,腳本病毒發展異常迅猛,特別是病毒生產機的出現,使得生成新型腳本病毒變得非常容易。 [page_break]二、Vbs腳本病毒原理分析 1.vbs腳本病毒如何感染、搜索文件 VBS腳本病毒一般是直接通過自我復制來感染文件的,病毒中的絕大部分代碼都可以直接附加在其他同類程序的中間,譬如新歡樂時光病毒可以將自己的代碼附加在.htm文件的尾部,并在頂部加入一條調用病毒代碼的語句,而愛蟲病毒則是直接生成一個文件的副本,將病毒代碼拷入其中,并以原文件名作為病毒文件名的前綴,vbs作為后綴。下面我們通過愛蟲病毒的部分代碼具體分析一下這類病毒的感染和搜索原理: Set fso=createobject("scripting.filesystemobject") '創建一個文件系統對象 上面描述了病毒文件是如何感染正常文件的:首先將病毒自身代碼賦給字符串變量vbscopy,然后將這個字符串覆蓋寫到目標文件,并創建一個以目標文件名為文件名前綴、vbs為后綴的文件副本,最后刪除目標文件。 下面我們具體分析一下文件搜索代碼: '該函數主要用來尋找滿足條件的文件,并生成對應文件的一個病毒副本 上面的代碼就是VBS腳本病毒進行文件搜索的代碼分析。搜索部分scan( )函數做得比較短小精悍,非常巧妙,采用了一個遞歸的算法遍歷整個分區的目錄和文件。 2.vbs腳本病毒通過網絡傳播的幾種方式及代碼分析 VBS腳本病毒之所以傳播范圍廣,主要依賴于它的網絡傳播功能,一般來說,VBS腳本病毒采用如下幾種方式進行傳播: [page_break]1)通過Email附件傳播 這是一種用的非常普遍的傳播方式,病毒可以通過各種方法拿到合法的Email地址,最常見的就是直接取outlook地址簿中的郵件地址,也可以通過程序在用戶文檔(譬如htm文件)中搜索Email地址。 下面我們具體分析一下VBS腳本病毒是如何做到這一點的: Function mailBroadcast() 2)通過局域網共享傳播 局域網共享傳播也是一種非常普遍并且有效的網絡傳播方式。一般來說,為了局域網內交流方便,一定存在不少共享目錄,并且具有可寫權限,譬如win2000創建共享時,默認就是具有可寫權限。這樣病毒通過搜索這些共享目錄,就可以將病毒代碼傳播到這些目錄之中。 在VBS中,有一個對象可以實現網上鄰居共享文件夾的搜索與文件操作。我們利用該對象就可以達到傳播的目的。 welcome_msg = "網絡連接搜索測試" [page_break]上面是一個用來尋找當前打印機連接和網絡共享連接并將它們顯示出來的完整腳本程序。在知道了共享連接之后,我們就可以直接向目標驅動器讀寫文件了。 3)通過感染htm、asp、jsp、php等網頁文件傳播 如今,WWW服務已經變得非常普遍,病毒通過感染htm等文件,勢必會導致所有訪問過該網頁的用戶機器感染病毒。 病毒之所以能夠在htm文件中發揮強大功能,采用了和絕大部分網頁惡意代碼相同的原理。基本上,它們采用了相同的代碼,不過也可以采用其它代碼,這段代碼是病毒FSO,WSH等對象能夠在網頁中運行的關鍵。在注冊表HKEY_CLASSES_ROOT\CLSID\下我們可以找到這么一個主鍵{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B},注冊表中對它他的說明是“Windows Script Host Shell Object”,同樣,我們也可以找到{0D43FE01-F093-11CF-8940-00A0C9054228},注冊表對它的說明是“FileSystem Object”,一般先要對COM進行初始化,在獲取相應的組件對象之后,病毒便可正確地使用FSO、WSH兩個對象,調用它們的強大功能。代碼如下所示: Set Apple0bject = document.applets("KJ_guest") 對于其他類型文件,這里不再一一分析。 4)通過IRC聊天通道傳播 病毒通過IRC傳播一般來說采用以下代碼(以MIRC為例) Dim mirc 以上代碼用來往Script.ini文件中寫入一行代碼,實際中還會寫入很多其他代碼。Script.ini中存放著用來控制IRC會話的命令,這個文件里面的命令是可以自動執行的。譬如,“歌蟲”病毒TUNE.VBS就會修改c:\mirc\script.ini 和 c:\mirc\mirc.ini,使每當IRC用戶使用被感染的通道時都會收到一份經由DDC發送的TUNE.VBS。同樣,如果Pirch98已安裝在目標計算機的c:\pirch98目錄下,病毒就會修改c:\pirch98\events.ini和c:\pirch98\pirch98.ini,使每當IRC用戶使用被感染的通道時都會收到一份經由DDC發送的TUNE.VBS。 另外病毒也可以通過現在廣泛流行的KaZaA進行傳播。病毒將病毒文件拷貝到KaZaA的默認共享目錄中,這樣,當其他用戶訪問這臺機器時,就有可能下載該病毒文件并執行。這種傳播方法可能會隨著KaZaA這種點對點共享工具的流行而發生作用。 3.VBS腳本病毒如何獲得控制權 如何獲取控制權?這一個是一個比較有趣的話題,而VBS腳本病毒似乎將這個話題發揮的淋漓盡致。筆者在這里列出幾種典型的方法: [page_break]1)修改注冊表項 windows在啟動的時候,會自動加載HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run項下的各鍵值所執向的程序。腳本病毒可以在此項下加入一個鍵值指向病毒程序,這樣就可以保證每次機器啟動的時候拿到控制權。vbs修改貯冊表的方法比較簡單,直接調用下面語句即可。 wsh.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.vbs腳本病毒對抗反病毒軟件的幾種技巧 病毒要生存,對抗反病毒軟件的能力也是必需的。一般來說,VBS腳本病毒采用如下幾種對抗反病毒軟件的方法: 1)自加密 譬如,新歡樂時光病毒,它可以隨機選取密鑰對自己的部分代碼進行加密變換,使得每次感染的病毒代碼都不一樣,達到了多態的效果。這給傳統的特征值查毒法帶來了一些困難。病毒也還可以進一步的采用變形技術,使得每次感染后的加密病毒的解密后的代碼都不一樣。 下面看一個簡單的vbs腳本變形引擎(來自flyshadow) Randomize 上面這段代碼使得該VBS文件在每次運行后,其Of,vC,fS,fSC四字符串都會用隨機字符串來代替,這在很大程度上可以防止反病毒軟件用特征值查毒法將其查出。 2)巧妙運用Execute函數 用過VBS程序的朋友是否會覺得奇怪:當一個正常程序中用到了FileSystemObject對象的時候,有些反病毒軟件會在對這個程序進行掃描的時候報告說此Vbs文件的風險為高,但是有些VBS腳本病毒同樣采用了FileSystemObject對象,為什么卻又沒有任何警告呢?原因很簡單,就是因為這些病毒巧妙的運用了Execute方法。有些殺毒軟件檢測VBS病毒時,會檢查程序中是否聲明使用了FileSystemObject對象,如果采用了,這會發出報警。如果病毒將這段聲明代碼轉化為字符串,然后通過Execute(String)函數執行,就可以躲避某些反病毒軟件。 [page_break]3)改變某些對象的聲明方法 譬如fso=createobject("scripting.filesystemobject"),我們將其改變為 4)直接關閉反病毒軟件 VBS腳本功能強大,它可以直接在搜索用戶進程然后對進程名進行比較,如果發現是反病毒軟件的進程就直接關閉,并對它的某些關鍵程序進行刪除。 5.Vbs病毒生產機的原理介紹 所謂病毒生產機就是指可以直接根據用戶的選擇產生病毒源代碼的軟件。在很多人看來這或許不可思議,其實對腳本病毒而言它的實現非常簡單。 腳本語言是解釋執行的、不需要編譯,程序中不需要什么校驗和定位,每條語句之間分隔得比較清楚。這樣,先將病毒功能做成很多單獨的模塊,在用戶做出病毒功能選擇后,生產機只需要將相應的功能模塊拼湊起來,最后再作相應的代碼替換和優化即可。由于篇幅關系和其他原因,這里不作詳細介紹。 1.如何從樣本中提取(加密)腳本病毒 對于沒有加密的腳本病毒,我們可以直接從病毒樣本中找出來,現在介紹一下如何從病毒樣本中提取加密VBS腳本病毒,這里我們以新歡樂時光為例。 用JediEdit打開folder.htt。我們發現這個文件總共才93行,第一行<BODY onload="vbscript:KJ_start()">,幾行注釋后,以<html>開始,</html>節尾。相信每個人都知道這是個什么類型的文件吧! 第87行到91行,是如下語句: 87:<script language=vbscript> 第87和91行不用解釋了,第88行是一個字符串的賦值,很明顯這是被加密過的病毒代碼。看看89行最后的一段代碼ThisText = ThisText & TempChar,再加上下面那一行,我們肯定能夠猜到ThisText里面放的是病毒解密代碼(熟悉vbs的兄弟當然也可以分析一下這段解密代碼,too simple!就算完全不看代碼也應該可以看得出來的)。第90行是執行剛才ThisText中的那段代碼(經過解密處理后的代碼)。 那么,下一步該怎么做呢?很簡單,我們只要在病毒代碼解密之后,將ThisText的內容輸出到一個文本文件就可以解決了。由于上面幾行是vbscript,于是我創建了如下一個.txt文件: 首先,copy第88、89兩行到剛才建立的.txt文件,當然如果你愿意看看新歡樂時光的執行效果,你也可以在最后輸入第90行。然后在下面一行輸入創建文件和將ThisText寫入文件vbs代碼,整個文件如下所示: OK!就這么簡單,保存文件,將該文件后綴名.txt改為.vbs(.vbe也可以),雙擊,你會發現該文件目錄下多了一個文件resource.log,打開這個文件,怎么樣?是不是“新歡樂時光”的源代碼啊! 2.vbs腳本病毒的弱點 vbs腳本病毒由于其編寫語言為腳本,因而它不會像PE文件那樣方便靈活,它的運行是需要條件的(不過這種條件默認情況下就具備了)。筆者認為,VBS腳本病毒具有如下弱點: 1)絕大部分VBS腳本病毒運行的時候需要用到一個對象:FileSystemObject [page_break]3.如何預防和解除vbs腳本病毒 針對以上提到的VBS腳本病毒的弱點,筆者提出如下集中防范措施: 1)禁用文件系統對象FileSystemObject 方法:用regsvr32 scrrun.dll /u這條命令就可以禁止文件系統對象。其中regsvr32是Windows\System下的可執行文件。或者直接查找scrrun.dll文件刪除或者改名。 還有一種方法就是在注冊表中HKEY_CLASSES_ROOT\CLSID\下找到一個主鍵{0D43FE01-F093-11CF-8940-00A0C9054228}的項,咔嚓即可。 2)卸載Windows Scripting Host 在Windows 98中(NT 4.0以上同理),打開[控制面板]→[添加/刪除程序]→[Windows安裝程序]→[附件],取消“Windows Scripting Host”一項。 和上面的方法一樣,在注冊表中HKEY_CLASSES_ROOT\CLSID\下找到一個主鍵{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}的項,咔嚓。 3)刪除VBS、VBE、JS、JSE文件后綴名與應用程序的映射點擊[我的電腦]→[查看]→[文件夾選項]→[文件類型],然后刪除VBS、VBE、JS、JSE文件后綴名與應用程序的映射。 4)在Windows目錄中,找到WScript.exe,更改名稱或者刪除,如果你覺得以后有機會用到的話,最好更改名稱好了,當然以后也可以重新裝上。 5)要徹底防治VBS網絡蠕蟲病毒,還需設置一下你的瀏覽器。我們首先打開瀏覽器,單擊菜單欄里“Internet 選項”安全選項卡里的[自定義級別]按鈕。把“ActiveX控件及插件”的一切設為禁用,這樣就不怕了。呵呵,譬如新歡樂時光的那個ActiveX組件如果不能運行,網絡傳播這項功能就玩完了。 6)禁止OE的自動收發郵件功能 7)由于蠕蟲病毒大多利用文件擴展名作文章,所以要防范它就不要隱藏系統中已知文件類型的擴展名。Windows默認的是“隱藏已知文件類型的擴展名稱”,將其修改為顯示所有文件類型的擴展名稱。 8)將系統的網絡連接的安全級別設置至少為“中等”,它可以在一定程度上預防某些有害的Java程序或者某些ActiveX組件對計算機的侵害。 9)呵呵,最后一項不說大家也應該知道了,殺毒軟件確實很必要,盡管有些殺毒軟件挺讓廣大用戶失望,不過,選擇是雙方的哦。在這個病毒橫飛的網絡,如果您的機器沒有裝上殺毒軟件我覺得確實挺不可思議的。 四、對所有腳本類病毒發展的展望 隨著網絡的飛速發展,網絡蠕蟲病毒開始流行,而VBS腳本蠕蟲則更加突出,不僅數量多,而且威力大。由于利用腳本編寫病毒比較簡單,除了將繼續流行目前的VBS腳本病毒外,將會逐漸出現更多的其它腳本類病毒,譬如PHP,JS,Perl病毒等。 但是腳本并不是真正病毒技術愛好者編寫病毒的最佳工具,并且腳本病毒解除起來比較容易、相對容易防范。筆者認為,腳本病毒仍將繼續流行,但是能夠具有像愛蟲、新歡樂時光那樣大影響的腳本蠕蟲病毒只是少數。 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!