护网杯-old Attack题解

经过两个星期左右的学习,深入了一番IEEE 802.11,终于把护网杯那题0解的无线流量题目做出来了,下面分析一番,稍作扩展。

题目:Old Attack The title is hint。:)

题目提示

提示先后给了三个:

1、Evil AKM Fuzz?

2、不规范的802.11 frame

3、malformat RSN

 

题目附件

分析思路

先来分析下题目的第一个提示,Evil AKM Fuzz?,AKM是啥呢?这里我网上搜了下,Authentication and Key Management,中文译为“认证和密钥管理”,那按照题目提示的意思是”邪恶AKM攻击”,sorry,这个我真不知道,抱歉啊,学艺不精,找到一个网站介绍rsn-robust-secure-network,里面有提到Authentication and Key Management。不过,随着解题步骤的展开,好像发现了这个提示的意义,这个后面讲。

再看看第二个提示,很明显,提示我们可能需要着重分析数据包中不规范的802.11 frame的数据分组。

最后一个提示,malformat RSN,先介绍下RSN (Robust Secure Network) ,是通过802.11无线网络建立安全通信的协议,这个RSN在802.11 frame的数据分组哪个地方显示呢?翻看我的上一篇文章一道无线流量题目引发的思考其中的管理帧中Beacon的具体分析,里面有个Tag: RSN Information ,然后自己去翻数据分组看看呗。

知道了这些,我们大概有这么个思路,分析dict.pcapng,找到能够解密huwang.cap握手包的秘钥,这个秘钥对于wireshark解密握手包而言,有三种格式,一种是针对wep的wep格式,另外两种是针对WPA的wpa-pwd和wpa-psk格式。详见下图

关于上述三种秘钥的填入的Key格式如下:

wep:key的格式是十六进制ASCII码的wifi密码,比如此时wifi密码为123456,那么输入的key应该是31:32:33:34:35。

wpa-pwd:key的格式为“密码:BSSID”,如:路由器名称为T35t,密码为12345678,那么输入的key应该是12345678:T35t。

wpa-psk:通过wireshark提供的转化网址,只需输入ssid和密码就能将其转化为PSK值,将这个psk值即是填入的key值(这个详细操作也可以查看我的上一篇文章一道无线流量题目引发的思考,里面也提到另外一种通过airdecap-ng工具解密的方法)。

额,这里不妨先透露个题解的步骤,此题就是通过最后一种格式wpa-psk对huwang.cap进行解密的,而在这里,知道psk值格式是固定的64位是其中解题的关键。

 

解题步骤

非预期解法

打开数据包dict.pcapng,简单分析,会发现存在大量的Beacon数据分组,都为畸形数据分组,并且SSID为大量非常见字符。

往下随意滑动,至中部,会发现依旧为畸形数据分组,但SSID变为了长度均为64位的字符串。(到这里,可能有师傅已经明白解题的关键步骤了)

比赛做到这里,卡住了,因为那时不知道如何过滤不同类型帧的语句。比赛结束后,尝试了许久,实在没想通接下去的思路。就试着过滤各种802.11类型帧的数据包。然后,奇迹来了。当我试着执行过滤语句wlan.fc.type_subtype == 0x0005过滤管理帧中类型为Probe Response的数据分组时,发现了下面两个分组,这引起了我的注意。

过滤之后,可以看到这两个畸形帧SSID的值均为e392618fbd761a9467e64f2aaebeb0c40cfad70d1ab323dbe0741bf3fdc475a4。(正好这个时候,出题老哥接受了我的好友申请,我就把自己到这步的思路跟老哥说,老哥有点惊讶”对,就是这个,你是怎么找到的?” “额,直接执行过滤语句wlan.fc.type_subtype == 0x0005找到的”)。

随后我认真的分析了下这两个数据分组,发现并不完全符合题目中两个提示的要求,这是两个不规范的802.11 frame,但是并不存在malformat RSN的数据呀。这里刚开始以为提示错了,因为按照下图所显示的,只是存在ssid的tag标签Group为Malformed,后面跟着的是正常的Tag:RSN Information的标签。(后来返回去思考,发现是自己错了,这个后面再详细解释)。额,下面这个图有个描述有错,“被”应该改为“并”。

但是这两个畸形帧中SSID的长度为64,注意是64!,并且整个数据包里只有这两条Probe Response此类型 5447565467帧的数据分组,你说可不可疑=

