はじめに
この実験では、John the Ripper (JtR) のパスワードクラッキングセッションを管理するための基本的な機能を探求します。効果的なセッション管理は、長時間にわたるクラッキングタスクにとって非常に重要であり、操作を一時停止および再開したり、予期せぬ中断から回復したり、進捗状況を追跡したりすることを可能にします。ここでは、クラッキングセッションを開始する方法、セッションを正常に一時停止および再開する方法、セッションファイルの役割を理解する方法、さらにはシミュレートされたクラッシュ後にセッションを回復する方法を学びます。最後に、整理された作業環境を維持するために、古いセッションファイルをクリーンアップする方法を学びます。
John the Ripper クラッキングセッションの開始
このステップでは、基本的な John the Ripper クラッキングセッションを開始します。プロセスを実証するために、簡単な MD5 ハッシュと小さな単語リストを使用します。John the Ripper は、クラッキングプロセスを開始すると自動的にセッションファイルを作成します。これはセッション管理に不可欠です。
まず、~/project ディレクトリに wordlist.txt という名前の簡単な単語リストファイルを作成しましょう。
echo -e "test\npassword\n123456\nadmin" > ~/project/wordlist.txt
次に、wordlist.txt を使用して passwords.txt ファイルをクラックするために John the Ripper を開始します。セッションを管理しやすくするために、--session オプションを使用してセッションに特定の名前を付けます。
john --format=raw-md5 --wordlist=~/project/wordlist.txt --session=my_first_session ~/project/passwords.txt
John the Ripper がクラッキングプロセスを開始するのを確認できるはずです。単語リストが小さく、正しいパスワードが含まれているため、パスワードはすぐに検出される可能性が高いです。
出力例:
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password (user1)
1g 0:00:00:00 DONE (2023-10-27 08:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed
セッションが完了したら、--show オプションを使用してクラックされたパスワードを表示できます。
john --show ~/project/passwords.txt
出力例:
user1:password
1 password hash cracked, 0 left
クラッキングセッションの一時停止と再開
このステップでは、進行中の John the Ripper セッションを一時停止し、その後再開する方法を学びます。これは、後で中断して続行する必要がある可能性のある長いクラッキングタスクに特に役立ちます。
まず、クラッキングプロセスに時間がかかるように、より大きなダミー単語リストを作成し、一時停止できるようにします。
seq 1000000 | sed "s/$/password/" > ~/project/large_wordlist.txt
次に、この大きな単語リストを使用して新しい John the Ripper セッションを開始します。このセッションを long_session と名付けます。
john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=long_session ~/project/passwords.txt
クラッキングが開始されたら、すぐに Ctrl+C を押してセッションを一時停止します。John the Ripper は現在の状態をセッションファイルに保存します。
Ctrl+C を押した後の出力例:
...
Press 'q' or Ctrl-C to abort, almost any other key for status
^C
Session aborted.
セッションを再開するには、セッション名とともに --restore オプションを使用します。
john --restore=long_session
John the Ripper は、中断した箇所から正確に処理を再開します。パスワードが見つかるまで実行させるか、再度 Ctrl+C を押して一時停止させることができます。
再開後の出力例:
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password (user1)
1g 0:00:00:00 DONE (2023-10-27 08:35) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed
セッションファイルの理解
このステップでは、John the Ripper によって作成されたセッションファイルを調べます。これらのファイルはクラッキングセッションの状態を保存し、一時停止、再開、およびリカバリを可能にします。
John the Ripper は通常、セッションファイルを ~/.john ディレクトリに保存します。このディレクトリの内容を一覧表示して、作成したセッションファイルを確認しましょう。
ls -l ~/.john/
my_first_session.rec や long_session.rec のようなファイルが表示されるはずです。.rec 拡張子はリカバリファイルを示します。
出力例:
total 16
-rw------- 1 labex labex 8192 Oct 27 08:30 my_first_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec
セッションファイルの内容を表示することもできますが、ほとんどはバイナリデータです。ただし、strings を使用して読み取り可能な文字列を抽出すると、セッション情報が表示される場合があります。
strings ~/.john/long_session.rec | head -n 10
出力例(異なる場合があります):
JtR session file
long_session
raw-md5
/home/labex/project/passwords.txt
/home/labex/project/large_wordlist.txt
これらのセッションファイルは、John the Ripper がクラッキングプロセスを管理およびリカバリする能力にとって非常に重要です。
クラッシュしたセッションからのリカバリ
このステップでは、予期せずクラッシュした可能性のある John the Ripper セッションをリカバリする方法を学びます。これは、一時停止したセッションを再開するのと似ており、John the Ripper は定期的に状態を自動保存します。
まず、クラッシュをシミュレートします。新しいセッションを開始しますが、今回は正常に一時停止するのではなく、プロセスを強制終了します。
john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=crash_test ~/project/passwords.txt &
末尾の & は、コマンドをバックグラウンドで実行することを意味します。これにより、プロセスを終了させることができます。
次に、john プロセスのプロセス ID(PID)を見つけます。
pgrep john
出力例(PID は異なります):
12345
次に、PID を使用して john プロセスを終了させます。YOUR_PID を実際に見つけた PID に置き換えてください。
kill YOUR_PID
Terminated または Killed のようなメッセージが表示される場合があります。これは予期しないクラッシュをシミュレートします。
次に、crash_test セッションの復元を試みます。John the Ripper は、強制終了後でも中断した箇所から処理を再開できるはずです。
john --restore=crash_test
出力例:
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password (user1)
1g 0:00:00:00 DONE (2023-10-27 08:40) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed
これは、John the Ripper の堅牢なリカバリ機能を示しており、長時間のクラッキング操作に不可欠です。
古いセッションファイルのクリーンアップ
このステップでは、古い John the Ripper セッションファイルをクリーンアップする方法を学びます。これらのファイルはリカバリに役立ちますが、特に多くのセッションを実行した場合、時間とともに蓄積する可能性があります。
特定のセッションファイルを削除するには、セッション名とともに --remove オプションを使用できます。ここでは my_first_session ファイルを削除してみましょう。
john --remove=my_first_session
削除を確認するプロンプトが表示されます。y と入力して Enter キーを押します。
出力例:
Remove session file ~/.john/my_first_session.rec? y
再度 ~/.john ディレクトリの内容を一覧表示して、ファイルが削除されたことを確認します。
ls -l ~/.john/
my_first_session.rec は表示されなくなるはずです。
出力例:
total 16
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:40 crash_test.rec
必要に応じて .rec ファイルを直接削除することもできますが、john --remove を使用するのが推奨される方法です。これにより、適切なクリーンアップが保証されます。
rm ~/.john/long_session.rec
rm ~/.john/crash_test.rec
最後に、すべてのセッションファイルが削除されたことを確認します。
ls -l ~/.john/
出力例:
total 0
セッションファイルを整理しておくことは、クラッキングタスクを効率的に管理するのに役立ちます。
まとめ
この実験では、John the Ripper のクラッキングセッションを管理する実践的な経験を積みました。セッションの開始方法、効果的な一時停止と再開方法、そしてクラッキングの進行状況を維持する上でセッションファイルが果たす重要な役割について学びました。さらに、予期せぬクラッシュからセッションをリカバリする方法を探り、John the Ripper の回復力の高さを強調しました。最後に、作業環境を整理するために古いセッションファイルをクリーンアップする練習をしました。これらのスキルは、John the Ripper を使用して長時間のパスワード監査またはクラッキングタスクを実行するすべての人にとって基本的です。


