一、前言
病毒课老师丢给我们一份加密过的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...的结构,来对不同的命令解析执行。
4.对各种命令的解析执行
4.1 execute命令
这里直接执行接收到的命令
4.2 update命令
这里是从服务器上获取数据来更新病毒
4.3 uninstall命令
调用uninstall过程来将病毒之前对注册表作的修改恢复,并将之前复制到其他几个目录下的病毒脚本删除。
4.4 send命令
调用download过程从服务器下载文件
4.5 site-send命令
这个调用sitedownloader过程,同样从服务器上下载东西,不过这个下载的貌似是网站源码之类的。。。
4.6 recv命令
调用upload函数,上传指定的文件。
4.7 enum-driver、enum-faf、enum-process命令
分别调用相应的函数,以获取枚举所有的驱动器相关信息、指定目录下的所有文件和文件夹以及系统的所有进程
4.8 cmd-shell命令
这里调用cmdshell函数执行接收的到cmd命令,并将命令结果获取传回服务器。
4.9 delete命令
调用过程deletefaf删除指定的文件或文件夹
4.10 exit-process命令
调用exitprocess来结束指定的进程
4.11 sleep命令
设置脚本的睡眠时间
到此对所有的命令都解析完毕了,在执行了相应的命令后,病毒会睡眠指定的时间,再继续从服务器获取命令。
四、总结
这里对之前的分析进行下总结吧,总结通过这次分析所学:
1.先是对base64编码的学习,实际分析中不需要知道实现细节,至少要会用吧。
2.vbs的学习。
3.通过设置注册表来设置指定程序的自启动。
4.基本的调试能力,对于晦涩难懂的代码部分,把结果输出来会理解得更快。
然后在试验中还对病毒进行了清楚,我的方法是直接截取一段密文然后进行搜索,包含该字段的vbs文件就给删掉,这样注册表是没有修改过来的,不过要自启动的文件已经被删掉了,所以没关系。还有一种方法是把病毒中uninstall模块拿出来,单独调用,把所有修改都恢复。
然后,这次可以看到该病毒通过vbs实现了与服务器进行通信、修改文件系统、修改注册表等等的操作。使用其他的语言同样可以实现,自己觉得可能是因为大部分windows都有vbs的解释器,易于传播,并且vbs易学,病毒作者选用他来编写。总之,不同的语言都有自己的特点吧,关键要看其优点是否和自己的需求相契合吧。
以上所述是小编给大家介绍的对一个vbs脚本病毒的病毒原理分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!