starting point

사전공격을 통한 와이파이 패스워드 크랙 본문

해킹 보안 실습

사전공격을 통한 와이파이 패스워드 크랙

dundole 2020. 3. 11. 23:27

해당 실습은 개인 핫스팟을 이용한 제한된 환경에서 진행되었고,

해당 실습은 공부를 목적으로 진행했음을 알립니다.

 

 

AP와 station간 암호화 키를 주고받는 프로토콜에는 WEP, WPA, WPA2, WPA3가 있다. 현재 개인에게 보급된 대부분의 공유기는 WPA2를 사용하고 있다. WEP와 WPA에서 사용하는 암호화 방식은 더 이상 안전하지 않기 때문에 WEP, WPA를 사용할 경우 통신 속도에 제한을 두어 조금이라도 해킹 수행 시간을 늘리고 있다. 현재는 WPA2, WPA3를 권장하고 있다. 이번 실습은 WPA2-PSK를 사용하는 AP(공유기)station(스마트폰, 노트북 등)의 연결과정과 인증과정을 살펴보고, 패스워드를 크랙하는 과정을 살펴볼 것이다.

 

 

AP와 station의 연결 과정

1. Passive 방식

이전에 연결된 기록이 없을 때 Passive 방식을 사용한다.

[그림 1] Passive 방식

  • stationAP로부터 Beacon frame을 수신한다. Beacon frame은 AP가 자신의 존재를 알리기 위해서 지속적으로 브로드캐스팅하는 frame이다. 이것을 받은 station은 AP의 존재를 인식하게 된다.
  • stationAP에게 인증 요청 프레임(Authentication Request frame)을 전송한다. 인증을 요청하는 프레임이다.
  • APstation에게 인증 응답 프레임(Authentication Response frame)을 전송한다. station의 요청에 응답하는 프레임이다.
  • stationAP에게 연결 요청 프레임(Association Request frame)을 전송한다. 암호화 키를 교환하기 위한 4 way-handshake를 요청하는 프레임이다.
  • APstation에게 연결 응답 프레임(Association Reponse frame)을 전송한다. 4 way-handshake를 승인하는 프레임이다. 이후 4 way-handshake를 수행한다. (이에 대해 아래에서 다시 한번 다룰 것이다.)

2. Active 방식

이전에 연결된 기록이 있을 때 Active 방식을 사용한다.

[그림 2] Active 방식

  • stationAP에게 프로브 요청 프레임(Probe Request frame)을 전송한다. 이전에 연결된 기록이 있으므로 해당 기록을 바탕으로 전송되는 프레임으로 AP가 존재하는지 확인하는 프레임이다.
  • APstation에게 프로브 응답 프레임(Probe Response frame)을 전송한다. 프로브 요청 프레임에 응답하는 프레임이다.
  • stationAP에게 인증 요청 프레임(Authentication Request frame)을 전송한다. 인증을 요청하는 프레임이다.
  • APstation에게 인증 응답 프레임(Authentication Response frame)을 전송한다. station의 요청의 응답하는 프레임이다.
  • stationAP에게 연결 요청 프레임(Association Request frame)을 전송한다. 암호화 키를 교환하기 위한 4 way-handshake를 요청하는 프레임이다.
  • APstation에게 연결 응답 프레임(Association Response frame)을 전송한다. 4 way-handshake를 승이하는 프레임이다. 이후 4 way-handshake를 수행한다.

패스워드를 크랙하기 위해서는 Association frame을 주고받은 후 이루어지는 4 way-handshake가 진행되는 프레임들을 캡처해야 한다. 4 way-handshake가 이루어지는 과정을 살펴보겠다.

 

 

4 way-handshake는 암호화 키를 교환하는 과정이다. 당연히 평문으로 키값을 교환하는 것은 아니다. 기존의 가지고 있는 값과 4 way-handshake 과정 중에 주고받는 데이터를 통해서 서로 암호화 키를 생성한다. 우선 4 way-handshake를 수행하는데 여러 가지 키들을 사용한다. 이 키들을 살펴보겠다.

 

 

1. PMK(Pairwise Master Key, 쌍방향 마스터 키)

WPA2-PSK에서 PSK PMK를 의미한다. 즉, 이번 실습을 통해 크랙할 키값이다. PMK AP와 모든 station에 저장되어 있다. 때문에 이를 공유할 필요가 없다. PMK를 사용하여 유니캐스트 데이터 암호화에 사용되는 PTK를 만든다.

 

2. PTK(Pairwise Transit Key, 쌍방향 전송 키)

PTK는 clientAP 사이의 모든 유니캐스트 데이터를 암호화하는 데 사용된다. PTK station과 AP간에 고유하게 존재하며 PTK를 생성하려면 station과 AP에 대한 정보가 필요하다.

PTK = PRF (PMK + ANonce + SNonce + MAC(AA) + MAC(SA))

