发布时间:2025-06-13 15:12:02 点击量:
HASH GAME - Online Skill Game GET 300
今天这篇博文要讲的是一个新颖的老话题,Wi-Fi安全。自从1999年WECA(Wireless Ethernet Compatibility Alliance, 无线以太网兼容联盟,现Wi-Fi联盟)制定第一代IEEE 802.11标准以来,围绕Wi-Fi密码的攻防就从来没有停止过。在最开始,大家的目的都还比较单纯,那个时候移动数据流量很贵,速度又很慢,攻击Wi-Fi密码的最主要动机是“蹭网”。后来随着网络在生活中的重要性逐渐增加,破解Wi-Fi成为了一种攻击面较广的入侵内网方式,攻破Wi-Fi密码的“奖品”也加码了不少:释放勒索病毒、拦截未加密的通信,这些可都是实打实的经济利益。
WPA则是Wi-Fi Protected Access的简写,意为“受保护的Wi-Fi访问”,自2003年首次提出以来,WPA认证协议至今已经发展到第三代。第一代WPA使用了一种叫TKIP(Temporal Key Integrity Protocol, 临时密钥完整性协议)的加密方式,因此又被称为WPA with TKIP。由于兼容性方面的考虑,WPA with TKIP在设计上有许多借鉴WEP的地方,也正因如此它在安全性上也不尽如人意。
细心的读者读到这里可能会有一个疑问:既然上一节已经提到WPA2具有足够的安全性,那又谈何破解一说呢?正如上一节最后所述,安全性是建立在【1. 使用较强的密码; 2. 通过WPA2认证协议加密; 3. 关闭WPS功能。】这三个前提上的,缺一不可。其中,由于现在大多数路由器的默认配置就是WPA2认证,关闭WPS,所以2、3两点条件是最容易满足的。鉴于此,今天这篇博文主要讨论的攻击场景假设被攻击的Wi-Fi使用WPA2认证协议,并且关闭WPS的情况。这种攻击场景也是被认为最难的一种攻击场景,如果读者们对WEP/WPA1认证或开启WPS的情况也比较感兴趣的话可以在留言区里留言,如果对这个话题感兴趣的读者较多的话可以考虑未来再开一篇博文进行讨论。
1. 无线网卡:推荐使用搭载Intel芯片的无线网卡,而且最好型号不要太新。因为后面我们会用到Linux环境,因此不太推荐使用搭载Realtek芯片的无线网卡。值得注意的是,无线网卡通常有两种形式,一种是通过USB接口连接的,另一种是台式机主板/笔记本自带的。第一种无线网卡可以通过虚拟化软件的USB passthrough功能直接传递给Guest OS,并且可以直接被Guest OS识别为USB无线网卡,所以在进行本文相关的操作时,平时不常用Linux的朋友可以在虚拟机里安装Linux,提升了易用性和容错。第二种无线网卡通过PCIE接口连接至系统,这种是最常见的,但是由于常见的消费级虚拟化软件(例如VMWare Workstation)不支持PCIE设备虚拟化,所以需要在硬件上直接运行Linux操作系统。
重要的事情要重复一遍:不推荐使用搭载Realtek芯片的无线网卡。我们后面要使用Linux的环境,而Linux对不少Realtek的无线网卡缺乏支持,或者更确切的说,不少Realtek的无线网卡对Linux缺乏支持。在2020年的今天,绝大多数情况下硬件驱动已经包含在Linux内核中,如果最新的Linux内核中没有某个硬件的驱动程序,要么是硬件提供商没有向Linux提交驱动程序代码,要么是提交了驱动程序代码,结果因为写的实在太烂被暴脾气的Linux创始人Linus Torvalds拒绝合入内核(Realtek就是这种情况)。不管怎么说,A hardware either works with Linux, or it doesnt, 五六年前那种给内核打补丁折腾一下午终于连上Wi-Fi的情况已经不复存在了。除非你非常确定某款特定的Realtek无线网卡具有良好的Linux支持,否则不建议使用Realtek无线网卡进行后续的操作。
1. 四重握手信息抓取环境:推荐使用Kali Linux进行四重握手信息的抓取。Kali Linux由Offensive Security发行和维护,是一种专门用于网络安全评估和渗透攻击的Linux发行版,预装了大量相关的实用工具。Kali Linux基于Debian,这点和Ubuntu一样,所以熟悉Ubuntu系统的读者们上手应该不会有任何难度。不过不太建议将Kali Linux作为日常使用的主力操作系统,就好比不太建议用瑞士军刀来吃饭一样。值得一提的是,如果你采用的无线网卡是上文所说的USB网卡,那你可以在虚拟机环境中安装Kali Linux,并将USB无线网卡passthrough给虚拟机。这样做的好处是既可以方便的在你最熟悉的操作系统环境和Kali Linux之间切换,也不容易因为误操作而把硬盘上原有的系统给搞挂了,在【这个链接】可以下载到最新(2020.02版本)的Kali Linux安装镜像;对于采用PCIE无线网卡的读者则建议通过Live USB的形式启动Kali Linux,好处同样也是不容易破坏原有的操作系统,在【这个链接】可以下载到最新(2020.02)版本的Kali Linux Live USB镜像。
使用命令sudo wifite打开Wifite。Wifite是一个Kali Linux自带的Wi-Fi攻击自动化脚本,集成许多常见的攻击方式,非常方便。打开Wifite之后,脚本首先会将无线网卡置于监听模式(Monitor Mode),之后便会开始搜索并分析周围的Wi-Fi接入点,并将Wi-Fi接入点的名称、认证协议、已经连接的客户端数量和信号强度等关键信息以列表的形式显示出来。列表会以一秒为间隔刷新,当已经搜索到你需要攻击的目标时,按下ctrl + c停止搜索,此时列表也会停止更新,如下图所示(SSID/MAC地址等信息已经隐去):
我建立了一个SSID为test的Wi-Fi接入点作为本次实验的攻击对象,并用手机连上了这个接入点。值得注意的是,由于四重握手包截取的原理是需要先将一个合法的客户端“踢”下线,因此这类攻击只适用于已有客户端连接的接入点。如果一个接入点没有客户端接入,那就无人可踢,也就无法截取四重握手了。不过在搜索阶段中,即使某个特定的接入点在列表中显示没有客户端也不需要太过担心,很多时候选中这个接入点进行下一步操作后,慢慢的会搜索到更多的客户端。按下ctrl + c停止搜索后,输入你想要攻击的接入点NUM一栏所对应的数字,并按回车键。也可以用逗号隔开数字的形式选中多个接入点进行攻击。下图中,Wifite开始尝试截取test接入点的四重握手包: