其他应用程序是否可以读取我的应用程序的签名toString()
格式?因为我使用应用程序的签名作为应用程序的第一个核心安全性。有可能破裂吗?还有什么可以用作我的应用程序的密码,即使在反编译时也看不到?当事情发生变化或我的应用被反编译时,我的应用程序将无效?
你的移动应用程序APK是公共的:你再也无法控制它了
其他应用程序是否可以将我的应用程序的签名读取为String()格式?
从你向公众发布你的移动应用程序的那一刻起,你就失去了对它和它上面的任何东西的控制,这不再是秘密,因为有很多开源工具可以帮助它轻松地进行反向工程,例如MobSF-移动安全框架:
移动安全框架是一个自动化的、一体化的移动应用程序(Android/iOS/Windows)笔测框架,能够执行静态分析、动态分析、恶意软件分析和web API测试。
攻击者还经常使用工具框架在运行时执行动态分析,例如Frida:
将您自己的脚本注入黑盒进程。挂钩任何函数,监视加密API或跟踪私有应用程序代码,无需源代码。编辑,点击保存,立即查看结果。所有这些都没有编译步骤或程序重新启动。
如果您的移动应用程序仅依靠自己的签名来防止在运行时对其进行修改,那么它将无法有效抵御攻击者,但可能会防止脚本孩子的滥用。攻击者所需要做的就是对你的移动应用程序进行静态反向工程,找到并删除你设置的保护措施,重新包装它,并用它自己的密钥对应用程序进行签名。
重新打包移动应用程序并在谷歌Play官方商店或其他替代商店中提供,这比许多开发者想象的要普遍得多,而一个著名的新闻是《神奇宝贝Go:》
还记得《精灵宝可梦Go》吗?这是Niantic实验室的一款基于位置的增强现实手机游戏,在2016年推出时一夜之间轰动全球?好吧,该游戏在2019年创下了收入超过发布年的纪录,宣布了实时AR多人游戏功能,并以一种略显不和谐的方式起诉了一个"黑客协会",因为该协会创建和分发了该公司移动应用程序的未经授权的衍生版本
神奇宝贝Go的交错发布意味着尚未得到服务的地区的痴迷粉丝们被重新包装的应用程序所吸引。这些应用程序中相对无害的仅包含对绕过应用程序内控件的修改。然而,对这些应用程序的纯粹需求也意味着,肆无忌惮的行为者现在可以让玩家下载被注入木马和广告软件的版本,或者更糟糕的是,完全重新包装的恶意应用程序,没有任何神奇宝贝代码。然而,这些重新包装的应用程序不会在官方应用程序尚未推出的地区自动产生任何神奇宝贝。为了绕过这一点,玩家不得不破解API通信来欺骗位置。从规模上看,重新包装的应用程序和API滥用的激增为复杂的DDoS攻击开辟了新的载体。
正如你所看到的,可以绕过应用内控件的使用,并提供重新打包的应用程序,用户最终在不知道或不知道这不是原始应用程序的情况下安装和使用它们,但一旦绕过了一些对用户有利的控件,他们就不会介意。
那么,我是说你不应该使用应用内控件吗?在我看来,你应该尽可能多地使用你能负担得起的防御层,以使攻击者的生活尽可能艰难,但请记住,如果你不将这种应用内防御与一种机制结合起来,让你的移动应用程序的API后端知道何时请求来自你的真实和无限制版本的移动应用,那么,你将以挫败大多数被终止的攻击者的攻击而失败告终。
逆向工程技术
因为我使用应用程序的签名作为应用程序的第一个核心安全性。有可能破裂吗?
是的,可以通过移动应用程序的反编译使用静态分析和/或使用动态分析来完成。
攻击者可能首先对您的移动应用程序进行反编译,以检查代码并了解其工作原理,如有必要,还可以使用检测框架在运行时查看其行为以及如何实时绕过它。
你可以在我写的这篇文章中学习如何使用MobSF进行静态逆向工程:
可用于反向工程的开源工具范围很大,我们在本文中确实无法触及这个主题的表面,但我们将重点使用移动安全框架(MobSF)来演示如何对我们的移动应用程序的APK进行反向工程。MobSF是一个开源工具的集合,它们在一个有吸引力的仪表板中显示结果,但MobSF和其他地方使用的相同工具可以单独使用,以实现相同的结果。
在本文中,我们将使用Android隐藏秘密研究存储库,这是一个伪移动应用程序,使用多种不同的技术隐藏API密钥。
关于如何在运行时使用检测框架的示例,您可以看到我写的关于如何在Android应用程序上绕过Frida的证书锁定以学习如何使用它的文章:
今天我将展示如何使用Frida检测框架在运行时挂接到移动应用程序并检测代码,以便在移动应用程序已实现证书固定的情况下成功执行MitM攻击。
绕过证书钉扎并不太难,只是有点费力,并且可以让攻击者详细了解移动应用程序如何与其API通信,然后使用相同的知识自动进行攻击或围绕其构建其他服务。
可能的解决方案
还有什么可以用作我的应用程序的密码,即使在反编译时也看不到?当事情发生变化或我的应用被反编译时,我的应用程序将无效?
你可以让它变得更难,但不能让它不可能被反编译和反向工程。例如,您可以在Android Studio上使用内置的Proguard或R8编译器:
启用收缩时,您还可以从模糊处理和优化中受益,模糊处理可以缩短应用程序的类和成员的名称,优化可以应用更激进的策略来进一步缩小应用程序的大小。混淆:缩短类和成员的名称,从而减少DEX文件的大小。要了解更多信息,请转到有关如何混淆代码的部分。
一个可能更好的解决方案是将决策权转移到移动应用程序的API后端,前提是它与移动应用程序一起工作。API后端将决定何时提供或不提供应用程序工作所需的数据,但为此,后端需要知道请求是否来自它所期望的,即移动应用程序的正版和无限制版本。
因此,如果您的移动应用程序使用API后端,那么我建议您阅读我对如何确保移动应用程序的API REST问题的回答,尤其是加强和屏蔽移动应用程序、保护API服务器和可能的更好解决方案部分,您将了解到,使用移动应用程序验证解决方案可以让API后端知道请求何时确实来自您的真实和未受阻碍的移动应用程序,因此,能够拒绝来自篡改或重新打包的移动应用程序版本的数据,从而由于缺乏可用的数据而使其变得无用。
你想多跑一英里吗
在回答安全问题时,我总是喜欢引用OWASP基金会的出色工作。
对于移动应用程序
OWASP移动安全项目-十大风险
OWASP移动安全项目是一个集中的资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类,并提供开发控制,以减少其影响或被利用的可能性。
OWASP-移动安全测试指南:
《移动安全测试指南》(MSTG)是一本关于移动应用程序安全开发、测试和逆向工程的综合手册。
对于APIS
OWASP API安全前10名
OWASP API安全项目旨在通过强调不安全API中的潜在风险并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了实现这一目标,OWASP API安全项目将创建并维护API十大安全风险文档,以及创建或评估API时最佳实践的文档门户。