
干网络安全这行的人十有八九都碰过Aircrack-ng。这套工具在我手里用了快十年从当年在实验环境里抓包练手到后来做企业无线安全评估它始终是随身包里排第一位的无线渗透套件。今天这篇不是照抄man手册而是把我从零基础踩坑到实际项目里跑通全流程的经验一点点拆开讲清楚标题里说“收藏这一篇就够了”不算吹牛但前提是你真的跟着下面的步骤动手跑一遍。先说清楚Aircrack-ng是用于无线网络安全性测试的开源工具集核心能力是抓取和分析无线数据包可以用来测试自家WiFi的密码强度、验证企业内部无线网络是否存在弱口令风险。哪怕是零基础只要有一块支持监听模式的无线网卡再准备一台装好Linux的电脑就能在完全合规的环境里跑通整个测试链路。这篇文章适合三类人刚进安全圈对无线渗透两眼一抹黑的萌新、想给公司无线网络做检查的网络管理员、以及打CTF比赛拿到无线破解题目的选手。当然所有操作都要在你有授权的网络和设备上进行这个边界在文章末尾还会重点说。1. 先搞明白Aircrack-ng到底能干什么1.1 一套工具集而不是单个命令很多新手以为Aircrack-ng就是一个破解工具输入一条命令就能出密码这想法太天真。它其实是一个工具包的统称核心组件包括下面这些我按实际使用频率排个序airmon-ng管理无线网卡的模式切换普通网卡默认工作在“受控模式”只能连接WiFi要抓空中的包得先把网卡切到“监听模式”。airodump-ng扫描周围无线网络、抓取数据包能显示各个WiFi的信道、信号强度、加密方式、连接的客户端。aireplay-ng注入数据包最常见的用途是发送“取消认证”攻击逼着已连接的客户端断线重连从而抓到握手包。aircrack-ng真正的密码破解程序加载抓到的握手包配合字典、暴力穷举或密码规则找出WiFi的明文密码。airdecap-ng用过握手包解密抓取的WEP/WPA流量通常用来分析网络中的数据内容。airbase-ng伪造一个无线接入点用于中间人攻击或进一步测试使用门槛稍高。这六个命令协同工作完整的测试流程一般是切换网卡监听模式 - 扫描附近网络 - 锁定目标AP - 抓取无线数据包 - 如果目标是WPA/WPA2就抓握手包 - 用字典或暴力方式破解。每一步都有专门的工具拆得很细。这种设计的好处是灵活你可以只用来做信号覆盖检查也可以跑全流程渗透测试不用为每个场景找新软件。1.2 无线安全基础与攻击路径要理解Aircrack-ng的工作逻辑至少得明白三种无线加密方式的差别。早期WiFi用的是WEP因为RC4加密算法实现有缺陷抓几十万到几百万个数据包就能用统计方法还原出密钥现在基本淘汰。后来普及的WPA/WPA2基于四次握手机制客户端和路由器要交换几个消息生成动态会话密钥即使你截获了这些握手包也只能拿它做离线字典攻击暴力尝试密码。WPA3是新一代标准引入了SAE等机制抵抗离线字典攻击的能力强很多但对老设备兼容性一般。Aircrack-ng的经典攻击路径就是围绕这两种协议差异展开的对老旧的WEP网络用airodump-ng高强度抓包再用aircrack-ng做统计分析可能几分钟就能出结果对WPA/WPA2网络攻击目标不是加密协议本身而是弱密码。你抓不到握手包后面无从破解所以需要用aireplay-ng把合法客户端踢下线逼着它重新连接在这个过程中截获四次握手信息。这条路径几乎覆盖了市面上90%的民用WiFi测试场景也正是零基础入门时最值得练手的部分。1.3 为什么零基础要先学它选择Aircrack-ng作为渗透测试入门工具我觉得有几个很现实的原因。第一它会逼你理解网络协议栈中数据链路层的基础知识信道、BSSID、信标帧、探测帧这些概念都能在实践中变得具象。第二它是开源的而且经历了十几年迭代文档和社区案例足够多遇到奇葩问题基本都能检索到答案。第三它的硬件依赖门槛相对低一块两三百块的USB无线网卡就能带着你跑完整个流程比搞一台物理服务器练内网渗透划算得多。当然这也意味着你需要花点心思把环境弄对尤其是无线网卡驱动这块后面我单独讲。2. 环境准备装好工具比想象中麻烦2.1 系统、网卡和虚拟机怎么选Aircrack-ng最早就是为Linux设计的在Linux下驱动兼容性和工具链配合都最顺所以我强烈建议你装一个主流的渗透测试专用Linux发行版里面会预装很多静态工具和无线注入脚本省去自己折腾依赖的时间。如果不想装双系统拿一台空闲的旧笔记本直接跑Linux Live USB或者用在虚拟机里插上USB无线网卡的方式也行但要注意虚拟机里跑无线抓包对USB直通的支持时好时坏如果你在虚拟机里发现网卡没有监听模式先别怀疑工具坏了大概率是虚拟化把USB设备隔了一层我见过不少新手卡在这一步。无线网卡是整个环节里最挑剔的部分。不是所有网卡都支持监听模式和数据包注入笔记本自带的内置网卡十有八九不行外置USB网卡也得看芯片方案。选卡的时候认准“支持监听模式”“支持数据包注入”这两个关键词。如果你不确定手里的网卡能不能用可以在Linux里执行 lsusb 和 dmesg 看内核识别情况然后交给airmon-ng去探测。别贪便宜买杂牌某些廉价网卡用的是需要手动编译驱动的芯片装上之后还会和NetworkManager抢设备够你折腾半天的。2.2 安装命令与依赖检查如果你用的是完整版渗透测试发行版一般自带Aircrack-ng旧版本可能需要更新。终端里执行sudo apt update sudo apt install aircrack-ng装完先跑一下版本确认aircrack-ng --help能看到Usage信息基本就没问题了。再检查一下无线网卡是否被系统正确识别用iwconfig如果无线接口后面显示的不是“no wireless extensions”说明驱动加载正常。接着我要多说一句装完工具之后的头号敌人是NetworkManager它会把无线网卡自动连接到已知网络抢占网卡资源导致监听模式切不过去。我通常的处理方法是执行 airmon-ng check kill它会停掉干扰无线操作的进程包括NetworkManager。记住这是一把双刃剑它会暂时断掉你电脑的无线网络所以自己心里有个数。2.3 让无线网卡进入监听模式一切都准备好执行sudo airmon-ng start wlan0这里的wlan0是无线网卡的默认接口名取决于Linux发行版也可能是wlp2s0或者别的。命令跑完如果提示“PHY interface”和“driver”没问题接口名一般会变成wlan0mon这就是监听模式的接口。如果你用的是老版本驱动可能还会看到mon0。验证是否成功再次使用iwconfig看到接口模式下有“Mode:Monitor”字样说明已经切好了。很多人到这一步容易懵为什么执行完以后自己的网络图标不见了因为airmon-ng把关联网络的进程杀了而且网卡进入了不连路由器的监听模式。这属于正常现象不用慌。退出监听模式时执行sudo airmon-ng stop wlan0mon sudo systemctl restart NetworkManager把网络进程拉回来。如果你在虚拟机里拔插了USB无线网卡记得把网卡从主机里“断开连接”再连接到虚拟机否则两个系统抢设备结果是只有一方能用。3. 零基础抓包实战三步拿到握手包3.1 扫描目标信道锁定目标AP监听模式就绪后先用airodump-ng看看周围的无线网络。基础命令是sudo airodump-ng wlan0mon屏幕会分成上下两段上面是AP列表下面的是关联的客户端列表。AP列表里能看到BSSIDMAC地址、信号强度PWR、信道CH、加密方式ENC、以及ESSID即WiFi名字。如果你要测试某个特定WiFi先记住它的信道和BSSID。注意airodump-ng默认在2.4GHz信道跳频采集每隔一小段时间换一个信道所以单次扫描时各网络的数据速率会很跳。如果需要稳定采集某个目标用下面的命令把监听网卡锁定到目标信道同时把抓包结果写到文件里sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon解释一下参数-c指定信道--bssid指定目标AP的MAC地址-w指定输出文件名。这条命令跑起来以后屏幕上只会显示目标AP的详细信息并且数据包会持续写入capture文件后缀会自动生成。CtrlC可以停止抓包文件就保存在当前目录。3.2 客户端连接与四次握手原理WPA/WPA2网络里路由器不会把密码本身发出来而是通过四次握手生成一个会话密钥。整个流程大概是客户端发出连接请求路由器回一个随机数客户端用密码哈希计算出响应双方交换4个消息完成认证。你的密码强度直接决定响应值的可预测性而握手包正是携带这些消息的关键。对攻击者来说只要能截获这四次握手的完整数据包就能离线进行字典攻击。所谓“离线”的意思是你不用再接触目标网络拿着这个包回到任何一台电脑上慢慢跑一天跑几千万次都有可能。而在线暴力破解是不可行的因为路由器会限制失败次数半路就可能锁定。所以问题就变成怎么抓到完整的握手包如果恰好有一个客户端正在连接路由器比如有人手机重启无线、新设备接入airodump-ng抓到的数据包里可能已经包含了EAPOL帧也就是握手包。但大多数时候你扫描时看到的只是正常的连接状态不会频繁出现新连接这时候就得主动制造一次重连。3.3 主动踢掉客户端用aireplay-ng加速抓包aireplay-ng是抓包的加速器它最常用的0号攻击格式sudo aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF -c 11:22:33:44:55:66 wlan0mon参数好理解-0表示发送取消认证攻击也叫deauth数字5是发送次数-a是目标AP的BSSID-c是受害客户端的MAC地址。这条命令会让那个客户端暂时“掉线”然后它大概率会自动重新连接这一瞬间正好撞上airodump-ng的枪口。如果不知道关联客户端可以从airodump-ng下方列表里挑一个或者直接用广播地址把整个网络踢一遍sudo aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF wlan0mon广播方式会让所有客户端都断一下效果更猛但本地网络里的终端可能会短暂瘫痪几秒钟。我个人的习惯是先踢单目标客户端踢不动再换广播。每次发送deauth时盯住airodump-ng的右上角如果看到“WPA handshake: AA:BB:CC:DD:EE:FF”恭喜握手包拿到了。这个提示非常重要你要迅速按CtrlC停掉抓包因为完整握手的有效窗口很短别让它被后续数据包覆盖。3.4 确认握手包是否完整抓到握手包不是凭肉眼看看提示就行还要用工具验证。最粗暴的方式是直接用aircrack-ng去读文件aircrack-ng capture-01.cap如果文件里有目标AP的握手包它会显示在这条AP对应行并带有“1 handshake”标红提示。你也可以用更精确的tshark或者编辑器去翻EAPOL帧但对新手来说aircrack-ng这个验证方式就够用了。另外提醒一个问题很多新手抓包时嫌文件太大一开就是几个小时结果磁盘塞满。airodump-ng默认会持续写入目标网络的通信量越大文件膨胀得越快。所以我通常只在拿到握手包后立刻停掉不再浪费空间。顺便说一句一个干净的握手包也就几十KB别把自己电脑搞成仓库。4. 握手包破解字典、GPU与技巧4.1 字典不是越厚越好拿到握手包后a破解环节终于登场。WPA握手包不能直接反向解出密码只能通过候选密码逐个计算哈希和抓到的握手数据比对猜对了显示成功。这个就是“离线字典攻击”。所以你的字典质量、硬件算力决定了破解时间。很多新手下载一个几十GB的“万能字典”跑了一天没结果就来问是不是工具坏了。其实绝大多数家庭WiFi密码根本没到需要海量字典那个级别的复杂度。中文家庭网络最常见的密码是纯数字8位比如生日、手机号后八位。你手写一个包含常见弱口令的字典都比一味堆砌大字典更容易出结果。系统自带的rockyou.txt是一个起步经典选择解压后大概十几MB覆盖了大量暴露在泄露事件中的真实密码。你还可以用crunch这类工具按照特定规则生成定制字典比如“8位纯数字”“开头固定字母后面跟7位数字”。生成一个8位纯数字字典的命令crunch 8 8 0123456789 -o digits8.txt这个命令会生成所有8位数字组合文件约几百MB跑完需要一些时间。最适合用来对付那些密码是生日或手机号的场景。4.2 aircrack-ng跑字典的通用套路破解命令格式很简单aircrack-ng -w dictionary.txt -b AA:BB:CC:DD:EE:FF capture-01.cap-w指定字典文件-b指定目标AP的BSSID让它只针对目标握手包破解。如果只有两个AP文件它也会尝试都破但指定位更明确避免和其他AP混淆。运行后屏幕会显示当前尝试的密码数、破解速度和是否成功。破解成功会显示“KEY FOUND!”并出现明文密码同时也会显示这个密码在字典里的位置。CPU跑的破解速度取决于数据包大小和哈希算法纯CPU可以尝试每秒几千到几万次。对一般8位数字组合也需要不少时间。所以我个人建议在跑大规模字典之前先做一个快速验证用几个常见弱密码如12345678、88888888做一个小字典快速确认握手包有没有问题、破解流程通不通。如果小字典也跑不出结果不一定是密码强也可能是字典里根本没有这个密码或者抓的握手包有问题这时候先排查再扩大规模。4.3 想提速就得上GPUCPU破解WPA握手包的效率已经跟不上时代现在稍微讲究一点的做法是把握手包转换成hashcat的格式让显卡去跑。hashcat能利用GPU并行计算速度可以比CPU快几十倍甚至上百倍。一张中端显卡跑每秒几百万次尝试是常规操作。转换步骤很简单如果你比我更常用hashcat流程是先把cap文件转成hc22000格式hcxpcapngtool -o hash.hc22000 capture-01.cap然后跑字典hashcat -m 22000 hash.hc22000 dictionary.txthashcat的-m 22000对应WPA-PBKDF2-PMKIDEAPOL这是目前最通用的WPA握手格式。它跑的时候会显示实时速度、进度、候选密码。破解成功后还需要一步hashcat -m 22000 hash.hc22000 dictionary.txt --show如果你的显卡驱动没装好hashcat会报错。这里我不展开驱动安装细节因为不同显卡差异很大但记住一个原则笔记本双显卡环境里确保跑hashcat时用的是独立显卡有些朋友跑半天发现还在用核显快到崩溃的破解速度肯定不正常。4.4 破解不出来的常见排查思路如果字典跑完了一个密码都没匹配上问题出在哪我按概率排一下第一字典覆盖范围没包含目标密码这个最常见换更大的字典或者针对性生成规则第二握手包不完整抓到的虽然是提示“handshake”但可能缺失了部分EAPOL消息导致无法验证第三目标密码复杂度超出了字典组合范围比如长度超过12位、包含特殊字符和大小写混合这时候单纯靠字典效率极低不如换个思路。换个思路的意思不是死磕密码而是看看目标网络有没有其他突破口。比如检查是否开启了WPSWiFi保护设置如果开了WPS PIN固定8位数且没有锁定策略用特定的工具去爆破PIN比猜WiFi密码省力得多。再比如看看目标用的路由器管理后台是不是弱密码一旦进了管理后台就能直接看到WiFi密码明文压根不用破解。5. 实战中经常踩的坑与排查方法5.1 网卡无法进入监听模式最常见的报错是airmon-ng start之后接口还是显示managed。先确认你的无线网卡是否被系统识别执行 iwconfig 看看有没有无线接口。如果压根没出现接口多半是驱动没装或者被内核屏蔽了。有些廉价网卡要在Linux下自己安装驱动而且内核一更新就可能失效。遇到这种情况我建议先在网上搜一下和你网卡芯片相关的Linux驱动方案很多都有现成的安装脚本。还有一种情况是网卡驱动本身不支持监听模式这个属于硬件选型问题只能换卡。永久性建议如果把这玩意儿当主力工具建议备一块USB网卡专门干这个几百块的成本别舍不得省下来的排障时间远比卡钱值钱。5.2 抓不到目标AP的信号airodump-ng扫了半天目标就在面前但列表里没有八成是信道问题。目标AP用了5GHz频段而你的默认监听信道在2.4GHz或者目标信道不在扫描范围内。用 -c 参数锁定信道以后就能看到了。如果锁定信道还是看不到基本是信号太弱或者周围有什么东西遮蔽换个位置、把USB网卡插到延长线上、增加一个天线模块都能改善。如果周围全是同一名SSID的分布式AP别用名字锁定目标要认准BSSID。以前项目里遇到过商场同名WiFi抓包的时候一个SSID下面几十个MAC我按照名字去找结果一直弄错目标多做几步才发现要按BSSID区分。5.3 明明发了deauth却迟迟不见握手包这种情况通常是目标客户端不在当前信道或者客户端没有重连。先确认客户端是不是同一个信道airodump-ng屏幕下方看到的客户端不一定和你目标AP在同一信道因为有些客户端一直处于扫描状态。更有效的方式是等待客户端自动漫游或手动触发设备连接。如果网络里根本没有活跃客户端也可以尝试从本机发起一个连接但前提是知道部分信息操作起来有点绕。还有一点deauth攻击在部分新型路由器或WPA3/802.11w管理帧保护环境下会失败或效果打折。开启了管理帧保护后伪造的解除认证包会被客户端直接丢弃。对付这种网络要寻找更隐蔽的攻击面或者干脆放弃该目标。5.4 破解效率太低的几个优化方向破解环节的硬伤是密码本身强度弱密码几秒出强密码跑一年也白搭。优化方向有三个一是优化字典把现实中泄漏过的密码按你的目标地区人群、常用习惯筛一遍再配合简单的变换规则二是用规则生成器让基础字典的每个词衍生出大小写、尾部加数字等变体这样常见变体不会漏三是上GPU用hashcat之前提过这个提速最明显。实战中如果某个密码12位新闻联播里那种随机字符长度就别抱希望了直接换思路。5.5 常见问题速查表现象可能原因处理办法airmon-ng start 后接口名不变驱动不支持监听模式换网卡或装对应驱动airodump-ng列表没有目标AP信道不对或信号弱锁定目标信道、调整位置发送deauth后不出现握手包客户端不在线或管理帧保护等待活跃客户端或弃攻该目标握手包提示但aircrack-ng验证不到抓包文件不完整或覆盖重新抓包抓完立刻停止字典跑完没出密码密码不在字典范围内针对性生成字典或转移攻击思路hashcat报错无法使用GPU驱动未装或权限不足配置显卡驱动、用root执行6. 说不完的边界合法授权再动手6.1 什么情况下可以安全地测试Aircrack-ng本身没有善恶属性就像锤子可以钉钉子也可以砸核桃。安全测试的核心前提是“授权”。你可以测试自己家里那台路由器或者专门买一个二手路由器刷好固件搭一个实验环境怎么测都不越界也可以在公司和实验室里获得网络管理员或上级明确授权后对内部无线网络做安全评估还有一类常见的就是CTF比赛和在线实验平台题目环境就是合法靶场放心刷。千万不要对隔壁邻居的WiFi、公共区域的陌生网络做类似操作。蹭网行为的本质是未经授权访问他人的网络资源如果顺手还做了解包和破解那就不是技术问题而是很可能触碰法律红线了。文末我多说一句安全技能是用来保护自己的系统和帮助他人排查风险的不是用来干坏事的。6.2 从渗透测试角度理解你的责任做完一次无线安全评估真正专业的收尾不是报个密码出来而是写一份完整的测试报告告诉企业客户风险点在哪、密钥强度如何、受影响设备范围、建议修复方案开启WPA3、禁用WPS、定期更换强密码等。如果测试中发现企业有不合规的行为第一时间同步给负责人而不是拿着测试结果到处炫耀。我合作过的很多开发者最初都是在实验室里用Aircrack-ng练手后来逐步转向合规的渗透测试服务。Aircrack-ng只是工具箱里的一个小扳手真正让你走得远的是对网络协议的理解、对攻击链路的整体思维、以及把事情做合规的职业操守。6.3 给新手的下一站学习路线通过Aircrack-ng入门后下一步你可以接触的东西很多但别急着什么都学。先把Linux命令行用熟知道怎么做文件管理、跑脚本、管进程然后系统学一下TCP/IP协议栈和802.11协议族再深入理解WPA四次握手和密钥派生过程。等这些积累够了再去学Web渗透、内网横向移动、漏洞利用都会顺畅很多。技术无止境但安全的路必须踩正。把Aircrack-ng当成你的第一块垫脚石稳扎稳打往上走远比那些只会背命令、遇事就翻车的方式强得多。我以前在带新人的时候最快让大家建立手感的方法是把一台旧路由器设成一个纯数字弱密码让他们完整跑一遍抓包到破解的流程再换一个强密码试试体验一下从几分钟到几千年的差异。这个过程比看任何文章都有用。最后分享一个小习惯每次做完测试我都会顺手把抓到的cap文件和破解过程整理成一份匿名化的笔记留着以后复盘。包里永远放一张写着“仅供授权测试”的提示卡提醒自己拿起工具的时候先想清楚边界在哪里。希望这篇文章能帮你少走几段弯路。