跳过内容

MASTG-TEST-0045: 测试 Root 检测

此测试即将更新

此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。

通过提交 PR 帮助我们:MASTG v1->v2 MASTG-TEST-0045:测试 Root 检测 (android)

发送反馈

绕过 Root 检测

使用 jdb、DDMSstrace 和/或内核模块运行执行跟踪,以找出应用程序正在做什么。您通常会看到与操作系统的各种可疑交互,例如打开 su 进行读取和获取进程列表。这些交互是 Root 检测的可靠标志。识别并停用 Root 检测机制,一次一个。如果您正在执行黑盒弹性评估,禁用 Root 检测机制是您的第一步。

为了绕过这些检查,您可以使用几种技术,其中大多数是在“逆向工程和篡改”一章中介绍的

  • 重命名二进制文件。例如,在某些情况下,简单地重命名 su 二进制文件就足以击败 Root 检测(尽量不要破坏您的环境!)。
  • 卸载 /proc 以防止读取进程列表。有时,/proc 的不可用性足以绕过此类检查。
  • 使用 Frida 或 Xposed 来 Hook Java 和 Native 层的 API。这会隐藏文件和进程,隐藏文件的内容,并返回应用程序请求的各种虚假值。
  • 通过使用内核模块来 Hook 低级 API。
  • 修补应用程序以删除检查。

有效性评估

检查 Root 检测机制,包括以下标准

  • 多种检测方法分散在整个应用程序中(而不是将所有内容放入单个方法中)。
  • Root 检测机制在多个 API 层(Java API、Native 库函数、汇编程序/系统调用)上运行。
  • 这些机制在某种程度上是原创的(它们不是从 StackOverflow 或其他来源复制和粘贴的)。

开发 Root 检测机制的绕过方法并回答以下问题

  • 这些机制是否可以使用标准工具轻松绕过,例如 Choicy
  • 是否需要静态/动态分析来处理 Root 检测?
  • 您需要编写自定义代码吗?
  • 成功绕过这些机制花费了多长时间?
  • 您如何评估绕过这些机制的难度?

如果缺少 Root 检测或 Root 检测很容易被绕过,请根据上面列出的有效性标准提出建议。这些建议可能包括更多的检测机制,以及将现有机制与其它防御措施更好地集成。