前回の投稿から、1ヶ月以上経過し、何を書こうか迷うが、今回は無線LANのパケット解析についてみてみよう。
無線LANは目に見えない電波で通信し、パケットが空中を飛び交うので普段あまり意識することがないだろう。
では、基礎的なポイントをチェックしてみよう。
チャンネル
チャンネルとは802.11の無線周波数帯域を単純に分割したものだ。802.11とは、IEEEにより策定された無線LAN規格の1つだ。
日本国内で利用できる802.11bのチャンネル数は、14ある。一方、802.11gは、13チャンネル利用できる。
そして、無線LANは一度に1つのチャンネルで通信するので、同時に1つのチャンネルだけをキャプチャすることができる。
電波干渉
無線LANは、さまざまの方法で干渉されることがある。
特に、802.11b/gでは電子レンジ、2.4GHzのコードレス電話、厚い壁によって影響を受ける。
また、チャンネル間の干渉もあるので、注意が必要だ。
下の図(手書きでゴメンナサイ)のように、チャンネル同士でやや重複している。
つまり、チャンネル4と5にトラフィックがあると、どちらかのチャンネルをキャプチャしていても、もう一方のチャンネルのパケットをキャプチャしてしまうことがある。
よって、同じ領域に共存する無線LANは、互いに重複しないようにチャンネル1、6、11、14を使うように設計されている。
一方、802.11aでは5GHzの周波数帯域を使用し、利用可能なチャンネルも次のようになる。
期間 | タイプ | チャンネル | 屋外 | 気象レーダーとの 干渉による運用制限 |
2005年5月まで | J52 | 34, 38, 42, 46 | × | 無 |
2005年5月以降 | W52 | 36, 40, 44, 48 | × | 無 |
2005年5月以降 | W53 | 52, 56, 60, 64 | × | 有り |
2007年1月31日以降 | W52 | 36, 40, 44, 48 | × | 無 |
2007年1月31日以降 | W53 | 52, 56, 60, 64 | × | 有り |
2007年1月31日以降 | W56 | 100, 104, 108, … , 140 | ○ | 有り |
2019年7月11日以降 | W52 | 36, 40, 44, 48 | × | 無 |
2019年7月11日以降 | W53 | 52, 56, 60, 64 | × | 有り |
2019年7月11日以降 | W56 | 100, 104, 108, … , 144 | ○ | 有り |
電波干渉の検出
MetaGeekのChanalyzerというソフトもあるが、ここでは無料で利用できるツールで検証してみよう。
Linuxのiwlistというコマンドを利用してみよう。
はじめに、御自身のワイヤレスのインターフェイスを特定し、その後スキャンしてみよう。
$ iwconfig
lo no wireless extensions.
enp0s31f6 no wireless extensions.
wlp2s0 IEEE 802.11 ESSID:"YOUR_ID"
Mode:Managed Frequency:5.2 GHz Access Point: 34:3D:C4:XX:XX:XX
Bit Rate=585 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=45/70 Signal level=-65 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:96 Missed beacon:0
...
$ iwlist wlp2s0 scanning
wlp2s0 Scan completed :
Cell 01 - Address: 34:3D:C4:XX:XX:XX
Channel:40
Frequency:5.2 GHz (Channel 40)
Quality=49/70 Signal level=-61 dBm
Encryption key:on
ESSID:"YOUR_ID"
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=000004d06ae74e77
Extra: Last beacon: 9781ms ago
IE: Unknown: 000E42756666616C6F2D412D42394338
IE: Unknown: 01088C129824B048606C
IE: Unknown: 030128
IE: Unknown: 2D1A6E0017FFFF0000010000000000000000000000000C1406A60800
IE: Unknown: 3D1628070400000000000000000000000000000000000000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
...
シグナルのレベルを示す、dBmは、デシベルミリワットで、電波や光ファイバーなどで信号の強さを表す。
モード
無線LANカードには、4つのモードがある。
- マネージドモード: クライアントはアクセスポイントに直接接続する。
- アドホックモード:クライアント同士が直接無線を介して通信するときに使う。
- マスターモード:ハイエンドな無線LANカードでは、特別なドライバにより、クライアントがアクセスポイントのような役割もできる。
- モニターモード:データの送受信を行わず、飛び交うパケットを監視するときに利用する。
Linux上での無線LANのパケットキャプチャ
先程実行したiwconfigコマンドで、無線LANカードのModeがモニターモードになっていないことがわかる。そこで、モードをモニターモードに変更しよう。ここでは、airmon-ngを使って、モニターモードに設定してみよう。
# airmon-ng check
# airmon-ng check kill
# airmon-ng check
# iwconfig
# airmon-ng start wlp2s0
# iwconfig
wlp2s0mon IEEE 802.11 Mode: Monitor Frequency: 2.457 GHz Tx-Power=0 dBm
...
// 作業が終わったら、停止し、NetworkManagerも起動しよう。
# airmon-ng stop wlp2s0
では、早速wlp2s0monをwiresharkでキャプチャしてみよう。こちらが、サンプルパケットだ。
無線LANと有線LANのパケットの違いは、802.11ヘッダの有無だ。
このサンプルは、ビーコンというパケットだ。
ビーコンはアクセスポイントからチャンネルをまたがるブロードキャストパケットとして送信されるパケットで、アクセスポイントに接続可能なクライアントに対して、接続に必要なパラメータを表示するために送信される。
この情報から、ビーコンを送信しているアクセスポイントの情報を得ることもできる。
例えば、802.11b規格で、チャンネル10を使い、Buffaloのデバイスを使っていることがわかる。
まとめ
無線LANのパケットキャプチャは、電波の干渉や、モニターモードに変更するなどの注意が必要だ。
また、パケットを解析することによって、暗号化していないデータを空中に飛ばすことが危険とわかるだろう。
コメント