WEB开发网
开发学院网络安全安全技术 深入浅出实战攻防恶意PDF文档 阅读

深入浅出实战攻防恶意PDF文档

 2010-09-30 12:55:34 来源:WEB开发网   
核心提示: 图3 JavaScript堆喷射Sccs是带有shellcode的字符串,bgbl是带有NOP-code的字符串,深入浅出实战攻防恶意PDF文档(9),因为shellcode常常必须很小,所以它将通过网络下载另一个程序(恶意软件)并执行它,虽然几乎所有的恶意PDF文档的攻击目标都是Wind

深入浅出实战攻防恶意PDF文档 

图3 JavaScript堆喷射

Sccs是带有shellcode的字符串,bgbl是带有NOP-code的字符串。

因为shellcode常常必须很小,所以它将通过网络下载另一个程序(恶意软件)并执行它。对于pdf文档来说,还有一种方法可用。第二阶段的程序可以嵌入到PDF文档,而shellcode可以从PDF文档提取并且执行。

九、分析恶意PDF文档

事实上,所有的pdf文档都包含非ASCII字符,因此我们需要使用一个十六进制编辑器来分析它们。我们打开一个可疑的PDF文档,并搜索字符串JavaScript(参见图 4)。

深入浅出实战攻防恶意PDF文档 

图4    JavaScript 对象

虽然只是有一点用于格式化对象的空格,但是您应该认出PDF对象的结构:对象31是一个JavaScript动作/S /JavaScript,脚本本身没有包含在这个对象中,但是可以在对象32(注意引用3 0 R)中找到。 搜索字符串“31 0 R”,我们发现对象16引用了对象31“/AA <> ”,以及一个页面/Type /Page ,如图5所示。

深入浅出实战攻防恶意PDF文档 

图5 页对象

/AA 是一个注释动作,这意味着当这个页面被查看的时候这个动作就会执行。因此,我们知道:当这个PDF文档被打开的时候,它将执行一个JavaScript脚本。 让我们看看这个脚本(对象32 )的样子。

对象32是一个流对象,而且它是经过压缩的(/Filter [/FlateDecode]),见图 6。

深入浅出实战攻防恶意PDF文档 

图6  流对象

为了对它进行解压,我们可以提取二进制流(1154字节长),并通过一个简单的Perl或者Python程序对它进行解压。使用Python语言,我们只需要导入zlib,然后就可以对数据进行解压了,假设我们已经将我们的二进制流存储在data中了:

import zlib

decompressed = zlib.decompress(data)

然而有一点非常清楚:那就是解压后的脚本是恶意的,它会对函数collectEmailInfo中的一个安全漏洞加以利用,如图7所示。

深入浅出实战攻防恶意PDF文档 

图7   利用collectEmailInfo

十、结束语

随着恶意PDF文件日益增多,人们对这种文档的恶意代码分析技术也越来越感兴趣。本文向读者详细介绍了如何分析一种特殊类型的恶意PDF文件:它们可以利用内嵌JavaScript解释器的安全漏洞。当然,有了本文的基础,在分析其他类型的恶意PDF文件,如利用PDF解析器内的安全漏洞的情形的时候,您也能触类旁通。需要说明的是,虽然几乎所有的恶意PDF文档的攻击目标都是Windows操作系统,但是这里介绍的PDF语言是独立于操作系统的,它同时适用于在Windows、Linux和OSX上的PDF文档。

上一页  4 5 6 7 8 9 

Tags:深入浅出 实战 攻防

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接