type
status
date
slug
summary
tags
category
icon
password
😀
小明是一个爱学习的小朋友,但家境贫寒,上网课没有wifi。可害羞的他不好意思向隔壁王叔叔开口,身为一个技术宅,于是便有了如下的操作……

📝 无线WiFi网络的密码破解攻防及原理

1 WiFi的加密方式

目前无线路由器里带有的加密模式主要有:WEP,WPA-PSK(TKIP),WPA2-PSK(AES)和WPA3

1.1 WEP(Wired Equivalent Privacy)已淘汰

  • WEP(Wired Equivalent Privacy)
    • 加密方式:RC4 流加密
    • 安全性:极低,易被破解(5 分钟内可破解)
    • 现状:已被 WiFi 联盟废弃,仅兼容老旧设备。

1.2 WPA(Wi-Fi Protected Access)

  • WPA-PSK(Personal)
    • 加密方式:TKIP(临时解决方案,现不安全) + AES-CCMP(可选)
    • 安全性:TKIP 已被破解,但 AES-CCMP 仍安全。
    • 适用场景:旧设备兼容模式(建议升级到 WPA2/WPA3)。

1.3 WPA2(Wi-Fi Protected Access 2)

  • WPA2-PSK(Personal)
    • 加密方式:强制使用 AES-CCMP(取代 TKIP)
    • 安全性:高,但若使用弱密码可能被暴力破解。
    • 现状:目前最广泛使用的加密方式。
  • WPA2-Enterprise
    • 加密方式:AES-CCMP + RADIUS 服务器认证
    • 安全性:极高,需企业级部署(如 802.1X/EAP)。

1.4 WPA3(Wi-Fi Protected Access 3)

  • WPA3-Personal
    • 加密方式SAE(Simultaneous Authentication of Equals) 取代 PSK
    • 安全性:防暴力破解(即使密码简单),前向保密。
    • 要求:需路由器和支持的设备(2018 年后新设备)。
  • WPA3-Enterprise
    • 加密方式:AES-CCMP + 192 位加密套件(可选)
    • 安全性:企业级最高标准,抵御高级攻击。

2 针对WiFi网络的密码破解方法

主流方法: 1、不需要技术的破解方法,利用手机端"WiFi万能钥匙"等软件蹭网。 2、在抓到客户端与目标WiFi的握手包后实施基于密码字典的暴力破解,成功率取决于目标WiFi的密码强度、字典的大小或准确度、实施爆破的机器运算性能。 3、在开启了wps功能的WiFi,使用pin码猜解的方法获得WiFi密码。

原理:

2.1 WiFi万能钥匙"类App的原理

收集用户手机上成功连接过的WiFi账号和密码,并上传、存储到App的服务器上,等到附近的蹭网者搜索到同一个网络时,该App就可以根据附近热点的配置信息,从服务器上自动匹配并取得相应的密码,通过数据流量发送到手机端,从而完成WiFi连网。

2.2 暴力破解的原理

普通的无线路由器,加密方法一般使用wpa 、wpa2或wep,wep因为太不安全极易被破解在现行的无线路由器上已基本取消。所以我们搜索到的待破WiFi基本都是wpa或wpa2加密的。至于使用认证服务器(如radius等)的wpa认证在个人无线WiFi领域基本不可能,所以通常我们能搜索到的待破WiFi都是基于本地密码的wpa或wpa2加密WiFi。
破解wpa和wpa2加密的WiFi网络的基本原理通俗来讲,我们需要先在无线网卡监听模式下搜集目标WiFi的信息,例如ssid(WiFi名称)、BSSID(也就是目标WiFi无线路由器的MAC)、已连接的客户端mac、信号强度等信息。然后发送伪造的取消关联的数据包迫使已连接到该WiFi的客户端与WiFi断开连接,重点是,断开连接后,客户端会重新尝试发起连接到该WiFi网络,这时客户端会发送一个带有认证密码的数据包以便请求重新连入WiFi,这个包俗称为握手包。这时我们的攻击机利用攻击程序和无线网卡监听抓取到这个握手包,这个握手包里就含有WiFi密码,但这个密码当然是经过加密的,所以后续就需要我们使用攻击程序调用密码字典结合获取到的BSSID、客户端MAC等信息进行运算,不断运算字典中的每一个密码,直到有一个密码使用wpa算法能算出一个与抓到的握手包中一致的加密字串,这个就是目标WiFi的密码了。如果把字典里的每一个密码都算过一遍仍然没有一个与抓取到的握手包加密字串一致的,就破解失败,退出,构造新的字典再试。

