Android Root技术:PXN防护机制及绕过方法

需积分: 15 2 下载量 66 浏览量 更新于2024-08-16 收藏 2.1MB PPT 举报
"PXN简介-Android Root利用技术漫谈:绕过PXN" 本文主要讨论了Android系统中的一种安全机制——PXN(Privileged Execution Not Allowed),及其在Android Root利用技术中的规避方法。PXN是ARM平台为了防止恶意程序通过用户空间的漏洞执行内核级别的代码而设计的一种缓解措施。当处理器处于内核态尝试执行用户空间的代码时,如果PXN位被设置为1,就会触发Permission fault,从而阻止这种行为。 首先,PXN的实现依赖于ARM架构的first-level页表,其中的PXN位被设置为1,这样可以区分用户空间和内核空间的权限。在PXN启用前,攻击者通常利用漏洞执行用户态shellcode来提权,关闭SELinux或者切换SELinux上下文以获取更多权限。然而,随着PXN的引入,这种传统的利用方式变得困难。 2014年,部分32位三星旗舰手机开始启用PXN,随后所有64位设备也纷纷跟进。面对PXN的保护,攻击者需要寻找新的提权策略。一种常见的方法是通过ROP (Return-Oriented Programming) 或JOP (Jump-Oriented Programming) 技术绕过PXN。这通常涉及泄露栈指针(sp)来计算addr_limit的地址,然后通过ROP链修改addr_limit,使其允许用户态代码执行。 例如,《PXN防护技术的研究与绕过》一文中提到,利用CVE-2015-3636这样的漏洞,攻击者可以控制特定寄存器,构造ROP链来泄露sp地址,之后将addr_limit设置为最大的有效值。另一篇由KeenTeam发表的文章《Own your Android! Yet Another Universal Root》也展示了类似的利用过程,通过泄露sp地址和修改addr_limit来绕过PXN限制。 PXN虽然增加了Android系统的安全性,但并没有完全阻止Root利用。攻击者通过精心设计的ROP/JOP链,依然有可能在启用PXN的情况下实现提权。因此,持续的安全研究和更新是防止此类攻击的关键。开发者和安全研究人员需要不断探索新的防御手段,以应对日益复杂的攻击技术。