利用doc文件漏洞的木马样本分析

利用doc文件漏洞的木马样本分析

前言

样本多次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的结构。

而且之后没有进行检测,直接进行了拷贝操作

这就导致内存栈溢出。
接下调试,OD采用中断于新模块

当加载mscomctl.ocx模块时,下断点到RVA=226FA处

单步找到拷贝覆盖,即溢出点。

我们看到这里的esp已经准备好了,接下来返回地址只要为jmp esp就可以跳转到恶意代码处。

跳转到恶意代码

Shellcode分析

解密代码,解密大小为0x200,解密算法为( (byte [edi]+0xAB) xor (0x33) ) - 0xFC

之后跳转到解密后的代码

寻找所需模块地址

寻找指定API

映射已打开文件

可以看到文件映射为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分析

  1. system.exe
    调用dll文件

  2. Goopdate.dll
    寻找.xdate节表

进行xor解密,并调用

解密代码执行,主要行为读取同目录下的systemsfb.ebd文件,解密执行

systemsfb.ebd

这里依旧解密

可以看到该代码为去掉MZ的头部PE文件,我们补好该文件
之后通过VirtualAlloc申请空间并进行映射,为了节省空间,我们直接分析该dump下来的PE文件

最后一个dump文件

经过一系列的解密dump文件,终于到了最后一个文件
首先,在初始化过程中,存在关键函数

[md]# 利用doc文件漏洞的木马样本分析

前言

样本多次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的结构。

而且之后没有进行检测,直接进行了拷贝操作

这就导致内存栈溢出。
接下调试,OD采用中断于新模块

当加载mscomctl.ocx模块时,下断点到RVA=226FA处

单步找到拷贝覆盖,即溢出点。

我们看到这里的esp已经准备好了,接下来返回地址只要为jmp esp就可以跳转到恶意代码处。

跳转到恶意代码

Shellcode分析

解密代码,解密大小为0x200,解密算法为( (byte [edi]+0xAB) xor (0x33) ) - 0xFC

之后跳转到解密后的代码

寻找所需模块地址

寻找指定API

映射已打开文件

可以看到文件映射为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分析

  1. system.exe
    调用dll文件

  2. Goopdate.dll
    寻找.xdate节表

进行xor解密,并调用

解密代码执行,主要行为读取同目录下的systemsfb.ebd文件,解密执行

systemsfb.ebd

这里依旧解密

可以看到该代码为去掉MZ的头部PE文件,我们补好该文件
之后通过VirtualAlloc申请空间并进行映射,为了节省空间,我们直接分析该dump下来的PE文件

最后一个dump文件

经过一系列的解密dump文件,终于到了最后一个文件
首先,在初始化过程中,存在关键函数

首先查询注册表项

在设置Internet选项时,存取获取信息,所获取信息如下

该函数获取信息如下
获取系统版本,位数,CPU 频率,内存信息,计算机名,用户名,IP地址,磁盘信息

对信息进行处理

创建互斥体,检测虚拟机,创建注册表开机启动

得到域名及其端口号

创建两个线程,进行网络连接,完成对信息的传输
HTTP进行连接

tcp连接

IoC:
cu.Phimhainhat.org

结语

附件:

giay moi hop.zip

(256.08 KB, 下载次数: 0)

2019-7-22 15:30 上传
点击文件名下载附件

密码:52pojie

首先查询注册表项

在设置Internet选项时,存取获取信息,所获取信息如下

该函数获取信息如下
获取系统版本,位数,CPU 频率,内存信息,计算机名,用户名,IP地址,磁盘信息

对信息进行处理

创建互斥体,检测虚拟机,创建注册表开机启动

得到域名及其端口号

创建两个线程,进行网络连接,完成对信息的传输
HTTP进行连接

tcp连接

IoC:
cu.Phimhainhat.org

## 结语

附件:

利用doc文件漏洞的木马样本分析

前言

样本多次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的结构。

而且之后没有进行检测,直接进行了拷贝操作

这就导致内存栈溢出。
接下调试,OD采用中断于新模块

当加载mscomctl.ocx模块时,下断点到RVA=226FA处

单步找到拷贝覆盖,即溢出点。

我们看到这里的esp已经准备好了,接下来返回地址只要为jmp esp就可以跳转到恶意代码处。

跳转到恶意代码

Shellcode分析

解密代码,解密大小为0x200,解密算法为( (byte [edi]+0xAB) xor (0x33) ) - 0xFC

之后跳转到解密后的代码

寻找所需模块地址

寻找指定API

映射已打开文件

可以看到文件映射为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分析

  1. system.exe
    调用dll文件

  2. Goopdate.dll
    寻找.xdate节表

进行xor解密,并调用

解密代码执行,主要行为读取同目录下的systemsfb.ebd文件,解密执行

systemsfb.ebd

这里依旧解密

可以看到该代码为去掉MZ的头部PE文件,我们补好该文件
之后通过VirtualAlloc申请空间并进行映射,为了节省空间,我们直接分析该dump下来的PE文件

最后一个dump文件

经过一系列的解密dump文件,终于到了最后一个文件
首先,在初始化过程中,存在关键函数
[md]# 利用doc文件漏洞的木马样本分析

前言

样本多次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的结构。

而且之后没有进行检测,直接进行了拷贝操作

这就导致内存栈溢出。
接下调试,OD采用中断于新模块

当加载mscomctl.ocx模块时,下断点到RVA=226FA处

单步找到拷贝覆盖,即溢出点。

我们看到这里的esp已经准备好了,接下来返回地址只要为jmp esp就可以跳转到恶意代码处。

跳转到恶意代码

Shellcode分析

解密代码,解密大小为0x200,解密算法为( (byte [edi]+0xAB) xor (0x33) ) - 0xFC

之后跳转到解密后的代码

寻找所需模块地址

寻找指定API

映射已打开文件

可以看到文件映射为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分析

  1. system.exe
    调用dll文件

  2. Goopdate.dll
    寻找.xdate节表

进行xor解密,并调用

解密代码执行,主要行为读取同目录下的systemsfb.ebd文件,解密执行

systemsfb.ebd

这里依旧解密

可以看到该代码为去掉MZ的头部PE文件,我们补好该文件
之后通过VirtualAlloc申请空间并进行映射,为了节省空间,我们直接分析该dump下来的PE文件

最后一个dump文件

经过一系列的解密dump文件,终于到了最后一个文件
首先,在初始化过程中,存在关键函数

首先查询注册表项

在设置Internet选项时,存取获取信息,所获取信息如下

该函数获取信息如下
获取系统版本,位数,CPU 频率,内存信息,计算机名,用户名,IP地址,磁盘信息

对信息进行处理

创建互斥体,检测虚拟机,创建注册表开机启动

得到域名及其端口号

创建两个线程,进行网络连接,完成对信息的传输
HTTP进行连接

tcp连接

IoC:
cu.Phimhainhat.org

结语

附件:

密码:52pojie

首先查询注册表项

在设置Internet选项时,存取获取信息,所获取信息如下

该函数获取信息如下
获取系统版本,位数,CPU 频率,内存信息,计算机名,用户名,IP地址,磁盘信息

对信息进行处理

创建互斥体,检测虚拟机,创建注册表开机启动

得到域名及其端口号

创建两个线程,进行网络连接,完成对信息的传输
HTTP进行连接

tcp连接

IoC:
cu.Phimhainhat.org

## 结语

附件:

密码:52pojie[/md]

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消
    昵称