前言
样本多次dump和调用,比较麻烦,考验耐心。希望大家一起参考学习,一起进步!如有不当之处,也希望大佬批评指正,晚辈一定虚心受教。由于考虑到时间问题还有个人能力的原因,如果又不清楚或错误的地方,也请大家见谅,不懂之处欢迎提出私信,我也尽量解答
分析
样本信息
样本名称: giấy mời họp.doc
样本大小: 597K
MD5: 6897B33954A4B228F8A7132E07FDE3B6
样本来源: https://www.virustotal.com/gui/file/37378258b682c92e11e45c4714a95ef843dfc48e064112e9969586ae88c386bf/detection
环境与工具
win xp,win7 32 ,OD, IDA, exeinfo
分析
简述CVE-2012-0158,找到溢出点
该漏洞为栈溢出漏洞,其恶意软件有很多也是利用该漏洞进行传播的。形成该漏洞的原因网传据说是”巨硬“特意留的后门,其漏洞形成的模块在MSCOMCTL.ocx中,我们IDA反汇编该模块,其漏洞的点在于dwBytes变量,正常的Cobj对象大小为8,但是因为有个”>“导致通过构造大于8的结构。
Shellcode分析
解密代码,解密大小为0x200,解密算法为( (byte [edi]+0xAB) xor (0x33) ) - 0xFC
寻找所需模块地址
映射已打开文件
可以看到文件映射为doc文件
找到文件中的指定代码
解密执行
Hook API
Hook之后的代码
可以看到后边的API调用都是通过调用被Hook的API调用的
并且调用API如果存在固定格式的话会跳过之前的5字节,这样od不能直接识别,也防止直接下断点,麻烦
之后的操作为
解密配置文件
申请空间,解密代码
解密第一段PE
解密第二段,该段文件为FakeDoc页面
拷贝内存到doc文件中
以挂起的形式创建进程
接下来写入PE文件
得到上下文环境
申请空间,地址为0X50000000
写入代码
设置上下文环境
恢复现场
调试注入代码
拼接字符串
C:\Documents and Settings\Administrator\Application Data\Microsoft\SystemCertificates\systems.exe
C:\Documents and Settings\Administrator\Application Data\Microsoft\SystemCertificates\goopdate.dll
C:\Documents and Settings\Administrator\Application Data\Microsoft\SystemCertificates\Systemsfb.ebd
C:\Documents and Settings\Administrator\Application Data\Microsoft\SystemCertificates\install.inf
解密代码
首先创建systems.exe文件
解密代码,大小为E7FA
改代码为压缩之后代码,进行解压缩,其算法应该为Zlib1.2.8版本
解压之后为一PE文件,并将其写入systems.exe中
同理创建goopdate.dll文件和Systemsfb.ebd文件
之后,创建vidcap.lnk快捷方式,与之前的systems.exe绑定
模拟按键进行启动
删除该lnk文件
将WINWORD.EXE重命名为~DF6DC0E07310E5D9BC.tmp,并设置属性为隐藏
之后显示正常的doc文档,欺骗用户
systems.exe和Goopdate.dll分析
进行xor解密,并调用
解密代码执行,主要行为读取同目录下的systemsfb.ebd文件,解密执行
systemsfb.ebd
这里依旧解密
可以看到该代码为去掉MZ的头部PE文件,我们补好该文件
之后通过VirtualAlloc申请空间并进行映射,为了节省空间,我们直接分析该dump下来的PE文件
最后一个dump文件
经过一系列的解密dump文件,终于到了最后一个文件
首先,在初始化过程中,存在关键函数
首先查询注册表项
在设置Internet选项时,存取获取信息,所获取信息如下
该函数获取信息如下
获取系统版本,位数,CPU 频率,内存信息,计算机名,用户名,ip地址,磁盘信息
对信息进行处理
创建互斥体,检测虚拟机,创建注册表开机启动
得到域名及其端口号
创建两个线程,进行网络连接,完成对信息的传输
HTTP进行连接
tcp连接
IoC:
cu.Phimhainhat.org
结语
略
样本下载
原文由吾爱破解论坛