抓包原理
HTTPS即使安全,也是能够被抓包的,常见的抓包工具有:Charles、fildder等。
常用的HTTPS抓包方式是作为中间人,对客户端伪装成服务端,对服务端伪装成客户端。简单来说:
- 截获客户端的HTTPS请求,伪装成中间人客户端去向服务端发送HTTPS请求
- 接受服务端返回,用自己的证书伪装成中间人服务端向客户端发送数据内容。
具体过程如下图所示:
反反抓包策略
代理抓不到包的几种原因
1、请求有没有走代理
可以设置走自己的代理,安卓系统会优先走APP设定的代理
如何判断有没有走我们的代理:
设置 WIFI 代理后,关闭 Fiddler,如果 APP 还能正常访问,就是不走代理
解决方法:
ProxyDroid APP 全局代理 强制把IP转发到指定端口上
原理: 使用 iptable 命令 实现端口转发
也可以使用 Drony,是一个 VPN 软件
Drony 下载地址 https://files.cnblogs.com/files/lulianqi/Drony_102.apk
可以对手机上不同APP的流量进行单独配置。
Drony 配置
一、下载并安装到安卓手机上,http://www.appchina.com/app/org.sandroproxy.drony
二、打开Drony,并右滑至SETTING标签页,选择Networks,点击当前在用的wifi名,进入Network details设置页
三、网络详情设置
1、点击Proxy type,选择manual(手动)
2、点击Hostname,输入当前电脑的局域网IP,比如192.168.1.123
3、点击Port,输入抓包软件的端口号,比如8888
4、点击Filter default value,选择Direct all
5、返回 SETTINGS 点击Rules,进入Rules详情页,点击右上角的加号,进入Add filter rule,action选择Local proxy chain,Application选择需要抓包的应用,然后保存,返回主页
四、左滑到LOG标签页,点击底部到OFF按钮,启用Drony,同时确保Drony进程在后台不会被杀掉
2、ssl pining(ssl证书验证)
目前大部分是这种导致抓不到包
如何判断是 ssl sinning
ssl pinning 解决办法:
1.使用 Hook 手段 Hook APP 端网络请求库对 ssl 证书的判断方法
借助xposed 模块 justtrustme apk 地址:https://github.com/Fuzion24/JustTrustMe
它所做的事情就是将各种已知的的HTTP请求库中用于校验证书的API都进行Hook,使无论是否是可信证书的情况,校验结果返回都为正常状态,从而实现绕过证书检查的效果
借助frida 程序 DroidSSLUnpinning https://github.com/WooyunDota/DroidSSLUnpinning
2.逆向APP 扣出里面的证书 放到 charles 里,让 charles 使用真实证书做代理
3.部分 ssl pinning 失效的原因:
Hook 识别,APP 的网络请求库代码被混淆,或者大厂自己实现了一套网络请求库
解决方法:
逆向 APP ,找到证书验证的地方,修改 Xposed 的 justtrustme 或者 Frida 的DroidSSLUnpinning 代码,重新 Hook
4.双向认证
双向认证使用者很少,会影响服务器性能
客服端对服务端发来的证书做校验
真实的服务端也对客服端证书做校验
如何判断是双向验证:
当做了ssl unpinning后,报如下错误:
双向证书解决方法:
客服端校验任然使用SSL unPinning方法
服务端校验,需把APP里的证书导入到代理抓包软件中,让代理抓包工具使用真实的APP证书。charles 比较方便配置
如何找到APP里的证书
反编译 APP 在 assert 文件夹里有 .p12 .pem 之类文件 cer ssl
反编译后,在源代码里大量搜索
Hook 监听Assert文件夹 知道读了哪些文件
可能有密码 Hook java.security.KeyStore 查看密码
标签:证书,APP,网络,代理,ssl,抓包,服务端 来源: https://www.cnblogs.com/kai-/p/13657338.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。