ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Kali Linux无线渗透测试实战:从网卡选择到WPA2破解与hashcat加速

Kali Linux无线渗透测试实战:从网卡选择到WPA2破解与hashcat加速 我最早认真折腾Kali Linux是从一片Atheros USB无线网卡开始的。当时手上的任务很直接验证办公区无线网络在WPA/WPA2加密方案下是否存在弱口令、配置疏忽或者协议层面的可利用点。那段时间把渗透测试从主机侧一路做到无线侧踩了不少文档里查不到的坑。如果你正准备入门无线渗透测试或者想把Kali Linux在无线方向上的能力摸透这篇文章能帮你少走一段弯路。下文所有内容都围绕一个前提展开只允许对你自己拥有、或者已经获得书面授权的网络进行测试这是底线后面不再重复。1. 先别急着敲命令把试验环境搭对1.1 无线网卡怎么选才不会白折腾一晚上Kali Linux本身是工具集合真正决定无线渗透测试能不能做下去的往往是那一张网卡。很多新手上来就用笔记本内置Intel无线网卡结果airmon-ng start wlan0一执行就报错或者能进监听模式但完全抓不到包。原因不复杂不是所有无线网卡都支持monitor mode监听模式和packet injection数据包注入而这两个能力恰恰是无线攻击的基础。我前后试过几类芯片给你一个可以直接参考的选型结论芯片方案代表网卡监听模式注入能力说明Atheros AR9271TP-Link TL-WN722N V1支持良好支持良好经典入门选择驱动开箱即用价格便宜Ralink RT3070多种杂牌USB网卡支持良好支持良好老芯片兼容性好二手市场常见Realtek RTL8812AU华硕USB-AC56等支持良好支持良好同时支持2.4G/5G速度更高驱动需要额外编译Realtek RTL8188EUS部分迷你网卡部分支持不稳定抓包可以注入容易出问题不推荐入门Intel内置笔记本自带多数不支持不支持建议直接放弃省下时间干别的判断一块网卡能不能用还有两个更稳的方法。先插上网卡执行lsusb看芯片型号然后运行iw list找到Supported interface modes一栏里面如果明确列出monitor基本就过关了。如果是Intel芯片但这里没有monitor字样后面所有抓包和注入命令都白搭这是硬件层面的限制不是软件能绕过的。另外提一句市面上所谓Kali官方推荐网卡的说法并不严谨Kali官网列出的只是社区测试过的型号。我实测下来AR9271和RTL8812AU是最少出幺蛾子的。如果嫌USB网卡占地方也可以考虑树莓派加外置网卡组成随身测试机但驱动编译流程不一致新手先别碰这条线。1.2 Kali系统的三种落地方式对比网卡定了之后就是怎么把Kali Linux跑起来。市面上常见的落地方式有实体机、虚拟机和ARM设备我分别说下实际体验物理机安装无线渗透测试最省心的方式网卡直通系统驱动和固件加载不会多一层虚拟化干扰。缺点是日常使用不方便毕竟Kali不是为办公设计的桌面稳定性也一般。虚拟机VMware/VirtualBox日常学习和Web渗透测试完全没问题但做无线测试时必须把USB无线网卡透传给虚拟机。这里有个反复出现的坑虚拟机服务偶尔会把USB设备抢回宿主或者网卡透传后Kali识别到了但airmon-ng启动监听模式时提示Device or resource busy。解决方法是在宿主机的USB设置里调整优先级并且尽量用VMware而不是VirtualBox实测VMware的USB穿透对无线网卡更友好。树莓派/迷你主机适合便携侦察场景但无线模块和驱动需要额外调功耗和散热也要考虑我不建议把它作为第一套环境。我的建议很简单如果你有闲置笔记本直接物理机装Kali。没有的话虚拟机先把语法和流程跑熟真正做现场测试前再切换到物理机。跑通全流程用虚拟机没问题但不要拿着虚拟机去验证网卡性能无线信号在虚拟化层会被削弱结果不准。2. WPA/WPA2到底哪一步可以被“攻击”2.1 从四次握手看攻击切入点WPA2-Personal的加密体系里最核心的是四次握手4-way handshake。连接过程大致是这样路由器AP和客户端STA都知道同一个预共享密钥PSK这个PSK通过PBKDF2算法生成一个256位的PMK成对主密钥。双方再交换随机数ANonce和SNonce各自计算出PTK成对临时密钥最后用PTK对握手消息计算MIC校验值确认对方确实知道正确密码。我把这个过程理解为两个人对暗号你和我都知道同一个暗号PSK但我们不能直接喊出暗号所以通过交换随机数生成一组临时暗号PTK再用这组临时暗号验证彼此身份。正常连接时这一套流程发生在几百毫秒内用户感知不到。攻击者能插手的位置就在这几次交换中。如果我能捕获到完整的四次握手报文就拿到了ANonce、SNonce和带有MIC的认证帧。虽然我没法直接反推密码但我可以在本地离线枚举字典里的每一个候选密码用同样的PBKDF2算法生成PMK再计算对应的PTK和MIC与抓到的MIC比对。比对一致说明候选密码就是真正的PSK。整个过程完全不碰目标AP所以叫离线攻击。这一点是理解WPA2破解的关键不是实时去猜路由器密码而是把握手包带回本地“跑字典”。所以你经常看到有人说“抓包一小时破解五分钟”指的就是这种离线暴力破解。抓包是否顺利决定时间上限跑字典速度决定时间下限。2.2 破解成功率的本质是密码强度既然攻击是离线字典枚举破解成功率就完全取决于密码的复杂度和字典覆盖率。WPA2加密算法本身没有被直接攻破真正被攻破的是“弱密码”这个人类问题。用8位纯数字做密码的网络即使开了WPA2在GPU加持下可能几分钟内就被枚举完而用了20位大小写加符号的随机密码破解时间会指数级增长。这里补充一个很多人忽略的细节PMK计算依赖SSID作为盐值。也就是说即使两个网络密码完全一样只要SSID不同PMK就不同hashcat必须按不同网络分别跑。这也是生成彩虹表不划算的原因SSID组合空间太大预计算根本覆盖不过来。所以做无线渗透测试时判断一个网络是否安全不要只看它是不是WPA2还要看密码长度和复杂度。我见过不少企业用了WPA2-EnterpriseRADIUS却把访客网络设成8位纯数字结果整个内网边缘形同虚设。WPA2是加密工具的选项不是安全结果的保证。3. 完整实操捕获四次握手并离线爆破3.1 启动监听模式进入实操阶段。先把外置网卡插到Kali物理机或透传到虚拟机确认Kali识别到了无线接口。通常接口名是wlan0或者wlan1用iwconfig看一下。然后启动监听模式sudo airmon-ng check kill sudo airmon-ng start wlan0第一行check kill会杀掉干扰网卡监听的进程尤其是NetworkManager。执行后系统会提示你禁用NetworkManager这没问题测试完再手动启回来。第二行如果成功会输出类似wlan0mon的监听接口名后面所有命令都用这个接口名。这里有个很常见的坑airmon-ng start之后原来的wlan0变成了wlan0mon但部分虚拟机里USB网卡会被重新枚举成另一个接口名比如wlx001122334455。解决办法不是死记接口名而是每次执行iwconfig看一眼当前活跃的无线接口确认哪个处于Mode:Monitor。3.2 扫描目标并锁定信道监听模式起来之后开始扫描周围网络sudo airodump-ng wlan0mon屏幕会不断刷新列出周围所有AP的信息包括BSSID、信道、加密方式、信号强度和SSID。目标信息确认后按CtrlC停止扫描然后记住目标AP的BSSID和信道CH。有个细节要提醒如果目标网络在5GHz频段你的网卡必须支持5GHz监听很多入门USB网卡只支持2.4GHz扫描结果里会少一大片。我自己一开始用AR9271扫不到公司5G网络还以为是Kali配置问题后来换了RTL8812AU才看到。网卡只支持2.4GHz扫描5GHz信号源包含一个安静但有结果的成长期。3.3 主动Deauth逼客户端重连大多数情况下目标AP已有客户端连接。不能指望客户端刚好在你扫描时主动重连所以要做一次Deauth攻击把已连接设备踢下线强制它重新走四次握手流程sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon另开一个终端执行sudo aireplay-ng -0 3 -a AA:BB:CC:DD:EE:FF -c 00:11:22:33:44:55 wlan0mon-0表示发送Deauth包后面的数字3表示发送次数-a指定目标AP的BSSID-c指定客户端MAC。不加-c时会对所有客户端广播Deauth包效果更猛但干扰也更大测试时建议先定向。这里的关键是让第一个终端始终保持监听等待客户端重新连接时捕获握手。如果你的网卡离AP太远信号弱Deauth后客户端可能没有立刻重连所以执行完攻击后要回到第一个终端盯屏幕看到右上角出现WPA handshake: AA:BB:CC:DD:EE:FF才说明捕获成功。3.4 确认抓到握手包准备离线破解看到WPA handshake提示后不用急着停止。按CtrlC停止airodump-ng然后检查生成的cap文件ls -lh capture-01.cap如果文件大小只有几百字节多半没抓到完整握手。可以用Wireshark打开或者用aircrack-ng快速验证aircrack-ng capture-01.cap命令会显示该cap文件里是否包含有效的WPA握手并列出目标AP信息。很多新手在这一步急着开hashcat结果hashcat报错说文件格式不对原因就是cap文件里没有完整握手。确认握手存在比急着破解更重要。3.5 用hashcat做GPU加速爆破小规模字典可以用aircrack-ng直接跑aircrack-ng -w /usr/share/wordlists/rockyou.txt -b AA:BB:CC:DD:EE:FF capture-01.cap但aircrack-ng只跑单线程CPU速度有限。想要真正跑得快推荐用hashcat配合GPU做离线枚举。先把cap文件转成hashcat 22000模式支持的格式hashcat -m 22000 capture-01.cap --show更标准的做法是用hcxpcapngtool工具转换hcxpcapngtool -o hash.hc22000 capture-01.cap得到hash.hc22000后用hashcat跑字典hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt如果目标密码在字典里就会直接输出破解结果。如果没有还可以加规则做变异或者用--increment做纯暴力枚举。实测下来一张中端NVIDIA显卡做WPA2的PBKDF2计算每秒大概能跑30万到100万次候选比CPU快一到两个数量级。但要注意hashcat对驱动和OpenCL环境比较挑剔Kali默认不带NVIDIA驱动需要先装好驱动再跑。别在驱动没装好的情况下怀疑hashcat命令写错了。4. 进阶方向PMKID、WPS与钓鱼测试4.1 PMKID攻击不再需要等待任何客户端四步握手方案有个尴尬前提目标AP周围至少有一个客户端在活动否则Deauth半天也等不到重连。PMKID攻击正好解决了这个问题。PMKID是RSN信息元素里的一个字段部分AP在收到客户端的关联请求时会主动计算并发送PMKID。它计算公式是PMKID HMAC-SHA1(PMK, PMK Name MAC(AP) MAC(STA))攻击者不需要等客户端只要拿到这个PMKID就能在本地枚举字典方法和破解四步握手完全一样。工具方面Kali里常用的hcxdumptool可以扫描并捕获PMKIDsudo hcxdumptool -i wlan0mon -o pmkid.pcapng --enable_status1扫描一段时间后把pcapng转成hashcat格式hcxpcapngtool -o pmkid.hc22000 pmkid.pcapng hashcat -m 22000 pmkid.hc22000 rockyou.txt不是所有AP都支持发送PMKID实测老路由器支持率较高新设备部分会关闭这个行为。但它的价值在于即使整个信道里没有任何客户端也有可能完成离线破解在红队评估和网络巡检里非常实用。4.2 WPS、Evil Twin与“破密码之外”的测试思路如果你带着“只要破出密码才叫成功”的想法会错过无线渗透测试里更常见的测试面。WPS PIN攻击针对的是开启了WPS功能的路由器。WPS的PIN只有8位数字且最后一位是校验位实际有效空间只有7位大约10的7次方量级。通过工具如reaver或bully可以尝试PIN来恢复WPA/WPA2密码。现在很多路由器默认关闭WPS但不少老设备开着。测试方法很简单扫描时看网卡是否报告WPS状态。如果开着用reaver跑一轮sudo reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -vv -K 1不过我不建议把它列为无线渗透的默认流程因为在线爆破PIN速度慢还可能触发AP锁定机制一旦把AP锁定整个测试就要中断。Evil Twin邪恶双子星则完全是另一个思路你不去破解目标密码而是伪造一个同名的AP诱导用户主动连接从而收集用户输入的凭据或直接观察流量。这个技术对WPA2-Personal网络的密码恢复没什么帮助但在企业级渗透测试里非常有用尤其是配合portal认证页面做钓鱼测试。操作流程大致是用airbase-ng创建同名AP再配合iptables和dnsmasq搭建一个伪认证页面诱使用户输入账号密码。整个过程涉及网络层配置比单纯跑字典复杂得多但测试价值更高。如果你正在学习渗透测试不要只盯着“破解WPA2”这一个点。无线渗透测试的核心是评估无线边界是否可以被绕过、被干扰、被欺骗密码破解只是其中一种手段。5. 故障排查与效率优化速查5.1 常见问题速查表我把自己反复遇到的几类问题整理成了表格按“现象、原因、解法”排列现象原因解法airmon-ng启动监听失败网卡芯片不支持监听模式换Atheros/Ralink/RTL8812AU芯片网卡NetworkManager干扰未先执行check killairmon-ng check kill扫不到目标AP网卡不支持5GHz / 信道被过滤更换支持5GHz网卡检查airodump-ng过滤参数一直抓不到握手没有客户端 / 客户端离线耐心等待或使用PMKID攻击替代抓到握手但aircrack验证失败抓包时不完整重新Deauth并等待WPA handshake提示hashcat报No hashes loaded转换工具/格式不对用hcxpcapngtool重新转换确认文件非空GPU跑不起来缺NVIDIA驱动/OpenCL安装对应显卡驱动运行hashcat -I确认设备这个表格是我在实际操作中一点点沉淀下来的比教科书式排查更有用。遇到问题时先按表格定位是硬件、驱动还是流程再做对应操作能省大量时间。还有个小经验Kali系统升级后aircrack-ng套件版本变化可能导致参数不兼容。老教程里的命令有时在新版本已经废弃。遇到命令不存在或参数不对时直接看airmon-ng --help和aireplay-ng --help以工具自带帮助为准。5.2 提高破解效率的几个细节跑字典时效率峰值取决于三件事字典质量、规则变体、硬件加速。字典不是越大越好。rockyou.txt虽然经典但它适合抓“常见弱密码”对于企业随机生成的密码命中率很低。我会准备一份基础字典再配合hashcat的规则做变异比如把password变成Password123或admin2024。--rule-based攻击模式可以在不增加字典体积的情况下覆盖更多变体。硬件方面如果手上的电脑没有独立显卡破解效率会受很大限制。不用急着买卡先评估测试目标一个随机的12位强密码即使给你顶级GPU也需要相当长时间不值得等。渗透测试的目标不是破解一切目标而是快速识别出哪些网络有低垂果实。在授权范围内把时间花在容易被击穿的目标上比耗在硬骨头上更符合测试逻辑。另外提醒一下跑hashcat时温度控制很关键。笔记本GPU在长时间满负荷下会降频影响速度。可以打开nvidia-smi监控温度如果超过85摄氏度最好停一会或者改用CPU跑小字典别把设备烧了。结尾说了这么多最后分享一点个人习惯。做完无线渗透测试之后我一般不会只把命令行记录贴进报告而是专门留一栏“密码强度评估”和“改进建议”比如提醒对方把密码改成随机生成的长口令、关闭WPS、访客网络设置独立VLAN。技术能力只有落到修复方案上才有价值否则就是自嗨。还有一个小技巧测试过程中把所有抓到的cap文件、hash文件和命令日志按日期归档。过了一段时间再回顾能清楚看到当时判断为什么正确、哪里走了弯路。做渗透测试尤其无线方向经验积累靠的不是记住几个命令而是把每次操作的上下文和结果完好保存下来。这套方法我沿用至今也推荐给正在往这个方向走的你。
返回列表