几种原因"/>
app抓不到包的几种原因
1 ssl pining(ssl证书验证)
单向认证
APP对服务端证书做校验 校验服务器的证书和域名。
Fiddler/Charles等的证书肯定是校验不过的
Charles安装配置:
APP做ssl pining的几种方式:
举例Python requests库对ssl的校验
requests.get(url, timeout=1, verify=false)
Python的几种网络请求方式
requestsurlliburlib3aiohttp
Java的几种网络请求方式
HttpsURLConnection okhttp webview ssl pinningNative SSL
如何判断是ssl pinning:
ssl pinnin解决办法:
1)使用Hook手段 Hook APP端网络请求库对 ssl证书的判断方法
-
借助xposed 模块 justtrustme apk 地址:
JustTrustMe.apk 是一个用来禁用、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK 中所有用于校验 SSL 证书的 API 都进行了 Hook,从而绕过证书检查。xposed的54的可以运行,高版本没有测试,可以自行测试。
注意:设置成功后需要重启设备。 -
借助frida 程序 DroidSSLUnpinning
2)逆向APP 扣出里面的证书 放到charles里 让charles使用真实证书做代理
示例:安吉星
部分 ssl pinning 失效的原因:
Hook 失败,APP的网络请求库代码被混淆,或者大厂自己实现了一套网络请求库
解决办法:
1、逆向APP,找到证书验证的地方,将证书导入抓包软件
2、修改xposed 的 justtrustme为JustMePlush(自适应混淆) 或者 frida的DroidSSLUnpinning 代码, 重新Hook
双向认证
客服端对服务端发来的证书做校验, 真实的服务端也对客服端证书做校验。
如何判断是双向验证:soul app
当做了ssl unpinning后,报如下错误:
双向认证解决办法:
客服端校验任然使用SSL unPinning方法
服务端校验,需把APP里的证书导入到代理抓包软件中,让代理抓包工具使用真实的APP证书。charles 比较方便 配置
示例:soul
如何找到APP里的证书
反编译APP 在assert文件夹里有.p12 .pem之类文件cer ssl反编译后,在源代码里大量搜索Hook 监听Assert文件夹 知道读了哪些文件可能有密码 Hook java.security.KeyStore 查看密码
参考:
.html
=3.1.1.3006&platform=win
更多推荐
app抓不到包的几种原因
发布评论