MASTG-TEST-0045: 测试 Root 检测
此测试即将更新
此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。
通过提交 PR 帮助我们:MASTG v1->v2 MASTG-TEST-0045:测试 Root 检测 (android)
绕过 Root 检测¶
使用 jdb、DDMS、strace
和/或内核模块运行执行跟踪,以找出应用程序正在做什么。您通常会看到与操作系统的各种可疑交互,例如打开 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 检测很容易被绕过,请根据上面列出的有效性标准提出建议。这些建议可能包括更多的检测机制,以及将现有机制与其它防御措施更好地集成。