本文来自i春秋作者 @wxcstc
病毒课老师丢给我们一份加密过的vbs脚本病毒的代码去尝试分析,这里把分析过程发出来,供大家参考,如果发现文中有什么错误或者是有啥建议,可以直接留言给我,谢谢!
整个分析过程可以分为以下几个部分:
0x00 准备工作 0x01 解密部分 0x02 功能分析
windows xp的虚拟机(在自己的windows下也可以做) vbs的一些基本语法
右击病毒文件然后编辑打开或者是直接把其后缀修改成txt直接打开都行,可以看到一大段密文,并调用了一个函数deCrypt。暂时只看到这些,那么接着往下看吧。
拖到代码底部,发现有deCrypt了一次,也就是经过了两次加密,这里把执行部分注释掉,然后将解密的结果输出到文本文件中去。另外,可以看到是用base64进行的加密的。
现在来看看解码后的结果。发现依旧是不可阅读的代码,那就继续看看他是怎么处理的吧。
这里可以看到是将之前的字符串按“|dz|”划分,然后得到的是ascii码,将这些ascii码对应的字符拼接起来就好了,就得到了结果。同样的套路将解密结果输出到文件中去再继续分析。
然后这次得到的结果是真正的病毒代码了。接下来对他的功能进行分析。
从头开始看吧。显示一些配置信息,包括了服务器的域名。可以查到服务器是美国的,尝试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