John the Ripper ユーティリティ: eapmd5tojohn の徹底解説 🕵️‍♂️

セキュリティツール

EAP-MD5 チャレンジ/レスポンスからパスワードハッシュを抽出し、John the Ripper で解析する方法

はじめに: eapmd5tojohn とは何か? 🤔

eapmd5tojohn は、有名なパスワードクラッキングツールである John the Ripper (JtR) スイートに含まれるユーティリティの一つです。このツールの主な目的は、EAP-MD5 (Extensible Authentication Protocol – Message Digest 5) 認証プロトコルで使用されるチャレンジ/レスポンスのペアを、John the Ripper が解析(クラッキング)できる形式のハッシュに変換することです。

EAP-MD5 は、特に初期の無線 LAN (Wi-Fi) 環境や PPP (Point-to-Point Protocol) 接続などで利用されていた認証方式ですが、現在ではセキュリティ上の脆弱性が指摘されており、より安全なプロトコル(EAP-TLS, PEAP, EAP-TTLS など)への移行が強く推奨されています。しかし、古いシステムや特定の環境ではまだ使用されている可能性があり、セキュリティ監査やペネトレーションテストの文脈で、設定されたパスワードの強度を評価するために eapmd5tojohn が必要になることがあります。

⚠️ 重要: パスワードクラッキングツールの使用は、倫理的かつ法的な配慮が必要です。必ず、自身が管理権限を持つシステム、または明示的な許可を得たシステムに対してのみ使用してください。不正アクセスや許可のないシステムへの侵入は法律で禁止されています。

このブログ記事では、eapmd5tojohn の基本的な使い方、必要なデータ、変換プロセス、そして変換後のハッシュを John the Ripper で実際に解析する手順について、詳しく解説していきます。

EAP-MD5認証の仕組み (簡単に) 🔐

eapmd5tojohn を理解するために、まず EAP-MD5 認証がどのように機能するかを簡単に見てみましょう。EAP-MD5 はチャレンジ/レスポンス型の認証方式です。

  1. ID要求/応答: 認証サーバー (Authenticator) はクライアント (Supplicant) に対し、ユーザーIDを要求します。クライアントはユーザー名 (Username) を返します。
  2. チャレンジ送信: 認証サーバーは、ランダムなデータである「チャレンジ (Challenge)」を生成し、クライアントに送信します。
  3. レスポンス計算: クライアントは、受け取ったチャレンジ、自身のユーザーID、そしてユーザーのパスワードを使用して、MD5ハッシュ関数を用いて「レスポンス (Response)」を計算します。具体的には、MD5(ID + Password + Challenge) のような計算が行われます(IDは通常1バイトの識別子)。
  4. レスポンス送信: クライアントは計算したレスポンスを認証サーバーに送り返します。
  5. 検証: 認証サーバーも、データベースに保存されているユーザーのパスワード(またはパスワードハッシュ)と、送信したチャレンジ、クライアントから受け取ったユーザーIDを使って、同様に期待されるレスポンスを計算します。クライアントから送られてきたレスポンスと、サーバー側で計算した期待レスポンスが一致すれば、認証成功となります。

このプロセスで重要なのは、ネットワーク上を流れるのはチャレンジとレスポンスであり、パスワードそのものは直接送信されない点です。しかし、MD5 自体の脆弱性や、チャレンジとレスポンス、ユーザー名が分かれば、オフラインでパスワードの推測(クラッキング)が可能になるという弱点があります。eapmd5tojohn は、このオフラインクラッキングを行うために必要な情報を抽出・整形する役割を担います。

前提条件: 何が必要か? 🛠️

eapmd5tojohn を使用する前に、以下のものが必要です。

  • John the Ripper のインストール: eapmd5tojohn は John the Ripper スイートの一部です。Kali Linux などのペネトレーションテスト用ディストリビューションには通常プリインストールされていますが、そうでない場合は 公式サイト からダウンロードしてインストールする必要があります。多くの Linux ディストリビューションでは、パッケージマネージャ (apt, yum, pacman など) を使ってインストールできます (例: sudo apt install john)。
  • EAP-MD5 のチャレンジ/レスポンスデータ: これが eapmd5tojohn の主要な入力となります。このデータは通常、ネットワークトラフィックをキャプチャすることによって得られます。具体的には、認証プロセス中の EAP パケットを記録した PCAP (Packet Capture) ファイルが必要です。

EAP-MD5 データのキャプチャ方法 (概要) 📡

EAP-MD5 のチャレンジ/レスポンスデータを含む PCAP ファイルを取得するには、ネットワーク監視ツールが必要です。無線 LAN 環境であれば、airodump-ng (aircrack-ng スイートの一部) や Kismet などがよく使われます。有線 LAN や PPP 接続の場合は、Wiresharktcpdump を使用してパケットをキャプチャします。

キャプチャする際には、クライアントが認証サーバーに接続しようとする際の EAP パケットを確実に捉える必要があります。具体的には、以下の EAP パケットタイプが含まれていることが理想です。

  • EAP-Request/Identity
  • EAP-Response/Identity (ユーザー名が含まれる)
  • EAP-Request/MD5-Challenge (チャレンジが含まれる)
  • EAP-Response/MD5-Challenge (レスポンスが含まれる)
  • EAP-Success または EAP-Failure (認証結果)

