ν‹°μŠ€ν† λ¦¬ λ·°

ETC

[Wireless] WPA / WPA2 Fast Crack

🌧: 2021. 6. 28.

κ°œμš”

무선 랜의 μ•”ν˜Έν™” 기법은 2000λ…„λŒ€ μ΄ˆλ°˜μ— κ°œλ°œν•œ "WEP"λΆ€ν„° ν˜„μž¬λŠ” "WPA" λ°©μ‹μ˜ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ 기본적으둜 μ±„νƒν•˜μ—¬ 널리 μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ•”ν˜Έν™” 기법을 μ μš©ν•˜λŠ” μ΄μœ λŠ” 무선 λžœμ€ 곡기 μ€‘μœΌλ‘œ 데이터λ₯Ό μ „μ†‘ν•˜κΈ° λ•Œλ¬Έμ— "κΈ°λ°€μ„±"을 μœ μ§€ν•΄μ•Ό 될 ν•„μš”μ„±μ΄ μžˆμ–΄ μ•„λž˜μ™€ 같은 3κ°€μ§€μ˜ 보호 기법을 μ‚¬μš©ν•΄μ™”μŠ΅λ‹ˆλ‹€.

1. WEP(Wired Equivalent Privacy) #μœ μ„  동등 ν”„λΌμ΄λ²„μ‹œ
2. WPA(WiFi Protected Access) #μ™€μ΄νŒŒμ΄ 보호 접속
3. WPA2(WiFi Protected Access v2) #μ™€μ΄νŒŒμ΄ 보호 접속 v2

"WEP" λ°©μ‹μ˜ 경우 개발된 지 μ–Όλ§ˆ λ˜μ§€ μ•Šμ€ μ‹œμ μ— λ³΄μ•ˆ 결점이 λ°œκ²¬λ˜μ–΄ ν˜„μž¬λŠ” 거의 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 방식이라 νŒλ‹¨ν•΄λ„ λ©λ‹ˆλ‹€. μ‹œμ€‘μ— νŒλ§€λ˜λŠ” κ³΅μœ κΈ°λ“€μ˜ μ„€μ • κ°’λ§Œ 봐도 "WEP"λŠ” 선택사항일 뿐 λΉ„ν™œμ„±ν™”ν•΄λ‘” μƒνƒœλ‘œ μ§€μ›ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

 

WPA/WPA2의 μ•”ν˜Έν™” 방식

WPA(WiFi Portected Access) ν”„λ‘œν† μ½œμ€ "TKIP" 라 λΆˆλ¦¬λŠ” μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ§€μ›ν•©λ‹ˆλ‹€. μ΄λŠ” 2000년도에 λ³΄μ•ˆκ²°μ μœΌλ‘œ λ“±μž₯ν–ˆλ˜ "WEP"의 취약점을 κ°œμ„ ν•˜κ²Œ λ˜μ—ˆκ³  ν˜Έν™˜μ„±μ΄ λ†’μ•„ μ–΄λŠ μž₯비에든 적용이 λ˜μ–΄ 널리 μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

WPAv2(WiFi Protected Access)λŠ” 일반 "WPA"의 TKIP보닀 κ°•λ ₯ν•œ "AES-CCMP" μ•Œκ³ λ¦¬μ¦˜μ„ μ μš©ν–ˆμŠ΅λ‹ˆλ‹€.

4-way Handshake

κ·Έλ¦ΌμœΌλ‘œλŠ” 쑰금 λ³΅μž‘ν•΄ 보일 μˆ˜λ„ μžˆμ§€λ§Œ 4-way Handshake κ³Όμ •μ—μ„œ λ™μž‘μ˜ ν•΅μ‹¬λ§Œμ΄λΌλ„ μ•Œκ³  있으면 μ’‹μŠ΅λ‹ˆλ‹€.

사전 곡유 ν‚€(νŒ¨μŠ€μ›Œλ“œ)와 5개의 λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ μΌλŒ€μΌ λŒ€μΉ­ν‚€(PTK)λΌλŠ” μ„Έμ…˜ ν‚€λ₯Ό κ³„μ‚°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

