John the Ripper の mailer ツール徹底解説!パスワードクラック完了をメールで受け取る方法

長時間かかるパスワード解析、終わったらすぐに知りたいですよね?

はじめに:John the Ripper と mailer の必要性

John the Ripper (通称 JtR) は、非常に強力で広く使われているオープンソースのパスワードクラッキングツールです。主にパスワードの強度テストや、忘れてしまったパスワードの回復(もちろん、適切な権限がある場合のみ!)、システム監査などに利用されます。

JtR は様々な暗号化アルゴリズムに対応しており、辞書攻撃、ブルートフォース攻撃(総当たり攻撃)、それらを組み合わせたハイブリッド攻撃など、多様な手法でパスワード解析を試みます。しかし、特に複雑なパスワードや強力なハッシュアルゴリズムの場合、解析には数時間、数日、あるいはそれ以上かかることも珍しくありません。

長時間にわたる解析作業中、ずっとコンピュータの前に張り付いて進捗を確認するのは現実的ではありませんよね?解析が完了した瞬間や、目的のパスワードが見つかったタイミングをすぐに知りたい、と思うのは自然なことです。

そこで役立つのが、John the Ripper に同梱されている (または関連ツールとして提供される) mailer ツールです! このツールを使えば、John the Ripper がパスワードのクラックに成功した際に、その情報をメールで自動的に通知させることができます。これにより、解析が終わるのをただ待つのではなく、他の作業を進めながら結果を効率的に受け取ることが可能になります。

この記事では、John the Ripper の mailer ツールの設定方法から使い方、注意点までを詳しく解説していきます。これであなたも、パスワード解析の結果をスマートに受け取れるようになりましょう!

mailer ツールの概要

mailer ツールは、John the Ripper のパスワードクラッキングプロセスを監視し、指定された条件(通常は新しいパスワードがクラックされたとき)が満たされた場合に、設定されたメールアドレスに通知を送信するスクリプトです。

多くの環境では、John the Ripper のインストールディレクトリ内の run (または scripts) ディレクトリに、Perl スクリプト (mailer または mailer.pl) として配置されています。ただし、配布形態やバージョンによっては場所が異なる場合や、標準では含まれていない可能性もありますので、ご自身の環境をご確認ください。

基本的な仕組み

mailer の基本的な動作は以下のようになります。

  1. 設定ファイルの読み込み: 起動時に設定ファイル (通常は john.conf 内の [Mailer] セクション、または専用の mailer.conf) を読み込み、メール送信に必要な情報(宛先、送信元、SMTPサーバー情報など)を取得します。
  2. ログファイルの監視: John the Ripper がクラックしたパスワードを記録するファイル (通常は john.pot ファイルや、セッションごとのログファイル) を定期的にチェックします。
  3. 変更の検出: 監視対象のログファイルに新しいパスワードが追記されたことを検出します。
  4. メール送信: 新しいパスワードが見つかった場合、設定ファイルに基づいてメールを作成し、指定されたSMTPサーバー経由で宛先に送信します。

この仕組みにより、ユーザーは JtR の実行プロセスを直接監視し続けることなく、クラックの成功をタイムリーに知ることができます。特に、複数のパスワードハッシュを対象に長時間の解析を行う場合に非常に便利です。

前提条件と準備

mailer ツールを使用するには、いくつかの準備が必要です。

1. John the Ripper のインストール

当然ですが、John the Ripper 本体がインストールされている必要があります。まだインストールしていない場合は、公式サイトやパッケージマネージャー (apt, yum, brew など) を利用してインストールしてください。

# 例: Debian/Ubuntu の場合
sudo apt update
sudo apt install john

# 例: macOS (Homebrew) の場合
brew update
brew install john

インストール後、john コマンドが実行できること、そして mailer スクリプトが存在する場所を確認しておきましょう。多くの場合、/usr/share/john//opt/john/run/ といったパスにあります。

# mailer スクリプトを探す例
find /usr -name mailer 2>/dev/null
find /opt -name mailer 2>/dev/null

2. メール送信環境 (SMTPサーバー)

