如何避免使用SSL Trust Killer应用程序绕过Okhttp证书锁定?

时间:2018-09-11 14:07:52

标签: android security ssl retrofit2 okhttp

我正在使用okhttp3证书固定以确保安全。但是VAPT团队能够绕过固定,并能够拦截通信。他们正在使用android ssl信任杀手apk。

用于构建固定对象的代码:

public CertificatePinner provideCertificatePinner() {

        final CertificatePinner.Builder builder = new CertificatePinner.Builder();

        builder.add(DOMAIN_PATTERN, "sha1/***********");

        builder.add(DOMAIN_PATTERN, "sha256/**********");

        builder.add(DOMAIN_PATTERN, "sha256/*******");

        builder.add(DOMAIN_PATTERN, "sha256/*****

        return builder.build();

    }

将固定器附加到HTTP客户端:

OkHttpClient getOkHttpClient(HttpLoggingInterceptor interceptor, CommonRequestInterceptor authenticationInterceptor

            , CertificatePinner certificatePinner) {

        OkHttpClient okHttpClient = null;

        try {

            OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder().readTimeout

                    (Constants.NetworkConstants.READ_TIMEOUT, TimeUnit.SECONDS).connectTimeout

                    (Constants.NetworkConstants.CONNECTION_TIMEOUT, TimeUnit.SECONDS);

            okHttpClientBuilder.sslSocketFactory((SSLSocketFactory) SSLSocketFactory.getDefault());

            okHttpClientBuilder.addInterceptor(authenticationInterceptor);

            okHttpClientBuilder.addInterceptor(interceptor);

            okHttpClientBuilder.certificatePinner(certificatePinner);

            okHttpClient = enableTls12OnPreLollipop(okHttpClientBuilder).build();



        } catch (Exception e) {

            e.printStackTrace();

        }

        return okHttpClient;

    }

1 个答案:

答案 0 :(得分:-1)

您可以查看关于虚构应用程序的this blog series,以了解可以采取的保护您的应用程序的所有安全步骤,以及如何绕过这些安全步骤,最后您将可以看到后端如何防御与受感染的应用通信。

因此,简而言之,无法避免绕过证书固定的问题,但是您的应用后端可以对此进行防御。

尽管仍然可以绕过证书锁定,但仍建议将其用作1层以上的防御层。

防止受到侵害的应用程序和/或设备的另一重要事情是使您的应用程序仅与您直接控制的后端进行通信,从而尽可能避免直接呼叫第三方服务提供商。

(免责声明:我在Approov工作,这是我免受攻击的博客系列所引用的防止受到侵害的Apps的解决方案。)