アクセスポイントのベンダーで働いていると media access control (MAC) アドレス認証に対応しているかよく聞かれます。MAC アドレス認証では端末とアクセスポイントで送信されるフレームは暗号化されない上に、端末の固有識別番号である MAC アドレスを偽装することが可能なので、攻撃者は簡単に通信を傍受したり、ネットワークへアクセスすることができます。世界中でセキュリティインシデントが発生しているにも関わらず、脆弱な認証方式を企業で使用し続けることは理解に苦しみます。
好き好んで MAC アドレス認証を使用し続けている訳ではないことも理解しています。例えば、現在使用している端末が古く、その端末が新しい認証方式に対応していないので仕方なく使用しているかもしれません。後継機を購入したいけど、その端末が生産中止になった可能性も考えられます。しかし、そのような背景とセキュリティインシデントを天秤にかけると、やはり使用し続ける価値は見出せません。最低でもインターネット出れないように access control list (ACL) を設定し、デバイス同士の通信はプロトコルレベルで暗号化するべきです。
なぜインターネット接続までも制限をしなければいけないのか思うかもしれません。もし攻撃者が MAC アドレスを偽装しインターネットへ自由にアクセスできた場合、そのネットワークから他者へ攻撃することが可能になります。一番悪いのは攻撃者なのですが、日本国内の近年の時事ニュースを見ていると、ネットワークを提供している人も責任が問われる可能性が高いです。
誰でも傍受可能
Wi-Fi は空間を媒体とする通信方式のため、電気信号を受信できる距離にいれば他の端末の通信を容易に傍受することが可能です。Apple 社の MacBook では Wireless Diagnotics ツールの一部として無線空間をキャプチャするソフトウェアが標準で付いてきます。Windows でも Savvius 社の Omnipeek というソフトウェアが存在します。これらのソフトウェアを使用すれば、誰でも無線通信を傍受することができます。
さらに、MAC アドレス認証を使用した時、無線空間に送信されるフレームは暗号化されません。なので、HTTP、TFTP、Telnet といった暗号化されていないプロトコルを使用した場合、その通信内容は他者に対して丸見えな状態になります。
誰でも接続可能
MAC アドレス認証は MAC アドレスを基にその端末のネットワーク接続可否が決まりますが、MAC アドレスは簡単に書き換えられます。次のステップを踏めば、MAC アドレス認証を使用しているネットワークへ誰でもアクセスできます。
- 無線パケットキャプチャを取得
- オープン認証の service set ID (SSID) を把握
- その SSID で通信している端末の MAC アドレスを確認
- 自分の端末の MAC アドレスをそれに書き換える
- 接続を試みる
ハンズオン
まず、パケットキャプチャを取得し、下記のフィルタで Probe Response で robust security network (RSN) タグが含まれていないものを探します。Wireshark のフィルタでは、”(wlan.fc.type_subtype == 0x0005) && !(wlan.tag.number == 48)” を使用します。
次に、この SSID に接続しているクライアントの MAC アドレスを取得するために、basic service set ID (BSSID) でフィルタをかけます。攻撃者の場合、これらの SSID を全て調査しますが、今回は私が事前に準備した se-japan-mac という SSID を使用します。se-japan-mac の BSSID は da:55:2d:ee:3a:6a なので、 “wlan.bssid == da:55:2d:ee:3a:6a” というフィルタでクライアントが通信していないか確認します。
実際に 28:a0:2b:XX:XX:XX というクライアントが通信をしているので、そのアドレスを偽装し、アクセスしてみます。私は MacBook を使用しているので、下記の手順で MAC アドレスを変更します。
Radius サーバのログを確認すると、元の 8c:85:90:XX:XX:XX の MAC アドレスで 01:02:03.094 にアクセスを試みた時には、拒否されていることが分かります。偽装後の28:a0:2b:XX:XX:XX はアクセスは許可されています。