ANonceAP에 의해 생성된 난수, SNonce station에 의해 생성된 난수, MAC(AA)AP의 MAC주소, MAC(SA)는 station의 MAC주소, PRF는 의사난수 함수(AES, TKIP 등)이다. (Nonce는 임의로 생성되는 암호화 토큰이다.)

 

3. GMK(Group Master Key, 그룹 마스터 키)

GMK는 GTK를 생성하기 위한 4 way-handshake에 사용된다. GTK는 모든 AP에서 생성되며 AP에 연결된 장치와 공유된다.

 

4. GTK(Group Temporal Key, 그룹 임시 키)

GTK는 AP와 여러 station간 브로드캐스트나 멀티 캐스트 데이터를 암호화하는 데 사용된다. GTK1개의 AP와 관련된 모든 station에게 공유되는 키이다.

 

5. MIC (message integrity check)

서로 생성하고 있는 PTK가 정확한지를 확인하기 위한 값이다.

 

이제 4 way-handshake 과정을 살펴보겠다.

이 과정에서 주고받는 프레임을 EAPOL(Extensible authentication protocol over LAN) 메시지라고 한다.

station은 자신의 MAC주소와 SNonce를 가지고 있고, AP는 자신의 MAC주소와 ANonce를 가지고 있다.

[그림 3] 4 way-handshake 과정

  • AP가 station에게 ANonce와 AP의 MAC주소가 있는 EAPOL 메시지를 보낸다.
  • station은 ANonce, AP의 MAC주소, SNonce, station의 MAC주소, PMK(PSK)를 가지고 PTK를 생성한다. 이후 AP에게 SNonce와 station의 MAC주소, MIC가 있는 EAPOL 메시지를 보낸다.
  • AP는 SNonce, station의 MAC주소, ANonce, AP의 MAC주소, PMK(PSK)를 가지고 PTK를 생성한다. GMK를 통해 GTK도 생성한다. 수신한 MIC값을 통하여 자신이 생성한 PTK를 점검한다. 이후 station에게 암호화한 GTK와 새로 만든 MIC가 있는 EAPOL 메시지를 전송한다.
  • station은 MIC값을 통해 자신이 생성한 PTK값을 점검한다. 이후 마지막 확인을 위한 MIC가 포함된 EAPOL 메시지를 전송한다.

[그림 4] EAPOL 메시지 1
[그림 5] EAPOL 메시지 2
[그림 6] EAPOL 메시지 3
[그림 7] EAPOL 메시지 4

[그림 3 ~ 6]을 실제로 주고받는 EAPOL 메시지를 캡처한 모습이다. 매우 정확한 암호화 과정을 살펴보려는 것이 아닌 어떤 값들 교환되는지를 보는 것이다. 실습은 패스워드를 크랙 할 수 있음을 확인하는 것이 목적이기 때문이다. PTK값을 확인하는 MIC값이 있다. PTK는 PMK, ANonce, SNonce, AP의 MAC, station의 MAC를 가지고 만든다. PMK, ANonce, SNonce, AP의 MAC, station의 MAC은 4 way-handshake과정에서 서로 교환된다. 우리는 이 과정을 캡처하여 여러 값들을 얻고, 와이파이의 패스워드인 PMK(PSK)를 무차별 대입하여 크랙을 하는 것이다.

 

그럼 실제 실습을 통하여 패스워드 크랙이 이루어 지는 과정을 살펴보겠다. 

공격자는 kali linux이고, 공격대상은 스마트폰을 통해 만든 AP이다. 랜카드는 iptime의 n150ua-solo를 사용하였다. 해당 랜카드의 칩셋은 Ralink Tecknology MT7601U로 모니터 모드를 지원하는 칩셋이다.

[그림 8] 무선랜을 통해 확인한 현재 상황

명령어 : airodump-ng wlan0mon

그림 3의 표시된 AP가 공격 대상이다. 이제 해당 AP에 station이 연결되어 있는지 확인해야 한다. 우리의 목표는 station과 AP 간의 인증과정을 캡처해야 하므로 이미 연결되어 있는 station이 필요하다.

[그림 9] 공격 대상 AP의 연결된 station 리스트

명령어 : airodump-ng --bssid aa:2b:b9:14:d7:d2 -w CRACK_PASS wlan0mon

공격 대상 AP의 frame만을 캡처한다. 4 way-handshake가 이루어지는 과정을 캡처할 때까지 계속 캡처한다. 하지만 가만히 기다리는 것은 굉장히 비효율적이다. 때문에 이전 실습을 통해 배운 Deauth Attack를 수행하여 강제로 연결을 해제시키고 다시 연결을 시도하게 유도할 것이다. 이것을 통해서 보다 손쉽게 인증 과정을 캡처할 수 있다.

[그림 10] 인증 과정 캡처 완료

그림 5의 표시된 부분을 보면 handshake 과정이 캡처되었다고 나와있다. 이제 프레임 캡처를 중단하고 사전 공격을 시작해보겠다.