如果懂得wpa-psk解密的key的固定格式为64位,那么自然而然,就会想着把这个长度64位的字符串尝试地去进行握手包huwang.cap的解密,但是那个时候并不清楚这些。也就是为什么上面讲到“知道psk值格式是固定的64位是其中的关键”。(当时的我以为还是在dict.pcapng中找到密码,然后使用aircrack-ng爆破huwang.cap的密码,再使用验证正确的密码去解密握手包,再接着分析,所以在这里,你可能不敢相信,我把这64位的字符串,按每隔八位拆分,去尝试爆破出正确的密码,那时太天真了)

顺着刚刚的思路,打开wireshark,依次按照步骤操作:编辑 -> 首选项 -> Protocols -> IEEE 802.11 ,点击Edit,选填wpa-psk,输入刚刚得到的PSK值(那个64位的字符串),进行解密。(说来你可能不敢相信,那是一个慵懒的早上,我躺在床上情不自禁地想着那串64位长度的字符串到底是怎样能解开握手包时。突然意识到这个64字符串有可能是通过wpa-psk解密时所需要的key值,越想越可能,没想到还真是。这种感觉贼虚服,不知道老哥们有没有这种感觉,只可意会,不可言传。)

再次分析huwang.cap,发现上层数据均已显现出来。分析http,发现一个/djuds8RS/1.txt的访问路径

尝试访问,打开http://www.wiattack.net/djuds8RS/1.txt,得到flag

非预期原因

关于此题,可能由于环境部署的难度原因,出题老哥忘记做Probe Response此类型帧的混淆了,使得执行过滤语句wlan.fc.type_subtype == 0x0005就可以过滤出类型为Probe Response,且最为可疑malformat RSN数据分组中存在的畸形字长为64位的字符串,然后使用wpa-psk解密方式解密握手包huwang.cap,再分析解密后显现出的http流,即可得到最终的答案。

 

预期解法

准确地讲,题目虽然做出来了,但是这种解法也算是非预期解法。反过来去思考出题的思路,个人猜想出一些可能的预期解法,如下:

根据提示2,我们先过滤出不规范的802.11 frame,过滤语句_ws.expert.group == “Malformed”,这个在数据包里的过滤后的结果显示是这样的

根据提示3,它需要的是malformat RSN的数据分组,那我们先过滤出存在RSN的数据分组,因为如果不存在RSN信息的数据分组,我们也就不需要去判断是不是malformat了。但过滤语句怎么写呢?

因为Tag:RSN Information中Tag Number为48,所以构造过滤语句wlan.tag.number == 48

结合提示2和3的过滤语句最后构造为_ws.expert.group == “Malformed”&&wlan.tag.number == 48,下图为过滤结果,过滤出来全都是含有Tag:RSN Information和malformat的帧。

但是提示3说的是malformat RSN,所以我们需要知道Tag:RSN Information为不规范的malformat RSN数据分组。稍微仔细点观察,翻到过滤后的数据分组末端,就会发现我们所想看到的malformat RSN分组。

上图就是分组序号112936得信息,但是解密的wpa-psk的值并不是这个分组长度64位的ssid值,但是它提供了这个异常分组的源mac地址和目的mac地址,尝试过滤下,页面如下

不知你有没有看到那个Tag: RSN Information中包含的子树所显示的Auth Key Management (AKM) Suite Count: 65535,当我看到这里的时候,好像明白了提示一的作用( ̄▽ ̄)/。

而后面的解法,就跟之前提到的非预期解法一样啦。大家就自己分析去试试吧。其中的许多知识点,比如为啥wpa-psk值一定为64位等等,放了两个链接,大家随意啊。

无线网络密码WPA/WPA2算法介绍(适合新手阅读 )

rsn-robust-secure-network

 

题目总结

仔细分析流量包,你会发现,其中的Type/Subtype: Beacon frame (0x0008)类型数据分组是做了大量混淆工作的,而说起这种混淆技术,运用的是哪种方法实现的那就够得谈了,这不仅涉及到题目的原理,也涉及到测试攻击的不同手段,下次讲咯。下面先放出本题所模拟Beacon大量请求的截图(本测试为个人设备演示,T35t为测试AP):

最后,好好学习,天天向上。ヾ(๑╹◡╹)ノ”

(完)