[airodump-ng]
-> 본 포스팅은 airodump-ng를 구현하면서 정리한 글입니다.
# 참고로 channel hopping에 대해서는 다루지 않았습니다.
[패킷 분석]
참고 : wireshark에서 beacon이 들어간 패킷만 보고 싶을 때 필터링을 아래와 같이 지정해주면 된다.
wlan.fc.type_subtype==0x08
probe request 패킷 분석시 필터링
wlan.fc.type_subtype == 0x04
radiotap header는 패킷분석을 해보면 24byte로 고정되어있는듯 하다.
Network byte ordering이 아닌 Host byte ordering이다.
-
[Radiotap Header] -> total 24byte
header revision : 0x00
header pad : 0x00
header length : 24
present flags word : 0xa000402e
present flags word : 0x00000820
Flags : 0x00
Data Rate : 0x02
Channel frequency : 2427 [BG 4] (0x7b 0x09)
Channel flag : 0x00a0
SSI Signal -> radiotap header에서 유일하게 가변적인 친구
RX flags : 0x0000
SSI Signal -> 이상하게 두번 들어간다.
Antenna : 0x00
Radiotap Header에서 뽑아와야 하는 정보
CH -> 채널에 대한 정보가 Channel frequency에 있다.
2452 -> BG 9
2412 -> BG 1 -> 096c
2417 -> BG 2 -> 0971
2422 -> BG 3 -> 0976
2427 -> BG 4 -> 097b
규칙 : 5씩 더해준다.
hex 값 096c를 channel 1로 기준을 잡고 -0x096b를 해준다. (14번째 byte에 있음)
ex) channel frequency : 2412 [BG 1] (hex value : 0x096c / dec : 2412), +5하면 다음 채널(1->2)로 넘어가게 된다.
SSI signal : airodump-ng의 PWR의 값인듯하다. // Radiotap header에 들어있다.
이 값을 2의 보수형태로 만든 뒤 '-'를 붙여서 표현하면 PWR의 값이 나온다.
Frame Control Field 에 1byte의 type/subtype을 알 수 있는 정보가 들어있다.
0x0008은 beacon의 type/subtype이다. (다른 값들은 필터링 해줘야 할듯)
BSS ID를 알 수 있다. (파싱해야 하는 정보)
[etc]
Recevier address, Destination address는 같은 값이 들어간다.
Transmitter address, Source address도 같은 값이 들어가고, BSS ID는 Transmitter address, Source address와 같은 값이지만 hex값을 보면 한번 더 들어가는 것을 알 수 있다.
CH 14 ][ Elapsed: 8 s ][ 2018-08-17 11:13
인터페이스를 지정하여 툴을 구동시키면 맨 윗줄에 이 녀석이 보인다.
CH : 채널 정보 // 802.11 radio information에 channel에 데이터가 들어있다.
Elapsed : airodump-ng 를 구동 시켜놓은 동안의 시간 4의 배수로 올라간다. (처음 0에서 +4하면서 증가)
외에는 구동시켰을때의 날짜 및 시간 정보이다.
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
두번째 줄에는 카테고리가 출력되는데,
각각의 정보는 아래와 같다.
BSSID : AP의 MAC address
PWR : 신호의 세기
Beacons : AP가 보낸 beacon 패킷의 개수이다. 각 AP는 최저 속도 (1M)로 초당 10개의 beacon을 전송한다.
#Data : 데이터 브로드 캐스트 패킷을 포함하여 캡처된 패킷의 수 (WEP, 고유 IV count)
#/s : 지난 10초 동안 측정한 초당 데이터 패킷의 수
CH : 채널 // 802.11 radio information의 channel에 데이터가 들어있다.
MB : AP가 지원하는 최대 속도. MB = 11이면 802.11b이고, MB가 22면 802.11b+ 이고 802.11g는 이보다 더 높다. 네트워크에 QoS가 사용 가능한 경우 MB속도 값 다음에 "e"를 표시한다.
ENC : 사용중인 암호화 알고리즘.
CIPHER : 암호가 발견되었다. CCMP, WRAP, TKIP, WEP40 or WEP104 중 하나다. 필수는 아니지만 TKIP는 일반적으로 WPA2와 함께 사용되며 CCMP는 일반적으로 WPA2와 함께 사용된다. 키 인덱스가 0보다 크면 WEP40으로 표시된다. 표준에서 40byte인 경우 인덱스가 0-3이고 104byte의 경우 0이어야한다고 나와있다.
AUTH : 사용 된 프로토콜. MGT(별도의 인증 서버를 사용하는 WPA / WPA2), SKA(WEP용 공유 키), PSK(WPA /WPA2용 사전 공유 키) 또는 OPN(WEP용 개방형) 중 하나이다.
ESSID : AP의 이름. SSID는 SSID 숨기기가 활성화된 경우 비어있을 수 있다.
[Parsing Data]
BSSID : Beacon에 들어있다.
PWR : Radiotap Header에 들어있다.
Beacons : BSSID Beacon counter를 제작해야 할듯
구조체의 데이터를 클래스로 memcpy 할때 자꾸 오류가 났다..
여기에 나와있지만 원인을 잘 모르겠다.