mailer はメールを送信するための SMTP (Simple Mail Transfer Protocol) サーバーを必要とします。以下の情報を用意してください。

  • SMTPサーバーのアドレス (ホスト名またはIPアドレス): 例: smtp.gmail.com, smtp.office365.com
  • SMTPサーバーのポート番号: 一般的には 587 (TLS/STARTTLS) または 465 (SSL) が使用されます。
  • SMTP認証情報 (必要な場合):
    • ユーザー名 (通常はメールアドレス)
    • パスワード (またはアプリケーション固有のパスワード)

注意: SMTP認証情報

多くのSMTPサーバーでは認証が必要です。Gmail や Microsoft 365 などのサービスを利用する場合、セキュリティ強化のため、通常のログインパスワードではなく、アプリケーション固有パスワード (App Password) の発行が必要になることがあります。各サービスのドキュメントを確認してください。また、設定ファイルにパスワードを直接記述することになるため、セキュリティリスクが伴います。後述する注意点を必ずお読みください。

組織内のメールサーバーや、SendGridなどのメール配信サービスを利用することも可能です。利用するサーバーの要件に合わせて情報を準備してください。

3. `mailer` スクリプトの確認

mailer スクリプトが実行可能であることを確認します。通常、Perl スクリプトとして提供されているため、Perl インタープリタがインストールされている必要があり、スクリプト自体に実行権限が付与されている必要があります。

# スクリプトの場所へ移動 (例)
cd /path/to/john/run

# 実行権限を確認・付与
ls -l mailer
chmod +x mailer

# Perl がインストールされているか確認
perl -v

もし Perl がインストールされていない場合は、システムのパッケージマネージャーでインストールしてください。

# 例: Debian/Ubuntu の場合
sudo apt install perl

4. 設定ファイルの準備

mailer の動作は設定ファイルによって制御されます。John the Ripper のメイン設定ファイルである john.conf 内に [Mailer] セクションを記述するか、専用の mailer.conf ファイルを作成・編集します。どちらのファイルを使用するかは、mailer スクリプトの実装や JtR のバージョンによって異なる場合があります。まずは john.conf を確認し、[Mailer] セクションが存在するか見てみましょう。存在しない場合や、専用ファイルを使う仕様の場合は、新規に作成またはコピーして編集します。

john.conf は通常、/etc/john/ や JtR の実行ディレクトリ (run) 内、またはユーザーのホームディレクトリ (~/.john/) にあります。

設定ファイル (john.conf / mailer.conf) の解説

mailer の挙動を定義する設定ファイルの詳細を見ていきましょう。ここでは、john.conf 内の [Mailer] セクションを例に解説します。専用の mailer.conf を使う場合も、設定項目はほぼ同じです。

以下は、[Mailer] セクションの一般的な設定項目とその意味です。ご自身の環境に合わせて値を変更してください。

[Mailer]
# mailer スクリプトを有効にするか (Yes/No)
# デフォルトは No になっていることが多いです。
Enabled = Yes

# 通知を受け取るメールアドレス (必須)
# 複数のアドレスを指定できる場合もあります (カンマ区切りなど、スクリプトの実装を確認)
MailTo = your-notification-email@example.com

# 送信元として表示されるメールアドレス (必須)
# SMTPサーバーによっては、認証に使用するアカウントのアドレスと一致させる必要がある場合があります。
MailFrom = john-mailer@your-domain.com

# SMTPサーバーのホスト名またはIPアドレス (必須)
SMTPHost = smtp.example.com

# SMTPサーバーのポート番号 (デフォルトは 25 かもしれませんが、今は 587 や 465 が一般的)
# 環境に合わせて設定してください。
SMTPPort = 587

# SMTP認証を使用するか (Yes/No)
# 認証が必要な場合は Yes にします。
SMTPAuth = Yes

# SMTP認証のユーザー名 (SMTPAuth = Yes の場合に必須)
SMTPUser = your-smtp-username@example.com

# SMTP認証のパスワード (SMTPAuth = Yes の場合に必須)
# !!! セキュリティリスクに注意 !!!
# ファイルのパーミッションを厳格に管理してください (所有者のみ読み取り可能など)
# 可能であればアプリケーション固有パスワードを使用してください。
SMTPPass = YourSmtpPasswordOrAppPassword

# メールの件名
# %p : クラックされたパスワード (%u : ユーザー名, %h : ハッシュ全体 など、使える変数がある場合があります)
Subject = [JtR] Password cracked: %p

