我正在寻找使用带有 API 的私钥,唯一的问题是如何至少在第一次运行时保存/获取私钥,因为之后我可以将它放在钥匙串中,我看到的最佳方法是......
我希望使用带有 API 的私钥,唯一的问题是如何至少在第一次运行时保存/获取私钥,因为之后我可以将其放在钥匙串中
我看到的最好的方法是有一个 p12 文件,然后使用 SecPKCS12Import
它来导入它。但是 p12 文件又需要密码,然后密码必须存在于应用程序中,所以我们又回到了原点
换句话说,应用程序内部是否可以拥有一种证书,并且只有应用程序本身可以使用/打开?
我希望使用带有 API 的私钥,唯一的问题是如何至少在第一次运行时保存/获取私钥,因为之后我可以将其放在钥匙串中
从您在代码中发布秘密的那一刻起,它就自动公开了,因为攻击者可以通过某种方式获取它。他们可能首先对您的移动应用程序二进制文件进行静态逆向工程,如果他们没有成功,他们就会通过检测框架进行运行时攻击。
此外,将其存储在钥匙串中也使其容易受到通过检测框架进行的运行时攻击,攻击者将挂接到返回证书的函数中,并在其超出钥匙串后将其提取出来。
我看到的最佳方法是拥有一个 p12 文件并使用 SecPKCS12Import 导入它。但 p12 文件同样需要密码,并且密码必须包含在应用程序中,所以我们又回到了原点
没错,如果你使用密码,那么你只是在交换移动应用程序代码中需要隐藏/保护的内容。我注意到很多开发人员倾向于使用代码混淆,但不幸的是,这种方法在保护机密不被从移动应用程序二进制文件中提取出来方面并不是很有效。对于普通开发人员来说,这可能会不太直观,但攻击者已经习惯了,他们有技术通过静态分析和运行时攻击来解决这个问题。
对于静态二进制分析,他们可以使用移动安全框架(MobBSF)开源工具,正如我在文章“ 如何使用静态二进制分析从移动应用程序中提取 API 密钥” :
可用于逆向工程的开源工具种类繁多,我们无法在本文中触及这个主题的表面,而是将重点介绍如何使用 移动安全框架 (MobSF) 来演示如何对我们的移动应用程序的 APK 进行逆向工程。MobSF 是一个开源工具集合,它们在一个有吸引力的仪表板上显示其结果,但在 MobSF 和其他地方使用的相同工具可以单独使用来实现相同的结果。
在本文中,我们将使用 Android Hide Secrets 研究存储库,这是一个虚拟移动应用程序,其中使用几种不同的技术隐藏了 API 密钥。
虽然本文是在从 Android APK 中提取 API 密钥的背景下进行的,但上传 IPA 文件以提取私钥的过程是相同的,然后您只需要在 MobBSF 仪表板上显示的结果中查找它即可。如果他们在这里找不到它,那么他们将继续使用检测框架进行运行时攻击。
对于运行时攻击,他们可能会求助于流行的 Frida 开源工具,正如我在文章《 如何在 Android 应用程序上使用 Frida 绕过证书锁定》 :
今天,我将展示如何使用 Frida 检测框架在运行时挂入移动应用程序并对代码进行检测,以便即使移动应用程序已实施证书固定也能执行成功的 MitM 攻击。
绕过证书固定并不太难,只是有点费力,并且允许攻击者详细了解移动应用程序如何与其 API 通信,然后使用相同的知识来自动执行攻击或围绕它构建其他服务。
在绕过 Android 上的固定功能时,您可以查看该方法以获得有关如何在 iOS 上执行此操作的灵感。我计划写一篇关于 iOS 的文章,只是还没有时间。
换句话说,应用程序内部是否可以拥有一种证书,并且只有应用程序本身可以使用/打开?
不是,也是。这取决于你如何处理它,以及你愿意付出多大的努力去保护它。
不,因为如果在移动应用程序代码中,那么它就是可以获取的,因此您必须将其视为公开。这不是是否会提取的问题,而是何时提取的问题。
是的,如果您采用在运行时从后端即时检索它的解决方案,但前提是后端可以断言该请求确实来自您的移动应用程序的真实且未经修改的实例,而不是来自受到任何形式攻击的实例或来自 curl、Postman 发出的请求,甚至不是来自机器人的请求。从后端获取证书后,切勿以任何形式将其存储在设备中,即使是在钥匙串中,因为在某些时候您需要从钥匙串中检索它,然后使用运行时检测进行获取,这将挂接到返回它的函数以提取证书。
我会建议您阅读 对这个问题的 接受的答案, 如何使用我的移动应用程序中的 API 而不会被人窃取令牌, 其中运行时机密保护似乎是在需要时将证书传送到您的移动应用程序的最佳选择。
简而言之,您可以将证书安全地存储在云中,并在您的移动应用程序使用时及时交付,但前提是该证书没有受到 MitM 或运行时攻击,没有在 rooted 或越狱的设备上运行,没有连接到调试器或在模拟器中运行。
在回答任何安全问题时,我总是喜欢引用 OWASP 基金会的出色工作。
OWASP API 安全性前 10 名
OWASP API 安全项目旨在通过强调不安全 API 中的潜在风险并说明如何降低这些风险,为软件开发人员和安全评估人员提供价值。为了实现这一目标,OWASP API 安全项目将创建并维护十大 API 安全风险文档,以及创建或评估 API 时的最佳做法文档门户。
OWASP 移动安全项目 - 十大风险
OWASP 移动安全项目是一个集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制,以降低其影响或被利用的可能性。
移动安全测试指南 (MSTG) 是针对移动应用安全开发、测试和逆向工程的综合手册。