一道无线流量题目引发的思考

学习一番IEEE 802.11后,从原理性角度分析一道无线流量的CTF题目。

在文章的开头处,先贴个wireshark分析802.11协议的pdf链接,可根据该文档所描述的内容快速过滤相应的数据包,这也是本文讲述如何使用wireshark学习分析IEEE802.11的帮助文档。不懂就翻翻咯~。本篇以一道ciscn2018的题目为引,从原理性分析学习IEEE802.11

帧的基本类型

关于帧的基本类型,基本上大家也都知道三种类型(贴个基础知识链接,不大理解的先看其中无线网络基础知识部分),这里重点讲述下管理帧。

Management frame(管理帧)

该帧的所显示的数据包一般用于各个设备之间建立第二层的连接,提供认证和连接服务。

该帧又细分为下面14种类型,每种类型所对应的中文注释以及过滤语句均已呈现。

1540112190240

而在管理帧中,值得重要一提的是Beacon,俗称信标Beacon就像广播一般,向周边的其他设备声明某AP的类型及配置信息。下面会详细分析该帧。

Control frames(控制帧)

协助数据帧的传递,控制数据帧和管理帧的发送。

Data frame (数据帧)

包含真正的传输数据,最重要的是它可以将数据从无线网络转发到有线网络。在wireshark中,如果AP是使用的是WEP或者WAP加密,Data frame类型包,经过wireshark自带的解密功能wepwpa-pwdwpa-psk任意一种方法解密后,该类型数据包就会解析为更高层次的数据包,比如http数据包,在等会讲述的例题中,便与此相关。

管理帧中Beacon的具体分析

关于管理帧的具体分析,这里直接挑选Beacon来讲解。

为什么需要重点讲述Beacon呢?Beacon作为一个广播数据包,是一个AP向所有无线设备通知存在一个可用的AP,涵盖了一个AP大量的配置参数信息。另外,在IEEE802.11下,不同管理帧的具体内容和用途虽然不一样,但其他都与Beacon相似。下面即是一个Beacon的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Frame 1: 279 bytes on wire (2232 bits), 279 bytes captured (2232 bits) on interface 0
Radiotap Header v0, Length 24
802.11 radio information
IEEE 802.11 Beacon frame, Flags: ........ -beacon广播包
Type/Subtype: Beacon frame (0x0008) -可使用wlan.fc.type_subtype == 0x0008过滤
Frame Control Field: 0x8000
.... ..00 = Version: 0
.... 00.. = Type: Management frame (0) -帧类型为管理帧
1000 .... = Subtype: 8
Flags: 0x00
.000 0000 0000 0000 = Duration: 0 microseconds
Receiver address: Broadcast (ff:ff:ff:ff:ff:ff)
Destination address: Broadcast (ff:ff:ff:ff:ff:ff)
Transmitter address: Tp-LinkT_ca:13:df (30:fc:68:ca:13:df) -传输mac地址
Source address: Tp-LinkT_ca:13:df (30:fc:68:ca:13:df) -源地址
BSS Id: Tp-LinkT_ca:13:df (30:fc:68:ca:13:df) -bssid
.... .... .... 0000 = Fragment number: 0
0110 1110 1011 .... = Sequence number: 11
IEEE 802.11 wireless LAN -IEEE 802.11帧信息
Fixed parameters (12 bytes) -固定参数
Timestamp: 0x000000017752d876 -发送数据包的时间戳
Beacon Interval: 0.102400 [Seconds] -beacon数据包的重传间隔
Capabilities Information: 0x0431 -Wap的硬件容量信息
Tagged parameters (219 bytes) -标记参数
Tag: SSID parameter set: T35t -ssid(网络名称)
Tag: Supported Rates 1(B), 2(B), 5.5(B), 11(B), 6, 9, 12, 18, [Mbit/sec]
Tag: DS Parameter set: Current Channel: 1 -Wap广播信道
Tag: Traffic Indication Map (TIM): DTIM 0 of 0 bitmap -传输指示映射
Tag: ERP Information
Tag: Extended Supported Rates 24, 36, 48, 54, [Mbit/sec] -扩展支持速率
Tag: HT Capabilities (802.11n D1.10) -超线程性能
Tag: HT Information (802.11n D1.10) -超线程信息
Tag: RSN Information -安全网络信息
Tag: Vendor Specific: Microsoft Corp.: WPA Information Element -供应商及WPA信息
Tag Number: Vendor Specific (221) -供应商编号
Tag length: 22 -长度
OUI: 00:50:f2 (Microsoft Corp.) -安装程序
Vendor Specific OUI Type: 1
Type: WPA Information Element (0x01) -类型
WPA Version: 1 -WPA版本为1
Multicast Cipher Suite: 00:50:f2 (Microsoft Corp.) AES (CCM) -多播密码插件
Unicast Cipher Suite Count: 1 -单播密码套件数
Unicast Cipher Suite List 00:50:f2 (Microsoft Corp.) AES (CCM) -单播密码套件列表
Auth Key Management (AKM) Suite Count: 1 -认证密钥管理套件数
Auth Key Management (AKM) List 00:50:f2 (Microsoft Corp.) PSK -认证密钥管理列表
Tag: Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
Tag: Vendor Specific: TP-LINK TECHNOLOGIES CO.,LTD.
Tag: Vendor Specific: Microsoft Corp.: WPS

