wireshark入门:抓包过滤器语法;显示过滤器语法;设置

 wireshark抓包过滤器

wireshark抓包过滤器语法及示例
=====================================================================
BPF语法(Berkeley Packet Filter),基于libpcap/wincap库
语句间语法:<Expressions><Logical operations><Expressions>
<Expressions>语句内部语法:<Protocol name><Direction><Host(s)><Value>

1.protocol可选值:ether,fddi,ip,arp,rarp,decnet,lat,tcp,dns等等协议
2.direction可选值:src,dst,src and dst,src or dst,默认为src or dst
3.host(s)可选值:net,port,host,portrange。默认为host,如 src 192.168.0.100 等价于src host 192.168.0.100
4.logical可选值:and,or,not(其中not鱼油最高优先级,and和or优先级相同),运算顺序:从左至右

----------------------------------------------------------------
以下为抓包过滤器实例:
    tcp dst port 3128                显示目的TCP端口为3128的封包。
    ip src host 10.1.1.1            显示来源IP地址为10.1.1.1的封包。
    host 10.1.2.3                    显示目的或来源IP地址为10.1.2.3的封包。
    src portrange 2000-2500            显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。
    not imcp                        显示除了icmp以外的所有封包。(icmp通常被ping工具使用)
    src host 10.7.2.12 and not dst net 10.200.0.0/16                                                        显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。
    (src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8        显示来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络10.0.0.0/8内的所有封包。
wireshark抓包过滤器语法及示例

 wireshark显示过滤器

wireshark显示过滤器语法及表达式示例
=================================================================================================
显示过滤器的规则和抓包过滤器的规则略有不同!

语句间语法:<Expressions><Logical operations><Expressions>
<Expressions>语句内部语法:<Protocol>.<string1>.<string2><comparison operator><value>

比较操作符:==   !=   >   <   >=   <=
逻辑操作符:and/or/xor(有且仅有一个条件被满足)/not
IP地址:ip.addr/ip.src/ip.dst
端口过滤:tcp.port/tcp.srcport/tcp.dstport/tcp.flag.syn/tcp.flag.ack
协议:arp/ip/icmp/udp/tcp/bootp/dns

-------------------------------------------------------------------------------------------------------
如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

提示:
    1.在展示过滤器手动输入过滤规则时,会自动弹出一些过滤条件
    2.右键菜单-设置过滤规则时,可以右击的对象包括源IP,目的IP,协议,也可以在数据包解析区右击数据。
    3.在展示过滤器判断的Expression按键,可以使用像选择题一样,配置出过滤规则
    
1.针对IP地址的过滤:
    ip.src == 192.168.0.1        #源地址
    ip.dst == 192.168.0.1        #目的地址
    ip.addr == 192.168.0.1        #源或者目的地址
    !(ip.src == 192.168.0.1)      #排除
    ip.src != 10.1.2.3            #排除

2.针对协议的过滤
    http            #根据协议名进行过滤
    http or telnet    #过滤多种协议
    tcp || udp        #过滤多种协议
    not arp            #排除某种协议
    !tcp            #排除某种协议

3.针对端口的过滤
    tcp.port == 80        #某一端口
    tcp.dstport == 25    #某一目的端口
    udp.port >= 2048    #多端口(捕获高端口)
    tcp.dstport>=33758 or tcp.dstport<=33755    #多端口
    tcp.dstport>=33758 and tcp.srcport==20        #多端口

4.针对长度和内容的过滤
    tcp.len eq 1 
    udp.length < 30                         #数据段的长度
    http.content_length <=20                #数据段的长度
    http.request.uri matches “vipscu”        #数据包内容(匹配http请求中含有vipscu字段的请求信息)
    tcp.payload eq 01
    
5.深度字符串匹配
    tcp contains "http"                         #显示payload中包含”http”字符串的tcp封包。
    tcp contains "22222"
    http.request.uri contains "online"             #显示请求的uri包含”online”的http封包。
    tcp contains "id=abcdafeafeagfeagfaraera1242dfea"
    frame contains "id=abcdafeafeagfeagfaraera1242dfea"
    ip contains "id=abcdafeafeagfeagfaraera1242dfea"
    http contains "id=abcdafeafeagfeagfaraera1242dfea"

6.特定偏移处值的过滤
    tcp[20:3] == 47:45:54                     #16进制形式,tcp头部一般是20字节,所以这个是对payload的前三个字节进行过滤
    http.host[0:4] == “trac”                #

7.使用函数(upper、lower)
    函数upper、lower
        upper(string-field) - converts a string field to uppercase
        lower(string-field) - converts a string field to lowercase
    示例
        upper(http.request.uri) contains “ONLINE”        #wireshark过滤支持比较运算符、逻辑运算符,内容过滤时还能使用位运算。

8.补充示例:
    tcp.flags.reset eq 1        #根据tcp RST标志位进行过滤
    tcp.flags.fin eq 1
    tcp.flags.reset eq 1
    tcp.seq eq 1                #根据TCP报文序列号进行过滤
    tcp.ack_raw == 754313633
    
    frame.time >="dec 01, 2015 15:49:48" and frame.time <="dec 01, 2015 15:49:49"   #二层报头的时间进行过滤
    tcp.options.timestamp.tsval == 2947948748       #如果有 TCP timestamp 扩展,就用 TCP  timestamp
    tcp.options.timestamp.tsecr == 3209788920
wireshark显示过滤器语法及表达式示例

 

wireshark显示界面设置:
数据包列表展示区
字体大小调节---------------3个放大镜按钮

列设置----------------进入有2个方法,1.edit-prefernces-columns。2.右击列-columns-prefernces
    所有的可以设置为过滤规则的,也可以设置为列名
增加列----------------2个方法:1.在数据包解析区找到你要增加的列的信息,右击-apply as columns。
    2.edit-prefernces-columns,在列编辑页面编辑
修改列:右击列名-edit columns detail,即进入修改。或者可以进入列编辑页面进行修改
隐藏列:右击列名-hide columns。或者可以进入列编辑页面进行修改
删除列:右击列名-remove columns。或者可以进入列编辑页面进行修改


时间设置:
    view - time display format :修改时间显示格式
    右击数据包 - set time reference(toggle) :设置相对的参考时间

名字解析:
    edit - preferences - name resolution。或者在抓包设置中也可以设置

在数据分析时,wireshark支持右击,对数据包进行注释

protocol是自动识别的,但是也可以强制指定。比如NDS协议数据包,默认当然是用DNS来解析的了,强制使用其他协议时,那么所有的DNS协议包全部使用其他协议进行解析。
wireshark显示界面设置

 

专家信息
===========================================================
wireshark---分析---专家信息
Warning 条目的底色是黄色,意味着可能有问题,应重点关注。
Note 条目的底色是浅蓝色,是在允许范围内的小问题,也要关注。什么叫“允许范围内的小问题”呢?举个例子,TCP 本身就是容许一定程度的重传的,那么这些重传报文,就属于“允许范围内”。
Chat 条目的底色是正常蓝色,属于 TCP/UDP 的正常行为,可以作为参考。比如你可以了解到,这次通信里 TCP 握手和挥手分别有多少次,等等。
专家信息
丢包率和乱序参考
=========================================================================
一般来说,乱序是应该被重点关注的。
    这个乱序也容易引发应用层异常。

这种程度的乱序发生在内网是不应该的,因为内网比公网要稳定很多。
以我个人的经验,内网环境常见的丢包率在万分之一上下,乱序的几率我没有严格考证过,因为跟各个环境的具体拓扑和配置的关系太大了。
但从经验上看,乱序几率大概在百分之一以下到千分之一左右都属正常。
    《网络排查案例课》05 | 定位防火墙(一):传输层的对比分析
丢包率和乱序参考
wireshark分析小技巧
=============================================================
左侧的两个水平方向的箭头(一个向右,一个向左),分别表示这两个数据包是 HTTP 请求和 HTTP 响应。


在协议分层统计时,arp包一般占比在百分之零点几,若占比到10+,则有可能有人在搞arp攻击


长度40-79的数据包一般是arp包、tcp建立连接时的包,dns包等等。可以对数据包展示区对length进行排序查看
长度1280-2559的数据包一般是tcp数据包


TLSv1.2即https
    https=http+ssl(ssl,后来改名为tls)
wireshark分析小技巧

 

posted @ 2022-08-21 18:29  雲淡風輕333  阅读(200)  评论(0编辑  收藏  举报