우리가 흔히 사용하는 공유기 와이파이나, 핫스팟을 설정할 때 암호 설정을 할 수 있다.
하지 않을 경우는 OPEN 모드로 누구나 해당 AP에 접속할 수 있고, WEP, WPA, WPA2 등의 다양한 암호화 방식도 존재한다.
일단 간단하게 암호화 방식들에 대해 기록을 하고... 정말 재밌게 했던 deauth 관련 실습내용도 정리하겠다!!
1. 무선랜 암호화 방식
이건 재미 없으니까 빨리
1) WEP(Wired Equivalent Privacy)
- 1999년 비준된 IEEE 802.11 표준에 포함되어 있다. 무선 랜에서 유선 랜 수준의 보안성 제공을 목표로 한다.
- 2004년 WPA2(IEEE 802.11i) 표준 비준에 따라 사용 중단되었다.
- 간단히 암호화 방식을 설명하면, 초기화 벡터(IV, Initialization Vector)가 더해진 64bit의 RC4와 평문을 xor 연산 하여 암호문을 만들고, 해당 암호문에 IV를 다시 붙여 전송한다.
- 인증 방식엔 개방형 인증과 공개키 인증 두가지 방식이 사용된다. 개방형 인증은 AP 접속을 위해 인증이 불필요하다. 공개키 인증은 AP가 접속하려는 Station에게 평문을 주고 이를 공개키로 암호화하라고 한다. 이후 Station이 올바른 공개키로 암호화하여 AP에게 보내고, AP는 이를 복호화하여 평문과 일치하면 인증 성공으로 간주한다.
- 언뜻 생각해보았을 때, 당연히 뭐라도 암호화 하는 것이 더 안전할 것 같지만 IV가 길지 않고, RC4 자체에도 이미 취약점이 존재하고 공개키도 고정이 되어 있기 때문에 키를 유추하는것이 매우 쉽다고 한다. 따라서 WEP는 지금 사용을 안한다(아예 안하는게 맞나?)
2) WPA(Wi-Fi Protected Access)
- WPA2 표준 비준 전에 취약한 WEP를 임시로 대체하기 위하여 개발 되었다.
- WEP와 다르게 암호 키가 동적으로 변경이 된다. 하지만 여전히 RC4 스트림 암호 알고리즘을 사용한다.
- WPA-Personal(WPA-PSK)는 공개키를 사용하는 방식이고, WPA-Enterprise(WPA-802.X)는 별도의 인증서버(RADIUS) 및 프로토콜(EAP)를 사용한다.
3) WPA2(Wi-Fi Protected Access II)
- IEEE 802.11i-2004 표준
- AES 블록 암호 알고리즘을 사용하고, 암호 키 또한 동적으로 변경된다.
- WPA2-Personal(WPA-PSK)는 공개키를 사용하는 방식이고, WPA2-Enterprise(WPA-802.X)는 별도의 인증서버(RADIUS) 및 프로토콜(EAP)를 사용한다.
WPA2-PSK의 경우에는 PMK(쌍방향 마스터 키, AP 암호)가 PSK(Pre-Shared key)가 된다. 따라서 핸드쉐이크 단계에서 AP가 각 기기에 보내는 nonce를 알 수 있으면 PTK(쌍방향 임시 키, 실제 암호화 할 때 사용)를 알아낼 수 있고 AP에 붙어 있는 다른 기기들의 트래픽을 복호화 할 수 있다!! 뭔가 쓰다보니 장황해졌지만, 결국 WPA2도 깨질 수 있고, 그것 또한 실습으로 해볼것이다.
2. EAPOL
LAN, WLAN을 통해 EAP 인증 메세지 패킷을 캡슐화하여 전달하는 프로토콜. EAP는 복수의 인증 프로토콜을 캡슐화시킬 수 있게하여,
다양한 인증방식을 선택가능케하는 범용의 인증 프레임워크... 라는데 그냥 결국 인증할 때 사용하는 프로토콜이다!!
EAPOL 패킷이 발생하는 경우는 Station이 AP에 새로 재접속 할 때이다.
이것은... 내 스마트폰에서 와이파이 접속을 끊었다가 다시 연결했을 때 잡힌 EAPOL 패킷이다!! 당연히... 모니터모드로 패킷을 캡처해야 잡을 수 있다. 위처럼 네개가 모두 잡혀야 제대로 다 잡힌 것이다. 이 네개의 EAPOL 패킷이 잡히고, 와이어샤크에서 decrypt 설정을 해주면 내가 AP와 통신한 내용이 아닌, AP와 다른 Station이 통신한 내용도 복호화가 가능하다.
설정 방법은 wireshark > Edit > Preferences > Protocols > IEEE 802.11 로 들어가서
Enable decryption을 체크한 후, 아래의 Edit을 눌러서
자신이 접속한 AP에 대한 정보를 입력해주면 된다.
키타입 패스워드:SSID 형식으로 입력해주면 된다. 첫번째 예시같은 경우로 보면 키 타입은 wap-pwd이고, 패스워드는 12345678, SSID(AP 이름)가 keyTree인 것이다. 암튼 이렇게 설정이 다 되고, EAPOL 네개도 제대로 잡혔으면 복호화가 될 것이다.
그러면 이런식으로 데이터를 볼 수 있다. 이건 내가 다른 노트북에서 203.246.40.6(http를 사용하는 특정 홈페이지)에 접속한 패킷을 잡은것이다.
만약 암호화 되지 않은 프로토콜을 사용하여 민감한 정보를 주고받는 홈페이지가 있다면 모니터 모드로 패킷을 캡처하여 복호화하고 데이터를 스니핑 할 수 있게 된다. 절대 나쁜짓은 하면 안된다. 나는 공부 목적으로 내 AP에 붙어서 테스트해본 것이다.
3. Deauthentication
Deauthentication packet은 TCP에서의 RST 패킷처럼, AP와 Station간의 접속을 끊을 때 사용하는 패킷이다. 정상적인 경우에 해당 패킷이 발생하는 것은 일정 시간동안 AP와 Station 간에 통신이 없어서 연결을 유지해야 할 필요가 없거나 하는 상황이다. 하지만 RST attack 처럼 Death 패킷 또한 공격에 사용될 수 있다.
당연히 deauth 패킷을 받으면 와이파이가 끊어지므로, 계속해서 deauth 패킷을 보내주면 해당 AP와 Station 사이에 연결이 성립되지 않는다. 이러한 것이 가능한 이유는 deauth 패킷은 MAC주소와 채널 번호만 알면 암호화 없이 패킷이 전송되기 때문이다.
나쁜 곳에만 사용하는 것이 아니다. 위에 2번에서 처럼 EAPOL 패킷을 잡기 위해서는 와이파이에 새로 접속을 해야하는데, deauth 패킷을 받아서 접속이 끊어진 Station의 경우, 만약 AP에 대한 정보가 저장이 되어 있다면 deauth 패킷을 받아서 접속이 끊어져도 얼마 후에 다시 재접속을 한다. 이러면 굳이 내가 껐다 켰다 하지 않아도 EAPOL 패킷을 발생시킬 수 있다. 나쁜곳에 이용하면 절대로 안된다
deauth 패킷 실습은 aireplay-ng 툴을 이용할것이다.
모니터 모드를 활성화 시키는 것에 대해서는 이전에 한번 포스팅을 한 적이 있으므로 넘어가도록 하겠다. 내가 사용한 모니터모드 어댑터의 인터페이스 이름은 mon0이다.
sudo airodump-ng <interface>
위 명령어를 이용하여 우리가 접속을 끊고자 하는 AP의 채널 번호를 확인한다. 내가 실습에 사용할 AP의 채널은 1번이다.
sudo aireplay-ng <interface> --deauth <Packets> -a <BSSID>
해당 명령어가 packets 개수만큼 deauth 패킷을 BSSID에게 날리는 명령이다.
그냥 sudo aireplay-ng라고 쳐보면 다양한 옵션들에 대해서 나와있다. BSSID가 아니더라도 SSID로도 패킷을 전송할 수 있고, 특정 Station을 선택하여 보내는 옵션도 있다.
명령어를 실행시키면 deauth 패킷이 전송되고
와이어샤크에서 보면 이렇게 패킷이 가는 것을 확인할 수 있고, 해당 AP에 붙어있던 Station에서 ping을 계속 때리고 있어보면
deauth 패킷이 전송되는 동안은 ping이 가지 않는것을 확인할 수 있다. 캡처할 방법이 없어서 안하긴 했지만, 해당 AP에 붙어있던 스마트폰에서는 바로 와이파이 접속이 끊어졌다가, 패킷 전송이 끝나면 다시 AP에 붙는 것을 확인할 수 있다. 이 경우에 다시 붙으면서 EAPOL 패킷 또한 다시 오가는 것도 확인할 수 있다.
이렇게 얼추 오늘 복습하려고 했던 실습들을 모두 해 보았다.
해보면 해볼수록 무선랜을 이용해서 해볼 수 있는 것이 정말 많다는 것을 느끼고 있다.
앞으로도 계속 관련한 공부 하고, 프로젝트도 조금씩 진행 해 볼 것이다. deauth 패킷 날리는 프로그램부터 짜봐야겠다
'Network > Study' 카테고리의 다른 글
Monitor mode settings (0) | 2020.09.03 |
---|---|
DDoS 정리 (0) | 2020.07.22 |
[Network] OWL install(AWDL open source) (0) | 2019.10.25 |