我的意思是你可以使用此命令检查 wps 按钮是否已被按下
但我想知道是否可以使用 airodump-ng 来做到这一点
没有任何人连接到它。
这wifiphisher 实用程序声称能够做到这一点,即使我无法找到任何有关可以做到这一点的现成工具的信息
而且 python 代码不够清晰,所以我不知道他们是如何做到的
尝试找出一种被动执行此操作的方法,将其添加到可能的新攻击向量中
谢谢
答案1
我们首先检查Wi-Fi 保护设置规范
AP 使用探测响应消息通知登记者选定的注册器处于 PBC 模式
登记者通过发送具有指示登记者处于PBC模式的设备密码ID的探测请求并接收指示具有PBC设备密码ID的选定注册器的探测响应来执行此扫描。
当 AP 从注册器接收到指示 PBC 模式的选定注册器和设备密码 ID 时,它必须自动删除此信息,并且在经过一段步行时间后不再将其包含在探测响应中。在按下注册器按钮之前,AP不得公布任何活跃的 PBC 状态
并从另一个WPS 文档标题为:无线 LAN PCI 卡用户手册 V1.1我们发现
设备密码 ID:指示所选注册商打算使用的方法或标识特定密码。 PBC 模式下的 AP 必须在两分钟步行时间内指示 0x0004。
我们现在了解到所需的信息位于来自 AP 的信标帧中
要检查这些信息,如果您愿意,我们可以使用三种工具来完成此操作
首先,我们检查没有按下按钮和按下按钮的 AP 上广播的探测有什么不同
为此,我们必须tcpdump
在所需设备上使用 airodump 或两次,一次按下按钮,一次不按下按钮,然后我们尝试来自wireshark wiki的WPS PBC过滤器找出两者之间的差异
正如我们在尝试这些过滤器中的任何一个时所看到的
wps.selected_registrar_config_methods.phy_pushbutton
wps.selected_registrar_config_methods.pushbutton
wps.selected_registrar_config_methods
wps.device_password_id
只有按下 wps 按钮的捕获才会获得匹配
请注意,只有wps.device_password_id == 0x0004
过滤器可以可靠地检查按钮是否被按下,因为其他过滤器可能会导致误报
一位有关此事的专家的引述
"wps_selected_registrar" : 01
并不意味着所有路由器都处于 PBC 模式,有些路由器还处于"wps_selected_registrar" : 01
PIN 模式,并且这些路由器中 95% 或更多容易受到 Pixie Dust 攻击,
现在我们知道并测试了差异。我们可以使用另外两种工具来完成此操作,以节省时间
我们可以使用 github 上的这个 python scapy 脚本wps2key.py但请注意,它仅适用于 2.7 的旧系统
chmod +x wps2key.py
./wps2key.py -i mon0 -v
使用著名的工具清洗。确保它已更新到最新版本掠夺者 wps-fork-t6x,要查看值,我们需要使用 json 选项 -j。此外,json 模式会检测已打印的 AP 的 WPS 配置何时发生更改,并打印另一行,因此无需退出并重新启动或每次都检查更改的循环
清洗-i wlan0mon-j
我们在这里也可以看到差异,但由于 Wash 没有显示我们在wireshark 中使用的所有其他元素。我们有wps_device_password_id
或selected_registrar_config_methods
to 区分推动和非推动
请注意,我们没有使用wps_selected_registrar
因为它不可靠
我们还可以使用单行将其自动化,并且我们将使用-c
和-b
选项来使其更快
timeout 10s wash -i wlan0mon -j -b XX:XX:XX:XX:XX:XX -c 8 | grep -q '"wps_device_password_id" : "0004"' && echo Pushed || echo NotPushed
也可以使用一个小的 python 脚本文件来完成
import subprocess, sys ,os
argv = list(sys.argv)
argv[0] = 'wash'
proc = subprocess.Popen(argv, executable=argv[0], stdout=subprocess.PIPE)
while 1:
line = proc.stdout.readline()
if line == '': break
print line
if '"wps_device_password_id" : "0004"' in line:
proc.terminate()
print("WPS PBC enabled")
break
注意这里要运行它
将脚本保存为washwrapper.py 并运行它,而不是使用您通常传递给wash 的所有参数进行wash。像 python2washwrapper.py -j -i wlan0mon -c 6 .修改“../src/wash”清洗二进制位置的路径,而不是仅仅清洗,如果需要的话,否则它不起作用
感谢你/罗弗0r剧本并就此事提供帮助
如果您想连接到它,如果我们发现按钮被按下,我们可以使用wpa_cli wps_pbc命令而不是 print 或者更好的是我们可以使用一次射击带有新添加的 --pbc 标志的 Python 脚本,只需单击一下即可完成该过程,无需事先配置,而且作为奖励,它也会输出密码。
Start WPS push button connection: sudo python3 oneshot.py -i wlan0mon --pbc
但请记住,为了能够在 python 中运行系统命令,我们使用 os.system("command")
最后,在搜索整个网络并发现零个网站提到或谈论它后,我不得不自己回答这个问题。