Tcpdump使用

Tcpdump使用

Tcpdump 是信息安全领域常用的嗅探和网络分析工具,大部分 Linux 发行版都内置了 Tcpdump 工具。如果没有,也可以直接使用对应的包管理器进行安装(如:$ sudo apt-get install tcpdump 和 $ sudo yum install tcpdump

1、命令选项

-i any:监听所有网络接口

-i eth0:监听指定的网络接口(eth0)

-D:列出所有可用的网络接口

-n:不解析主机名

-nn:不解析主机名和端口名

-q:输出较少的信息

-t:更便于阅读的时间戳输出

-tttt:最便于阅读的时间戳输出

-X:以 HEX 和 ASCII 模式输出数据包的内容

-XX:与 -X 选项相同,同时还输出 ethernet 头

-v, -vv, -vvv:输出更多数据包的信息

-c:获取到指定数目的数据包后就停止

-s:定义 snaplength (size) ,-s0 表示获取全部

-S:输出绝对序列号

-e:获取 ethernet 头信息

-E:通过提供 key 来解密 IPSEC 流量

二、表达式

通过表达式可以对各种不同类型的网络流量进行过滤,以获取到需要的信息。这也是 tcpdump强大功能的一个体现。主要有 3 种类型的表达式:

  • Type(类型)选项包括 host(主机名,域名,IP 地址) 、net(子网) 和 port(端口)
  • Direction(方向)选项包括 src 和 dst 以及它们的组合
  • Proto(协议)包括 tcp 、udp 、ICMP、ether  和 arp

三、应用实例

指定网络接口

tcpdump -i <dev>

Tcpdump使用
-i 指定监听接口

ens33是centos7系统中第一张的网卡设备名称

原始信息输出模式

tcpdump -ttttnnvvS -i <dev>

Tcpdump使用

更详细的输出,不解析主机名和端口名,使用绝对序列号,方便阅读的时间戳

通过IP地址过滤

tcpdump host <IP>

Tcpdump使用

192.168.1.11是同网段的另外一台服务器

HEX 输出

tcpdump -nnvXSs 0

Tcpdump使用

抓取一个HEX格式的icpm包

通过源地址和目标地址进行过滤(源地址:src 目标地址:dst)

tcpdump src 192.168.1.11 -i ens33

Tcpdump使用
src

tcpdump dst 192.168.1.11 -i ens33

Tcpdump使用
dst

通过子网进行过滤

tcpdump net 192.168.1.0/24

Tcpdump使用
tcpdump net

监听指定端口号

tcpdump dst port 22 -i ens33

Tcpdump使用
tcpdump port

抓取ens33网卡接口目标地址端口为22的包

指定协议

tcpdmp icmp -i ens33

Tcpdump使用
tcpdmp icmp

端口范围 tcpdump portrange 1-65535

Tcpdump使用
tcpdump portrange

通过包大小过滤(通过length查看)

tcpdump less 32

tcpdump greater 64

查找 http 包

查找 user-agent 信息

tcpdump -vvAls0 | grep 'User-Agent:'

查找只是 GET 请求的流量

tcpdump -vvAls0 | grep 'GET'

查找 http 客户端 IP

tcpdump -vvAls0 | grep 'Host:'

查询客户端 cookie

tcpdump -vvAls0 | grep 'Set-Cookie|Host:|Cookie:'

查找 DNS 流量

tcpdump -vvAs0 port 53

四、高级功能

1. 逻辑运算符

可以通过命令选项的不同组合(使用逻辑运算符)完成更复杂的任务。运算符包括以下3种:

  • AND(and 或 &
  • OR(or 或 ||
  • EXCEPT (not 或 !

tcpdump port 22 and src 192.168.1.11 -i ens33

Tcpdump使用

即捕捉从指定主机(192.168.1.11)发出,且目标端口为 22 的所有网络数据

tcpdump src net 192.168.1.0/24 and dst net 192.168.0.0/24 or 192.168.2.0/24

Tcpdump使用

即捕捉从指定子网(192.168.1.0/24)发送到目标子网(192.168.0.0/24 和 192.168.2.0/24)的所有网络数据

2. 指定 TCP 标志位(Flags)

tcpdump 'tcp[13] & 32!=0' 所有 URGENT (URG) 包
tcpdump 'tcp[13] & 16!=0' 所有 ACKNOWLEDGE (ACK) 包
tcpdump 'tcp[13] & 8!=0' 所有 PUSH (PSH) 包
tcpdump 'tcp[13] & 4!=0' 所有 RESET (RST) 包
tcpdump 'tcp[13] & 2!=0' 所有 SYNCHRONIZE (SYN) 包
tcpdump 'tcp[13] & 1!=0' 所有 FINISH (FIN) 包
tcpdump 'tcp[13]=18' 所有 SYNCHRONIZE/ACKNOWLEDGE (SYNACK) 包

其他指定标志位的方式如:

tcpdump 'tcp[tcpflags] == tcp-syn'
tcpdump 'tcp[tcpflags] == tcp-fin'

一些特殊的用法

tcpdump 'tcp[13] = 6' RST 和 SYN 同时启用的数据包(不正常)
tcpdump 'tcp[32:4] = 0x47455420' 获取 http GET 请求的文本

Tcpdump使用

tcpdump 'tcp[(tcp[12]>>2):4] = 0x5353482D' 获取任何端口的 ssh 连接(通过 banner 信息)

Tcpdump使用

tcpdump 'ip[8] < 10' ttl 小于 10 的数据包(出现问题或 traceroute 命令)

Tcpdump使用


tcpdump 'ip[6] & 128 != 0' 非常有可能是黑客入侵的情况

发布者:LJH,转发请注明出处:https://www.ljh.cool/4999.html

(0)
上一篇 2022年7月28日 下午7:48
下一篇 2022年8月23日 下午2:22

相关推荐

发表回复

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