使用Frida绕过SSL Pinning与有效的缓解技术详解

本文深入探讨了使用Frida动态工具包绕过移动应用SSL证书绑定的方法,详细展示了利用Objection和Frida脚本进行SSL Pinning绕过的具体步骤与架构,并提供了包括强配置、避免硬编码、定期测试、最小权限原则、数据加密和代码混淆在内的六项有效安全缓解措施。

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 VS 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。 Pip install objection

图4:使用pip安装Objection

注意: 请注意,需求已满足,这表明软件已安装在系统上。 成功安装Objection后,检查其功能是否正常至关重要。为此,执行“objection”命令以确认其运行顺畅。

图5:Objection已安装并正常运行

成功安装所有先决条件后,下一步是绕过SSL pinning,如下所示:

  • 执行命令:“objection -g PACKAGE_NAME explore”(其中‘g’代表gadget,您应将PACKAGE_NAME替换为应用程序的包名)。
  • 如前所述,有预定义的脚本可用;只需使用命令“android SSLPINNING disable.”调用它们。
  • 此操作将触发一个弹出窗口,打开目标应用程序。
  • Frida server必须在安卓设备上运行,以便在系统上运行Objection。
  • 继续点击“send request”以有效绕过SSL pinning。

图6:成功绕过SSL Pinning

2. Frida

复现步骤: 如图7所示,使用脚本来绕过SSL pinning。为此,请执行以下步骤: “Frida -U -l Frida-multiple-unpinning.py -f infosecadventures.allsafe” -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用于合法的安全研究,并实施安全编码实践。 展望未来,及时了解新出现的威胁并持续增强安全措施,对于保护全球组织的数字资产和声誉至关重要。

图片引用:

参考文献:

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计