searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Tcpdump的高级过滤技巧

2023-07-13 01:54:10
34
0

1.Tcpdump过滤表达式

1.1 高级过滤语法

  • proto[x:y]   : 过滤从x字节开始的y字节数。比如ip[2:2]过滤出3、4字节(第一字节从0开始排)
  • proto[x:y] & z = 0  : proto[x:y]和z的与操作为0
  • proto[x:y] & z !=0  : proto[x:y]和z的与操作不为0
  • proto[x:y] & z = z  : proto[x:y]和z的与操作为z
  • proto[x:y] = z      : proto[x:y]等于z

     注意:proto代表协议,可以为ip,tcp或者udp

操作符

  • >  : greater 大于
  • <  : lower 小于
  • >= : greater or equal 大于或者等于
  • <= : lower or equal 小于或者等于
  • =  : equal  等于
  • != : different  不等于

2.报文首部介绍及使用案例

tcpdump的高级过滤技巧可以实现对TCP/UDP/IP报文的过滤,为了使用好此工具, 需要我们对TCP/UDP/IP的报文首部有个清晰的了解。实际上好多网络工具也是基于报文首部进行的操作

2.1 IP报文

IP首部每行四个字节,32bit,ip[0]代表ip首部的第一个字节, 一共 8 bit, 前4bit为Version ,0100 即表示 IPv4,后四位为IHL代表首部的长度,首部最短为20字节,所以第一个字节通常为01000101 ,对应十进制69,,我们可以如下抓取IP 首部中有 Options 的报文

tcpdump -i eth1 'ip[0] > 69'

我们常用的是抓取Protocol字段,IP protocal字段解读

protocol处在IP报文头部的第10个字节

ICMP协议号为1:则 过滤表达式为:ip[9] == 1

TCP协议号为6,则 过滤表达式为:ip[9] == 6

UDP协议号为17,则 过滤表达式为:ip[9] == 17

2.2 TCP报文

如下为TCP报文头格式

Source Port代表tcp报文的源端口,占用两个字节,和IP报文类似,可以用tcp[0:2]表示,即过滤从0字节开始的2字节数,可以用如下抓取一个范围内的端口报文

tcpdump -i eth1 '(tcp[0:2] > 1000 and tcp[0:2] < 2000)' #表示抓取源端口范围为1000-2000内的数据

TCP报文的flag位处在报文的第14个字节,字段如下:

过滤TCP的flag字段

tcpdump -i eth0 'tcp[13] == 2'  #过滤SYN报文
tcpdump -i eth0 'tcp[13] == 16'  #过滤ACK报文
tcpdump -i eth0 'tcp[13] == 18'  #过滤SYN-ACK报文
tcpdump -i eth0 'tcp[13] == 24'  #过滤PSH-ACK报文

除了以上方式还可以直接使用tcpflags过滤

tcpdump -i eth0 'tcp[tcpflags] == tcp-ack'
tcpdump -i eth0 'tcp[tcpflags] == tcp-syn'
tcpdump -i eth0 'tcp[tcpflags] == tcp-rst'
tcpdump -i eth0 'tcp[tcpflags] == tcp-push'
tcpdump -i eth0 'tcp[tcpflags] == tcp-fin'
tcpdump -i eth0 'tcp[tcpflags] == tcp-urg'

2.3 UDP报文

可通过如下方式过滤

tcpdump -i eth1 'udp[0:2] == 53'    #过滤源端口
tcpdump -i eth1 'udp[2:2] == 53'   #过滤目的端口

当然,也可以通过如下方式过滤

tcpdump -i eth1 udp src port 53    #过滤源端口
tcpdump -i eth1 udp dst port 53   #过滤目的端口

更多规则可参考 http://www.packetlevel.ch/html/tcpdumpf.html

参考 

http://www.packetlevel.ch/html/tcpdumpf.html

图片均来自于网络

 