これらのパケットが記録された PCAP ファイル (例: capture.pcap) を用意します。

💡 ヒント: Wireshark を使用する場合、表示フィルタに eapolppp.protocol == 0xc223 (EAP over PPP) などを適用すると、関連するパケットを見つけやすくなります。

eapmd5tojohn の使い方 🚀

eapmd5tojohn の使い方は非常にシンプルです。基本的なコマンド構文は以下の通りです。

eapmd5tojohn -r <pcapファイル>

ここで、<pcapファイル> には、EAP-MD5 の認証データが含まれる PCAP ファイルのパスを指定します。

例えば、capture.pcap というファイルに必要なデータが含まれている場合、コマンドは次のようになります。

eapmd5tojohn -r capture.pcap

このコマンドを実行すると、eapmd5tojohn は指定された PCAP ファイルを解析し、EAP-MD5 のチャレンジ、レスポンス、および関連するユーザー名(Identity)を抽出します。そして、それらを John the Ripper が理解できる形式のハッシュ文字列に変換して、標準出力に表示します。

出力形式

eapmd5tojohn が出力するハッシュ形式は、一般的に以下のようになります(John the Ripper のバージョンや内部フォーマットによって若干異なる場合があります)。

ユーザー名:$netmd5$チャレンジ$レスポンス
  • ユーザー名: EAP-Response/Identity パケットから取得されたユーザー名です。
  • $netmd5$: このハッシュが EAP-MD5 (または類似のネットワーク MD5 チャレンジ/レスポンス) タイプであることを示す識別子です。John the Ripper はこれを見て適切な解析アルゴリズムを選択します。
  • チャレンジ: EAP-Request/MD5-Challenge パケットから抽出されたチャレンジ値(通常は16進数文字列)。
  • レスポンス: EAP-Response/MD5-Challenge パケットから抽出されたレスポンス値(通常は16進数文字列)。

例として、ユーザー名が “user1″、チャレンジが “112233445566778899aabbccddeeff00″、レスポンスが “fedcba9876543210fedcba9876543210” であった場合、出力は以下のようになります(実際のチャレンジ/レスポンス長は異なる場合があります)。

user1:$netmd5$112233445566778899aabbccddeeff00$fedcba9876543210fedcba9876543210

この出力されたハッシュ文字列をファイルに保存し、John the Ripper の入力として使用します。例えば、出力を eap_hashes.txt というファイルにリダイレクトするには、次のようにします。

eapmd5tojohn -r capture.pcap > eap_hashes.txt

John the Ripper でのクラッキング 💥

eapmd5tojohn でハッシュファイル (例: eap_hashes.txt) を準備できたら、いよいよ John the Ripper を使ってパスワードのクラッキングを試みます。John the Ripper にはいくつかのクラッキングモードがありますが、ここでは最も一般的な「辞書攻撃 (Wordlist mode)」を例に説明します。

辞書攻撃では、パスワードとして使われそうな単語を集めたリスト(辞書ファイル、ワードリスト)を使用します。John the Ripper は辞書の各単語をパスワード候補として、EAP-MD5 の計算式(チャレンジとユーザー名を使用)に従ってレスポンスを計算し、eap_hashes.txt に記録されているレスポンスと比較します。一致すれば、その単語が元のパスワードであると特定できます。

基本的なコマンドは以下のようになります。

john --wordlist=<辞書ファイル> eap_hashes.txt

<辞書ファイル> には、使用するワードリストのパスを指定します。John the Ripper にはデフォルトのワードリスト (password.lst など) が付属していることが多いですが、より強力なクラッキングを行うためには、rockyou.txt のような大規模なワードリストを別途用意することが推奨されます。Kali Linux では /usr/share/wordlists/rockyou.txt.gz にあることが多いです(解凍して使用します)。

例えば、rockyou.txt を使用する場合のコマンドは次のようになります。

john --wordlist=/path/to/rockyou.txt eap_hashes.txt

John the Ripper は自動的に eap_hashes.txt 内のハッシュ形式 ($netmd5$) を認識し、適切なアルゴリズムでクラッキングを開始します。

クラッキングが成功すると、特定されたパスワードが画面に表示され、$JOHN/john.pot (~/.john/john.pot など) というファイルに記録されます。john.pot ファイルは、John the Ripper が過去にクラックしたハッシュとパスワードのペアを保存しておくためのもので、同じハッシュを再度クラッキングしようとするのを防ぎます。

クラッキングセッションの状況を確認するには、実行中に任意のキーを押します。中断するには Ctrl+C を押します(状態は .rec ファイルに保存され、後で john --restore で再開できます)。

クラッキングが完了した後、または中断後に、クラックされたパスワードを確認するには、以下のコマンドを使用します。

john --show eap_hashes.txt

これにより、eap_hashes.txt に含まれるハッシュのうち、パスワードが特定されたものが ハッシュ:パスワード の形式で表示されます。

その他のモード

