认识Wireshark之一 过滤器篇

wireshark过滤分析


什么是Wireshark

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据包,并为用户提供关于网络和上层协议的各种信息,并尝试显示包尽可能详细的情况。与很多其他网络工具一样,Wireshark 也使用pcap network library来进行封包捕捉。Wireshark可能算得上是今天能使用的最好的开源网络分析软件。


Wireshark的前身叫做Ethereal(因为商标问题而改名),是开放源代码软件,我们可以免费从官方网站(http://wireshark.org)下载使用。Wireshark支持多种操作系统,在windows,UNIX,MAC等系统都有相应的版本。通过此软件,我们可以抓取网络数据包,分析数据包的内容,一般常用在网络故障排除、软件封包检测。在使用上,Wireshark提供的图形界面,非常直观,而且相当容易上手,以及支持丰富的过滤语言,可以灵活捕获我们需要的数据包,是一个非常有用的软件。


下面是Wireshark一些应用的举例:

  • 网络管理员用来解决网络问题

  • 网络安全工程师用来检测安全隐患

  • 开发人员用来测试协议执行情况

  • 用来学习网络协议


认识Wireshark界面

wKiom1PstA2TAdxdAAYwtFAGyzI785.jpg


如果捕获的是一个OSI layer 2的封包,您在Source(来源)和Destination(目的地)列中看到的将是MAC地址,此时Port(端口)列将会为空。

如果捕获的是一个OSI layer 3或者更高层的封包,Source(来源)和Destination(目的地)列中看到的将是IP地址。Port(端口)列仅会在这个封包属于第4或者更高层时才会显示。

封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。可以看到每一种协议都会以不同的颜色表示。


Wireshark详细信息的层与对应OSI七层模型

wKioL1Psw6TAtleEAAJUF8BBurI882.jpg

选择抓包网卡

Wireshark只能捕获机器某一块网卡的网络包,当你的机器有多块网卡的时候,需要指定捕获哪一块网卡的数据包。我们选择一块网卡之后,点击"Start"按钮,即可开始抓包。


Wireshark过滤器


过滤器会可以帮助我们只抓捕关注的信息或在在庞杂的抓捕结果中过滤出目标信息。


捕捉过滤器(CaptureFilters):捕捉过滤器在抓抱前进行设置,决定抓取怎样的数据;

显示过滤器(DisplayFilters):用于在捕捉结果中进行过滤,方便stream的追踪和排查。


按照过滤的语法可分为协议过滤和内容过滤。捕捉过滤器仅支持协议过滤,显示过滤器既支持协议过滤也支持内容过滤。两种过滤器支持的过滤语法并不一样。

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

过滤器支持比较运算符、逻辑运算符,内容过滤时还能使用位运算。


对标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值进行的过滤如tcp.port==53、http.request.method=="GET"。

对内容的过滤,既支持深度的字符串匹配过滤如http contains "Server",也支持特定偏移处值的匹配过滤如tcp[20:3] == 47:45:54。


捕捉过滤器--捕捉前依据协议的相关信息进行过滤设置


wKioL1PsyB3xMIfeAACEUpEpGoE889.jpg


字段详解:

Protocol(协议):
可能值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没指明协议类型,则默认为捕捉所有支持的协议。
注:在wireshark的HELP-Manual Pages-Wireshark Filter中查到其支持的协议。


Direction(方向):
可能值: src, dst, src and dst, src or dst
如果没指明方向,则默认使用 “src or dst” 作为关键字。
例如:”host 10.2.2.2″与”src or dst host 10.2.2.2″等价。


Host(s):
可能值: net, port, host, portrange.
默认使用”host”关键字
例如:”src 10.1.1.1″与”src host 10.1.1.1″等价。


Logical Operations(逻辑运算):
可能值:not(!), and(&&), or(||)
否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。
例如:
“not tcp port 3128 and tcp port 23″与”(not tcp port 3128) and tcp port 23″等价。
“not tcp port 3128 and tcp port 23″与”not (tcp port 3128 and tcp port 23)”不等价。



示例:


// 显示目的TCP端口为3128的包
tcp dst port 3128
 
// 显示来源IP地址为10.1.1.1的封包
ip src host 10.1.1.1
 
// 显示来源为UDP或TCP, 并且端口号在2000-2500范围内的封包
src protrange 2000-2500
 
// 显示除了icmp以外的所有封包,icmp通常被ping工具使用
not icmp    或者  ! icmp
 
// 显示来源IP地址为10.7.2.12,但目的地址不是10.200.0.0/16的封包
src host 10.7.2.12 and (not dst net 10.200.0.0/16)


(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


显示过滤器--对捕捉到的数据包依据协议或包的内容进行过滤


wKiom1Psy-WQzDmfAACQ86isrTQ580.jpg


Protocol(协议):

可以使用大量位于OSI模型第2至7层的协议。点击"表达式..."按钮后,您可以看到它们。
比如:IP,TCP,DNS,SSH

string1和string2是可选的。


wKioL1PszV6jgtuFAAKcDSDYj0U813.jpg


可以使用6种比较运算符:

wKioL1Pszh2CUn62AABzrsp_WKA036.jpg


Logical expressions(逻辑运算符):

wKiom1PszRrxSE0wAABhQY5dbYw341.jpg


可按协议来过滤,也可按协议属性值过滤


按协议进行过滤:

snmp || dns || icmp显示SNMP或DNS或ICMP封包。


按协议的属性值进行过滤:
ip.addr == 10.1.1.1

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6
ip.src == 10.230.0.0/16显示来自10.230网段的封包

tcp.port == 25显示来源或目的TCP端口号为25的封包。
tcp.dstport == 25显示目的TCP端口号为25的封包。

http.request.method== "POST"显示post请求方式的http封包。
http.host == "tracker.1ting.com"显示请求的域名为tracker.1ting.comhttp封包。

tcp.flags.syn == 0×02显示包含TCP SYN标志的封包。


示例:

// 显示SNMP或DNS或ICMP封包

snmp||dns||icmp

 

// 显示来源或目的的IP地址为10.1.1.1的封包

ip.addr==10.1.1.1

 

// 显示来源不为10.1.12.3或者目的不为10.4.5.6的封包。

ip.src!=10.1.2.3orip.dst!=10.4.5.6

 

// 显示来源或目的TCP端口为25的封包

tcp.port==25

 

// 显示目的TCP端口为25的封包

tcp.dstport==25

 

// 显示包含TCPSYN标志的封包

tcp.flags.syn==0x02


 // 显示payload中包含"http"字符串的tcp封包。

tcpcontains"http"   

 

// 显示请求的uri包含"online"的http封包。

http.request.uricontains"online"   


 // 16进制形式,tcp头部一般是20字节,所以这个是对payload的前三个字节进行过滤

tcp[20:3]==47:45:54

 

http.host[0:4]=="trac"



-------------------------------------------------------------------------------------------------------

参考资料:

http://blog.csdn.net/cumirror/article/details/7054496

http://blog.sina.com.cn/s/blog_3fcc38fc01017fwf.html

http://blog.51cto.com/skypegnu1/1540222

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值