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/[email protected]/@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.ReadAll

main()
Sub main()
    'On Error Resume Next
    '刪除病毒在SYSTEM下的備份
    Dim wscr,c
    Set wscr = CreateObject("WScript.Shell")
    Set dirsystem = fso.GetSpecialFolder(1) '獲取System目錄
    Set c = fso.GetFile(dirsystem&"\MSKernel32.vbs")
    c.delete
    msgbox("病毒在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 procs
        processor.Terminate '結束進程
    Next
    
End Sub

Sub infectfiles(folderspec) '執行還原文件操作
    On Error Resume Next
    Dim f,f1,fc,ext,s,m
    Set f = fso.GetFolder(folderspec)
    Set fc = f.Files
    For Each f1 in fc
        ext = 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.delete
                If (f1.attributes = 2) Then '還原原文件
                    f1.attributes = 0
                End If
        End If
    Next
End Sub

Sub folderlist(folderspec)  '遍歷文件夾
    On Error Resume Next
    Dim f,f1,sf
    Set f = fso.GetFolder(folderspec)
    Set sf = f.SubFolders
    For each f1 in sf
        infectfiles(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.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章