パケット解析 10: 10分でわかる無線LANのパケット解析

IT

前回の投稿から、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にトラフィックがあると、どちらかのチャンネルをキャプチャしていても、もう一方のチャンネルのパケットをキャプチャしてしまうことがある。

 

802.11b

よって、同じ領域に共存する無線LANは、互いに重複しないようにチャンネル1、6、11、14を使うように設計されている。

一方、802.11aでは5GHzの周波数帯域を使用し、利用可能なチャンネルも次のようになる。

期間タイプチャンネル屋外気象レーダーとの
干渉による運用制限
2005年5月までJ5234, 38, 42, 46×
2005年5月以降W5236, 40, 44, 48×
2005年5月以降W5352, 56, 60, 64×有り
2007年1月31日以降W5236, 40, 44, 48×
2007年1月31日以降W5352, 56, 60, 64×有り
2007年1月31日以降W56100, 104, 108, … , 140有り
2019年7月11日以降W5236, 40, 44, 48×
2019年7月11日以降W5352, 56, 60, 64×有り
2019年7月11日以降W56100, 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のパケットキャプチャは、電波の干渉や、モニターモードに変更するなどの注意が必要だ。

また、パケットを解析することによって、暗号化していないデータを空中に飛ばすことが危険とわかるだろう。

コメント

タイトルとURLをコピーしました