熊猫烧香病毒分析
环境
VMware 15 & Win7 & Windows xp & Olly吾爱破解增强版 & ImportREC 1.7汉化版(提取码: 2023)
病毒下载地址(请勿传播)
操作
入侵过程分析
- 在win7虚拟机内装好idapro与ollydbg以及PChunter
- 保存快照
- 运行熊猫烧香病毒
- 结果发现并没有反应,猜测是因为找到的iso安装文件已经打过补丁了,于是考虑使用xp系统
- 将病毒导入xp系统,新建桌面文件如下图
- 新建虚拟机快照
- 运行熊猫.exe
- 等了一会儿之后发现两点异常
- 无法打开任务管理器
- 无法打开注册表
- 重新换了个地方重新下了一个
- 做了快照之后运行之前先看看进程
- 运行之后查看进程,发现多了一个名为spo0lsv.exe的进程
- 随便打开一个程序文件夹,发现病毒成功入侵
- 查看端口占用,发现多了很多可疑端口占用
- 运行
msconfig
命令查看启动项,发现多了个spo0lsv.exe的自启动项 - 猜测是病毒将自身复制到系统目录
C:\WINDOWS\system32\drivers
,然后借助系统命令自启动,查看该目录果然发现病毒 - 在想要查看隐藏文件时,每次设置完之后会被自动设置为不查看隐藏文件
- 查看注册表,发现病毒将自身注册进了注册表中
- 查看隐藏文件,其中,autorun.inf是在运行病毒之后创建的
- 这里,进入vmware文件夹,查看隐藏文件,多出了一个Desktop_.ini的文件
- 进入其他被污染的文件夹,查看隐藏文件,发现也有这个东西
- 总结一下大概是
- 自我复制样本到C盘:C:\Windows\System32\drivers\目录下,启动C:\Windows\System32\drivers\spo0lsv.exe(即病毒程序)
- 在每一个目录下创建Desktop_.ini
- 在C盘根目录下创建了autorun.inf文件,其中指定了自动启动的文件为根目录下的setup.exe(即病毒程序)
- 对程序目录下的exe进行了感染,图标变为熊猫烧香,打开exe时,自动打开病毒
- 枚举进程、查找窗口、打开设备
- 设置注册表启动项为C:\Windows\System32\drivers\spo0lsv.exe
- 自己创建了一个注册表的项,在其中写入了很多信息HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\spo0lsv_RASAPI32
- 设置注册表键值,隐藏文件不显示HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL中的CheckedValue值
程序结构分析
使用快照恢复xp系统,打开win7,用OllyDBG和IDA进行代码分析
用PEID查壳,发现是加了FSG2.0的壳
参考了网上的博客,将7FFFFFFF全部改为00000000
- 选择插件列表,找到ollydump,跨段查找
- 等待程序跳转
- 发现函数之间被填充了奇怪字符
- 想更清晰的查看,右键,转到,表达式,输入相应地址
- 在数据窗口跟随
- 修改即可
- 选择插件列表,找到ollydump,跨段查找
右键,选择用ollydump脱壳调试进程
脱壳保存exe
使用importREC进行导入表修复,运行刚刚的程序之后,可能会报停止运行,不用管,打开importREC,选择如下
用IDA打开
从start开始看
点进各个call函数一一看过去之后发现了比较有嫌疑的三个函数,集中在一起
点进sub_40819C这个函数,通过调用函数名称可以看出,这个函数主要就是用来更改图标的
往下看,下一个模块中调用了三个函数,这里就不点进去
首先调用sub_4053AC,点进去看看,发现是用于获取系统路径的函数
接着点进sub_403F8C函数,自己看了一会儿没看明白,看了看网上的博客发现这是用于拼接字符串的
最后一个sub_40521C,点进去后发现是用于改变大小写的
继续往下看,发现这个函数还兼顾了自我复制与调度程序运行的功能
再往下看,发现了这么一个块,这块儿主要负责的便是保证恶意程序的执行
下面对sub_40D18C进行分析,点进之后很短,只调用了三个函数
第一个函数sub_40A5B0主要负责创建一个线程
点进sub_40A48C看看,注意到该函数最后调用了一个sub_409348
点进去看看,非常复杂庞大的一个函数,该函数会遍历主机,根据文件格式进行不同的操作
接着往下看有个分支
对于文件夹,会在指定文件夹下创建Desktop_.ini文件,对文件创建时间进行校验,如果不是此时产生的,就删除
在文件分支看到许多类似结构的函数,最后都以sub_4079CC结尾
点进去看看,没怎么看明白,看了看网上其他人的博客,这个是用于判断文件是否被感染的函数
最后是sub_40D088,点进去之后发现这就是个定时函数,用于进行程序执行和滞留