Tcpdump抓包工具学习

Tcpdump抓包工具学习

前言

我们在学习计算机操作系统的时候就很清楚网络的重要性,网络就像是通信的介质一样连接着我们的服务,当一个服务出现问题我们往往也需要考虑网络相关的因素,比如连接是否建立了,端口是否能通信,是否存在了广播风暴等等。但是话又说回来了网络是一个不太直观的东西,(内部连接的建立,三次握手,四次挥手,标志位的状态)都不能直观看出,但是我们可以通过一些抓包工具对网络进行抓包并对此进行详细的分析。网络抓包的工具有很多。fiddler、wireshark、tcpdump等等。我们可以根据需要只使用一个,也可以利用各自的优点结合使用,比如在linux中可以通过tcpdump抓包,但是看着不美观,linux要想实现可视化分析工具很少。而wireshark用于包的分析可视化很好,但是只能在windows。所以生产环境往往用tcpdump抓包保存成文件,然后在wireshark上进行分析。

参数

tcpdump一定要熟知常用参数,在使用的时候尽可能把无法信息进行过滤,才可能得出自己想要的包的信息,更快的分析问题。

常见参数

  • -vv 输出更详细的报文信息
  • -nn :能够把主机名解析成ip,实现包的信息全部以主机ip存在。
  • -i  eth0 :-i 指定网卡设备,例如docker0、ens33 通过指定网卡来缩小范围
  • -w  :抓包的信息不在终端输出,而是保存成一个.pcap文件,可以在windows中的wireshark上进行分析
  • -s  :从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。-s 0表示不限制长度,输出整个包。配合wireshark
  • -c  :  指定抓取包的个数。

tcpdump表达式

表达式是一个正则表达式,我们可以设置关键字配合正则来过滤报文头,更加精确的获取抓包的信息。

表达式有如下几个类型的关键字

  1. 关于类型的关键字:net ,host,port     (net 192.168.137.0指定网段,host 192.168.137.1 指定主机,port 8080 指定端口)
  2. 关于传输方向的关键字:src,dst,src or dst,src and dst    (src 192.168.137.99 指定源地址, dst net 202.0.0.0 指明目的网络地址是202.0.0.0。如果没有指明方向关键字,则缺省是src or dst关键字。 )
  3. 关于协议的关键字:主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI (分布式光纤数据接口网络)上的特定的网络协议,实际上它是”ether”的别名,fddi和ether 具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。 其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump 将会 监听所有协议的信息包
  4. 关于逻辑的关键词:and ,or,not ,!

示例

(1) 想要截获所有210.27.48.1 的主机收到的和发出的所有的分组:
#tcpdump host 210.27.48.1

(2) 想要截获主机210.27.48.1 和主机210.27.48.2或210.27.48.3的通信,使用命令(注意:括号前的反斜杠是必须的):
#tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )

(3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2

(4) 如果想要获取主机192.168.228.246接收或发出的ssh包,并且不转换主机名使用如下命令:
#tcpdump -nn -n src host 192.168.228.246 and port 22 and tcp

(5) 获取主机192.168.228.246接收或发出的ssh包,并把mac地址也一同显示:
# tcpdump -e src host 192.168.228.246 and port 22 and tcp -n -nn

(6) 过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头:
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24

(7) 过滤源主机物理地址为XXX的报头:
tcpdump ether src 00:50:04:BA:9B and dst……
(为什么ether src后面没有host或者net?物理地址当然不可能有网络)。

(8) 过滤源主机192.168.0.1和目的端口不是telnet的报头,并导入到tes.t.txt文件中:
Tcpdump src host 192.168.0.1 and dst port not telnet -l > test.txt

ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。

例题:如何使用tcpdump监听来自eth0适配卡且通信协议为port 22,目标来源为192.168.1.100的数据包资料?

答:tcpdump -i eth0 -nn port 22 and src host 192.168.1.100

例题:如何使用tcpdump抓取访问eth0适配卡且访问端口为tcp 9080?

答:tcpdump -i eth0 dst 172.168.70.35 and tcp port 9080

例题:如何使用tcpdump抓取与主机192.168.43.23或着与主机192.168.43.24通信报文,并且显示在控制台上

tcpdump -X -s 1024 -i eth0 host (192.168.43.23 or 192.168.43.24) and  host 172.16.70.35

tcpdump +wireshark使用

  • 下载中文版wireshark
  • 在tcpdump抓包通过 -w 保存xxx.pcap文件

tcpdump -i ens33 host 192.168.137.99 -nn -c 10 and port 9777 -w tcpdump.pcap


在windows直接点击文件即可通过wireshark分析

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...