WPA/WPA2 ハンドシェイクデータを John the Ripper 用に変換するツール
はじめに
John the Ripper (JtR) は、パスワードのセキュリティ監査や回復のための強力なオープンソースツールです。システム管理者やセキュリティ専門家が、弱いパスワードを発見するために広く利用されています。John the Ripper は非常に多くのハッシュ形式に対応していますが、特定のツールやシナリオで生成されたデータ形式を直接扱えない場合があります。
特に Wi-Fi のセキュリティ監査においては、WPA/WPA2 のハンドシェイク情報をキャプチャし、その情報からパスワードを解析することが一般的です。このハンドシェイク情報は、しばしば .cap や .pcap といった形式で保存され、さらに GPU による高速解析を得意とする Hashcat 向けに .hccapx という形式に変換されることがあります。
しかし、John the Ripper を使ってこれらの WPA/WPA2 ハンドシェイク情報(.hccapx 形式)を解析したい場合、John the Ripper が直接理解できる形式に変換する必要があります。ここで登場するのが、hccapx2john というユーティリティです。このブログ記事では、hccapx2john の役割と具体的な使い方について詳しく解説していきます。
.hccapx ファイル形式とは?
hccapx2john を理解する前に、その入力となる .hccapx ファイル形式について知っておく必要があります。
.hccapx は、主に Hashcat というパスワード回復ツールで使用するために開発されたカスタムバイナリファイル形式です。特に、WPA/WPA2 無線 LAN の認証プロセス(4ウェイハンドシェイク)からキャプチャされた情報を格納するために設計されています。この形式は、古い .hccap 形式を改良したものです。
通常、Aircrack-ng スイートの airodump-ng などのツールを使って無線 LAN の通信をキャプチャすると、.cap や .pcap という一般的なパケットキャプチャ形式で保存されます。このファイルには、ハンドシェイクに必要な情報(EAPOL メッセージなど)が含まれています。
Hashcat で効率的にパスワード解析を行うためには、この .cap ファイルから必要な情報だけを抽出し、最適化された .hccapx 形式に変換する必要があります。この変換には、hashcat-utils に含まれる cap2hccapx ツールや、hcxtools スイートのツール、あるいはオンラインの変換サービスなどが利用されます。
.hccapx ファイルには、以下のような情報が含まれます。
- ESSID (Wi-Fi ネットワーク名)
- アクセスポイント (AP) の MAC アドレス
- クライアント (STA) の MAC アドレス
- ANonce (AP が生成する乱数)
- SNonce (STA が生成する乱数)
- EAPOL データ (認証メッセージの一部)
- Message Pair 情報 (どのハンドシェイクメッセージがキャプチャされたかを示すフラグ)
- Key Version (WPA, WPA2, WPA2-CMAC などを示す)
これらの情報を使って、Hashcat (や、これから説明する John the Ripper) はパスワードの候補を試行し、正しいパスワードを見つけ出そうとします。
hccapx2john とは?
hccapx2john は、John the Ripper (JtR) スイートに含まれるユーティリティツールの一つです。その主な役割は、Hashcat 向けの .hccapx ファイル形式を、John the Ripper が解析できるハッシュ形式テキストに変換することです。
つまり、hccapx2john 自体はパスワードをクラックする(見つけ出す)ツールではありません。あくまでフォーマットコンバーター(形式変換器)として機能します。
John the Ripper は元々、Unix 系システムのパスワードハッシュ(/etc/shadow ファイルなど)を解析するために開発されましたが、「Jumbo」バージョンと呼ばれる拡張版では、非常に多くのファイル形式やハッシュタイプに対応しています。hccapx2john は、この Jumbo バージョンに含まれる多数の `*2john` ユーティリティ(例: zip2john, rar2john, office2john など)の一つであり、特定のファイルから John the Ripper が扱えるハッシュ情報を抽出する役割を担っています。
なぜ Hashcat 形式のファイルを John the Ripper で扱いたいのか? と疑問に思うかもしれません。理由はいくつか考えられます。
- John the Ripper の持つ高度なルールベースの攻撃やインクリメンタルモードを使いたい。
- CPU ベースでの解析を行いたい、または特定の CPU 最適化を利用したい(一般的に WPA/WPA2 解析は GPU の方が高速ですが)。
- 使い慣れたツールが John the Ripper である。
- 複数のツールを組み合わせたワークフローの一部として利用したい。
hccapx2john は、このような場合に .hccapx ファイルを JtR の世界へ橋渡しする重要な役割を果たします。
hccapx2john の場所と実行方法
ツールの場所
hccapx2john は通常、John the Ripper (Jumbo バージョン) をソースコードからコンパイルした場合、そのディレクトリ内の run サブディレクトリに他の `*2john` ツールと共に配置されます。
/path/to/john/run/hccapx2john.py
もし、Kali Linux などのペネトレーションテスト用ディストリビューションや、パッケージマネージャ(例: `apt`, `yum`, `brew`)を通じて John the Ripper (Jumbo) をインストールした場合、hccapx2john (または hccapx2john.py) はシステムの実行パス(例: /usr/bin や /usr/sbin、あるいは /usr/local/bin)に含まれていることが多いです。
見つからない場合は、find コマンドや locate コマンドで探してみてください。
# find / -name hccapx2john\* 2>/dev/null
# locate hccapx2john
hccapx2john は Python スクリプト (.py) として提供されている場合が多いです。そのため、実行には Python 環境が必要になることがあります(通常、John the Ripper が動作する環境には Python がインストールされています)。
基本的な使い方
hccapx2john の使い方は非常にシンプルです。コマンドラインで、変換したい .hccapx ファイルを引数として与え、その標準出力をファイルにリダイレクトします。
/path/to/john/run/hccapx2john.py <入力ファイル.hccapx> > <出力ファイル.txt>
または、パスが通っている場合は単純に以下のように実行できます。
hccapx2john <入力ファイル.hccapx> > <出力ファイル.txt>
hccapx2john.py(またはhccapx2john): 実行するツール本体。<入力ファイル.hccapx>: 変換元の WPA/WPA2 ハンドシェイク情報が含まれた.hccapxファイルへのパス。>: シェルのリダイレクト機能。標準出力をファイルに書き込みます。<出力ファイル.txt>: John the Ripper が読み込むことができる形式に変換されたハッシュ情報が書き込まれるテキストファイルの名前。
この操作により、.hccapx ファイル内の各ハンドシェイク情報が、John the Ripper 用のテキスト形式のハッシュ文字列に変換され、指定した出力ファイルに保存されます。
実践的な使用例と出力形式
ステップ・バイ・ステップ
-
ハンドシェイクのキャプチャと .hccapx への変換:
まず、airodump-ngなどのツールでターゲット AP と接続中のクライアント間の通信をキャプチャし、WPA/WPA2 ハンドシェイクを含む.capファイルを取得します。(このプロセスはhccapx2johnの範囲外です)。
次に、cap2hccapxやhcxpcaptoolなどを使って.capファイルを.hccapxファイルに変換します。ここでは仮にhandshake.hccapxというファイルができたとします。 -
hccapx2john の実行:
hccapx2johnを使ってhandshake.hccapxを John the Ripper 用の形式に変換し、jtr_hashes.txtというファイルに出力します。hccapx2john handshake.hccapx > jtr_hashes.txt -
John the Ripper での解析:
生成されたjtr_hashes.txtファイルを John the Ripper に入力として与え、パスワード解析を開始します。ここでは、単語リスト(ワードリスト)攻撃の例を示します。john --wordlist=/path/to/wordlist.txt jtr_hashes.txt--wordlistオプションで辞書ファイルを指定します。John the Ripper は、jtr_hashes.txt内のハッシュ形式を自動的に認識し(この場合は WPA-PSK/WPA2-PSK)、指定されたワードリストを使ってパスワードの試行を開始します。 -
結果の確認:
パスワードが見つかると、John the Ripper はそれを画面に表示し、$JOHN/john.potファイル(通常は~/.john/john.potまたは John the Ripper の実行ディレクトリ)に記録します。後で結果を確認するには、--showオプションを使用します。john --show jtr_hashes.txt
出力形式の解説
hccapx2john が生成する出力ファイル(例: jtr_hashes.txt)には、以下のような形式のテキスト行が含まれます。
ESSID:$WPAPSK$ESSID#HEX_DATA...
各部分の意味は以下の通りです。
ESSID: ネットワーク名(SSID)。John the Ripper がどのネットワークのハッシュか識別するために先頭に付けられます。:: フィールド区切り文字。$WPAPSK$: John the Ripper に対して、これが WPA-PSK/WPA2-PSK タイプのハッシュであることを示すマジックナンバー(識別子)です。John はこの識別子を見て、適切な解析アルゴリズム (wpapskフォーマット) を選択します。ESSID: 再度ネットワーク名。ハッシュ計算に必要です。#: ESSID と後続のバイナリデータ(16進数表現)を区切る文字。HEX_DATA...: 実際のハンドシェイク情報(MACアドレス、Nonce、EAPOLデータなど)が連結され、16進数文字列としてエンコードされた部分です。このデータと試行パスワード、ESSID を使って、John the Ripper は内部的に PMK (Pairwise Master Key) と PTK (Pairwise Transient Key) を計算し、キャプチャされた MIC (Message Integrity Code) と比較することでパスワードの正当性を検証します。
例として、以下のような行が出力される可能性があります(HEX_DATA 部分は大幅に省略しています)。
MyWiFiNetwork:$WPAPSK$MyWiFiNetwork#aabbcc...eeff0011...7788
この形式を John the Ripper が読み込むことで、.hccapx に格納されていた情報を元にパスワードクラッキング処理を実行できるようになります。
コマンドラインオプション
多くの `*2john` ツールと同様に、hccapx2john の基本的な使い方は入力ファイルを与えて標準出力をリダイレクトすることであり、複雑なコマンドラインオプションは通常ありません。
利用可能なオプションを確認するには、-h または --help オプションを付けて実行してみるのが確実です。
hccapx2john.py --help
(2024年時点の `hccapx2john.py` の実装例に基づく情報) 場合によっては、以下のようなオプションが利用可能なことがあります。
| オプション | 説明 |
|---|---|
<hccapxfile> |
入力となる .hccapx ファイルへのパス (必須)。 |
-n <value>, --nonce-fuzz <value> |
(一部の実装に存在する可能性あり) AP Nonce (ANonce) の補正値を指定します。.hccapx ファイル内の `message_pair` フラグに基づいて自動検出されることもありますが、手動で微調整を行いたい場合に使うことがあります。通常は使用しません。 |
-h, --help |
ヘルプメッセージを表示して終了します。 |
基本的には、入力ファイル名を指定し、出力をリダイレクトするという使い方を覚えておけば十分です。
トラブルシューティングと注意点
-
入力ファイルの形式エラー:
hccapx2johnは.hccapx形式を期待しています。.capや.pcapファイルを直接与えても動作しません。事前にcap2hccapxなどで変換が必要です。また、破損した.hccapxファイルを与えるとエラーが発生します。 -
不完全なハンドシェイク: 元の
.capファイルに WPA/WPA2 の4ウェイハンドシェイクが完全な形でキャプチャされていない場合、生成された.hccapxファイルも不完全となり、hccapx2johnが変換できないか、変換できても John the Ripper で解析できないことがあります。確実にハンドシェイクを取得するには、ターゲット AP に接続しているクライアントが再接続するタイミングを狙うか、aireplay-ngの Deauthentication 攻撃(許可された範囲で!)などを用いる必要があります。 -
John the Ripper がフォーマットを認識しない:
hccapx2johnで生成したファイルを John the Ripper に渡しても “No password hashes loaded” のようなメッセージが出る場合、John the Ripper が WPA-PSK フォーマット (wpapsk) をサポートするようにコンパイルされていない可能性があります。特に、最小構成の John the Ripper を使用している場合に起こりえます。Jumbo バージョンを使用しているか確認してください。 -
Python 環境:
hccapx2john.pyは Python スクリプトであるため、実行には Python インタープリタが必要です。通常は問題ありませんが、非常にミニマルな環境では Python がインストールされていない可能性もゼロではありません。
まとめ
hccapx2john は、John the Ripper スイートの中でも、特に Wi-Fi セキュリティ監査において重要な役割を担うユーティリティです。Hashcat 向けに最適化された .hccapx ファイル形式を、John the Ripper が理解できるテキストベースのハッシュ形式に変換することで、John the Ripper の持つ多様なパスワード解析機能(ルールベース攻撃、インクリメンタルモードなど)を WPA/WPA2 のハンドシェイクデータに対して適用することを可能にします。
使い方は非常にシンプルで、変換したい .hccapx ファイルを指定して実行し、出力をファイルに保存するだけです。これにより、Hashcat と John the Ripper という二つの強力なパスワード解析ツールの間でデータの互換性を持たせることができ、より柔軟なセキュリティ監査やテストが可能になります。
WPA/WPA2 のパスワード強度テストを行う際に、John the Ripper を活用したいと考えているなら、hccapx2john は欠かせないツールとなるでしょう。
参考情報
-
John the Ripper 公式サイト: https://www.openwall.com/john/
John the Ripper のダウンロード、ドキュメント、メーリングリストなど。 -
John the Ripper GitHub リポジトリ (Jumbo): https://github.com/openwall/john
hccapx2john.pyなどのソースコードが含まれています。 -
Hashcat Wiki – hccapx: https://hashcat.net/wiki/doku.php?id=hccapx
.hccapxファイルフォーマットの詳細な説明。