Charles、Fiddler、WireShark 抓包
在网络7层中,同层如果抓不到,就到更第一层去抓包!
协议层抓包(VPN抓包)
不使用HTTP代理而是VPN, VPN 代理层级更低一级!
缺点
容易被API检测, 也容易在网卡中检测出VPN
Kali 配置
需要wifi处于路由器上, 如果是主机上发射的wifi在虚拟机上是接收不到的
- 配置桥接模式
- 选择网卡, 设置桥接模式相当于让路由器也当把虚拟机当真机一样分配
Charles 配置
这里推荐使用 socks 抓包, 因为http是高层协议, socks 更第一级
charles 配置 https 抓包
证书
- 先链接vpn ,打开网址自动下载证书, 然后再在手机上手动安装用户级证书
- 安装完后会自动生成一个 xxx.0 的系统级证书在目录
/data/misc/user/00/cacerts-added
中 - 将证书拷贝到
/system/etc/security/cacerts/
中即可
postern 配置
配置代理
配置规则
选择 直连
双证书认证
- 找到本地证书(通常格式为
xx.p12
)当然是可以隐藏文件名的tree -NCfhl |grep -i p12
- 找到本地证书密码(密码在java或者so层)可以先在java层关键词搜索
// Frida hook 证书密码 function hook_KeyStore_load() { Java.perform(function () { var StringClass = Java.use("java.lang.String"); var KeyStore = Java.use("java.security.KeyStore"); KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) { printStack("KeyStore.load1"); console.log("KeyStore.load1:", arg0); this.load(arg0); }; KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) { printStack("KeyStore.load2"); console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null); this.load(arg0, arg1); }; console.log("hook_KeyStore_load..."); }); }
证书导入charles
创建一个数据库,账号密码自己记住就行
Socket 抓包
java socket hook 思路: 要使用 socket 方法传输,那么他必定要调用系统 socket库,否则无法完成 socket 通讯,所以我们以系统的视角出发,hook系统级函数跟踪即可
网络层抓包
俗称路由器抓包
网卡购置
- 便宜实惠(2.4Ghz):https://item.taobao.com/item.htm?spm=a1z09.2.0.0.3b7c2e8dUj6Zit&id=561021408894&_u=u3anqti56a8
- 5Ghz网卡:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.3b7c2e8dUj6Zit&id=588248424965&_u=u3anqtifcf6
- 锅盔网卡(2.4Ghz):https://detail.tmall.com/item.htm?spm=a1z10.5-b.w4011-18768440104.223.49421abcYJXOFA&id=520875620726&rn=6f76821d12105721be5586337b26676e&abbucket=20
配置wifi
- 在kali机插上无线网卡
802.11N
(最好是 Kali 免驱的) -
lsusb
执行看看有哪些驱动设备(是否有刚刚插入的) -
ifconfig
看看是否有刚刚插入的无线网卡 - 制作 wifi
nm-connection-editor
- 手机连接该wifi即可
保存抓包
- 驱动转储:使用
tcpdump
将经过网口驱动时的数据包转储下来,再使用Wireshark
进行分析; - 路由转储:自己做个路由器,运行
jnettop
,观察实时进过的流量和 IP,可以使用WireShark
实时抓包,也可以使用tcpdump
抓包后用WireShark
分析。
jnettop
按0
,1
,2
…来切换监控网卡WireShark
当然Kali
自带WireShark
可以通过 搜索过滤dns
,http
等关键词来过滤
查看端口是哪个程序在使用
- 例如在
jnettop
上看到 9999 端口流量在占用 - 进入
adb
输入netstat -tuulp|grep 9999
就可以看到是哪个包在使用
Fiddler 网页抓包
记住: 配置完后都需要重启
HTTPS
按照提示安装 SSL 证书
设置抓包类型
必须设置为可以远程捕获,因为要抓APP的包
开启网页抓包
火狐抓包
因为谷歌等浏览器是使用系统的代理,所以无需额外设置。
- 进入设置
- 选中高级
- 选择网络
- 选择链接设置
- 选择使用系统代理!
然后配置火狐可信任的证书
- 设置
- 高级
- 证书
- 查看证书
- 导入证书(证书在 Fiddler中导出)
Fiddler 手机端
安卓 7 以下
一。 获取本地IP 通常为192.
端口为配置的端口,默认 8888
二。在手机端配置
手机wifi设置上手动代理,配置上端口和IP
三。打开手机浏览器访问你的 IP:端口 来配置证书
打开页面有,点击最下面,下载 download 就可以导入了
安卓 7 以上
主要区别在于 https 证书必须放到系统目录才能正常使用
Fiddler WebSocket 抓包配置
加入代码如下
static function OnWebSocketMessage(oMsg: WebSocketMessage) {
// Log Message to the LOG tab
FiddlerApplication.Log.LogString(oMsg.ToString());
}
配置之后,如果有 websocket 请求101 的,双击进入。
Fiddler 提升
清除无用记录
可以选择清空非200请求、图片请求、等指定请求删除
自动编码转换
你可以设置自动解码
隐藏大量握手包
这些都是属于无用的握手包,我们隐藏掉
Rules - Hide CONNECTS 勾上即可
清除浏览器缓存
过滤想要信息
重发请求
选中请求 -- replay -- 操作类型
,这里还可以编辑后重发请求
父、子请求查看
有这么一个情况,我访问的是 666.cq.cn 这个网页,但是我想查看根据这个页面还访问了哪些子页面
右键–select–Child Request
当然通过子请求也可以同样方法查看父请求
比较不同请求以及相应文本比较
这个很方便的
- 下载 windiff
- 重新启动
- 选择要对比的请求链接,**
右键--Compare
**
不建议用默认8888端口
因为容易被检测到!
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!