跳到正文

Android RASP

Android RASP:在应用内部运行的防护

运行时应用自我保护在 Android 上意味着什么、能检测什么,以及如何在不影响真实用户的情况下采用。

简短回答

RASP(运行时应用自我保护)是嵌入应用中的代码,在应用运行时检查设备和应用本身是否可信:Root、模拟器、调试器、Hook 框架以及被修改的副本。然后由策略决定响应方式,从仅上报到结束会话。它提高了攻击成本,但不会让应用无法被攻击。

为什么 Android 应用需要它

任何人都可以下载 APK,解包、修改后重新安装。在已 Root 的手机上或连接了插桩工具时,攻击者可以读取内存、绕过检查并篡改应用发送的内容。服务器上的规则只能看到到达的请求,看不到产生这些请求的设备。

RASP 检查什么

检查项涵盖环境(Root、模拟器、不安全的设备状态)、插桩(Frida、Xposed、被 Hook 的函数)、调试(附加的调试器、进程跟踪)和完整性(签名、被修改的代码、重新签名的副本)。单个信号很弱,多个信号结合才能给出可用的判定。

如何安全地上线

先从监控模式开始:应用上报它本会采取的动作,但不拦截任何内容。查看来自真实用户的事件,再逐项把检测切换为警告、拦截或结束会话。把运行时检查与构建加固(混淆)结合起来,让检查本身更难被找到和移除。

来源怎么说

  • OWASP MASVS-RESILIENCE-1 要求应用验证其运行平台的完整性,MASVS-RESILIENCE-4 要求应用实施反动态分析技术。

    来源 · 核实于

  • Frida 是一款在应用运行时检查和修改应用的工具,它将自己描述为动态代码插桩工具包。

    来源 · 核实于

  • Google 的 Play Integrity API 会返回关于设备、应用和账号的判定,后端可以将其与应用自身的信号一起核验。

    来源 · 核实于

Moatgator 能做什么

  • Runtime 在应用内检测 Root、模拟器、Frida、Xposed、调试器和篡改。

    来源 · 核实于

  • 每项检测的响应写在 moatgator.yml 中:监控、警告、拦截或结束会话,且每项检测都从监控模式开始。

    来源 · 核实于

  • Shield 在你的流水线中混淆已编译的应用,并以未签名形式返回,签名密钥始终由你保管。

    来源 · 核实于

  • 免费套餐包含五项检测,可使用监控和警告模式。

    来源 · 核实于

Runtime

边界在哪里

任何单项检查都不能作为证据,有时间、有决心的攻击者可以绕过客户端检查。RASP 带来的是信号和时间;对于涉及资金的操作,应与服务器端验证(Attest 或 Play Integrity)结合使用。

阅读完整文章

常见问题

RASP 和混淆是一回事吗?

不是。混淆让代码在运行前更难阅读;RASP 在运行时检查环境。两者结合效果更好,因为混淆也能隐藏 RASP 的检查。

RASP 会拦截正常用户吗?

如果过早启用拦截,可能会。因此检测应从监控模式开始,在拦截任何内容之前先看到真实影响。

需要修改源代码吗?

使用 Moatgator 不需要。防护在你的构建流水线中加入已编译的应用,策略保存在 moatgator.yml 中。

支持 iOS 吗?

Moatgator 支持 Android 和 iOS(测试版)。本指南介绍的是 Android。

看看你的应用现状如何

将 APK、AAB 或 IPA 上传到免费的 Scan,无需注册即可获得评分。