Wireshark网络分析工具
Wireshark基础
过滤的用法
需要区分两种过滤语言
Capture Filter: Berkley Packet Filter
示例: host xulizhao.com and port 443
Display Filter
常用过滤器
# 地址/端口
ip.addr == 10.0.0.1
ip.src ==
ip.src_host ==
tcp.port==4000
tcp.port == 8080 and ip.addr==127.0.0.1
# HTTP
http
http.request # 显示所有GET请求
# 其他
# 显示所有 TCP resets
tcp.flags.reset==1
# 显示所有retransmissions
tcp.analysis.retransmission
tcp.analysis.lost_segment
tcp.analysis.ack_lost_segment
# 显示包含关键字 traffic 的包
tcp contains traffic
frame contains ...
配置
如果SSL端口不是默认的443端口,需要修改配置项以显示TLS/SSL协议抓包:
位于 Edit -> Preferences -> Protocols -> HTTP -> SSL/TLS Ports,把值修改为 443,8443
知识点
- Wireshark的时间戳存在偏差,非标准时间
- 每个包在Info存在唯一标识
- DUP ACK/TCP Retransmission 是正常的
- 协议
- 802.11即以太网,在frames
- Internet Protocol/IP: 包含在每个以太frame,在packets
- Transmission Control Protocol/TCP: 包在每个IP packet,在segments
- Transport Layer Security/TLS: 通过TCP字节流,在records/messages
- Hypertext Transfer Protocol/HTTP: 在加密的TLS连接中携带,一般不可见
- 名词解释
- TCP Spurious Retransmission: 发送方重传了接收方已确认的数据, 通常因为发送方认为该数据包丢失而重发.
- TCP post number reused: 可能意味网络存在重复包.
编辑/合并文件
editcap -c 10000 in.pcap out.pcap
editcap -A "2017-05-11 12:00:00" -B "2017-05-11 13:00:00" in.pcap out.pcap
mergecap out.pcap in1.pcap in2.pcap
高级用法
解密SSL抓包
- 使用服务端私钥:
- Edit → Preferences - Protocols → TLS;
- RSA keys list: 需要从服务器导出证书,不支持DHE加密算法 (填写 “any” 应用到所有IP地址)
- 可在ServerHello中搜索是否包含EDH或EECDH,以确定密钥交换算法
- SSLKEYLOGFILE: 只支持Chrome、Firefox,但支持DHE
注: DHE算法符合完全正向保密协议/perfect forward secrecy,中间人即使得到私钥也破解不了密文。
流程图
[Statistics]-[Flow Graph]
相关工具
tcpdump
sudo tcpdump -n -s 4096 -w l.log port 80
常用选项:
- -n: 不做地址和端口的数字/名称转换
- -i: 捕获的网卡名
- -w: 把原始包写到文件, 而不是解析并打印(默认行为). 可以用-r选项再次打印
tcpflow
tcpflow, 轻量级网络包分析