1.SSID(Service Set Identifier)
2.ANounce #인증자 λ‚œμŠ€
3.SNounce #ν”ΌμΈμ¦μž λ‚œμŠ€
4.AP Mac μ£Όμ†Œ
5.μ‚¬μš©μžμ˜ Mac μ£Όμ†Œ

 

WPA/WPA2의 λ³΄μ•ˆκ²°μ 

WPA/WPA2 λͺ¨λ‘ κ°•λ ₯ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ μš©ν•˜μ—¬ μ‚¬μš©ν•˜λ”λΌλ„ 곡톡 적으둜 μ·¨μ•½ν•œ λ¬Έμ œκ°€ μ‘΄μž¬ν•˜λŠ”λ° 그것은 λ°”λ‘œμ‚¬μ „ λŒ€μž… 곡격(Dictionary Attack)에 μ·¨μ•½ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ‹¨μˆœ 사전 λŒ€μž… κ³΅κ²©λ§ŒμœΌλ‘œλŠ” AP의 Passwordλ₯Ό μ‰½κ²Œ ν¬λž™ ν•  순 μ—†μŠ΅λ‹ˆλ‹€.

μœ„μ˜ 과정을 κ°„λž΅ν•˜κ²Œ 집고 λ„˜μ–΄κ°€μžλ©΄, μš°μ„  κ³΅κ²©μžλŠ” Sniffing을 톡해 4-way-Handshake 데이터 값듀을 λͺ¨λ‘ μΊ‘μ²˜ν•˜μ—¬ 5κ°€μ§€μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό νšλ“ν•˜κ²Œ λ©λ‹ˆλ‹€. 그리고 λ‚˜μ„œ μ ν•©ν•œ 사전 νŒŒμΌμ„ μ€€λΉ„ν•˜κ³  WPA-PSK + SSIDλ₯Ό μ‘°ν•©ν•˜μ—¬ 256λΉ„νŠΈμ˜ 사전 곡유 ν‚€λ₯Ό μƒμ„±ν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ κ³΅μœ ν‚€λŠ” 4-way-Handshake 과정에 λ°œμƒν•œ λ§€κ°œλ³€μˆ˜μ™€ κ²°ν•©ν•˜μ—¬ 무결성 검사λ₯Ό ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” PTKλ₯Ό μƒμ„±ν•˜κ²Œ 되면 이 값을 톡해 μ˜¬λ°”λ₯Έ AP의 νŒ¨μŠ€μ›Œλ“œλ₯Ό μΆ”μΈ‘ν•  수 있게 λ©λ‹ˆλ‹€.

 

κ³΅κ²©μžκ°€ λŒ€μƒ AP에 λŒ€ν•œ 인증 값을 νšλ“ν•˜κΈ° μœ„ν•΄ μœ„μ—μ„œ μ„€λͺ…ν•œ "5가지"의 λ§€κ°œλ³€μˆ˜ 데이터가 ν•„μš”ν•˜λ‹€κ³  μ–˜κΈ°ν–ˆλŠ”λ°, κ·Έλ‹€μŒ λ§ˆμ§€λ§‰μœΌλ‘œ 제일 μ€‘μš”ν•œ 것은 "사전 파일"에 μ˜¬λ°”λ₯Έ μ•”ν˜Έ 값이 ν¬ν•¨λ˜μ–΄μžˆμ§€ + μ‹œκ°„μ΄ μΆ©λΆ„ν•˜μ§€μ˜ μš”μ†Œκ°€ 단락을 μ§“κ²Œ λ©λ‹ˆλ‹€.

 

ν…ŒλΌλ°”μ΄νŠΈ λ‹¨μœ„μ˜ 사전 νŒŒμΌμ„ λ‹€μˆ˜ μƒμ„±ν•˜κ²Œ 되면 λŒ€λΆ€λΆ„ ν¬λž™μ— 성곡할 수 μžˆκ² μ§€λ§Œ μ΄λŠ” μ‹œκ°„μ΄λΌλŠ” μ€‘μš”ν•œ 문제λ₯Ό 해결해주지 μ•ŠμŠ΅λ‹ˆλ‹€. 그럼 μ€‘μš”ν•œ "μ‹œκ°„"μ΄λΌλŠ” 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„  μ–΄λ–»κ²Œ ν•˜λ©΄ λ κΉŒμš”?

