1. 项目概述:一次关于无线网络安全的深度实践
最近在整理我的安全测试工具箱时,又翻出了那个老伙计——Fluxion。这绝对算得上是无线安全领域里一个“经典永流传”的工具了。很多人一听到“WiFi钓鱼”,可能立刻会联想到一些不那么光彩的用途,但我想强调的是,我们今天讨论的,是站在网络安全从业者、渗透测试工程师或是对自己家庭网络安全性有极高要求的极客角度,进行的一次授权范围内的安全评估实践。理解攻击者的手法,是构筑有效防御的第一道城墙。Fluxion本质上是一个用于对WPA/WPA2加密的无线网络进行安全审计的脚本套件,它通过创建一个伪造的接入点(AP)并引导用户连接,从而捕获到握手包或直接获取预共享密钥(PSK)。这个过程,就是我们常说的“无线钓鱼”或“邪恶双子”攻击的自动化实现。
对于刚入门安全测试的朋友来说,Fluxion是一个非常好的学习案例,它能让你直观地理解无线认证的流程、WPA-PSK的弱点以及社会工程学在攻击链中的应用。而对于有经验的老手,重温Fluxion的流程,有助于梳理无线攻击的通用思路,检查自己知识体系中的盲点。本次实践,我将带你从原理到实操,完整走一遍使用Fluxion进行测试的流程,并重点分享那些官方文档里不会写的“踩坑”经验和参数调优技巧。请务必记住,所有操作必须在你自己拥有完全控制权的网络环境或已获得明确书面授权的测试目标上进行,任何未经授权的访问尝试都是非法且不道德的。
2. 核心原理与攻击链拆解
要玩转Fluxion,不能只停留在运行脚本的层面,必须理解其每一步背后的逻辑。这样,当遇到问题时,你才能精准定位,而不是盲目尝试。
2.1 WPA/WPA2-PSK的认证流程与弱点
我们家里的WiFi,绝大多数使用的是WPA/WPA2-PSK(预共享密钥)模式。它的认证过程可以简化为四步握手:
- 接入点(AP)广播信标帧 ,宣告自己的存在(SSID)。
- 客户端(手机/电脑)发起连接请求 。
- 四次握手 :AP和客户端通过四次报文交换,基于你设置的WiFi密码(PSK)和SSID,动态生成一个用于本次会话加密的临时密钥(PTK)。这个过程中,会交换一些随机数(Nonce)。
- 握手成功,建立加密连接 。
Fluxion攻击的核心,就瞄准了第2步和第3步。它的关键在于, 四次握手过程本身不直接传输密码,但握手包(包含特定报文)包含了用于推导密码的“线索” 。通过抓取到这个完整的握手包,攻击者就可以在本地进行离线暴力破解。密码复杂度越高,破解所需时间和算力就越大,但理论上,只要密码存在于攻击者的字典文件中,最终就能被破解。
2.2 Fluxion的攻击链设计
Fluxion将整个攻击过程自动化、模块化,其攻击链清晰且高效:
-
侦查阶段
:使用
aircrack-ng套件扫描周围无线网络,列出所有AP及其客户端,并选择目标。 -
干扰与监听阶段
:
- 启动一个恶意干扰进程,对目标AP的特定频道(Channel)进行持续的去认证攻击(Deauth Attack),将已连接的合法客户端踢下线。
- 同时,启动抓包进程,监听该频道。当被踢下线的客户端尝试自动重连其记忆中的目标AP时,Fluxion就能捕获到它们之间完整的四次握手包。
-
验证与钓鱼阶段
:一旦捕获到握手包,Fluxion会调用
aircrack-ng进行快速字典验证(通常用一个很小的字典),目的是 确认握手包的有效性 ,而不是为了立刻破解密码。确认握手包有效后,攻击进入关键阶段。 - 邪恶双子(Evil Twin)阶段 :Fluxion关闭干扰和监听,创建一个与目标AP SSID完全相同、信号强度往往更强 的伪造接入点。此时,被踢下线且设置为自动连接的客户端,会搜索到这个“信号更好”的“同名”网络并尝试连接。
- 门户认证(Captive Portal)与密码捕获 :当客户端连接到伪造AP后,Fluxion会启动一个精心设计的钓鱼门户页面。这个页面会模仿目标网络可能有的“网络登录”页面(例如,模仿运营商、酒店或企业网络),提示用户输入WiFi密码以“重新认证”或“登录网络”。用户一旦输入密码,密码便会以明文形式落入攻击者手中。
- 结果验证与清理 :Fluxion会用用户提交的密码去尝试连接真正的目标AP,或直接验证其是否正确。成功后,脚本清理创建的虚拟接口和进程,恢复环境。
注意 :Fluxion的“聪明”之处在于,它不单纯依赖耗时且不确定的离线暴力破解。它通过社会工程学,诱使用户自己交出密码,成功率远高于纯暴力破解,尤其是对付弱密码或用户安全意识不高的情况。
3. 环境准备与工具配置详解
工欲善其事,必先利其器。一个稳定且配置正确的测试环境是成功的第一步。
3.1 硬件要求:无线网卡的选择
这是最关键的一环。并非所有无线网卡都支持Fluxion所需的功能。
- 核心需求 :网卡必须支持 监听模式(Monitor Mode) 和 数据包注入(Packet Injection) 。监听模式允许网卡捕获所有经过的无线报文,而不仅仅是发给自己的;数据包注入则是发送伪造的管理帧(如去认证包)的前提。
-
推荐型号
:
- Alfa AWUS036ACH :双频(2.4G/5G),采用RTL8812AU芯片,驱动完善,性能强劲,是业界公认的“神卡”。
- Panda PAU09 :性价比之选,同样基于RTL8812AU芯片。
-
一些内置Intel无线网卡的笔记本,通过
airmon-ng检查也可能支持,但成功率和稳定性远不如外置USB网卡。
-
避坑指南
:
- 务必在购买前确认芯片型号和驱动支持 。RTL8812AU, RTL8187L是经过广泛验证的型号。
- 避免使用那些只标榜“大功率”但未明确说明支持监听和注入的网卡。
3.2 软件环境搭建(以Kali Linux为例)
Kali Linux是渗透测试的标配,内置了大部分所需工具。我们主要需要确保Fluxion及其依赖的完整。
# 1. 更新系统并安装核心依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y hcxdumptool hcxtools lighttpd dnsmasq hostapd php-cgi xterm isc-dhcp-server
# 2. 克隆Fluxion项目(建议从官方或可信分支克隆)
git clone --depth 1 https://github.com/FluxionNetwork/fluxion.git
cd fluxion
# 3. 安装Fluxion
sudo ./fluxion.sh -i
安装脚本会自动处理依赖。如果中途遇到问题,通常是某个软件包源的问题,根据提示解决即可。
3.3 关键配置与初始化检查
安装完成后不要急着运行,先做几个检查:
-
网卡识别
:将外置网卡插入电脑,运行
sudo airmon-ng。查看输出中是否列出了你的无线网卡接口(通常是wlan0或wlx...)。 -
驱动确认
:运行
sudo airmon-ng check kill。这个命令会停止可能干扰无线操作的网络管理器进程。对于某些网卡(如RTL8812AU),可能需要手动安装DKMS驱动,Kali新版通常已集成。 -
测试监听模式
:尝试将网卡置于监听模式。
成功后,会生成一个新的接口名,通常是sudo airmon-ng start wlan0 # 将wlan0替换为你的网卡接口名wlan0mon。用iwconfig命令查看,如果模式(Mode)显示为Monitor,则成功。
实操心得 :在虚拟机(如VMware/VirtualBox)中使用USB无线网卡时,务必确保网卡已正确“连接”到虚拟机,而不是宿主机。同时,虚拟机网络适配器最好设置为“桥接模式”,以便虚拟机直接与物理网络交互。
4. Fluxion实战操作全流程解析
下面我们进入实战环节。假设我们的测试目标是一个名为
HomeNetwork
的WiFi。
4.1 启动与目标选择
cd fluxion
sudo ./fluxion.sh
首次运行会有一个语言选择界面,选择中文或英文。之后进入主界面。
-
选择无线网卡
:Fluxion会列出所有可用的无线接口,选择我们之前置为监听模式的那个(如
wlan0mon)。 -
扫描网络
:选择扫描频道。通常选
All Channels进行全频道扫描。扫描结束后,屏幕上会列出所有探测到的无线网络,包括它们的BSSID(MAC地址)、信号强度(PWR)、频道(CH)、加密方式(ENC)和ESSID(网络名)。 -
选择目标
:使用方向键和回车键,选择我们的目标网络
HomeNetwork。Fluxion会自动记录其BSSID和频道。
4.2 握手包捕获与验证
选择目标后,Fluxion会提供两种攻击方式:“Handshake Snooper”(握手包捕获)和“Captive Portal”(直接启动钓鱼门户)。对于首次尝试,我们选择标准的“Handshake Snooper”流程。
-
攻击模式选择
:Fluxion会列出多种捕获握手包的方法,如
aireplay-ng去认证攻击、mdk4攻击等。对于初学者,选择默认的aireplay-ng方法即可,它最稳定通用。 -
开始捕获
:Fluxion会自动开启两个终端窗口:
-
一个窗口运行
airodump-ng:在目标频道上进行抓包,并显示实时情况。 -
另一个窗口运行
aireplay-ng:持续向目标AP或已连接的客户端发送去认证包,迫使它们断开重连。
-
一个窗口运行
-
等待与确认
:你的眼睛需要紧盯
airodump-ng的窗口。在右上角,当捕获到一个完整的WPA四次握手时,会显示“WPA handshake: XX:XX:XX:XX:XX:XX”(目标AP的BSSID)。这就是我们需要的“战利品”。 -
握手包验证
:捕获到握手包后,按
Ctrl+C停止扫描。Fluxion会自动将捕获的数据包(通常是一个.cap文件)进行整理,并调用aircrack-ng用一个内置的小字典进行快速测试,以 验证这个握手包是否有效、是否可用于后续破解 。如果验证通过,流程继续。
关键技巧 :有时客户端很少或不去动重连,导致握手包难以捕获。此时可以尝试:
- 在
aireplay-ng命令中,使用-0 10(发送10个去认证包)而不是无限发送,给客户端留出重连的间隙。- 如果知道目标客户端的具体MAC地址,使用定向去认证(
-c参数指定客户端MAC)效率更高。
4.3 部署邪恶双子与钓鱼门户
握手包验证通过后,Fluxion进入第二阶段。
- 选择门户攻击方式 :Fluxion会询问是使用“通用门户”还是“针对目标克隆的门户”。如果有目标网络门户页面的截图,可以选择克隆,这样欺骗性更强。这里我们选择“通用门户”。
- 选择具体门户模板 :Fluxion内置了多种仿冒模板,如仿路由器登录页、仿公共网络认证页等。选择一个你认为最可能让目标用户信服的模板。
-
自动部署
:选择后,Fluxion会自动完成以下操作:
-
创建虚拟接口用于搭建伪造AP(如
at0)。 -
配置
hostapd启动一个与目标同SSID的开放网络(无密码)。 -
配置
dnsmasq作为DHCP和DNS服务器,为连接的客户端分配IP地址。 -
配置
lighttpd网页服务器,部署钓鱼门户页面。 - 设置iptables规则,将客户端的HTTP/HTTPS流量重定向到钓鱼门户。
-
创建虚拟接口用于搭建伪造AP(如
-
等待用户上钩
:此时,伪造的
HomeNetwork网络已经出现,并且信号“满格”。之前被踢下线的客户端很可能会自动连接上来。一旦连接,用户打开浏览器尝试访问任何网页,都会被重定向到我们设置的钓鱼页面,提示输入WiFi密码。
4.4 密码捕获与验证
当用户在钓鱼页面上输入密码并点击“连接”或“登录”后:
-
密码记录
:密码会以明文形式记录在Fluxion指定的日志文件中(如
/tmp/fluxionlog.txt)。 -
自动验证
:Fluxion脚本会自动读取这个密码,并用它去尝试连接真正的目标AP(使用之前捕获的握手包和密码进行验证),或者在后台用
aircrack-ng进行快速验证。 - 结果反馈 :在Fluxion的主控制终端,你会看到“Password found: xxxxxx”的成功提示。此时,攻击目的已经达到。
操作现场记录 :在实际测试中,我发现成功率最高的场景是,当用户设备(如手机)显示“已连接,但无法访问互联网”时,用户本能地会去点击网络名称尝试“重新登录”或看到浏览器弹出的“登录门户”,警惕性会降到最低。Fluxion模拟的正是这种状态。
5. 高级技巧与参数深度调优
掌握了基础流程,下面这些技巧能让你更得心应手,并理解每个参数的意义。
5.1 提升握手包捕获成功率
-
频道宽度
:现代WiFi支持40MHz、80MHz甚至160MHz频道宽度。在扫描时,使用
airodump-ng的--band abg或分别扫描2.4G和5G频段,确保覆盖目标可能使用的所有频道。 -
目标锁定
:使用
airodump-ng时,可以精确锁定目标频道和BSSID,减少干扰和抓包文件大小。sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w output wlan0mon # -c 指定频道,--bssid 指定目标AP MAC,-w 指定输出文件前缀 -
MDK3/MDK4的运用
:Fluxion集成了更强大的攻击工具
mdk3/mdk4。它们能发起“信标洪水”(Beacon Flood)制造大量虚假AP干扰目标,或进行“认证洪水”(Authentication Flood)攻击AP本身,使其处理能力下降,有时能更有效地促使客户端重连。可以在Fluxion的握手包捕获方法中选择它们。
5.2 钓鱼门户的定制化增强
默认模板可能被识破。我们可以自定义钓鱼页面以提升欺骗性。
- 页面克隆 :如果目标是一个企业或酒店网络,先用自己的设备正常连接一次,截取整个认证页面的图片(包括Logo、字体、颜色、文案)。
-
修改模板
:Fluxion的钓鱼模板位于
fluxion/attacks/Captive Portal/下的各个门户目录中。找到你使用的模板,替换其中的index.html、图片和CSS文件。 - 逻辑优化 :默认页面提交密码后可能只是简单显示“连接中...”。你可以修改页面JavaScript,使其在提交后模拟一个“正在验证...”的进度条,然后跳转到一个仿冒的成功页面(如运营商欢迎页),最后再关闭页面,整个过程更加逼真。
- HTTPS处理 :现代浏览器对HTTP网站标记“不安全”。虽然Fluxion可以配置自签名SSL证书,但浏览器会给出严重警告,反而容易引起怀疑。在实际测试中,针对普通用户,简单的HTTP页面因其“简陋”而更像某些老旧设备的配置页面,有时比一个带着证书错误的HTTPS页面更不易被怀疑。
5.3 应对客户端隔离与MAC过滤
一些高级网络设置会增加攻击难度:
- 客户端隔离(AP Isolation) :启用此功能后,连接到AP的客户端之间无法直接通信。但这 不影响 Fluxion的攻击。因为Fluxion的伪造AP本身是攻击者控制的,我们可以不开启客户端隔离,让DHCP、DNS和HTTP服务都能正常与客户端交互。
- MAC地址过滤 :如果目标AP设置了白名单,只允许特定的MAC地址连接。那么即使我们获得了密码,也无法让伪造的AP以“合法身份”去验证密码(因为我们的AP的BSSID是伪造的,但MAC地址不同)。不过,Fluxion的攻击链在钓鱼阶段并不需要我们的伪造AP去连接真AP。我们只需要让客户端连接到我们,并骗到密码即可。获取密码后,我们可以将自己的无线网卡MAC地址修改(Spoof)成目标客户端的一个合法MAC地址(前提是知道一个),然后再用密码去连接真AP。这需要额外的步骤,不在Fluxion自动化流程内。
6. 常见问题、排查与防御视角
在实际操作中,你一定会遇到各种问题。这里记录下最典型的几个及其解决思路。
6.1 问题排查速查表
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
airmon-ng start wlan0
失败,无法进入监听模式
|
1. 网卡驱动不支持。
2. 网卡被系统进程占用。 |
1. 运行
sudo airmon-ng check kill
结束干扰进程。
2. 运行
lsusb
确认网卡型号,搜索对应芯片(如RTL8812AU)在Kali下的驱动安装方法。
3. 尝试使用
sudo ifconfig wlan0 down && sudo iwconfig wlan0 mode monitor && sudo ifconfig wlan0 up
命令组合手动设置。
|
| Fluxion扫描不到任何WiFi网络 |
1. 网卡未切换到监听模式。
2. 选择的接口错误。 3. 区域代码(Regulatory Domain)限制。 |
1. 用
iwconfig
确认接口模式是否为
Monitor
。
2. 运行
sudo iw reg set BO
(玻利维亚,功率限制较松)或
sudo iw reg set US
,然后
sudo ifconfig wlan0 down && sudo ifconfig wlan0 up
。
3. 确保在Fluxion中选择了正确的监控接口(如
wlan0mon
)。
|
| 能扫描到网络,但一直抓不到握手包 |
1. 目标频道判断错误。
2. 没有活跃客户端。 3. 去认证攻击未生效。 |
1. 确认目标AP的频道,在
airodump-ng
中精确锁定(
-c
参数)。
2. 观察
airodump-ng
窗口,目标AP下方是否有连接的客户端(STATION)。没有的话,攻击无法进行。
3. 尝试更换去认证攻击方式,如使用
mdk4
。检查是否因距离或功率问题,攻击包未到达目标。
|
创建伪造AP失败,
hostapd
报错
|
1. 网卡不支持AP模式。
2. 驱动冲突或配置错误。 3. 网络管理器干扰。 |
1. 运行
sudo airmon-ng check kill
再次清理进程。
2. 尝试使用
create_ap
等工具手动测试网卡AP功能。
3. 查看Fluxion生成的
hostapd.conf
临时文件,检查
interface
,
driver
,
ssid
等参数是否正确。
|
| 客户端连接了伪造AP,但未弹出钓鱼页面 |
1. DNS或HTTP重定向失败。
2. 客户端使用了HTTPS且证书错误导致阻止。 3. 客户端有“网络检测”功能(如Captive Portal Detection)且未被触发。 |
1. 检查
dnsmasq
和
lighttpd
服务是否正常运行(
systemctl status
)。
2. 在客户端手动访问
http://neverssl.com
或
http://captive.apple.com
(苹果设备用于检测门户的地址),看是否被重定向。
3. 在钓鱼页面模板中,确保包含触发网络检测的机制(如引用苹果的
success.html
)。
|
6.2 从攻击到防御:如何保护你的网络?
通过这次实践,我们更应该思考如何防御此类攻击:
- 使用强密码 :这是最根本的。确保WiFi密码是长度大于12位,包含大小写字母、数字和特殊符号的随机组合,并定期更换。这能极大增加离线暴力破解的难度。
- 启用WPA3 :如果路由器和终端设备支持,请务必启用WPA3-SAE加密。WPA3采用了更安全的“同时认证相等”(SAE)握手协议,能有效抵御离线字典攻击和邪恶双子攻击。
- 关闭WPS功能 :Wi-Fi Protected Setup (WPS) 的PIN码认证存在严重设计缺陷,可在数小时内被暴力破解。请务必在路由器设置中 禁用WPS 。
-
隐藏SSID(有限效果)
:不广播网络名称(SSID)可以避免被普通扫描发现,但无法防御主动探测工具(如
airodump-ng)。这属于“安全通过隐匿”,并非强安全措施。 - 启用MAC地址过滤(辅助手段) :虽然如前所述可被绕过,但结合其他措施,能增加攻击者的复杂度和时间成本。
- 保持固件更新 :及时更新无线路由器的固件,修复已知的安全漏洞。
- 提高安全意识 :对于公共WiFi,警惕任何要求输入密码的“二次认证”页面。对于家庭网络,如果设备突然断开后出现一个要求输密码的页面,应保持警惕,最好重启路由器并检查连接。
7. 法律与道德的边界:正确使用你的技能
最后,也是最重要的一部分,我们必须划清红线。
- 仅用于授权测试 :Fluxion及类似工具,只能在你 自己拥有所有权 的网络设备上,或在获得目标网络所有者 明确、书面授权 的渗透测试或安全评估活动中使用。未经授权的测试等同于黑客攻击,是违法行为。
- 教育目的 :在受控的实验室环境(如使用自己的路由器、AP和客户端设备搭建的封闭网络)中学习和研究这些技术,是理解和提升网络安全技能的正当途径。
- 责任与后果 :非法入侵他人网络,轻则面临行政处罚、民事赔偿,重则触犯刑法,承担刑事责任。技术本身无善恶,但使用技术的人必须为其行为负责。
我个人在多年的安全工作中,使用Fluxion这类工具进行内部红队演练时发现,最大的收获不是“攻破”了多少系统,而是通过模拟攻击者的视角,清晰地看到了防御体系中的薄弱环节——往往不是技术漏洞,而是人的意识和脆弱的认证流程。每一次成功的测试,都为加固真实的网络环境提供了最直接的依据。希望你在学习这项技术时,也能始终秉持这份建设性的初衷。

83

被折叠的 条评论
为什么被折叠?