John the Ripper には辞書攻撃以外にも、以下のようなモードがあります。

  • シングルクラックモード (Single Crack Mode): ハッシュファイル内のユーザー名やその他の情報からパスワード候補を生成して試すモード。最初に試されることが多い。
  • インクリメンタルモード (Incremental Mode): 文字の組み合わせを総当たりで試すモード。非常に時間がかかる可能性がありますが、辞書にないパスワードも見つけられる可能性があります。
  • ルールベース攻撃 (Rule-based Attack): 辞書の単語に特定のルール(大文字小文字変換、数字や記号の追加など)を適用して、より多くのパスワード候補を生成するモード。辞書攻撃と組み合わせて使われます (--rules オプション)。

特定のモードを指定せずに john eap_hashes.txt を実行すると、通常はシングルクラック、辞書(ルール付き)、インクリメンタルの順に試行されます。

実践的なシナリオ例 📝

ここで、簡単なシナリオを通して、一連の流れを見てみましょう。

  1. データ収集: あなたは、クライアントから許可を得て、古い無線 LAN のセキュリティ監査を行っています。airodump-ng を使用してネットワークトラフィックを監視し、EAP-MD5 認証を使用しているクライアントの接続試行をキャプチャしました。この結果、wifi-capture.pcap というファイルが得られました。
  2. ハッシュ抽出: eapmd5tojohn を使って、PCAP ファイルから John the Ripper 用のハッシュを抽出します。
    eapmd5tojohn -r wifi-capture.pcap > wifi_hashes.txt
    wifi_hashes.txt の中身は以下のようになっているとします。
    testuser:$netmd5$0102030405060708090a0b0c0d0e0f10$a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
  3. クラッキング準備: よく使われるパスワードリストである rockyou.txt を使用することにします。
  4. クラッキング実行: John the Ripper を辞書モードで実行します。
    john --wordlist=/usr/share/wordlists/rockyou.txt wifi_hashes.txt
    John the Ripper が処理を開始し、rockyou.txt の単語を次々と試していきます… しばらくすると、以下のような出力が表示されるかもしれません。
    Loaded 1 password hash (netmd5, EAP-MD5 C/R [MD5 128/128 SSE2 4x3])
    Press 'q' or Ctrl-C to abort, almost any other key for status
    password123      (testuser)
    1g 0:00:00:05 DONE (2025-03-31 05:10) 0.1886g/s 1234Kp/s 1234Kc/s 1234KC/s p@$$wOrd..secretword
    Session completed
    この出力は、”testuser” のパスワードが “password123” であることを見つけたことを示しています 🎉。
  5. 結果確認: 念のため、--show オプションで確認します。
    john --show wifi_hashes.txt
    出力:
    testuser:password123: ... (その他の情報) ...
    
    1 password hash cracked, 0 left
    これで、パスワード “password123” が特定できました。この結果を監査レポートに含め、より強力なパスワードと安全な認証プロトコルへの移行を推奨します。

制限事項と考慮点 🤔

  • EAP-MD5 の脆弱性: eapmd5tojohn が機能すること自体が、EAP-MD5 プロトコルの根本的な弱点を示しています。パスワード自体は送信されなくても、チャレンジとレスポンスからオフラインでパスワードを推測できてしまいます。これは、MD5 ハッシュ関数自体の問題(衝突耐性の低さなど)に加え、ソルト(ランダムな付加データ)が使われていない(または予測可能な方法で使われている)ことによります。現代的なセキュリティ基準では、EAP-MD5 の使用は避けるべきです。
  • PCAP ファイルの品質: eapmd5tojohn が正しく動作するためには、PCAP ファイル内に完全な EAP-MD5 交換(Identity, Challenge, Response)が含まれている必要があります。一部のパケットが欠落している場合、ハッシュを抽出できないことがあります。
  • John the Ripper の性能: パスワードクラッキングにかかる時間は、パスワードの複雑さ、使用する辞書のサイズ、そして実行するマシンの計算能力に大きく依存します。長く複雑なパスワードは、特定に膨大な時間がかかるか、現実的な時間内には見つけられない可能性があります。
  • 倫理と法律: 再度強調しますが、これらのツールと技術の使用は、正当な権限と目的(自己システムのテスト、許可されたペネトレーションテストなど)に限定されるべきです。

まとめ ✨

eapmd5tojohn は、ネットワークキャプチャファイル (PCAP) から EAP-MD5 認証のチャレンジ/レスポンスデータを抽出し、John the Ripper でパスワードクラッキングを行うためのハッシュ形式に変換する、シンプルかつ強力なユーティリティです。

このツールは、古いシステムや特定の構成におけるパスワード強度の評価に役立ちますが、その存在自体が EAP-MD5 プロトコルのセキュリティリスクを浮き彫りにしています。セキュリティ専門家やシステム管理者は、このツールを使って脆弱性を特定し、より安全な認証メカニズムへの移行を促進することが重要です。

John the Ripper とその関連ツールを効果的に使用することで、組織のセキュリティ体制を評価し、改善するための洞察を得ることができます。ただし、常に倫理的なガイドラインと法規制を遵守することを忘れないでください。🛡️

参考情報

コメント

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