过滤规则
过滤 IP 和 mac 地址
ip 改成 eth,就是过滤 mac 地址
ip.addr == 8.8.8.8
ip.src == 8.8.8.8
ip.dst == 8.8.8.8
ip.addr == 10.0.0.0/16
过滤端口
下面的 tcp 可以改成 udp
tcp.port == 9090
tcp.dstport == 9090
tcp.srcport == 9090
tcp.port >=1 and tcp.port <= 80
根据长度过滤
tcp.len >= 7 (tcp data length)
ip.len == 88 (except fixed header length)
udp.length == 26 (fixed header length 8 and data length)
frame.len == 999 (all data packet length)
HTTP 数据包过滤
http.host == xxx.com
// 过滤 host
http.response == 1
// 过滤所有的 http 响应包
http.response.code == 302
// 过滤状态码 202
http.request.method==POST
// 过滤 POST 请求包
http.cookie contains xxx
// cookie 包含 xxx
http.request.uri==“/robots.txt”
//过滤请求的uri,取值是域名后的部分
http.request.full_uri==“http://1.com”
// 过滤含域名的整个url
http.server contains “nginx”
//过滤http头中server字段含有nginx字符的数据包
http.content_type == “text/html”
//过滤content_type是text/html
http.content_encoding == “gzip”
//过滤content_encoding是gzip的http包
http.transfer_encoding == “chunked”
//根据transfer_encoding过滤
http.content_length == 279
http.content_length_header == “279”
//根据content_length的数值过滤
http.request.version == “HTTP/1.1”
//过滤HTTP/1.1版本的http包,包括请求和响应
可用协议
tcp、udp、arp、icmp、http、smtp、ftp、dns、msnms、ip、ssl、oicq、bootp
抓HTTPS明文包
市面上的主流浏览器实现的 HTTP2 都是基于TLS的,也就是说要分析HTTP2报文得先过了TLS这一关,不然只能分析一堆加密的乱码。
wireshark支持两种方式来解密SSL/TLS报文:
- 通过网站的私钥
- 通过浏览器的将 TLS 对称加密秘保存在外部文件中,以供 wireshark 加解密
通过网站的私钥
如果你想抓取的网站是你自己的,那么可以利用这种方式,因为这需要使用网站生成证书使用的私钥进行解密,就是那个 nginx 上配置的ssl_certificate_key对应的私钥文件,把它添加到 wireshark 配置中:
然后通过wireshark就可以看到明文了:
通过上图可以看到,我通过curl访问的 https 协议的 URL,在配置了该服务器对应的私钥后可以抓取到对应的 HTTP 明文。
不过缺点也非常明显,只能分析自己持有私钥的网站,如果别人的网站就分析不了了,所幸的是还有第二种方案来支持。
通过浏览器的 SSL 日志功能
目前该方案只支持Chrome和Firefox浏览器,通过设置SSLKEYLOGFILE环境变量,可以指定浏览器在访问SSL/TLS网站时将对应的密钥保存到本地文件中,有了这个日志文件之后wireshake就可以将报文进行解密了。
首先设置SSLKEYLOGFILE环境变量:
SSLKEYLOGFILE=/Users/zhy/work/SSL/sslkey.log
Mac OSX通过命令行启动chrome传入参数
sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=/Users/zhy/work/SSL/sslkey.log
配置wireshake,首选项->Protocls->TLS:
将第一步中指定的文件路径配置好
重启浏览器,进行抓包:
抓取手机
方案一:共享PC网络
把手机用USB连接到电脑
关闭手机的蜂窝网络和wifi网络,手机此时还能上网,
刷新wireshark,发现多出一个有流量的网卡
方案二:创建虚拟网卡RVI接口
过程全程需要把手机用USB连接到电脑
RVI介绍
苹果在 iOS 5 中新引入了“远程虚拟接口(Remote Virtual Interface,RVI)”的特性,可以在 Mac 中建立一个虚拟网络接口来作为 iOS 设备的网络栈,这样所有经过 iOS 设备的流量都会经过此虚拟接口。此虚拟接口只是监听 iOS 设备本身的协议栈(但并没有将网络流量中转到 Mac 本身的网络连接上),所有网络连接都是 iOS 设备本身的,与 Mac 电脑本身联不联网或者联网类型无关。iOS设备本身可以为任意网络类型(WiFi/xG),这样在 Mac 电脑上使用任意抓包工具(tcpdump、Wireshark、CPA)抓取 RVI 接口上的数据包就实现了对 iPhone 的抓包。
查看已有的接口
ifconfig -l
创建虚拟网卡
获取手机UDID,可以用爱思助手查看
rvictl -s 00008110-001C14A03AD3801E
可以使用rvictl -x [UDID]命令在需要的时候去除网卡。
rvictl -x 00008110-001C14A03AD3801E
查看RVI列表
rvictl -l
启动wireshark找对应的网卡抓包
iPhone13或提示不支持混杂模式,不影响抓包
评论区