wireshark和tcpdump粗解

Wireshark - Note1

Color

​ 高亮的颜色系统,紫色表示TCP流量,蓝色代表UDP,黑色表示错误数据包,红色表示TCP重置或者SCTP ABORT,从视图中的着色规则看出。

​ 不过还是通过filter来筛选比较好,常见的筛选器包含指定传输协议,例如DNS、TCP、UDP等。

Filtering Packets

​ wireshark自带部分过滤规则,可以通过分析栏显示过滤器,使用默认存在的过滤规则。例如想要查看某些持续性的连接,可以查看追踪流程。选定需要查找的流,右键即可追踪。

​ 追踪数据流,如果是http流则可以看到很多详细的请求和响应数据。

实用过滤举例

  • 针对源IP或者目的IP、mac地址

    • ip.src == x.x.x.x
    • eth.dst == ff:ff:ff:ff:ff:ff
    • ip.dst == x.x.x.x
    • ip.addr == x.x.x.0/24
  • 针对网段

    • net 192.168.0.0/24
  • 针对协议

    • http or http2
    • http or telnet
    • arp or icmp
  • 针对端口

    • tcp.port == 80
    • udp.port >= 2040
  • 针对数据段长度

    • udp.length > 30
    • http.content_length <= 20
    • tcp.length (不存在tcp长度的filter)
  • 针对地址内容

    • http.request.uri matches “somethings”
    • http.response.uri matches “more”
    • http contains “api” (匹配整个数据包内的数据)
  • 实用逻辑

    • http or dns
    • http and ip.src == x.x.x.x
    • !(http) (非http)
  • 针对行为

    • http.request.method == “POST” (筛选请求方式)
    • http.request.method == “GET”
    • http.request.method == “PUT”
    • http.request.method {“POST” “GET”} (这种通用的多条件使用模式可以在其他条件中使用,例如 tcp.port in {443 8080 8090})
  • 针对Flags

    • tcp.flags & 0x02 (这里是tcp的flags字段中的值)

TcpDump tutorial

基础

常用范例

  • 列出可用于抓包的网络接口
1
tcpdump -D
  • 指定用于抓包的网络接口
1
tcpdump -i eth0
  • 抓TCP报文,并且在终端展示其ASCII内容
1
tcpdump -A tcp
  • 指定源或者目的 URL 或者 IP
1
tcpdump host 1.1.1.1
  • 指定源地址或者目的地址,配合指定的接口,指定端口
1
tcpdump -i eth0 src 1.1.1.1 and dst 2.2.2.2 and dst port 80
  • 筛选网段的报文
1
tcpdump net 1.1.1.0/24
  • 抓包并且保存到本地文件
1
tcpdump -w demo.pcap -c 2000 not port 22 # count = 2000
  • 打开本地报文文件进行分析
1
tcpdump -r demo.pcap

更多案例

  • 查看Hex输出
1
2
3
tcpdump -c 1 -X icmp

# output

  • 指定抓取data部分长度的包
1
tcpdump -A -s0 -port 80

-s0表示抓包data长度为任意内容,默认为65535。

  • 查看详细输出以及指定http get和post的包
1
tcpdump -s0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

我宁愿保存抓包文件,然后用wireshark分析。当然,我相信能力强的人精通这些筛选条件。

  • 查看端口范围和详细时间戳
1
tcpdump portrange 21-23 -tt
  • 查看http请求头报文内容
1
tcpdump -vvAls0 | grep 'User-Agent:'

总结

熟能生巧,不用的话也没有意义。