原理性题解:2018ciscn-misc-寻找入侵者

题目

黑客使用无线钓鱼攻击一个SSID为“CyberPeace”的热点,但是我们的蜜罐系统捕获了他的数据包,并且已经得知他的握手包密码就是他的网卡地址。可是根据我们最新获得的情况,他又发送重连请求的Malformat Frame试图崩溃我们的无线路由器。请从attack包中找到密码,并解开他的数据包,找到那条畸形数据。

题目所给附件:

1540132034379

思路解析

attack.pcapng记录着蜜罐系统所抓取的所有数据包,而hanshake.cap则是蜜罐系统抓取的黑客的握手包。本题的思路也就是通过分析attack.pcapng,寻找到黑客mac地址,然后通过aircrack-ng工具验证hanshake.cap握手包的密码,并且使用这个密码解密hanshake.cap的数据。通过分析解密后的hanshake.caphttp数据,找到另外一个key.pcap的在线下载链接,然后分析key.pcap,找到其中的畸形数据,也就是最终的答案。

解题步骤

wireshark打开attack.pcapng数据包,依照题意“黑客使用无线钓鱼攻击一个SSID为‘CyberPeace’的热点”,我们可以先过滤SSID名为CyberPeaceBeacon的信标分组(一般通过Beacon就可以分析出AP的基本信息),过滤语句wlan.fc.type_subtype == 0x0008&&wlan.ssid==CyberPeace,如下图

1540173014585

坑点一:使用时钟偏差检测AP的真伪

过滤之后,发现数据分组依旧多的一匹,思考了半天,网上翻阅资料一堆,隔天才找到相关的资料,其中有此描述

1540175874395

也就是根据 IEEE802.11协议中的TSFTime Synchronization Function,定时同步功能),通过收集APBeacon(信标帧)或者Probe response(探头响应消息)来计算AP的时钟偏差,通过与特征库中储存的偏差值比较,判断此AP是否为无线钓鱼AP

那么问题来了,wireshark怎么查看时间戳在哪呢?额,我们随便挑个Beacon的分组看看,时间戳在IEEE 802.11 wireless LAN的分支下(上面),如下图:

1540176058686

接着,我们继续往下观察各分组的Timestamp的值,一直到2153分组,终于观察到不同的地方

1540176332046

2153分组中Timestamp的值为0x0000000000000000,与其他APBeaconTimestamp值不同,而此时的AP对应mac地址的值为88:25:93:c1:c8:eb(上图显示为TP-LinkT_c1:c8:eb)。再查看此mac地址其他Beacon的分组包,比如序号分组为219222372306SN的值依次为2,3,4)中的Timestamp的值,你会发现Timestamp的值均为0x0000000000000000

或者更直观一点,执行过滤语句:

