WireShark学习笔记
抓包原理:
网络原理:哪种情况能抓到包
本机(主机)环境——直接抓包本机网卡进出流量
wireshark抓电脑本机的包
(仅抓电脑接收到的包)
集线器环境——流量防洪,同一冲突域(理论分析)
PC1/PC2发送数据包到集线器网络内(冲突域/广播域)
集线器将接收到的包往源外的所有端口放洪
wireshark可抓同一个集线器从其他端口接收到的数据包
(抓局域网内的整网的包)
交换机环境:①端口镜像;②ARP欺骗;③MAC泛洪
①端口镜像
虽然图与集线器环境的很类似,但是原理大不相同:在交换器中PC2和PC3通信时PC1抓不到包
但是PC1可以通过做一个策略(端口镜像SPAN)来将PC2和PC3通信时的包复制到PC1上
COPY其他端口到一个特定端口
(中大型网络会用,为正规做法)
②ARP欺骗
没有权限在交换机上做端口镜像但是想获取整个局域网的流量
通过ARP攻击软件Cain&Abel进行ARP欺骗(ARP病毒)
1 | 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取MAC地址的一个TCP/IP协议。 |
由于ARP协议遵循“后到优先”原则,即接收更后面发来的回应包,使得其更容易遭受攻击
一般进行ARP攻击时会发送多个包,毒化接收端的ARP表(记录IP对应的MAC地址)
导致PC2和PC3的通信一定要经过一次PC1(局域网流量劫持)
③MAC泛洪
1 | 泛洪(Flooding)是交换机和网桥使用的一种数据流传递技术,将从某个接口收到的数据流向除该接口之外的所有接口发送出去 |
无权限做端口镜像
通过工具泛洪垃圾包
改变交换机MAC地址表,挤出MAC2和MAC3
根据交换机处理原理,如果接收到的流量包为未知帧时,会进行泛洪
(②、③属于流量劫持并抓包(非正规))
底层原理:
(图从下往上走)
1.Win-/libpcap——Wireshark抓包时依赖的库文件
2.Capture——捕包引擎,利用libpcap/WinPcap从底层抓取网络数据包,libpcap/WinPcap提供了通用的抓包接口,能从不同类型的网络接口(以太网、令牌环网、ATM网等)获取数据包
3.Wiretap——格式支持引擎,从抓包文件中读取数据包,支持多种文件格式(不同协议对应不同格式)
4.Core——核心引擎,通过函数调用将其他模块连接在一起,起到联动调度的作用
1 | 包含Epan——Wireshark Packetage Analyzing,包分析引擎 |
5.GTK1/2——图形处理工具,处理用户的输入输出显示
略过安装与快速抓包
界面简介
(数据包来源:BUUCTF MISC组 被偷走的文件)
略过显示界面设置
数据包操作
标记(标记为不同颜色)、注释、合并、打印、导出
(图略)
略过首选项设置
抓包选项设置
按大小、时间自动保存数据包
Ring buffer with ____ files:使用缓存,即允许多少个包存在(比如设置为4,则只会保存4个包,新的包会覆盖旧的包)
注意多文件(自动保存)和一段文件保存(stop capture)的区别
过滤器设置
抓包过滤器:只抓某些协议/IP地址的数据包(局部分析)
语法说明:BPF(Berkeley Packet Filter)语法——基于libpcap/wincap库
语法 | 书写方式 |
---|---|
类型Type | host(主机)、net(网站)、port(端口) |
方向Dir | src(源)、dst(目的) |
协议Proto | ether(以太网)、ip、tcp、udp、http、ftp |
逻辑运算符 | &&、 |
举例说明: | |
---|---|
src host 192.168.1.1 && dst port 80 | 抓取源地址为192.168.1.1且目的地为80端口的流量 |
host 192.168.1.1 || host 192.168.1.2 | 抓取192.168.1.1和192.168.1.2的流量 |
!broadcast | 不要抓取广播包 |
实验演示:
过滤MAC地址(局域网里抓取的某个MAC发送的流量大且IP在变动,过滤IP过滤不出来)案例 |
---|
ether host 00:88:ca:86:f8:0d(主机的所有流量) |
ether src host 00:88:ca:86:f8:0d(主机发送的流量) |
ether dst host 00:88:ca:86:f8:0d(主机接收的流量) |
过滤掉了其他主机,只研究本机流量(广播包、局域网都无法抓到)
过滤IP地址案例 | |
---|---|
host 192.168.1.1 | 不论源/目的地 |
src host 192.168.1.1 | 只过滤源 |
dst host 192.168.1.1 | 只过滤目的地 |
过滤端口案例 |
---|
port 80 |
!port 80 |
dst port 80 |
src port 80 |
过滤协议案例 |
---|
arp |
icmp |
综合过滤案例
1 | host 192.168.1.100 && port 8080(抓取主机192.168.1.100访问端口8080的数据包(来回数据都有)) |
显示过滤器:只显示某些协议/IP地址的数据包(全局分析)
在已有数据包的情况下进行过滤
比较操作符
符号 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
逻辑操作符
语句 | 含义 |
---|---|
and | 两个条件同时满足 |
or | 其中一个条件被满足 |
xor | 有且仅有一个条件被满足 |
not | 没有条件被满足 |
IP地址 |
---|
ip.addr |
ip.src |
ip.dst |
端口过滤(tcp或udp端口,此处用tcp做例子) |
---|
tcp.port |
tcp.srcport |
tcp.dstport |
tcp.flag.syn |
tcp.flag.ack |
协议过滤 |
---|
arp |
ip |
icmp |
udp |
tcp |
bootp |
dns |
实验演示
过滤IP地址案例 | |
---|---|
ip.addr == 192.168.1.1 | ip地址(源目都有) |
ip.src == 192.168.1.1 | ip源地址 |
ip.dst == 192.168.1.1 | ip目的地址 |
ip.src == 192.168.1.100 and ip.dst == 58.250.135.156 |
过滤端口案例 | |
---|---|
tcp.port == 80 | |
tcp.srcport == 80 | |
tcp.dstport == 80 | |
tcp.flags.syn == 1 | 过滤某一个标志位(syn为同步位/握手位) |
过滤协议案例 |
---|
arp |
tcp |
udp |
not http |
not arp |
综合过滤案例 |
---|
ip.src == 192.168.1.100 and tcp.dstport == 80 |
ip.addr == 192.168.1.106 and udp.port == 4000 |
数据流追踪
功能:将TCP、UDP、SSL等数据流进行重组并完整呈现出来
路径:分析->追踪流->TCP流
注:红色为发起端,蓝色为接收端
专家信息说明
功能:可以对数据包中特定状态进行警告说明(丢包、重置、乱序等问题查询)
标志符 | 含义 |
---|---|
errors | 错误(最严重) |
warnings | 警告 |
notes | 注意 |
chats | 对话 |
统计摘要说明
功能:对抓取的数据包进行全局统计
路径:统计->捕获文件属性
协议分层(分级)统计
功能:统计信息流量中不同协议占用的百分比
通过这个工具可以对全网流量有直观的了解,到底整个网络哪些流量占用最多哪些占用最少等
路径:统计->协议分级
通过比例可以看出运用了什么攻击(比如ARP协议占比很大,就有可能有人使用了MAC泛洪)
注:在结束 分组一列中,FTP Data中的1不会被统计到TCP协议中的24个内
网络节点和会话统计
网络会话(conversations)
网络会话:统计通信会话之间接收和发送的数据包和字节数(源和目的全部统计)(A->B的统计)
通过这个工具可以找出网络中哪个会话(IP地址或端口号)最占用带宽
路径:统计->会话
网络节点(endpoint)
网络节点:统计通信会话中每个节点接收和发送的数据包和字节数(统计单个IP或者单个MAC地址)
通过这个工具可以找出网络中哪个节点(IP地址或端口号)最占用带宽
路径:统计->端点
数据包长度
功能:统计数据流量中包长度的分布
路径:统计->分组长度
一般看百分比
正常流量通信一般在40-2559这个区间(?)
小型帧攻击/巨型帧攻击(数据包坐落区间百分比异常,小于/大于正常区间的数据包占比很大)
注:40-319区间大部分为DNS、ICMP、ARP,后面多为TCP等的数据帧,QQ(OICQ)多为80-160(传文件大可能为1000多),数据包长度大的多为视频、传输文件等
分析碎片化数据攻击时会用到分析数据包长度这种功能
图表分析
常用IO图表(IO Graph)和数据流图(Flow Graph)
IO图表
功能:对网络中的吞吐流量进行实时图形显示
路径:统计->I/O图表
I/O图表(input & output,即吞吐量)
x轴为时间流(默认)
y轴为数据包(默认)可以改为bit流
可以用过滤器来获得更具针对性的图表
数据流图
功能:将会话通信过程图形可视化出来
路径:统计->流量图