# メールの本文テンプレート
# 件名と同様に、変数を使える場合があります。スクリプトの実装を確認してください。
# クラックされたパスワード情報を含むため、取り扱いに注意が必要です。
Body = John the Ripper found a password!\n\nUser: %u\nPassword: %p\nHash: %h\n\nCheck the pot file for details.\n

# 監視対象の John the Ripper ログファイル
# デフォルトは $JOHN/run/john.pot かもしれません。
# セッション固有のログを指定したい場合もあるでしょう。
# LogFile = /path/to/your/session.log
LogFile = $JOHN/run/john.pot

# ログファイルをチェックする間隔 (秒単位)
# 短すぎると負荷が高くなり、長すぎると通知が遅れます。
CheckInterval = 60

# (オプション) SSL/TLS を強制するかどうかなどの設定項目がある場合もあります。
# UseSSL = Yes
# UseTLS = Yes

設定のポイントと注意点

  • Enabled = Yes にする: まず、この設定を Yes にしないと mailer は動作しません。
  • メールアドレスとSMTP情報: MailTo, MailFrom, SMTPHost, SMTPPort は必須です。ご自身の環境に合わせて正確に設定してください。
  • SMTP認証:
    • 認証が必要な場合は SMTPAuth = Yes とし、SMTPUserSMTPPass を設定します。
    • パスワードの平文保存リスク: SMTPPass にはパスワードを直接記述します。この設定ファイル (john.conf) が第三者に読み取られると、メールアカウントが不正利用される危険性があります。ファイルのパーミッションを 600 (所有者のみ読み書き可能) など、厳格に設定してください。
    • 可能であれば、mailer 専用のメールアカウントを作成し、そのアカウントの権限を最小限にすること、またはアプリケーション固有パスワードを使用することを強く推奨します。
  • 件名 (Subject) と本文 (Body):
    • 通知メールの内容をカスタマイズできます。%p (パスワード), %u (ユーザー名), %h (ハッシュ) などのプレースホルダーが使える場合がありますが、これは mailer スクリプトの実装に依存します。スクリプトのソースコードを確認するか、試してみるのが確実です。
    • 機密情報: メール本文にクラックされたパスワードそのものを含める設定にする場合、メールの盗聴や誤送信のリスクを考慮し、本当にその情報が必要か検討してください。単に「クラックされた」という通知だけにとどめる方が安全な場合もあります。
  • ログファイル (LogFile): JtR がクラック結果を書き出すファイルを指定します。通常は john.pot ですが、--session=NAME オプションでセッション名を指定して JtR を実行している場合、NAME.logNAME.pot を監視対象にしたい場合もあるでしょう。その場合はパスを適切に設定します。$JOHN は JtR のホームディレクトリを指す環境変数として解釈されることが多いです。
  • チェック間隔 (CheckInterval): 監視対象のログファイルをチェックする頻度を秒単位で指定します。60 (60秒ごと) 程度が一般的ですが、状況に応じて調整してください。

最重要:セキュリティに関する警告

設定ファイル、特に SMTPPass を含む john.confmailer.confパーミッション管理は非常に重要です。chmod 600 john.conf のように設定し、所有者以外が読み取れないようにしてください。

また、通知メールの内容にクラックされたパスワードを含める場合は、そのメールが安全な経路で送信され、意図しない受信者に渡らないように最大限の注意を払ってください。可能であれば、パスワード自体を含めずに通知する方が安全です。

mailer ツールの実行方法

設定が完了したら、いよいよ mailer ツールを実行します。実行方法はいくつか考えられますが、基本的には John the Ripper のプロセスとは別に、バックグラウンドで動作させます。

基本的な実行

最も簡単な方法は、mailer スクリプトがあるディレクトリに移動し、直接実行することです。& を付けてバックグラウンドで実行します。

# mailer スクリプトのあるディレクトリへ移動 (例)
cd /path/to/john/run

# mailer をバックグラウンドで実行
./mailer &

これにより、mailer は設定ファイル (john.conf または mailer.conf) を読み込み、指定されたログファイルの監視を開始します。John the Ripper が新しいパスワードをクラックし、ログファイルに書き込むと、mailer がそれを検知してメールを送信します。

