frida绕过OKhttp3证书单向绑定(附脚本)

admin 2025年4月28日09:28:33评论7 views字数 2010阅读6分42秒阅读模式
frida绕过OKhttp3证书单向绑定(附脚本)

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢

文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。

frida绕过OKhttp3证书单向绑定(附脚本)

前言

朋友逆向APP遇到证书校验过不去,他试了几个常用的frida脚本都不行。
他把apk发给了我,于是有了下面的文章。

思路

okhttp3是怎么校验证书的呢?

// 配置 OkHttpClientOkHttpClient okHttpClient = new OkHttpClient.Builder()        .sslSocketFactory(sslContext.getSocketFactory(), new TrustServerCerts(serverCertificate))        .hostnameVerifier((hostname, session) -> true// 不验证域名        .addInterceptor(loggingInterceptor)        .build();

如果我们不想让okhttp进行证书校验,一般会写一个TrustAllCerts类,新人所有证书。

public class TrustAllCerts implements X509TrustManager {    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {    }    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {    }    public X509Certificate[] getAcceptedIssuers() {        return new X509Certificate[0];    }}

那么我们能不能学这个思路,用frida写一个TrustAllCerts的类,替换SSLSocketFactory中进行证书校验的类呢?

当然可以。

frida 脚本

Java.perform(function() {// 创建TrustAllCerts类,信任所有证书    var TrustAllCerts = Java.registerClass({        name'com.example.TrustAllCerts',        implements: [Java.use('javax.net.ssl.X509TrustManager')],        methods: {            checkClientTrusted: function(chain, authType{},            checkServerTrusted: function(chain, authType{},            getAcceptedIssuers: function() return []; }        }    });    // 自己写一个context.init    var SSLContext = Java.use('javax.net.ssl.SSLContext');    var context = SSLContext.getInstance("TLS");    context.init(null, [TrustAllCerts.$new()], null);    var OkHttpClientBuilder = Java.use('okhttp3.OkHttpClient$Builder');    //重写OkHttpClientBuilder.sslSocketFactory方法,让他不管传入什么参数,都默认返回TrustAllCerts    OkHttpClientBuilder.sslSocketFactory.overload('javax.net.ssl.SSLSocketFactory''javax.net.ssl.X509TrustManager').implementation = function(sf, tm{        // 替换为信任所有证书的factory        return this.sslSocketFactory(context.getSocketFactory(), TrustAllCerts.$new());    };});

参考资料

  • okhttp 证书绑定流程 ssl pinning分析 https://bbs.kanxue.com/thread-285064.htm

原文始发于微信公众号(进击的HACK):frida绕过OKhttp3证书单向绑定(附脚本)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月28日09:28:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   frida绕过OKhttp3证书单向绑定(附脚本)https://cn-sec.com/archives/4009097.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息