第十一课、抓包环境安装与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)
-
查看远程端口
- 找到PID
ps -e |grep chrom
- 查看端口
lsof -p 8803 |grep TCP
- 找到PID
-
https 使用多重混合加密
配置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
中去。 -
这个操作通常需要完成两项内容:
- 找到证书文件
- 找到证书密码
-
找到证书文件很简单,一般
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使用指定的证书即可