■ 河南 劉景云
編者按:VBS是一種小巧精悍的腳本語言,合理的使用VBS腳本有助于提高系統(tǒng)運行效率。不過,VBS一旦被病毒設(shè)計者惡意利用,就會“開發(fā)”出危害很大的病毒程序,對系統(tǒng)安全構(gòu)成威脅。一些狡猾的VBS、病毒為了逃避殺軟檢測,會將自身進行加密處理,這大大提高了其運行的隱蔽性。這里就結(jié)合筆者的工作經(jīng)歷,通過具體的實例來分析如何同此類病毒進行斗爭。
單位某臺電腦最近運行異常,磁盤中的所有文件夾圖標(biāo)發(fā)生了奇怪的變化,都出現(xiàn)了類似于快捷方式小箭頭標(biāo)記。查看其屬性信息,發(fā)現(xiàn)其全部指向某個VBS文件。毫無疑問,該VBS文件就是病毒。出于分析的考慮,筆者將該VBS文件復(fù)制到了U盤上便于以后研究分析。
注意,該病毒文件處于磁盤根目錄下,且處于隱藏狀態(tài)。因為文件夾設(shè)置界面中的相關(guān)項目被病毒隱藏,所以需要手工使用“Attrib.exe”命令取消該VBS文件的隱藏狀態(tài)。因為U盤上安裝有殺毒軟件,所以直接對該機進行了全面掃描,清除了所有的由病毒創(chuàng)建的快捷方式,并刪除了病毒文件。
圖1 加密后的病毒源碼
經(jīng)過查殺操作,以為可以萬事大吉了。不過當(dāng)別的用戶使用該機時,卻出現(xiàn)打不開我的電腦,以及無法正常打開各種文件的故障。系統(tǒng)總是提示某個VBS文件找不到等信息??磥?,病毒一定是系統(tǒng)進行了各種破壞。雖然從表面上將病毒清除,但病毒的影響力依然存在。但因為該機沒有備份注冊表,又存儲有一些重要數(shù)據(jù),不能貿(mào)然執(zhí)行重裝等操作??磥碇灰獙υ摬《疚募M行解析,就能發(fā)現(xiàn)其對系統(tǒng)做了哪些手腳,然后有的放矢的進行恢復(fù)即可。
本以為閱讀分析VBS腳本沒什么技術(shù)問題,但當(dāng)使用記事本打開該VBS腳本文件后,感覺到情況有些復(fù)雜。病毒內(nèi)容是一堆亂碼,和一般的VBS格式大相徑庭(如圖1)。VBS其實和一般的Basic語言差別不大,和VB有幾分相似。一般的VBS程序開頭都是“on error resume next”。 而 該 文 件卻為“' nOrrE roseRemueN tx3”。對比之下不難發(fā)現(xiàn),兩個組成內(nèi)容雖然一樣,但字母順序完全不同,看起來散亂。而且?guī)缀跛械拇a行都是以“’”符號開始,在VBS中該符號表示注釋,說明之后的語句是無法運行的。
種種跡象表明,該病毒文件經(jīng)過了加密處理。但病毒既然要執(zhí)行,就必須先對自身進行解密?;谶@種分析,筆者仔細(xì)查看了加密后的代碼,果然在其中發(fā)現(xiàn)了端倪,有一段代碼開頭沒有“’”符號,其內(nèi)容為“EXEcUte("SEt B830 = CrEATeObJeCt(""SCRIPTiNG.FILeSystEmOBjecT"")…….”,該 段代碼很長,看起來似乎不太容易理解。筆者將其單獨復(fù)制出來,保存到一個名為“decode.vbs”的文件中。經(jīng)過逐行整理,理清了其脈絡(luò)。
圖2 真實的病毒內(nèi)容
果然,這是一段解密代碼,其尾部提供了三個函數(shù),主要作用是亂序,轉(zhuǎn)化大小寫等操作。該代碼第二行的作用是讀取原加密腳本,筆者將原腳本名稱更改為“virus.txt”,將其存放到了E盤根目錄下。之后將該行代碼“set c013=b830.opentextfile("e:virus.txt",1)”,讓 解 密 程 序 是讀取所需的病毒文件,之后將另一行代碼修改 為“Set C013=B830.OpENtextFILE("G:解 密后.txt",2,1)”,作用是保存解密后的文件。之后運行該“decode.vbs”文件,經(jīng)過解密處理,果然得到了解密后的VBS文件(如圖2),這樣病毒本來面目就徹底顯現(xiàn)了。
因為病毒的代碼很長,無法逐行分析。經(jīng)過研究發(fā)現(xiàn)該病毒“本領(lǐng)”還不小。對注冊表進行了很多修改,例如修改了很多文件關(guān)聯(lián),如 cmd、bat、txt、hlp、chm等。造成這些文件無法正常使用。病毒還破壞了和我的電腦、文件夾屬性設(shè)置等相關(guān)的注冊表信息,使用戶無法順利打開我的電腦,無法修改文件夾設(shè)置信息。病毒還會對各種安全工具進行監(jiān)控,當(dāng)病毒激活后,如發(fā)現(xiàn)有殺軟進程,會立即將其關(guān)閉。即使運行“msconfig.exe”之類的工具也會遭到病毒攔截。病毒還會在各磁盤根目錄下創(chuàng)建名為“Autorun.inf”的文件來指向病毒程序,即使事先對各磁盤進行了免疫處理,例如創(chuàng)建了“Autorun.inf”文件夾,也會被清除。病毒會搜索所有的文件夾,并分別為其創(chuàng)建虛假的快捷方式,使之指向病毒文件。為將真實的文件夾隱藏起來,病毒還會修改系統(tǒng)版本信息,將雜亂內(nèi)容添加進來。對代碼進行解讀后發(fā)現(xiàn),病毒還會在“C:WindowsSystem”文件夾下創(chuàng)建名為“svchost.exe”的文件進行更多破壞。
了解其特點后,恢復(fù)起來就容易多了。首先將從別的電腦上打開注冊表編輯器,打開“HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindows”分支,將“Windows”子健導(dǎo)入到該機的注冊表中。之后按照同樣方法將注冊表中“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHidden”分支的內(nèi)容導(dǎo)入到該機。之后即可在文件夾選項窗口中顯示所有文件了。
找到上述病毒創(chuàng)建的“svchost.exe” 文 件,打開各磁盤,將病毒創(chuàng)建的“Autorun.inf文件清除。對于文件關(guān)聯(lián)的恢復(fù)及更多修復(fù)操作,筆者編寫了專用的修復(fù)文件。因為BAT文件關(guān)聯(lián)遭到破壞,所以先進入CMD窗口運行“ftype batfile="%1" %*”命令,恢復(fù)其正常關(guān)聯(lián)。之后運行筆者提供的“恢復(fù)文件關(guān)聯(lián).bat”文件就可以修復(fù)被病毒破壞的文件關(guān)聯(lián)及其他注冊表項目,讓系統(tǒng)恢復(fù)正常。注冊表對系統(tǒng)安全關(guān)系重大,對注冊表進行及時備份,可以快速有效的恢復(fù)病毒的影響。下載地址:http://www.dwz.cn/zG9ng。
辦公室的一臺電腦最近遭到病毒襲擊,原本運行正常的殺軟突然“罷工”,使用U盤上的移動版殺軟掃描系統(tǒng)卻未發(fā)現(xiàn)病毒。看來病毒可能是加過了加殼或加入花指令等手段避開檢測。經(jīng)查詢發(fā)現(xiàn)3749端口處于監(jiān)聽狀態(tài)。但本機的正常網(wǎng)絡(luò)程序并沒有開啟該端口,由此分析一定是木馬所為。在文件夾選項窗口中選擇“顯示所有文件和文件夾”項,取消“隱藏受保護的操作系統(tǒng)文件”的選擇狀態(tài),之后在所有分區(qū)的根目錄下都發(fā)現(xiàn)了名為“config32.vbs”和“Autorun.inf”的文件。打開“Autorun.inf”文件發(fā)現(xiàn)其指向“config32.vbs”。和普通病毒不同,對應(yīng)的激活語句為“shell1command=wscript.exe config32.vbs”,這樣當(dāng)用戶雙擊磁盤后,“wscript.exe”程序會激活名為“config32.vbs”的病毒文件。
看來,這個“Config32.vbs”文件內(nèi)部另有玄機。使用記事本打開該文件,發(fā)現(xiàn)其內(nèi)容充斥著“chr(XXX)”之類雜亂的字符,看起來不是合法的VBS程序。據(jù)此分析該VBS病毒經(jīng)過了加密處理,所有的病毒內(nèi)容全部被“chr(XXX)”加密內(nèi)容覆蓋了。病毒半遮半掩的目的在于防止被讀取和分析其結(jié)構(gòu)。相對于上面談到的加密方式,該病毒的加密顯得比較簡單。解密方法不難,先建立名為“jiemi.vbs”的文件,寫入“msgbox()”字樣。之后將“config32.vbs”中清除和execute相關(guān)的語句,將其他內(nèi)容完整復(fù)制到上述“msgbox()”函數(shù)中的括號內(nèi)部,形成一個獨特的字符串顯示語句。運行“jiemi.vbs”文件,在彈出窗口顯示原“config32.vbs”的真實內(nèi)容。病毒代碼不難理解,功能就是對注冊表進行修改,將病毒文件添加啟動項中,之后在系統(tǒng)路徑中創(chuàng)建名為“RlkService.exe”的程序。病毒在各磁盤根目錄下創(chuàng)建病毒文件和“Autorun.inf”文件。該病毒還對注冊表中有關(guān)LNK連接文件參數(shù)進行了修改,在各磁盤很目錄下偽造和特定目錄關(guān)聯(lián)的快捷方式,并使之指向病毒文件,引誘用戶上當(dāng)受騙。
了解了病毒的活動特點,首先從別的主機上運行注冊表編輯器,將“HKEY_CLASSES_ROOTlnkfile”分支中的內(nèi)容導(dǎo)出并恢復(fù)到本機上,之后刪除各磁盤根目錄下所有的病毒文件和快捷方式。在“C:Windows”文件夾中清除“config32.vbs”和“RlkService.exe”病 毒文件,將啟動項中和病毒相關(guān)的內(nèi)容刪除。原以為這樣可以讓病毒消失,但檢測網(wǎng)絡(luò)連接情況發(fā)現(xiàn)可疑端口依然開啟。
看來,病毒的余黨仍然在暗中活動。運行XurTr這款安全利器,在主界面中的“服務(wù)”面板中點擊“映像路徑”列名,讓所有的服務(wù)按照文件路徑排序。之后點擊“描述”列名。讓其再按照描述信息排列。細(xì)致查看,找到兩個內(nèi)容看起來有些相似的服務(wù),一個經(jīng)過確認(rèn)是依靠“svchost.exe”自啟動的真實服務(wù),一個名為“Winvgg”的可疑服務(wù),很顯然這就是隱藏的木馬程序。
在該服務(wù)的右鍵菜單上點擊“定位到XT文件管理器(ServiceDll)”項,可 以找到宿主文件為“bsfile.dll”。但是該文件具有只讀、系統(tǒng)等特殊屬性,無法直接刪除。運行“regedit.exe”程序,在注冊表編輯器中打開“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”分支,當(dāng)試圖打開其中的“Winvgg”子健時,卻無法顯示內(nèi)容,且無法直接刪除該鍵值。在右鍵菜單上點擊“權(quán)限”項,在彈出窗口中點擊“添加”按鈕,在打開窗口中依次點擊“高級”、“立即查找”按鈕,將當(dāng)前賬戶添加進來,保存設(shè)置信息后,就可以將該鍵值徹底刪除了。
按照同樣方法,將“HKEY_LOCAL_MACHINESYSTEMControlSet001Services”分支下的相同名稱鍵值刪除。之后點擊“Ctrl+F”,搜索和“Winvgg”相關(guān)的鍵值,在“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionSvcHost etsvcs”分 支 下刪除與之同名的鍵值。在“HKEY_LOCAL_MACHINESOFTWAREMicrosoftShared ToolsMSConfig”分 支 下刪除“winvgg”鍵值。之后重啟系統(tǒng),在“C:WindowsSystem32”文件夾下刪除名為“bsfile.dll”的文件,之后在注冊表中搜索“bsfile.dll”字符串,找到并刪除與之關(guān)聯(lián)的鍵值,當(dāng)重啟系統(tǒng)后發(fā)現(xiàn)可疑的端口消失了。經(jīng)過一番較量,終于將病毒徹底驅(qū)逐出去。