利用OmniPeek进行空口抓包以及80211报文分析.docx
- 文档编号:12933553
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:61
- 大小:4.89MB
利用OmniPeek进行空口抓包以及80211报文分析.docx
《利用OmniPeek进行空口抓包以及80211报文分析.docx》由会员分享,可在线阅读,更多相关《利用OmniPeek进行空口抓包以及80211报文分析.docx(61页珍藏版)》请在冰点文库上搜索。
利用OmniPeek进行空口抓包以及80211报文分析
利用OmniPeek进行空口抓包以及802.11报文分析
omnipeek是一款不错的网络报文扫描软件,他不仅可以扫描有线网络下的报文信息,还可以针对无线网卡进行监控和扫描。
通过该软件我们就可以更清晰更快捷的定位无线网络故障,根据扫描结果调整自己无线设备的位置和参数信息。
一、OmniPeek能做什么
和其他sniffer工具一样OmniPeek可以针对自己网卡接收和发送的每个报文进行分析和保存,另外还可以针对一些广播报文进行分析,结合各种过滤规则可以让我们更清楚的了解当前网络中存在的问题。
当然和其他sniffer工具不同的是OmniPeek可以针对无线网卡进行监控,通过对无线报文的分析了解无线网络的运行状况,让用户可以清楚的知道无线网络使用的频段,信号强弱,SSID信息等内容。
二、安装OmniPeek软件
第一步:
下载后运行主程序将进行自解压操作,我们指定一个路径点“unzip”解压按钮即可。
第二步:
到解压缩目录中找到可执行安装程序,运行后选择第一行的installOmniPeek。
第三步:
出现OmniPeek安装向导,我们点“NEXT”按钮继续操作。
第四步:
经过注册步骤后同意安装许可协议。
第五步:
在安装过程中会要求在本机安装.netframework2.0程序,我们点YES即可自动安装。
第六步:
软件会自动将.netframework2.0安装到本地硬盘,大概需要几分钟的时间。
第七步:
顺利安装.NETFramework2.0后点完成按钮返回到OmniPeek安装向导。
第八步:
选择安装类型,一般为了更好的分析网络我们选择“Complete”完全安装,点“NEXT”按钮继续。
第九步:
接下来是选择安装的语言,只有英文和日文两种,对于我们大多数用户来说选择英文界面即可。
第十步:
同样除了.NETFramework2.0程序外我们还需要在本机安装MicrosoftVisualC++2005程序,点确定开始安装。
第十一步:
安装完MicrosoftVisualC++2005后才是正式的复制OmniPeek软件必须文件到本地硬盘。
第十二步:
完成全部安装设置工作,最后我们点“Finish”按钮结束安装。
至此我们就完成了OmniPeek软件的全部安装工作,我们可以通过他来分析无线网络了。
OmniPeek并不支持所有无线网卡,下面这个地址是它支持的网卡信息:
需要注意的是,网卡需要安装OmniPeek专用的驱动才可以进行抓包。
一切准备就绪之后,就可以进行抓包分析了。
三、无线扫描从OmniPeek开始
下载和安装好OmniPeek之后,启动OmniPeek。
启动OmniPeek后首先我们选择建立一个新的捕获扫描事件——NEWCapture。
OmniPeek支持有线网卡和无线网卡,我们只需要在捕获选项窗口中的左边选择适配器。
需要注意的是,WildPacketsAPI属性为Yes表明该网卡支持OmniPeek,No为不支持。
接下来我们选择需要抓包的信道。
点击确定后出现如下界面。
点击开始捕获之后就开始抓包了。
四、扫面附近环境中存在的SSID
Omnipeek的一个基本功能就是扫描附近环境中存在多少ESSID,以及BSSID和STA相关的信息。
在OmniPeek的启动初始界面点击NewCapture之后出现捕获选项:
选择合适的网卡:
在802.11选项卡中选中扫描单选框:
点击编辑搜索项,在弹出的频道扫描选项窗口中复选需要扫描的信道:
点击确定后开始捕获:
注意观察扫描结果中的频道列,已经有多个频道的包出现了。
点击左侧选项卡中的WLAN选项卡:
可以看到附近的无线环境。
包括存在哪些ESSID、BSSID以及下属终端等很多信息。
五、过滤器
跟wireshark一样,OmniPeek也提供了强大的过滤器功能,下面我们介绍如何新建一个过滤器。
在初始界面点击视图|过滤器:
点击插入后弹出插入过滤器窗口:
选中地址过滤器复选框,并在地址栏中填入地址,在地址类型中选择相应的类型,别忘了给你的过滤器命名:
点击确定后就可以看到我们自己的过滤器了。
OmniPeek预置了很多过滤器,我们可以充分利用他们。
六、高级过滤器
高级过滤器功能能够帮助我们自定义一些复杂的过滤规则。
在插入过滤器对话框中我们至少选中一个复选框,然后点击类型下拉菜单,选择Advanced:
如果我们仅需要捕获从88:
1F:
A1:
87:
74:
1B这个地址往返的ICMP包,则右击地址规则框,在弹出的菜单中选择“和”(AND),子菜单中选择“协议”。
弹出协议过滤器对话框:
在这里面其实就可以找到很多协议了,但是这个看上去很不方便,于是我们选择“特殊ProtoSpec”
这就是大家喜闻乐见的协议树了,找到ICMP协议,单击确定:
但是如果我们不仅仅要抓ICMP,同时还要抓ARP报文,那该怎么办呢?
在协议规则框上面单击右键,选择“或”(OR),调出协议过滤器:
找到ARP协议,点击确定:
到此,一个相对复杂一点的过滤器就完成了。
高级过滤器的功能非常强大,并且相对wireshark来说增加了可视化元素,更方便于我们的使用。
七、使用OmniPeek抓取指定终端的报文
知道如何使用过滤器之后,我们就可以进行具体的抓包分析某终端的通信状态了。
7.1抓取未关联任何AP的终端报文
我们都知道终端关联上AP之后会向外发送信息,但是一个没有关联任何AP的终端会不会向外发送信息呢?
我们来抓包分析一下。
打开OmniPeek,新建过滤器,设置为抓取源MAC为88:
1F:
A1:
87:
74:
1B的报文。
点击新建捕获,选择好网卡和扫描范围。
开始捕获
可以看到我们抓到了很多包,有些是终端发出去的,目的地址是广播地址。
有的是其他设备发送给终端的。
那么,这些包是干什么用的呢?
这里涉及到一个主动扫描的机制。
终端发现SSID的方法有两种:
主动扫描和被动扫描。
主动扫描就是终端发送被称为探寻请求(Proberequest)的帧来探测附近环境中存在哪些SSID。
下面我们深入了解一下探寻请求帧的帧格式:
跟在wireshark里类似,双击1号报文,弹出详细的报文窗口:
PacketInfo里面是关于该报文基本信息,包括:
PacketInfo
报文编号
PacketNumber:
1
Flags:
0x00000000
Status:
0x00000000
报文长度
PacketLength:
149
接收时间
Timestamp:
11:
34:
35.30579040010/21/2015
数据速率
DataRate:
21.0Mbps
信道/频率
Channel:
12412MHz802.11b
信号等级
SignalLevel:
91%
信号强度
SignaldBm:
-59
噪声等级
NoiseLevel:
91%
噪声强度
NoisedBm:
-62
注意:
这些信息并不是报文的内容,他只是这些报文到达OmniPeek时候的状态。
802.11MACHeader即802.11报文的报头,长度为0~16bit:
版本(一般为0)
Version:
0[0Mask0x03]
与Subtype共同定义帧类型
Type:
%00Management[0]
Subtype:
%0100ProbeRequest[0]
FrameControlFlags:
%00000000[1]
时隙
Duration:
0Microseconds[2-3]
目的地址
Destination:
FF:
FF:
FF:
FF:
FF:
FFEthernetBroadcast[0-5]
原地址
Source:
88:
1F:
A1:
87:
74:
1B[6-11]
BSSID
BSSID:
FF:
FF:
FF:
FF:
FF:
FFEthernetBroadcast[12-17]
序号
SeqNumber:
18[18-19Mask0xFFF0]
接下来是ProbeRequest帧的内容,这里面的内容比较多,我们挑选一部分来说明:
802.11Management-ProbeRequest
要探寻的SSID
SSID
支持的速率
SupportedRates
支持的扩展速率
ExtendedSupportedRates
SSID所在的信道
DirectSequenceParameterSet
HT能力信息
HTCapabilityInfo
AP在接收到终端发出的探寻请求之后,会返回一个Proberesponse,来表明自己有一个这样的SSID存在:
7.2抓取信标管理帧
前面我们说了还有两种扫描方式,那么什么是被动扫描呢?
我们常说“AP向外广播SSID”,那么这个“广播”是怎么一回事呢。
其实这就是AP向广播地址发送一种名叫信标管理帧(Beaconmanagementframe)的报文来标示自己有一个SSID等待终端来连接,外信标管理帧内还包含了终端加入BSS之前需要了解的所有必要信息。
验证一下,我们在电脑上利用软件新建一个SSID为“test”热点,并且不让任何终端连接。
利用OmniPeek扫描功能找到这个SSID,可以看到BSSID为0A:
11:
96:
D0:
DE:
F8,信道为11。
新建过滤器,只抓取该BSSID的报文:
选择好网卡和扫描范围后开始扫描:
可以看到我们的热点发送了大量的Proberesponse,这是因为有很多终端在主动扫描。
除了Proberesponse之外,我们还可以看到Beacon,也就是信标管理帧。
双击显示帧内容:
●Timestamp:
[0-9]400916951[24-31]Microseconds[0-11]
Beacon除了标示向外SSID之外,还用来确保客户端和AP的时钟同步,Timestamp就是用来实现这一功能。
●BeaconInterval:
[0-15]160[32-33]
Beacon发送的间隔,可以调节。
●CapabilityInfo:
[0-15]%1000010000110001[34-35]
扩频参数集,指FHSS、DSSS、ERP、OFDM或HT特定信息。
●SSID
用于显示SSID
●SupportedRates
支持的速率。
●DirectSequenceParameterSet
信道
●TrafficIndicationMap
流量指示图,节电进程使用的字段。
●RSNInformation
RSN信息。
TKIP或CCMP加密信息和认证方法。
●VendorSpecific[0-14]
厂商自定义字段
八、抓取终端关联到AP的过程
8.1开放认证的SSID
连接到BSS需要两个步骤,即认证和关联。
下面我们通过抓包来逐步认识一下这一过程。
由于一开始我们并不知道关联过程中有哪些类型的报文参与其中,所以我们将过滤器的筛选粒度设置的大一些,抓取终端发送和接受的所有报文。
开始捕获,然后关联上CMCC-WEB。
可以看到从第一个802.11Auth帧开始,到第一个ARPReq结束,共有802.11Ack、802.11Auth、802.11AssocReq、和802.11AssocRsp4种类型的帧参与。
于是我们剔除其他帧,排除干扰。
新建过滤器,在高级模式下选择上面的协议。
在捕获窗口点击左上角的筛选按钮,插入我们刚刚新建的过滤器。
复制选择的报文到新窗口
可以看到,除了我们需要的报文之外,还有很多ACK混了进来。
这是因为AP在每收到终端的一条数据之后都会返回一条ACK。
点开802.11Auth报文,可以看到由于这个SSID是未加密的,所以这个报文内容非常简单。
802.11Ack的内容也非常简单,只有MAC子层报头而已。
802.11AssocReq终于有内容了,仔细看看是不是跟Beacon帧的内容类似。
注意这是终端发送给AP的,终端在哪里知道的这些信息呢?
方法有两种:
主动扫描和被动扫描。
802.11AssocRsp,相当于精简了的802.11ProbeRsp
通过以上一系列交互,终端终于成功关联上了AP。
8.2PSK认证的SSID
下面我们来抓取终端关联到使用PSK认证的SSID过程。
新建过滤器,为了去除多于报文的干扰,我们将不抓取802.11ProbeReq、802.11ProbeRsp和802.11ACK报文,并且过滤掉所有的错误报文:
新建捕获,同时设置好网卡和信道。
注意:
这里的信道设置十分重要,一定要设置到正确的信道,不可以使用扫描模式。
开始捕获后,将终端关联到我们之前建的热点上。
可以看到,除了有之前开放认证的报文之外,还多了EAP4次握手的报文。
另外还有其他几种类型的报文:
●802.11Action
用来触发AP的下一部动作。
●802.11BAR和802.11BA
块确认请求和块确认,类似于TCP/IP的窗口机制。
●802.11CTS和802.11RTS
请求发送/清除发送,一般用于解决隐藏节点问题。
●802.11EncryptedData
加密之后的报文,不解密的话无法查看载荷内容。
EAP4次握手之后报文的上一层载荷是加密过的,我们有没有办法来解密呢?
答案是有的,前提是你得知道密码。
或者你暴力破解。
下面我们用密码来解密这些加密报文。
点击工具菜单,选择解密wlan数据包,选择解密全部数据包。
点击…来新建一个密钥集
插入,然后填写名称,短语,和SSID
一路点击确定,如果密码或者SSID不匹配的话,会弹出错误提示
成功的话就可以查看解密后的报文内容了
8.3抓取WEB认证报文
我们继续使用之前抓取PSK报文的过滤器
依然需要选择好正确的网卡和信道(重要)
开始捕获后我们将终端连接到CMCC-WEB,成功捕获到报文。
由于CMCC-WEB是开放的,所以我们能够直接看到报文内容,这是一个DHCP请求包。
可以看到终端做了一系列动作,DHCP,ARP等等,这时我们还没有进行认证。
我们打开浏览器,任意打开一个网页。
可以看到我们抓了非常多的报文,我们利用搜索功能来找到我们需要的报文。
很容易就找到了我们需要的报文,我们这这个包开始往下分析。
这是一个DNS请求报文,DNS服务器地址是221.130.33.52。
服务器收到请求后向我们返回域名的ip地址是111.13.101.208。
终端在TCP3次握手之后,向XX的服务器发起了HTTPGET请求。
但是随即被重定向到Portal页面。
断开连接之后随即开始了认证过程,这里使用的HTTPS协议,所以我们看不到终端向Portal服务器提交账号密码的过程。
Portal服务器收到账号密码后,与RADIUS服务器验证成功后通知AC放行,确认AC放行后开始计费。
8.4抓取EAP-PEAP认证报文
我们接着使用之前的过滤器,选择好网卡和信道,开始抓包后终端连接到CMCC。
因为这里需要wireshark中的CMPORTAL解析插件,所以我们将所有报文保存为wireshark支持的格式后使用wireshark来进行分析。
点击文件,保存全部数据包。
保存类型选择Libpcap
使用wireshark打开刚刚的报文
过滤掉无关报文
这就是EAP-PEAP整个认证流程的所有报文,PEAP认证的过程如下图
E1认证初始化
1)WLANUE向WLANAN发送一个EAPoL-Start报文,开始802.1x接入的开始。
2)WLANAN向WLANUE发送EAP-Request/Identity报文,要求WLANUE将用户信息送上来。
3)WLANUE回应一个EAP-Response/Identity给WLANAN的请求,其中包括用户的网络标识。
用户ID,对于PEAP-mschchapv2认证方式的用户ID是由用户在客户端手动输入或者配置的。
此次用户名建议同用户的portal认证用户名密码。
4)WLANAN以EAPOverRADIUS的报文格式将EAP-Response/Identity发送给Radius,并且带上相关的RADIUS的属性。
5)Radius收到WLANAN发来的EAP-Response/Identity,根据配置确定使用EAP-PEAP认证,并向WLANAN发送RADIUS-Access-Challenge报文,里面含有Radius发送给WLANUE的EAP-Request/Peap/Start的报文,表示希望开始进行EAP-PEAP的认证。
6)WLANAN将EAP-Request/PEAP/Start发送给WLANUE。
E2建立TLS通道
7)WLANUE收到EAP-Request/Peap/Start报文后,产生一个随机数、客户端支持的加密算法列表、TLS协议版本、会话ID、以及压缩方法(目前均为NULL),封装在EAP-Response/TLS/ClientHello报文中发送给WLANAN。
8)WLANAN以EAPOverRADIUS的报文格式将EAP-Response/TLS/Client
Hello发送给认证服务器Radius,并且带上相关的RADIUS的属性。
9)Radius收到ClientHello报文后,会从Client的Hello报文的加密算法列表中选择自己支持的一组加密算法+Server产生的随机数+Server证书(包含服务器的名称和公钥)+证书请求+Server_Hello_Done属性形成一个ServerHello报文封装在EAP消息中,使用Access-Challenge报文发送给WLANAN。
10)WLANAN把Radius报文中的EAP-request消息发送给WLANUE。
11)WLANUE收到报文后,进行验证Server的证书是否合法(使用从CA证书颁发机构获取的根证书进行验证,主要验证证书时间是否合法,名称是否合法)即对网络进行认证,从而可以保证Server的合法。
如果合法则提取Server证书中的公钥,同时产生一个随机密码串pre-master-secret,并使用服务器的公钥对其进行加密,最后将加密的信息ClientKeyExchange+客户端的证书(如果没有证书,可以把属性置为0)+TLSfinished属性封装成EAP-Rsponse/TLSClientKeyExchange报文发送给WLANAN.如果WLANUE没有安装证书,则不会对Server证书的合法性进行认证,即不能对网络进行认证。
12)WLANAN以EAPOverRADIUS的报文格式将EAP-Response/TLSClientKeyExchange发送给认证服务器Radius,并且带上相关的RADIUS的属性。
13)Radius收到报文后,用自己的证书对应的私钥对ClientKeyExchange进行解密,从而获取到pre-master-secret,然后将pre-master-secret进行运算处理,加上WLANUE和Server产生的随机数,生成加密密钥、加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了。
Radius将协商出的加密方法+TLSFinished消息封装在EAPoverRadius报文Access-Challenge中,发送给WLANAN。
14)WLANAN吧Radius报文中的EAP-Request消息发送给UE。
15)WLANUE回复EAPResponse/TLSOK消息。
16)WLANAN将EAPResponse/TLSOK消息封装在Radius报文中,告知Radius建立隧道成功。
至此WLANUE与Radius之间的TLS隧道建立成功。
E3认证过程。
17)WLANAN把Radius报文中的EAP域提取,封装成EAP-request报文发送给WLANUE。
18)WLANUE收到报文后,用服务器相同的方法生成加密密钥,加密初始化向量和hmac的密钥,并用相应的密钥及其方法对报文进行解密和校验,然后产生认证回应报文,用密钥进行加密和校验,最后封装成EAP-response报文发送给AP,AP以EAPOverRADIUS的报文格式将EAP-Response发送给认证服务器RadiusServer,并且带上相关的RADIUS的属性,这样反复进行交互,直到认证完成。
在认证过程中,RadiusServer会下发认证后用于生成空口数据加密密钥(包括单播、组播密钥)的PMK给WLANUE。
19)服务器认证客户端成功,会发送Access-Accept报文给WLANAN,报文中包含了认证服务器所提供的MPPE属性。
20)WLANAN收到RADIUS-Access-Accept报文,会提取MPPE属性中的密钥做为WPA加密用的PMK,并且会发送EAP-success报文给WLANUE。
E4地址分配
21)WLANUE和WLANAN间的空中数据报文进行加密传送,与WLANAN进行DHCP流程交互,直至WLANUE获取IP地址E5计费开始。
22)WLANUE通过RADIUS-Accounting-Request(Start)报文通知Radius开始进行计费,含有相关的计费信息。
23)Radius向WLANUE回应RADIUS-Accouting-Response(Start)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 OmniPeek 进行 空口 以及 80211 报文 分析
![提示](https://static.bingdoc.com/images/bang_tan.gif)