10.计算机网络---tcpdump抓包工具

假如你现在是一个网站的维护人员,维护着某台服务器,那么你如何知道客户端的人访问到你的服务器了呢?
1. 查看日志。我们可以查看某个服务对应的日志,那么便知道是否有人访问了,比如说nginx,那么我们可以查看nginx的access日志
2. netstat查看State列的状态。ESTABLISHED就是建立连接,web服务采用的是http协议,传输层采用的是tcp协议,那么就会建立三次握手,所以可以通过查看状态来确认是否有建立连接
3. 可以通过抓包工具来分析。例如服务器某个服务对应的端口是80,协议是tcp协议,那么我们可以使用抓包工具抓去特定端口和协议的包

在网络中抓包,我们可以使用Windows的Ciso Packet、wireshark等工具,也可以使用Linux中特有的tcpdump来抓包分析。

tcpdump抓包工具

参数详解

  1. -i 指定需要监听的接口
  2. -n 不把IP转换成域名,直接显示IP,避免了域名解析的过程,速度会快很多
  3. -nn 不进行端口和IP地址名称的转换,直接以数字的形式显示,速度会快很多
  4. -vv 输出详细的报文信息
  5. -w 将捕获到的信息保存到文件中,并且不会打印在屏幕上
  6. -r 从文件中读取数据
  7. -D 显示系统中所有可以用的tcpdump截包的网络接口
  8. -t 在每行的输出中不输出时间
  9. -tt 在每行的输出中会输出一个时间戳
  10. -Q 选择是入方向还是出方向的数据包,可选项有:in, out, inout

常见的过滤规则

  1. 指定IP
    src host -->source host
    dst host -->destination host
    host —> 不区分源或者目的IP
  2. 指定端口
    src port -->source port
    dst port --> destination port
    port
  3. 指定协议
    tcp
    udp
    arp
    icmp
  4. 指定mac地址
    ether src
  5. net 指定网络地址,可以是一个网段

注意:多个条件结合的时候,要使用运算符和连接,例如and、or、not、!

一些举例

抓取访问本机的22号端口的数据包

tcpdump -i ens33 port 22

抓取访问本机的icmp报文或者arp报文

tcpdump -nn -i ens33 icmp or arp

抓取源IP是从192.168.0.0网段来的,访问本机22号端口的数据包

tcpdump -i ens33 port 22 and src net 192.168.0.0/24

抓取源ip地址是192.168.0.1访问本机的tcp协议的80端口的数据包

tcpdump -i ens33 src host 192.168.0.1 and dst port 80 and tcp

抓取源ip是192.168.0.189,目的端口是80,目的ip地址是192.168.0.204的数据包

tcpdump -i ens33 src host 192.168.0.189 and dst port 80 and dst host 192.168.0.204

抓取源ip是192.168.0.123,目的ip地址是114.114.114.114的udp的53号端口的数据包

tcpdump -nn -i ens33 src host 192.168.0.123 and  dst host 114.114.114.114 and dst port 53 and udp

-i指定网卡,tcp是协议,src host是源IP(如果通过浏览器访问的话,就是真实机器的IP),dst port目的端口,-nn是指以数字的方式展示出来,不同的选项之间要使用and连接

tcpdump -i ens33 tcp and src host 192.168.2.105 and dst port 80 -nn

将抓取到的数据存入文件中,并且再打开

[root@xieshan lianxi]# tcpdump -i ens33 tcp and src host 192.168.2.105 and dst port 80 -nn -w web.data	#-w将抓包到的数据存入文件中,但是查看会有一些乱码,必须在Windows中通过字符界面的抓包工具wireshark打开
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C6 packets captured
6 packets received by filter
0 packets dropped by kernel
[root@xieshan lianxi]# cat web.data 
NN??k?be>
  ){?`0??E@@@????i??+?P?Ob???ʹ?
BBQn?k?b?N
  ){?`0??E4@@????i??+?P?Ocb}?l?
?w
??Qr1???k?bVO
  ){?`0??E?@@?q??i??+?P?Ocb}?l?
?r
dRQr1??GET / HTTP/1.1
Host: 192.168.2.43
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15
Accept-Language: zh-CN,zh-Hans;q=0.9
Accept-Encoding: gzip, deflate
Connection: keep-alive
[root@xieshan lianxi]# tcpdump -r web.data 	#tcpdump 的-r选项也可以很直观的看到
reading from file web.data, link-type EN10MB (Ethernet)
21:29:52.867941 IP 192.168.2.105.50691 > xieshan.http: Flags [S], seq 401362786, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 1683116398 ecr 0,sackOK,eol], length 0
21:29:52.872067 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 1652406636, win 2058, options [nop,nop,TS val 1683116402 ecr 36827091], length 0
21:29:52.872278 IP 192.168.2.105.50691 > xieshan.http: Flags [P.], seq 0:366, ack 1, win 2058, options [nop,nop,TS val 1683116402 ecr 36827091], length 366: HTTP: GET / HTTP/1.1
21:29:52.876385 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 743, win 2047, options [nop,nop,TS val 1683116407 ecr 36827096], length 0
21:29:53.965394 IP 192.168.2.105.50691 > xieshan.http: Flags [P.], seq 366:732, ack 743, win 2048, options [nop,nop,TS val 1683117496 ecr 36827096], length 366: HTTP: GET / HTTP/1.1
21:29:53.969304 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 1485, win 2036, options [nop,nop,TS val 1683117500 ecr 36828189], length 0

关于tcpdump更加详细的解析,推荐看这篇博客:全网最详细的tcpdump使用指南

猜你喜欢

转载自blog.csdn.net/weixin_43880061/article/details/126002539