一个VB蠕虫病毒分析

84542-c3m5es3cnwf.png

基本信息

文件名称:总部门店软件.exe
文件大小:229,376 字节
文件类型:蠕虫
MD5:4da4c0e906bb5203c77daa4ab9ec5913
修改时间:2000/1/1 2:49:21

动态分析

注册表行为

枚举字符映射相关键值,该Windows功能可以将不能正常显示的字符使用备用字体来替换,关键词FontLink。
07134-csxi8bonicr.png

查询字符集相关的键值,关键词SurrogateFallback。
01292-75i689nuetq.png

设置开机自启动,启动路径及目标程序C:WINDOWSWINDOWS.exe。
60988-feb72mzwiso.png

不显示隐藏属性的文件和文件夹,一直保持修改开机启动和不显示隐藏文件这两个注册表,也算是一些蠕虫病毒的常规操作了。
78784-t7paw34uzi.png

文件行为

向Windows目录下写入Windows.exe,共写入229,376‬字节,与病毒自身相同大小,判断是复制到系统路径。
71658-rkwub65zdu.png

复制自身到每个文件目录下,名字为目录名称加.exe,具有一定的迷惑性,占用病毒程序防止被修改。
19368-gfl9fbfu43p.png

32725-p9mi8zxeg5a.png

静态分析

使用detect it easy侦测文件类型,确定好准备如何分析,可以看到这是一个VB编译的程序,正好可以使用VB反编译来进行静态分析,因为是native的程序可以使用ollydbg进行动态调试。
69292-1s2dzr8md8o.png

VB程序只有一个窗体的话则从窗体form的load过程开始执行,如果有多个窗体则从设计的第一个窗体的Form_Load过程开始执行,因为没有main过程,所以判断Form_Load就是VB应用程序的入口点了。

Code -> frmutama -> Form_Load_41EBD0分析

frmutama是其设计的第一个窗口,从这个窗口的入口过程开始分析。

判断当前目录是不是系统目录,不是则调用cari过程。
35685-tlm6crmds5.png

Code -> frmutama -> cari_41A7B0分析

调用cek_hardisk遍历磁盘驱动器获取磁盘类型GetDriveType,随后得到一个有效磁盘数。
28658-mu6s0mf27n.png

接着调用cekdisket过程,该过程主要执行sebar_semua,主要是对传入的磁盘驱动器进行文件感染。
80128-z4rqtvd2hj.png

其中41FDE0具体实现对磁盘文件和目录进行遍历。
66693-mdqtjwgja2l.png

如果遍历到文件目录,则将目录路径发送到列表框中。
75654-8jnkjq2kc96.png

返回到sebar_semua过程复制病毒到每个目录:
09014-hnen7yscq4.png

复制完毕后调用ShellExecute运行系统目录下的病毒,程序退出。
74462-3xl6vhf3nwf.png

cari过程可以看出,这是主要感染磁盘的过程,以每个上级目录名称作为文件名字复制到目录里。

Code -> frmutama -> cek_hardisk_419E10分析

获取每个磁盘驱动器的类型,将有效的磁盘数var_3c赋予hardisk.Text。
71230-admwvzogyt4.png

该病毒使用了timer实现了部分功能

timer1实现开机自启动
54223-i5lpgxyihr.png

starup过程将病毒复制到系统目录,并添加到注册表启动项,接着将系统目录下的病毒(Windows.exe)隐藏。
27243-14lmglh16fi.png

注册表修改的具体实现。
22496-n4kzl6wxyeq.png

timer2实现隐藏目录

Timer2将修改注册表使得文件管理器隐藏文件显示。
69857-cnmkofy9f1r.png

timer3实现创建xp.dll
89375-1w382yr3moa.png
83346-67eyubfrt1n.png

timer4发送退格信号

用于返回上一级目录,从文件浏览器双击病毒的时候就会看到返回了上级目录。
62144-b2zdw6vtcr.png

总结

VB程序的逆向,还好是native比较容易调试,算是入门分析VB了,从反编译出来的结果可以看到大致的功能。

仔细调试了里面的过程函数发现了两个有意思的东西,一个是VB的字符串,字符串是一个对象,从字符串对象的第三个指针能找到字符串,另一个是vb的doevents,doevents在遍历文件过程中,因为是一个耗时操作,就将控制权交给其他过程处理(timer),timer处理完毕后回来继续执行。

本文由看雪论坛 邪神蘑菇 原创,转载自看雪社区。

本文经授权后发布,本文观点不代表立场,转载请联系原作者。
域渗透基础(一)
« 上一篇 06-22
Apache Dubbo 高危漏洞(CVE-2020-1948),黑客攻击可执行任意代码
下一篇 » 06-23

相关推荐