本文來自i春秋作者 @wxcstc
一、前言
病毒課老師丟給我們一份加密過的vbs腳本病毒的代碼去嘗試分析,這里把分析過程發出來,供大家參考,如果發現文中有什么錯誤或者是有啥建議,可以直接留言給我,謝謝!
二、目錄
整個分析過程可以分為以下幾個部分:
0x00 準備工作 0x01 解密部分 0x02 功能分析
三、分析過程
0x00 準備工作
windows xp的虛擬機(在自己的windows下也可以做) vbs的一些基本語法
0x01 解密部分
右擊病毒文件然后編輯打開或者是直接把其后綴修改成txt直接打開都行,可以看到一大段密文,并調用了一個函數deCrypt。暫時只看到這些,那么接著往下看吧。


拖到代碼底部,發現有deCrypt了一次,也就是經過了兩次加密,這里把執行部分注釋掉,然后將解密的結果輸出到文本文件中去。另外,可以看到是用base64進行的加密的。

現在來看看解碼后的結果。發現依舊是不可閱讀的代碼,那就繼續看看他是怎么處理的吧。

這里可以看到是將之前的字符串按“|dz|”劃分,然后得到的是ascii碼,將這些ascii碼對應的字符拼接起來就好了,就得到了結果。同樣的套路將解密結果輸出到文件中去再繼續分析。

然后這次得到的結果是真正的病毒代碼了。接下來對他的功能進行分析。
0x02 功能分析
從頭開始看吧。顯示一些配置信息,包括了服務器的域名。可以查到服務器是美國的,嘗試ping了下,ping不通,可能是服務器作了設置不讓人ping、也可能是服務器已經不用了、也有可能是我國的防火長城直接墻掉了。。。
然后是一些之后要用到的變量,這里不作過多的解釋
之后就是code start的部分了。然后由于里面調用了各種函數,所以這里按執行的順序給調用的函數編號,以便閱讀,不然會感覺很凌亂的。
這里先是調用了instance函數。
1.instance函數
給之前的一個參數usbspreading賦值,并對注冊表進行寫操作
在執行完了instance函數后,會進入一個while true的死循環,不斷從服務器讀取命令,然后執行。在進入while里面后,先是調用install過程。
2.install過程 在install中,又調用了upstart,再進去看看。

2.1 upstart過程 這里通過注冊表將病毒腳本設置成開機自啟動。
然后從upstart過程出來繼續看看install剩下的代碼,有點多,直接把功能告訴大家。
掃描所有的驅動,如果類型號是1,會有所動作,為1時代表可移動設備,這是想感染優盤之類的可移動設備。它將腳本拷貝到可移動設備的根目錄下,然后設置文件屬性,2為隱藏文件,可讀寫,4為系統文件,可讀寫。
然后獲取可移動設備根目錄所有的文件,如果不是lnk文件, 將其設置為隱藏的系統文件,可讀寫。然后創建相應的快捷方式,其指向的程序是cmd.exe,其參數是"/c start " & replace(installname," ", chrw(34) & " " & chrw(34)) & "&start " & replace(file.name," ", chrw(34) & " " & chrw(34)) &"&exit",意思是點擊該快捷方式后會先啟動那個腳本病毒,然后再啟動真正的文件,之后退出cmd。
然后對根目錄下的文件夾作同樣的操作。至此,對子程序install的分析到此結束,接下來分析函數程序post。
3.post函數
可以看到post的功能是發送被感染機器的相關信息到服務器并從服務器獲取病毒制作者的命令數據。在里面有調用了函數information以獲取被感染機的相關信息,再看下它是怎么實現的。
3.1 information函數
information函數用來獲取硬盤序列號、系統相關信息和電腦上安裝的安全軟件。

現在從post函數中執行完出來,得到服務器的命令。然后就是對命令的解析執行,接下來是一個vbs中switch...case...的結構,來對不同的命令解析執行。
···下略
請看這里原文地址:http://bbs.ichunqiu.com/thread-12047-1-1.html?from=paper
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/47/
暫無評論