tcpdump抓包分析详解,tcpdump抓包内容详解
tcpdump 表达式由一个或多个“单元”组成,每个单元通常包含一个ID 限定符和一个ID(数字或名称)。共有三个修饰符。
(1).type:指定ID的类型。
可能的值为主机/网络/端口/端口范围。例如,“主机foo”、“net 128.3”、“端口20”、“端口范围6000-6008”。默认类型是主机。
(2).dir:指定ID的方向。
可能的值包括src/dst/src或dst/src和dst。默认为src 或dst。例如,“src foo”表示源主机为foo 的数据包,“dst net 128.3”表示目标网络为128.3 的数据包,“src 或dst port 22”表示源或目标端口为22 的数据包。目标端口是22.Data Pack。
(3).proto:限制通过指定协议匹配的报文类型。
常用的协议有tcp/udp/arp/ip/ether/icmp。如果未指定协议类型,则匹配所有可能的类型。例如,“tcp 端口21”、“udp 端口范围7000-7009”。
因此,基本表示单元格式为“proto dir type ID”。
除了由修饰符和ID组成的表达式单元外,还有网关、广播、less、greater、算术表达式等关键字表达式单元。
可以使用运算符\'和//或/||/not/!\'连接表达式单元,形成复杂的条件表达式。例如,“主机是foo,不是端口ftp,不是端口ftp-data”。这意味着过滤后的数据包必须满足要求:host为foo,port为ftp(端口21),而不是ftp。 -data (端口20)\' ', 常用端口到名称的映射可以在Linux 系统上的/etc/service 文件中找到。
另外,可以省略相同的修饰符。例如,“tcp dst port ftp 或ftp-data 或域”和“tcp dst port ftp 或tcp dst port ftp-data 或tcp dst 端口域”是相同的。含义和含义数据包的协议是tcp,目标端口是ftp或ftp-data或domain(端口53)。
方括号\'()\' 可用于更改表达式的优先级,但方括号由shell 解释,因此使用反斜杠\'\\' 转义为\'\(\ )\',它必须如有必要,也可以用引号引起来。
1.3 tcpdump 示例
注意tcpdump只能捕获流经本机的数据包。
(1).默认启动
tcp转储
默认情况下,当您直接启动tcpdump 时,它会监视流经第一个网络接口(非LO 端口)的所有数据包。这样得到的结果很多,而且滚动速度非常快。
(2).监控指定网络接口上的数据包。
tcpdump -i eth1
如果不指定网卡,默认情况下tcpdump只监控第一个网络接口(例如eth0)。
(3).监控指定主机的数据包(如所有进出龙帅的数据包)。
tcpdump主机龙帅
(4).输出helios-hot或helios-ace之间通信的数据包。
tcpdump 主机helios 和\(hot 或ace\)
(5).输出ace与其他主机之间通信的IP数据包。但是,不包括带有helios 的数据包。
tcpdump ip 主机helios 而不是ace
(6).拦截主机hostname发送的所有数据。
tcpdump src 主机的主机名
(7).监控所有发送到主机hostname的数据包。
tcpdump 目标主机主机名
(8).监控指定主机和端口上的数据包。
tcpdump tcp 端口22 和主机的主机名
(9).监控本机udp 123端口(123是ntp的服务端口)
tcpdump udp 端口123
(10).监控指定网络上的数据包,包括本机与192.168网段通信的数据包。 “-c 10”表示仅获取10 个数据包。
tcpdump -c 10 网192.168
(11).打印所有经过网关snap的FTP数据包(注意表达式用单引号括起来,这样可以防止shell错误地解析括号。)。
shell tcpdump '网关快照(端口ftp 或ftp 数据)'
(12). 捕获ping包
[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp
tcpdump: 详细输出被抑制。使用-v 或-vv 进行完整协议解码
监听eth0,链路类型EN10MB(以太网),捕获大小65535 字节
12:11:23.273638 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16422,序列10,长度64
12:11:23.273666 IP 192.168.100.62 192.168.100.70: ICMP 回显回复,ID 16422,序列10,长度64
12:11:24.356915 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16422,序列11,长度64
12:11:24.356936 IP 192.168.100.62 192.168.100.70: ICMP 回显回复,ID 16422,序列11,长度64
12:11:25.440887 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16422,序列12,长度64
捕获的数据包
过滤器收到的数据包
内核丢弃的数据包
如果要显式捕获主机192.168.100.70 对该计算机的ping,请使用and 运算符。
[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp 和src 192.168.100.62
tcpdump: 详细输出被抑制。使用-v 或-vv 进行完整协议解码
监听eth0,链路类型EN10MB(以太网),捕获大小65535 字节
12:09:29.957132 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16166,序列1,长度64
12:09:31.041035 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16166,序列2,长度64
12:09:32.124562 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16166,序列3,长度64
12:09:33.208514 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16166,序列4,长度64
12:09:34.292222 IP 192.168.100.70 192.168.100.62: ICMP 回显请求,ID 16166,序列5,长度64
捕获的数据包
过滤器收到的数据包
内核丢弃的数据包
注意不能直接写icmp src 192.168.100.70,因为icmp协议不支持直接应用主机类型。
(13).捕获本地22端口数据包。
[root@server2 ~]# tcpdump -c 10 -nn -i eth0 tcp 目标端口22
tcpdump: 详细输出被抑制。使用-v 或-vv 进行完整协议解码
监听eth0,链路类型EN10MB(以太网),捕获大小65535 字节
12:06:57.574293 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 535528834,win 2053,长度0
12:06:57.629125 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 193,win 2052,长度0
12:06:57.684688 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 385,win 2051,长度0
12:06:57.738977 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 577,win 2050,长度0
12:06:57.794305 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 769,win 2050,长度0
12:06:57.848720 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 961,win 2049,长度0
12:06:57.904057 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 1153,win 2048,长度0
12:06:57.958477 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 1345,win 2047,长度0
12:06:58.014338 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 1537,win 2053,长度0
12:06:58.069361 IP 192.168.100.1.5788 192.168.100.62.22: 标志[.],ack 1729,win 2052,长度0
捕获的数据包
过滤器收到的数据包
内核丢弃的数据包
(14). 分析数据包数据
[root@server2 ~]# tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp 目标端口22
tcpdump: 监听eth0,链接类型EN10MB(以太网),捕获大小65535 字节
12:15:54.788812 IP(tos0x0、ttl 64、id 19303、偏移量0、标志[DF]、proto TCP (6)、长度40)
192.168.100.1.5788 192.168.100.62.22: TCP 0
0x0000: 000c 2908 9234 0050 56c0 0008 0800 4500 .).4.PV.E。
0x0010: 0028 4b67 4000 4006 a5d8 c0a8 6401 c0a8 .(公斤@.@.d.
0x0020: 643e 169c 0016 2426 5fd6 1fec 2b62 5010 d.$_.+bP。
0x0030: 0803 7844 0000 0000 0000 0000 .xD .
12:15:54.842641 IP(tos0x0、ttl 64、id 19304、偏移量0、标志[DF]、proto TCP (6)、长度40)
192.168.100.1.5788 192.168.100.62.22: TCP 0
0x0000: 000c 2908 9234 0050 56c0 0008 0800 4500 .).4.PV.E。
0x0010: 0028 4b68 4000 4006 a5d7 c0a8 6401 c0a8 .(Kh@.@.d.
0x0020: 643e 169c 0016 2426 5fd6 1fec 2d62 5010 d.$_.-bP。
0x0030: 0801 7646 0000 0000 0000 0000 .vF.
捕获的数据包
过滤器收到的数据包
内核丢弃的数据包
总的来说,tcpdump是一种比较简单的基本抓包方法。只需掌握有限数量的选项(-nn -XX -vvv -i -c -q)并组合表达式即可。