monitor mode를 접하는 데 있어서 가장 먼저 익숙해 져야 할 일은 802.11 frame에 대한 분석 능력입니다. 이를 위해서 제일 먼저 시도하는 것이 바로 airodump-ng 와 같은 프로그램을 작성함으로써 802.11 frame에 대한 각종 type, subtype을 익혀 보는 것이죠.

Wireshark 802.11 Display Filter Field Reference

보통은 airodump-ng 명령어에서 출력된 내용과 자신이 작성한 프로그램에서 출력된 내용을 비교 분석을 해 보아야 하는데, 802.11 frame이 실행할 때마다 잡히는 packet들이 달라져서 분석에 골치가 아파집니다. 이로 인해 자신이 작성하고 있는 코드에서 출력하는 내용이 과연 제대로 된 정보를 출력하는 지 정확히 확인하기가 어렵기 때문에 코딩에 상당히 애를 먹게 되죠.

이를 위해서 가상의 wireless adapter를 설치하여 이 adapter를 이용하는 방법을 설명해 보겠습니다. 다음 화면에서 보는 바와 같이 wireless adapter가 전혀 설치되어 있지 않은 환경을 가정합니다.

다음과 같은 명령어를 이용하여 가상의 wireless adapter를 추가합니다.

sudo modprobe mac80211_hwsim [radios=2]

다시 “iw dev” 명령어를 실행하면 가상의 radios에서 설정된 갯수(default 2)의 wireless device(phy#0, phy#1)가 추가가 되고 관련 어댑터들(wlan0, wlan1)도 추가되었음을 확인할 수 있습니다.

생성된 가상의 wireless interface(wlan0 or wlan1) 중 하나를 선택하여 airodump-ng 를 돌려 봅니다(wlan1을 선택했다라고 가정). airodump-ng 명령어를 수행하면 해당 어댑터가 자동으로 monitor mode로 전환됩니다.

sudo airodump-ng wlan1

가상의 환경이기 때문에 당연하지만 아무런 패킷도 잡히지 않죠.

이 상태에서 tcpreplay와 같은 툴을 이용하여 기존에 잡아 놓은 802.11 pcap file을 해당 adapter(wlan1)로 출력을 해 봅니다.

sudo tcpreplay -i wlan1 80211_sample.pcap

pcap file에 저장되어 있던 802 frame들이 airodump-ng 출력창에서 보이는 것을 확인할 수 있습니다. 몇번이고 반복해서 테스트해 봐도 그 결과는 동일함을 확인할 수 있습니다.

설치된 드라이버는 다음과 같음 명령어로 unload할 수 있습니다.

sudo modprobe mac80211_hwsim -r

이와 같은 방법을 이용하여 802.11 frame의 분석이 자신의 코드 레벨에서 제대로 이루어 지는지(airodump-ng에서의 출력과 같은 정보를 출력하는지)를 정확하게 확인할 수 있습니다. #이거알아내느라개삽질함

download

80211-sample.pcap
80211-icmp.pcap
80211-sample1.pcap
80211-sample2.pcap
80211-sample3.pcap