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

1,201 阅读12分钟
原文链接: www.anquanke.com

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

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

 

帧的基本类型

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

Management frame(管理帧)

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

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

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

Control frames(控制帧)

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

Data frame (数据帧)

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

 

管理帧中Beacon的具体分析

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

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

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包中找到密码,并解开他的数据包,找到那条畸形数据。

题目所给附件:

思路解析

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

解题步骤

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最终答案:CISCN{Z9DY20jZIyjzY5vs0UQZVUg86eMYlNMzH}

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

关于此题的思考

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

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

 

结语

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