This commit is contained in:
wizardforcel 2016-10-29 22:14:06 +08:00
parent c1acad712f
commit d8150578d8
1 changed files with 78 additions and 0 deletions

78
ch4.md
View File

@ -139,3 +139,81 @@ WEP
在之前的练习中,如果正常客户端突然断开了网络,我们就不能重放封包,因为接入点会拒绝接受来自未关联客户端的封包。
你的挑战就是,使用即将在后面学到的共享密钥绕过伪造验证和授权,使你仍然能够将封包注入到网络中,并验证接入点是否接受和响应它们。
## 4.3 WPA/WPA2
WPA 或者 WPA v1 主要使用 TKIP 加密算法。TKIP 用于改进 WEP不需要完全新的硬件来运行。反之WPA2 必须使用 AES-CCMP 算法来加密,这比 TKIP 更加强大和健壮。
WPA 和 WPA2 允许 基于 WAP 的验证,使用基于 RADIUS 服务器企业和预共享密钥PSK个人的验证模式。
WPA/WPA2 PSK 易受字典攻击。攻击所需的输入是客户端和接入点之间的四次 WPA 握手,以及包含常用口令的单词列表。之后,使用例如 Aircrack-ng 的工具,我们可以尝试破解 WPA/WPA2 PSK 口令。
四次握手的演示见下面:
![](img/4-3-1.jpg)
WPA/WPA2 PSK 的原理是它导出了会话层面的密钥叫做成对临时密钥PTK使用预共享密钥和五个其它参数 -- 网络 SSID、验证者 Nounce ANounce、申请者 Nounce SNounce、验证着 MAC 地址(接入点 MAC、申请者 MAC 地址WIFI 客户端 MAC。密钥之后用于加密接入点和客户端之间的所有数据。
通过嗅探空气来窃取整个对话的攻击者,可以获得前面提到的全部五个参数。它唯一不能得到的东西就是预共享密钥。所以,预共享密钥如何创建?它由用户提供的 WPA-PSK 口令以及 SSID 导出。这些东西的组合通过基于密码的密钥推导函数PBKDF2来发送它的输出是 256 位的共享密钥。
在典型的 WPA/WPA2 PSK 字典攻击中,攻击者会使用可能口令的大量字典以及攻击工具。工具会从每个口令中导出 256 位的预共享密钥,并和其它参数(之前提到过)一起使用来创建 PTK。PTK 用于在握手包之一中验证信息完整性检查MIC。如果匹配从字典中猜测的口令就正确反之就不正确。
最后,如果授权网络的口令存在于字典中,它会被识别。这就是 WPA/WPA2 PSK 破解的工作原理。下面的图展示涉及到的步骤:
![](img/4-3-2.jpg)
下个练习中,我们会看一看如何破解 WPA PSK 无线网络。使用 CCMPAES的WPA2-PSK 网络的破解步骤与之相同。
### 实战时间 -- 破解 WPA-PSK 弱口令
遵循以下指南来开始:
1. 让我们首先连接到我们的接入点` Wireless Lab `,并设置接入点使用 WPA-PSK。我们将 WPA-PSK 口令设为`abcdefgh `,使其易于受字典攻击。
![](img/4-3-3.jpg)
2. 我们以下列参数启动`airodump-ng `,使其开始捕获和储存网络上的所有封包:
```
airodump-ng bssid 00:21:91:D2:8E:25 channel 11 write WPACrackingDemo mon0"
```
输出是这样:
![](img/4-3-4.jpg)
3. 现在我们可以等待新的客户端连接接入点,便于我们捕获四次握手包。或者我们可以广播解除验证封包来强制客户端重新连接。我们选择后者来提升速度。相同的位置频道错误可能自再次发生,同样,使用` -ignorenegative-one`。这也需要更多尝试:
![](img/4-3-5.jpg)
4. 只要我们不活了 WPA 握手包,`airodump-ng `会在屏幕的右上角将其表示为 WPA 握手包,并带有接入点的 BSSID。如果你使用了`ignore-negative-one`,工具可能将 WPA 握手包替换为固定的频道信息。你需要观察到一闪而过的 WPA 握手信息。
5. 我们现在可以停止` airodump-ng`了。让我们在 Wireshark 中打开 cap 文件,并查看四次握手。你的 Wireshark 终端应该是这样。我在屏幕的记录文件中选择了四次握手的第一个封包。握手封包就是协议为 EAPOL 的封包:
6. 现在我们开始实际的密钥破解练习。我们需要常见单词的字典。Kali 在`metasploit `文件夹中自带了许多字典文件,位于截图这里。要注意,在 WPA 破解中你的水平就和你的字典一样。Kali 自带了一些字典,但是这些可能不够。人们所选的密码取决于很多因素。这包括所居住的国家、区域中的常见名称和短语,用户的安全意识,以及一些其它因素。收集国际和区域特定的单词列表,在从事渗透测试的时候是个好主意。
![](img/4-3-6.jpg)
7. 我们现在以`pcap`文件作为输入以及到字典文件的链接调用` aircrack-ng `工具,像下面这样。我使用了`nmap.lst`,像这样:
![](img/4-3-7.jpg)
8. `aircrack-ng`使用字典文件来尝试多种口令组合,并尝试破解密钥。如果口令出现在字典文件中,它会最后破解出来,并且你的屏幕会看起来像这样:
![](img/4-3-8.jpg)
9. 要注意,因为这是字典攻击,预置条件是口令必须出现在提供给` aircrack-ng`的字典文件中。如果口令没有出现在字典中,攻击就会失败。
### 刚刚发生了什么?
我们在接入点上设置了 WPA-PSK使用常见口令`abcdefgh`。之后我们使用解除验证攻击,让正常客户端重新连接到接入点。当我们重新连接时,我们捕获了客户端和接入点之间的 WPA 四次握手。
因为 WPA-PSK 易受字典攻击,我们向`Aircrack-ng`输入了包含 WPA 四次握手的捕获文件,以及常见口令的列表(以单词列表形式)。因为口令`abcdefgh `出现在单词列表中,`Aircrack-ng`就能够破解 WPS-PSK 共享口令。要再次注意,在基于字典的 WPA 破解中,你的水平就等于你的字典。所以在你开始之前,编译一个大型并且详细的字典非常重要。通过 Kali 自带的字典,有时候可能不够,可能需要等多单词,尤其是考虑位置因素。
### 试一试 -- 尝试使用 Cowpatty 破解 WPA-PSK
Cowpatty 是个同样使用字典攻击来破解 WPA-PSK 口令的工具。这个工具在 Kali 中自带。我将其留做练习,来让你使用 Cowpatty 破解 WPA-PSK 口令。
同样,设置不常见的口令,它不出现在你的字典中,并再次尝试。你现在再破解口令就不会成功了,无论使用 Aircrack-ng 还是 Cowpatty。
要注意,可以对 WPA2-PSK 网络执行相同攻击。我推荐你自己验证一下。