想要抓包的时候发现不会抓包,学习了一下http://www.higlab.com/的抓包技术,挺有意思的。写点笔记
抓包过滤器的用法
Wireshark主要提供两种主要的过滤器:
1、捕获过滤器(抓包之前设置):当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获 示例(需选择网卡): src host 127.16.89.101
2、显示过滤器(抓包之后设置):根据指定的表达式用于在一个已经捕获的数据包集合中,隐藏不想显示的数据包,或者只显示那些需要的数据包
示例:ip.addr==172.16.89.101
注意: 捕获过滤器语法派生自libpcap/winpacp库中tcpdump的语法;
显示过滤器的配置语法则在若干年后定义,因此两种语法配置并不相同。
Wireshark捕获过滤器
1.BPF语法被广泛应用于多种数据包嗅探软件
2.掌握BPF语法对你在数据包层级更深入地探索网络来说非常关键
3.使用BPF语法创建的过滤器被称为表达式
4.每个表达式由一个或多个原语组成
5.每个原语包含一个或多个限定词,然后跟着一个ID名字或者数字
Dst host 192.168.1.1 && tcp port 80
示意:抓取目的地址是192.168.1.1,源端口或者目的端口是tcp 80 的数据包
限定词 说明 例子
Type 指出名字或者数字所代表的的意义 host、net、port
Dir 指明目标是源,名字或者数字 src、dst
Proto 限定所要匹配的协议 ether、ip、tcp、udp、http、ftp
3种逻辑运算符,对原语进行组合
1.连接运算符 与(&&或and)
2.选择运算符 或(||或or)
3.否定运算符 非(!或not)
示例:
tcp portrange 100-200 抓取tcp端口范围100-200
tcp[tcpflags] & (tcp-syn | tcp-fin) !=0 抓tcp的flag位,要么syn=1,要么fin=1
len<=128 抓取长度小于128的数据包
udp portrange 2000-2500 抓取udp端口范围2000-2500
ip[8:1]==64 tcp偏移8个字节,下一个字节是多少
tcp[13]&32==32 设置了URG位的TCP数据包
tcp[13]&16==16 设置了ACK位的TCP数据包
tcp[13]&8==8 设置了PSH位的TCP数据包
tcp[13]&4==4 设置了RST位的TCP数据包
tcp[13]&2==2 设置了SYN位的TCP数据包
tcp[13]&1==1 设置了FIN位的TCP数据包
tcp[13]&0==0 抓取所有标记位都未置1的TCP流量,在怀疑遭遇了空扫描攻击时使用
tcp[13]&3==3 TCP SYN-FIN置1的数据包
tcp[13]&5==5 TCP RST-FIN置1的数据包
tcp[13]&6==6 TCP SYN-RST置1的数据包
tcp[2:2]>50 and tcp[2:2]<100 只抓取目的端口50-100的TCP数据包
tcp[14:2]<8192 只抓窗口大小低于8192的tcp数据包
显示过滤器
1.过滤器表达式对话框(简单方法)
2.过滤器表达式语法结构(高级方法)
3.在抓包主窗口数据结构区域内,将数据包的某个属性值指定为显示过滤器的过滤条件。 Wireshark过滤器表达式的逻辑操作符 and 两个条件需同时满足 or 其中一个条件满足 xor 有且仅有一个条件满足 nor 没有条件被满足
wireshark常用显示过滤器
!tcp.port==3389 排除RDP流量
tcp.flags.syn==1 具有SYN标志位的TCP数据包
tcp.flags.rst==1 具有RST标志位的TCP数据包
!arp 排除ARP流量
http 所有http流量
tcp.port==23||tcp.port==21 文本管理流量(Telnet或FTP)
smpt||pop||imap 文本email流量(SMTP、POP或IMAP)
ip.src_host==172.16.89.101 and http.host contains "higlab"
tcp.src==10.0.0.5 && tcp.flags.syn==1 && tcp.flags.ack==0 三次握手第一次的数据包 --某台主机在执行某种形式的TCP端口扫描,或者某台主机感染了蠕虫病毒时,就会批量生产这样的数据包
ip.src==10.0.0.3&&(http.cookie||http.set_cookie) 只显示由主机10.0.0.3发送的包含HTTP cookie的所有数据包
tcp.flags.reset==1&&tcp.seq==1 表示握手请求被对方拒绝了
tcp.flags.syn==1&&tcp.analysis.retransmission 过滤出SYN重传的握手请求
tcp.stream eq 16 && tcp.analysis.retransmission 只显示某特定连接16中发生重传的所有TCP数据包
tcp.stream eq 0 && (tcp.analysis.window_full||tcp.analysis.zero_window) 只显示某条特定TCP连接中出现窗口问题的TCP数据包
http.host==<"hostname"> 只显示访问某特定主机名的http协议数包
http.request.uri contains "baidu.com"
dns.flags.response==0 dns查询
配置显示过滤器宏(分析–>显示过滤器宏)
Name Text
test ip.src==$1 and tcp.dstport==$2
在显示过滤器调用 ${test:192.168.1.1;80} 相当于 ip.src==192.168.1.1 and tcp.dstport == 80
基本信息统计工具
Summary(信息汇总)工具的用法
统计-->捕获文件属性
硬盘 1G=1000M
内存 1G=1024M
网络中速率 一般按 1024计算
B字节 b比特 1B=8b
MTU一般是1500字节 我输入Snap长度设置为100字节,wireshark捕获的数据和网络的真实流量相差大概15倍左右
Protocol Hierarchy(协议层级)工具的用法 --网络中各种协议的占比,通过占比能简单的推断出是否存在扫描攻击
统计-->协议分级
用tcp传数据,正常利用率在50%左右
end packets:隶属于该协议类型的数据包的纯粹数量(没有数据)
Conversations(会话)工具的用法 --每层谁和谁说了话,谁和谁的通信流量大
统计-->Conversations
Endpoint(端点)工具的用法
统计-->Endpoints
MAC地址少,IP端点多:可能是有一台路由器来负责转发所有进出本地LAN的IP流量,也就是说所有流量都是由某一个IP地址为网关做集中转发的,这属于正常现象
IP地址少,TCP端点(TCP端口号)多:每个IP都试图建立或已经建立多条TCP连接。对于此现象,如果IP端点是服务器,就属于正常现象,否则极有可能是有人在发动网络攻击,比如TCP SYN攻击
HTTP工具的用法
统计-->http-->分组计数器
显示浏览的网站
流量图 --很好的显示了每个包的作用
统计-->流量图
三板斧
捕获文件属性
协议分级
端点 --一般情况下,端点排在前列的,对话也在前面
对话
高级信息统计工具
IO Graphs
统计-->I/O图表
测算链路的吞吐量
定位与网络性能有关的问题
通过观察TCP报文段相关的数据帧抓取时间间隔,通常应能判断出是否存在与TCP性能有关的问题
以后会讲抓取时间如何分析排除网络故障
TCP StreamGraph
统计-->TCP流图形
分析某一个TCP报文,必须点中一个TCP
Time-Sequence(Stevebs)子菜单用法
使用之前先停止抓包
具有方向性
反映的是:在单位时间内,受监控的TCP流在某个方向所传输数据的字节数
Time-Sequence(tcp-trace)子菜单用法:
起源于UNIX tcpdump工具
可提供被监控TCP连接的诸多信息,包括TCP确认、TCP重传、以及TCP窗口大小
先停在抓,再分析数据,生成图表
可为网络排障诊断提供重要线索
可直观反映出诸多现象,比如,TCP窗口的填充速度高于预期的大规模TCP重传等现象
注释:
TCP重传:TCP重传现象预示着发生了丢包,说明网络卡或者其他与网络性能有关的问题
TCP零窗口:TCP零窗口现象意味着TCP接收方或者发送方反应迟钝
tcp.stream eq 16 and tcp.analysis.retransmission 反映某股数据流重传现象
tcp.stream eq 16 and tcp.analysis.zero_window 反映某股数据流中的TCP零窗口现象
专家Info工具简介
分析-->专家信息
简介
1.Expert Info工具是内置于Wireshark软件中的最强大的工具之一
2.不但能在抓包过程中自动识别网络中发生的异常情况
3.甚至还能给出导致异常情况的具体原因
4.Wireshark会把识别出的事件按出故障概率的高低,通过EI工具,以事件类别的方式来加以显示,同时还使用了颜色来加以区分
信息分类
1.Errors:所抓数据识别出的严重错误 --畸形或者校验不通过
对于一个网络而言,穿梭于其中的数据包只要有百分之一、二的害群之马(即具备Error事件特征的数据包),不但会导致事故频发(比如TCP重传),而且会使网络变得很慢,因此只要网络用起来大致正常,Wireshark是不可能抓到那么多真的害群之马的。
2.Warnings:所抓数据识别出的一般性问题
比如,感知道了存在TCP零窗口、TCP window full、TCP报文段失序、TCP报文段丢失等现象,又或者识别出了相关网络协议在运作时发出的数据包的内容与正常情况下不一致,所以一般性问题几乎都是应用程序或通信问题。
总结:
Wireshark能感知数据包中的种种特征,比如窗口大小字段、TCP报文在传输中是否失序、TCP数据收到之后是否做出确认。但是请注意,Warings事件只是Wireshark自认为比较重要的事件,却也不可全信,比如说Wireshark未能抓取所有数据包,则必会生成Warings事件,但这未必就是网络问题,可能只是抓包时机把握不对。
3.Notes:所抓数据识别出的可能会引发故障的异常现象
比如,感知到了TCP重传、重复确认、以及快速重传等现象。虽说上述行为可能会对网络产生严重影响,但也属于TCP的正常行为,所以被归类在Notes,提醒用户这些数据有导致问题的嫌疑
总结:
Notes事件的每一种子事件,并非是由固定的某一种类型的网络故障所导致的,以TCP重传现象为例,可能是因为丢包错误、网络状态差(宽带低、延迟高)、服务器或客户端停止响应等。
Wireshark只是通过Exper Info工具提示存在TCP重传现象,至于如何定位找到原因,还得靠自己
4.Chats:此标签下的数据包都符合常规流量特征
5.Details:此标签显示Chats标签事件的详情
6.Packet Comments:把含有注释信息的数据包--记录在案
1.有时候Wireshark感知的Warings事件无关紧要,但是识别出的Notes事件却偏偏会影响网络性能,所以排除故障时,需要关注内在,切勿只看表面
2.Wireshark摆乌龙的情况时有发生,即有可能是杯弓蛇影、谎报军情误报故障;也有可能会一叶障目感知不到网络的异常状况
3.所以Wiresh虽然智能,但也不过是个工具而已,解决网络故障靠的还是网管人员的知识储备。