このブログ記事では、John the Ripper (JtR) スイートに含まれるユーティリティツール zed2john
の使い方について詳しく解説します。zed2john
は、Zed! というソフトウェアで暗号化されたファイルから、John the Ripperが解析可能なパスワードハッシュ形式を抽出するための重要なツールです。
パスワードを忘れてしまったZedファイルにアクセスする必要がある場合や、セキュリティ監査、フォレンジック調査などでZedファイルに遭遇した場合に、このツールが役立ちます。😊
1. zed2johnとは何か? John the RipperとZedについて
John the Ripper (JtR)
John the Ripperは、非常に有名で強力なオープンソースのパスワードクラッキングツールです。主にシステムのパスワード強度を監査したり、忘れてしまったパスワードを回復したりする目的で使用されます。多くのオペレーティングシステムで動作し、数百種類ものハッシュ形式や暗号化形式に対応しています。特に、「Jumbo」と呼ばれるコミュニティ版では、対応形式が大幅に拡張されています。
Zed!
Zed! は、主にフランスで利用されているファイルやフォルダを暗号化するためのソフトウェアです。電子メールの添付ファイルやUSBメモリなどで機密情報を安全に交換する目的で使用されることがあります。パスワードまたは証明書を使用してファイルを保護することができます。
zed2johnの役割
John the Ripperは、暗号化されたファイルそのものを直接扱うことはできません。JtRがパスワードを解析するためには、まず対象となるファイルから「パスワードハッシュ」と呼ばれる特定のデータ形式を抽出する必要があります。zed2john
は、この抽出プロセスを実行するための専用ツールです。Zed! で暗号化されたファイル (通常 .zed
拡張子) を入力として受け取り、JtRが理解できる形式のハッシュ文字列を出力します。
zed2john
は、Zed! ファイルをJtRで解析可能にするための「橋渡し」役を担います。🔒
2. zed2johnの入手とインストール
zed2john
は、John the Ripperのパッケージに通常含まれています。特に、多くの追加機能やフォーマット対応が含まれる「John the Ripper Jumbo」バージョンを入手するのが一般的です。
インストール方法
-
Linux (Debian/Ubuntu系):
sudo apt update sudo apt install john
ディストリビューションによっては、
john-data
やlibssl-dev
などの関連パッケージも必要になる場合があります。 -
Linux (Fedora/CentOS/RHEL系):
またはsudo dnf install john
sudo yum install john
-
macOS (Homebrewを使用):
brew install john-jumbo
-
Windows:
John the Ripperの公式サイト (https://www.openwall.com/john/) からWindows向けのバイナリをダウンロードできます。Jumboバージョンを選ぶことをお勧めします。
-
ソースからのビルド:
最新版や特定の機能を利用したい場合は、GitHubリポジトリ (https://github.com/openwall/john) からソースコードをクローンし、ビルドすることも可能です。手順はリポジトリ内の
INSTALL
ドキュメントを参照してください。
zed2johnスクリプトの場所
インストール後、zed2john
(多くの場合 zed2john.py
というPythonスクリプト) は、John the Ripperの実行ファイルと同じディレクトリ、または run
サブディレクトリ (ソースからビルドした場合など) や、システムの共有ディレクトリ (例: Linuxの /usr/share/john/
や /usr/lib/john/
) に配置されていることが多いです。
見つからない場合は、find
コマンドや locate
コマンドで探してみてください。
find /usr -name zed2john.py
locate zed2john.py
zed2john.py
はPythonスクリプトであるため、実行にはPythonインタープリタ (通常Python 3) が必要です。
3. zed2johnの基本的な使い方
zed2john
の使い方は非常にシンプルです。基本的なコマンド構文は以下の通りです。
python /path/to/zed2john.py [Zed暗号化ファイル] > [出力ファイル]
または、zed2john.py
が実行パスに含まれている場合は、
zed2john.py [Zed暗号化ファイル] > [出力ファイル]
ここで、
/path/to/zed2john.py
:zed2john.py
スクリプトへのフルパスまたは相対パスです。環境によっては単にzed2john.py
で実行できる場合もあります。[Zed暗号化ファイル]
: 解析したいZedファイル(例:secret.zed
)を指定します。>
: シェルのリダイレクト機能です。zed2john.py
の標準出力をファイルに書き込みます。[出力ファイル]
: 抽出されたハッシュを保存するファイル名(例:zed_hash.txt
)を指定します。
具体的な実行例
カレントディレクトリにある my_secret_archive.zed
というファイルからハッシュを抽出し、my_hash.txt
というファイルに保存する場合:
# /usr/share/john/ に zed2john.py があると仮定
python /usr/share/john/zed2john.py my_secret_archive.zed > my_hash.txt
成功すると、my_hash.txt
ファイルに以下のような形式のハッシュ文字列が書き込まれます。(これはあくまで例であり、実際の形式はZedのバージョン等により異なる可能性があります)
my_secret_archive.zed:$zed$*0*...(非常に長い文字列)...
この文字列が、John the Ripperが解析できる形式のパスワードハッシュです。ファイル名と、$zed$
で始まる識別子、そしてハッシュデータ本体で構成されています。
zed2john
は元のZedファイルを変更しません。読み取り専用でアクセスします。- 出力は標準出力に行われるため、
>
を使ってファイルにリダイレクトするのが一般的です。 - エラーが発生した場合は、コンソールにエラーメッセージが表示されます。
4. 抽出したハッシュをJohn the Ripperで解析する
zed2john
でハッシュを抽出したら、次はいよいよJohn the Ripperを使ってパスワードの解析(クラッキング)を行います。
基本的なJohn the Ripperの実行
最も基本的な使い方は、John the Ripperの実行ファイル (john
) に、先ほど作成したハッシュファイルを指定するだけです。
john [ハッシュファイル]
例えば、my_hash.txt
を解析する場合は以下のようになります。
john my_hash.txt
このコマンドを実行すると、John the Ripperはデフォルトのモード(通常、Single Crackモード、Wordlistモード、Incrementalモードの順)で解析を開始します。
解析モードとオプション
John the Ripperにはいくつかの解析モードがあり、オプションで指定できます。
-
Wordlistモード (
--wordlist
): 辞書ファイル(単語リスト)を使ってパスワードを試行します。強力な辞書とルールを組み合わせることで効率的に解析できます。john --wordlist=/path/to/password.lst --rules my_hash.txt
--rules
オプションを使うと、辞書の単語に特定の変換(大文字小文字変換、数字追加など)を適用して試行回数を増やせます。 -
Incrementalモード (
--incremental
): 指定された文字セット(例: すべての小文字アルファベット、数字など)を使って、可能なすべての組み合わせを試行します(ブルートフォース攻撃)。パスワードが複雑な場合、非常に時間がかかる可能性があります。
(数字のみで構成されるパスワードを試行)john --incremental=Digits my_hash.txt
- Single Crackモード: ハッシュファイルに含まれるユーザー名やGECOS情報などを基にパスワード候補を生成して試します。デフォルトで最初に試されることが多いモードです。
-
フォーマット指定 (
--format
): John the Ripperがハッシュの形式を自動認識できない場合や、特定の形式で強制的に解析したい場合に指定します。Zedの場合はzed
を指定します。
多くの場合、john --format=zed my_hash.txt
zed2john
が出力するハッシュにはフォーマット情報が含まれているため、自動認識されることが多いです。
解析の進行状況と結果
- 進行状況の確認: 解析中に任意のキー(スペースキーなど)を押すと、現在の進行状況(試行速度、経過時間、現在の候補など)が表示されます。
- 中断と再開:
Ctrl + C
を押すと、現在の状態を保存してセッションを中断できます。再開するには以下のコマンドを実行します。john --restore
- 解析結果の表示: パスワードが見つかると、通常はコンソールに表示され、
$JOHN/john.pot
(Johnのホームディレクトリ内のjohn.pot
ファイル) に保存されます。後で解析結果だけを確認するには、以下のコマンドを使用します。
または、john --show my_hash.txt
--format
を指定してjohn --show --format=zed my_hash.txt
5. zed2johnの対応フォーマットと注意点
zed2john
は便利なツールですが、いくつかの注意点があります。
-
対応するZedのバージョン:
zed2john
が対応しているZed! のバージョンや暗号化アルゴリズムには限りがある可能性があります。古いバージョンのZedファイル用に開発された可能性があり、最新のZed! で採用されている新しい暗号化方式やファイルフォーマットには対応していない場合があります。特に、過去の分析 (例: 2018年頃) では、ZedファイルがMS OfficeのCFB (Compound File Binary) フォーマットをベースにしていることや、PKCS#12のパスワードベース鍵導出関数 (PBKDF) を利用している可能性が指摘されていますが、最新版では変更されている可能性があります。 -
暗号化方式: Zed! はパスワードだけでなく、証明書による暗号化もサポートしている場合があります。
zed2john
が主にパスワードベースの暗号化のみを対象としている場合、証明書で保護されたファイルからはハッシュを抽出できない可能性があります。 -
エラーハンドリング:
zed2john
の実行中にエラーが発生することがあります。- 「File is not a Zed archive」のようなメッセージが表示された場合、対象ファイルがZedファイルではないか、破損している、あるいは
zed2john
が認識できないフォーマットである可能性があります。 - Pythonのトレースバックエラーが表示された場合、スクリプト自体の問題、依存関係の不足、または予期せぬファイル内容が原因である可能性があります。
- 「File is not a Zed archive」のようなメッセージが表示された場合、対象ファイルがZedファイルではないか、破損している、あるいは
-
ツールの更新: John the Ripper Jumboプロジェクトは活発に開発されており、
*2john
ツール群も随時更新されています。もし古いバージョンを使用していて問題が発生する場合は、最新版を試す価値があります。
zed2john
がすべてのZedファイルに対して万能であるとは限りません。特定のバージョンのファイルに対してのみ機能する可能性があることを念頭に置いてください。
6. 実践的なシナリオ例と倫理的注意点
利用シナリオ
zed2john
と John the Ripper の組み合わせは、以下のような状況で役立ちます。
- パスワードの回復: 自分で作成したZedファイルのパスワードを忘れてしまい、ファイルにアクセスできなくなった場合に、パスワードを回復する手段として利用できます。
- セキュリティ監査: 組織内でZed! が利用されている場合、従業員が設定しているパスワードの強度をテストするために使用できます。脆弱なパスワードが使われていないかを確認し、セキュリティポリシーの改善につなげることができます。
- デジタルフォレンジック: コンピュータフォレンジック調査において、証拠として保全されたファイルの中に暗号化されたZedファイルが含まれていた場合、その内容を調査するためにパスワード解析が必要になることがあります。
倫理的な注意点 ⚠️
John the Ripperやzed2john
は強力なツールですが、その使用には倫理的な配慮と法的な責任が伴います。
- 許可のないアクセスは厳禁です。 自分自身が所有するファイル、または明確な許可を得ているファイルに対してのみ、これらのツールを使用してください。他人のZedファイルを許可なく解析しようとする行為は、プライバシーの侵害であり、不正アクセス禁止法などの法律に抵触する可能性があります。
- 目的を明確に。 パスワード回復や正当なセキュリティ評価など、合法かつ倫理的な目的のためにのみ使用してください。
- 結果の取り扱い。 解析によって得られたパスワードや情報は、適切に管理し、不正に利用しないでください。
技術的な知識は、常に責任ある方法で使用する必要があります。
7. まとめ
zed2john
は、John the Ripperスイートの一部として、Zed! で暗号化されたファイルからパスワードハッシュを抽出するための不可欠なユーティリティです。このツールを使うことで、一見アクセス不能に見えるZedファイルの内容を、John the Ripperの強力なパスワード解析能力によって解き明かす道が開かれます。
基本的な使い方は、zed2john.py [Zedファイル] > [ハッシュファイル]
でハッシュを抽出し、次に john [ハッシュファイル]
で解析を開始するという、シンプルながらも効果的なワークフローです。
ただし、zed2john
がすべてのZedバージョンや暗号化方式に対応しているわけではない可能性がある点、そして何よりも、これらのツールは倫理的かつ合法的な目的でのみ使用する必要があることを忘れないでください。
パスワード回復やセキュリティ監査において強力な助けとなる一方で、その力を悪用することは許されません。適切な知識と倫理観を持って、これらのツールを活用しましょう。そして、この経験を通じて、強力なパスワードを設定し、適切に管理することの重要性を再認識するきっかけとなれば幸いです。🛡️✨
コメント