wlan.fc.type_subtype == 0x0008&&wlan.ssid==CyberPeace&&wlan.fixed.timestamp == 0x00,观察下图,会发现均值mac地址的值为88:25:93:c1:c8:ebBeacon,且Timestamp均为0x0000000000000000。(分析结束后,发现直接执行过滤语句wlan.fixed.timestamp ==0x00,也可以得到相同的结果)

1540177912309

故根据以上分析,再依照题意“并且已经得知他的握手包密码就是他的网卡地址”,我们可以确定黑客的网卡地址为88:25:93:c1:c8:ebhanshake.cap的握手密码也应是88:25:93:c1:c8:eb,将这个密码写入文件d1.txt中,然后通过aircrack-ng工具验证下密码的正确与否,执行命令aircrack-ng hanshake.cap -w d1.txt

1540178936411

如上图结果所示,验证成功。接下来就是解开hanshake.cap这个wpa握手包里的数据了。

坑点二:已知wifi密码如何正确解密cap数据包

这里主要有两种方法(当然还有其他的方法,比如使用Cain解密),一种通过wireshark提供的转化网址,只需输入ssid和密码就能将其转化为PSK值。

1540180703551

然后打开wireshark,依次按照步骤操作:编辑 -> 首选项 -> Protocols -> IEEE 802.11 ,点击Edit

1540181032687

然后选填wpa-psk,输入刚刚转化得到的PSK值,进行解密

1540181063404

尝试过wpa-pwd,发现格式错误,解密无效

1540180902963

另一种方法是通过airdecap-ng工具解密,执行命令airdecap-ng -p 88:25:93:c1:c8:eb -e Honey hanshake.cap

1540195478057

打开解密后的流量包,会发现解析出了其他协议的数据分组

1540181190099

仔细分析后,发现执行http.request.method==GET语句过滤后,存在个key.rar压缩包的下载网址

1540194252910

因为这个文件当时是通过分析出来的,然后通过在线网址直接下载的。但之前链接已经失效(自己之前的没存(╥╯^╰╥)),不过还好,左问右问,还有老哥存着key.rar,要了一份,在这里特别感谢阿烨老哥,谢谢。

打开压缩包,解压得到个key.pcapwireshark打开分析,这里先将正常的预期做法,包括踩坑步骤讲述下:

打开数据包后,再仔细看看题目,其中讲到“他又发送重连请求的Malformat Frame试图崩溃我们的无线路由器”,故我们先执行过滤语句wlan.addr==88:25:93:c1:c8:eb过滤出黑客网卡发出的所有包。

1540215449129

可以看到所有的过滤后所有的分组都是Type/Subtype: Association Request (0x0000),上面讲过 Association Request中文释义”关联请求“,顾名思义,而黑客通过Association Request发送了大量的Malformat,企图崩溃无线路由器。而在最后一条分组中找到了答案,也就是那条“畸形数据”

1540216568389

最终答案:CISCN{Z9DY20jZIyjzY5vs0UQZVUg86eMYlNMzH}

在其中的数据包中,我们发现黑客是使用了大量的Association Request发送了大量的Malformat攻击路由器,这其实是无线APdos攻击中一种Association Flood Attack(关联洪水攻击),简称Asso攻击。关于几种攻击方式,计划着之后来篇动手实践fuzzAP的总结(✪ω✪)。

关于此题的思考

关于此题,看了许多资料,想了想这题的出题原理,在安全客上顺带找到一篇【技术分享】基于802.11Fuzz技术的研究,发现就是原出题作者写的,在此先膜下。orz~

此题,那时比赛后看了许多writeup,基本上黑客mac地址都是wireshark提取出来,然后爆破的,而最后的畸形数据也是strings key.pcap出来的。自己那时也是差不多的做法,正好最近学习了一波IEEE 802.11,那就从原理角度梳理下这题,发现学到的东西也是不少啊。如果有其他的做法,欢迎师傅们一起讨论。

结语

不得不说,最近学习IEEE 802.11协议有一种快乐的感觉,虽然其中很多东西需要自己不断的搜索资料,阅读书籍,但是学习之后,再结合实验,发现学到的东西真的挺多的,那种充实感、成就感相信大家都有过,共勉吧,好好学习,天天向上。

ps:

本文由安全客原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/162546

安全客 - 有思想的安全新媒体

0%