0条评论
0 / 1000
王多鱼
1文章数
0粉丝数
王多鱼
1 文章 | 0 粉丝
王多鱼
1文章数
0粉丝数
王多鱼
1 文章 | 0 粉丝
原创

Tcpdump的高级过滤技巧

2023-07-13 01:54:10
34
0

1.Tcpdump过滤表达式

1.1 高级过滤语法

  • proto[x:y]   : 过滤从x字节开始的y字节数。比如ip[2:2]过滤出3、4字节(第一字节从0开始排)
  • proto[x:y] & z = 0  : proto[x:y]和z的与操作为0
  • proto[x:y] & z !=0  : proto[x:y]和z的与操作不为0
  • proto[x:y] & z = z  : proto[x:y]和z的与操作为z
  • proto[x:y] = z      : proto[x:y]等于z

     注意:proto代表协议,可以为ip,tcp或者udp

操作符

  • >  : greater 大于
  • <  : lower 小于
  • >= : greater or equal 大于或者等于
  • <= : lower or equal 小于或者等于
  • =  : equal  等于
  • != : different  不等于

2.报文首部介绍及使用案例

tcpdump的高级过滤技巧可以实现对TCP/UDP/IP报文的过滤,为了使用好此工具, 需要我们对TCP/UDP/IP的报文首部有个清晰的了解。实际上好多网络工具也是基于报文首部进行的操作

2.1 IP报文

IP首部每行四个字节,32bit,ip[0]代表ip首部的第一个字节, 一共 8 bit, 前4bit为Version ,0100 即表示 IPv4,后四位为IHL代表首部的长度,首部最短为20字节,所以第一个字节通常为01000101 ,对应十进制69,,我们可以如下抓取IP 首部中有 Options 的报文

tcpdump -i eth1 'ip[0] > 69'

我们常用的是抓取Protocol字段,IP protocal字段解读

protocol处在IP报文头部的第10个字节

ICMP协议号为1:则 过滤表达式为:ip[9] == 1

TCP协议号为6,则 过滤表达式为:ip[9] == 6

UDP协议号为17,则 过滤表达式为:ip[9] == 17

2.2 TCP报文

如下为TCP报文头格式

Source Port代表tcp报文的源端口,占用两个字节,和IP报文类似,可以用tcp[0:2]表示,即过滤从0字节开始的2字节数,可以用如下抓取一个范围内的端口报文

tcpdump -i eth1 '(tcp[0:2] > 1000 and tcp[0:2] < 2000)' #表示抓取源端口范围为1000-2000内的数据

TCP报文的flag位处在报文的第14个字节,字段如下:

过滤TCP的flag字段

tcpdump -i eth0 'tcp[13] == 2'  #过滤SYN报文
tcpdump -i eth0 'tcp[13] == 16'  #过滤ACK报文
tcpdump -i eth0 'tcp[13] == 18'  #过滤SYN-ACK报文
tcpdump -i eth0 'tcp[13] == 24'  #过滤PSH-ACK报文

除了以上方式还可以直接使用tcpflags过滤

tcpdump -i eth0 'tcp[tcpflags] == tcp-ack'
tcpdump -i eth0 'tcp[tcpflags] == tcp-syn'
tcpdump -i eth0 'tcp[tcpflags] == tcp-rst'
tcpdump -i eth0 'tcp[tcpflags] == tcp-push'
tcpdump -i eth0 'tcp[tcpflags] == tcp-fin'
tcpdump -i eth0 'tcp[tcpflags] == tcp-urg'

2.3 UDP报文

可通过如下方式过滤

tcpdump -i eth1 'udp[0:2] == 53'    #过滤源端口
tcpdump -i eth1 'udp[2:2] == 53'   #过滤目的端口

当然,也可以通过如下方式过滤

tcpdump -i eth1 udp src port 53    #过滤源端口
tcpdump -i eth1 udp dst port 53   #过滤目的端口

更多规则可参考 http://www.packetlevel.ch/html/tcpdumpf.html

参考 

http://www.packetlevel.ch/html/tcpdumpf.html

图片均来自于网络

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0