PSK μ•”ν˜Έ + SSID => PBKDF2에 λ„˜κ²¨ 사전 곡유 ν‚€(PMK/PSK)λ₯Ό κ³„μ‚°ν•˜λŠ” 속도λ₯Ό ν–₯상

*PBKDF2λŠ” "νŒ¨μŠ€μ›Œλ“œ 기반의 ν‚€ μœ λ„ ν•¨μˆ˜"

 

 WPA2 Fast Crack Test

가속 ν¬λž™ 정보λ₯Ό μ°ΎμœΌμ‹œλŠ” 뢄듀은 기쑴에 주둜 μ‚¬μš©λ˜λŠ” ν¬λž™ 방법을 μ‚¬μš©ν•΄λ³΄μ…¨κΈ° λ•Œλ¬Έμ— μ‹€μŠ΅μ„ μ§„ν–‰ν•˜κΈ° μ•žμ„œ μ–΄λ–€ μ€€λΉ„κ°€ ν•„μš”ν•˜μ‹ μ§€ 잘 μ•„μ‹€ 거라 λ―ΏμŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•œ ν™˜κ²½ ꡬ좕이 μ œλŒ€λ‘œ μ•ˆλ˜μ‹œλŠ” 뢄듀은 λŒ“κΈ€ λ‹¬μ•„μ£Όμ„Έμš”

μ‹€μŠ΅ν™˜κ²½
OS: Kali Linux 2020.01 release
Lan Card: ALFA AWUS036NEH

4-way Handshake의 데이터λ₯Ό μΊ‘μ²˜ν•˜κΈ° 전에 λŒ€μƒ AP의 정보와 μ—°κ²°λœ ν΄λΌμ΄μ–ΈνŠΈμ˜ MAC μ£Όμ†Œλ₯Ό νšλ“ν•˜κΈ° μœ„ν•΄ μ—°κ²°λœ λ¬΄μ„ λžœ μΈν„°νŽ˜μ΄μŠ€λ₯Ό "λͺ¨λ‹ˆν„° λͺ¨λ“œ"둜 ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

 

# airodump-ng wlan0mon

곡기 쀑에 λ– λ‹€λ‹ˆλŠ” λͺ¨λ“  BSSID 정보λ₯Ό μˆ˜μ§‘ν•˜μ—¬ ν¬λž™ ν•˜κ³ μž ν•˜λŠ” 곡유기의 "BSSID"의 μ£Όμ†Œμ™€ "CH(채널)"을 ν™•μΈν•©λ‹ˆλ‹€.

 

# airodump-ng --bssid 70:5D:CC:D8:E5:36 --channel 9 -w guleumcrack wlan0mon

AP(Access Point)에 μ—°κ²°λœ ν΄λΌμ΄μ–ΈνŠΈμ˜ MAC μ£Όμ†Œλ₯Ό 확인해야 λ©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ μ€‘μš”ν•œ 것은 νŠΉμ • μ‚¬μš©μžκ°€ ν•΄λ‹Ή AP에 μ—°κ²°λ˜λŠ” μ‹œμ μ— λ°œμƒν•˜λŠ” "4-way Handshake" 데이터λ₯Ό μΊ‘μ²˜ν•΄μ•Ό 되기 λ•Œλ¬Έμ— κ°•μ œμ μœΌλ‘œ μ‚¬μš©μžμ™€ AP κ°„μ˜ 연결을 ν•΄μ œμ‹œμΌœ λ‹€μ‹œ μž¬κ²°ν•©λ˜λ„λ‘ μœ λ„ν•΄μ•Ό λ©λ‹ˆλ‹€.

 

μ„±κ³΅μ μœΌλ‘œ 4-way Handshake 과정을 μΊ‘μ²˜ν•˜κ²Œ λœλ‹€λ©΄ "EAPOL"μ΄λ‚˜ 상단에 "WPA handshake: BSSID" 문ꡬ가 λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

 

