はじめに
この実験では、WPA/WPA2 無線ネットワークのセキュリティをテストするための最新技術を探求します。具体的には、Pairwise Master Key Identifier (PMKID) をキャプチャする方法を学びます。PMKID は WPA プロトコルの一部であり、クライアントが接続されていない場合でもアクセスポイント(AP)から要求されることがあります。この PMKID をキャプチャすることで、オフラインでの総当たり攻撃(brute-force attack)により Wi-Fi パスワードを発見することが可能になります。この手法はしばしば「クライアントレス」攻撃と呼ばれます。
主に 2 つのツールを使用します。ネットワークトラフィックから PMKID をキャプチャするために hcxdumptool を、キャプチャしたデータを処理するために hcxtools を使用します。この実験の終わりには、シミュレートされたアクセスポイントから PMKID を正常にキャプチャし、後でクラッキングするために保存できるようになります。
hcxtools および hcxdumptool のインストール
このステップでは、攻撃に必要なツールをインストールします。hcxdumptool は、Wi-Fi ネットワークからパケットをキャプチャするために設計された高度なツールであり、特に PMKID のような攻撃に役立つ情報をターゲットにします。hcxtools は、キャプチャしたデータを Hashcat のようなパスワードクラッキングソフトウェアと互換性のある形式に変換および操作するために使用されるユーティリティスイートです。
両方のツールをインストールするために apt-get パッケージマネージャーを使用します。ターミナルを開き、以下のコマンドを実行してください。システムに新しいパッケージをインストールするには sudo 権限が必要です。
sudo apt-get install -y hcxtools hcxdumptool
コマンドが完了すると、システムは両方のパッケージとその依存関係をダウンロードしてインストールします。パッケージが展開され設定されていることを示す出力が表示されるはずです。
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
hcxdumptool hcxtools
0 upgraded, 2 newly installed, 0 to remove and ...
...
Setting up hcxtools (6.2.7-2) ...
Setting up hcxdumptool (6.2.7-2) ...
ツールがインストールされたので、ネットワークトラフィックの監視を開始する準備ができました。
インターフェースで AP ビーコンをリッスンするために hcxdumptool を使用する
このステップでは、hcxdumptool を使用してワイヤレスパケットのキャプチャを開始します。この実験では、モニターモードで mon0 という名前の仮想ワイヤレスインターフェースが作成されています。モニターモードにより、インターフェースは自分宛てのトラフィックだけでなく、空中のすべての Wi-Fi トラフィックをキャプチャできます。
hcxdumptool を実行し、モニターインターフェースを指定します。また、リアルタイムでツールの動作を確認するためにステータス表示を有効にします。
ターミナルで以下のコマンドを実行してください。実験環境では、hcxdumptool が検出する TestAP という名前のテストアクセスポイントが既に実行されています。
sudo hcxdumptool -i mon0 --enable_status=1
-i mon0: キャプチャに使用するインターフェースを指定します。--enable_status=1: ステータス表示をオンにし、検出されたネットワークとキャプチャされたデータの情報が表示されます。
コマンドを実行すると、hcxdumptool はスキャンを開始します。検出されたアクセスポイントとクライアントのテーブルが表示されます。約 15〜20 秒間実行させてください。
start capturing (stop with ctrl+c)
INTERFACE:...............: mon0
FILTERLIST (MAC).........: 0 entries
FILTERLIST (ESSID).......: 0 entries
MAC ACCESS POINT.........: 2a:50:e4:4c:a8:75 (incremented on every new client)
MAC CLIENT...............: 2e:50:e4:4c:a8:75 (incremented on every new client)
REPLAYCOUNT..............: 64326
ANONCE...................: 2a5d171a2a5d171a2a5d171a2a5d171a2a5d171a2a5d171a2a5d171a2a5d171a
[21:12:30 - 001] [FOUND ACCESS POINT: 02:00:00:00:01:00 (TestAP)]
...
しばらくすると、ターミナルで Ctrl+C を押してキャプチャプロセスを停止できます。
ツール出力で PMKID ハッシュを特定する
このステップでは、PMKID が正常にキャプチャされたことをいつ特定するかを学びます。hcxdumptool が実行されている間、アクセスポイントに積極的にプローブを送信し、PMKID で応答するかどうかを確認します。成功すると、コンソールに明確なメッセージが表示されます。
前のステップのコマンドを実行させた場合、以下に似た行が表示されたはずです。この行は、必要なものが手に入ったことの確認です。
[21:12:32 - 001] [FOUND PMKID] 02:00:00:00:01:00 -> 2e:50:e4:4c:a8:75
この出力を分解してみましょう。
[FOUND PMKID]: これが重要な指標です。hcxdumptoolが PMKID を正常に要求し、受信したことを意味します。02:00:00:00:01:00: これはアクセスポイント(TestAP)の BSSID(MAC アドレス)です。-> 2e:50:e4:4c:a8:75: これは、hcxdumptoolが要求を行うために使用したステーション(仮想クライアント)の MAC アドレスです。
このメッセージが表示されたということは、PMKID を正常にキャプチャできたことを意味します。このステップで新しいコマンドを実行する必要はありません。目標は、前のステップの出力を理解することです。
ハンドシェイクに対する PMKID の利点を理解する
このステップでは、PMKID 攻撃が従来の WPA/WPA2 クラッキング方法と比較してなぜ重要な進歩であるかについて説明します。
Wi-Fi パスワードをクラックする古典的な方法は、完全な4 ウェイハンドシェイクをキャプチャすることです。このハンドシェイクは、クライアントデバイス(ラップトップや電話など)がアクセスポイントと正常に認証されたときに発生します。それをキャプチャするために、攻撃者はデバイスが接続するのを待つか、接続されているデバイスを切断してから再接続するように強制する必要があります。これには大きな欠点があります。それは、クライアントデバイスの存在とアクティビティに完全に依存することです。リスニング中にデバイスが接続されていない場合や、再接続しない場合、ハンドシェイクをキャプチャできません。
PMKID 攻撃はこの制限を克服します。PMKID は初期関連プロセスの一部であり、特に最新の AP がビーコンフレームでブロードキャストする Robust Security Network Information Element(RSN IE)内にあります。hcxdumptool は、正当なクライアントが存在しなくても、AP からこの情報を積極的に要求できます。
主な利点は、この攻撃がクライアントレスであることです。ターゲット AP の範囲内にいるだけで十分です。これにより、クラック可能なハッシュを取得するプロセスがはるかに高速かつ信頼性の高いものになります。クライアントのアクションをパッシブに待つ必要がなくなったためです。
PMKID ハッシュをクラッキング用にファイルに保存する
この最終ステップでは、hcxdumptool を再度実行しますが、今回は PMKID を含むキャプチャデータをファイルに保存します。このファイルは、後でhcxpcapngtool や hashcat のような他のツールでオフラインクラッキングに使用できます。
出力ファイルを指定するために -o フラグを使用します。これらのキャプチャの標準フォーマットは pcapng です。
以下のコマンドを実行してください。これによりキャプチャが開始され、発見された内容は現在のディレクトリ(~/project)にある captured_pmkid.pcapng という名前のファイルに保存されます。
sudo hcxdumptool -i mon0 -o captured_pmkid.pcapng --enable_status=1
[FOUND PMKID] メッセージが再度表示されるまでツールを実行させてください。表示されたら、Ctrl+C でキャプチャを停止できます。
ツールを停止した後、ディレクトリの内容をリストしてファイルが作成されたことを確認してください。
ls -l
出力に captured_pmkid.pcapng ファイルが表示されるはずです。
total 8
-rw-r--r-- 1 root root 1060 Dec 12 21:15 captured_pmkid.pcapng
-rw-r--r-- 1 labex labex 159 Dec 12 21:10 hostapd.conf
このファイルには、TestAP ネットワークからの PMKID が含まれています。実際の攻撃における次の論理的なステップは、このファイルをハッシュ形式に変換し、パスワードクラッキングツールを使用して元のパスワードを見つけることになります。
まとめ
この実験では、PMKID をキャプチャすることにより、クライアントレス WPA/WPA2 攻撃の基本を習得しました。
まず、必須の hcxtools および hcxdumptool パッケージをインストールしました。次に、hcxdumptool を使用してモニターモードインターフェイスでリッスンし、キャプチャの成功を確認する [FOUND PMKID] メッセージを特定し、従来のハンドシェイクベースの攻撃に対するこの方法の主要な理論的利点を理解しました。最後に、キャプチャされた PMKID を pcapng ファイルに保存し、セキュリティ監査の次の段階であるオフラインパスワードクラッキングの準備をしました。このスキルは、あらゆるワイヤレスセキュリティテスターのツールキットに貴重な追加となります。
