John the Ripperのツール「lotus2john」徹底解説:Lotus Notes IDファイルからのハッシュ抽出ガイド

セキュリティツール

John the Ripper (JtR) は、パスワードのセキュリティ監査やパスワード回復のための強力なオープンソースツールです。その拡張版である「Jumbo」バージョンには、特定のアプリケーションやファイル形式からパスワードハッシュを抽出するための多くの補助ツールが含まれています。その中の一つが lotus2john です。

このブログ記事では、lotus2john の役割、使い方、そして抽出したハッシュをJohn the Ripperでどのように利用するかについて、詳細に解説します。IBM Lotus Notes/Domino環境のセキュリティに関わる方や、パスワード回復技術に興味がある方にとって、有益な情報となることを目指します。🧐

1. Lotus Notes/Domino と IDファイルについて

lotus2john を理解する前に、まずIBM Lotus Notes/Dominoとその認証メカニズムの中心であるIDファイルについて簡単に触れておきましょう。

IBM Lotus Notes (現在はHCL Notes) は、電子メール、カレンダー、タスク管理、データベースアプリケーションなどを統合したクライアントソフトウェアです。一方、IBM Lotus Domino (現在はHCL Domino) は、Notesクライアントと連携するサーバーソフトウェアです。これらは長年にわたり、多くの企業や組織でグループウェアとして利用されてきました。

Notes/Domino環境におけるユーザー認証の根幹をなすのがIDファイルです。通常、.id という拡張子を持つこのファイルには、ユーザーの識別情報、公開鍵、秘密鍵、証明書、そして最も重要なパスワードに関連する情報が含まれています。ユーザーがNotesクライアントにログインする際や、Dominoサーバーにアクセスする際には、このIDファイルと対応するパスワードが必要となります。

IDファイルは、単なる設定ファイルではなく、ユーザーのデジタルアイデンティティそのものであり、厳重な管理が求められます。このファイルが第三者の手に渡り、かつパスワードが解読されてしまうと、そのユーザーになりすましてシステムにアクセスされる可能性があります。

IDファイル内のパスワード情報は、単純な平文ではなく、特定のアルゴリズムによって暗号化またはハッシュ化されています。lotus2john は、このIDファイルからパスワードクラックに必要な形式のデータを抽出するために設計されたツールなのです。

豆知識: IDファイルのデフォルトの保存場所は、通常、Notesクライアントのデータディレクトリ内 (例: Windowsでは %USERPROFILE%\AppData\Local\Lotus\Notes\Data) ですが、設定によって異なる場所に保存されている場合もあります。ファイル名は多くの場合、ユーザー名に基づいて付けられます (例: juser.id)。

2. lotus2johnとは? – その役割と目的

lotus2john は、John the Ripper Jumbo パッケージに含まれるPythonスクリプト (lotus2john.py) です。その主な目的は、前述したLotus Notes/Dominoの IDファイル (.id) からパスワードハッシュデータを抽出し、John the Ripperが解読可能な形式に変換することです。

John the Ripper本体は、さまざまな形式のハッシュをクラックできますが、特定のファイル形式(この場合は .id ファイル)から直接ハッシュを読み取る機能は持っていません。そのため、*2john (アスタリスク・トゥ・ジョン) と呼ばれる一連の補助ツールが存在します。これらのツールは、特定のファイルやデータソースを入力として受け取り、John the Ripperが理解できるハッシュ文字列を出力します。lotus2john は、この *2john ファミリーの一つというわけです。

具体的には、lotus2john はIDファイル内の構造を解析し、パスワード検証に使われる暗号化されたデータ(しばしば “ciphered blob” と呼ばれる)を特定の位置(オフセット)から読み取ります。そして、そのバイナリデータを16進数文字列に変換し、John the Ripperの特定のフォーマット(例: `lotus5`, `lotus85` など、IDファイルのバージョンによって対応するフォーマットが異なります)に適した形式で出力します。

この抽出・変換プロセスを経ることで、本来はNotes/Domino環境でしか利用されないIDファイル内のパスワード情報を、John the Ripperという汎用的なパスワードクラッキングツールで扱えるようになります。これにより、パスワードの強度評価や、忘れられたパスワードの回復(正当な権限がある場合)などが可能になります。✅

