John the Ripper と他のツールとの統合

Kali LinuxBeginner
オンラインで実践に進む

はじめに

John the Ripper (JtR) は、強力で人気のあるオープンソースのパスワードクラッキングツールです。単体でも非常に効果的ですが、他のツールと連携した、より広範なセキュリティテストワークフローに統合することで、その真のポテンシャルが引き出されます。スクリプティングによる自動化は、その効率をさらに向上させ、パスワード監査およびリカバリタスクを効率化し、繰り返し実行可能にします。

この実験では、John the Ripper を他の一般的なセキュリティツールと統合する方法を探ります。Hashcat、Metasploit、Aircrack-ng と JtR を使用するための概念的なワークフローをカバーします。その後、JtR クラッキングセッションを自動化するための簡単な bash スクリプトを作成することで、実践的な経験を積みます。

John the Ripper と Hashcat の連携 (概念)

このステップでは、John the Ripper と Hashcat の概念的な統合について説明します。どちらも主要なパスワードクラッキングツールですが、それぞれ異なる強みを持っています。John the Ripper は、CPU ベースのクラッキングパフォーマンスと、多くのハッシュタイプを自動的に検出する能力で知られています。一方、Hashcat は、GPU ベースの攻撃に優れる、世界最速のパスワードクラッカーです。

これらはしばしば代替手段として見られますが、ワークフローで連携して使用することも可能です。例えば、John the Ripper のユーティリティである unshadow を使用して、Linux システムからパスワードファイルとシャドウファイルを抽出し、結合することができます。

ワークフロー例:

  1. ターゲットの Linux システムから /etc/passwd および /etc/shadow ファイルを取得します。
  2. JtR の unshadow ユーティリティを使用して、これらを結合し、ユーザー名とハッシュを含む単一のファイルを作成します:unshadow passwd shadow > hashes_for_cracking.txt
  3. 生成された hashes_for_cracking.txt ファイルを Hashcat に入力し、その強力な GPU クラッキング能力を活用します。

このステップは、潜在的な相乗効果を理解してもらうための純粋に概念的なものです。ここでは実行するコマンドはありません。重要なのは、一方のツールのユーティリティを使用して、もう一方のツールのためのデータを準備できるということです。

John the Ripper と Metasploit の連携 (概念)

このステップでは、John the Ripper と Metasploit Framework の概念的な統合を探ります。Metasploit は、脆弱性を発見、悪用、検証するために使用される強力なペネトレーションテストフレームワークです。一般的なポストエクスプロイトタスクは、侵害されたシステムからパスワードハッシュをダンプすることです。ここで JtR がワークフローの重要な部分となります。

ワークフロー例:

  1. 攻撃者は Metasploit のエクスプロイトを使用してシステムへの初期アクセスを獲得します。
  2. Meterpreter セッション内のポストエクスプロイトモジュール(例:run post/windows/gather/hashdump)を使用して、攻撃者はパスワードハッシュ(例:Windows SAM データベースからの NTLM ハッシュ)をダンプします。
  3. 攻撃者はこれらのハッシュをローカルマシン上のファイルに保存します。
  4. その後、John the Ripper を使用して、単語リスト攻撃やブルートフォースなどのさまざまなテクニックを用いて、これらのハッシュをオフラインでクラックします。
  5. パスワードがクラックされると、権限昇格やネットワーク内の他のシステムへのピボットに使用される可能性があり、その際には psexec のような他の Metasploit モジュールが使用されることもあります。

この統合は、Metasploit がアクセスに使用され、JtR がオフラインの認証情報クラッキングに使用される典型的な攻撃ライフサイクルを示しています。このステップは概念的なものであり、実行する必要のあるコマンドはありません。

John the Ripper と Aircrack-ng の連携 (概念)

このステップでは、John the Ripper を Aircrack-ng スイートと組み合わせて Wi-Fi パスワードをクラックする方法について説明します。Aircrack-ng は、ワイヤレスネットワークを監査するためのツールのセットです。WPA/WPA2 監査の重要な部分は、クライアントがアクセスポイントに接続する際に発生する 4 ウェイハンドシェイクをキャプチャすることです。このハンドシェイクには、ネットワークの事前共有キー (PSK) を明らかにするためにクラックできるハッシュが含まれています。

ワークフロー例:

  1. Aircrack-ng スイートのツール(例:airodump-ng)を使用してワイヤレストラフィックを監視し、WPA/WPA2 ハンドシェイクをキャプチャします。これは通常 .cap ファイルとして保存されます。
  2. .cap ファイル自体はハッシュではありません。パスワードクラッカーが理解できる形式に変換する必要があります。この変換には aircrack-nghcxpcaptool のような他のツールを使用できます。
  3. 例えば、aircrack-ng-J オプションと共に使用して、Hashcat 互換ファイル (.hccapx) を作成できます。これは John the Ripper も処理できます。コマンドは次のようになります:aircrack-ng your_capture.cap -J output_hash_file
  4. 最後に、John the Ripper を使用して、単語リストでハッシュファイルをクラックします:john --wordlist=passwords.txt output_hash_file.hccapx

