病毒分析①熊猫烧香分析
1. 情报收集
1.0 哈希值
1.1 查壳
delphi写的程序,使用了FSG2.0壳
1.2 导入表
样本在脱壳之前跑不起来,脱壳之后,查看导入表
1.2 监控软件
1.2.1上传网站
运行病毒之后,本机开启火绒剑会被强制退出,将样本上传微步在线查看:1.2.2 监控软件行为
使用Process Monitor监控软件查看进程树,启动了很多个命令行程序,并传入命令行参数
cmd.exe /c net share C$ /del /y命令行模式下删除C盘的网络共享,执行完后关闭cmd.exe。cmd.exe /c net share admin$ /del /y取消系统根目录的共享
查看进程事件,发现创建了很多文件,写入文件的操作特别多,还有一些网络行为查看注册表操作:
网络监控:
1.3 查看本机变化
程序图标被篡改,双击程序不能正常运行
2. 分析程序
使用IDA,OD静态动态结合分析,发现病毒的主函数一共有3个:
2.1准备工作
2.1.1 判断
- 第一次打开病毒程序,获取当前所在路径,判断是否存在Desktop_.ini文件(ini文件是病毒程序感染之后写入的),存在的话就设置文件属性,并删除ini文件
2.1.2 读取自身PE文件
2.1.3 判断当前路径
- 判断当前程序路径是否 "C:\Windows\system32\drivers\spo0lsv.exe"
2.1.4 不是当前路径
- 若不是System32/drivers路径,则将所有spo0lsv.exe进程结束(第一次运行的时候,病毒名称应该不是 spo0lsv.exe否则会将自身结束),将自身文件复制到 "C:\Windows\system32\drivers\spo0lsv.exe" 启动它。退出进程。
2.1.5 启动原程序
- 若本程序是在该路径运行的,对读取的自身PE文件,判断是否存在标志字符串"WhBoy010Editor.exe.exe 7040856"字符串,如果有这个字符串,说明是被感染的文件 (感染:在原程序的PE文件前面写入病毒程序)
- 2.1.5.1 若是被感染的文件,则读取自身,将原文件的PE拷贝出来,以附加的方式写入到文件中
- 2.1.5.2 编写并执行28$$.bat批处理文件:意思就是删除被感染的文件,运行原文件
:try1
"del "C:\Program Files\010 Editor\010Editor.exe" //删除文件
if exist "C:\Program Files\010 Editor\010Editor.exe" goto try1 //判断文件是否存在
ren "C:\ProgramFiles\010 Editor\010Editor.exe.exe" "010Editor.exe" //修改文件名
if exist "C:\Program Files\010 Editor\010Editor.exe.exe" goto try2 //判断文件是否存在
"C:\Program Files\010 Editor\010Editor.exe" //运行没有感染的程序
:try2
del %0
- 2.1.5.3 判断当前运行的本程序是否是病毒源程序,若是源程序,那么退出本进程
- 2.1.5.4 若不是病毒源程序:将C盘获取drivers目录的病毒程序spo0lsv.exe删除,再将自身写入获取drivers目录的spo0lsv.exe程序中,然后退出进程,再启动获取drivers目录下的spo0lsv.exe
- 第一部分结束
2.2 感染文件
2.2.1 CreateThread_Infected
- 创建线程,递归遍历并感染文件
- 2.2.1.1 拼接磁盘路径
- 2.2.1.2 感染文件
- 遍历磁盘的文件夹,系统关键的文件夹不感染,遍历文件,获取感染文件,删除系统备份文件"GHO"文件
- exe程序感染流程 :
- 获取exe文件名,查找当前运行的程序,若该程序正在运行,放弃感染,若该程序是病毒程序,不感染
- 读取exe文件,存储在内存中,在该exe文件中查找字符串"WhBoy",若存在WhBoy字符串,说明该文件已经被感染过了,不感染
- 若不存在"WhBoy",则将病毒程序自身复制到exe文件中(此时,文件已经被修改成病毒文件,大小为124kb,病毒大小),然后将内存中的exe写入到被感染后的程序中(此时的大小为病毒程序 原程序)
- 对感染后的文件写入格式化字符串(WhBoy 文件名 exe 02 十进制文件大小 1)
WriteLString__写入文件函数:
此时的原文件已经被感染成病毒
F8步过之后,将会把内存中的原PE文件写入到被感染的程序中
- WEB文件感染流程
2.2.2 Time_Create_C_Vir
- 感染C盘文件,创建inf文件
- 检查C:\autorun.inf文件是否存在,不存在就创建
- 将自身病毒释放到C:\setup.exe
2.2.3 CreateThreadInter_
- 网络感染
- 获取本地IP地址
- 尝试感染
2.3 保护工作
2.3.1 RegSetValueEx__1
- 定时设置注册表,添加启动项
2.3.2 CreateThread_ReadQQ_Mem
- 解密网址,访问网址,下载内容
2.3.3 CreateProcess__2
- 创建计时器,启动进程,删除共享,并且调用了CreateT_ReadQQ_Mem
2.3.4 DeleteService_Reg
- 停止服务,终止杀软程序,删除注册表项
2.3.5 DecryptHttp_ReadQQ
- 解密网址,访问网站,读取访问的内容
2.3.6 sub_40C728
- 解密网址,从网址中下载并保存文件
3. 应对措施
3.0 预防措施
- 提高安全意识,不明连接谨慎点击
- 安装杀毒软件,定时查杀
- 遇到突发情况中病毒,第一时间断网,防止损失扩大以及横向传播
3.1 手动查杀
- 删除C盘System\drivers目录下的spo0lsv.exe病毒程序
- 使用PcHumter结束病毒程序
- 删除病毒启动项 "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
3.2 编写专杀工具
- 病毒查杀特征:
- 哈希值
- 感染特征
- 文件名的末尾有字符串"WhBoy PathName .exe 02 Size 1"
测试路径:
运行截图:
修复后的效果:
//在数组中寻找指定的字节位置int rfindStrInBuff(char* buffBase, int buffSize,const char* str) { for (size_t i = buffSize; i > 0 ; i--) { char* findBuff = buffBase i; if (!memcmp(findBuff, str, strlen(str) 1)) { return buffBase i; } } return 0;}
附件列表
赞 (0)