注意点として、lotus2john はパスワードを解読するツールではなく、あくまでハッシュを抽出・変換するツールであるということを理解しておく必要があります。実際のパスワードクラック処理は、lotus2john の出力結果をJohn the Ripper本体に渡して行います。

3. 準備:John the Ripper Jumbo のインストール

lotus2john を使用するには、まずJohn the Ripper Jumboがインストールされている必要があります。lotus2john は、John the Ripperのコア配布物ではなく、拡張機能が多数含まれたJumboバージョンの一部として提供されています。

インストール方法はOSによって異なりますが、一般的な方法をいくつか紹介します。

  • Kali LinuxやParrot Security OSなどのペネトレーションテスト用ディストリビューション:
    多くの場合、John the Ripper Jumboはデフォルトでインストールされているか、標準リポジトリから簡単にインストールできます。
    sudo apt update
    sudo apt install john
  • Ubuntu/Debian系:
    標準リポジトリからインストールできますが、最新のJumboバージョンが含まれているか確認が必要です。場合によっては、ソースからビルドするか、Snapパッケージを利用する方が良いかもしれません。
    sudo apt update
    sudo apt install john
    Snapパッケージを利用する場合:
    sudo snap install john-the-ripper
  • ソースからのビルド (推奨される場合が多い):
    最も確実かつ最新の機能を利用するには、OpenwallのJohn the Ripper公式サイトから最新のJumboバージョンのソースコードをダウンロードし、ビルドします。
    # 必要な開発ツールのインストール (例: Debian/Ubuntu)
    sudo apt update
    sudo apt install build-essential libssl-dev git
    
    # ソースコードの取得 (例: git clone)
    git clone https://github.com/openwall/john -b bleeding-jumbo john
    
    # ディレクトリの移動
    cd john/src
    
    # 設定とビルド
    ./configure
    make -s clean && make -sj4
    
    # (オプション) システム全体にインストールする場合
    # sudo make install
    ビルド手順は環境によって異なる場合があるため、ダウンロードしたソースコードに含まれる `README` や `INSTALL` ドキュメントを参照してください。
  • Windows:
    公式サイトからコンパイル済みのWindows用バイナリが提供されています。これをダウンロードし、任意の場所に展開するだけで使用できます。

インストール後、John the Ripperの実行ファイル (john) や、*2john ツール群 (lotus2john.py など) が含まれるディレクトリ (通常は `run` ディレクトリ) を確認してください。ターミナルから `john` コマンドを実行して、バージョン情報などが表示されればインストールは成功しています。🎉

# runディレクトリに移動して確認
cd path/to/john/run
./john --version

4. lotus2john の基本的な使い方

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

python lotus2john.py [対象のIDファイル名(複数指定可)]

または、実行権限が付与されていれば直接実行できます (John the Ripperの `run` ディレクトリ内で実行する場合)。

./lotus2john.py [対象のIDファイル名(複数指定可)]

実行例:

カレントディレクトリにある `user.id` というファイルからハッシュを抽出し、標準出力に表示する場合:

./lotus2john.py user.id

実行すると、以下のような形式の出力が得られます(実際のハッシュ値は異なります)。

user.id:$lotus5$FCEA15110F148050*...長い16進数文字列...*C275B8283A82F933

または、バージョンによっては以下のような形式かもしれません(`lotus85` など)。

another_user.id:6247FE2575...長い16進数文字列...DBC79219186697B14D36F394C

この出力は、John the Ripperが解釈できるハッシュ形式になっています。

  • user.id: の部分は、元のファイル名を示しています。これはJohn the Ripperがクラック成功時にどのファイル由来のパスワードかを示すのに役立ちます。
  • $lotus5$ や、ファイル名に続く長い16進数文字列が、実際のハッシュデータとそのフォーマットを示す部分です。

複数のIDファイルを一度に処理することも可能です。

./lotus2john.py user1.id admin.id backup_user.id

この場合、各IDファイルに対応するハッシュがそれぞれ改行区切りで出力されます。

