在2018年8月4日,一位研究员在hashcat论坛中发布了一篇帖子,表示他研究WPA3协议密码破解方法的过程中,发现了一个针对WPA/WPA2协议密码破解的新方法,使用PMKID(the Pairwise Master Key Identifier ,成对主密钥标识符)来破解无线密码。

在之前的方法中,攻击者需要捕获用户连接路由器时的完整握手包。而新的方法可以在没有客户端的情况下,向AP发送请求来获取PMKID以用于破解。  
在作者的文章中表示该攻击适用于所有支持并开启漫游功能(Roaming)的无线网络,但他也并不清楚会对多少路由器有效。那么实际的影响范围到底如何呢,于是有了本文。

1. 准备测试环境

笔者使用了最新的Kali Linux发行版,支持Monitor模式的TP-LINK TL-WN722N(芯片组Atheros AR9271)。进行该实验还需要安装:

hcxtools v4.2.0或更高版本

  1. apt-get install libcurl4-openssl-dev libssl-dev zlib1g-dev libpcap-dev
  2. git clone https://github.com/ZerBea/hcxtools
  3. cd hcxtools
  4. make
  5. make install

hcxdumptool v4.2.0或更高版本

  1. git clone https://github.com/ZerBea/hcxdumptool
  2. cd hcxdumptool
  3. make
  4. make install

hashcat v4.2.0或更高版本
撰写本书时,kali仓库中的hashcat版本为4.1,同样需要手动安装更高版本的hashcat。

  1. wget https://hashcat.net/files/hashcat-4.2.1.7z
  2. 7z x hashcat-4.2.1.7z

2. 实际测试

使用hcxdumptool捕获PMKID

  1. ifconfig wlan0 down
  2. iwconfig wlan0 mode monitor
  3. iwconfig wlan0 up
  4. hcxdumptool -o test.pcapng -i wlan0 --enable_status=1

当有如下显示时,表明获取到PMKID

  1. [13:29:57 - 011] 4604ba734d4e -> 89acf0e761f4 [FOUND PMKID]

原作者建议最多运行hcxdumptool10分钟就可以获取到周边所有能获取的PMKID了。

使用hcxpcaptool将pcapng格式转换为hashcat可使用的格式

  1. hcxpcaptool -z test.16800 test.pcapng

执行后的效果如下图,在底部会显示捕获到的PMKID数量。

打开我们生成的16800格式的文件,如下图所示的格式,每一行由星号分成4块,分别是:PMKID、AP的MAC地址、客户端的MAC地址、ESSID。

使用hashcat进行爆破:

  1. cd hashcat-4.2.1
  2. ./hashcat64.bin -m 16800 test.16800 -a 0 -w 3 pass.dict
  3. -a 0 指定字典破解模式
  4. pass.dict为字典文件

一旦有破解成功将有类似显示:

  1. 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a:hashcat!

除了16800外,作者还表示支持预先计算散列表的方式168001。  
暴力破解的工作原理是猜测明文值对其进行加密,然后将加密后的值与捕获到的密码散列值进行比较。如果比较失败说明猜测错误,再换下一个猜测反复进行上述过程。可以看到大部分的耗时都花在了对猜测的加密上。  
预先计算散列表是由猜测加密后的密文组成的。有了预先计算的散列表,破解工具只需读取预先计算的散列表然后与密码散列值进行比较,这极大地提高了破解效率。相应的缺点是散列文件可能会非常大。在WPA-PSK的例子中,散列不仅包含了预共享密钥,还包含了SSID,这意味着即使两个无线网络密钥相同,但因为SSID不同就会导致散列不同。所以对于WPA-PSK,我们需要提前针对指定的SSID生成预先散列。  
比如在 http://rainbowtables.shmoo.com/ 上可以找到一个由最常见的1000个 SSID和 100万密码制作而成的,40G大小的预先计算散列表。

3.影响评估

PMKID主要用于多个AP间的快速漫游,主要被使用在企业级无线网络环境中(WPA-Enterprise),但实际上这种攻击方式对于802.1X认证类型的热点是无效的,因为PMK值是在连接的时候针对每个客户端动态生成。而在WPA-PSK所广泛使用的家庭、小型办公网络中,PMKID往往是没有意义的,因为大多数环境只有一台AP。这也意味着大部分家用级路由器很可能并不支持漫游功能。

为了测试较为真实的影响范围,于是我在家庭和办公两个常见的环境进行了测试。测试思路如下:

1.使用wifite等工具,扫描周边存在热点5分钟,记录总量。

2.使用hcxdumptool抓获尝试PMKID值10分钟。

3.整理分析受影响热点的分布情况及特征,得出结论。

3.1 家庭环境

普通的小区住房,每家基本都会有路由器。5分钟捕获到108个热点,如下图:

hcxdumptool工具运行10分钟捕获只捕获到2条PMKID,一台为我自己的斐讯K2P,一台为华为B315 4G路由器。

可以看到,在该家庭环境中,受影响比例不到2%。

3.2 办公环境

在办公环境中,热点虽然也有很多,但分布在不同的楼层,在我网卡的接收范围内5分钟捕获到74个热点。

hcxdumptool工具运行10分钟捕获捕获到4条PMKID,排除掉其中2个802.1X认证的热点,剩余的一个为Tenda AC18 1900M,另一台是来自AskeyCom的路由器。在该办公环境中,受影响比例不到3%。

