**
**
Fiddler, charles
能抓http/https/websocket
属于应用层
优点:配置简单,抓取解析ssl
方便
缺点:app
对代理抓包的检测越发厉害
https
:http
是明文传播,易被修改,易被拦截,网页弹广告
https
实在http
基础上加了一个安全层
https
特点:
CA Certificate Authority
)做身份校验,防止数据被截获,只有合法证书持有者才能读取数据HTTP OVER SSL
传输数据要先SSL
加密处理
ssl
握手协议
先商量好加密方式
交换证书
用证书加密
正式开始发送数据(用证书来给数据加密)
Client Hello
发给服务端:一串随机数 和 客户端支持哪些加密算法 一般是RSA
加密Server Hello
回客户端:一串随机数 和 确定使用哪种加密算法Certificate
: 服务端把要公匙证书发给客户端Client key Exchange
: 客户端把自己的证书又发给服务端Session Ticket
:开始传输数据/用key 给http数据加密 传输给服务端代理抓不到包的几种原因
可以设置走自己代理,安卓系统会优先走APP
设定的代理
http.route.default-proxy
如何判断没有走我们的代理:
设置wifi
代理后 关闭fiddler
如果APP
还能正常访问 就是不走代理
ProxyDroid APP
全局代理 强制把IP
转发到指定端口上
原理: 使用 iptable
命令 实现端口转发
mumu
虚拟器iptable
会报错
案例:mm
应用市场
APP
对服务端证书做校验 校验服务器的证书和域名。/这也叫单向认证
Fiddler/Charles
等的证书肯定是校验不过的
回看 中间人攻击 图解 和 SSL
层握手协议
APP
做ssl pining
的几种方式:
举例Python requests
库对ssl
的校验
requests.get(url, timeout=1, verify=false)
Python
requests
urllib
urlib3
aiohttp
HttpsURLConnection
okhttp
webview ssl pinning
Native SSL
Hook
手段 Hook APP
端网络请求库对 ssl
证书的判断方法justtrustme apk
地址:https://github.com/Fuzion24/JustTrustMeDroidSSLUnpinning
https://github.com/WooyunDota/DroidSSLUnpinningHook
失败,APP
的网络请求库代码被混淆,或者大厂自己实现了一套网络请求库
逆向APP
,找到证书验证的地方,修改xposed
的 justtrustme
或者 frida
的DroidSSLUnpinning
代码,
重新Hook
客服端对服务端发来的证书做校验
真实的服务端也对客服端证书做校验
客服端校验任然使用SSL unPinning
方法
服务端校验,需把APP
里的证书导入到代理抓包软件中,让代理抓包工具使用真实的APP
证书。charles
比较方便
配置
反编译APP
在assert
文件夹里有.p12 .pem
之类文件cer ssl
反编译后,在源代码里大量搜索
Hook
监听Assert
文件夹 知道读了哪些文件
可能有密码 Hook java.security.KeyStore
查看密码
不需要对客服端做改变(设置代理IP
),是对网卡抓包
能抓传输层/网络层 抓TCP
包
抓经过网卡的所有TCP
包
跟代理抓包的区别
如何抓手机上的数据:
在电脑上开wifi
热点,手机联电脑的wifi
热点,共用一个网卡
360wifi
热点 http://wifi.360.cn/easy/pc/
安卓虚拟机可以直接抓包,不需要热点
wireshark
演示wireshark
如何过滤数据包
根据目的IP抓包
ip.dst == 192.168.0.1
ip.addr == 192.168.0.1
按端口过滤
tcp.port == 80
tcp.port == 443
按协议过滤
ssl
关联过滤
ssl and ip.addr
抓https
需要把ssl
证书导入到wireshark
,不然没法解析https
,这个操作难度较大
tcp以
上的数据都能抓,http/https/socket
等
Hook
域名 把https
改成 http
让app
强行发http
包,请求会失败,抓不到response
数据,但是能抓到请求包
通用性太差
Hook
网络请求库请求前打印出请求参数,响应后打印出返回数据
1.安卓7.0(包括7.0)以后,安卓系统不再信任用户安装的证书。(例如 fiddler/charles
的代理抓包证书) mumu
模拟器
(1)root
手机,把代理证书放到系统证书根目录下
用户CA
证书目录
/data/misc/user/0/cacerts-added
系统CA
证书目录
/system/etc/security/cacerts
问题:
有的手机root /system
分区是只能读 仍然不能把证书放到系统根目录, 比如魅族pro5
df
命令
mount -o rw,remount /system
(2) hook
系统方法,强行让系统信任用户证书:
比如:使用xposed
框架的justtrustme
模块 和 frida
的DroidSSLUnpinning
1.优先使用安卓系统低版本抓包
优先使用安卓4.0 5.0 6.0
抓包
2.优先使用APP
低版本抓包
比如微信7.0
以下 在安卓4.0-6.0
上 容易抓包微信小程序
优先使用能用的APP
最低版本
APP历史版本:
https://wap.pp.cn/
apkpure.com
当安卓抓包很艰难时,试试iOS
抓包