tcpdump抓包ftp协议_tcpdump抓包使用方法详解

tcpdump抓包ftp协议_tcpdump抓包使⽤⽅法详解tcpdump抓包分析详解
[root@linux ~]#tcpdump [-nn] [-i 接⼝] [-w 储存档名] [-c 次数]
[-Ae][-qX] [-r 档案] [所欲撷取的数据内容]
参数:
-nn:直接以 IP 及 port number 显⽰,⽽⾮主机名与服务名称
-i :后⾯接要『监听』的⽹络接⼝,例如 eth0, lo, ppp0 等等的界⾯;
-w :如果你要将监听所得的封包数据储存下来,⽤这个参数就对了!后⾯接档名
-c :监听的封包数,如果没有这个参数, tcpdump 会持续不断的监听,
直到使⽤者输⼊[ctrl]-c 为⽌。
-A :封包的内容以 ASCII 显⽰,通常⽤来捉取WWW 的⽹页封包资料。
-e :使⽤资料连接层 (OSI 第⼆层) 的 MAC 封包数据来显⽰;
-
q :仅列出较为简短的封包信息,每⼀⾏的内容⽐较精简
-X :可以列出⼗六进制 (hex) 以及 ASCII 的封包内容,对于监听封包内容很有⽤
-r :从后⾯接的档案将封包数据读出来。那个『档案』是已经存在的档案,
并且这个『档案』是由-w 所制作出来的。
所欲撷取的数据内容:我们可以专门针对某些通讯协议或者是 IP 来源进⾏封包撷取,
那就可以简化输出的结果,并取得最有⽤的信息。常见的表⽰⽅法有:
'host foo', 'host 127.0.0.1'
:针对单部主机来进⾏封包撷取
'net 192.168' :针对某个⽹域来进⾏封包的撷取;
'src host 127.0.0.1' 'dst net
192.168':同时加上来源(src)或⽬标(dst)限制
陶瓷缸套'tcp port 21':还可以针对通讯协议侦测,如 tcp, udp,
arp, ether 等
还可以利⽤ and 与 or 来进⾏封包数据的整合显⽰呢!
范例⼀:以 IP 与 portnumber 捉下 eth0 这个⽹络卡上的封包,持续3 秒
[root@linux ~]#tcpdump -i eth0 -nn
tcpdump: verboseoutput suppressed, use -v or -vv for full
protocol decode
listening on eth0,link-type EN10MB (Ethernet), capture size 96
bytes
01:33:40.41 IP192.168.1.100.22 > 192.168.1.11.1190: P
116:232(116) ack 1 win 9648
01:33:40.41 IP192.168.1.100.22 > 192.168.1.11.1190: P
232:364(132) ack 1 win 9648
<==按下 [ctrl]-c 之后结束
6680
packetscaptured
<==捉下来的封包数量
14250 packetsreceived by filter
<==由过滤所得的总封包数量
7512 packetsdropped by kernel
<==被核⼼所丢弃的封包
如果你是第⼀次看 tcpdump 的 man page 时,肯定⼀个头两个⼤,因为 tcpdump
⼏乎都是分析封包的表头数据,⽤户如果没有简易的⽹络封包基础,要看懂粉难吶! 所以,⾄少您得要回到⽹络基础⾥⾯去将 TCP 封包的表头数据理解理解才好啊! ^_^!⾄于那个范例⼀所产⽣的输出范例中,我们可以约略区分为数个字段,
我们以范例⼀当中那个特殊字体⾏来说明⼀下:
01:33:40.41:这个是此封包被撷取的时间,『时:分:秒』的单位;
IP:透过的通讯协议是 IP ;
192.168.1.100.22> :传送端是 192.168.1.100 这个 IP,⽽传送的 port number
为 22,您必须要了解的是,那个⼤于 (>) 的符号指的是封包的传输⽅向喔!
192.168.1.11.1190:接收端的 IP 是 192.168.1.11, 且该主机开启 port 1190
来接收;
P 116:232(116):这个封包带有 PUSH 的数据传输标志, 且传输的数据为整体数据的 116~232
byte,所以这个封包带有116 bytes 的数据量;
ack 1 win 9648:ACK与 Window size 的相关资料。
最简单的说法,就是该封包是由 192.168.1.100 传到 192.168.1.11,透过的 port 是由 22 到
1190 , 且带有 116 bytes 的数据量,使⽤的是PUSH 的旗标,⽽不是 SYN 之类的主动联机标志。
呵呵!不容易看的懂吧!所以说,上头才讲请务必到 TCP 表头数据的部分去瞧⼀瞧的啊!
再来,⼀个⽹络状态很忙的主机上⾯,你想要取得某部主机对你联机的封包数据⽽已时, 使⽤ tcpdump
配合管线命令与正规表⽰法也可以,不过,毕竟不好捉取! 我们可以透过 tcpdump
的表⽰法功能,就能够轻易的将所需要的数据独⽴的取出来。 在上⾯的范例⼀当中,我们仅针对 eth0 做监听,所以整个eth0
接⼝上⾯的数据都会被显⽰到屏幕上, 不好分析啊!那么我们可以简化吗?例如只取出 port 21 的联机封包,可以这样做:[root@linux ~]#tcpdump -i eth0 -nn port 21
tcpdump: verboseoutput suppressed, use -v or -vv for full
protocol decode
listening on eth0,link-type EN10MB (Ethernet), capture size 96
bytes
01:54:37.96 IP192.168.1.11.1240 > 192.168.1.100.21: . ack 1
win 65535
01:54:37.96 IP192.168.1.100.21 > 192.168.1.11.1240: P
1:21(20) ack 1 win 5840
01:54:38.12 IP192.168.1.11.1240 > 192.168.1.100.21: . ack 21
win 65515
01:54:42.79 IP192.168.1.11.1240 > 192.168.1.100.21: P
1:17(16) ack 21 win 65515
01:54:42.79 IP192.168.1.100.21 > 192.168.1.11.1240: . ack 17
win 5840
01:54:42.79 IP192.168.1.100.21 > 192.168.1.11.1240: P
21:55(34) ack 17 win 5840
这样就仅提出 port 21 的信息⽽已,且仔细看的话,你会发现封包的传递都是双向的, client
端发出『要求』⽽server 端则予以『响应』,所以,当然是有去有回啊! ⽽我们也就可以经过这个封包的流向来了解到封包运作的过程。举例来说:
数字迎新系统
我们先在⼀个终端机窗⼝输⼊『 tcpdump -i lo -nn 』的监听,
再另开⼀个终端机窗⼝来对本机 (127.0.0.1) 登⼊『sshlocalhost』
那么输出的结果会是如何?
[root@linux ~]#tcpdump -i lo -nn
1 tcpdump: verbose output suppressed, use -vor -vv for
育苗袋
full protocol decode
2 listening on lo, link-type EN10MB (Ethernet),capture
size 96 bytes
3 11:02:54.253777 IP 127.0.0.1.32936 >127.0.0.1.22: S
933696132:933696132(0)
win 32767
0,nop,wscale 2>
4 11:02:54.253831 IP 127.0.0.1.22 >127.0.0.1.32936: S
920046702:920046702(0)
ack 933696133 win 32767
wscale 2>
5 11:02:54.253871 IP 127.0.0.1.3293
6 >127.0.0.1.22: .
ack 1 win 8192
nop,timestamp 236681316 236681316>
6 11:02:54.272124 IP 127.0.0.1.22 >127.0.0.1.32936: P
1:23(22) ack 1 win 8192
7 11:02:54.272375 IP 127.0.0.1.32936 >127.0.0.1.22: .
ack 23 win 8192
nop,timestamp 236681334 236681334>
上表显⽰的头两⾏是 tcpdump 的基本说明,然后:
第 3 ⾏显⽰的是『来⾃client 端,带有 SYN 主动联机的封包』,
rca插座
第 4 ⾏显⽰的是『来⾃server 端,除了响应 client 端之外(ACK),还带有 SYN 主动联机的标志;
第 5 ⾏则显⽰ client端响应 server 确定联机建⽴(ACK)
第 6 ⾏以后则开始进⼊数据传输的步骤。
如果我们使⽤ tcpdump 在 router 上监听『明码』的传输数据, 例如 FTP 传输协议,我们先在主机端下达『
tcpdump -i lo port 21 -nn -X 』然后再以 ftp 登⼊本机,并输⼊账号与密码,
结果你就可以发现如下的状况:
[root@linux ~]#tcpdump -i lo -nn -X 'port 21'
0x0030: 0e2e 0b61 3232 3020 2876 7346
5450 6420 ...a220.(vsFTPd.
0x0030: 0e2e 0b67 5553 4552 2064 6d74 7361
690d ...gUSER.dmtsai.
0x0030: 0e2e 1b38 5041 5353 206d 7970 6173
7377 ...passw
厚板冲裁上⾯的输出结果FTP 软件使⽤的是vsftpd ,并且使⽤者输⼊ dmtsai
这个账号名称,且密码是mypasswordisyou
为了让⽹络接⼝可以让 tcpdump 监听,所以执⾏tcpdump 时⽹络接⼝会启动在 『错乱模式
(promiscuous)』,所以你会在 /var/log/messages ⾥⾯看到很多的警告讯息,
通知你说你的⽹络卡被设定成为错乱模式!别担⼼,那是正常的。 ⾄于更多的应⽤,请参考 man tcpdump
例题:如何使⽤ tcpdump 监听 (1)来⾃ eth0 适配卡且 (2)通讯协议为 port22
,(3)⽬标来源为192.168.1.100 的封包资料?
答: tcpdump -i eth0 -nn 'port 22 and srchost
192.168.1.100'
arp故障
故障现象:局域⽹中的⼀台采⽤solaris操作系统的服务器A-SERVER⽹络连接不正常,从任意主机上都⽆法ping通该服务器。
排查:⾸先检查系统,系统本⾝⼯作正常,⽆特殊进程运⾏,cpu,内存利⽤率正常,⽆挂接任何形式的防⽕墙,⽹线正常。
此时我们借助tcpdump来进⾏故障定位,⾸先我们将从B-CLIENT主机上执⾏ping命令,发送icmp数据包给A-SERVER,如下:
[root@redhat log]# ping A-SERVER
PING A-SERVER from B-CLIENT : 56(84) bytes of data.
此时在A-SERVER启动tcpdump,对来⾃主机B-CLIENT的数据包进⾏捕获。
A-SERVER# tcpdump host B-CLIENT
tcpdump: listening on hme0
16:32:32.611251 arp who-has A-SERVER tell B-CLIENT
16:32:33.611425 arp who-has A-SERVER tell B-CLIENT
16:32:34.611623 arp who-has A-SERVER tell B-CLIENT
我们看到,没有收到预料中的ICMP报⽂,反⽽捕获到了B-CLIENT发送的arp⼴播包,由于主机B-CLIENT⽆法利⽤arp得到服务器A-SERVER的地址,因此反复询问A-SERVER的MAC地址,由此看来,⾼层的出问题的可能性不⼤,很可能在链路层有些问题,先来查查主机A-SERVER的arp表:
A-SERVER# arp -a
Net to Media Table
Device IP Address Mask Flags Phys Addr
------ -------------------- --------------- -----
---------------
hme0 netgate 255.255.255.255 00:90:6d:f2:24:00
hme0 A-SERVER 255.255.255.255 S 00:03:ba:08:b2:83
hme0 BASE-ADDRESS.MCAST.NET 240.0.0.0 SM 01:00:5e:00:00:00
请注意A-SERVER的Flags位置,我们看到了只有S标志。我们知道,solaris在arp实现中,arp的flags需要设置P标志,才能响应ARP
requests。
⼿⼯增加p位
A-SERVER# arp -s A-SERVER 00:03:ba:08:b2:83 pub
此时再调⽤arp -a看看
实木花盆A-SERVER# arp -a
Net to Media Table
Device IP Address Mask Flags Phys Addr
------ -------------------- --------------- -----
---------------
hme0 netgate 255.255.255.255 00:90:6d:f2:24:00
hme0 A-SERVER 255.255.255.255 SP 00:03:ba:08:b2:83
hme0 BASE-ADDRESS.MCAST.NET 240.0.0.0 SM 01:00:5e:00:00:00
我们看到本机已经有了PS标志,此时再测试系统的⽹络连接恢复正常,问题解决!
例2:netflow软件问题
故障现象:在新装的⽹管⼯作站上安装cisco

本文发布于:2024-09-22 01:18:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/99164.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:封包   数据   问题
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议