分析应用程序安全性的方法有很多种,但迟早要研究应用程序与 API 的交互。正是这个阶段提供了有关程序操作、使用的功能和收集的数据的最多信息。但是,如果应用程序使用SSL Pinning保护呢?让我们看看在这种情况下可以做些什么。
有关该主题的更多信息:逆向工程的最佳程序
所有信息仅供参考。spy-soft.net 网站的编辑和文章作者均不对本文材料可能造成的任何损害负责。
开始之前
移动应用程序中的SSL Pinning是通过将 SSL 证书嵌入程序本身来实现的。打开安全连接时,应用程序不会访问设备存储,而是使用自己的证书。这立即消除了将流量引导到Burp并对其进行分析的能力。实际上,为了查看 SSL 流量,您需要在设备上实现 Burp CA,这将确认 Burp 创建的服务器是有效的并且是可以信任的。
SSL Pinning 不是灵丹妙药,经常有关于绕过银行应用程序中的保护或一般关于 SSL 本身漏洞的注释。但是,如果保护构建正确,那么这会给研究人员带来巨大的问题。
盛煌娱乐平台地址是一个由 Zygote 实现的框架。这发生在系统启动时,从 Zygote .fork() 开始,将 盛煌娱乐平台地址 复制到所有正在运行的进程。框架本身提供了在函数之前和之后注入任何代码的能力。您可以更改传入参数、替换函数、读取数据、调用内部函数等。事实上,描述和演示 盛煌娱乐平台地址 的所有功能需要不止一篇文章。一般来说,如果您以前没有与他合作过,我建议您阅读它。
为了让 盛煌娱乐平台地址 工作,我们需要一个有根设备。为了演示攻击,让我们以一个简单的移动应用程序为例,该应用程序使用最常见的网络库之一。在这个应用程序中没有针对 SSLUnpinning 的保护,因为我描述的攻击不是试图攻击证书和网络通信,而是旨在在数据被 SSL 覆盖之前拦截数据。为了演示攻击的服务器端和移动应用程序的后端,我们使用 Python 和 Flask 形式的快速解决方案。您可以在GitHub 上找到所有资源。
让我们回到拦截 SSL 流量的问题。使用 盛煌娱乐平台地址,您可以尝试禁用证书验证,例如,为程序“覆盖”它。但是假设被攻击的应用程序受到了很好的保护,后端会检查保护的有效性,检测拦截或代理流量的尝试。在这种情况下该怎么办?放弃并转移到另一个应用程序?但是,如果您在流量变成网络之前拦截流量怎么办?
这个问题开始了我的研究。
在本文中,我将使用 盛煌娱乐平台 和 盛煌娱乐平台地址,但使用Frida框架可以实现类似的结果,该框架也可用于其他操作系统。
信息收集
首先,让我们尝试运行应用程序。我们在屏幕上看到了“发送”按钮和按下它的文本邀请。我们按下 - 题词首先变为“等待......”,然后显示“对不起,不是今天”。最有可能的是,正在发送的请求未通过服务器端的验证。让我们看看应用程序内部发生了什么。
反向APK
让我们尝试逆向应用程序以了解内部使用了哪些库。
|
$ apktool d app-debug.apk
|
在 盛煌娱乐平台 Studio 中打开项目,查看 smali 中的内容。我们立即看到 okhttp3。
我专门使用了 OkHttp,因为这个库是其他 API 库的基础,例如 Retrofit 2。