Android PXN绕过技术探讨:Root利用策略

需积分: 0 0 下载量 159 浏览量 更新于2024-08-05 收藏 840KB PDF 举报
"2016-mosec-Android Root利用技术漫谈:绕过PXN1" 这篇资料主要探讨了Android系统中的一个关键安全机制——PXN(Privileged Execute Never)以及如何在没有PXN保护的情况下进行提权攻击。PXN是ARM处理器平台上的一种内核保护措施,旨在防止内核执行用户态代码,从而避免内核执行流程被恶意篡改。当PXN位在一级页表设置为1时,表示开启了这项保护。然而,PXN并不阻止内核读取用户空间的数据,这为绕过PXN提供了可能。 在没有启用PXN的系统中,攻击者常常利用"ret2usr"技术来获取内核执行权限。他们会寻找内核漏洞,控制内核函数指针,将执行流程导向用户态的ShellCode,使得ShellCode能够在内核空间运行,进而调用内核函数或修改内核数据以实现提权。例如,攻击者可能会篡改如ptmx_fops表的fsync指针。当特定条件触发时,内核执行流程会被重定向至ShellCode,ShellCode便能以内核权限执行。 在Android环境下,传统的提权方法如使用`commit_creds(prepare_kernel_cred(0))`来修改进程权限不太实用,因为这需要知道内核函数的确切地址,而Android系统的碎片化导致这些地址不可预测。通常,攻击者更倾向于直接修改进程的credentials。这通常涉及到在ShellCode中找到合适的方法来访问和修改进程的cred结构,而不依赖于固定的内核函数地址。 绕过PXN的挑战在于,PXN机制阻止了内核执行用户态代码,因此传统的ret2usr技术不再有效。在这种情况下,攻击者需要寻找其他方式来规避PXN保护,例如通过内核漏洞寻找可以直接在内核空间执行的代码路径,或者寻找能够导致内核执行用户空间代码的其他机制。 文章深入讨论了Android系统中PXN保护机制的作用以及在无PXN保护下的提权技术,包括ret2usr的原理和实施步骤,以及在Android环境下提权策略的局限性。这些知识对于理解Android系统的安全性、漏洞利用和防御策略具有重要意义。