Android 7在Burpsuite中无法抓取HTTPS包

紫色玫瑰 2024-08-20 ⋅ 12 阅读

在移动应用开发中,我们经常使用Burpsuite工具来进行应用的渗透测试和安全性评估。然而,最近有一些开发者在使用Android 7设备时,遇到了一个问题:无法通过Burpsuite抓取到应用中的HTTPS包。这个问题对于安全测试来说是一个严重的障碍,因此我们需要找到解决办法。

问题描述

在之前的Android版本中,我们可以通过在设备上安装Burp证书来截获HTTPS流量。但是在Android 7中,Google引入了一项新的安全功能,称为网络安全配置。这个功能要求应用只能与由受信任的证书颁发机构签发的证书进行通信,否则连接会被终止。这导致Burpsuite无法截获应用和服务器之间的HTTPS通信,从而无法进行安全测试。

解决办法

虽然Android 7的网络安全配置对于提升应用的安全性很有帮助,但我们仍然需要找到一种方法来绕过它,以便在Burpsuite中捕获HTTPS包。下面是一些解决办法:

1. 自签名证书

Android 7并不是禁止使用自签名证书,而是要求我们在应用中明确地信任这些证书。通过在应用中添加以下代码,我们可以告诉Android应用来信任我们自己的证书:

public void enableBurpSSL() {
    try {
        TrustManager[] trustManagers = new TrustManager[]{
            new X509TrustManager() {
                @Override
                public void checkClientTrusted(X509Certificate[] chain, String authType) {
                }

                @Override
                public void checkServerTrusted(X509Certificate[] chain, String authType) {
                }

                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[0];
                }
            }
        };

        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, trustManagers, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这段代码创建了一个自定义的TrustManager,它信任所有证书。然后,我们使用这个TrustManager来初始化一个SSLContext,并将其设为默认的SSLSocketFactory和HostnameVerifier。这样,应用就会信任我们自己的证书,从而允许Burpsuite截获HTTPS流量。

2. 修改AndroidManifest.xml

我们也可以通过在应用的AndroidManifest.xml文件中添加以下代码,来指定我们信任的证书:

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config"
    ...>
    ...
</application>

然后,在res/xml目录下创建network_security_config.xml文件,并在其中添加以下内容:

<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user"/>
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user"/>
            <certificates src="user" overridePins="true"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

这个配置文件允许我们信任系统和用户证书,从而让应用连接到Burpsuite。

结论

通过以上两种方法,我们可以绕过Android 7中的网络安全配置,让Burpsuite可以截获应用中的HTTPS包。然而,需要注意的是,这种绕过方法仅适用于测试和开发目的,不适合生产环境中的应用。在发布应用时,我们仍然需要使用由受信任的CA签发的证书,以确保用户的安全和隐私。

希望以上的解决方案可以帮助到遇到类似问题的开发者们,让他们能够继续使用Burpsuite进行安全测试和评估工作。Android的网络安全配置带来了更好的安全性,但也给开发者们带来了一些挑战。只有通过持续学习和研究,我们才能在这个变化的安全环境中保持竞争力。


全部评论: 0

    我有话说: