抓包原理:

网络原理:哪种情况能抓到包

本机(主机)环境——直接抓包本机网卡进出流量

wireshark抓电脑本机的包

(仅抓电脑接收到的包)

集线器环境——流量防洪,同一冲突域(理论分析)

PC1/PC2发送数据包到集线器网络内(冲突域/广播域)

集线器将接收到的包往源外的所有端口放洪

wireshark可抓同一个集线器从其他端口接收到的数据包

(抓局域网内的整网的包)

交换机环境:①端口镜像;②ARP欺骗;③MAC泛洪

①端口镜像

虽然图与集线器环境的很类似,但是原理大不相同:在交换器中PC2和PC3通信时PC1抓不到包

但是PC1可以通过做一个策略(端口镜像SPAN)来将PC2和PC3通信时的包复制到PC1上

COPY其他端口到一个特定端口

(中大型网络会用,为正规做法)

②ARP欺骗

没有权限在交换机上做端口镜像但是想获取整个局域网的流量

通过ARP攻击软件Cain&Abel进行ARP欺骗(ARP病毒)

1
2
3
4
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取MAC地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;
收到返回消息后将该IP地址和MAC地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。

由于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
2
3
4
5
包含Epan——Wireshark Packetage Analyzing,包分析引擎
①Pritocol-Tree:保存数据包的协议信息,Wireshark的协议结构采用树形结构,解析协议报文时只需要从根节点通过函数句柄依次调用各层解析函数即可
②Dissectors:在Epan/Dissector目录下,各种协议解码器,支持700+种协议解析,对于每种协议,解码器都能识别出协议字段(field),并显示出字段值(field value)由于网络协议种类很多,为了使协议间层次关系明显,对数据流里的各个层次的协议能够逐层处理,Wireshark系统采用了协议树的方式
③Plugins:一些协议解码器以插件形式实现,源码在plugins目录
④Display-Filters:显示过滤引擎,源码在epan/dfilter目录

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流

可以用过滤器来获得更具针对性的图表

数据流图

功能:将会话通信过程图形可视化出来

路径:统计->流量图