postern代理转发流量到charles
一.背景:
现在的很多的app都是用禁止网络代理来防止抓包。在请求的时候都使用了Proxy.NO_PROXY
二.解决方案
1.传输层的vpn进行流量转发(本篇重点)
1.通过postern 配置socks5代理到charles 抓包(postern是在传输层久把流量转发指定的中间人(代理/抓包软件)) 2.通过drony转发
3.通过proxifier 转发流量
2.HttpCanary
Android平台抓包工具,功能非常强大,基于传输层,连TCP UDP也能抓。首先去其设置中安装证书(Android7.0+注意要系统证书)
3.Hook相关函数
样例1
function hookProxy() { Java.perform(function () { let URL = Java.use("java.net.URL"); URL.openConnection.overload("java.net.Proxy").implementation = function (arg1) { console.log("hook了HttpURLConnection") return this.openConnection(); } let Builer = Java.use("okhttp3.OkHttpClient$Builder"); let newBuilder = Builer.$new(); Builer.proxy.overload("java.net.Proxy").implementation = function (arg1) { console.log("hook了okhttp3") return newBuilder; } } ); }
样例2
console.log("[*] Starting script"); Java.perform(function () { var ss = Java.use("okhttp3.OkHttpClient$Builder"); ss.proxy.implementation = function (x) { console.log(x.type()) console.log(x.address()) console.log(x) //以上打印的是java.net.proxy中附带的方法。具体看查看源码 return this.proxy(null) } }); console.log("end");
三.通过postern转发的流程介绍
1.添加代理服务器
2.添加相应的参数
3.配置规则
可以把多余的删除掉。只留下自己配置的那一个,代理也是一样
开始抓包: 如果是第一次配置代理,charles会弹出一个是否允许这个客户端,点击allow极客
题外话:这个是不需要自己去设置里面设置代理的,直接又postern转发出来的
关于charlse的配置:
1.支持ssl。配置端口和ip都是*
2.证书设置
把证书保存到电脑上
证书推送到手机上,后通过sdka安装证书到用户证书下
adb push C:xxxxxx.pem /sdcard/1.pem
然后把用户证书移动到系统证书上,就可以愉快的抓包了
adb shell #连接手机进入shell模式 #su root #如果你不root权限可以试着这个一般都是root cd /data/misc/user/0/cacerts-added #移动至于用户证书目录 mount -o remount,rw /system #将系统证书目录权限改成可读可写就可以移动文件不然不行 cp * /etc/security/cacerts/ #这里可以使用cp也可以使用mv mount -o remount,ro /system #移动完之后记得把权限改回只读