MASTG-TEST-0047: 测试文件完整性检查
此测试即将更新
此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。
请通过提交 PR 帮助我们: MASTG v1->v2 MASTG-TEST-0047: 测试文件完整性检查 (android)
绕过文件完整性检查¶
绕过应用来源完整性检查¶
- 修补反调试功能。通过简单地用 NOP 指令覆盖相关的字节码或本地代码,禁用不需要的行为。
- 使用 Frida 或 Xposed 在 Java 和本地层挂钩文件系统 API。返回原始文件的句柄,而不是修改后的文件。
- 使用内核模块拦截与文件相关的系统调用。当进程尝试打开修改后的文件时,返回未修改版本的文件描述符。
请参阅方法挂钩以获取修补、代码注入和内核模块的示例。
绕过存储完整性检查¶
- 从设备检索数据。
- 更改检索到的数据,然后将其放回存储中。
有效性评估¶
应用来源完整性检查
在未修改的状态下运行该应用,并确保一切正常。对 classes.dex
和应用包中的任何 .so 库应用简单的补丁。按照“基本安全测试”一章中的描述,重新打包并重新签名应用,然后运行该应用。该应用应检测到修改并以某种方式响应。至少,该应用应提醒用户和/或终止。努力绕过防御并回答以下问题
- 这些机制可以很容易地被绕过吗(例如,通过hook单个 API 函数)?
- 通过静态和动态分析识别反调试代码有多困难?
- 您是否需要编写自定义代码来禁用防御措施? 您需要多少时间?
- 您如何评估绕过这些机制的难度?
存储完整性检查
应用类似于应用来源完整性检查的方法。回答以下问题
- 这些机制是否可以轻松绕过(例如,通过更改文件或键值的内容)?
- 获取 HMAC 密钥或非对称私钥有多困难?
- 您是否需要编写自定义代码来禁用防御措施? 您需要多少时间?
- 您如何评估绕过这些机制的难度?