tcpdump网络包分析工具使用

Debian9 安装 tcpdump 工具

apt-get install tcpdump

使用

不指定任何参数,默认监听第一块网卡上经过的数据包

tcpdump

监听指定网卡经过的数据包

tcpdump -i ens33

监听所有网卡经过的数据包

tcpdump -i any

监听指定的主机

例子:监听本机跟主机 192.168.3.1 之间往来的通信包。

备注:出、入的包都会被监听。

tcpdump host 192.168.3.1

指定来源、目标地址的通信

指定来源

tcpdump src host hostname

指定目标地址

tcpdump dst host hostname

如果不指定src跟dst,那么来源或者目标是 hostname 的通信都会被监听

tcpdump host hostname

监听指定的端口或者端口范围

tcpdump port 80
tcpdump portrange 22-125

监听 TCP/UDP

OSI七层网络模型传输层有TCP、UDP两种协议,假如只想监听TCP协议的数据包

tcpdump tcp

来源主机+端口+TCP

监听来自主机 192.168.3.1 在端口22上的TCP数据包

tcpdump tcp port 22 and src host 192.168.3.1

监听特定主机之间的通信

tcpdump ip host 192.168.3.1 and 192.168.3.129

192.168.3.1 除了和 192.168.3.129 之外的主机之间的通信

tcpdump ip host 192.168.3.1 and ! 192.168.3.129

稍微详细点的例子

tcpdump tcp -i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.3.0/24 -w ./target.cap

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i ens33 :只抓经过接口ens33的包
(3)-t :不显示时间戳
(4)-s 0 :抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
(5)-c 100 :只抓取100个数据包
(6)dst port ! 22 :不抓取目标端口是22的数据包
(7)src net 192.168.3.0/24 :数据包的源网络地址为192.168.3.0/24
(8)-w ./target.cap :将所有捕获的包写入cap文件,方便用ethereal(即wireshark)分析

从使用 -w 选项写入的 ./target.cap 文件中读取内容

tcpdump -r ./target.cap

限制抓包的数量

如下,抓到1000个包后,自动退出

tcpdump -c 1000

保存到本地

备注:tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘

tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

也可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)

src 和 dst 选项连用来捕获指定源端口或指定目的端口的报文

使用“与”(and,&&)、“或”(or,|| ) 和“非”(not,!)来将两个条件组合起来,基于某些条件来分析网络报文是非常有用

使用 and 或者符号 && 来将两个或多个条件组合起来

tcpdump src 192.168.3.1 and port 22

“或”会检查是否匹配命令所列条件中的其中一条

tcpdump src 192.168.3.1 or dst 192.168.3.130 && port 22
tcpdump port 443 or 80

不想匹配某项条件时可以使用“非”

监听 ens33 网卡上除了 22 号端口的所有通讯

tcpdump -i ens33 src port not 22

 

本文参考自:

(1)https://www.cnblogs.com/chyingp/p/linux-command-tcpdump.html

(2)https://linux.cn/article-9210-1.html

 

posted @ 2021-02-28 21:15  OpsDrip  阅读(354)  评论(0编辑  收藏  举报