分类 安全 下的文章

在Android手机上安装Frida框架,篡改 SSLContext

本文我会向你展示一个相当简单的方法,该方法能绕过所有Android移动设备的“证书锁定”(certificate pinning)。本文描述的方法是基于Piergiovanni Cipolloni的研究文章和他开发的脚本。如果需要在Android手机上绕过认证,都要涉及SSLContext。本文会讲解一种通过调用Frida并操纵SSLContext来构建一个能够在Android上普遍绕过证书锁定的脚本。

简单地说,脚本的运行分以下3步:

每当应用程序初始化其SSL Contex时,Frida脚本都会劫持sslcontext.init()方法,当它被调用时,第二个参数即应用程序TrustManager会出现。在Android上,SSLContext函数调用又被称为SSLContext.init(KeyManager,TrustManager,SecuRandom)。

对于初学者来说,要理解Piergiovanni Cipolloni的方法会显得很困难。因此,为了让这部分读者能读懂,我特意加了一些基本知识在里面。

本文会包含以下7方面内容:

通过证书锁定,开发人员可以确保其应用程序不接受实际由官方认证机构签名的假证书。 由于Android系统本身只检查证书的层次结构是否正确以及是否在所谓的“信任证书存储库”中体现CA的标识,所以如果攻击者将伪造的CA标识嵌入到信任存储库,那后果不堪设想。如果发生以上的攻击,攻击者基本上就能够拦截应用程序的整个HTTPS传输。为此,开发人员才会进一步,在应用程序中编译真实证书,并确保应用程序只使用该证书。

构建运行环境:

阅读全文

配置Burp Suite 证书

对我来说,我认为最简单的解决方案就是将Burp CA安装到系统可信证书中。你可以通过Settings -> Security -> Trusted Credentials来查看所有与Android设备捆绑在一起的系统CA。在浏览器捆绑中你也能看到类似的CA。

Android的受信任CA以特殊格式存储在/system/etc/security/cacerts 。如果我们有root权限,可以对这个位置进行写入放入Burp CA(经过一些修改后)。

导出并转换Burp CA

第一步是以正确的格式获取Burp CA。使用Burp Suite,以DER格式导出CA证书。我将它保存为cacert.der

Android喜欢PEM格式证书,并且文件名为subject_hash_old值并以.0结尾。

注意:如果你使用的OpenSSL版本小于1.0,那么将是subject_hash,而不是“old”

使用openssl将DER转换成PEM,然后输出subject_hash_old并重命名该文件:

将证书复制到设备

我们可以使用adb来复制证书,但由于必须将其复制到/system文件系统,所以我们需要将它重新挂载为可写。作为root用户,adb remount非常简单。

进入adb shell将文件移动到/system/etc/security/cacerts,并将文件权限修改为644:

最后,我们通过adb reboot命令重启设备。

重启设备后,我们浏览到Settings -> Security -> Trusted Credentials应该能看到新的“Portswigger CA”已成为系统信任的CA。

现在我们就可以设置代理并通过Burp来拦截所有的应用流量了

阅读全文