跳过内容

MASTG-TEST-0047: 测试文件完整性检查

此测试即将更新

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

请通过提交 PR 帮助我们: MASTG v1->v2 MASTG-TEST-0047: 测试文件完整性检查 (android)

发送反馈

绕过文件完整性检查

绕过应用来源完整性检查

  1. 修补反调试功能。通过简单地用 NOP 指令覆盖相关的字节码或本地代码,禁用不需要的行为。
  2. 使用 Frida 或 Xposed 在 Java 和本地层挂钩文件系统 API。返回原始文件的句柄,而不是修改后的文件。
  3. 使用内核模块拦截与文件相关的系统调用。当进程尝试打开修改后的文件时,返回未修改版本的文件描述符。

请参阅方法挂钩以获取修补、代码注入和内核模块的示例。

绕过存储完整性检查

  1. 从设备检索数据。
  2. 更改检索到的数据,然后将其放回存储中。

有效性评估

应用来源完整性检查

在未修改的状态下运行该应用,并确保一切正常。对 classes.dex 和应用包中的任何 .so 库应用简单的补丁。按照“基本安全测试”一章中的描述,重新打包并重新签名应用,然后运行该应用。该应用应检测到修改并以某种方式响应。至少,该应用应提醒用户和/或终止。努力绕过防御并回答以下问题

  • 这些机制可以很容易地被绕过吗(例如,通过hook单个 API 函数)?
  • 通过静态和动态分析识别反调试代码有多困难?
  • 您是否需要编写自定义代码来禁用防御措施? 您需要多少时间?
  • 您如何评估绕过这些机制的难度?

存储完整性检查

应用类似于应用来源完整性检查的方法。回答以下问题

  • 这些机制是否可以轻松绕过(例如,通过更改文件或键值的内容)?
  • 获取 HMAC 密钥或非对称私钥有多困难?
  • 您是否需要编写自定义代码来禁用防御措施? 您需要多少时间?
  • 您如何评估绕过这些机制的难度?