2.3 Pin码破解WiFi密码

在早期的无线路由器上开启了wps功能,这个功能简单来讲就是为了方便设备连接WiFi,不需要每次都繁琐的输入密码而设立的一个8位的纯数字字串,客户端可以通过pin码快速关联路由器WiFi。wps这个功能的设计初衷是方便用户连接WiFi,却成为破解WiFi最有效的手段,因为8位纯数字的pin码,最多只有1亿种可能的组合,而由于最后一位是前七位的校验和,所以只需要猜解前七位,猜解的可能组合数就只有一千万种了,又由于发送pin码连接WiFi,pin码前4位出错的返回报错内容和后三位错误的返回报错报文内容不同,所以只需要先猜前四位,前四位对了再猜后面三位,都对了以后最后一位校验和自动可算出来,所以实际最多只需要猜解10000+1000种组合,一般我们2秒种尝试一个pin码,那么理论上最多花费6个小时就一定可以猜解出目标路由器的pin码,进而获取到WiFi密码。
需要说明的是,尽管pin码破解WiFi被认为是最有效的WiFi破解手段,但在实际中不容易实现,一是因为pin码不安全的问题已广泛的被无线路由器的生产厂商所重视,所以现今购买的无线路由器基本都已经取消了这个wps功能。二是在pin的过程中需要不断的向目标路由器发送pin码进行尝试,对方路由器要返回响应报文,有时因路由器本身不稳定或路由器性能等问题,路由器不知不觉就被我们pin死了,使得猜解不能继续或路由器在接收到过多错误的pin码之后会自动休息一段时间,期间不接收pin码,这导致我们pin码猜解的时间过长而没有意义。
 

3 破解过程实例讲解

准备工具: 1.USB无线上网卡(必备。电脑自带的网卡驱动默认被阉割了监视功能) 2.kali系统

3.1 法一 暴力破解法

何为暴力破解呢,其实就是一个一个密码去试,直到正确的密码。
3.1.1 第一步
进入kali在终端输入ifconfig查看当前网卡信息是否正常(在执行该命令前网络连接应该显示断开,且ifconfig输出的wlan0后面应该不带有任何ip地址)
3.1.2 第二步
airmon-ng查看是否有网卡支持监听模式(没有支持监听模式的网卡,则该命令无输出)
3.1.3 第三步
输入airmon-ng start wlan0开启网卡的监听模式。
同时再次输入ifconfig命令查看一下当前监听网卡的信息(部分网卡的名称可能会变化,例如:wlan0变成wlan0mon,后续的命令应使用变化后的网卡名称) 如果监听不能打开,执行命令:airmon-ng check kill,之后重新运行监听命令。
3.1.4 第四步
airodump-ng命令参数说明:airodump-ng(1) - Linux man page
特性
2.4GHz频段
5GHz频段
信道编号
1-14(常用1-13)
36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165
信道宽度
通常20MHz(可绑定为40MHz)
20/40/80/160MHz
干扰情况
干扰多(蓝牙、微波炉等)
干扰少,更干净
覆盖范围
较远
较近(穿透力弱)
默认情况下,airodump-ng 优先扫描 2.4GHz(--band bg)。需显式指定 5GHz
3.1.5 第五步
上图可以看出BSSID是50:3A:A0:33:B2:8C 信道(CH)是:2
输入如下命令抓取数据包:
BSSID (AP) 参数:
  1. BSSID EC:60:73:41:44:97:无线路由器/热点的MAC地址。
  1. PWR 78:信号强度(dBm),值越接近0表示信号越强(-78 属于较弱信号)。
  1. RXQ 38:接收质量(百分比),综合信号与干扰的指标,越高越好。
  1. Beacons 437:AP发送的信标帧数量,用于宣告网络存在。
  1. #Data 25:捕获到的数据帧数量。
  1. #/s 0:每秒数据帧速率(当前为0,表示无活跃数据传输)。
  1. CH 149:工作信道(5 GHz频段)。
  1. MB 780:最大支持速率(780 = 802.11ac,最高速率约 433 Mbps)。
  1. ENC WPA2:加密方式(WPA2为当前主流)。
  1. CIPHER CCMP:加密算法(AES-CCMP,安全性高)。
  1. AUTH PSK:认证方式(预共享密钥,即密码认证)。
  1. ESSID 203-1:无线网络名称(SSID)。