通常、抽出したハッシュは後でJohn the Ripperで使うためにファイルに保存します。リダイレクト演算子 (>) を使うのが一般的です。

./lotus2john.py user.id > lotus_hashes.txt

これで、lotus_hashes.txt というファイルに、user.id から抽出されたハッシュが保存されます。複数のファイルを指定した場合も同様に、すべてのハッシュがこのファイルに追記されます。

./lotus2john.py *.id > all_lotus_hashes.txt

(上記はカレントディレクトリ内のすべての .id ファイルを処理する例です。)

注意: lotus2john は、IDファイルがパスワードで保護されている場合でも、そのパスワードを入力する必要はありません。あくまでファイル内部の構造からハッシュデータを抽出するだけです。ただし、IDファイル自体への読み取りアクセス権限は必要です。

5. lotus2john のオプション

利用可能な検索結果やJohn the Ripperの一般的なツールの傾向に基づくと、lotus2john.py 自体には、特別なコマンドラインオプションはほとんど提供されていないようです。多くの *2john ツールは、入力ファイルを受け取って標準出力にハッシュを出力するという、非常にシンプルなインターフェースを持っています。

もし特定の動作変更オプション(例えば、特定のハッシュ形式を強制するなど)が必要な場合、John the Ripper本体のオプション(--format= など)を使用することになります。lotus2john の役割は、あくまで前処理としてのハッシュ抽出に特化しています。

ツールのヘルプを確認したい場合は、以下のように試すことができますが、詳細なヘルプが出力されない可能性もあります。

./lotus2john.py -h
./lotus2john.py --help

基本的な使用法は、前述の通り、引数としてIDファイルを指定するだけです。

6. 抽出したハッシュを John the Ripper で使用する

lotus2john でIDファイルからハッシュを抽出し、ファイル(例: `lotus_hashes.txt`)に保存したら、いよいよJohn the Ripper本体の出番です。John the Ripperは、さまざまなモード(辞書攻撃、ブルートフォース攻撃、インクリメンタルモードなど)を使って、保存されたハッシュに対応する元のパスワードを見つけ出そうと試みます。

最も基本的な使い方は、John the Ripperの実行ファイル (john) に、ハッシュが保存されたファイルを引数として渡すことです。

./john lotus_hashes.txt

これを実行すると、John the Ripperは `lotus_hashes.txt` 内のハッシュ形式を自動的に検出し(この場合は `lotus5` や `lotus85` など)、デフォルトのクラックモード(通常はシングルクラックモード、辞書モード、インクリメンタルモードの順)でパスワード解析を開始します。

辞書攻撃モードの使用:

特定の単語リスト(辞書ファイル)を使って攻撃を行いたい場合は、--wordlist= オプションを使用します。

./john --wordlist=/path/to/password.lst lotus_hashes.txt

/path/to/password.lst の部分を、使用したい辞書ファイルのパスに置き換えてください。John the Ripperにはデフォルトで `password.lst` という基本的な辞書ファイルが付属していることが多いです。

特定のフォーマットを指定する場合:

John the Ripperがハッシュ形式を誤認識する場合や、特定の形式のみを対象としたい場合は、--format= オプションで明示的に指定できます。Lotus NotesのIDファイルから抽出されたハッシュに対応するフォーマット名(例: `lotus5`, `lotus85`)を指定します。どのフォーマットかは、lotus2john の出力や、John the Ripperの対応フォーマットリスト (`./john –list=formats`) で確認できます。

# Lotus Notes/Domino 5 形式のハッシュを指定する場合
./john --format=lotus5 --wordlist=password.lst lotus_hashes.txt

# Lotus Notes/Domino 8.5 形式のハッシュを指定する場合 (対応していれば)
# (注意: John the Ripperがlotus85形式をサポートしているかはバージョンによります)
# ./john --format=lotus85 --wordlist=password.lst lotus_hashes.txt
補足: Lotus Notes/Dominoのバージョンによって、IDファイル内で使用される暗号化・ハッシュ化アルゴリズムが異なります。John the Ripperが対応しているフォーマットも、そのバージョンによって変わります。例えば、古いバージョンでは `lotus5` が、比較的新しいバージョン (v8など) では異なる形式 (Hashcatでは `-m 9100` として知られる形式など) が使われることがあります。`lotus2john` がどのバージョンに対応し、どのフォーマット (`–format=`) 名で出力するかは、使用しているJohn the Ripper Jumboのバージョンに依存します。

