はじめに:enpass5tojohn とは? 🤔
パスワード管理ツール Enpass は、多くのユーザーにとって重要な認証情報を安全に保管する手段を提供しています。しかし、万が一マスターパスワードを忘れてしまった場合、保管されている情報へのアクセスが困難になります。そのような状況や、セキュリティ監査の一環としてパスワードの強度をテストする必要がある場合に役立つツールの一つが enpass5tojohn です。
enpass5tojohn は、著名なパスワードクラッキングツールである John the Ripper (JtR) スイートに含まれるPythonスクリプトです。このスクリプトの主な目的は、Enpass バージョン 5 のデータベースファイル(通常は vault.db
または sync_default.walletx
という名前)から、マスターパスワードのハッシュ情報を抽出し、John the Ripper が解析できる形式に変換することです。
抽出されたハッシュは、特定のフォーマット($enpass$*5*...
という形式)を持ちます。このハッシュに対して John the Ripper を用いることで、総当たり攻撃(ブルートフォースアタック)、辞書攻撃、ルールベース攻撃など、様々な手法を駆使して元のマスターパスワードの特定を試みることができます。
準備:必要なもの 🛠️
enpass5tojohn を使用して Enpass 5 のパスワード解析を行うには、いくつかの準備が必要です。
1. John the Ripper のインストール
enpass5tojohn は John the Ripper (JtR) の一部として提供されています。したがって、まず JtR をシステムにインストールする必要があります。JtR は多くの Linux ディストリビューションのパッケージマネージャからインストールできます。
Debian / Ubuntu 系の場合:
sudo apt update
sudo apt install john
Fedora / RHEL 系の場合:
sudo dnf update
sudo dnf install john
macOS の場合 (Homebrew を使用):
brew update
brew install john
あるいは、John the Ripper 公式サイトからソースコードをダウンロードし、自分でコンパイルすることも可能です。最新版やコミュニティ版 (Jumbo John) を利用したい場合は、ソースからのビルドが推奨されることもあります。コミュニティ版は、より多くのハッシュ形式や最適化されたコードを含んでいることが多いです。
2. enpass5tojohn スクリプトの確認
JtR をインストールすると、通常 enpass5tojohn
(または enpass5tojohn.py
) スクリプトは JtR の実行ファイルと同じディレクトリ、あるいは /usr/share/john/
や /opt/john/run/
といった補助スクリプトが置かれるディレクトリに含まれます。多くの場合、run
という名前のサブディレクトリ内にあります。
以下のコマンドで場所を探すことができます(環境によってパスは異なります):
find /usr -name enpass5tojohn.py 2>/dev/null
find /opt -name enpass5tojohn.py 2>/dev/null
# または JtR のインストールディレクトリ内で探す
cd /path/to/john/run
ls enpass*
見つからない場合は、John the Ripper (できれば Jumbo John) の最新版ソースコードを GitHub などから取得し、run
ディレクトリを確認してください。
3. Python 環境
enpass5tojohn は Python スクリプトであるため、Python 実行環境が必要です。通常、Python 2.7 または Python 3.x が必要となります。現代的なシステムでは Python 3 が標準でインストールされていることが多いですが、スクリプトが特定のバージョンを要求する場合もあります。
バージョンを確認するには:
python --version
python3 --version
もしスクリプト実行時にエラーが出る場合は、スクリプトの先頭行(シバン: #!/usr/bin/env python
など)を確認し、適切な Python バージョンで実行してみてください。
python /path/to/enpass5tojohn.py --help
python3 /path/to/enpass5tojohn.py --help
4. Enpass 5 データベースファイル
最も重要なのが、解析対象となる Enpass 5 のデータベースファイルです。このファイルは通常、以下のいずれかの名前と場所にあります。
vault.db
: Enpass 5 のローカルストレージに保存される際の標準的なファイル名。sync_default.walletx
: クラウド同期(Dropbox, Google Driveなど)を使用している場合に生成されることがあるファイル名。実体は SQLite データベースです。
これらのファイルの場所は、お使いのオペレーティングシステムや同期設定によって異なります。
OS | 一般的な場所の例 |
---|---|
Windows | C:\Users\<ユーザー名>\Documents\Enpass や同期フォルダ内 |
macOS | ~/Documents/Enpass や同期フォルダ内 |
Linux | ~/Enpass や同期フォルダ内 |
クラウドストレージ(Dropbox, Google Drive, OneDrive など)と同期している場合は、その同期フォルダ内にファイルが存在する可能性が高いです。正確な場所が不明な場合は、Enpass 5 の設定画面を確認するか、システム全体でファイル名を検索してみてください。
解析を行う前に、必ずデータベースファイルのバックアップを取得してください。万が一、操作ミスでファイルを破損させてしまうリスクに備えるためです。
enpass5tojohn の使い方:ハッシュの抽出 🔑
準備が整ったら、いよいよ enpass5tojohn スクリプトを使って Enpass 5 データベースファイルからパスワードハッシュを抽出します。
基本的なコマンド構文
enpass5tojohn の基本的な使い方は非常にシンプルです。Python インタープリタ経由でスクリプトを実行し、引数として Enpass 5 のデータベースファイルへのパスを指定します。
python /path/to/enpass5tojohn.py /path/to/your/vault.db
または
python3 /path/to/enpass5tojohn.py /path/to/your/sync_default.walletx
スクリプトのパスや Python のバージョンは、ご自身の環境に合わせて適宜変更してください。John the Ripper の run
ディレクトリにいる場合は、相対パスで指定できることもあります。
cd /path/to/john/run
python enpass5tojohn.py /path/to/your/vault.db
実行例と出力
例えば、カレントディレクトリに vault.db
がある場合、以下のように実行します。
python ../run/enpass5tojohn.py vault.db
成功すると、以下のような形式の文字列が標準出力に表示されます。これが John the Ripper で解析可能なハッシュ形式です。
vault.db:$enpass$*5*1000*88*f8a2b4c6d8...e3f1*88*a1b2c3d4e5...f0a9
この出力形式について少し解説します。
vault.db:
: 元のファイル名(またはユーザー名として扱われる部分)。John the Ripper がどのハッシュがどのファイル由来かを示すために使います。$enpass$
: ハッシュの種類を示す識別子。John the Ripper はこれを見て Enpass 5 のハッシュだと認識します。*5*
: Enpass のバージョン番号(この場合は 5)。1000*
: パスワード導出関数(PBKDF2)のイテレーション回数(反復処理の回数)。この数値が大きいほど、パスワードの検証に時間がかかり、総当たり攻撃に対する耐性が高まります。88*
: 最初のソルト(Salt)の長さ(バイト単位)。ソルトはパスワードハッシュ化の際に加えるランダムなデータで、同じパスワードでも異なるハッシュ値を生成させ、レインボーテーブル攻撃などを防ぎます。f8a2b4c6d8...e3f1
: 最初のソルト(16進数表記)。*88*
: 検証用データの長さ(バイト単位)。a1b2c3d4e5...f0a9
: パスワードが正しいか検証するための暗号化されたデータ(16進数表記)。
このハッシュ文字列は、マスターパスワードそのものではなく、マスターパスワードが正しいかどうかを検証するために必要な情報(暗号化方式、イテレーション回数、ソルト、検証用データ)を含んでいます。John the Ripper は、様々なパスワード候補をこの情報に基づいて処理し、検証用データと一致するかどうかを確認することで、正しいパスワードを探し出します。
ハッシュをファイルに保存
John the Ripper で解析を行うためには、抽出したハッシュをテキストファイルに保存するのが一般的です。リダイレクション(>
)を使って簡単に行えます。
python /path/to/enpass5tojohn.py /path/to/your/vault.db > enpass_hash.txt
これで、enpass_hash.txt
というファイルに上記のハッシュ文字列が保存されます。ファイル名は任意で構いません。複数のデータベースからハッシュを抽出する場合は、追記(>>
)を使うこともできます。
python /path/to/enpass5tojohn.py vault1.db > all_enpass_hashes.txt
python /path/to/enpass5tojohn.py vault2.db >> all_enpass_hashes.txt
ファイルに保存しておけば、John the Ripper で繰り返し解析を試す際に便利です。
John the Ripper でのパスワード解析 🔓
enpass5tojohn でハッシュを抽出し、ファイル(例: enpass_hash.txt
)に保存したら、次はいよいよ John the Ripper を使って実際のパスワード解析を行います。John the Ripper は非常に多機能なツールであり、様々なモードやオプションがあります。ここでは基本的な使い方と代表的な攻撃方法を紹介します。
1. 基本的な実行
最もシンプルな使い方は、JtR の実行ファイルにハッシュファイル名を渡すだけです。
john enpass_hash.txt
これを実行すると、JtR はまずデフォルトのモード(シングルクラックモード)で解析を試みます。このモードでは、ハッシュファイルに含まれるユーザー名(今回の場合はファイル名 vault.db
)や、一般的なパスワードの変形ルールを試します。その後、設定によってはインクリメンタルモード(文字を組み合わせる総当たりに近いモード)に移行します。
解析には時間がかかることがあります。特にマスターパスワードが長く複雑な場合は、数時間、数日、あるいはそれ以上かかることもあります。処理中は、現在の状況や試行中のパスワード候補が表示されることがあります。
2. ワードリスト攻撃 (辞書攻撃)
よく使われるパスワードや、特定のテーマに関連する単語を集めた「ワードリスト」(辞書ファイル)を使って攻撃を行う方法です。強力なワードリスト(例: RockYou リストなど)を使用すると、比較的単純なパスワードであれば短時間で見つけられる可能性があります。
john --wordlist=/path/to/password.lst enpass_hash.txt
/path/to/password.lst
の部分には、使用するワードリストファイルへのパスを指定します。password.lst
は JtR に付属している基本的なリストですが、より大規模で効果的なリストはインターネット上で見つけることができます(使用には注意が必要です)。
ワードリスト攻撃にルール(--rules
オプション)を組み合わせることで、辞書の単語を大文字小文字変換したり、数字や記号を付加したりするなど、より多くのバリエーションを試すことができます。
john --wordlist=/path/to/password.lst --rules=All enpass_hash.txt
3. インクリメンタルモード
特定の文字セット(例: すべての小文字アルファベット、数字を含むすべての印字可能文字など)を指定し、それらの文字の組み合わせを順番に試していくモードです。総当たり攻撃(ブルートフォース)に近いですが、JtR は文字の出現頻度などを考慮して、より効率的に試行します。
john --incremental=Lower enpass_hash.txt # 小文字のみ
john --incremental=Digits enpass_hash.txt # 数字のみ
john --incremental=Alnum enpass_hash.txt # 英数字
john --incremental=All enpass_hash.txt # すべての印字可能文字
文字セットが大きくなるほど、またパスワード長が長くなるほど、解析に必要な時間は指数関数的に増加します。All
モードで長いパスワードを解析するのは現実的でない場合が多いです。
4. マスクモード
パスワードの構造(長さや使用されている文字種)にある程度の見当がついている場合に非常に有効なモードです。例えば、「大文字1文字 + 小文字5文字 + 数字2桁」のようなパターンを指定して攻撃できます。
# 例: 8文字で、最初の文字が大文字、次が小文字、最後が数字の場合
john --mask='?u?l?l?l?l?l?l?d' enpass_hash.txt
?u
: 大文字 (Upper)?l
: 小文字 (Lower)?d
: 数字 (Digit)?s
: 記号 (Symbol)?a
: すべての印字可能文字 (All)
マスクモードの詳細は john --help
や JtR のドキュメントで確認できます。非常に強力ですが、効果的なマスクを定義するにはパスワードに関するある程度の推測が必要です。
5. 解析結果の表示
John the Ripper がパスワードを発見すると、通常はターミナルに表示され、john.pot
というファイル(ポットファイル)に記録されます。後から発見したパスワードを確認するには、--show
オプションを使用します。
john --show enpass_hash.txt
もしパスワードが見つかっていれば、以下のように表示されます(例)。
vault.db:CorrectPassword123
1 password hash cracked, 0 left
見つかっていない場合は、「0 password hashes cracked」のように表示されます。
解析を中断した場合でも、JtR は進捗状況を保存しており、再度同じコマンドを実行すれば中断したところから再開できます(john.rec
ファイルに状態が保存されます)。
注意点とトラブルシューティング 🧐
enpass5tojohn と John the Ripper を使用する際には、いくつかの注意点と、発生しうる問題への対処法を知っておくと良いでしょう。
-
Enpass 6 以降では動作しない: 再度強調しますが、enpass5tojohn は Enpass 5 専用です。Enpass 6, 7, 8… といった新しいバージョンのデータベースファイル (
vault.json
など) にはこのスクリプトは使用できません。無理に使おうとするとエラーになるか、意味のない出力が得られるだけです。新しいバージョン用のenpass2john.py
などのツールを探してください。 - データベースファイルの破損: データベースファイルが何らかの理由で破損している場合、enpass5tojohn はハッシュを正常に抽出できないことがあります。エラーメッセージを確認し、可能であれば別のバックアップファイルや、同期先のクラウドストレージからファイルを再取得してみてください。
-
Python の依存関係: enpass5tojohn は内部で SQLite データベースを扱います。Python の環境によっては SQLite 関連のライブラリが不足している場合があります。
ImportError: No module named sqlite3
のようなエラーが出た場合は、python-sqlite3
やそれに相当するパッケージをインストールする必要があるかもしれません。# Debian/Ubuntu例 sudo apt install python3-sqlite3
-
JtR のフォーマット認識エラー: John the Ripper が抽出したハッシュ形式 (
$enpass$*5*...
) を正しく認識できない場合、「No password hashes loaded」のようなメッセージが出ることがあります。これは、使用している JtR のバージョンが古いか、Enpass 5 形式に対応していないビルドである可能性があります。最新の Jumbo John を使用することで解決することが多いです。 - 解析にかかる時間: マスターパスワードの複雑さ(長さ、文字種)と PBKDF2 のイテレーション回数、そして使用するコンピュータの CPU パワーによって、解析にかかる時間は大きく変動します。特にイテレーション回数が多い場合(Enpass 5 では 1000 回がデフォルトのようですが、設定で変更されていた可能性もあります)、パスワード候補を一つ試すだけでも時間がかかります。強力な GPU を使った解析に対応している場合もありますが、JtR の設定やビルドに依存します。単純なパスワードでなければ、解析には相当な時間と計算リソースが必要になることを覚悟してください。
- 倫理と法律: 繰り返しになりますが、自分自身のデータ復旧や、許可を得たペネトレーションテスト以外の目的でこのツールを使用しないでください。不正アクセスは犯罪です。
まとめとパスワード管理の重要性 ✨
enpass5tojohn は、Enpass 5 のマスターパスワードを忘れてしまった場合や、セキュリティ監査においてパスワード強度を評価する必要がある場合に、John the Ripper と連携してパスワード解析を試みるための有用なツールです。この記事では、その準備からハッシュの抽出、そして John the Ripper を用いた基本的な解析手順までを解説しました。
このプロセスを通じて、パスワードハッシュの仕組みやパスワードクラッキングの基本的な手法に触れることができたかと思います。同時に、パスワード解析がいかに時間と計算能力を要する作業であるか、そしてそれ故に強力でユニークなマスターパスワードを設定することの重要性を再認識させられます。
パスワード管理ツールは非常に便利ですが、そのマスターパスワードは文字通り「すべての鍵」です。以下の点を心がけましょう。
- 長く複雑なマスターパスワードを設定する: 推測されにくい、十分な長さ(最低でも15文字以上推奨)と、大文字、小文字、数字、記号を組み合わせたパスワードを使用しましょう。
- 他のサービスで使い回さない: マスターパスワードは Enpass 専用とし、他のウェブサイトやサービスと同じパスワードを使用しないでください。
- 安全な場所に記録する(オプション): どうしても覚えられない場合は、物理的に安全な場所(例: 金庫など)に紙で記録しておく、信頼できる家族にのみ伝える、などの最終手段も考えられますが、デジタルでの安易な保存は避けましょう。
- 二要素認証 (2FA) を活用する: Enpass 自体というよりは、Enpass で管理している各アカウントで二要素認証を有効にすることで、万が一パスワードが漏洩した場合の被害を軽減できます。
enpass5tojohn のようなツールは、あくまで最終手段または特定のテスト目的で使用されるべきものです。日頃から適切なパスワード管理を実践することが、最も確実なセキュリティ対策となります。 💪
最後に、ツールの使用は常に倫理的な範囲に留め、法律を遵守することを忘れないでください。
参考情報
- John the Ripper official website: https://www.openwall.com/john/ (John the Ripper の公式サイト。ダウンロードやドキュメントがあります。)
- John the Ripper Community Wiki (Jumbo): https://github.com/openwall/john-packages/wiki (より多くの機能を持つコミュニティ版 John the Ripper (Jumbo) の情報源)
- Enpass official website: https://www.enpass.io/ (パスワードマネージャー Enpass の公式サイト。)
コメント