tcpdump-命令使用
参考地址:
https://www.tcpdump.org/manpages/tcpdump.1.html
https://danielmiessler.com/study/tcpdump/
https://www.tcpdump.org/manpages/pcap-filter.7.html
命令格式:
tcpdump 参数 过滤器表达式
描述:
tcpdump可以捕获系统中的网络数据包。
当tcpdump完成捕获数据包时,会有一个统计返回(结果类似如下,最后三行):
captured: 这是tcpdump已接收和处理的数据包数
received by filter: 含义取决于运行tcpdump命令的操作系统
- 在某些操作系统上,它会对数据包进行计数,而不管它们是否与过滤表达式匹配,也不管tcpdump是否已读取并处理它们。
- 在某些操作系统上,它只计算被过滤器表达式匹配的数据包,而不管tcpdump是否已经读取和处理了它们
- 在某些操作系统上,它只计算被过滤器表达式匹配并被tcpdump处理的数据包
dropped by kernel: 由于缓冲区空间不足,而被tcpdump丢弃的数据包数量,可以通过-B参数设置缓冲区大小。
参数:
参数较多,解释一部分
-A: 以ASCII格式打印每个数据包(减去其链路级报头)。便于抓取http请求。
-B (--buffer-size=buffer_size): 设置捕获缓冲区大小,单位为KiB(1024 bytes).
-c: 收到指定数据包后退出。
-e: 显示mac地址
-w: 将捕获到的数据包输出到文件中。文件名支持使用strftime格式(例如: -w test-%H%M%S.pcap)
-r: 从文件中读取数据包(使用-w选项保存的pcap文件)。如果文件为-,则使用标准输入。
-G: 每隔多长时间输出一个文件(文件名不能一样,否则会覆盖),单位秒(s)
-C: 当使用-w将数据包保存到文件时,单个文件保存的最大大小。1代表将近1M(1000000 bytes)
-D: 显示操作系统中可以使用的网络接口
-E: 通过提供加密密钥来解密IPSEC通信。
-F: 指定一个文件,过滤器表达式将从这个文件中获取。
-i (--interface=interface): 指定捕获哪个网络接口的数据包,默认是tcpdump -D显示的第一个接口。
-l: 在捕获到数据包时立即将输出写入标准输出,而不是等待填满缓冲区再写入标准输出。这样可以让输出实时地显示在屏幕上,而不是等到缓冲区满了再一次性显示在屏幕上。tcpdump -l | tee dat or tcpdump -l > dat & tail -f dat
-n: 不将ip解析成名称
-nn: 不将ip解析成域名,不将端口解析成名称
-#: 打印数据包编号
--print: 当使用-w时,stdout不会有数据包信息输出,加此参数可以同时输出.老版本不支持此参数
-Q: 数据包方向(in,out,inout),不是在所有平台都可以用
-q: 打印更少的协议信息
-S: 显示绝对的seq编号。默认单方向第一个条目显示绝对seq编号,后面的数据包显示的是相对的seq编号。(不知这么解释对不对)看下图吧
-s: 指定从每个数据包中获取数据的字节数,而不是默认的262144字节。-s0和默认值一样
-t: 不显示时间
-tt: 显示时间戳
-ttt: 与上一条的时间增量,详细请看man手册
-tttt: 可读性强的时间
-v: 打印IP数据包中的ttl,flags,总长度和选项等信息
-vv: 更详细的输出。
-vvv: 更详细的输出。
-X: 数据包内容以16进制和ascii格式显示
-XX: 同上,信息可能更多
过滤器表达式
过滤表达式由一个或多个原语组成。原语的编写主要分为三个层面:
类型: 根据主机、网络、端口等信息过滤。如: host、net、port、portrange等。
- 例如:
host xxx.com(也可以写ip),net 192.168.1.0/24,port 20(这里仅代表tcp和udp),portrange 6000-6008
传输方向: 根据源和目的进行过滤。如: src, dst, src or dst,src and dst等。
- 例如:
src 192.168.1.10,dst 192.168.1.20src or dst 192.168.1.1,src and dst 192.168.1.1,src or dst port 20dst net 128.3.0.0
协议: 基于协议进行过滤。如: tcp、udp、icmp、ip、ip6、arp、rarp、wlan等。
- 例如:
arp net 128.3,tcp port 21,udp portrange 7000-7009
常用原语
tcpdump捕获的数据包和表达式匹配结果为true,才是我们也要的结果,表达式中可以使用and(&&),or(||),not(!),
dst: 目标主机。dst host 1.1.1.1也可以写成dst 1.1.1.1.因为默认是host,host可以被省略
src: 源主机。
ether dst: ether的目标地址(mac地址)
ether src: ether的源地址(mac地址)
net: 网络(网段)
dst net: 目标网络
src net: 源网络
port: 端口
dst port: 目标端口
src port: 源端口
portrange: 端口范围
dst portrange: 目标端口范围
src portrange: 源端口范围
less: 数据包的长度小于或等于指定长度。less 32等同于len <= 32
greater: 数据包的长度大于或等于指定长度。less 32等同于len >= 32
例子:
1.捕获源和目的是soulchild.cn相关的流量
tcpdump host soulchild.cn
2.捕获eth0网卡的流量
tcpdump -i eth0
3.根据源地址和目的地址捕获流量
| |
4.捕获源和目的是1.2.3.0/24网段的流量
tcpdump net 1.2.3.0/24
5.捕获与指定端口相关的流量
| |
6.捕获指定协议的流量
| |
7.捕获指定端口范围的流量
tcpdump portrange 20-21
8.根据数据包大小捕获流量
| |
9.将捕获的数据包保存至文件和从文件读取
| |
10.可读性较高的一种参数组合
tcpdump -ttnnvvS
11.源地址是10.5.2.3发送到任意主机的3389端口的数据包
tcpdump -nnvvS src 10.5.2.3 and dst port 3389
12.捕获从一个网络到另一个网络的数据包
tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
13.捕获目的地址是192.168.0.2并且不是icmp的数据包
| |
14.捕获192.168.0.2进来的流量,并且不是22目的端口的流量
tcpdump -vv src 192.168.0.2 and not dst port 22
*根据tcp状态进行选择
tcp标志可用字段tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg, tcp-ece, tcp-cwr.
15.捕获包含rst标志位的tcp数据包
| |
15.1.捕获包含syn标志位的tcp数据包
| |
15.2.捕获包含syn和ack的tcp数据包
| |
16.查找http user-agent
tcpdump -vvAls0 | grep 'User-Agent:'
19.获取GET请求
tcpdump -vvAls0 | grep 'GET'
20.捕获DNS流量
tcpdump -vvAs0 port 53
21.捕获NTP流量
tcpdump -vvAs0 port 123
22.查找明文密码
tcpdump -lA port http or port ftp or port smtp or port imap or port pop3 or port telnet | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd= |password=|pass:|user:|username:|password:|login:|pass |user '
23.捕获指定状态的icmp包
icmp可用字段icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redirect, icmp-echo, icmp-routeradvert, icmp-routersolicit, icmp-timxceed, icmp-paramprob, icmp-tstamp, icmp-tstampreply, icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.
| |
24.查找带有"Evil Bit"的流量
IP报头中有一位永远不会被合法应用程序设置,我们称之为"Evil Bit"。
tcpdump 'ip[6] & 128 != 0'
这里有一个tcpdump高级用法的解释: https://blog.csdn.net/zhaojie0708/article/details/103496004
微信号
微信打赏