このワークフローは、あるドメイン(Wi-Fi)に特化したツールが、JtR のような汎用ツールが処理するための生の材料をどのように提供できるかを示しています。このステップは概念的なものであり、コマンドを実行する必要はありません。

自動化のための John the Ripper スクリプト

このステップでは、理論から実践に移ります。John the Ripper を「統合」する最も一般的な方法は、コマンドラインインターフェースをスクリプトでラップすることです。これにより、繰り返しタスクを自動化し、より大きなツールチェーンに組み込むことができます。ここでは、単語リスト攻撃を実行し、その結果を表示する簡単な bash スクリプトを作成します。

まず、自動化スクリプトを作成します。nano エディタを使用して、現在のディレクトリ ~/projectcrack.sh という名前の新しいファイルを作成します。

nano crack.sh

次に、ファイルに以下の内容を追加します。このスクリプトは、ハッシュファイルと単語リストを入力として受け取り、John を実行し、クラックされたパスワードを表示します。

#!/bin/bash

if [ "$#" -ne 2 ]; then
  echo "Usage: $0 <hash_file> <wordlist_file>"
  exit 1
fi

HASH_FILE=$1
WORDLIST=$2

echo "[-] Starting John the Ripper..."
john --wordlist="$WORDLIST" "$HASH_FILE" > /dev/null 2>&1

echo "[+] Cracking attempt finished."
echo "[+] Showing cracked passwords:"
john --show "$HASH_FILE"

ファイルを保存し、Ctrl+XYEnter の順に押して nano を終了します。

次に、スクリプトを実行可能にする必要があります。

chmod +x crack.sh

次に、テスト用の簡単な単語リストファイルを作成します。この実験のセットアップスクリプトは、サンプルハッシュを含む hashes.txt という名前のファイルを作成済みです。このハッシュのパスワードは password123 です。

echo "password123" > wordlist.txt

最後に、自動化スクリプトを実行します。hashes.txt ファイルと新しく作成した wordlist.txt を指定します。

./crack.sh hashes.txt wordlist.txt

スクリプトが正常に John を実行し、パスワードを見つけたことを示す以下の出力が表示されるはずです。

[-] Starting John the Ripper...
[+] Cracking attempt finished.
[+] Showing cracked passwords:
user1:password123

1 password hash cracked, 0 left

これで、John the Ripper を自動化するための簡単なスクリプトを正常に作成しました!

John the Ripper API の理解 (該当する場合)

この最終ステップでは、「John the Ripper API」という概念を明確にします。開発者が API (Application Programming Interface) について話すとき、多くの場合、Web サービスのための REST API や、特定のプログラミング言語のための十分に文書化されたライブラリを意味します。

John the Ripper には、この意味での正式で安定した公開 API はありません。その主なインターフェースはコマンドライン (CLI) であり、これは強力で柔軟性があり、前のステップで実証したように、対話やスクリプト作成のために設計されています。

JtR のコア機能は、しばしば libjohn と呼ばれるライブラリに含まれています。技術的には、高度な C プログラマーがこのライブラリにリンクしてカスタムアプリケーションを構築することは可能です。しかし、これは複雑なタスクであり、一般的なユースケースではなく、公開 API としてサポートされていません。

したがって、ほとんどのユーザーや統合においては、「JtR API を使用する」とは以下のことを意味します。

  • スクリプトから JtR 実行可能ファイルを呼び出す (例:Bash, Python, Perl)。
  • ツールのコマンドライン出力を解析する
  • ハッシュファイル入力や、クラックされたパスワードが保存される john.pot ファイルなどのファイルとやり取りする

重要な点は、John the Ripper との統合および自動化は、従来のプログラミングライブラリや Web API ではなく、CLI スクリプティングを通じて達成されるということです。

まとめ

この実験では、John the Ripper の機能を他のツールと統合し、その実行を自動化することによって強化する方法を探りました。

JtR を他の主要なセキュリティツールと組み合わせるための概念的なワークフローを学びました。

  • JtR のユーティリティを使用して、Hashcat の GPU ベースのクラッキング用にハッシュを準備する。
  • Metasploit Framework を使用したポストエクスプロイテーション中に取得したハッシュをクラックするために JtR を使用する。
  • Aircrack-ng スイートによってキャプチャされた Wi-Fi ハンドシェイクをクラックするために JtR を使用する。

その後、パスワードクラッキングセッションを自動化するための bash スクリプトを作成および実行することで理論を実践に移しました。これは、JtR をより大きなワークフローに統合するための主要な方法です。最後に、JtR の「API」は強力なコマンドラインインターフェースであり、その柔軟性と統合の可能性の鍵であることを明確にしました。