无线网络及安全(无线网络安全学习)(1)

前言

一个客户端连接上一个无线热点时,它们之间会交换一些数据,如果我们能抓获这些数据,我们便有望得到这个无线热点的密码。看完这篇文章,您将会收获:

在进行这篇文章的实验之前,请确定基本的环境已经准备好了:

无线网络安全第一步:在虚拟机上配置kali

以及,对Kali系统一些基本的命令行操作也已经有所了解,也已经准备好了一块今天实验所必需的无线网卡:

无线网络安全学习:网卡准备与常用的命令行操作

在学习的过程中,如果有疑问,可以私信作者,或者在文章下评论,我会竭尽全力为各位读者答疑解惑。

可能无聊但是请耐心听完的理论讲解

在这一部分,我们会了解Wifi认证过程中的四次握手过程,这是我们接下来实验的知识储备。

首先,我们的数据通过无线的方式传输,也就是通过电磁波(也就是光)形式传输,是不如以有线的方式(电)传输安全的。因为电传播的介质是导线,有线网络的介质是网线,网线走到哪里数据传输到哪里,而无线网络是以光的形式向外辐射的,光能到达的地方数据都能到达。

所以,在无线传输中,一定要有一种可靠的加密算法来保护我们的数据,保护它不让它被不该知道的人知道。

最先被提出的加密方式是WEP,它是Wired Equivalent Privacy的简称。翻译过来,就是有线等效保密。它是在IEEE 802.11最初提出时,作为其一部分被一同提出的。提出这个算法的委员会认为,这个加密方式和有线传输一样安全,因此为它这样命名。

很遗憾的是,这个号称“与有线一样安全”的加密方式的寿命仅仅持续了不到5年(1999年9月提出的IEEE802.11,在2003年被WPA淘汰)。它的漏洞实在太严重了,能够解决它的安全问题的办法,只剩下更换更安全的WPA或者WPA2。

“……对 WEP 安全问题最广为推荐的解法是换到 WPA 或 WPA2,不论哪个都比 WEP 安全。”——百度百科

取而代之的是WPA,Wifi Protected Access,直译是Wifi保护访问。在2004年又发布了IEEE802.11i,它修订了之前的WPA,提出了更加可靠、安全的WPA2,这个加密方式被一直沿用至今,保护无线通讯的安全。下面,我们就来简要了解采取这个加密方式加密的无线热点的认证过程中,客户端与路由器之间发生的故事,也就是四次握手

①路由器向客户端发送一个随机数(记为随机数1)。这是第一次握手

②客户端收到了这个随机数1,自己再产生一个随机数(记为随机数2)然后客户端以随机数1、随机数2、输入的Wifi密码这三个参数,通过一种函数关系,生成一个密码(记为PTK)

随即,客户端将随机数2,它计算出来的这个PTK,发回给路由器。这是第二次握手

③路由器收到了随机数2,它自己是知道自己的Wifi密码的,于是它也通过随机数1、随机数2、自己的Wifi密码这三个参数,通过客户端中同样的函数关系,生成一个PTK。

对比客户端发过来的PTK和自己的PTK,如果通过固定的函数关系,运算出来的结果是一样的,也就是发过来的PTK等于自己计算出来的PTK,说明三个参数(随机数1、随机数2、输入的密码)都是一样的,也就是客户端输入的密码正是自己的Wifi密码,通过认证。反之,握手结束。

在这里可能有的读者会问:一个输入只对应一个输出,但是一个输出却未必只对应一个输入?也就是说凭什么就这样认为输入的密码和正确的Wifi密码相同?也有可能是虽然不相同,但是函数运算出相同的结果呢? 这是一个好问题,能够问出这个问题,就说明您已经确实地在思考了。生成PTK的这个算法,是我们软件运算中最常见的,Hash,也叫散列运算。它将不同长度的输入映射成长度相同、独一无二的输出,并且,没有办法从输出确定唯一的输入,因此,我们可以通过比较输出来在不知道输入的情况下比较输入。 的确存在两个输入映射成同样的输出的情况出现,这也称为哈希碰撞。 是有办法避免哈希碰撞的情形的,采取某种措施,可以将碰撞的几率降低到可以忽略的程度。有兴趣的读者可以在网上自行了解。 因此,在这里,就认为输入的密码正是正确的Wifi密码。

认证成功后,路由器发送另外的一个密钥给客户端。这是第三次握手

④客户端收到密钥后,发送消息给路由器,告诉对方已经收到密钥了。这是第四次握手

四次握手的数据包都是以明文形式传输的,因此,我们可以通过捕获四次握手的数据包(简称为握手包),来得到随机数1、随机数2,以及PTK。

