![1a1841a9bcbf8b2248bfef3df5e6fb20.png](https://i-blog.csdnimg.cn/blog_migrate/6f37654e1e919ea1a331a31870194031.png)
1. Office文档
1.1. DDE
DDE(Dynamic Data Exchange),动态数据交换协议,它用于在共享数据的应用程序之间发送消息,使用共享内存在应用程序之间交换数据。 应用程序可以使用DDE协议进行一次性数据传输和持续交换。 该协议目前已被微软的对象链接与嵌入(OLE)协议所代替,但DDE协议仍然能够使用。 我们使用“插入—对象”功能插入的对象一般都是采用OLE协议的:虽然DDE已经被OLE替代,但是Office依然提供了对DDE的支持。我们可以通过word域代码访问DDE协议,并且利用DDE执行任意命令,具体操作如下:
第一步,申请一个windows域:不过DDE在链接到文件的时候,会弹出一系列的提示信息:
![49cedcbc71580365ef6a9a8b782c9b83.png](https://i-blog.csdnimg.cn/blog_migrate/1380a2a2d8fb626c704de2a0a073b6b7.png)
点了两次”是”之后,我们就成功运行cmd,打开了计算器:
我们找到恶意文档中的word域,选择切换域代码,可以看到此文档使用DDE运行powershell命令,从远程站点下载勒索病毒:
如果是doc文件,则使用Structured Storage Viewer打开,找到WorDocument,DDE代码就在这个stream中:
1.2. 漏洞(cve-2017-11882)
CVE-2017-11882是Office的一个栈溢出的远程代码执行漏洞,该漏洞的影响范围极广,使用该漏洞的恶意文档也很多,本文就介绍一下遇到使用该漏洞的恶意样本的分析技巧。 本文并不是漏洞分析文章,不会分析该漏洞的细节,感兴趣的同学可以去网上查看相关分析文章。 CVE-2017-11882漏洞是Office软件上的漏洞,但该漏洞不是发生在word.exe、excel.exe等进程中的,而是发生在公式编辑器EQNEDT32.EXE进程中的。 所以使用该漏洞的文档在进行漏洞利用时一定会启动EQNEDT32.exe进程,而恶意代码也一定是在EQNEDT32.exe进程内执行的。 我们可以在EQNEDT32.exe启动时,将EQNEDT32.exe附加进调试器,之后再定位到恶意代码并进行分析。 设置EQNEDT32.exe启动附加调试器的方式很简单,只需要设置注册表就行了。 修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE项,如下图设置EQNEDT32.exe启动时自动附加到windbg上:之后运行恶意文档,EQNEDT32.exe启动时会自动打开windbg。接下来,只需要按照如下五步就可以定位到shellcode了:
①bp 0041160f;
②执行6个g;
③下断点bp 00411874;
④执行g,执行到00411874,是一条ret,可以看到此时的esp已经被修改了;![e1c7c717ea0aab15496c012b8234a2ec.png](https://i-blog.csdnimg.cn/blog_migrate/341983c46d3d870fffb135678ce35bbe.png)
2.rtf文件
2.1. rtf介绍
RTF(RichTextFormat),富文本格式,本质是一种文本文件,任何软件都可以直接读取RTF文件,但是RTF却定义了一套规范——RTF规范。 凭借RTF规范,文档文件可以被不同的操作系统和不同的软件使用。 如将WPS文件另存为RTF格式,用Word进行编辑处理,原WPS下设置的字形、字号依然能够保持不变。RTF文件由未格式化文本(Text)、控制字(Control word)、控制符(Control Symbol)和群组(Group)组成,每个{}就是一个组,文档中的所有数据都是在这样一个个的{}中的。一个典型rtf文件长得这个样子:
近年来,最流行的rtf文档攻击是嵌入含有漏洞的文档对象(如doc),当用户使用word打开rtf文档时,就可能触发word软件漏洞。本文主要分析的也是这个问题。
2.2. rtfobj.py
rtfobj.py是oletools的一部分(可以在github中下载),是一款专门分析提取rtf内嵌对象的工具。rtfobj.py的使用比较简单,可以直接使用-s命令提取对象。除了提取对象,rtfobj.py还会对rtf文件进行简单的分析,判断rtf中的对象是否含有某些漏洞。如图所示,分析出来rtf中含有一个OLE对象,对象id是0,该对象可能使用了cve-2017-11882或cve-2018-0802漏洞:
使用-s all命令可以将所有对象(\objdata)提取出来,提取出的是.bin文件。对比.rtf和.bin文件,*.bin里存储的数据是*.rtf中以文本形式存储的数据:
office能正确解析rtf中的MTEF data,具体原理可以参考《利用了Office公式编辑器特殊处理逻辑的最新免杀技术分析(CVE-2017-11882)》(超链接:https://www.freebuf.com/column/183735.html)一文;而许多杀软不能正确解析MTEF data,导致此类样本查杀率较低:
2.4. CVE-2017-0199
cve-2017-0199是一个逻辑漏洞,该漏洞利用office OLE对象链接技术,将包裹的恶意链接对象嵌在文档中,office 调用URL Moniker(COM对象)将恶意链接指向的HTA文件通过 HTTP 请求下载到本地并执行,某大国挺喜欢用这个漏洞进行鱼叉攻击的。使用此漏洞的rtf文件中一般会使用各种符号混淆(md5:e5a622a7bde4823ebec87373792e1118):
3.pdf文件
3.1. pdf介绍
PDF,便携式文件格式,Portable Document Format。 使用文本编辑器打开PDF,就会发现一个典型的PDF文件长这个样子(下图摘自freebuf):从文件结构上讲,PDF文件格式包含以下4个部分:
·文件头(Header)——指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。
·文件体(Body)——又称对象集合,PDF文件的主要部分,由一系列对象组成,就是上图红框里的东西。
·交叉引用表(Cross reference table)——对对象进行随机存取而设立的一个间接对象的地址索引表。
·文件尾(Trailer)——声明了交叉引用表的地址,即指明了文件体的根对象(Catalog),从而能够找到PDF文件中各个对象体的位置,达到随机访问。另外还保存了PDF文件的加密等安全信息。
pdf文件本质上是一个个obj对象的集合,对pdf文件进行分析,实际上就是分析这些对象和对象的关系。为了对抗分析,恶意样本也开始采取一些混淆方式,增强obj对象分析的难度。
第一种方式是进行ASCII编码,如下所示是两个完全相同的obj:
3.2. 分析技巧
在分析包含漏洞利用的PDF时,我们主要关注的是其中的对象和JavaScript代码。
一般我们通过如下步骤进行分析:
①利用pdfid.py或peepdf.py之类的工具对文档初步分析,寻找存在风险的obj;
②使用 pdf-parser.py、、 pdftk.py 、 pdfextract 或peepdf.py解码流;
③分析pdf中存在JavaScript或shellcode;
3.3. peepdf
peepdf是一个专门用于分析PDF文件的Python工具,它还提供了Javascript和shellcode分析的功能,可以对文件进行简单的威胁判断。 同时,peepdf中支持如下filter的解码:接下来,我们使用peepdf对样本(md5:32c83ebbca9cbfe298ad270fa50bc5d3)进行分析:
可以看到peepdf分析出id是90的obj里含有JavaScript代码,接下来我们分析的重点就是90这个obj。
在上面分析时使用了-i参数,是为了进入peepdf控制台:
提取js代码:
再接下来就是对JS代码的分析了,关于JS代码的分析,在本系列之后的文章中再做分享。
参考资料
https://www.varonis.com/blog/adventures-in-malware-free-hacking-part-iv/
https://securityoversimplicity.wordpress.com/2017/10/22/not-all-she-wrote-part-2-rigged-office-documents-part-1/
https://www.freebuf.com/column/152267.html
https://www.freebuf.com/column/154931.html
https://securityoversimplicity.wordpress.com/2017/11/23/not-all-she-wrote-part-3-rigged-rtf-documents/
https://blog.csdn.net/gongzixiaobai8842/article/details/78317580
https://www.freebuf.com/vuls/154468.html
https://securityoversimplicity.wordpress.com/2017/09/28/not-all-she-wrote-part-1-rigged-pdfs/
https://www.anquanke.com/post/id/87127
https://www.freebuf.com/articles/system/178920.html
https://eternal-todo.com/category/pdf?page=2
下方查看 历史文章云众可信征稿进行时原创干货 | MuddyWater(污水)APT组织针对塔吉克斯坦的攻击活动的分析
原创干货 | 【恶意代码分析技巧】04-exe_VB