John the Ripper で WPA/WPA2 パスワードを解析するための準備
この記事では、John the Ripper スイートに含まれるユーティリティツール wpapcap2john
の使い方を詳しく解説します。Wi-Fi セキュリティのテストやパスワード強度評価に興味がある方は必見です!💪
wpapcap2john とは? 🤔
wpapcap2john
は、オープンソースのパスワードクラッキングツールである John the Ripper (JtR) スイートに含まれているPerlスクリプトです。
その主な目的は、WPA (Wi-Fi Protected Access) および WPA2 プロトコルで保護されたワイヤレスネットワークの認証プロセス(特に4ウェイハンドシェイク)を含むネットワークキャプチャファイル(通常は .pcap
または .cap
形式)を、John the Ripper が解析できるハッシュ形式に変換することです。
簡単に言うと、Wi-Fi の通信データからパスワード解析に必要な部分を抽出し、JtR が「読める」形に整えるためのツールです。これにより、キャプチャしたデータを使って、ネットワークのパスワード(事前共有鍵 – PSK)の強度をテストすることが可能になります。
このツールは、ペネトレーションテスト担当者やセキュリティ研究者が、管理下にあるネットワークのセキュリティ耐性を評価するために使用されます。
インストールと場所 💻
wpapcap2john
は通常、John the Ripper 本体と一緒に配布されています。Kali Linux などのペネトレーションテスト用ディストリビューションでは、John the Ripper がプリインストールされていることが多く、wpapcap2john
も含まれています。
一般的なインストール場所は以下の通りです(環境によって異なります):
- パッケージマネージャーでインストールした場合:
/usr/sbin/
や/usr/bin/
、あるいは John the Ripper の共有ディレクトリ (例:/usr/share/john/
) 内。 - ソースからコンパイルした場合: John the Ripper のソースディレクトリ内の
run
ディレクトリ (例:/path/to/john/run/
)。
見つからない場合は、システム内で wpapcap2john
を検索してみてください。
find / -name wpapcap2john 2>/dev/null
John the Ripper をまだインストールしていない場合は、公式サイトからダウンロードしてインストールしてください。Jumbo バージョンには多くの追加ツールが含まれており、wpapcap2john
もその一つです。
基本的な使い方 🚀
wpapcap2john
の基本的なコマンド構文は非常にシンプルです。
wpapcap2john [オプション] <キャプチャファイル.pcap> > <出力ハッシュファイル>
各部分の説明:
wpapcap2john
: 実行するコマンド(スクリプト)。[オプション]
: 必要に応じて指定するオプション(後述)。<キャプチャファイル.pcap>
: 処理対象のネットワークキャプチャファイル(.pcap
,.cap
など)。>
: 標準出力をリダイレクトする記号。<出力ハッシュファイル>
: 変換されたハッシュを保存するファイル名(任意)。
例えば、myhandshake.cap
というキャプチャファイルからハッシュを抽出し、wifi_hash.txt
というファイルに保存する場合は、次のように実行します。
wpapcap2john myhandshake.cap > wifi_hash.txt
複数のキャプチャファイルを一度に処理することも可能です。
wpapcap2john capture1.pcap capture2.cap > combined_hashes.txt
キャプチャファイルの要件: 4ウェイハンドシェイク 🤝
wpapcap2john
が正しく動作するためには、入力するキャプチャファイルに特定の情報、すなわち完全なWPA/WPA2の4ウェイハンドシェイクが含まれている必要があります。
4ウェイハンドシェイクとは?
4ウェイハンドシェイクは、WPA/WPA2で保護されたWi-Fiネットワークにクライアント(スマートフォンやPCなど)が接続する際に行われる、4つのステップからなる認証プロセスです。このプロセスを通じて、クライアントとアクセスポイント(AP)は互いを認証し、その後の通信を暗号化するための鍵(PTK: Pairwise Transient Key)を安全に生成・共有します。
- Message 1 (AP -> Client): APがANonce (AP Nonce) をクライアントに送信。
- Message 2 (Client -> AP): クライアントがSNonce (Supplicant Nonce) とMIC (Message Integrity Code) をAPに送信。
- Message 3 (AP -> Client): APがGTK (Group Temporal Key) とMICをクライアントに送信。
- Message 4 (Client -> AP): クライアントが確認応答をAPに送信。
wpapcap2john
は、これらのメッセージ(特にMessage 1から4、または最低限 Message 1, 2, 4)をキャプチャファイルから見つけ出し、パスワードのハッシュを生成するために必要な情報(SSID、ANonce、SNonce、MACアドレスなど)を抽出します。
ハンドシェイクの取得方法
4ウェイハンドシェイクは、クライアントがネットワークに接続する瞬間に発生します。したがって、キャプチャを行う際には、ターゲットネットワークに接続しようとしているクライアントが存在する必要があります。
既に接続済みのクライアントがいる場合は、Aircrack-ng スイートの aireplay-ng
などのツールを使って、クライアントに一時的に切断させ(Deauthentication攻撃)、再接続を促すことでハンドシェイクをキャプチャできます。ただし、これは許可されたネットワークでのみ行うべきです。
キャプチャには、airodump-ng
(Aircrack-ng) や tcpdump
, Wireshark
などのツールが使用されます。airodump-ng
はハンドシェイクをキャプチャすると、画面右上に “WPA handshake: [BSSID]” のように表示されるため、確認が容易です。
# 例: airodump-ng を使ったキャプチャ (チャネル1、APのBSSIDを指定)
# wlan0mon はモニターモードのインターフェース名
airodump-ng --bssid AA:BB:CC:DD:EE:FF -c 1 -w capture_file wlan0mon
オプションについて ⚙️
wpapcap2john
には、いくつかの便利なオプションがあります。wpapcap2john -h
または --help
で確認できますが、主なものを紹介します。
オプション | 説明 |
---|---|
-h , --help |
ヘルプメッセージを表示して終了します。 |
-c |
完全な認証(4ウェイハンドシェイク)のみを表示します。不完全なハンドシェイク(例えば、誤ったパスワード試行など)を除外したい場合に役立ちます。 |
-e <ESSID> |
キャプチャファイルからESSID(ネットワーク名)を特定できない場合に、手動で指定します。ビーコンフレームがキャプチャに含まれていない場合などに使用されることがあります。 |
-b <BSSID> |
キャプチャファイルからBSSID(APのMACアドレス)を特定できない場合に、手動で指定します。 |
-v |
詳細度を上げます。複数回指定することで、より詳細なデバッグ情報を表示できます(例: -vvv )。問題のトラブルシューティングに役立ちます。 |
通常はオプションなしで実行し、問題が発生した場合や特定の情報が不足している場合にこれらのオプションを利用します。
出力フォーマット 📄
wpapcap2john
が成功すると、John the Ripper が解釈できる形式のハッシュ文字列が出力されます。一般的な形式は以下のようになります。
SSID:$WPAPSK$SSID#HEX_DATA
具体的な例:
MyWifiNetwork:$WPAPSK$MyWifiNetwork#010300...[長い16進数データ]...ac47
この文字列には、パスワード解析に必要な以下の情報が含まれています。
- SSID: ネットワークの名前(例:
MyWifiNetwork
)。$WPAPSK$
の前後両方に含まれます。 $WPAPSK$
: ハッシュの種類を示す識別子。#HEX_DATA
: 4ウェイハンドシェイクから抽出されたデータ(ANonce, SNonce, MACアドレスなど)を16進数でエンコードしたもの。
John the Ripper はこのハッシュ文字列を読み込み、--format=wpapsk
または --format=wpapsk-opencl
(GPU使用時) などのフォーマット指定子を使って、指定されたワードリストやルールに基づきパスワードのクラッキングを試みます。
実践!ステップ・バイ・ステップ ✨
ここでは、実際に wpapcap2john
を使ってハッシュを抽出し、John the Ripper で解析するまでの流れをステップごとに見ていきましょう。
ステップ 1: 4ウェイハンドシェイクのキャプチャ
まず、ターゲットネットワークの4ウェイハンドシェイクを含む .pcap
ファイルが必要です。ここでは、airodump-ng
を使ってキャプチャし、handshake-01.cap
というファイルが生成されたと仮定します。(実際のキャプチャ手順はここでは省略します)
ステップ 2: wpapcap2john でハッシュを抽出
次に、wpapcap2john
を使ってキャプチャファイルからハッシュを抽出し、wifi_hash.txt
ファイルに保存します。
wpapcap2john handshake-01.cap > wifi_hash.txt
成功すれば、wifi_hash.txt
ファイルに以下のようなハッシュ文字列が書き込まれます(SSIDやデータは実際のキャプチャ内容によって異なります)。
TargetNetwork:$WPAPSK$TargetNetwork#010300...[hex data]...
ステップ 3: John the Ripper で解析
最後に、John the Ripper を使って、生成されたハッシュファイル (wifi_hash.txt
) とパスワードリスト (例: rockyou.txt
) を用いてパスワード解析を試みます。
john --wordlist=/path/to/rockyou.txt wifi_hash.txt
GPU を使って高速化する場合は、OpenCL 対応フォーマットを指定します。
john --wordlist=/path/to/rockyou.txt --format=wpapsk-opencl wifi_hash.txt
John the Ripper は、ワードリスト内の単語を順番に試行し、ハッシュと一致するパスワードが見つかればそれを表示します。解析には時間がかかる場合があります ⏳。
解析結果を確認するには、--show
オプションを使用します。
john --show wifi_hash.txt
もしパスワードが見つかっていれば、ハッシュ文字列の後ろにコロン区切りで表示されます。
TargetNetwork:$WPAPSK$TargetNetwork#...[hex data]...:FoundPassword
トラブルシューティングとよくある問題 🛠️
wpapcap2john
を使用する際に遭遇する可能性のある一般的な問題とその対処法です。
-
エラー: “No supported AP found in file(s)”
- 原因: キャプチャファイルに、認識可能な4ウェイハンドシェイクが含まれていない、または不完全である可能性があります。あるいは、キャプチャファイル形式がサポートされていない (例: 破損している) 場合もあります。
- 対処法:
- 再度ハンドシェイクのキャプチャを試みます。クライアントがAPに接続する瞬間を確実に捉えるようにしてください。
airodump-ng
の表示でハンドシェイクが取得できたか確認しましょう。 - Wireshark などのツールで
.pcap
ファイルを開き、EAPOL (Extensible Authentication Protocol over LAN) パケットが存在し、4ウェイハンドシェイクのシーケンス(特にMessage 1, 2, 4)が確認できるか見てみましょう。 - キャプチャファイルの形式 (例: pcapng vs pcap) が原因である可能性も稀にあります。ツールによっては古い pcap 形式のみをサポートする場合があるので、変換を試みることも有効かもしれません。
- キャプチャファイルにビーコンフレームが含まれていない場合、
-e <ESSID>
や-b <BSSID>
オプションで手動指定を試してみてください。
- 再度ハンドシェイクのキャプチャを試みます。クライアントがAPに接続する瞬間を確実に捉えるようにしてください。
-
出力が空、または期待したハッシュが出力されない
- 原因: 上記と同様に、有効なハンドシェイクが存在しない可能性があります。また、使用している
wpapcap2john
のバージョンが古い、または特定のキャプチャ形式に対応していない可能性も考えられます。 - 対処法:
- John the Ripper を最新の Jumbo バージョンにアップデートしてみてください。
- 詳細オプション
-v
をつけて実行し、デバッグ情報を確認します。何が問題かのヒントが得られる場合があります。
- 原因: 上記と同様に、有効なハンドシェイクが存在しない可能性があります。また、使用している
-
Perl スクリプトのエラー
- 原因: Perl の実行環境に問題があるか、スクリプト自体に何らかの問題(権限など)がある可能性があります。
- 対処法:
- Perl が正しくインストールされているか確認します。
wpapcap2john
スクリプトに実行権限が付与されているか確認します (chmod +x wpapcap2john
)。- John the Ripper を再インストールまたはソースから再コンパイルしてみます。
問題が解決しない場合は、John the Ripper の GitHub Issues や関連コミュニティで情報を探したり、質問してみるのも良いでしょう。
セキュリティ上の考慮事項と倫理的利用 🛡️
wpapcap2john
および John the Ripper は、強力なパスワード回復・監査ツールですが、その能力ゆえに悪用される危険性も伴います。以下の点を必ず守ってください。
WPA/WPA2 のセキュリティはパスワードの強度に大きく依存します。このツールを使って自身のネットワークのパスワードが容易に推測可能であることが判明した場合、より長く複雑なパスワードに変更し、可能であれば WPA3 などのより新しいセキュリティプロトコルへの移行を検討してください。
まとめ 🏁
wpapcap2john
は、キャプチャされた WPA/WPA2 のハンドシェイクデータを John the Ripper で解析可能なハッシュ形式に変換するための重要なユーティリティです。
- 正しい4ウェイハンドシェイクを含むキャプチャファイルが必要です。
- 基本的な使い方は
wpapcap2john <capture.pcap> > <output.hash>
です。 - 出力されたハッシュは John the Ripper でパスワード解析に使用できます。
- ツールの使用は、許可されたネットワークに対してのみ、倫理的に行う必要があります。
このツールを正しく理解し活用することで、Wi-Fi ネットワークのセキュリティ強度を評価し、必要な対策を講じるための一助となります。安全なネットワーク環境の維持に役立ててくださいね!😊
参考情報
- John the Ripper 公式サイト: https://www.openwall.com/john/
- Openwall Community Wiki – Cracking WPA-PSK/WPA2-PSK: https://openwall.info/wiki/john/WPA-PSK
- Aircrack-ng 公式サイト: https://www.aircrack-ng.org/
コメント