John the Ripper の実行自体は、通常通り別のターミナルや同じターミナルのバックグラウンドで行います。

# 例: John the Ripper の実行 (mailer とは別に実行)
john --wordlist=passwords.txt hashes.txt --session=mycrack

セッション維持のための `screen` や `tmux` の利用

SSH接続でリモートサーバー上で JtR と mailer を実行する場合、SSHセッションが切断されるとプロセスも終了してしまいます。これを防ぐためには、screentmux といったターミナルマルチプレクサを使用するのが一般的です。

`screen` を使う例:

  1. screen を起動: screen -S jtr_session
  2. screen セッション内で JtR を実行: john ...
  3. 新しいウィンドウを作成: Ctrl+a を押してから c を押す
  4. 新しいウィンドウで mailer を実行: cd /path/to/john/run; ./mailer
  5. セッションをデタッチ (バックグラウンド化): Ctrl+a を押してから d を押す

これで、SSH接続を切断しても JtR と mailer はバックグラウンドで動き続けます。再度セッションに接続するには screen -r jtr_session を実行します。

`tmux` を使う例:

  1. tmux を起動: tmux new -s jtr_session
  2. tmux セッション内で JtR を実行: john ...
  3. 新しいペイン (画面分割) を作成: Ctrl+b を押してから % (縦分割) または " (横分割) を押す
  4. 新しいペインで mailer を実行: cd /path/to/john/run; ./mailer
  5. セッションをデタッチ: Ctrl+b を押してから d を押す

再接続は tmux attach -t jtr_session です。

終了方法

mailer プロセスを終了するには、ps コマンドでプロセス ID (PID) を特定し、kill コマンドを使用します。

# mailer プロセスを探す
ps aux | grep mailer

# 表示された PID を使って終了させる (例: PID が 12345 の場合)
kill 12345

screentmux を使用している場合は、セッションに再接続し、mailer が実行されているウィンドウ/ペインで Ctrl+c を押して終了させることもできます。

実践的な使い方とTips

mailer をより便利に、そして安全に使うためのヒントをいくつか紹介します。

複数の JtR セッションを監視する

複数のパスワードファイルや異なる設定で同時に JtR を実行している場合、それぞれの結果を通知させたいことがあります。

  • 方法1: 複数の `mailer` インスタンスを実行する

    異なる設定ファイルを用意するか、コマンドライン引数で設定ファイルを指定できるタイプの mailer であれば、セッションごとに mailer プロセスを起動します。各 mailer は、対応する JtR セッションのログファイル (例: session1.log, session2.log) を監視するように設定します。

  • 方法2: スクリプトをカスタマイズする (上級者向け)

    Perl スクリプトに詳しい場合、mailer スクリプト自体を改造して、複数のログファイルを同時に監視できるようにしたり、通知内容にセッション名を含めるようにしたりすることも可能です。

メール通知のカスタマイズ

前述の通り、Subject (件名) と Body (本文) は設定ファイルでカスタマイズできます。

  • 件名を分かりやすく: Subject = [JtR Session: %s] Password cracked! のように、どのセッションの結果か分かる情報 (%s がセッション名変数として使える場合) や、サーバー名などを入れると、複数の通知を受け取ったときに区別しやすくなります。
  • 本文に必要な情報だけを: セキュリティを考慮し、パスワード自体 (%p) を本文に含めず、User: %u cracked. Check pot file. のようなシンプルな通知にするのも一案です。
  • HTMLメール: mailer スクリプトが対応していれば、HTML形式でメールを送信するように設定できるかもしれません (Content-Type ヘッダーの設定など)。

エラー発生時の対処法

メールが送信されない場合、以下の点を確認してください。

  • 設定ファイルの確認: タイプミスがないか、特に SMTP サーバー情報、ポート番号、認証情報が正しいか再確認します。Enabled = Yes になっているかも確認しましょう。
  • mailer のログ: mailer スクリプト自体がログを出力する場合があります (標準出力、標準エラー出力、または専用のログファイル)。screentmux を使っている場合は、mailer を実行しているウィンドウ/ペインでエラーメッセージが出ていないか確認します。
  • SMTPサーバー側の確認:
    • ファイアウォールで SMTP ポート (587, 465 など) がブロックされていないか。
    • SMTPサーバー側で、送信元IPアドレスからの接続が許可されているか。
    • 認証情報 (ユーザー名、パスワード/アプリパスワード) が正しいか。アカウントがロックされていないか。
    • 送信制限 (レートリミット) に達していないか。
  • Perl モジュールの不足: mailer が依存する Perl モジュール (特にメール送信やネットワーク関連のモジュール、例: Net::SMTP, MIME::Base64 など) がシステムにインストールされていない可能性があります。エラーメッセージを確認し、不足しているモジュールを CPAN などでインストールしてください (例: sudo cpan install Net::SMTP)。

