Linux网络抓包分析工具tcpdump

Linux中的网络抓包分析工具

一,Tcpdump

Linux tcpdump命令用于倾倒网络传输数据。执行tcpdump指令可列出经过指定网络界面的数据包文件头,可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你摘取有用信息。

由于它需要将网络接口设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。

二,格式

 三,常用参数

常用参数 说明
-a 尝试将网络和广播地址转换成名称
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
-e 在每列倾倒资料上显示连接层级的文件头
-f 用数字显示网际网络地址
-F<表达文件> 指定内含表达方式的文件
-i<网络界面> 使用指定的网络截面送出数据包
-l 使用标准输出列的缓冲区
-n 不把主机的网络地址转换成名字
-N 不列出域名
-O 不将数据包编码最佳化
-p 不让网络界面进入混杂模式
-q 快速输出,仅列出少数的传输协议信息
-r<数据包文件> 从指定的文件读取数据包数据
-s<数据包大小> 设置每个数据包的大小
-S 用绝对而非相对数值列出TCP关联数
-t 在每列倾倒资料上不显示时间戳记
-tt 在每列倾倒资料上显示未经格式化的时间戳记
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型
-v 详细显示指令执行过程
-vv 更详细显示指令执行过程
-x 用十六进制字码列出数据包资料
-w<数据包文件> 把数据包数据写入指定的文件

四,tcpdump常用示例

查看当前机器有哪些网络接口

 tcpdump输出内容解析(指定网卡过滤)

第一列:报文的时间
第二列:网络协议 IP
第三列:发送方的ip地址、端口号、域名,上图显示的是本机的域名,可通过/etc/hosts查看本机域名
第四列:箭头 >, 表示数据流向
第五列:接收方的ip地址、端口号、域名,上图中的112.80.248.75是百度的公网IP
第六列:冒号
第七列:数据包内容,报文头的摘要信息,有ttl、报文类型、标识值、序列等信息

 tcpdump输出内容解析(指定ip过滤)

最基本也是最重要的信息就是数据报的源地址/端口和目的地址/端口,上面的例子第一条数据报中,源地址 ip 是 192.168.135.1,源端口是 10679,目的地址是 192.168.135.100,目的端口是 80。 > 符号代表数据的方向。

此外,上面的三条数据还是 tcp 协议的三次握手过程,第一条就是 SYN 报文,这个可以通过 Flags [S] 看出。下面是常见的 TCP 报文的 Flags:

  • [S] : SYN(开始连接)
  • [.] : 没有 Flag
  • [P] : PSH(推送数据)
  • [F] : FIN (结束连接)
  • [R] : RST(重置连接)

而第二条数据的 [S.] 表示 SYN-ACK,就是 SYN 报文的应答报文。

五,tcpdump表达式

关于数据类型的关键字
        包括host、port、net:

        host 192.168.130.1表示一台主机,net 192.168.130.0表示一个网络网段,port 80 指明端口号为80,在这里如果没有指明数据类型,那么默认就是host

        数据传输方向的关键字
        包括src、dst、dst or src、dst and src,这些关键字指明了传输的方向,比如src 192.168.130.1说明数据包源地址是192.168.130.1。dst net 192.168.130.0指明目的网络地址是192.168.130.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据。

        协议关键字
        包括ip、arp、rarp、udp

        其他关键字
        运算类型:or、and、not、!

        辅助功能型:gateway、less、broadcast、greater
 

基于ip地址过滤

tcpdump host 192.168.135.100 -i ens33 -n -c 5

过滤关于192.168.135.100的包

 tcpdump src host 192.168.135.100 -i ens33 -n -c 5

过滤源IP地址是192.168.135.100的包

 tcpdump dst host 192.168.135.100 -i ens33 -n -c 5

过滤目的IP地址是192.168.135.100的包

 基于端口进行过滤

tcpdump port 22 -i ens33 -n -c 5

过滤端口号为80即nginx协议的包

 基于协议的过滤

tcpdump icmp -i ens33 -n -c 10

tcpdump host 192.168.130.151 and  /(192.168.130.152 or 192.168.130.153/)

#捕获主机 192.168.130.151 和主机192.168.130.152或192.168.130.153的所有通信数据包

tcpdump ip host node9 and not www.baidu.com

#捕获主机node9与其他主机之间(不包括www.baidu.com)通信的ip数据包

tcpdump -i ens33 src node10

#捕获源主机node10发送的所有的经过ens33网卡的所有数据包

tcpdump -i ens33 dst host www.baidu.com

#捕获所有发送到主机www.baidu.com的数据包

tcpdump udp port 53

#监听本机udp的53端口的数据包,udp是dns协议的端口,这也是一个dns域名解析的完整过程

猜你喜欢

转载自blog.csdn.net/m0_54594153/article/details/126569199