网络异常时抓包操作说明教程

Linux 环境下的抓包工具介绍:

Linux 环境下,通常通过 tcpdump 来进行抓包和分析。它是几乎所有 Linux 发行版本预装的数据包抓取和分析工具。

tcpdump 的用法如下:

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ] 
         [ -c count ] 
         [ -C file_size ] [ -G rotate_seconds ] [ -F file ] 
         [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ] 
         [ --number ] [ -Q in|out|inout ] 
         [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ] 
         [ -W filecount ] 
         [ -E spi@ipaddr algo:secret,... ] 
         [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] 
         [ --time-stamp-precision=tstamp_precision ] 
         [ --immediate-mode ] [ --version ] 
         [ expression ]

常见参数说明(区分大小写):

•  -s    设置数据包抓取长度。如果置为0,则表示自动选择合适的长度来抓取数据包。

•  -w   将抓包结果导出到文件,而不是在控制台进行分析和打印输出。

•  -i     指定需要监听的接口(网卡)。

• -vvv  输出详细的数据交互信息。

• expression  一个正则表达式,用作过滤报文的条件。主要包含如下几类:

• 关于类型的关键字:包括 host(主机),net(网络),port(端口)。

• 确定传输方向的关键字:包括 src(源),dst(目标),dst or src(源或目标),dst and src(源和目标)。

• 使用协议的关键字:包括 icmp,ip,arp,rarp,tcp,udp等类型。

常见用法和示例输出:

1.抓取指定网卡指定端口的交互数据

• 操作指令

tcpdump -s 0 -i eth0 port 22

• 示例输出

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:18:56.252835 IP 192.168.0.12.ssh > 39.109.125.69.64521: Flags [P.], seq 192:416, ack 1, win 502, options [nop,nop,TS val 958848763 ecr 1952537], length 224
14:18:56.362251 IP 39.109.125.69.64521 > 192.168.0.12.ssh: Flags [.], ack 192, win 254, options [nop,nop,TS val 1952552 ecr 958848727], length 0

2.抓取指定网卡发送给指定 IP 上指定端口的交互数据,并在控制台输出详细交互信息

• 操作指令

tcpdump -s 0 -i eth0 -vvv port 22

• 示例输出

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:21:59.111590 IP (tos 0x10, ttl 64, id 59051, offset 0, flags [DF], proto TCP (6), length 580)
    192.168.0.12.ssh > 39.109.125.69.64521: Flags [P.], cksum 0x679d (incorrect -> 0x73cf), seq 272:800, ack 1, win 502, options [nop,nop,TS val 959031621 ecr 1970822], length 528
14:21:59.241532 IP (tos 0x0, ttl 36, id 6843, offset 0, flags [DF], proto TCP (6), length 52)
    39.109.125.69.64521 > 192.168.0.12.ssh: Flags [.], cksum 0xc5b3 (correct), seq 1, ack 800, win 256, options [nop,nop,TS val 1970839 ecr 959031589], length 0

3.抓取发送至指定 IP 的 ping 交互数据,并在控制台输出详细交互信息

• 操作指令

tcpdump -s 0 -i eth0 -vvv dst 103.224.222.222 and icmp

• 示例输出

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:29:02.537561 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.12 > 103.224.222.222: ICMP echo request, id 30830, seq 12, length 64
14:29:03.537605 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.12 > 103.224.222.222: ICMP echo request, id 30830, seq 13, length 64
14:29:04.537571 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.12 > 103.224.222.222: ICMP echo request, id 30830, seq 14, length 64
14:29:05.537564 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.12 > 103.224.222.222: ICMP echo request, id 30830, seq 15, length 64

4.抓取系统内所有接口数据并保存到指定文件

• 操作指令

tcpdump -i any -s 0 -w test.cap

• 示例输出

tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes

Windows 环境下的抓包工具介绍

Windows 环境下,通常通过 Wireshark 来进行抓包和分析。它是 Windows下最流行的免费开源的数据包抓取和分析工具。

Wireshark抓包步骤:

1.安装后打开软件。

2.选择菜单 捕获 > 选项,弹出如下图所示WireShark 捕获接口配置图:

3.如上图所示,根据接口名称或对应的 IP 地址选定需要进行抓包的网卡,然后点击 开始 启动抓包。

4.一段时间后,选择菜单 捕获 > 停止,停止抓包。

5.选择菜单 文件 > 保存,将抓包结果保存到指定文件。