作者:Vivek Ramachandran, Cameron Buchanan 译者:飞龙 协议:CC BY-NC-SA 4.0
安全的错觉比不安全更加糟糕。 – 佚名
安全的错觉比不安全更加糟糕,因为你不可能为面对被黑的可能性做准备。
WLAN 的身份验证模式可能很弱,可以被破解和绕过。这一章中,我们会查看一些 WLAN 中所使用的基本的身份验证模式,以及学习如何破解它们。
在默认的配置模式下,所有接入点都在信标帧中发送它们的 SSID。这让附近的客户端能够轻易发现它们。隐藏 SSID 是个配置项,其中接入点并不在信标帧中广播它的 SSID。因此,只有知道接入点 SSID 的客户端可以连接它。
不幸的是,这个方法不能提供可靠的安全,但是网络管理员认为它很安全。隐藏 SSID 不应该被看作安全手段。我们现在来看看如何发现隐藏的 SSID。
执行下列指南以开始:
Wireless Lab
网络中的信标帧信标帧,我们就能够以纯文本查看 SSID。你应该能看到信标真,像这样:
Wireless Lab
网络的 SSID。这个配置项在不同接入点中可能不同。这里,我需要检查Visibility Status
选项的Invisible
选项,像这样:
Wireless Lab
的 SSID从信标帧中消失了。这是隐藏 SSID 所做的事情:
aireplay-ng
来发送接触验证封包给所有代表Wireless Lab
接入点的路由器,通过输入:aireplay-ng -0 5 -a <mac> --ignore-negative mon0
,其中<mac>
是路由器的 MAC 地址。-0
选项用于选则接触验证攻击,5
是要发送的封包数量。最后,-a
指定了所定位的接入点的 MAC 地址。
(wlan.bssid == 00:21:91:d2:8e:25) && !(wlan.fc.type_subtype == 0x08)
来监控所有发往或来自接入点的非信标封包。&&
符号代表逻辑 AND 操作符,!
符号代表逻辑 NOT 操作符:
即使 SSID 隐藏而且不广播,当正常的客户端尝试连接到接入点时,它们就交换了探测请求和响应的封包。这些封包包含接入点的 SSID。由于这些封包没有加密,它们可以被非常轻易地嗅探来发现SSID 。
我们在之后的章节中会出于其它目的,例如跟踪,涉及到探测请求。
许多情况下,所有客户端可能已经链接到接入点,并且在 Wireshark 记录中没有探测请求或响应的封包。这里,我们可以强制客户端断开接入点的链接,通过发送伪造的解除验证封包。这些封包会强迫客户端重新连接到接入点上,从而获取 SSID。
在之前的练习中,我们广播了解除验证封包来强制所有无线客户端重新连接。尝试验证如何使用aireplay-ng
工具,选择性对某个客户端执行它。
要注意,即使我们使用 Wireshark 演示了许多概念,但也可以使用其它工具来完成攻击,例如aircrack-ng
套件。我们推荐你探索整个 aircrack-NG 套件以及其它位于官网的文档:http://www.aircrack-ng.org
。
MAC 过滤器是个古老的技巧,用于验证和授权,它们根植于有线世界。不幸的是,它们在无线世界中变得十分糟糕。
最基本的想法就是基于客户端的 MAC 地址进行验证。MAC 过滤器是为网络接口分配的一段识别代码,路由器能够检查这个代码并将其与允许的 MAC 列表进行比较。允许的 MAC 地址列表由网络管理员维护,储存于接入点中。我们现在要看看绕过 MAC 过滤器有多容易。
让我们遵循以下指南来开始:
airodump-ng
来寻找连接到接入点的客户端 MAC 地址。我们可以通过输入airodumpng -c 11 -a --bssid <mac> mon0
命令。通过指定bssid
命令,我们只监控接入点,这是我们所感兴趣的。-c 11
命令将频道设置为接入点所在的11
。-a
命令确保在airodump-NG
输出的客户端部分中,只展示相关客户端,以及到接入点的连接。这会向我们展示所有和接入点相关的客户端 MAC 地址。
macchanger
工具来修改客户端的 MAC 地址,Kali自带这个工具。你可以使用macchanger –m <mac> wlan0
命令来完成。你使用-m
命令指定的 MAC 地址就是wlan0
接口的新 MAC 地址。
我们使用airodump-ng
监控了空气,找到了连接到无线网络的正常用户的 MAC 地址。之后我们可以使用macchanger
工具来修改无线网卡的 MAC 地址,与客户端保持一致。这会欺骗接入点,使其相信我们是正常耳朵客户端,它会允许我们访问它的无线网络。
我们鼓励你探索airodump-NG
工具的不同选项,通过访问官网的文档:http://www.aircrack-ng.org/doku. php?id=airodump-ng
。
术语“开放验证”是个误解,因为它实际上不提供任何验证。当接入点配置为使用开放验证的时候,所有连接它的客户端都可以成功验证。
我们现在使用开放验证来获得验证并连接到接入点。
让我们现在看看如何绕过开放验证。
Wireless Lab
设置为开放验证。在我的接入点中,这可以通过将Security Mode
设为Disable Security
来轻易完成。
iwconfig wlan0 essid Wireless Lab
命令来连接到这个接入点,之后验证我们到接入点的连接是否成功。这可能是目前为止最简单的练习了。你可以看到,在连接到开放验证网络和连接到接入点时没有任何障碍。
共享密钥验证使用例如 WEP 的共享密钥来验证客户端。信息的交换展示在这张图中:
无线客户端发送验证请求给接入点,它会回复一个 challenge。现在客户端需要使用共享密钥加密这个 challenge,并发送ui接入点,接入点解密它来检查是否它可以恢复原始的 challenge 文本。如果成功了,客户端就验证成功,如果没有,它会发送验证失败的信息。
这里的安全问题是,攻击者可以被动监听整个通信,通过嗅探空气来访问 challenge 的纯文本和加密文本。他可以使用 XOR 操作来获取密钥流。密钥流可以用于加密任何由接入点发送的未来的 challenge,而不需要知道真实的密钥。
这种共享验证的常见形式就是 WEP,或者无线等效协议。它易于破解,并且由数不清的工具用于使破解 WEP 网络变得容易。
这个练习中,我们会了解如何嗅探空气来获取 challenge 或者加密后的 challenge,获取密钥流,使用它来验证接入点,而不需要共享密钥。
绕过共享验证比上一个练习更加困难,所以仔细遵循下列步骤:
Wireless Lab
网络建立共享验证。通过将安全模式设置为 WEP ,将验证设置为Shared Key
,我们已经在我的接入点上完成了设置。
airodump-ng
工具的airodump-ng mon0 -c 11 --bssid <mac> -w keystream
命令。-w
选项在这里是新增的,让 Airodump-NG 在keystream
为前缀的文件中储存信息。顺便,在不同文件中储存不同的封包捕获的会话是个好主意。这允许你在很长时间之后分析它们。
airodump-ng
就会通过嗅探空气自动捕获这个改变。当AUTH
列出现了WEP
,就说明捕获成功。keystream
为前缀的文件中。我这里的文件名称是keystream-01-00-2191-D2-8E-25.xor
。aireplay-ng
工具。我们执行aireplay-ng -1 0 -e "Wireless Lab" -y keystream01-00-21-91-D2-8E-25.xor -a <mac> -h AA:AA:AA:AA:AA:AA mon0
命令。这个aireplay-ng
的命令使用我们之前获得的密钥流,并尝试验证 SSID 为 Wireless Lab
,MAC 地址为address 00:21:91:D2:8E:25
的接入点。启动 WIreshark,并通过wlan.addr == AA:AA:AA:AA:AA:AA
过滤器嗅探所有感兴趣的封包。我们可以使用 Wireshark 来验证它。你应该能在 Wireshark 的界面上看到记录,像这样:
aireplay-ng
工具发给接入点:
aireplay-ng
工具将导出的密钥流用于江米,验证会成功,接入点会在第四个封包中发送成功消息。
AA:AA:AA:AA:AA:AA
的客户端建立了连接。
我们成功从共享验证交换中导出了密钥流,并且使用它来伪造接入点的验证。
接入点拥有最大客户端数量,超过之后它们就会拒绝连接。通过为aireplay-ng
编写一个小型的包装器,我们就可以自动发送数百个连接请求,从随机的 MAC 地址发往接入点。这会填满路由器的内部表格,一旦达到了最大客户端数量,接入点会停止接受新的连接。这通常叫做拒绝服务(DoS)工具,可以强制路由器重启或使其失去功能。这也可以导致所有无线客户端失去连接以及不能使用授权后的网络。
Q1 如何强迫无线客户端重新连接到接入点?
Q2 开放验证是干什么的?
Q3 如何破解共享密钥验证?
这一章中,我们了解了 WLAN 验证。隐藏 SSID 是“隐藏式安全”的策略,很容易被攻破。MAC 地址过滤器不能够提供任何安全,因为 MAC 地址可以从无线封包中嗅探,而 MAC 地址在封包中毫无加密。开放验证不提供任何实际的验证。共享密钥验证的破解有些麻烦,但是,使用了正确的工具,我们可以导出和储存密钥流,我们可以使用它来回应之后由接入点发送的所有 challenge。最后我们可以获得验证而不需要知道真实的密钥。
下一章中,我们会看一看 WLAN 加密机制的不同 – WEP,WPA 和 WPA2 – 并看一看其中的不安全性。