クラックの進捗確認と結果表示:

John the Ripperが動作中に任意のキー(スペースキーなど)を押すと、現在の進捗状況が表示されます。クラックが完了した後や、中断した後に、見つかったパスワードを確認するには --show オプションを使用します。

./john --show lotus_hashes.txt

これにより、クラックに成功したハッシュとそのパスワードのペアが表示されます。例:

user.id:password123:1000:1000::/home/user:/bin/bash

(表示形式は環境やハッシュタイプにより異なりますが、ファイル名:パスワード の形式が含まれます。)

John the Ripperには他にも多くのオプション(ルールを使った辞書攻撃の強化、インクリメンタルモードの文字セット指定など)があり、より効率的なパスワードクラックが可能です。詳細はJohn the Ripperのドキュメントを参照してください。

7. トラブルシューティングと注意点

  • lotus2john.py が見つからない: John the Ripper Jumboが正しくインストールされているか、また、run ディレクトリ内でコマンドを実行しているか確認してください。コア版のJohn the Ripperには含まれていません。
  • ハッシュが抽出できない、またはエラーが出る:
    • 対象の .id ファイルが破損していないか確認してください。
    • IDファイルのバージョンが、使用している lotus2john.py でサポートされていない可能性があります。John the Ripper Jumboを最新版にアップデートしてみてください。
    • 非常に古い、または特殊な形式のIDファイルの場合、対応していない可能性も考えられます。
    • Pythonの環境に問題がある可能性も稀にあります。
  • John the Ripperがハッシュを認識しない:
    • lotus2john が出力したハッシュ形式が、John the Ripper本体でサポートされているか確認してください (./john --list=formats)。
    • --format= オプションで正しいフォーマット名を明示的に指定してみてください。
    • ハッシュをファイルに保存する際に、余計な文字や改行が入っていないか確認してください。
  • パスワードクラックに時間がかかりすぎる: Lotus Notes/Dominoのパスワードハッシュは、比較的クラック耐性が高い場合があります。特にパスワードが長く複雑な場合、解析には膨大な時間と計算リソースが必要になることがあります。強力なGPUを使用できる場合は、John the RipperのOpenCL/CUDA対応版や、Hashcatなどの他のツールを検討するのも一案です (ただし、HashcatでIDファイル形式を直接扱うには、別途ハッシュ抽出・変換が必要な場合があります)。
  • 倫理的および法的な注意: パスワードクラックツールの使用は、必ず正当な権限の下で行ってください。 自身が管理するシステムやデータのセキュリティ監査、または明示的な許可を得たペネトレーションテストの範囲内でのみ使用し、他人のアカウントやシステムに対して不正に使用することは絶対に避けてください。法的な問題に発展する可能性があります。⚠️

8. まとめ

lotus2john は、John the Ripper Jumbo スイートの一部として提供される、Lotus Notes/Domino IDファイルからパスワードハッシュを抽出するための便利なツールです。以下のステップで使用します。

  1. John the Ripper Jumboをインストールします。
  2. lotus2john.py を使用して、対象の .id ファイルからハッシュを抽出します (例: ./lotus2john.py user.id > hashes.txt)。
  3. 抽出したハッシュが保存されたファイルを、John the Ripper本体に渡してパスワードクラックを実行します (例: ./john hashes.txt)。

このツールを使うことで、Notes/Domino環境におけるパスワードの強度を評価したり、忘れられたパスワードの回復(適切な権限がある場合)を行ったりすることが可能になります。ただし、ツールの使用にあたっては、常に法規制と倫理規定を遵守することが重要です。

John the Ripperと *2john ツール群は非常に強力ですが、その力を正しく理解し、責任ある使い方を心がけましょう。🛡️

参考情報

コメント

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