Network

Wireshark에서 암호화 된(encrypted) 무선패킷(IEEE 802.11) sniffing 하기(복호화)

Dork94 2017. 9. 30. 17:24

오늘은 암호화된 무선 패킷 즉, 암호가 걸려있는 와이파이에 대해 무선 패킷을 sniffing하는 방법에 대해 배우고자 합니다.

 

airdecap-ng를 써도 되지만 매번 명령어를 통해 decrypt하는 번거로움 및 pcapng(pcap next generation)을 지원하지 않고,

실시간으로 확인이 어렵다는 점이 단점입니다.

 

때문에 Wireshark에서 패킷을 실시간으로 decrypt하여 확인하면 위의 불편한 점들이 해소 되는데, 그 방법에 대해 알아보겠습니다.

 

 

 

우선 와이어샤크를 실행합니다.

 

 

 

 

그 후 Edit - Preferences를 클릭하여 아래의 화면을 띄웁니다.

 

 

Protocols - IEEE 802.11로 들어갑니다.(Protocols을 클릭한 후 키보드로 해당 프로토콜의 이름을 빠르게 입력하면 찾을 수 있습니다.)

그 후, Enable decryption을 활성화 시킨 후 decryption keys옆에 있는 edit을 클릭 합니다.

 

 

 

+버튼을 통해 Key type및 key를 추가합니다. 이때 추가 양식은 아래와 같습니다.

 

Key type                    Password                :    SSID

(해당 키 타입)            (와이파이 비밀번호)    :    (와이파이 이름)

 

 

추가 한 후 확인을 누르면 decrypt에 필요한 Key설정이 모두 완료 되었습니다.

 

 

그러나 위의 화면에서 보이듯 바로 decrypt되지 않는데 바로, eapol이 필요하기 때문입니다. 암호화된 wifi에 접속시 eapol이라고 서로 암호화에 사용되는 key교환이 일어나는데 이 정보가 decrypt하는데 필요합니다. 때문에, 와이파이를 재접속 시키거나, 설정을 추가 한 후 부터 와이파이에 접속하는 사용자들의 plain text를 볼 수 있습니다.

 

와이파이 재 접속 시키기

 

사용자들의 와이파이를 재 접속 시키는 방법 중 하나가 Deauth Packet을 모두에게(broadcast) 전송하는 방법이 있습니다.

 

aireplay-ng 명령을 이용하여 Deauth Packet을 간단하게 전송 할 수 있으며, 직접 작성한 프로그램으로 구현하셔도 됩니다.

 

# aireplay-ng -0 1 -a 12:34:56:78:90:ab -s ff:ff:ff:ff:ff:ff wlan0

 

 

위의 명령어를 간단하게 설명하자면 -0은 deauth packet을 의미하며, 1은 패킷을 전송할 횟수 -a(AP)는 게이트웨이의 MAC Address (정확히는 해당 AP의 BSSID를 의미합니다) -s(Station)는 받을 무선랜 사용자의 MAC Address이고, wlan0는 패킷을 전송할 때에 사용할  Network Interface로 Monitor모드로 설정 되어 있어야 합니다. 모니터 모드로 설정 하는 방법에 대해서는 이전 포스팅(http://dork94.tistory.com/14)에 설명되어 있습니다.

 

또한, Wireshark 에서 wlan.fc_type_subtype ==12 와 같이 filter를 주어 Deauth Packet에 대한 정보를 확인할 수 있습니다.

 

 

위의 과정을 통해 EAPOL패킷을 Wireshark에서 capture하였다면 eapol필터로 아래와 같이 키교환을 확인 할 수 있습니다.

 

 

EAPOL의 capture성공 후 아래처럼 decrypt된 패킷을 볼 수 있습니다!

 

조금더 정확히 확인하기 위해 wireshark filter에 tcp를 입력하고 확인 한 결과 입니다.

 

 

※공용 와이파이에서는 확인할 것을 권하지 않으며, 실습은 개인 네트워크(AP)에서 확인 하셔야 합니다. 위의 실습은 카페에서 사용자가 본인 및 본인 지인밖에 없었음을 알려 드리는 바 입니다.