This commit is contained in:
wizardforcel 2016-10-29 11:02:36 +08:00
parent 4568e3a717
commit c1acad712f
1 changed files with 141 additions and 0 deletions

141
ch4.md Normal file
View File

@ -0,0 +1,141 @@
# 第四章 WLAN 加密缺陷
> 作者Vivek Ramachandran, Cameron Buchanan
> 译者:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
## 简介
> 任何人对于内存的需求都不会超过640K。
> -- 比尔·盖茨,微软创始人
即使做了最充分的预测未来始终是不可预测的。WLAN 委员会设计了了 WEP 和 WPA 作为最简单的加密机制,但是,久而久之,这些机制拥有在现实世界中广泛公布和利用的缺陷。
WLAN 加密机制易受密码学攻击,这有相当长的历史了。这从 2000 年的 WEP 开始,它最后被完全破解。最近,攻击慢慢转向了 WPA。即使当前没有公开攻击方式用于在所有情况下破解 WPA特殊情况下的攻击还是可行的。
## 5.1 WLAN 加密
WLAN 在空气中传输数据所以保护数据的机密性是一种内在需求。使用加密是最佳方案。WLAN 委员会IEEE 802.11)为数据加密指定了以下协议:
+ 无线等效协议WEP
+ 无线保护接入WPA
+ 无线保护接入 v2WPA2
这一章中,我们会看一看每个加密协议,并演示针对它们的多种攻击。
## 5.2 WEP 加密
WEP 协议在 2000 年发现漏洞,但是,诧异的是,它仍然被使用,并且接入点仍然自带 WEP 功能。
WEP 中有许多密码学缺陷,它们被 WalkerArbaughFluhrerMartinShamirKoreK以及其它人发现。密码学立场上的评估超出了这本书的范围并且涉及到复杂的数学。这一节中我们会看一看如何使用 Kali 中便捷可用的工具来破解 WEP 加密。这包含整个`aircrack-ng `工具套件 -- `airmon-ng``aireplay-ng``airodump-ng``aircrack-ng`,以及其它。
WEP 的基础缺陷是使用 RC4 和短的 IV 值,每 224 帧复用。虽然这本身是个大数,但是每 5000 个封包中还是有 50% 的几率重用四次。为了利用这个,我们尝试大量流量,是我们增加重用 IV 的可能性,从而比较两个使用相同密钥和 IV 加密的密文。
让我们首先在测试环境中建立 WEP并且看看如何破解。
### 实战时间
遵循以下指南来开始:
1. 让我们首先连接到接入点`Wireless Lab`,并且访问设置区域来处理无线加密机制。
![](img/4-2-1.jpg)
2. 在我的接入点上,这可以通过将`Security Mode `设置为 WEP 来完成。我们也需要设置 WEP 密钥长度。就像下面这样,我将 WEP 设置为使用`128bit`密钥。我将默认密钥设置为`WEP Key 1`,值为`abcdefabcdefabcdefabcdef12`。你可以随便设置它。
![](img/4-2-2.jpg)
3. 一旦设置完成,接入点应该提供 WEP 作为加密机制。让我们现在启动攻击者的主机。
4. 让我们启动`wlan0`,通过键入下列命令:
```
ifconfig wlan0 up
```
5. 下面,我们执行下列命令:
```
airmon-ng start wlan0
```
6. 这创建了`mon0`,监控器模式接口,像下面这样。使用`iwconfig `验证`mon0`接口已经创建。
![](img/4-2-3.jpg)
7. 让我们执行`airodump-ng`,使用下列命令定位我们的无线接入点:
```
airodump-ng mon0
```
8. 你可以看到,我们能够看到执行 WEP 接入点的`Wireless Lab `。
![](img/4-2-4.jpg)
9. 对于这个练习,我们仅仅对`Wireless Lab `感兴趣,所以让我们输入下列命令来仅仅观察这个网络上的封包:
```
airodump-ng bssid 00:21:91:D2:8E:25 --channel 11 --write WEPCrackingDemo mon0
```
之前的命令行就像这样:
![](img/4-2-5.jpg)
0. 我们使用`--write`命令让`airodump-ng `保存封包。
![](img/4-2-6.jpg)
1. 现在让我们将无线客户端连接到接入点,并使用 WEP 密钥`abcdefabcdefabcdefabcdef12`。一旦客户端成功连接,`airodump-ng`会在屏幕上报告。
2. 如果你在相同目录下执行`ls `,你会看到以`WEPCrackingDemo-*`为前缀的文件,像这样。这些是`airodump-ng`创建的转储文件。
![](img/4-2-7.jpg)
3. 如果你注意`airodump-ng`界面,数据封包的数量在`#Data`列下面列出,它还非常少(只有 68 个)。在 WEP 破解中,我们需要大量的数据风暴,使用相同密钥加密来利用协议的缺陷。所以,我们需要强迫网络来产生更多数据封包。为了完成它,我们使用`aireplay-ng`工具。
![](img/4-2-8.jpg)
4. 我们使用`Aireplay-ng`捕获 ARP 封包,并将它们注入会网络来模拟 ARP 响应。我们在单独的窗口中启动 Aireplay-ng像下面这样。将这些封包重放数千次我们会在网络上生成大量流量。即使 Aireplay-ng 不知道 WEP 密钥,也能够通过观察封包大小来识别 ARP 封包。ARP 是个固定头部的协议,所以 ARP 封包的大小可以轻易判断,并且用于在加密流量中识别。我们执行` aireplay-ng `,参数会在后面讨论。`-3`选项用于 ARP 重放,`-b`指定网络的 BSSID`-h`指定我们打算欺骗的客户端 MAC 地址。我们需要完成它,因为重放攻击只对验证和授权后的客户端 MAC 地址生效。
![](img/4-2-9.jpg)
5. 不久你会看到`aireplay-ng`能够嗅探 ARP 封包并在网络上重放他们。如果你遇到了频道相关的错误,在命令后附加`ignore-negative-one `,像这样:
![](img/4-2-10.jpg)
6. 这时,`airodump-ng `会开始收到一大堆数据封包。所以这些嗅探到的封包储存在我们之前看到的` WEPCrackingDemo-* `文件中:
![](img/4-2-11.jpg)
7. 现在开始真正的破解部分!我们以`WEPCRackingDemo-0*.cap `选项在新窗口启动`aircrack-ng `。它会开始使用文件中的数据风暴破解 WEP 密钥。要注意 Airodump-ng 收集数据封包,`aireplay-ng`进行重放攻击,`aircrack-ng `尝试基于捕获的封包来破解 WEP 密钥,所有都同时进行。这个实验中,它们都在单独的窗口打开。
8. 当`aircrack-ng`开始破解封包之后,你的界面应该是这样:
![](img/4-2-12.jpg)
9. 用于破解密钥的数据封包的数量是非确定的,但是通常至少需要成百上千个。在快速的网络(或使用`aireplay-ng`)中,这最多花费 5~10 分钟。如果当前文件中的数据封包的数量不够,`aircrack-ng`就会暂停,等待更多捕获的封包,之后它会重新开始破解过程,像这样:
![](img/4-2-13.jpg)
0. 一旦捕获到了足够的数据,`aircrack-ng `就会开始破解密钥。之后,它会在终端中展示并退出,像这样:
![](img/4-2-14.jpg)
1. 要注意WEP 是完全缺陷的,任何 WEP 密钥(无论多复杂)都会被 Aircrack-ng 破解。唯一的需要就是大量数据封包,使用这个密钥加密,并且对`aircrack-ng`可用。
### 刚刚发生了什么?
我们在环境中建立 WEP并成功破解了 WEP 密钥。为了完成它,我们首先等待正常客户端连接到接入点。之后,我们使用 aireplay-ng 工具在网络上重放 ARP 封包。这会导致网络发送 ARP 重放封包,从而增加空中发送的数据封包数量。之后我们使用 aircrack-ng 工具,通过分析数据风暴的密码学缺陷来破解 WEP 密钥。
要注意我们也能够使用共享密钥验证绕过机制,来伪造接入点的验证,这会在后面的章节中学到。如果正常客户端离开了网络,这可以更方便一些。这会确保我们可以伪造验证和关联,并且继续将重放封包发送到网络。
### 试一试 -- 使用 WEP 破解伪造验证
在之前的练习中,如果正常客户端突然断开了网络,我们就不能重放封包,因为接入点会拒绝接受来自未关联客户端的封包。
你的挑战就是,使用即将在后面学到的共享密钥绕过伪造验证和授权,使你仍然能够将封包注入到网络中,并验证接入点是否接受和响应它们。