• 去chrales官网下载
# 官网
https://www.charlesproxy.com/download/
# nas
https://nas.nekoneko.vip:5001/sharing/BysGQqO82
  • 破解chrales
# 破解包
https://nas.nekoneko.vip:5001/sharing/2iIKF10pK
# 在线破解网站
https://tools.zzzmode.com/mytools/charles/

解压文件夹,进入lib目录替换jar,然后jar给777权限。

  • 配置VPN抓包代理-Postern.APK

    1.添加chrales的代理端口。
    
    2.右上角配置规则,设置规则。
    
    3.匹配类型->匹配所有,动作->通过代理连接,代理组->选择chrales的代理。删除所有目标地址域名。
    
    4.点击保存。
    
    5.删了原来旧的规则只留下编辑代理的规则。
    
    6.右上角打开VPN。
    
    7.如果chrales连接上会弹出授权框,点击allow授权。
    
  • 添加SSL证书

    1.Proxy->SSL Proxy settings
    
    2.勾选enable SSL proxying
    
    3.在Location -> ADD host和端口都写 *
    
    4.chrales->help->SSL Proxying -> 第三个查看安装证书地址(chls.pro/ssl)。
    
    5.手机浏览器访问地址下载安装证书(如果访问不到去下载证书push到手机安装)(如果抓不到https尝试重启chrales或者修改手机时间,详见基础刷机部分)
    
  • 安装个人证书(额外)

    > 如果安卓8.0数据包抓不到配置一下个人证书,肉丝环境(8.1.0_r1 + Magisk)。
    
adb shell
su
cd /data/misc/user/0/cacerts-added
mount -o remount,rw /
#安卓7
mount -o rw,remount /
或者
mount -o remount, rw /system

cp * /etc/security/cacerts/

/etc/security/cacerts/ 拷贝过去的证书给777权限

socket5 VPN抓包

> 有时候有些数据包抓不到的时候切换成socket。

1.charles->proxy->proxy settings->勾选socket5

2.Postern修改成socket5代理,重启VPN即可。

APP证书抓包,客户端校验服务器。


有了Charles置于中间之后,本来C/S架构的通信过程会“分裂”为两个独立的通信过程,app本来验证的是服务器的证书,服务器的证书手机的根证书是认可的,直接内置的;但是分裂成两个独立的通信过程之后,app验证的是Charles的证书,它的证书手机根证书并不认可,它并不是由手机内置的权威根证书签发机构签发的,所以手机不认,然后app也不认;所以我们要把Charles的证书导入到手机根证书目录中去,这样手机就会认可,如果app没有进行额外的校验(比如在代码中对该证书进行校验,也就是SSL pinning系列API,这种情况下一小节具体阐述)的话,app也会直接认可接受。

image.png

1.参考文章 https://www.anquanke.com/post/id/197657#h3-12


流程 
    1.找到证书文件
    2.到证书密码
    
 

2.找到证书文件很简单,一般apk进行解包,直接过滤搜索后缀名为p12的文件即可,一般常用的命令为tree -NCfhl |grep -i p12,直接打印出p12文件的路径,当然也有一些app比较“狡猾”,比如我们通过搜索p12没有搜到证书,然后看jadx反编译的源码得出它将证书伪装成border_ks_19文件,我们找到这个文件用file命令查看果然不是后缀名所显示的png格式,将其改成p12的后缀名尝试打开时要求输入密码,可见其确实是一个证书。

3.也可以用objection方法来hook出调用file的class,因为证书都要去目录去找文件。

objection -g xxxxxx explore --startup-command "android hooking watch class_method java.io.File.$init --dump-args --dump-backtrace --dump-return"

4.frida进行hook证书密码"自吐",以调试运行模式运行。ps:如果打印不出来试试清理APP所有缓存在操作。

//打印堆栈信息
function printStack() {
    Java.perform(function () {
        var Exception = Java.use("java.lang.Exception");
        var ins = Exception.$new("Exception");
        var straces = ins.getStackTrace();
        if (straces != undefined && straces != null) {
            var strace = straces.toString();
            var replaceStr = strace.replace(/,/g, "\r\n");
            console.log("=============================Stack strat=======================");
            console.log(replaceStr);
            console.log("=============================Stack end=======================\r\n");
            Exception.$dispose();
        }
    });
}

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) {
            printStack("KeyStore.load1");
            console.log("KeyStore.load1:", arg0);
            this.load(arg0);
        };
        KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
            printStack("KeyStore.load2");
            console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
            this.load(arg0, arg1);
        };

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

setImmediate(hook_KeyStore_load)
frida -U -f xxxx -l /root/Desktop/zb/ssl.js --no-pause

每个框架的密码hook点都是有不同的,这个是以安卓自带框架进行Hook

5.证书安装到charles。打开SSL->Cline Certificates-> 新建-> admin admin->add->import p12->输入hook出来的密码->然后host端口都*,如果没效果重启手机和重启charles。

7.SSL双向证书认证SSL Pinning Bypass:https://github.com/WooyunDota/DroidSSLUnpinning/blob/master/ObjectionUnpinningPlus/hooks.js

抓包-翻墙国外APP

注意如果导入了APP证书要取消掉。

  • charles->External Proxy Settings
  • 勾选 Use external Proxy Servers

总结

一般HTTPS:大部分只采用客户端校验服务器

双向绑定:很少会有服务器校验客户端

SSL Cert Pinning:更少:趣充

Last modification:October 22nd, 2021 at 09:16 pm
If you think my article is useful to you, please feel free to appreciate