一个VB蠕虫病毒分析
2020-06-17 00:50:52 Author: bbs.pediy.com(查看原文) 阅读量:468 收藏

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

注册表行为

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

查询字符集相关的键值,关键词SurrogateFallback。

设置开机自启动,启动路径及目标程序C:WINDOWS\WINDOWS.exe

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

文件行为

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

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

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

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

Code -> frmutama -> Form_Load_41EBD0分析

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

判断当前目录是不是系统目录,不是则调用cari过程

Code -> frmutama -> cari_41A7B0分析

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

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

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

如果遍历到文件目录,则将目录路径发送到列表框中。


返回到sebar_semua过程复制病毒到每个目录

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

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

Code -> frmutama -> cek_hardisk_419E10分析

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

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

timer1实现开机自启动

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

注册表修改的具体实现。

timer2实现隐藏目录

Timer2将修改注册表使得文件管理器隐藏文件显示

timer3实现创建xp.dll

timer4发送退格信号

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

VB程序的逆向,还好是native比较容易调试,算是入门分析VB了,从反编译出来的结果可以看到大致的功能,仔细调试了里面的过程函数发现了两个有意思的东西,一个是VB的字符串,字符串是一个对象,从字符串对象的第三个指针能找到字符串,另一个是vb的doevents,doevents在遍历文件过程中,因为是一个耗时操作,就将控制权交给其他过程处理(timer),timer处理完毕后回来继续执行。

[培训]高研班成果展示、认证、线下班,《安卓高级研修班(网课)》9月班开始招生!挑战极限、工资翻倍!


文章来源: https://bbs.pediy.com/thread-260119.htm
如有侵权请联系:admin#unsafe.sh