Station (客户端) 参数:
  1. BSSID EC:60:73:41:44:97:客户端连接的AP的MAC地址。
  1. STATION 36:F0:CC:F2:CE:B6:客户端设备的MAC地址。
  1. PWR 1:客户端信号强度(-1可能表示信号极强或测量误差)。
  1. Rate 6e- 0:当前传输速率(6 Mbps 下行,0 Mbps 上行)。
  1. Lost 0:丢包数(关键参数,这里是累计值,当前为0表示无丢包)。
  1. Frames 1:客户端发送的数据帧总数(当前仅1帧,可能刚连接)。
  1. Probes:客户端探测的其他网络名称(此处为空)。

这样便开始抓包了。但这种抓包是一种被动等待的方式,守株待兔,多久能够抓到握手包取决于什么时候有设备和该目标wifi完成成功的认证。
3.1.6 第六步
为了加快抓包的速度,使用Deauth攻击将目标wifi下的设备踢下线,利用wifi断线自动登入会重发握手包的机制,来更快抓取到握手包。
再开一个终端输入命令(不要关闭原终端):
发起攻击后等待一段时间,当原终端中显示WPA handshake时,即代表抓取握手包成功。此时在原终端输入ctrl+c退出命令执行,即可在桌面上看到生成的抓包文件。我们需要用到后缀为cap的文件
发起攻击后等待一段时间,当原终端中显示WPA handshake时,即代表抓取握手包成功。此时在原终端输入ctrl+c退出命令执行,即可在桌面上看到生成的抓包文件。我们需要用到后缀为cap的文件
3.1.7 第七步
输入如下命令破解握手包:
密码字典可以通过 Google 或者 GitHub 搜索下载,推荐两个 GitHub 的字典:
同时这一步可以不使用原生命令aircrack,而使用hashcat破解,hashcat支持更个性化的密码特征设置。此处不展开介绍。
破解速度取决于电脑的硬件配置,成功与否靠强大的字典和运气了。(字典模式的暴力破解成功率和字典的大小有直接关系,但是再大的字典,如果字典中没有这个 WiFi 的密码,那么最终还是无法破解,而且耗费的时间也会更久 XD。)
破解成功示例
破解成功示例
附带命令:

3.2 法二 Pin码破解(目标wifi需开启WPS)

WPS(Wi-Fi Protected Setup)是Wi-Fi保护设置的英文缩写。
对于一般用户,WPS可将具有WPS功能的Wi-Fi设备和无线路由器进行快速互联,还会随机产生一个八位数字的字符串作为个人识别号码(PIN)进行加密操作。省去了客户端需要连入无线网络时,必须手动添加网络名称(SSID)及输入冗长的无线加密密码的繁琐过程。
PIN有8位,其中第8位是由前7位计算得到,接入点(无线路由器)实际上是要找出这个PIN的前半部分(前4位)和后半部分(后3位)是否正确即可。当第一次PIN认证连接失败后,路由器会向客户端发回一个EAP-NACK信息,而通过该回应,攻击者将能够确定的PIN前半部或后半部是否正确。换句话说,黑客只需从7位数的PIN中找出一个4位数的PIN和一个3位数的PIN。这样一来,级次又被降低,从1000万种变化,减少到11000(10^4+10^3)种变化。因此,在实际破解尝试中,黑客最多只需试验11000次,平均只需试验大约5500次就能破解。这也证实了在2小时内破解PIN码的可行性。
前四步与法一相同
3.2.1 第一步
进入kali在终端输入ifconfig查看当前网卡信息是否正常(在执行该命令前网络连接应该显示断开,且ifconfig输出的wlan0后面应该不带有任何ip地址)
3.2.2 第二步
airmon-ng查看是否有网卡支持监听模式(没有支持监听模式的网卡,则该命令无输出)
3.2.3 第三步
输入airmon-ng start wlan0开启网卡的监听模式。
同时再次输入ifconfig命令查看一下当前监听网卡的信息(部分网卡的名称可能会变化,例如:wlan0变成wlan0mon,后续的命令应使用变化后的网卡名称) 如果监听不能打开,执行命令:airmon-ng check kill,之后重新运行监听命令。
 