セキュリティに関する再度の注意点

繰り返しになりますが、セキュリティは非常に重要です。

  • 設定ファイルのパーミッション: john.confmailer.conf は、所有者以外読み書きできないように chmod 600 を設定してください。
  • SMTPパスワード: 可能であればアプリケーション固有パスワードを使用し、通常のログインパスワードの使用は避けてください。mailer 専用の、権限を絞ったメールアカウントを用意することも検討しましょう。
  • 通知内容: メール本文にクラックされたパスワードを含めることのリスクを十分に理解し、必要性を慎重に判断してください。
  • 実行環境: JtR や mailer を実行するサーバー自体のセキュリティも確保してください。

代替手段や関連ツール

mailer は便利なツールですが、環境によっては設定が難しい場合や、よりモダンな通知方法を使いたい場合もあるでしょう。

  • カスタムスクリプト: JtR のログファイルを監視し、Slack、Discord、Telegram など、好みのチャットツールや通知サービスへ通知を送る簡単なスクリプト (シェルスクリプト, Python など) を自作することも可能です。ファイルの変更を検知する inotifywait (Linux) などのツールと組み合わせると良いでしょう。
  • John the Ripper のイベント機能 (比較的新しい機能): 最近のバージョンの JtR には、特定のイベント (例: クラック成功、セッション完了) 発生時に外部コマンドを実行する機能が組み込まれている可能性があります (--event=... のようなオプション)。これを利用すれば、メール送信コマンド (mail, sendmail) やカスタム通知スクリプトを直接呼び出すことができます。詳細は JtR のドキュメントを確認してください。
  • 他の監視ツール: Zabbix や Nagios のようなシステム監視ツールを使って JtR のログファイルの変更を監視し、アラートを発報させる方法も考えられます。

また、mailer と合わせてよく使われる JtR のツールには以下のようなものがあります。

  • john: パスワードクラッキングを実行する本体。
  • unshadow: Linux の /etc/passwd/etc/shadow ファイルを結合し、JtR が読み込める形式にする。
  • unique: ワードリストから重複する行を削除する。
  • ssh2john, pdf2john, zip2john など: 各種ファイルや秘密鍵から JtR が解析できるハッシュ形式を抽出する。

まとめ

John the Ripper の mailer ツールは、長時間に及ぶパスワードクラック作業の結果を効率的に知るための便利なユーティリティです。設定ファイル (john.conf または mailer.conf) で SMTP サーバー情報や通知先メールアドレスを適切に設定し、バックグラウンドで実行することで、クラック成功時に自動でメール通知を受け取ることができます。

mailer を活用するメリットは以下の通りです。

  • 解析完了やパスワード発見をタイムリーに知ることができる。
  • 解析中に他の作業に集中できる。
  • リモートでの長時間実行時でも結果を見逃さない

一方で、設定ファイルに SMTP の認証情報(特にパスワード)を平文で記述する必要があるため、セキュリティには最大限の注意が必要です。ファイルパーミッションの厳格な管理、アプリケーション固有パスワードの利用、専用アカウントの作成などを検討し、安全に運用することが重要です。

この記事を参考に、ぜひ mailer ツールをセットアップし、John the Ripper を使ったパスワード監査や解析作業をより効率的かつ快適に進めてみてください。Happy cracking (ethically, of course)!

参考情報

John the Ripper に関するより詳細な情報や最新情報については、以下の公式サイトやコミュニティを参照することをお勧めします。

mailer スクリプトの具体的な仕様や設定可能な変数は、お使いの John the Ripper のバージョンやソースによって異なる場合があります。必要に応じて、mailer スクリプトのソースコードや、同梱されているドキュメント (README ファイルなど) を直接ご確認ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です