μˆ˜μ›”ν•œ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜κΈ° μœ„ν•΄μ„  λŒ€μƒ λ‹¨λ§μ˜ WiFiλ₯Ό λ‹€μ‹œ μž¬μ—°κ²° ν•΄μ£Όλ©΄ λ˜μ§€λ§Œ 그렇지 μ•Šμ„ 경우 μ•„λž˜μ˜ λͺ…령을 톡해 Deauthentication νŒ¨ν‚·μ„ λ°œμƒμ‹œμΌœ κ°•μ œμ μœΌλ‘œ 연결을 ν•΄μ œμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ "No Such BSSID available." 문ꡬ가 λ‚˜νƒ€λ‚  경우 채널이 λ§žμ§€ μ•Šμ•„ λ°œμƒν•œ κ²ƒμ΄λ‹ˆ airodump-ngμ—μ„œ ν™•μΈν•œ λŒ€μƒ AP 채널 수λ₯Ό λ™μΌν•˜κ²Œ 맞좰 μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

# aireplay-ng --deauth 10 -a BSSID μ£Όμ†Œ -h μ‚¬μš©μž MAC μ£Όμ†Œ wlan0mon # νŠΉμ • μ‚¬μš©μž λŒ€μƒ
# aireplay-ng --deauth 10 -a BSSID μ£Όμ†Œ -h BSSID μ£Όμ†Œ wlan0mon # λͺ¨λ“  μ‚¬μš©μž λŒ€μƒ
# iwconfig wlan0mon channel 9(채널 수) # wlan0mon μΈν„°νŽ˜μ΄μŠ€ 채널 λ³€κ²½

 

PNKλ₯Ό κ³„μ‚°ν•˜κΈ° 전에 μ˜¬λ°”λ₯Έ μ•”ν˜Έκ°€ ν¬ν•¨λœ 사전 νŒŒμΌμ„ 생성해야 λ©λ‹ˆλ‹€. Kali의 /usr/share/wordlists 디렉토리에 μ‘΄μž¬ν•˜λŠ” 사전 νŒŒμΌμ„ μ‚¬μš©ν•˜κ±°λ‚˜ μœ„μ²˜λŸΌ "Crunch" 도ꡬλ₯Ό 톡해 μƒμ„±ν•˜μ…”λ„ λ©λ‹ˆλ‹€.

 

숫자둜 κ΅¬μ„±λœ 총 100μ–΅ 개의 λŒ€μš©λŸ‰ 사전 νŒŒμΌμ„ μƒμ„±ν•œλ‹€. 였랜 μ‹œκ°„μ„ μ†Œμš”ν•˜λ©° μƒμ„±ν•œ 사전 νŒŒμΌλ“€μ€ μ‚­μ œν•˜μ§€ μ•Šκ³  λ³„λ„μ˜ μ™Έμž₯ν•˜λ“œμ— λ³΄κ΄€ν•΄λ‘λŠ” 것을 μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€. (숫자, 문자, ν˜Όν•© λ“±)

* 가상 λ¨Έμ‹  HardDisk의 μš©λŸ‰μ€ 160κΈ°κ°€ μ΄μƒμœΌλ‘œ μ„€μ •

 

Using Cowpatty

# genpmk
# apt install cowpatty

가속 ν¬λž™μ„ μ§„ν–‰ν•˜κΈ° μœ„ν•΄ "Cowpatty" 도ꡬλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. 2019.03 μ΄ν›„μ˜ 칼리 λ¦¬λˆ…μŠ€μ—λŠ” genpmkλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” cowpatty 도ꡬ가 μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šμ„ μˆ˜λ„ μžˆμœΌλ―€λ‘œ 확인 ν›„ μ„€μΉ˜λ₯Ό μ§„ν–‰ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

 

genpmk 도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ νŠΉμ • SSID + Worldlists.txt νŒŒμΌμ„ μ‘°ν•©ν•˜μ—¬ PMKλ₯Ό 미리 계산할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ‹¨μ˜ λͺ…령을 μ‹€ν–‰ν•˜λ©΄ pmk-guleumμ΄λΌλŠ” νŒŒμΌμ— 사전에 미리 κ³„μ‚°λœ PMKκ°€ μ €μž₯되게 λ©λ‹ˆλ‹€.

 

