pcap2johnの使い方:ネットワークキャプチャからパスワードハッシュを抽出

セキュリティツール

John the Ripperで解析可能な形式に変換しよう!🔧

はじめに:pcap2johnとは?🤔

pcap2johnは、有名なパスワードクラッキングツールであるJohn the Ripper (JtR) スイートに含まれるユーティリティスクリプト(主にPythonスクリプトとして提供されることが多い)です。その主な役割は、ネットワークトラフィックを記録したPCAP (Packet Capture) ファイルから、John the Ripperが解析(クラック)できる形式のハッシュデータを抽出することです。

ネットワーク上では、認証や暗号化のために様々なプロトコルが使用されており、その中にはパスワードに関連する情報が含まれていることがあります。pcap2johnは、これらの情報を見つけ出し、JtRで処理できる形に変換してくれる便利なツールです。特に、Wi-FiのWPA/WPA2ハンドシェイク情報の抽出や、Kerberos認証、TCP-MD5セッションなど、特定のネットワークプロトコルに関連する認証情報を取得するのに役立ちます。

💡 ポイント: pcap2john自体はパスワードをクラックするツールではありません。あくまでPCAPファイルからハッシュを抽出するためのツールであり、抽出されたハッシュを実際にクラックするにはJohn the Ripper本体が必要です。

インストール方法 💻

pcap2johnは通常、John the RipperのJumboバージョンに含まれています。Jumboバージョンは、コミュニティによって拡張された、より多くのハッシュ形式やユーティリティをサポートするバージョンです。

多くのLinuxディストリビューション(特にKali Linuxのようなペネトレーションテスト用OS)では、John the Ripper (Jumbo) がパッケージ管理システムを通じて簡単にインストールできます。

Debian/Ubuntu系の場合:

sudo apt update
sudo apt install john

ソースからビルドする場合や、特定のプラットフォーム向けのバイナリを入手する場合は、OpenwallのJohn the Ripper公式サイトを参照してください。

