findwindow函数 vb 获取不到句柄_一个VB蠕虫病毒分析

本文详细分析了一款VB编写的蠕虫病毒,病毒通过枚举注册表、设置开机自启动、隐藏文件和文件夹来实现感染。它遍历磁盘,以目录名创建.exe副本并感染文件,同时利用timer实现部分功能,如隐藏目录和自启动。文章还介绍了VB程序的逆向分析方法,包括从反编译结果理解程序行为。
摘要由CSDN通过智能技术生成

本文为看雪论坛优秀文章

看雪论坛作者ID:邪神蘑菇

基本信息

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

动态分析

注册表行为

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

9dc41a731d80872b8ecd21f4bab78706.png

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

8fb467248d8254204506b6c8a631ec71.png

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

9e0987fc479f568a89701490b9f8e8f8.png

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

676808a2535cadc439399b1593f19c3b.png

文件行为

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

1617fd0ec36775d1ab6ff3d8e5dee4aa.png

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

c65db896bd2dd266008af6f8734a2b88.png

984a984eae7f5c6b22b5f261887787c4.png

静态分析

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

90ffca05547cc7a92820deaec7c4a947.png

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

Code -> frmutama -> Form_Load_41EBD0分析

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

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

c21a8d533bab0e653d19bfbfd245ee0a.png

Code -> frmutama -> cari_41A7B0分析

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

47ad10f54c8cdd5d3fba2a65bc87891e.png

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

35063ac8c63f02ee7408363ee5e5dc03.png

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

d963d19b4385f7a613d9f6fcf9b2760f.png

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

895c8d0f4f93e7f7b51ff6a827ae5ff0.png


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

c9857ef61a05b557e8dd5748b16ef56a.png

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

f2ad7c055f2ac8368d3e0100f6485a90.png

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

Code -> frmutama -> cek_hardisk_419E10分析

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

fc65b9f1828149384745e30badd5ec5d.png

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

timer1实现开机自启动

6046d62e892e51f6d69c40b1361be4bf.png

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

851db4a9ed168411407e5308e4ce4211.png

注册表修改的具体实现。

e0de98af8e0eb6cdff4a13a211cbe3a6.png

timer2实现隐藏目录

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

925f191aa109301f5d5396e007cbfd8a.png

timer3实现创建xp.dll

ba0138f11842f83af958439b0f136cd6.png

dd9ef8d45ec6b6dce12ffcc0ec84a0a5.png

timer4发送退格信号

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

652c1b78794882e3e069b821c615d548.png

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值