이처럼 미리 κ³„μ‚°λœ PMKλ₯Ό μ΄μš©ν•  경우 "Cowpatty"μ—μ„œλŠ” 보닀 λΉ λ₯Έ μ‹œκ°„μœΌλ‘œ μ•”ν˜Έλ₯Ό ν¬λž™ ν•  수 있게 λ©λ‹ˆλ‹€. 일반적으둜 PMKλ₯Ό 미리 κ³„μ‚°ν•˜μ§€ μ•Šκ³  ν¬λž™ ν–ˆμ„ λ•Œ "20λΆ„" 정도 μ†Œμš”λ˜μ—ˆλ‹€λ©΄ μ΄λ²ˆμ—λŠ” "μ•½ 7초"λ§Œμ— ν¬λž™μ΄ λœλ‹€.

 

Using aircrack-ng

# airolib-ng pmk-aircrack --import cowpatty pmk-guleum

μœ„μ—μ„œ μ‚¬μš©ν•œ Cowpatty 도ꡬ 이외에 λ‹€λ“€ 잘 μ•Œκ³  κ³„μ‹œλŠ” "aircrack-ng"λ₯Ό ν™œμš©ν•΄μ„œλ„ FAST Crack이 κ°€λŠ₯ν•©λ‹ˆλ‹€. μ΄λ•Œ μΆ”κ°€μ μœΌλ‘œ ν•„μš”ν•œ λ„κ΅¬λŠ” "airolib-ng"λΌλŠ” λ„κ΅¬λ‘œ 이λ₯Ό 톡해 PMKλ₯Ό 미리 계산할 수 μžˆμŠ΅λ‹ˆλ‹€.

pmk-aircrack # aircrack-ng와 ν˜Έν™˜λ˜λŠ” 데이터

pmk-guleum # genpmk와 ν˜Έν™˜λ˜λŠ” 데이터

 

μ—¬κΈ°μ„œ ν•„μš”ν•œ νŒŒμΌλ“€μ€ μ „ λ‹¨κ³„μ—μ„œ μƒμ„±ν•œ aircrack-ng와 ν˜Έν™˜λ˜λŠ” pmk-aircrack 파일과 4-way handshake 과정을 μΊ‘μ²˜ν•œ “. cap”νŒŒμΌμž…λ‹ˆλ‹€.

 

# aircrack-ng -r pmk-aircrack guleumcrack-01.cap

ν•΄λ‹Ή 데이터 νŒŒμΌμ„ 톡해 aircrack-ngλ₯Ό 싀행해보면 μƒλŒ€μ μœΌλ‘œ λ‹¨μ‹œκ°„ 내에 ν¬λž™μ΄ μ™„λ£Œλ©λ‹ˆλ‹€. 일반적인 방법듀과 λ‹€λ₯΄κ²Œ ν‚€ 값을 λΉ λ₯΄κ²Œ νšλ“ν•  수 μžˆλŠ” μ΄μœ λŠ” "worldlist.txt"에 λ‹΄κΈ΄ μˆ˜λ§Œμ€ 사전 μ•”ν˜Έλ“€κ³Ό "guleumcrack-01.cap"에 λ‹΄κΈ΄ "SSID"에 λŒ€μ‘λ˜λŠ” PMKλ₯Ό 미리 κ³„μ‚°ν•΄λ‘μ—ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

 

μ»¨μ„€νŒ…μ„ μ§„ν–‰ν•˜λ©΄μ„œ AP νŒ¨μŠ€μ›Œλ“œμ— λŒ€ν•œ λ¬Έμžμ—΄ 강도 검증은 잘 μˆ˜ν–‰λ˜μ§€ μ•Šμ§€λ§Œ ν•„μš”ν•  경우 μœ„μ˜ 방법을 톡해 보닀 λΉ λ₯΄κ²Œ λ¬Έμžμ—΄ 검증을 μ§„ν–‰ν•΄λ³΄λŠ”κ²ƒλ„ 쒋을것 κ°™μŠ΅λ‹ˆλ‹€.

κ³΅μœ ν•˜κΈ° 링크
Comment