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.选择菜单 文件 > 保存,将抓包结果保存到指定文件。