[그림 11] 크랙이 진행되는 과정

명령어 : aircrack-ng CRACK_PASS-01.cap -w /home/kali/Desktop/crackstation-human-only.txt

[그림 12] 크랙을 성공한 모습

[그림 7]은 임의로 정답만 들어있는 샘플 파일을 사용한 결과이다.

https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm

 

CrackStation's Password Cracking Dictionary (Pay what you want!)

CrackStation's Password Cracking Dictionary I am releasing CrackStation's main password cracking dictionary (1,493,677,782 words, 15GB) for download. What's in the list? The list contains every wordlist, dictionary, and password database leak that I could

crackstation.net

[그림 7]과 다른 패스워드를 크랙 하기 위해서 위 링크에서 다운받은 패스워드 샘플로 약 4시간 정도 크랙을 시도했지만 크랙에 실패했다. 패스워드가 맞을 때까지 무차별 대입을 수행하는 것이기 때문에 크랙에 실패할 수 도 있다. 하지만 준비되어 있는 샘플의 크기가 크면 클수록 성공 확률은 늘어나게 된다. 굉장히 잘 알려진 단어를 사용하거나 짧은 패스워드를 사용할 경우 크랙이 될 확률은 더욱 커진다. 

https://howsecureismypassword.net/

 

How Secure Is My Password?

 

howsecureismypassword.net

이 페이지를 통하여 자신의 패스워드가 얼마나 brute force attack에 안전한지 확인할 수 있다. 숫자와 문자가 섞인 9글자를 확인해 봤을 때 약, 42분 만에 패스워드를 찾아낼 수 있다. 만약 기업에서 사용하는 무선 통신망이 이러한 패스워드를 쓴다면 고객의 개인정보는 너무나 쉽게 노출될 것이다.

 

 

비밀번호 크래킹으로 인해 발생 가능한 피해

비밀번호가 노출된다는 것은 내부망으로 들어오는 것이기 때문에 내부망에서 수행 가능한 모든 공격에 취약해질 것이다. 이전에 실습한 ARP 스푸핑 공격을 통해서 주요 패킷을 갈취당할 가능성이 있다.

 

 

공격에 대한 대응방안

1. 개인의 경우 길고 복잡한 패스워드를 사용하게 될 경우 크랙의 위험성이 현저하게 줄어든다. 패스워드가 길어질수록 대입해봐야 하는 경우의 수가 크게 증가하므로 효과적인 시간 안에 크랙을 수행할 수 없다.

 

2. 기업의 경우 WPA2 enterprise를 사용할 수 있다. 이는 따로 인증 서버를 둠으로써 인증과정도 보호할 수 있으며 각 사용자마다 패스워드를 다르게 부여하며 서버의 데이터베이스의 등록된 사람만이 접속이 가능하기 때문에 개인이 사용하는 WPA2 personal보다 훨씬 보안이 강력하다. 

 

3. 마지막으로 WPA3를 사용하는 것이다. Wi-Fi Alliance를 살펴보면 WPA3는 SAE(Simultaneous Authentication of Equals)를 통해 기존의 WPA2-PSK를 대체한다고 언급한다. SAE는 사전 공격로부터 보호하여 보안을 더욱 강화하였다고 한다. 

 

 

WPA2에는 실습한 사전 공격 이외에도 WPS 공격, PMKID 공격, hole 196 등 다양한 취약점이 존재한다. 단순한 설정만으로 대응할 수 있는 취약점도 있다. WPA2의 간단한 설정을 하지 않은 개인은 아직도 패스워드 크랙의 위험이 존재한다. 하지만 WPA3를 상용화될수록 사전 공격을 포함한 다양한 공격들로부터 자유로워질 것이다.


 

 

 

참고 사이트

https://www.wifi-professionals.com/2019/01/4-way-handshake

 

4-Way Handshake - WiFi

I was thinking to write about the 4-way handshake and started to think that from where I should start writing. Shall I just describe 4-way handshake which can be found everywhere on the web or shall I do a deep dive?  Reason for me to write is to make it e

www.wifi-professionals.com

https://cpuu.postype.com/post/55291

 

Aircrack-ng를 이용한 무선랜 해킹 1. WPA

Wi-Fi는 1990년 후반에 처음으로 개발되었습니다. 이를 암호화 할 수 있는 기술로는 WEP가 있었는데, 굉장히 보안적으로 취약한 방식이었기에 쉽게 크래킹이 가능합니다. WEP크래킹에 관해서도 다음기회에 포스팅하겠지만, 무튼 WEP를 대체하기 위해 현재는 대부분 "Wi-Fi Protected Access 2 with a pre-shared key", 일...

cpuu.postype.com

 

'해킹 보안 실습' 카테고리의 다른 글

Deauth Attack을 통한 와이파이 무력화  (0) 2020.03.11
ARP 스푸핑 실습  (0) 2020.03.07