SSL Pinning Bypass with Frida and effective Mitigation techniques
引言
在数字转型的空前时代,保护敏感数据和通信变得至关重要。组织面临的主要挑战之一是确保移动应用与服务器之间交换数据的完整性和机密性。为保护这种通信,SSL Pinning已成为标准做法。然而,随着网络安全威胁的发展,网络犯罪分子破坏安全措施的方法也在不断演变。本文深入探讨了动态检测工具包Frida在绕过SSL Pinning中的关键作用。此外,我们还将探讨旨在防止SSL Pinning绕过的安全编码实践,为企业组织提供增强移动应用安全所需的知识。
SSL(安全套接层)
SSL(安全套接层)是一种基于加密的关键互联网安全协议。最初由Netscape于1995年构想,其主要目的是确保在线通信的隐私性、认证性和数据完整性。SSL是当今广泛使用的TLS(传输层安全)加密协议的前身。在深入探讨SSL之前,我们先快速了解HTTP/HTTPS和SSL/TLS。
HTTP与HTTPS
图1展示了HTTP和HTTPS之间的区别,突出了它们各自的特点。
图1:HTTP与HTTPS
SSL/TLS工作原理
图2:SSL/TLS工作流程
SSL/TLS通过以下步骤确保安全的互联网通信:
- 加密:SSL对传输的数据进行加密,使其对潜在的拦截者来说不可读且几乎无法解密。
- 认证:SSL在通信设备之间发起握手以验证其合法性。
- 数据完整性:SSL对数据进行数字签名以保持其完整性,并确认数据未被篡改。
SSL Pinning绕过
图3:SSL Pinning绕过架构
如果未正确实施或配置,SSL Pinning可以被绕过。绕过SSL Pinning的一种常见方法如下:
1. Objection框架
Objection是一个由FRIDA驱动的运行时移动探索工具,旨在评估移动应用的安全性,无需越狱或root设备。它提供预定义的脚本和命令来利用漏洞。
重现步骤: 由于安装过程简单,使用Objection工具绕过漏洞非常直接。 注意:安装Python并设置路径以避免任何障碍。
安装Python及其所需包后,我们将使用“pip”工具在系统上安装Objection。
|
|
图4:使用pip安装Objection
注意:请注意,需求已满足,表示软件已安装在系统上。
成功安装Objection后,必须检查其功能是否正常。为此,执行“objection”命令以确认其运行顺畅。
图5:Objection已安装并正常运行
成功安装所有先决条件后,下一步是按以下方式绕过SSL pinning:
- 执行命令:
objection -g PACKAGE_NAME explore(其中“g”代表gadget,应将PACKAGE_NAME替换为应用程序的包名)。 - 如前所述,有预定义的脚本可用;只需使用命令
android SSLPINNING disable调用它们。 - 此操作将触发弹窗,打开所需应用程序。
- 必须在Android设备上运行Frida服务器才能在系统上运行Objection。
- 继续点击“send request”以有效绕过SSL pinning。
图6:成功绕过SSL Pinning
2. Frida
重现步骤: 如下面的图7所示,使用脚本来绕过SSL pinning。为此,执行以下步骤:
|
|
- -u用于附加gadget
- -l脚本名称
- -f APK包名
图7:Frida工具执行
图8:使用Frida解除SSL Pinning
图9:成功绕过SSL Pinning
图10:SSL解除Pinning绕过
影响
- 攻击者可以拦截和读取应用程序与服务器之间的通信。
- 如果应用程序未适当保护,敏感信息可能暴露,导致泄露或未经授权的访问。
有效的缓解措施
a. 强化的SSL/TLS配置
SSL/TLS协议负责保护应用程序与外部服务器之间的通信。为缓解潜在漏洞,仔细配置应用程序以使用这些协议的最新、最安全版本。此外,强制执行强加密算法、密钥长度和证书验证程序。通过这样做,您将为数据传输建立安全基础,并降低攻击者成功篡改SSL Pinning机制的风险。
b. 避免硬编码或存储敏感数据
为防止SSL Pinning绕过攻击,避免在应用程序代码中硬编码或存储敏感数据,如API密钥、密码或加密密钥。相反,使用安全存储机制,如Android Keystore或iOS Keychain,安全地存储敏感数据。这种做法降低了攻击者即使成功绕过SSL Pinning也能访问关键信息的机会。
c. 定期安全测试
持续的安全测试对于识别和解决可能被利用来绕过SSL Pinning的漏洞至关重要。实施移动应用的常规安全评估和渗透测试。定期扫描SSL Pinning实施中的弱点,并评估应用程序的整体安全状况。通过进行频繁的安全测试,您可以领先于新兴威胁,及时应用补丁,并确保SSL Pinning机制保持有效。
d. 实施最小权限原则
为最小化SSL Pinning绕过攻击的风险,遵循最小权限原则。这意味着应用程序的每个组件应仅具有执行其功能所需的最低访问级别。将权限、用户特权和API访问限制为应用程序操作所需的基本要素。
e. 加密敏感数据
除了保护敏感数据免受未经授权的访问外,还必须对静态和传输中的数据进行加密。使用强加密算法在将数据存储在设备上或通过网络传输之前对其进行编码。这一额外的安全层确保即使SSL Pinning被绕过,拦截的数据对恶意行为者仍然不可读。
f. 代码混淆
代码混淆是一种有意使应用程序源代码更难以理解或逆向工程的实践。通过代码混淆,您可以阻止攻击者发现SSL Pinning实施中的弱点。混淆工具修改变量和函数名称,改变控制流,并添加无关代码以混淆逆向工程师。虽然它不提供绝对安全性,但显著增加了攻击者分析应用程序代码并设计绕过SSL Pinning方法所需的工作量。
结论
随着移动设备和移动应用使用的日益增加,相关的安全威胁也在不断演变。组织必须保持警惕和主动,以保护其移动应用及其处理的敏感数据。了解Frida在SSL Pinning绕过中的作用对于网络安全专业人员和开发人员都至关重要。为增强安全性并维护客户信任,企业可以识别潜在风险,合法使用Frida进行安全研究,并实施安全编码实践。展望未来,保持对新兴威胁的了解并持续增强安全措施,对于保护全球组织的数字资产和声誉至关重要。
图片引用:
- https://www.guru99.com/difference-http-vs-https.html
- https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html
- https://www.cyclon3.com/bypass-facebook-ssl-certificate-pinning-for-ios