3.2.4 第四步
输入airodump-ng wlan0mon扫描当前周边环境的wifi信号,并记录下目标wifi的BSSID和CH
后五步有区分
3.2.5 第五步
输入如下命令。找出开启了 WPS 功能、可以使用 PIN码 登录的路由器,并另外记录下该AP的BSSID(约等于该 AP 的 MAC 地址)
3.2.6 第六步
输入如下命令。开始进行PIN码穷举破解(注意末尾的参数是2个小写字母v,-d9和-
t9是防止pin死路由器)
💡
这样pin也是有限制的,比如要被pin出的路由器必须得开启wps功能;貌似现在很多都是防pin路由器或300秒pin限制的。 有些路由pin码可以通过计算得到:腾达和磊科的产品如果路由MAC地址是以“C83A35”或“00B00C”打头那么可以直接计算出PIN值。比如这个:bssid:Tenda_579A18 mac:C8:3A:35:57:9A:18通过计算器将mac后6位换算成10进制数,得到5741080(pin码的前7位),最多试10次或通过软件得到该路由pin码!
等待破解完成(这个破解可能会时间比较长,和你的目标 AP 有关),这期间我们可以查看到穷举破解花费的时间、预计剩余时间、穷举PIN码进度信息:
notion image
破解完成后,查看并记录下 PIN码 和 密码:
notion image
获取到 PIN码 后,以后即便路由器更换了密码,我们也可以很迅速地通过 PIN码 重新获得新密码。以上方获取到的信息举例:
 
【注意事项】
1、如果在执行 reaver 命令后看到有 WARNING: Failed to associate with xx:xx:xx:xx:xx:xx 这样的提示信息,那么应该是你选择了一个不具备或关闭了 WPS 功能的路由器。这种情况下就执行wash 命令并重新选择一个路由器吧。
2、如果在执行 reaver 命令后看到有 warning detected ap rate limiting waiting 60 seconds before re-checking 这样的提示信息,这表示目标路由器开启了防 PIN破解 功能。因为我们是穷举 PIN码 进行破解的,当连续使用超过某个次数的 PIN码 后,路由器会暂时锁定 WPS 功能一段时间。这种情况下要么我们耐心等待其恢复 WPS 功能,要么执行 mdk3 wlan0mon a -a xx:xx:xx:xx:xx:xx (这是上面的目标AP的MAC地址)命令让路由器主动重启或被动重启以恢复 WPS 功能。

3.3 法三 伪造wifi热点钓鱼

3.3.1 伪造有portal网页登录窗口的wifi连接
 
 
 

4 WiFi安全防范

1、设置复杂密码 包含字符、符号和数字,长度设置到12位以上,越复杂的无线密码对方破解难度越大。加密方式选用WPA2-PSK或WPA3
2、隐藏自己的无线网络名称 当我们隐藏无线认证之后,别人是无法找到我们的网络连接点,所以无法连接到我们的网络。点击路由器页面左上角的无线基本设置。在右侧可以看到有一个SSID服务广播。把前面的勾打掉,点击下面的保存。就可以隐藏无线信号
3、设置白名单,开启MAC地址过滤功能 手动把自己家里上网设备的MAC地址添加进来,这时即使有人破解了WIFI密码也无法上网。

5 其他

一些很有趣的攻击手段,伪造ap、Deauth攻击、arp欺骗攻击等

