最近想通过wireshark分析网络流量并且看看协议数据报长什么样子,打开wireshark准备抓包,结果面对主界面一问三不知,在找学习文档的时候发现了这本书,是非常基础且友好的入门指导,书薄薄一本看起来也让心情很好,是非常适合我的一本书。
记录以下对我比较有用的几块内容
过滤器
wireshark使用2种捕获器,它们分别是 显示过滤器 和 捕捉过滤器。
两个过滤器的使用场景不一样,过滤语法也不一样。
捕捉过滤器
捕捉过滤器使用 BPF 语法,由关键词、原语和数字内容组成。
限定词的分类
限定词 | 说明 | 举例 |
---|---|---|
TYPE | 指出名字或者数字的意义 | host , net , port |
DIRECTION | 选择传输方向 | src , dst |
PROTOCOL | 匹配协议 | Ether , ip , tcp , udp , http , ftp |
每条条过滤器被称为 表达式
,表达式
=一个或多个限定词
+一个ID/数字
;
单个限定词也可以做表达式的,比如说 tcp 就是只抓 TCP 包这样。
就像一条 ACL 可以由多条 rule 组成,一个表达式也可以有多条原语实现一个细致而贴心的捕捉过滤,在表达式与表达式之间,使用逻辑运算符 &&
||
!
进行连接。
一些例子
- 主机名和地址过滤器
<DIRECTION> <TYPE> <IP-ADDR/HOSTNAME>
eg: src host 192.168.2.211
- 端口过滤器
port <PORT-ID>
可以抓一些应用的数据,此外有些识别不出的协议也可以用端口来抓 - 协议过滤器
<PROTOCOL>
有些协议是识别不出来的,用这种办法没法抓 - 协议域过滤器
icmp[0]==3
# 抓destination unreachable
tcp[13]&16 == 16
#抓设了ACK位的包,这里的&
是二进制与
显示过滤器
捕捉过滤器把抓到的包生成捕捉文件(.pcap),显示过滤器把文件再筛选一次,显示在用户界面上。因为显示过滤器长在用户主界面上的缘故,它比捕捉过滤器使用频率要更高一些。它的语法也非常简洁:
Expression
= Field Name
+ Relation
+ Value
[+operator
+Expression...
]
看起来和捕获过滤器差不太多,但它的Filed Name
非常多,多到可怕,有很多闻所未闻见所未见的协议以 【protocol.feature.subfeature】的形式存在。这个时候,直接使用它的用户图形界面看着建会比较友善,多看几次常用表达式就能背下来了。
常用的表达式有这些
ip.addr == 192.168.2.33
-
frame.len <= 128
...还有好多
自己抓着玩的时候还可以通过已存在的包自动建立表达式,比如说有一个tcp包,想看看这个包所上下文,可以右键‘追踪流’看看这个包所属的数据流。此时的Expression是 tcp.stream == <number>
这样子。
流量分析
流量分析的工作像数独或者填字游戏之类七七八八的东西,通过wireshark 主界面 Statistics 标签中的内容,观测者能拼凑出这个网络的全貌。
端点和网络会话
虽然现实过滤器可以实现一些会话跟踪的功能,但是wireshark实际上自带了更加直观和全面的流量分析工具。
在主界面 Statistics>EndPoint 中,打开来是一个对话框,有当前抓到的所有端点,以传输层、网络层和数据链路层分页。其中Name Resolution 复选框可以帮助直接解析端点的内容,比如网络层和传输层做DNS解析,可以直接看到网址。
此外可以使用这个窗口对某些数据包着色,这样可以在主界面上将他们区分出来,是一个批量高亮着色数据包的好办法。
除了捕捉端点,还可以通过 Statistics>Conversation 得到这段时间所产生的会话,用法和端点的差不多。
通过端点和会话信息可以对这段时间整个网络的流量情况有一个概念。
比如通过端点窗口中Bytes字段可以知道这段时间谁发送的数据量最多,再通过会话窗口查看它在和谁通信。有的时候会看到一些看着就不对头的网址,仔细康康就会发现是派送垃圾广告的网站偷偷和我的电脑产生了一些不伦之恋一样的连接,本人马上把臭网页拖进host DNS混淆,垃圾网页休想靠近我一步!!!
协议解析
事实上这是我比较想做的事情啦,一开始用wireshark就是想看看协议长什么样子。结果看了这本书才发现都不需要自己动手抓,去 Wireshark官网 -> Develop -> release -> epan/dissector 就是协议解析器的源码,用C语言写的,wireshark识别协议的方式,每个协议都有。真系没想到。
杂七杂八的内容
还有一些 TTL IO 数据包长度 数据流跟踪(只有 TCP UDP HTTP SSL)的图表,可以用来看网络流量情况和阻塞情况,在网络故障排查里比较有用,都是看一眼就知道怎么回事的内容,非常用户友好,但是现在网络没什么故障,我也不太好奇别人在干啥。如果好奇出租屋里其他人在干嘛可以用ARP欺骗的方法让别人的数据发送到自己电脑上。如果能够连接到公用的路由器,还能直接设置镜像端口,比ARP欺骗还方便。的确对别人在干什么没有好奇心,还是不搞了。
网友评论