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

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

  • https://mp.weixin.qq.com/s/ahPbBSfkkBsv4oy265rI2Q

Charles设置

  • 我们首先要把Charles当做一个SOCKS5的代理服务器,所以要先设置SOCKS5代理服务器。打开Proxy设置选项,开启SOCKS服务器,我这里开启的端口为8889,也可以随意填写。
  • image-20230219154633508

Burp Suite设置

在Proxy中的options选项中设置Web代理端口,设置完成后,点击确定。

image-20230219154924599

Postern设置

在手机上打开Postern应用,设置SOCKS5代理服务器的地址,连接到Chalres服务器,让所有的数据包都通过Chalres的SOCKS5服务器,这样就能保证数据包不会丢失。

图片

vpn规则设置:我这里设置为所有地址都需要走SOCKS5代理服务器。

  • 多了一个ip 在网络层抓包 不是应用层
  • ip route show table 0 |grep default 查看路由表

虚拟机设置

image-20230219155359972

image-20230219155425415

image-20230219155528178

  • 路由器新分配ip到虚拟机
  • 本机ping手机
  • image-20230219155931414
  • 保证了手机、虚拟机、本机的ip在同一个网段
  • 安卓7开始要把证书放在根目录

HTTPS原理部分

  • HTTP(80) + 加密 + 认证 + 完整性保护=HTTPS(443)

  • 查看远程端口

    1. 找到PIDps -e |grep chrom
    2. 查看端口lsof -p 8803 |grep TCP
  • https 使用多重混合加密

image-20230219171443121

配置charles证书到根目录

cd /data/misc/user/0/cacerts-added/

mount -o remount,rw /system

cp * /etc/security/cacerts/system

mount -o remount,ro /

Https服务器校验客户端

  • 在服务器上部署对app内置证书的校验代码。

  • 单一通信已经分裂成两个互相独立的通信,这时候与服务器进行通信的已经不是app、而是Charles了,所以我们要将app中内置的证书导入到Charles中去。

  • 这个操作通常需要完成两项内容:

    1. 找到证书文件
    2. 找到证书密码
  • 找到证书文件很简单,一般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中是位于ProxySSL Proxy SettingsClient CertificatesAdd添加新的证书,输入指定的域名或IP使用指定的证书即可

  • img

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值