インストール後、pcap2john (または pcap2john.py) が実行パスに含まれているか、John the Ripperのインストールディレクトリ(例: /usr/share/john//opt/john/ など)内を探してみてください。通常、JtRの実行ファイルと同じディレクトリか、run サブディレクトリなどに配置されています。

# pcap2johnの場所を探す例
find /usr -name pcap2john\*
⚠️ 注意: pcap2john は主にスクリプト (pcap2john.py) として提供されますが、特定のプロトコルに特化したコンパイル済みのツール (例: wpapcap2john, vncpcap2john など) も存在することがあります。pcap2john.py のドキュメントによると、これらの特化ツールが持つ機能は pcap2john.py には含まれていない場合があるため、目的によっては適切なツールを選択する必要があります。

基本的な使い方 🚀

pcap2johnの基本的な使い方は非常にシンプルです。入力としてPCAPファイルを指定し、抽出されたハッシュを標準出力に出力します。通常、この出力をファイルにリダイレクトして保存し、後でJohn the Ripperに渡します。

基本的なコマンド形式は以下の通りです。

pcap2john [pcapファイル名] > [出力ハッシュファイル名]

または、Pythonスクリプトとして直接実行する場合:

python /path/to/pcap2john.py [pcapファイル名] > [出力ハッシュファイル名]

例:

capture.pcapというファイルからハッシュを抽出し、hashes.txtというファイルに保存する場合:

pcap2john capture.pcap > hashes.txt

このコマンドを実行すると、capture.pcap内にJohn the Ripperが解析可能な形式のデータ(例えばWPAハンドシェイク情報など)が見つかれば、それがhashes.txtに出力されます。何も見つからなければ、ファイルは空のままか、何も出力されない場合があります。

出力されたhashes.txtファイルは、以下のようにJohn the Ripperで解析できます。

john --wordlist=/path/to/wordlist.txt hashes.txt

--wordlistオプションで辞書ファイルを指定し、辞書攻撃を試みます。John the Ripperはhashes.txtの内容から自動的にハッシュの種類を判別しようとします。

サポートされているプロトコルと形式 📡

pcap2johnは、様々なネットワークプロトコルから認証情報を抽出できます。以下は、一般的にサポートされている(または関連ツールでサポートされている)プロトコルや形式の例です。

  • WPA/WPA2 (PSK): Wi-Fiの事前共有鍵 (PSK) 認証で使用される4ウェイハンドシェイク。これが最も一般的な使用例の一つです。完全なハンドシェイクが含まれている必要があります。
  • Kerberos: TGS-REP, AS-REPなどのKerberos認証メッセージ。
  • TCP-MD5 Signature (RFC 2385): BGPセッション保護などで使われるTCPオプションのMD5署名。
  • RADIUS: Challenge/Response認証情報など。
  • VNC (Virtual Network Computing): RFBプロトコルの認証ハンドシェイク。 (vncpcap2johnが担当する場合あり)
  • SIP (Session Initiation Protocol): Digest認証情報。 (SIPdumpが担当する場合あり)
  • EAP-MD5: Challenge/Response認証情報。 (eapmd5tojohnが担当する場合あり)

ただし、pcap2john.py自体が全てのプロトコルを直接サポートしているわけではなく、特定のプロトコルは専用のツール(例: wpapcap2john)で処理される場合があることに注意が必要です。John the Ripper Jumboに含まれるツール群を確認することをお勧めします。

例えば、Kali Linuxに含まれるJohn the Ripperのツールの一部は以下のコマンドで確認できます。

ls /usr/share/john/*2john*  # パスは環境により異なる場合があります

使用例:WPA/WPA2ハンドシェイクのクラッキング 📶

ステップ1: WPA/WPA2ハンドシェイクのキャプチャ

まず、ターゲットとなるWi-Fiネットワーク上で、クライアントデバイスがアクセスポイントに接続する際の4ウェイハンドシェイクをキャプチャする必要があります。このハンドシェイクには、パスワードから派生した情報が含まれており、これを解析することでパスワードのクラッキングを試みます。

ハンドシェイクのキャプチャには、Aircrack-ngスイートに含まれるairodump-ngなどのツールがよく使われます。

以下はairodump-ngを使用したキャプチャの簡単な手順例です。

  1. ワイヤレスインターフェースをモニターモードにする:
    sudo airmon-ng start wlan0
    (wlan0は実際のインターフェース名に置き換えてください。wlan0monのような名前の新しいインターフェースが作成されることがあります。)
  2. ターゲットAPのチャンネルとBSSIDを確認する:
    sudo airodump-ng wlan0mon
    これにより、周辺のアクセスポイントとそのチャンネル、BSSID(MACアドレス)が表示されます。
  3. ターゲットAPに絞ってパケットをキャプチャする:
    sudo airodump-ng --bssid [APのBSSID] -c [チャンネル番号] -w capture wlan0mon
    ([APのBSSID][チャンネル番号]を特定の値に置き換えます。-w captureはキャプチャファイルをcapture-01.capのような名前で保存します。)
  4. ハンドシェイクを待つ: クライアントがターゲットAPに接続(または再接続)するのを待ちます。airodump-ngの画面右上に「WPA handshake: [BSSID]」と表示されれば、ハンドシェイクのキャプチャに成功です。成功したらCtrl+Cでキャプチャを停止します。

💡 4ウェイハンドシェイクとは?

WPA/WPA2-PSKでクライアントがアクセスポイントに接続する際に行われる4つのメッセージ交換のことです。このプロセスを通じて、接続に使用される一時的な暗号鍵 (PTK) が生成・交換されます。このハンドシェイクには、パスワード (PSK) とAP/クライアント固有の情報から計算される値が含まれており、オフラインでのパスワード推測(クラッキング)に利用されます。

ステップ2: pcap2johnでハッシュを抽出

ハンドシェイクが含まれたPCAPファイル(例: capture-01.cap)ができたら、pcap2johnを使用してJohn the Ripperが扱える形式に変換します。

pcap2john capture-01.cap > wpa_hash.txt

成功すると、wpa_hash.txtファイルには以下のような形式の文字列が出力されます(内容は実際のデータによって異なります)。

TargetNetwork:$wpapsk$TargetNetwork#CapturedData...

この文字列には、ネットワーク名(SSID)、ハンドシェイクのデータなどが含まれています。

⚠️ 注意: ハンドシェイクが不完全な場合(4つのパケットが揃っていないなど)、pcap2johnはハッシュを出力しないことがあります。キャプチャをやり直すか、別のキャプチャファイルを使用する必要があります。

ステップ3: John the Ripperでクラック

最後に、抽出したハッシュファイル (wpa_hash.txt) をJohn the Ripperに渡してクラッキングを開始します。

john --wordlist=/usr/share/wordlists/rockyou.txt wpa_hash.txt

/usr/share/wordlists/rockyou.txtは有名な辞書ファイルの一つですが、環境によってはパスが異なるか、インストールされていない場合があります。適切な辞書ファイルを指定してください。

John the Ripperは辞書ファイル内の単語を一つずつ試していき、もしパスワードが見つかれば画面に表示します。WPA/WPA2のクラックは計算量が多く、パスワードの複雑さや辞書ファイルの質、CPU/GPUの性能によって時間がかかることがあります。

クラックに成功したパスワードは、後で以下のコマンドで確認できます。

john --show wpa_hash.txt

その他の利用例 🧩

pcap2johnはWPA/WPA2以外にも利用できます。

  • Kerberosトラフィック: Active Directory環境などでキャプチャされたKerberos認証トラフィック (AS-REP, TGS-REP) から、パスワードハッシュ(またはクラック可能なデータ)を抽出できます。これは、サービスアカウントのパスワードなどをテストする際に役立ちます。
  • TCP-MD5セッション: BGPなど、TCP-MD5署名オプションを使用しているプロトコルのトラフィックから、MD5の計算に必要な情報を抽出し、設定されたパスワード(キー)のクラックを試みることができます。

これらの場合も、基本的な使い方は同じです。関連するトラフィックが含まれたPCAPファイルをpcap2johnに渡し、出力されたハッシュをJohn the Ripperで解析します。John the Ripperはハッシュの形式を自動で認識しようとしますが、必要に応じて--format=krb5tgs--format=tcp_md5のように明示的に指定することも可能です。

オプションについて ⚙️

pcap2john自体には、多くのコマンドラインオプションは用意されていないことが多いです。主な機能はPCAPファイルを読み込み、標準出力にハッシュを出力することに特化しています。

ヘルプオプション(-h--help)が存在するかどうかは、スクリプトの実装によります。試してみると簡単な使い方が表示されるかもしれません。

pcap2john --help

多くの場合、特別なオプションを指定する必要はなく、基本的な使い方(入力ファイルと出力リダイレクト)で十分です。

ただし、John the Ripperスイートには多数の*2johnツールがあり、それらの中には特定のファイル形式(ZIP、PDF、SSHキーなど)を扱うためのものや、特定のオプションを持つものもあります(例: zip2john-oオプションでZIP内の特定ファイルを指定するなど)。pcap2johnに関しては、通常はシンプルに使うことが想定されています。

トラブルシューティングと注意点 😥

ハッシュが出力されない

  • 原因: PCAPファイル内にpcap2johnが認識できる形式のデータ(例: 完全なWPAハンドシェイク)が含まれていない。
  • 対策:
    • WPA/WPA2の場合、ハンドシェイクが完全にキャプチャされているか確認する。WiresharkなどのツールでPCAPファイルを開き、EAPOLキーメッセージが4つ揃っているか確認できます。
    • キャプチャをやり直す。クライアントが接続する瞬間を確実に捉える必要があります。
    • 対象のプロトコルがpcap2johnまたは関連ツールでサポートされているか確認する。

John the Ripperで “No password hashes left to crack” と表示される

  • 原因: pcap2johnが出力したハッシュ形式をJohn the Ripperが正しく認識できていない、またはサポートしていない。あるいは、既知のハッシュ形式ではない可能性がある。
  • 対策:
    • John the Ripperのバージョンが最新か、Jumboバージョンを使用しているか確認する。
    • --format=[形式名]オプションでハッシュ形式を明示的に指定してみる(例: --format=wpapsk)。
    • pcap2johnが出力したハッシュ文字列が破損していないか確認する。

倫理的な考慮事項

🚨 重要: pcap2johnやJohn the Ripperのようなツールは、セキュリティテストやパスワードリカバリの目的で設計されていますが、許可なく他人のネットワークやシステムに対して使用することは違法であり、非倫理的です。 必ず、自身が管理するネットワークや、明示的な許可を得たネットワークに対してのみ使用してください。不正アクセスは重大な犯罪となる可能性があります。

まとめ ✨

pcap2johnは、ネットワークキャプチャファイル (PCAP) からパスワードクラック用のハッシュデータを抽出するための、John the Ripperスイートの便利なユーティリティです。特にWPA/WPA2ハンドシェイクからのハッシュ抽出によく用いられます。

使い方はシンプルで、PCAPファイルを入力として与え、標準出力に出力されるハッシュをファイルに保存し、John the Ripperで解析します。

適切なキャプチャと組み合わせることで、ネットワークセキュリティのテストや監査において強力なツールとなりますが、その使用には倫理的な配慮と法的な許可が不可欠です。正しく理解し、責任を持って使用しましょう。🛡️

コメント

タイトルとURLをコピーしました