Adobe Reader X保护模式技术分析

时间:2022-09-19 09:15:05

Adobe Reader X保护模式技术分析

摘 要:介绍了Adobe Reader X保护模式所使用的相关技术,讨论了各技术手段能够达到的功能和所受的限制。

关键词:Adobe Reader X;保护模式;技术分析

中图分类号:TP309 文献标识码:A 文章编号:16727800(2012)011012502

作者简介:宗波(1984-),男,硕士,宜春学院助教,研究方向为网络安全。

1 沙盒设计目标

Windows 系统提供的可用于沙盒的安全机制主要有以下4个方面:作业对象Job Object)、受限令牌(Restricted Token)、分离桌面、用户访问控制(UAC)。

其中对UAC的支持需要 Windows Vista 或这之后的版本。出于安全性和实现复杂度的考虑,AdobeReader X沙盒目前没有使用隔离桌面机制。

2 作业对象(Job Object)

Windows 2000 开始提供了一个新的内核对象——作业对象。作业类似于UNIX 里的 ulimit,它能够对作业内的进程所使用的资源做限制,例如处理器时间、内存总量、UI 对象的访问、作业内进程总数等。

作业中进程数量为 1,不能创建或切换桌面;不能修改显示设置;不能调用 ExitWindows 来注销或重启系统;不能访问作业之外进程创USER Handle;不能通过 SystemParametersInfo 修改系统参数;禁止作业内进程使用包含管理员组的令牌。Adobe Reader X 没有通过作业对象对沙盒进程做如下限制: 剪贴板的读写、访问Global Atom、内存及处理器的使用。

可以使用 Process Explorer 查看 Adobe Reader X 作业的限制:作业中进程数量为1直接导致了exec 类的shellcode的执行失败。这有效地防止了恶意代码启动新的进程。

3 受限令牌

Windows使用令牌对象来标识一个进程的安全环境。令牌中包含了SID 和特权等,其中SID代表了创建进程的用户的账户和工作组,特权说明了进程可以对系统进行的操作。当进程访问一个受保护的对象或进行一些系统操作的时候,Windows 将通过一个算法来对比令牌和被访问对象的 DACL,然后决定操作是否成功。 受限令牌就是去除和限制了令牌中不必要的权限,避免恶意代码对系统的损害,主要体现在以下3个方面:将令牌中的 SID 标记为Deny;在 Restrict SID 列表中添加SID;去除令牌中的特权。

将SID标记为Deny主要应对这种情况:令牌中的SID授予用户的访问权限是叠加的关系,如果令牌T中包含A、B两个工作组的SID,那么用户可以访问隶属于A工作组或隶属于B工作组的文件。由于对象DACL中的Access Deny ACE具有更高的优先级,如果文件F中包含针对A工作组的Access Deny ACE,则令牌T将无法访问文件F,如果简单去掉令牌 T 中A工作组 的 SID,将会导致用户有可能具备访问文件F的权限。将SID标记为Deny 则不会出现这种情况。

当令牌中存在受限SI列表的时候,Windows 将会两次校验DACL以决定访问权限,第一次根据普通SID和 deny SID 遍历对象的 DACL,第一次检查通过后再根据 受限列表中的 SID 遍历对象的DACL,只有两次检查都成功才授予用户访问权限。

4 隔离桌面

由于Windows自身设计的原因,在同一桌面下运行的程序存在如下安全问题:Shatter、Attack、SetWindowsHookEx、Keylog、截屏。

由于Winodws允许同一桌面下无特权的程序向高特权的程序发送消息,这将存在安全隐患。shatter attacks是通过向其它进程发送消息来实现注入代码,一些 Windows 消息允许携带回调函数参数,如果攻击者可以通过某些方式向高权限进程写入Shellcode,然后发送WM_TIMER消息就可以实现在高权限进程执行代码。

在同一桌面下还可以通过SetWindowsHookEx()来向其它进程注入代码。Windows 程序还可以通过GetKeyState() 获取同一桌面下其它进程的击键信息。通过隔离桌面可以防止此类的攻击。首先创建一个桌面,然后调用 CreatePorcessAsUser() 并设置。

5 UAC

Windows Vista 操作系统支持UAC、UIPI(User Interface Privilege Isolation,用户界面权限隔离)是UAC机制中的一部分。UIPI 将进程分为不同的 integrity 级别,从而保证低 integrity 级别的进程无法影响高integrity 级别的进程。进程的 integrity 级别由令牌中的 SID 声明,系统预置了几个 integrity 级别。

