はじめに
John the Ripper (JtR) は、強力なオープンソースのパスワードクラッキングツールとして広く知られています。様々なハッシュ形式に対応しており、システム管理者やセキュリティ専門家がパスワードの強度をテストするために利用しています。
Wi-Fi のセキュリティを評価する際、特に WPA/WPA2-PSK のパスワード強度をテストする場面があります。このプロセスでは、Wi-Fi ネットワーク上で交わされる認証ハンドシェイク(通常、4-way ハンドシェイク)をキャプチャする必要があります。キャプチャされたデータは、.pcap や .cap といった形式で保存されることが一般的です。
しかし、John the Ripper はこれらの生キャプチャファイルを直接扱うことができません。そこで登場するのが hccap2john というユーティリティです。このツールは、主に Hashcat という別のパスワード回復ツールで使われる .hccap または .hccapx 形式のファイルを、John the Ripper が解析可能な形式に変換する役割を担います。
この記事では、hccap2john の基本的な使い方、関連するファイル形式、具体的な使用例、そして John the Ripper との連携方法について、詳しく解説していきます。 Wi-Fi セキュリティテストの効率化に役立てていただければ幸いです。
hccap2john とは?
hccap2john は、John the Ripper スイートに含まれるユーティリティの一つです。その主な機能は、Hashcat で使用される WPA/WPA2 ハンドシェイクのキャプチャファイル形式である .hccap や、より新しい形式である .hccapx を、John the Ripper がネイティブで解析できるフォーマットに変換することです。
John the Ripper 自体にも、.pcap ファイルから直接ハッシュを抽出する wpapcap2john というツールが存在しますが、hccap2john は Hashcat エコシステムとの連携や、既に .hccapx 形式で保存されているファイルを利用したい場合に特に役立ちます。
入手方法と場所
hccap2john は通常、John the Ripper の “Jumbo” バージョン (コミュニティ強化版) に同梱されています。Kali Linux などのペネトレーションテスト用ディストリビューションを使用している場合、John the Ripper はプリインストールされていることが多く、hccap2john も /usr/sbin/hccap2john や /usr/share/john/ などのパスに含まれていることが一般的です。
もし個別に John the Ripper をソースからビルドした場合は、そのビルドディレクトリ内の run ディレクトリなどに実行ファイルが生成されます。最新版は Openwall の John the Ripper GitHub リポジトリから入手できます。
補足: Python スクリプト版の hccapx2john.py も存在し、機能的には C 言語で書かれた hccap2john と同様に .hccapx ファイルを処理できます。
ファイル形式について理解する
hccap2john を使う上で、関連するファイル形式を理解しておくことが重要です。
入力ファイル形式
- .pcap / .cap
-
パケットキャプチャの標準的な形式です。Wireshark, tcpdump, airodump-ng などのツールで生成されます。WPA/WPA2 の 4-way ハンドシェイクや PMKID を含むネットワークトラフィックが記録されています。
注意点として、
hccap2johnはこれらのファイルを直接は処理しません。通常、aircrack-ngスイートのツールやhcxpcaptoolなどを使って、まず.hccapx形式に変換する必要があります。 - .hccap
-
Hashcat で導入された古い形式のハンドシェイクファイルです。4-way ハンドシェイクの情報を格納しますが、現代のネットワーク環境では限界があり、
.hccapx形式に取って代わられつつあります。hccap2johnはこの形式もサポートしています。 - .hccapx
-
.hccapの後継となる、より堅牢な形式です。WPA/WPA2 のハンドシェイク情報に加え、PMKID (Pairwise Master Key Identifier) を利用した攻撃にも対応しています。PMKID 攻撃は、クライアントがネットワークに接続していなくても、アクセスポイントとの最初のメッセージ交換だけでハッシュを取得できる場合があるため、効率的な攻撃手法とされています (2018年に hashcat により導入)。hccap2johnの主なターゲットはこの形式です。.pcapファイルから.hccapxへの変換には、hcxpcaptool(hcxtools パッケージの一部) や、過去にはcap2hccapx(現在は非推奨とされることが多い) が使われていました。# hcxpcaptool を使った変換例 (-o で出力ファイル指定) hcxpcaptool -o output.hccapx input.pcap
出力ファイル形式 (John the Ripper 形式)
hccap2john は、入力された .hccap または .hccapx ファイルを処理し、John the Ripper が解読可能なテキストベースのハッシュ形式で標準出力に出力します。この出力は通常、ファイルにリダイレクトして保存します。
出力形式の例 (WPA-PSK, wpapsk フォーマット):
[ESSID]$WPAPSK$[ESSID]#HEX_HASH_DATA
具体的には、以下のような形式になります(一部を省略・改変しています)。
MyWiFiNetwork:$WPAPSK$MyWiFiNetwork#010203...[長い16進文字列]...0a0b0c
この形式には、ターゲットとなる Wi-Fi ネットワークの ESSID (ネットワーク名) と、ハンドシェイクから抽出されたハッシュ関連データが含まれています。John the Ripper はこの情報を基にパスワードクラッキングを試みます。
hccap2john の基本的な使い方
hccap2john の使い方は非常にシンプルです。基本的には、入力となる .hccap または .hccapx ファイルを引数として指定します。変換結果は標準出力に出力されるため、> を使ってファイルに保存するのが一般的です。
コマンド構文
hccap2john [入力ファイル1.hccapx] [入力ファイル2.hccap] ... > [出力ファイル名.txt]
[入力ファイル.hccapx / .hccap]: 変換したい Hashcat 形式のファイルを指定します。複数指定することも可能です。> [出力ファイル名.txt]: John the Ripper 形式に変換されたハッシュ情報を保存するファイル名を指定します。
具体的な使用例
例1: 単一の .hccapx ファイルを変換する
hccap2john my_handshake.hccapx > john_crackme.txt
このコマンドは、my_handshake.hccapx ファイルを読み込み、John the Ripper 形式に変換した結果を john_crackme.txt という名前のファイルに保存します。
例2: 複数のファイルをまとめて変換する
hccap2john capture1.hccapx capture2.hccap > combined_hashes.txt
このコマンドは、capture1.hccapx と capture2.hccap の両方を処理し、変換結果を combined_hashes.txt ファイルに追記または上書きして保存します。
オプションについて
hccap2john は非常にシンプルなツールであり、通常、特別なコマンドラインオプションは必要ありません。主な機能はファイル形式の変換に特化しています。ヘルプオプション (-h や --help など) も提供されていない場合が多いです。基本的な使用方法は上記の通り、入力ファイルを指定し、出力をリダイレクトすることです。
John the Ripper との連携
hccap2john で変換したファイルは、John the Ripper でパスワードクラッキングを行うための準備が整った状態です。次に、John the Ripper を使って実際に解析を行います。
John the Ripper の実行
変換して得られたハッシュファイル (john_crackme.txt など) を使って、John the Ripper を実行します。WPA/WPA2-PSK のクラッキングには、適切なフォーマットを指定する必要があります。
john --format=wpapsk --wordlist=/path/to/wordlist.txt john_crackme.txt
--format=wpapsk: John the Ripper に対して、入力ファイルが WPA-PSK のハッシュ形式であることを明示的に伝えます。CPU を使用したクラッキングに適しています。--wordlist=/path/to/wordlist.txt: 辞書攻撃を行う場合に、使用するワードリストファイルのパスを指定します。John the Ripper にはデフォルトのワードリスト (password.lst) が付属していることが多いですが、より強力なリスト (rockyou.txtなど) を指定することも可能です。john_crackme.txt:hccap2johnで生成したハッシュファイルです。
GPU を使用してクラッキングを高速化したい場合は、OpenCL 対応のフォーマットを指定します。
john --format=wpapsk-opencl --wordlist=/path/to/wordlist.txt john_crackme.txt
--format=wpapsk-opencl は、対応する GPU や CPU を使って OpenCL による高速な計算を行います。
John the Ripper は、指定されたワードリストやルールに基づいてパスワードの候補を生成し、ハッシュ値と比較していきます。一致するパスワードが見つかると、画面に表示され、john.pot ファイルに記録されます。
クラック結果の確認
クラッキングが完了した後、または途中で見つかったパスワードを確認するには、--show オプションを使用します。
john --show john_crackme.txt
このコマンドは、john_crackme.txt に含まれるハッシュのうち、既にクラックされたパスワードを表示します。
成功! パスワードが見つかれば、このように表示されます (例):
MyWiFiNetwork:SecretPassword123:::::/path/to/john_crackme.txt
この例では、ESSID “MyWiFiNetwork” のパスワードが “SecretPassword123” であることが判明しました。
トラブルシューティングと注意点
hccap2john や関連ツールを使用する際には、いくつかの一般的な問題や注意点があります。
問題: .pcap ファイルから .hccapx への変換ができない
- 原因1: ハンドシェイクが不完全: キャプチャした
.pcapファイルに、完全な 4-way ハンドシェイクが含まれていない可能性があります。クライアントが接続する瞬間を捉えられていない、またはパケットロスが発生している場合などです。 - 対策1: 再度キャプチャを試みます。クライアントの接続を促すために、
aireplay-ngなどで一時的に Deauthentication パケットを送信する方法もありますが、ネットワークへの影響に注意が必要です。 - 原因2: ESSID 情報の欠落:
.pcapファイル内に、対象ネットワークの ESSID (ネットワーク名) を含むビーコンフレームなどが記録されていない場合、変換ツールが失敗することがあります。これは、フィルタリングしすぎた場合や、キャプチャ開始タイミングの問題で起こりえます。 - 対策2: より広い範囲でキャプチャを行うか、変換ツールによっては ESSID を手動で指定するオプションがあるか確認します (
hcxpcaptoolなど)。 - 原因3: ファイル形式の問題: 非常に古い形式の
.pcapや、破損したファイルである可能性も考えられます。 - 対策3: Wireshark などのツールでファイルを開き、内容を確認します。
問題: hccap2john がハッシュを出力しない
- 原因: 入力された
.hccapまたは.hccapxファイルが空である、破損している、または有効なハンドシェイク情報を含んでいない可能性があります。 - 対策: 元の
.pcapファイルのキャプチャプロセスや、.hccapxへの変換プロセスを見直します。変換ツール (hcxpcaptoolなど) の出力メッセージを確認し、エラーや警告がないか確認します。
注意点: PMKID 攻撃について
.hccapx 形式は PMKID を利用した攻撃にも対応しています。これはクライアントの接続を待たずにアクセスポイントから直接情報を取得できる可能性がある攻撃です。ただし、全てのアクセスポイントが PMKID を提供するわけではありません。PMKID が取得できた場合、hccap2john はそれを John the Ripper 形式に変換します。John the Ripper でのクラッキング手順は基本的に同じ (--format=wpapsk などを使用) です。
注意点: 倫理的な使用
繰り返しになりますが、これらのツールは強力であり、悪用される可能性があります。必ず法律と倫理を遵守し、許可された環境でのみ使用してください。不正な目的での使用は法的な責任を問われる可能性があります。
まとめ
hccap2john は、Hashcat 形式 (.hccap, .hccapx) の Wi-Fi ハンドシェイクファイルを John the Ripper で解析可能な形式に変換するための、シンプルかつ重要なユーティリティです。
以下の点を押さえておきましょう:
hccap2johnは JtR Jumbo に含まれるツール。- 入力は
.hccapまたは.hccapxファイル。 - 出力は John the Ripper 用のテキスト形式ハッシュ (通常ファイルにリダイレクト)。
- 使用法は
hccap2john input.hccapx > output.txtのようにシンプル。 - 変換後のファイルは
john --format=wpapsk ...でクラッキング可能。 .pcapから.hccapxへの変換にはhcxpcaptoolなどが別途必要。- ツールの使用は、許可された範囲で倫理的に行うこと。
hccap2john を活用することで、Hashcat と John the Ripper という二つの強力なツール間でのデータ連携が可能になり、Wi-Fi セキュリティ評価の幅が広がります。適切な知識と倫理観を持って、これらのツールを効果的に利用しましょう。
参考情報
-
John the Ripper official website: https://www.openwall.com/john/
John the Ripper の公式サイト。ダウンロードやドキュメントへのリンクがあります。
-
John the Ripper Community Wiki – Cracking WPA-PSK: https://openwall.info/wiki/john/WPA-PSK
John the Ripper Wiki の WPA-PSK クラッキングに関するページ。
hccap2johnの基本的な使用例も記載されています。 -
Hashcat official website: https://hashcat.net/hashcat/
Hashcat の公式サイト。
.hccapx形式に関する情報もあります。 -
hcxtools GitHub Repository: https://github.com/ZerBea/hcxtools
hcxpcaptoolなどが含まれる hcxtools のリポジトリ。