最近突然玩起了快手因此就想着怎么能够抓到他们的包呢
但是尝试了一下发现他们应用了一项技术来阻止我来挂代理抓包,这个技术就是SSL Pinning
这项技术国内现在的短视频网站几乎都使用了,为的就是防止中间人进行攻击,其实我们传统意义上的抓包都是属于中间人的攻击,而SSL Pinning防护通俗的来讲就是通过将比如某音的服务器证书打包到客服端里去,然后通过https建立起校验来让我们中间挂代理失效。
而要解决这样的问题我踩坑总结了两个方案
1,使用xposed的JustTrustMe模块来进行截断
首先我们要安装Xposed,前提要进行root,然后再安装JustTrustMe.apk
如果没有找到合适的可以找lz来私信发给你
2,使用篡改系统证书的方式来进行流量转发
因此要解决这种问题我们可以通过更改客户端的系统证书的方式来突破ssl-pinning防护
简单来讲就是我们将我们的代理软件的证书放到手机里去然后让客户端将我们的代理证书识别成系统证书,这样在检测的时候就不会认为是中间人攻击,而且由客户端发起的请求,但是要更改系统程序则需要将手机root
Burpsuite证书篡改成系统证书的步骤:
(1),选择好本机ip和端口
(2),下载证书
(3),转换证书为hash的形式
因为系统证书都是hash.0这样的形式因此我们要将证书转化为hash的形式存在
// 转换证书的格式 先将.der转成.pem的格式
$ openssl x509 -in cacert.der -inform DER -out cacert.pem -outform PEM
// 提取证书的hash 提取pem的hash值
$ openssl x509 -inform PEM -subject_hash -in cacert.pem
后面lz使用了Charles(简称茶杯)发现茶杯抓包是真的快,就使用了茶杯又装了一次命令是
.pem证书转.cer证书
openssl x509 -outform der -in demo.pem -out demo.cer
.cer证书转.pem证书 0
openssl x509 -inform der -in demo.cer -out demo.pem
(4),将文件名改为上面的has.0值(将cacert.pem重命名为7bf17d07.0)
上图中的7bf17d07就为证书的hash值, 将该目录下生成的7bf17d07.0文件push到手机中, 最后移动到/system/etc/security/cacerts/目录下
这里是Android的adb命令,如果不清楚可以安装一个adb然后照着下面命令敲就可以
adb push 7bf17d07.0 /data/local/tmp #因为data目录是不需要root权限就可以访问
adb shell
su #给root权限
mv /data/local/tmp/7bf17d07.0 /system/etc/security/cacerts/7bf17d07.0 #因为拥有了系统权限所以可以移动到系统文件夹
(5),然后配置手机流量转发
亲测kitsunebi还比较方便,使用socket5进行流量转发,配置好kitsunebi的socket配置
然后茶杯配置socket5
配置到这里就可以试试能不能抓到app包
总结:理论来说上述的两种方式都可以突破ssl-pinning防护的效果,如果有小伙伴没有配置成功或者有什么疑问的可以留言评论。。。
网友评论