此外,还可以通过在令牌中设置S-1-16- xxxx 来自定义integrity级别。UIPI 的基本原则是no-write-up。Windows Vista 系统中每个受保护的对象都有一个integrity 级别,系统首先进行integrity检查,然后再进行原来的DACL检查。如果进程的integrity级别为Low,而文件的integrity 级别为Medium,则进程无法写入文件。UIPI 具体所做的保护包括:低权限级别进程无法对高权限级别的窗口句柄做验证,即无法判断窗口句柄是否有效;低权限级别进程无法向高权限级别进程的窗口发送消息(SendMessage 或 PostMessage 等等 API)。 如果低权限级别进程向高权限级别进程的窗口发送了消息,使用的API 将返回成功,而发送的消息会被丢弃;低权限级别进程无法把线程注入到高权限级别进程;低权限级别进程无法对高权限级别进程进行日志 (Journal) hook;低权限级别进程无法把DLL注入到高权限级别进程。对窗口消息hook也就被隔离了;低 integrity 级别的进程不可以读高 integrity 级别的地址空间。

6 DEPPermenent

此外,Adobe Reader X在系统开启DEP的情况下会设置Adobe ReaderX进程的DEP状态为DEPPermenent。设置为此状态后将无法在用户台再次关闭DEP。恶意代码只能通过ROP等方式绕过DEP。但是如果系统配置为不打开DEP,则Adobe Reader X无法使用DEP保护。

7 网络功能不受限制

虽然 Adobe Reader X 使用了作业、受限令牌、UAC等机制限制沙盒进程的执行环境,但是对于网络功能却没有任何限制。用户在受到攻击后,恶意代码可以通过网络功能传送窃取到的数据。

8 Hook API

由于Adobe Reader X 沙盒的保护,使得一些系统调用在沙盒进程中无法完成,需要借助进程才能完成。Adobe 采用了 Hook API 的方式并在 hook 代码中利用 IPC 通讯请求进程完成需要的操作。通过测试发现被 hook 的API包括文件操作、注册表操作、进程操作、剪贴板操作等相关的API。

9 漏洞利用对比

Adobe Reader X 的沙盒技术并不能阻止漏洞的产生,只是在漏洞被触发后提高了漏洞利用的成本。下面来做一下Adobe Reader9+Windows XP 和Adobe Reader X+Windows 7 两个环境下漏洞利用的对比。

Windows XP 下Adobe Reader 9的进程运行在管理员权限下,在触发漏洞后只需要绕过 DEP 就可以成功利用漏洞,执行任意操作。Windows 7下首先需要触发Adobe Reader X沙盒进程的漏洞,然后需要绕过DEP、ASLP、EHOP 等保护机制,才能执行任意指令。但是由于沙盒进程运行于Low integrity 级别,这时还不能执行任意操作,需要再次触发进程的漏洞,然后再次绕过 DEP、ASLP、SEHOP 等保护机制才能得到正常用户的权限。由于 Windows 7 UAC 的保护,进程不具备管理员权限,所以还需要继续本地提权才能对系统执行任意操作。

10 结论

Adobe Reader X 的沙盒主要依赖 Windows 系统的安全机制,在一定程度上保护了用户系统的安全,提高了漏洞利用成本。目前,沙盒可以防止恶意代码向系统安装程序,但是恶意代码还是可以直接在 Adobe Reader 进程空间驻留,并通过网络传送窃取到的数据。

参考文献:

[1]王亚新,仲崇民.利用Adobe Acrobat Standard V6.0软件实现作者远程校对[J].编辑学报,2007(3).

[2]陈珺,熊春茹,培.编辑部远程校对的协调机制分析[J].编辑学报,2006(3).

[3]张建芬,邓晓群,沈志超.利用方正文易和Acrobat软件实现期刊论文校对[J].编辑学报,2004(3).

[4]马加佳,方岩.利用Foxit Reader软件实现作者远程校对[J].中国科技期刊研究,2010(5).

[5]尚永刚.Adobe Reader 8.0在作者远程校对中的应用[J].编辑学报,2008(1).

上一篇:网络通信安全策略研究 下一篇:基于Web的楼宇“电子沙盘”系统的设计与实现