将可能的Wifi密码罗列出来,做成一个字典。我们将每个密码和两个随机数进行同样的运算,再和PTK作对比,如果相同,说明该密码就是正确的Wifi密码。

更加有趣的实际操作部分

首先,我们设置一个Wifi,密码就随便设置成12345678.

无线网络及安全(无线网络安全学习)(2)

然后,我们让我们的物理电脑连接上这个Wifi。

无线网络及安全(无线网络安全学习)(3)

打开我们的Kali Linux,使用airodump-ng wlan0mon来扫描周围的Wifi

无线网络及安全(无线网络安全学习)(4)

这个PWR最大的Wifi当然就是我设置的无线热点啦,因为离得最近,信号最好,所以PWR也最大。CH说明是在11信道。

使用airodump-ng --bssid **:**:**:**:**:** -c 11 -w test wlan0mon来指定嗅探的Wifi,并把抓到的握手包包保存在当前目录cap.cap里。当然如果你没有抓到握手包就不会有test.cap这样的文件。这样可以仅得到这个Wifi及连接上的客户端的信息。

无线网络及安全(无线网络安全学习)(5)

现在就能清晰地看到,我的电脑是这个Wifi的唯一的客户端。我们已经得到了我手机网卡的Mac和我电脑的无线网卡的Mac了。(但其实你们并没有得到)

之前我们说过,握手包是只有在客户端和路由器认证的时候才会发送的数据包,除非我们等到第二个客户端连上我的热点,不然是抓不到握手包的。

但是,有一个办法能让我们更快地拿到这个握手包。那就是deauth攻击。

路由器有能力要求客户端和自己解除连接。当它要这样做的时候,它会发送一个deauth数据包给客户端。然后客户端就会和路由器断开连接。但是这并不是客户端网卡的意愿,它没有那么好打发,被踹掉之后会第一时间尝试重新连接上这个路由器。

而deauth攻击的原理就是模拟路由器发这个deauth数据包给客户端。如果你不想让你烦人的室友在寝室大声玩网络游戏,而他又恰好连着寝室的wifi,就一直对他使用deauth攻击吧。

我们新建一个窗口,使用aireplay-ng -0 2 -a **:**:**:**:**:** -c --:--:--:--:--:-- wlan0mon这个命令,使用wlan0mon网卡对mac地址为**:**:**:**:**:**的路由器的mac地址为--:--:--:--:--:--的客户端发送时长为2秒钟的deauth攻击。

无线网络及安全(无线网络安全学习)(6)

发送了之后,就会在原来的airodump-ng那个窗口的右上角,出现一行

WPA handshake:你的WIFI的MAC地址

就说明已经抓到握手包了。如果没有抓到,可以增加攻击时间,或者调整无线网卡接收器的角度。

我们按ctrl c退出,输入ls,看到的确有cap文件了。

无线网络及安全(无线网络安全学习)(7)

然后将含有12345678的字典文件(随便在网上找个字典都不可能没有12345678)passwd.txt也放到这里。执行命令

aircrack-ng -w passwd.txt cap-01.cap

无线网络及安全(无线网络安全学习)(8)

提示KEY FOUND! [12345678],的的确确找到这个密码了。

虚拟机跑字典的速度比较慢,使用物理机结合GPU一起运算,跑字典的速度随着配置的提升速度最高可以达到几百万。

总结

今天我们学习了wifi认证的四次握手,以及通过deauth攻击使已经连接的客户端与路由器重新连接来抓取握手包,并通过字典来套wifi密码的操作。

但不要以为学会这招就可以为所欲为地蹭网了。

诚然只要字典够大,跑得够快,理论上来说,wifi密码总能破解的。

但是,随便计算一下。假设我们采取10位的wifi密码,每一位有a-z,A-Z,0-9,26 26 10=62种可能,也就是62^10种密码的可能,每一密码的长度是10字节,那么我们的字典文件就至少有8*10^17字节,粗略换算,就是800000TB。还有特殊符号,以我们的普通电脑的运算速度……

无线网络及安全(无线网络安全学习)(9)

但是,有规律的密码,比如说简单的拼音加上数字,比如说电话号码,比如说固话,比如说生日,这些信息列举出来的大小还是在可以接受的范围的。

反过来,使用这些有规律的密码,被破解出来的可能性就更大了。

但是,现在又出现了一种新的认证。像去肯德基麦当当这些公共wifi,它们都不设密码的。要求用手机号收验证码认证。

无线网络及安全(无线网络安全学习)(10)

学习是永远都不能停下来的。一停止学习,就会落后于时代。

如果您在阅读的过程中产生了什么疑问,或者实际操作产生了什么问题,请在文章下方留言,我一定竭尽全力为您解答。

关注以获得更多资讯。

,