我一直想花点时间在这个小项目上做一些研究,但是因为生活的原因,我总是很忙。现在我终于可以抽出一些时间继续研究这种攻击技术了,我将在本文中详细阐述我的研究成果。
很久以前,我学习了Vivek Ramachandran教授的关于WLAN安全的Megaprimer课程(课程非常好,强烈推荐)。顺便说一下,当我旅行时,我住的不同酒店都会提供无线网络。毫无疑问,我的大脑快疯了,所以我一直在思考获得Wi-Fi密码的“非常规”方式。
你知道,我的大脑无法关闭。是我。我们去了某个地方,我能做的就是看角度。-丹尼奥逊(十二罗汉)
我要描述的想法很简单,可能不是什么新想法。尽管如此,对我来说,重复使用已经在架子上吃灰的树莓皮是一种有趣的方式。
思维描述
我们的想法是利用网页浏览器的缓存来窃取Wi-Fi密码。因为我需要给这个项目起一个名字,所以在开发完这个项目后,我把它命名为“运球”:-。运球创建了一个假的无线接入点,并等待客户端连接到它。当客户端连接时,运球拦截对JavaScript页面的每个HTTP请求,并在响应中注入恶意的JavaScript代码。新响应的HTTP头也发生了变化,因此恶意的JavaScript代码被缓存并被迫保留在浏览器中。当客户端从假接入点断开连接并重新连接到家庭路由器时,恶意的JavaScript代码将被激活,从路由器窃取Wi-Fi密码并将其发送给攻击者。很简单,对吧?
为了达到这次攻击的目的,我必须明白这三件事:
如何创建假接入点
1.如何迫使人们连接到这个假热点2。恶意JavaScript代码应该如何从路由器窃取密码3。如何创建假的无线接入点非常简单。伪方法也包含在无线局域网安全的Megaprimer课程中,gist上有许多不同的github存储库和代码可以用来创建伪接入点。所以,我就不赘述了,但为了完整起见,还是讨论一下我用的方法吧。我之前用hostapd创建Wi-Fi接入点,用dnsmasq做DHCP服务器和DNS中继服务器,用iptables创建NAT网络。下面的bash脚本将创建一个非常简单的无线接入点,没有任何密码保护。我在代码中添加了一些注释,希望能提高可读性。
#!/bin/bash # Internet interface Internet=eth 0 # The wifi interface phy=WLAN 0 # The essidesid=' TEST ' #自带接口upip link Set dev $ Internet upip link Set dev $ phy up # # # # # # # # # # # # # # # # DNSMASQ # # # # # # # # # # # # # echo ' interface=$ phybind-interfaces # Set default gateway DHCP-option=3,10.0.0.1#将DNS服务器设置为announcedhcp-option=6,10.0.0