抓包之服务器校验客户端证书

挂上vpn,打开charles抓包可以看到没网络,但是可以抓到包,怀疑是服务器校验客户端证书了

在这里插入图片描述
在这里插入图片描述

这里推荐一下肉老师的文章 https://www.anquanke.com/post/id/197657
引用里面一张图
在这里插入图片描述

原本服务器校验的是app的证书,但是挂上charles,服务器校验的是charles的证书,一匹配发现不是app的证书,就返回网络失败,所以我们要将app中内置的证书导入到Charles中去。
这个操作通常需要完成两项内容:
1.找到证书文件
2.找到证书密码

首先找证书文件,直接对apk进行解包,直接过滤搜索后缀名为p12的文件即可,一般常用的命令为tree -NCfhl |grep -i p12,直接打印出p12文件的路径
在这里插入图片描述

找证书密码一般解密会调用现成的API,java.security.KeyStore ,直接使用frida打印出来,
也可以hook系统文件库,这里直接使用现成的代码,

function hook_KeyStore_load() {
    Java.perform(function () {
        var StringClass = Java.use("java.lang.String");
        var KeyStore = Java.use("java.security.KeyStore");
        KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {
            console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            console.log("KeyStore.load1:", arg0);
            this.load(arg0);
        };
        KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
            console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
            this.load(arg0, arg1);
        };

        console.log("hook_KeyStore_load...");
    });
}

setImmediate(hook_KeyStore_load)

使用spawn的模式启动,密码一下子就吐出来了
在这里插入图片描述

把证书导入到charles,并输入刚才的密码
在这里插入图片描述

再次抓包试试,这次页面跳转了,请求也是正常了
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值