【问题标题】:Avoid disabling certificate pinning Android避免禁用证书固定 Android
【发布时间】:2019-06-30 23:58:50
【问题描述】:

我正在开发一个使用证书固定的 Android 应用程序(以类似的方式,例如 this)。

但是,我遇到了动态检测库,例如 Frida,或者更糟糕的是 Objection,它们可以绕过此保护措施。

我知道必须在服务器端实现安全性,但是,我想继续窥探我的 API。此外,我还了解 Java 可执行文件易于反汇编和分析。

我怎样才能让这个过程对攻击者来说更加困难,即制作基本命令,例如objection's

android sslpinning disable

失败并强化我的应用程序?我已经看到,根据资产的命名,这个过程也会崩溃。

有什么想法吗?

【问题讨论】:

    标签: android disassembly instrumentation certificate-pinning frida


    【解决方案1】:

    可能的解决方案

    我怎样才能让这个过程对攻击者来说更加困难

    您的问题的一个可能解决方案是使用移动应用证明解决方案在运行时保证您的移动应用没有受到中间人攻击、未被篡改、没有在有根设备中运行、没有附加到调试器并且不存在检测框架。这是通过在后台运行 SDK 来实现的,该 SDK 将与在云中运行的服务进行通信,以证明移动应用程序的完整性和设备正在运行。移动应用中的 SDK 不会根据移动应用提供的测量结果对应用或移动设备的完整性做出任何决定,这是在云服务中完成的。

    因此,在成功证明移动应用程序完整性后,云服务会发布一个短期 JWT 令牌,并使用只有云中的 API 服务器和移动应用程序证明服务知道的秘密进行签名。如果移动应用证明失败,JWT 令牌会使用 API 服务器不知道的秘密进行签名。

    现在,应用程序必须在每个 API 调用中发送请求标头中的 JWT 令牌。这将允许 API 服务器仅在可以验证 JWT 令牌中的签名和过期时间时服务请求,并在验证失败时拒绝它们。

    一旦移动应用不知道移动应用证明服务使用的秘密,即使应用被篡改、在有根设备中运行或通过连接进行通信,也无法在运行时对其进行逆向工程正在成为中间人攻击的目标。

    因此,此解决方案适用于没有误报的正检测模型,因此不会阻止合法用户,同时阻止坏人。

    有什么想法吗?

    您可以尝试推出自己的解决方案,也可以寻找现有的移动应用证明 SAAS 解决方案,例如 Approov(我在这里工作),它为多个平台提供 SDK,包括 iOS、Android、React Native 等.集成还需要对 API 服务器代码进行小检查,以验证云服务发布的 JWT 令牌。此检查对于 API 服务器能够决定服务哪些请求和拒绝哪些请求是必要的。

    总结

    最后,为保护您的 API 服务器和移动应用而使用的解决方案必须根据您要保护的内容的价值以及该类型数据的法律要求(如 GDPR 法规)来选择在欧洲。

    加倍努力

    您似乎很喜欢移动应用安全,我想向您推荐吗:

    OWASP Mobile Security Project - Top 10 risks

    OWASP 移动安全项目是一个集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制以减少其影响或被利用的可能性。

    【讨论】:

      【解决方案2】:

      一些强化框架会使 Frida 和类似工具更难以附加和操作应用程序进程。但是,如果有足够的时间、动力和/或金钱,您甚至可以打破这些框架。

      但通常不是“是否使用强化框架”的问题,而是“您愿意花多少钱来获得这种额外的保护?

      据我所知,没有免费甚至便宜的加固框架(如果我错了,请纠正我,并提供指向那些具有良好保护的免费/廉价解决方案的链接),因此这只是一个问题,您想要多少保护以及如何保护你愿意付出多少。

      注意:Proguard 和 R8 不是强化框架!他们只是稍微混淆了代码,但尤其是在通过 Frida 固定和禁用证书时,他们不提供任何保护!

      【讨论】:

      • 你知道有什么付费加固框架吗?只是为了调查一下它们的工作原理?
      • 有一个项目旨在识别 Android 打包器和混淆器:github.com/rednaga/APKiD。查看使用过的 Yara 规则,您会发现很多此类工具的名称和引用。
      猜你喜欢
      • 1970-01-01
      • 2019-10-03
      • 2022-12-16
      • 2017-02-14
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 2014-08-06
      • 2018-10-28
      相关资源
      最近更新 更多