安卓逆向—记一次SSLPinning绕过

admin 2026-02-10 14:04:42 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文记录了一次针对海外金融APP的SSLPinning绕过实战。作者使用Frida抓包发现证书不被信任,通过JADX反编译发现APP未使用自定义X509TrustManager,而是采用OkHttp的CertificatePinning对关键域名进行证书锁定。通过编写Frida脚本Hookec0.a类的b()方法,清空CertificatePinner.Builder内部的规则列表,成功绕过证书锁定并捕获到解密后的登录数据包。 综合评分: 78 文章分类: 移动安全,安卓逆向,渗透测试,安全工具,实战经验


cover_image

安卓逆向 — 记一次SSL Pinning绕过

lichuntian00 lichuntian00

逆向有你

2026年2月10日 09:24 河南

目标APP:某海外金融APP。 工具链:Google pixel4真机、Fiddler、JADX、Fr

1.Frida抓包如下

得到2个信息: 1.能正常转发目标APP的流量,说明APP没用禁用系统代理。 2.目标APP流量没用被解密,说明证书不被信任。

用JADX反编译目标APK,搜索implements X509TrustManager:

一共实现了6种自定义X509TrustManager,暂时不知道启用的哪个,进入ec0.SSLClinentFactory类,该类会配置准备启用的X509TrustManager。

可以看到并没有启用任何一个X509TrustManger,而是使用Certificate Pinning来做证书校验,对关键域名启用了证书锁定。编写Frida脚本如下:

function main() {    Java.perform(function () {        const SSLCLientFactory = Java.use("ec0.a");        const CertificatePinnerBuilder = Java.use("okhttp3.CertificatePinner$Builder");        const JavaCollection = Java.use("java.util.Collection");        SSLCLientFactory.b.implementation = function () {            console.log("[SSLCLientFactory] Hook b() 方法,修改证书固定规则");            // 获取原始 Builder            let originalBuilder = this.b();            // 获取原 CertificatePinner.Builder            const field = originalBuilder.getClass().getDeclaredField("v");            field.setAccessible(true);            let certPinnerBuilder = field.get(originalBuilder);            // 3. 获取 Builder 内部存储规则的列表 a            const pinListField = certPinnerBuilder.getClass().getDeclaredField("a");            pinListField.setAccessible(true);            let pinList = pinListField.get(certPinnerBuilder);            // 4. 清空列表            const javaList = Java.cast(pinList, JavaCollection);            javaList.clear();            console.log("[+] 证书固定规则已清空(a 列表为空)");            return originalBuilder;    };});}setImmediate(main);

运行脚本:

成功捕获到解密之后的登录数据包。

·今 日 推 荐·

本文内容来自网络,如有侵权请联系删除


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:逆向有你 lichuntian00 lichuntian00《安卓逆向 — 记一次SSL Pinning绕过》

评论:0   参与:  3