John the Ripper (JtR) は、パスワードのセキュリティ監査やリカバリのための強力なオープンソースツールです。
JtRは様々なハッシュ化されたパスワードをクラック(解読)しようと試みます。
クラックに成功すると、元のパスワードとそれに対応するハッシュが特定のファイル(通常は john.pot
)に保存されます。
このブログ記事では、John the Ripperがクラックに成功した後の情報、特に「生」のハッシュ情報(raw hash)をどのように扱えるか、その基本的な使い方と活用方法について解説します。
⚠️注意: パスワードクラッキングツールの使用は、許可されたシステムや自身のデータに対してのみ行うべきです。不正アクセスは法律で禁止されています。
John the Ripper とは? 🤔
John the Ripperは、Solar Designer氏によって開発された、非常に人気のあるパスワードクラッカーです。 主な目的は、システム管理者が弱いパスワードを検出したり、忘れてしまったパスワードを回復したりすることです。 多くのオペレーティングシステム(Linux, macOS, Windowsなど)で動作し、多種多様なハッシュ形式(Unix系のcrypt(3)、Windows LM/NTLM、MD5、SHA-1、SHA-256、bcryptなど)に対応しています。 特に「Jumbo」と呼ばれるバージョンでは、さらに数百種類のハッシュや暗号形式(ZIP、RAR、SSH秘密鍵、Office文書など)の解析が可能です。
JtRは主に以下の3つのクラッキングモードを持っています:
- シングルクラックモード (Single Crack Mode): ユーザー名などの情報からパスワードを推測する高速なモード。
- ワードリストモード (Wordlist Mode): パスワード辞書(単語リスト)を使ってハッシュとの照合を試みるモード。ルールを適用して単語を変化させることも可能。
- インクリメンタルモード (Incremental Mode): 全ての可能な文字の組み合わせを試す総当たり攻撃(ブルートフォース)モード。
クラックが成功すると、結果は通常 $JOHN/john.pot
というファイルに記録されます。$JOHN
はJohn the Ripperのホームディレクトリを指します。
クラックされた情報の確認方法 🧐
John the Ripperでパスワードクラックを実行した後、どのパスワードがクラックされたかを確認するには --show
オプションを使用します。
基本的なコマンドは以下の通りです。
john --show [ハッシュファイル名]
例えば、mypasswords.txt
というファイルに含まれるハッシュをクラックした場合、クラック済みのパスワードを表示するには次のように実行します。
john --show mypasswords.txt
このコマンドは john.pot
ファイルを参照し、指定されたハッシュファイルに含まれるハッシュのうち、既にクラックされているものを「ユーザー名:平文パスワード:付加情報」のような形式で表示します。
john.pot
ファイルには、クラックされたハッシュとその平文パスワードがコロン(:)区切りで保存されています。JtRは次回実行時にこのファイルをチェックし、既にクラック済みのハッシュは再度試行しません。
特定のハッシュ形式のみを表示したい場合は、--format
オプションを追加します。例えば、raw-md5形式のハッシュのみを表示するには:
john --show --format=raw-md5 mypasswords.txt
john.pot ファイルの中身と「生ハッシュ」📝
john.pot
ファイル(Potfileとも呼ばれます)は、John the Ripperの作業成果を記録する重要なファイルです。
このファイルには、クラックに成功したハッシュとその元の平文パスワードのペアが保存されています。
ファイル形式は非常にシンプルで、通常は以下のようになっています。
ハッシュ文字列:平文パスワード
例:
$LM$c71766f7209bd13a9f84748515345ae5:PASSWORD
$NT$8846f7eaee8fb117ad06bdd830b7586c:PASSWORD
$dynamic_0$5f4dcc3b5aa765d61d8327deb882cf99:password123
user1:$1$🧂SALT$H3.g64kImNcKLpQE7R6y0/:secret
ここでの「ハッシュ文字列」が、John the Ripperが処理した元のハッシュデータ、つまり「生ハッシュ (raw hash)」に相当します。
ただし、John the Ripperは内部で扱いやすいように、特定のプレフィックス(例: $LM$
, $NT$
, $1$
など)を付けてフォーマットを識別している場合があります。
この john.pot
ファイルから情報を抽出することで、どのハッシュがどのパスワードに対応していたかを知ることができます。
この情報は、セキュリティ監査レポートの作成や、他のツールでのさらなる分析に利用できます。
john.pot
ファイルには機密性の高い平文パスワードが含まれるため、アクセス権限を適切に管理し、不要になった場合は安全に削除することが推奨されます。
生ハッシュ情報の活用例 ✨
john.pot
ファイルから抽出した生ハッシュと平文パスワードの情報は、様々な形で活用できます。
1. セキュリティ監査レポート
クラックされたパスワードのリストを作成し、どのユーザーアカウントが脆弱なパスワードを使用していたかを報告します。 これにより、パスワードポリシーの見直しやユーザーへの注意喚起を行うことができます。
2. 他ツールとの連携
john.pot
ファイルの形式は比較的シンプルなため、スクリプト(Python, Perl, Bashなど)を使って解析し、他のセキュリティツール(例えば、脆弱性管理システムやSIEM)に取り込むことが可能です。
これにより、組織全体のセキュリティ状況の把握に役立ちます。
3. パスワードパターンの分析
クラックされたパスワードの傾向(よく使われる単語、数字のパターン、記号の使用頻度など)を分析することで、将来的なパスワードポリシーの改善に繋げることができます。
4. さらなる解析のためのデータ準備
john.pot
から特定の形式のハッシュだけを抽出したり、特定のユーザーに関連する情報だけを取り出したりして、より詳細な分析を行うためのデータセットを作成できます。
例えば、特定の部署のユーザーのパスワード強度を重点的に分析するなどです。
簡単な例として、Bashコマンドを使って john.pot
から特定のハッシュ形式(例:NTLMハッシュ)の平文パスワードだけを抽出する方法を示します。
# NTLMハッシュ ($NT$) を含む行を探し、コロンの後ろ(平文パスワード)を表示
grep '^\$NT\$' $JOHN/john.pot | cut -d ':' -f 2-
このように、基本的なコマンドラインツールやスクリプト言語を組み合わせることで、john.pot
ファイルから必要な情報を効率的に抽出・加工できます。
注意点とベストプラクティス ⚠️
- 法的・倫理的側面: 繰り返しになりますが、John the Ripperの使用は許可された範囲内に留めてください。他人のパスワードを不正に取得・利用することは重大な犯罪です。
john.pot
の管理: このファイルには機密情報が含まれるため、厳重に管理してください。不要になったら確実に削除するか、暗号化して保管するなどの対策が必要です。- パフォーマンス: 大量のハッシュを処理する場合、
john.pot
ファイルも大きくなる可能性があります。ディスク容量やパフォーマンスへの影響を考慮してください。 - フォーマットの多様性: John the Ripper (特にJumbo版) は非常に多くのハッシュ形式をサポートしています。
john.pot
ファイルには様々な形式のハッシュが混在する可能性があることを念頭に置いて処理を行う必要があります。 - セッション管理: JtRは
--session=NAME
オプションでセッション名を指定できます。これにより、複数のクラック作業を並行して行ったり、特定の作業状態(NAME.rec
ファイルに保存される)を後で復元(--restore=NAME
)したりできます。john.pot
ファイルは通常共有されますが、セッションごとにログファイル (NAME.log
) などが生成されます。
まとめ 🚀
John the Ripperは強力なパスワードクラッキングツールであり、クラックに成功した結果は john.pot
ファイルに蓄積されます。
--show
オプションを使うことで、どのハッシュがクラックされたかを簡単に確認できます。
john.pot
ファイルに含まれる「生ハッシュ」と平文パスワードのペアは、セキュリティ監査やさらなる分析のための貴重な情報源となります。
ただし、この情報の取り扱いには十分な注意が必要です。ツールを倫理的かつ合法的に使用し、機密情報の管理を徹底することが重要です。 💪
参考情報 (最低限)
- John the Ripper 公式サイト: https://www.openwall.com/john/ – ツールのダウンロード、ドキュメントなど。
- John the Ripper Wiki (GitHub): https://github.com/openwall/john/wiki – より詳細な情報やコミュニティによる情報。
コメント