最近刚好有朋友联系我,说某短视频抓不了包,让我帮忙看看。
- 首先,我打开了charles,安装完证书配置完之后,打开app,发现app直接显示网络错误。
a.png
- 看来是用了证书校验。
通过对代码的分析,发现其用了quic协议。 - quic协议是什么
QUIC(Quick UDP Internet Connection)是谷歌制定的一种互联网传输层协议,它基于UDP传输层协议,同时兼具TCP、TLS、> HTTP/2等协议的可靠性与安全性,可以有效减少连接与传输延迟,更好地应对当前传输层与应用层的挑战。
如何bypass掉,使其能抓取到数据呢
对于该app禁止quic相关的so加载即可,该so是lib**cronet.so,通过ida也可以看到相关函数名。
image.png
-
由于直接hook System.loadlibrary会导致app崩溃。查看android源码,选择其内部调用的Runtime.loadLibrary0(ClassLoader loader, String libname)或者nativeLoad(String filename, ClassLoader loader,String librarySearchPath)
image.png -
编写xposed模块,对其一函数进行hook
image.png
模块生效后,打开app,发现已经能正常抓包了。
再仔细分析一下,发现其无非就是在so对证书进行校验。
第一反应就是有sslpinning,感觉挺简单的,但是几乎找了所有公开的unsslpinning脚本都无济于事, du
mp证书也如此。
对apk解包时发现里面有okhttp3,以为使用了okhttp3库,但hook后发现并不如此。
通过阅读大佬的文章 android逆向学习--绕过非标准http框架和非系统ssl库app的sslpinning
编写frida脚本对其进行sslpinning
image.png
通过spawn启动,测试成功,正常抓取app数据。