深入浅出实战攻防恶意PDF文档
2010-09-30 12:55:34 来源:WEB开发网
图3 JavaScript堆喷射
Sccs是带有shellcode的字符串,bgbl是带有NOP-code的字符串。
因为shellcode常常必须很小,所以它将通过网络下载另一个程序(恶意软件)并执行它。对于pdf文档来说,还有一种方法可用。第二阶段的程序可以嵌入到PDF文档,而shellcode可以从PDF文档提取并且执行。
九、分析恶意PDF文档
事实上,所有的pdf文档都包含非ASCII字符,因此我们需要使用一个十六进制编辑器来分析它们。我们打开一个可疑的PDF文档,并搜索字符串JavaScript(参见图 4)。
图4 JavaScript 对象
虽然只是有一点用于格式化对象的空格,但是您应该认出PDF对象的结构:对象31是一个JavaScript动作/S /JavaScript,脚本本身没有包含在这个对象中,但是可以在对象32(注意引用3 0 R)中找到。 搜索字符串“31 0 R”,我们发现对象16引用了对象31“/AA <> ”,以及一个页面/Type /Page ,如图5所示。
图5 页对象
/AA 是一个注释动作,这意味着当这个页面被查看的时候这个动作就会执行。因此,我们知道:当这个PDF文档被打开的时候,它将执行一个JavaScript脚本。 让我们看看这个脚本(对象32 )的样子。
对象32是一个流对象,而且它是经过压缩的(/Filter [/FlateDecode]),见图 6。
图6 流对象
为了对它进行解压,我们可以提取二进制流(1154字节长),并通过一个简单的Perl或者Python程序对它进行解压。使用Python语言,我们只需要导入zlib,然后就可以对数据进行解压了,假设我们已经将我们的二进制流存储在data中了:
import zlib
decompressed = zlib.decompress(data)
然而有一点非常清楚:那就是解压后的脚本是恶意的,它会对函数collectEmailInfo中的一个安全漏洞加以利用,如图7所示。
图7 利用collectEmailInfo
十、结束语
随着恶意PDF文件日益增多,人们对这种文档的恶意代码分析技术也越来越感兴趣。本文向读者详细介绍了如何分析一种特殊类型的恶意PDF文件:它们可以利用内嵌JavaScript解释器的安全漏洞。当然,有了本文的基础,在分析其他类型的恶意PDF文件,如利用PDF解析器内的安全漏洞的情形的时候,您也能触类旁通。需要说明的是,虽然几乎所有的恶意PDF文档的攻击目标都是Windows操作系统,但是这里介绍的PDF语言是独立于操作系统的,它同时适用于在Windows、Linux和OSX上的PDF文档。
- ››实战:企业使用交换机VLAN路由配置
- ››实战案例分析:高质量软文对网站百度排名的影响
- ››实战经验浅谈网站搬家后的优化工作
- ››深入浅出实战攻防恶意PDF文档
- ››实战Active Directory站点部署与管理,Active Dir...
- ››实战操作主机角色转移,Active Directory系列之十...
- ››实战经验:巧用微博推广淘宝网店
- ››实战iPhone GPS定位系统
- ››实战Linux环境配置DBD:Oracle模块
- ››实战DeviceIoControl系列之一:通过API访问设备驱...
- ››实战DeviceIoControl系列之二:获取软盘/硬盘/光盘...
- ››实战DeviceIoControl系列之三:制作磁盘镜像文件
更多精彩
赞助商链接