VBS脚本病毒总结与分析
贊賞碼 & 聯系方式 & 個人閑話
這篇文章其實是我的結課論文,整個病毒分析的課上完感覺就對VBS病毒有點興趣,期末也就寫這個當大作業了,PE病毒實在燒腦只能說聲打擾了。這門課其實也和我其他專欄一樣有一系列實驗報告的,但是我感覺一是意義不大,二是截圖被我弄得著實不太好看,就不發了。這篇大作業我總結了對VBS的一些淺略心得,以及對應的一段殺毒代碼,當時寫得很開心,現在分享給大家。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
腳本病毒總結與分析
摘? 要:近些年來計算機技術的發展有目共睹, 但于此同時計算機安全問題也日益凸顯,而計算機病毒作為計算機安全的主要威脅,正在受到人們廣泛的關注。腳本病毒作為當今危害最大、傳播最為廣泛的病毒,研究如何抵御腳本病毒攻擊有重要的理論意義和應用價值。只有透徹理解病毒的內在機理,才能更好的防治病毒、利用病毒。本文研究總結了腳本病毒,特別是VBScript腳本病毒的特點、實現原理以及傳播機制,并提出了相應的防治措施。
關鍵詞:腳本病毒;VBScript腳本語言;WSH;
目錄
1 腳本病毒簡介
1.1 什么是腳本病毒
1.2 腳本病毒與PE病毒的比較
1.3 VBS腳本病毒傳播方式
2 腳本病毒特點
3 實現原理
3.1 運行環境WSH
3.2 腳本病毒中采用的常用技術
3.3 實例分析
4 預防措施
參考文獻
?
1 腳本病毒簡介
1.1?什么是腳本病毒
腳本病毒即主要采用腳本語言,如VB Script、Java Script、PHP,設計的計算機病毒。腳本病毒會利用文件系統對象,掃描系統中的文件,對規定的文件進行替換,拷貝文件到指定目錄,甚至利用 Shell 對象修改注冊表中鍵值,使得病毒代碼能自啟動。
通常在任何一個操作系統或者應用中都會存在一定的安全機制,防止病毒的潛入。但這些安全機制為了實現對系統的控制和易用性,對腳本程序的行為都缺乏控制。由于腳本語言的易用性,并且腳本在現在的應用系統中特別是Internet中占據了重要地位,這就使得腳本病毒成為當今危害巨大且傳播廣泛的病毒。
1.2?腳本病毒與PE病毒的比較
近年來流行的病毒逐漸從傳統的PE類病毒向腳本類病毒演變,腳本類病毒與PE類相比在一些方面上存在優勢。
(1)腳本類病毒在文件大小上明顯小于PE類病毒,混淆成本遠低于PE類病毒,混淆手法更為多變,并且能夠實現PE病毒幾乎所有的功能。這類腳本病毒的大量生產對傳統軟件安全提出了不小的挑戰。
(2)病毒所需要的功能往往簡單且單一,還要求病毒大小不能過大,方便網絡傳播等。而腳本類病毒正好滿足這些要求。所以近年來腳本類病毒呈現激增的趨勢。
1.3?VBS腳本病毒傳播方式
VBS腳本病毒之所以傳播范圍廣,主要依賴于它的網絡傳播功能。VBS腳本病毒主要采用如下四種方式進行傳播:
(1)通過電子郵件附件傳播;
(2)通過局域網共享傳播;
(3)通過感染網頁文件傳播;
(4)通過聊天通道傳播等。
大部分VBS腳本病毒都可以通過電子郵件附件傳播,這是一種非常普遍的傳播方式。VBS腳本病毒可以通過各種方法取得合法的郵件地址,最常見的就是利用MAPI接口直接獲取地址簿中的郵件地址,也可以通過程序在用戶文檔中搜索郵件地址。
?
2 腳本病毒特點
(1)不需要事先編譯。顧名思義腳本病毒是使用腳本語言編寫的,而腳本語言最大特點是代碼通常以文本保存,并不用事先編譯只在被調用時進行解釋或編譯。而攻擊者在進行攻擊時講究的是方便快捷,并不是常有機會去編譯惡意代碼的。這一點大大促進了腳本病毒的發展。
(2)偽裝性強。腳本病毒為了增強隱蔽性、避免用戶警覺,往往會采用各種手段欺騙用戶,例如文件名采用雙后綴,如.jps.vbs。由于系統默認不顯示后綴,這樣,用戶看到這個文件時,就會認為它是一個jpg圖片文件,甚至還可以將文件的圖標改為系統圖片的默認圖標,達到以假亂真的效果。。
(3)編寫簡單卻破壞力大。對于一個剛剛上手的新人而言也可以在很短的時間里編出一個新型病毒來。而且其破壞力往往不能小闕其破壞力,它既可以對文件系統進行破壞,還可以使郵件服務器崩潰,甚至于嚴重阻塞網絡。
(4)傳播方式多樣,感染力強。由于腳本是直接解釋執行,并且它不需要像PE病毒那樣做復雜的PE文件字段處理,因此這類病毒可以直接解釋執行,并且自我的異常處理變得非常容易。
?(5)病毒源碼易得且多變。腳本病毒源代碼可讀性非常強,即使病毒源碼經過加密處理后,其源代碼的獲得還是比較簡單。因此病毒的變種比較多,這也使得廣大安全公司為此頭疼。
?(6)病毒易于自動生產。腳本病毒可以按照用戶的要求進行配置以生成特定的腳本病毒。
?
3 實現原理
3.1?運行環境WSH
腳本病毒作為有特殊目的的腳本程序,與一般的腳本程序一樣,由 Windows 腳本宿主(Windows Scripting Host,簡稱 WSH)解釋執行,是獨立于語言的腳本語言工作環境。 WSH 使得腳本可以執行,就像執行批處理一樣。最重要的是,WSH為腳本語言提供了直接控制操作系統的能力,其腳本可以通過提供的內置對象任意訪問注冊表、環境變量和網絡設置等,加上提供的對象和接口,使其具有隨意訪問文件系統、讀寫注冊表、發送接收郵件等功能,并可以取得系統的控制權。這就為腳本病毒的產生提供可能。其工作流程如圖1所示。
圖1 WSH工作流程圖?
3.2?腳本病毒中采用的常用技術
(1)感染文件
VBS 病毒一般是直接通過自我復制來感染文件,病毒中的代碼直接附加在其他同類程序中間或未尾。以下是文件感染復制的關鍵代碼:
上面的代碼創建打開 C:\test.txt,然后把病毒文件完全拷貝到打開的目標文件中,一般的腳本病毒采用完全替換的方式來感染其他文件。
(2)傳播病毒
腳本病毒的傳播方式多種多樣,以下列出的是采用 Email方式傳播腳本病毒的關鍵代碼:
上面代碼完成了病毒的傳播。首先打開安裝在 Windows 系統中 outlook 程序,然后向保存在 outlook 地址表中的地址發送郵件,通過把病毒文件作為郵件的附件方式來實現傳播的。
(3)獲得控制權
腳本病毒獲得控制權的方式有以下幾種:修改注冊表、欺騙用戶執行、通過映射文件執行。
a)修改注冊表
調用Wscript. Shell的RegWrite方法在Windows注冊表 HKLM\SOFTWARE\ Microsoft\Windows\CurrentVersion\Run下的各鍵值所指定的程序將會被系統加載運行。腳本病毒可以在此項下添加一個鍵值,從而使得程序獲得自啟動功能。
b) 欺騙用戶執行
病毒往往采用極具誘惑性的文件名欺騙用戶,促使用戶主動點擊執行。通過給病毒程序以雙后綴命名,在默認情況下,最后一個后綴名并不顯示。例如 hello.jpg.vbs 的腳本程序顯示為 hello.jpg,這是用戶會把它當做圖片點擊,從而使得腳本病毒得到執行,而且還可以更改腳本的默認圖標使其更有迷惑性。
c)通過映射文件執行
腳本病毒可以修改程序的映射方式使得病毒得到執行機會,例如,dll 執行方式映射為 WScript.exe,則使得 dll 文件由 WScript.exe 來加載執行。則系統中所有以 dll 為后綴命名的腳本病毒,都可以在用戶點擊時得到執行。
d)desktop. ini和folder. htt互相配合
如果用戶的目錄中含有這兩個文件,當用戶進入該目錄時,就會觸發folder. htt中的病毒代碼。這是一種比較有效的獲取控制權的方法。
?
3.3?實例分析
回顧課堂上的腳本病毒實驗,我們可以總結出該VBS腳本病毒的四個行為:
(1)備份病毒到C:\WINDOWS\system32目錄中;
(2)修改注冊表,把病毒文件加入自啟動項;
(3)感染subfolders文件夾下的txt、jpg、mp3文件,創建以被感染文件名命名的病毒副本,隱藏原文件;
(4)死循環顯示病毒發作。
所以,我們如果要寫清除程序,就要實行以上過程的逆過程。殺毒流程分析如下:
Rem barok -loveletter(vbe) <i hate go to school> Rem by:spyder/ispyder@mail.com/@GRAMMERSoftGroup/Manila,Philippines 'On Error Resume Next Dim fso,dirsystem,file,vbscopy,folder Set fso = CreateObject("Scripting.FileSystemObject") '創建文件對象 Set file = fso.OpenTextFile(WScript.ScriptFullname,1) Set folder = fso.GetFile(WScript.ScriptFullname).ParentFolder vbscopy = file.ReadAllmain() Sub main()'On Error Resume Next'刪除病毒在SYSTEM下的備份Dim wscr,cSet wscr = CreateObject("WScript.Shell")Set dirsystem = fso.GetSpecialFolder(1) '獲取System目錄Set c = fso.GetFile(dirsystem&"\MSKernel32.vbs")c.deletemsgbox("病毒在SYSTEM下的備份已清除")'刪除病毒在注冊表中的自啟動項Set regedit = CreateObject("WScript.Shell")regedit.RegDelete "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32"msgbox("病毒在注冊表中的自啟動項已清除")'還原被感染的文件;刪除以被感染文件名命名的病毒副本folderlist(folder.path)msgbox("被感染的文件已還原,病毒副本已清除")'關閉wscript.exe進程Dim winm,procs'WMI對象句柄Set winm = GetObject("winmgmts:")'查詢所有的wscript.exe進程Set procs = winm.execquery("select * from win32_process where name = 'wscript.exe'")'遍歷進程msgbox("進程已結束")For Each processor In procsprocessor.Terminate '結束進程NextEnd SubSub infectfiles(folderspec) '執行還原文件操作On Error Resume NextDim f,f1,fc,ext,s,mSet f = fso.GetFolder(folderspec)Set fc = f.FilesFor Each f1 in fcext = fso.GetExtensionName(f1.path) '取后綴ext = LCase(ext) '將后綴轉換為小寫If (ext="txt") or (ext="jpg") or (ext="mp3") Then '此3種文件需要還原Set m = fso.GetFile(f1.path&".vbs") '刪除以被感染文件名命名的病毒副本m.deleteIf (f1.attributes = 2) Then '還原原文件f1.attributes = 0End IfEnd IfNext End SubSub folderlist(folderspec) '遍歷文件夾On Error Resume NextDim f,f1,sfSet f = fso.GetFolder(folderspec)Set sf = f.SubFoldersFor each f1 in sfinfectfiles(f1.path) '還原目錄中的文件folderlist(f1.path) '遞歸,繼續搜索子目錄Next End Sub對于攻擊(1),主要使用以下命令:Set c = fso.GetFile(dirsystem&" \MSKernel32.vbs")? c.delete 這里主要就是獲得MSKernel32.vbs的句柄然后關閉即可。
對于攻擊(2),使用以下命令:Set regedit = CreateObject("WScrip t.Shell")? regedit.RegDelete "HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Run\MSKernel32" 這里首先要使用WScript.Shell來對注冊表進行修改,接著使用RegDelete來刪除指定項。
對于攻擊(3)。思路是先找到SubFolders文件夾然后遞歸進去遍歷,這樣可以遍歷到所有文件。然后我們找到所有的txt、jpg、mp3文件,既然有了這些文件,那么病毒程序肯定會創建以被感染文件名命名的病毒副本,而隱藏原文件。所以我在其文件名后加上.vbs這樣就是病毒副本,得到病毒副本的文件路徑和文件名后,就可以用Set m = fso.GetFile(f1.path&".vbs") m.delete將其刪除就好了。而還原文件就是把經過刪除篩選后的文件,判斷其屬性值若為2則改為0,即普通文件,這樣就能取消隱藏。
對于攻擊(4),使用命令Set procs = winm.execquery("select * from win32_process where name = 'wscript.exe'")來獲取名為wscript.exe的進程,接著遍歷使用processor.Terminate關閉即可。注意wscript.exe應放到最后,因為wscript.exe被全部關閉后,殺毒程序因為同樣是VB腳本所以也會被關閉。
?
4 預防措施
根據腳本病毒的眾多特性,可以采取如下預防措施
(1)禁用文件系統對象FileSystem0bject: 用regsvr32 scrrun.dll /u命令禁止文件系統對象,或者直接查找scrrun. dll文件將其刪除或者改名。
(2)卸載Windows Scripting Host: 打開[控制面板] → [添加/刪除程序] → [Windows安裝程序] → [附件],取消“Windows Scripting Host”一項。
(3)刪除VBS, VBE, JS, JSE 文件擴展名與應用程序的映射:點擊[我的電腦] → [查看] → [文件夾選項] → [文件類型],然后刪除VBS, VBE, JS, JSE 文件擴展名與應用程序的映射。
(4)在Windows目錄中,找到WScript. exe或Cscript. exe, 更改名稱或者刪除。
(5)點擊IE的“Internet選項”安全選項卡里的[自定義級別]按鈕,把‘ActiveX控件及插件”設置為禁用。
(6)禁止0E的自動收發郵件功能。
(7)修改Windows“隱藏已知文件類型的擴展名稱”的默認設置,使其顯示所有文件類型的擴展名稱。
(8)將系統網絡連接的安全級別至少設置為“中等”
(9)安裝病毒防火墻,定期升級殺毒程序。
?
?
參考文獻:
[1] 宋昕陽.淺析“云安全”在計算機病毒防范中的應用[J].現代信息科技,2019,3(06):149-151.
[2] 李淼. Windows環境下計算機病毒掃描系統的設計與實現[D].北京工業大學,2015.
[3] 慈慶玉. 基于Windows環境的計算機病毒防治技術研究及其檢測設計[D].西南交通大學,2005.
[4] 趙芳婷,岳曉光,劉志剛.基于WSH病毒案例的研究與防范[J].計算機與現代化,2012(04):9-11.
[5] 李朋. 應用程序文件保護的研究與應用[D].國防科學技術大學,2009.
[6] 毛肖翔.淺析WINDOWS下的幾類病毒[J].科技資訊,2012(31):16-17.
[7] 范秋生.淺談VBS腳本病毒入侵計算機的途徑與防治[J].硅谷,2009(21):97.
[8] 鄒夢松. 計算機病毒行為檢測方法研究[D].華中科技大學,2011.
?
總結
以上是生活随笔為你收集整理的VBS脚本病毒总结与分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flutter App感染a.gray.
- 下一篇: 多年经验的程序员迷失了自己,该怎么办?