第十一课、抓包环境安装与HTTPS.C/S校验原理

查看 31|回复 1
作者:胡凯莉   
第十一课、抓包环境安装与HTTPS.C/S校验原理
  • https://mp.weixin.qq.com/s/ahPbBSfkkBsv4oy265rI2Q
    Charles设置
  • 我们首先要把Charles当做一个SOCKS5的代理服务器,所以要先设置SOCKS5代理服务器。打开Proxy设置选项,开启SOCKS服务器,我这里开启的端口为8889,也可以随意填写。

  • Burp Suite设置在Proxy中的options选项中设置Web代理端口,设置完成后,点击确定。Postern设置在手机上打开Postern应用,设置SOCKS5代理服务器的地址,连接到Chalres服务器,让所有的数据包都通过Chalres的SOCKS5服务器,这样就能保证数据包不会丢失。vpn规则设置:我这里设置为所有地址都需要走SOCKS5代理服务器。
  • 多了一个ip  在网络层抓包  不是应用层
  • ip route show  table 0 |grep default  查看路由表
    虚拟机设置
  • 路由器新分配ip到虚拟机
  • 本机ping手机
  • 保证了手机、虚拟机、本机的ip在同一个网段
  • 安卓7开始要把证书放在根目录
    HTTPS原理部分
  • HTTP(80) + 加密 + 认证 + 完整性保护=HTTPS(443)
  • 查看远程端口
  • 找到PIDps -e |grep chrom
  • 查看端口lsof -p 8803 |grep TCP
  • https 使用多重混合加密
    配置charles证书到根目录cd /data/misc/user/0/cacerts-added/mount -o remount,rw /systemcp * /etc/security/cacerts/systemmount -o remount,ro /Https服务器校验客户端
  • 在服务器上部署对app内置证书的校验代码。
  • 单一通信已经分裂成两个互相独立的通信,这时候与服务器进行通信的已经不是app、而是Charles了,所以我们要将app中内置的证书导入到Charles中去。
  • 这个操作通常需要完成两项内容:
  • 找到证书文件
  • 找到证书密码
  • 找到证书文件很简单,一般apk进行解包,直接过滤搜索后缀名为p12的文件即可,一般常用的命令为tree -NCfhl |grep -i p12,直接打印出p12文件的路径,当然也有一些app比较“狡猾”,比如我们通过搜索p12没有搜到证书,然后看jadx反编译的源码得出它将证书伪装成border_ks_19文件,我们找到这个文件用file命令查看果然不是后缀名所显示的png格式,将其改成p12的后缀名尝试打开时要求输入密码
  • 想要拿到密码也很简单,一般在jadx反编译的代码中或者so库拖进IDA后可以看到硬编码的明文;也可以使用下面这一段脚本,直接打印出来,终于到了Frida派上用场的时候。
  • 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)
  • 有了证书和密码之后,就可以将其导入到抓包软件中,在Charles中是位于Proxy→SSL Proxy Settings→Client Certificates→Add添加新的证书,输入指定的域名或IP使用指定的证书即可

  • 证书, 文件

  • snake88   

    谢谢大神分享!
    您需要登录后才可以回帖 登录 | 立即注册