5.1 伪造AP

  1. 安装mdk3
    1. 开启网卡的监听模式(输入ifconfig查看对应网卡的名称)
      1. 生成虚假AP(输入ifconfig查看开启监听模式后对应网卡的名称,我这里是wlan0mon)
        1. b
          Beacon Flood 模式,用于发送大量虚假AP信号(伪造Wi-Fi热点)
          -f
          从文件读取SSID列表(每行一个SSID,用于生成虚假AP的名称)
          /home/kali/Desktop/fake_ap.txt
          存储虚假SSID列表的文件路径(需提前准备)
          -t
          使用WPA/TKIP加密(默认伪造的AP是开放的,此参数强制加密)
          -c
          指定信道(Channel),这里设为 6(2.4GHz频段)
          效果如图
          效果如图

      5.2 Deauth(解除认证)攻击

      本攻击方式不必在同一局域网下,但需要网卡具有监听模式
      1. 将网卡开启监听模式
        1. 使用mdk3进行Deauth攻击(mdk3还有很多其他的攻击模式,有兴趣可以检索一下)
          1. mdk3只能指定信道,但不适合指定信道下的指定ap
            如果不知道信道是多少的话,需要在这一步之前进行wifi扫描(现代路由器的wifi信道是会随着网络环境的信道拥挤程度不断变动的,而非一成不变)
            使用mdk4指定ap进行攻击
            mdk4可以指定信道下的指定ap
            其实aireplay-ng也能实现和mdk3相同的攻击效果
            aireplay-ng的缺点是需要提前切换信道,且一次只能攻击一个信道(不如mdk3可以同时指定多个信道),对于现代路由器2.4GHz和5GHz的两个信道来说,过于鸡肋。
            如果出现如下报错,意味着无线网卡当前工作在 信道 10,但目标 AP(EC:60:73:41:44:95)实际运行在 信道 1,导致无法发送解除认证(Deauth)攻击包。
            notion image
            解决方式如下:
            或者在启动监听模式时可以直接指定信道
             

        5.3 arp欺骗攻击

        本攻击方式要求与目标设备在同一局域网下,但不需要网卡具备监听模式
        arp的作用机制很简单:设备与网关、设备与设备之间在传输数据之前会通过arp广播来问询目标ip得到目标mac地址(这样的arp广播没有身份验证机制)
        这样我们便可以伪造一个arp广播,广播的内容是:全体目光向我看齐,我宣布个事,我是路由器!(即,发送广播欺骗目标设备,192.168.0.1的mac地址是攻击机的mac地址)
        这样,目标设备就会把本该交给路由器的数据包,交给了攻击机。接下来,是丢弃这份数据包让其断网;还是进行中间人攻击,监听这个数据包并交给真正的路由器,就都由我们掌握了。
        5.3.1 准备
        1.将 Kali 虚拟机配置为桥接模式
        2.将网卡连接至目标设备所在的局域网下(需要配合我们前面破解wifi密码的教程),这里有两种选择:
        第一种,实体机的wifi连接至目标设备的局域网下(则攻击时,网卡填写eth0)
        第二种,外接USB网卡,在vmware中点击“虚拟机”→“可移动设备”→“对应的usb网卡名称”→“连接”,在虚拟机中连接上目标设备所在的局域网(则攻击时,网卡填写wlan0)
        5.3.2 攻击
        1. 使用zenmap扫描目标网段下的所有设备(192.168.0.0/24)
        1. 找到目标设备的ip后,执行下面的代码
          1. 进一步,可以用ettercap进行arp双向欺骗
            1. 开启图形界面的ettercap
              1. notion image
            1. 选择好对应的primary interface后点击右上方的 √
              1. notion image
            1. 接下来点击左上方的🔍
              1. notion image
                扫描该网段的所有主机信息,点击🔍右面的hosts-list查看扫描结果
            1. 分别将网关ip和Win8.1 ip添加为Target1和Target2
              1. notion image
            1. 点击小地球图标(MITM menu)中选择ARP Poisonin
              1. notion image
            1. 点击ok开始攻击
              1. notion image
                这里可以看到攻击已经开始
                notion image
             
         
         
         

        🤗 总结归纳

        总结文章的内容

        📎 参考文章

         
        💡
        欢迎您在底部评论区留言,一起交流~
        C语言中随机数的实现虚拟机下安装Kali系统
        Loading...