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


http://www.willhackforsushi.com/papers/80211_Pocket_Reference_Guide.pdf


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




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


Screenshot from 2017-06-21 23-18-04.png




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


modprobe mac80211_hwsim




다시 "iw dev" 명령어를 실행하면 가상의 2개의 wireless device(phy#0, phy#1)가 추가가 되고 관련 어댑터들(wlan0, wlan1)도 추가되었음을 확인할 수 있습니다.


Screenshot from 2017-06-21 23-24-46.png




생성된 가상의 wireless interface(wlan0 or wlan1) 중 하나를 선택하여 airodump-ng 를 돌려 봅니다(wlan1을 선택했다라고 가정).


airodump-ng wlan1




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


Screenshot from 2017-06-21 23-31-39.png




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


tcpreplay -i wlan1 80211_sample.pcap




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


Screenshot from 2017-06-21 23-49-50.png




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


rmmod mac80211_hwsim

modprobe -r mac80211_hwsim




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




[download]

80211_sample.pcap

80211_icmp.pcap