通过在这两个不算严密的实验中能发现,受该攻击影响的都来自于支持802.11AC等的中高端路由器(大概400以上)。

3.3 测试结论

最后,对于利用PMKID破解PSK的新攻击方式,我做出如下总结:

1.该攻击方式并没有明显降低攻击WPA/WPA2网络的难度,依然需要字典式进行暴力破解,只是允许在无客户端情况下进行。

2.该攻击只对WPA-PSK/WPA2-PSK有效,对企业级802.1X认证热点(WPA-Enterprise)无效。

3.大部分低端家用级路由器由于不支持漫游特性,对该攻击免疫;少部分中高端路由器(往往支持802.11AC)可能受影响,用不上就关掉吧(如果可以的话)。

4.对于用户:依然是提高无线密码复杂度,警惕热点密码分享APP。

5.对于路由器厂商:对WPA-PSK考虑是否有支持漫游特性的必要,或者增加开关。

利用PMKID破解PSK的实际测试与影响评估的更多相关文章

  1. 利用python破解sqlserver账号密码

    一.编写密码测试函数 在用python连接mssql数据库的时候,通常会使用pymssql模板中的connect函数,格式如下: connect(server,user,password,databa ...

  2. 利用 canvas 破解 某拖动验证码

    利用 canvas 破解 某拖动验证码 http://my.oschina.net/u/237940/blog/337194

  3. 利用netperf、iperf、mtr测试网络

    1.netperf安装和使用 netperf安装 # tar -xzvf netperf-.tar.gz # cd netperf- # ./configure # make # make insta ...

  4. 利用cve-2017-11882的一次渗透测试

    利用工具:https://github.com/Ridter/CVE-2017-11882/ 影响版本: office 2003 office 2007 office 2010 office 2013 ...

  5. 利用Docker Compose快速搭建本地测试环境

    前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...

  6. 利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比)

    利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比) 以下是红色内容是在命令行运行: C:\Users\Administrator>winsat diskWindow ...

  7. 利用 Python 破解 ZIP 或 RAR 文件密码

    我们经常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道.本文将会利用 P ...

  8. 利用appscan进行自动化定期安全测试

    Appscan的强大众所周知,如果可以自动执行定期安全测试,岂不是美事一件? 事实上,appscan提供了计划扫描的选项,配合windows的计划任务,可以按需设定. 1.打开appscan中的“工具 ...

  9. 利用Testng注释实现多线程并发测试

    Testng 是一款非常优秀的测试框架,真正从测试角度出发,为测试所想.在测试过程中我们经常会遇到对某一个场景做并发请求,主要想了解该程序在并发时是否会有异常或者没考虑到的其他情况,这时往往不是要做性 ...

随机推荐

  1. 魔法上网之Ubuntu部署“酸酸”

    “酸酸”,即s*h*a*d*o*w*s*o*c*k*s,用于魔法上网,用python写成. 在ubuntu环境下,用pip包管理工具可以非常方便地安装“酸酸”服务:ssserver. 先安装pip(假 ...

  2. AC日记——【模板】Link Cut Tree 洛谷 P3690

    [模板]Link Cut Tree 思路: LCT模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 30 ...

  3. javascript大神修炼记(3)——条件分支

    读者朋友们好,我们今天接着前面的讲,前面已经大概了讲了一下运算符,今天的任务主要就是讲解逻辑条件分支,循环. 我们先就来模拟一个逻辑块,就用我们经常接触到的买车票来说吧,车票的价格对不同的人价格是有差 ...

  4. Centos Nodejs

    设置Nodejs环境 第二节:Installing Node.js, PM2 and Yarn on CentOS https://www.youtube.com/watch?v=XCgCjasqEF ...

  5. 归并排序(MergeSort)

    原帖:http://blog.csdn.net/magicharvey/article/details/10192933 算法描述 归并排序(MergeSort)是采用分治法的一个非常典型的应用.通过 ...

  6. 戴尔笔记本Inspiron 7560(灵越) 加装固态硬盘从选购固态硬盘到系统迁移到设置SSD为第一启动(受不了了,网上的教程就没有完整的)

    菜鸡我的笔记本为戴尔灵越Inpsiron 7560,其实Inspiron 15 7560 和Inspiron 7560是同一个型号. 电脑拆了安过内存条,换过电池,现在又加了一块固态硬盘. 因为不想安 ...

  7. HDU 1011 Starship Troopers【树形DP/有依赖的01背包】

    You, the leader of Starship Troopers, are sent to destroy a base of the bugs. The base is built unde ...

  8. 从Windows复制文件到Linux显示乱码问题

    (1).文件名乱码 这并不是所有人都会碰到的问题,一般常见于使用putty的用户.使用convmv命令可以解决这个问题. 我写详细一点还原真实场景,首先我来上传一个测试文件“a此文件在windows下 ...

  9. 查看所有shell类型

    [xf@xuexi ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/no ...

  10. ABP+NetCore+Vue.js实现增删改查

    ABP我就不多介绍了,不知道的可以自己百度 本篇开发工具VS2017,数据库SQL SERVER2012,系统Win7 1.去ABP官网下载对应的模板,下载地址:https://aspnetboile ...