はじめに
MAC アドレスフィルタリングは、ルーターやアクセスポイントが特定の MAC アドレスを持つデバイスからの接続のみを受け入れるように設定するネットワークセキュリティ手法です。カジュアルな侵入者を抑止することはできますが、MAC アドレスは簡単に変更(「なりすまし」)できるため、堅牢なセキュリティ対策ではありません。
この実験では、MAC アドレスフィルタリングをバイパスする方法を学びます。まず、ネットワークスキャンを検査して、既に許可されているクライアントの MAC アドレスを特定し、次に macchanger ツールを使用して、自身のネットワークインターフェースの MAC アドレスを許可されているものと一致するように変更します。このプロセスは、ネットワーク侵入テストにおける基本的なテクニックを示しており、WPA2/WPA3 のようなより強力なセキュリティプロトコルの重要性を強調しています。
airodump-ng スキャンから許可されたクライアントの MAC アドレスを特定する
このステップでは、ターゲットネットワークへの接続が既に許可されているデバイスの MAC アドレスを見つけることが目標です。実際のシナリオでは、airodump-ng のようなツールを使用してライブネットワークトラフィックをキャプチャします。この実験では、このプロセスをシミュレートする事前にキャプチャされたスキャンファイルを提供しています。
スキャン結果は CSV(Comma-Separated Values)ファイルに保存されます。このファイルを確認して、必要な情報を探しましょう。ファイルは ~/project/scans/network-scan-01.csv にあります。
cat コマンドを使用してファイルの内容を表示します。
cat ~/project/scans/network-scan-01.csv
以下のような出力が表示されます。
BSSID, First time seen, Last time seen, channel, Speed, Privacy, Cipher, Authentication, Power, ## beacons, ## IV, LAN IP, id-length, ESSID, Key,Station MAC, First time seen, Last time seen, Power, ## packets, BSSID, Probed ESSIDs
00:11:22:33:44:55, 2023-10-27 10:00:00, 2023-10-27 10:05:00, 6, 54, WPA2, CCMP, PSK, -50, 100, 50, 192.168.1.1, 10, FilteredNet,,AA:BB:CC:DD:EE:FF, 2023-10-27 10:01:00, 2023-10-27 10:04:50, -45, 1234, 00:11:22:33:44:55,
この出力では、Station MAC 列を探してください。この列には、ネットワークに接続されているクライアントデバイスの MAC アドレスがリストされています。クローンする必要がある MAC アドレスは AA:BB:CC:DD:EE:FF です。次のステップのために、このアドレスをメモしておいてください。
ifconfig を使用してワイヤレスインターフェースを無効にする
このステップでは、ネットワークインターフェースを MAC アドレスの変更のために準備します。MAC アドレスを変更する前に、インターフェースを一時的に無効にする必要があります。これには、ネットワークインターフェース設定の定番ツールである ifconfig コマンドを使用します。
まず、ネットワークインターフェースを特定し、現在の MAC アドレスを確認しましょう。この実験環境では、eth0 インターフェースを使用します。
以下のコマンドを実行して、eth0 の詳細を表示します。
ifconfig eth0
出力は以下のようになります。ether フィールドに現在のハードウェア MAC アドレスが表示されていることに注意してください。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 8 bytes 696 (696.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
次に、down 引数を使用して eth0 インターフェースを無効にします。ネットワークインターフェースの状態を変更するには sudo 権限が必要です。
sudo ifconfig eth0 down
このコマンドは、成功した場合、何も出力しません。再度 ifconfig eth0 を実行することで、インターフェースがダウンしていることを確認できます。最初の行から UP フラグがなくなっていることに気づくでしょう。
macchanger --mac を使用して許可された MAC アドレスをクローンする
このステップでは、macchanger ユーティリティを使用して、インターフェースの MAC アドレスを以前特定したアドレスに変更します。ネットワークインターフェースが無効になっているため、そのプロパティを安全に変更できます。
macchanger ツールを使用すると、ネットワークインターフェースの MAC アドレスを表示および設定できます。特定の СMAC アドレスを設定するために --mac オプションを使用します。
以下のコマンドを使用して、eth0 の MAC アドレスを AA:BB:CC:DD:EE:FF に変更します。これは特権操作であるため、sudo を使用することを忘れないでください。
sudo macchanger --mac AA:BB:CC:DD:EE:FF eth0
コマンドを実行すると、macchanger が変更を報告します。出力は以下のようになります。
Current MAC: 02:42:ac:11:00:02 (Unknown)
Permanent MAC: 02:42:ac:11:00:02 (Unknown)
New MAC: aa:bb:cc:dd:ee:ff (UNKNOWN)
この出力は、MAC アドレスが正常に偽装されたことを確認します。Permanent MAC は元のハードウェアアドレスであり、New MAC は現在インターフェースでアクティブになっているアドレスです。
ifconfig を使用してワイヤレスインターフェースを再度有効にする
このステップでは、ネットワークインターフェースを新しい MAC アドレスでオンラインに戻します。MAC アドレスが変更されたら、変更を適用し、ネットワーク上で通信できるようにインターフェースを再度有効にする必要があります。
up 引数を持つ ifconfig コマンドを使用して、eth0 インターフェースを再度有効にします。
sudo ifconfig eth0 up
このコマンドは何も出力しないはずです。インターフェースがアップしており、新しい MAC アドレスを持っていることを確認するには、もう一度 ifconfig eth0 を実行します。
ifconfig eth0
出力を確認します。ether フィールドに新しい偽装された MAC アドレスが表示され、最初の行に UP フラグが戻っているはずです。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether aa:bb:cc:dd:ee:ff txqueuelen 0 (Ethernet)
RX packets 8 bytes 696 (696.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
これで、インターフェースはアクティブになり、許可されたデバイスになりすましています。
フィルタリングされたネットワークへの接続能力を確認する
この最終ステップでは、実行した操作が成功したことを確認します。実際のシナリオでは、MAC アドレスでフィルタリングされたワイヤレスネットワークに接続を試みます。デバイスの MAC アドレスがネットワークの許可リストにあるものと一致するため、接続は受け入れられます。
シミュレーション環境であるため、実際の Wi-Fi ネットワークに接続することはできません。代わりに、ローカルスクリプトを実行して、eth0 の MAC アドレスがターゲットアドレスに正しく設定されているかを確認します。
まず、このチェックを実行する小さなシェルスクリプトを作成します。nano エディタを使用して check_connection.sh という名前のファイルを作成します。
nano check_connection.sh
次に、以下のスクリプトの内容を nano エディタにコピー&ペーストします。
#!/bin/bash
CURRENT_MAC=$(ip addr show eth0 | grep 'link/ether' | awk '{print $2}' | tr '[:lower:]' '[:upper:]')
TARGET_MAC="AA:BB:CC:DD:EE:FF"
if [ "$CURRENT_MAC" == "$TARGET_MAC" ]; then
echo "Connection successful! Your device is now authorized on the network."
echo "Current MAC: $CURRENT_MAC"
else
echo "Connection failed. Your MAC address does not match an authorized device."
echo "Current MAC: $CURRENT_MAC"
echo "Expected MAC: $TARGET_MAC"
fi
ファイルを保存し、Ctrl+X、Y、Enter の順にキーを押して nano を終了します。
次に、スクリプトを実行可能にします。
chmod +x check_connection.sh
最後に、スクリプトを実行して接続ステータスを確認します。
./check_connection.sh
すべてのステップを正しく実行した場合、成功メッセージが表示されます。
Connection successful! Your device is now authorized on the network.
Current MAC: AA:BB:CC:DD:EE:FF
これにより、MAC アドレスの偽装が成功したことが確認できます。
まとめ
この実験では、ネットワーク上の MAC アドレスフィルタリングをバイパスする方法を成功裏に実証しました。ネットワークセキュリティテストの基本となる、完全なステップバイステップのプロセスを学びました。
以下の手順を実行しました。
- シミュレーションされたネットワークスキャンから、許可されたクライアントの MAC アドレスを特定しました。
ifconfigを使用してネットワークインターフェースを無効化しました。macchangerを使用して、許可された MAC アドレスを自分のインターフェースにクローンしました。- 新しいアドレスを適用するためにネットワークインターフェースを再度有効化しました。
- 新しい MAC アドレスがアクセスを許可することを確認しました。
重要な点は、MAC アドレスフィルタリングは「隠蔽によるセキュリティ」の一形態であり、ワイヤレスネットワークの唯一の防御線として使用すべきではないということです。堅牢なセキュリティのためには、常に WPA2 または WPA3 のような強力な暗号化プロトコルと、複雑でユニークなパスワードを使用してください。
