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流
可以用过滤器来获得更具针对性的图表
数据流图
功能:将会话通信过程图形可视化出来
路径:统计->流量图

