Dork's port

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

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)에서 확인 하셔야 합니다. 위의 실습은 카페에서 사용자가 본인 및 본인 지인밖에 없었음을 알려 드리는 바 입니다.

3 Comments
  • 프로필사진 이다민 2018.07.06 02:13 이글을 올리신의도는 패킷을 변조하시기 위해 공부하시던중 얻은정보라 생각 됩니다.
    지금 자바로 패킷헤더 부분을 변조하는 과정에서 어려움을 겪고 있습니다.
    죄송하지만 참고할만한 자료를 추천해주실수 있을까요?
    덕분에 많은것을 경험하고 배우는것 같습니다.
    학생이라 라즈베리를 살돈이 없어 핸드폰에 구현하려합니다.
    자바보단 c언어를 추천하시나요?
    이 프로젝트를 본격적으로 공부를 해야되는 방학전에 마치고 싶습니다.
    컴퓨터 관련경험과 학력이 뒷바침되어주어야합니다.
    이 프로젝트를 완료하면 프린터도 공부해볼것입니다.
    제가 성장할수있게 도와주셔서 감사합니다.
  • 프로필사진 Dork94 2018.07.06 12:38 신고 위의 내용은 패킷을 변조하기 위한 목적도 있지만 위의 내용으로 할 수 있는 부분 중 하나라고 생각합니다.
    참고할만한 자료는 뭐라 말씀드리기 어려울 것 같습니다. 네트워크 지식 + 개발에 대한 테크티컬한 부분이라 단정지어 말씀드리기 어려울 것 같습니다. 제가 자바는 다뤄보지 않아 무엇을 추천 드리기에 제한이 있습니다. 본인이 편한 언어로 가능한 부분이라면 편한언어로 하시는게 가장 좋을 것 같습니다 :)
  • 프로필사진 크리스 2019.05.22 18:21 복호화 키를 설정하려하는데 wpa-psk 타입의 방식에서는 키를 입력했을때 invalid key format 이라고 뜨며 확인버튼이 눌리지 않는데 이떻게 해야할지 아나요
댓글쓰기 폼