John the RipperでPGPディスク全体の暗号化パスワードをクラックする第一歩
PGP Whole Disk Encryption (PGP WDE) や Symantec Encryption Desktop は、ハードドライブ全体を暗号化することでデータを保護する強力なツールです。しかし、パスワードを忘れてしまったり、セキュリティ監査の一環としてパスワード強度を評価する必要がある場合、この暗号化を解除するのは困難です。
ここで登場するのが pgpwde2john
です。これは、有名なパスワードクラッキングツール John the Ripper (JtR) スイートに含まれるユーティリティの一つで、PGP WDE/Symantec Encryption Desktop で暗号化されたディスクイメージからパスワードの検証に必要な情報(ハッシュ)を抽出するために特別に設計されています。
この記事では、pgpwde2john
の基本的な使い方、出力されるハッシュ形式、そして John the Ripper と連携して実際にパスワードクラックを試みる手順について、詳しく解説していきます。🔑
⚠️ 重要:
パスワードクラッキングツールの使用は、法的な許可と倫理的な配慮が必要です。自身の所有するデータや、明確な許可を得たシステムに対してのみ使用してください。不正アクセスや許可のないデータ復旧は法律で禁止されています。
pgpwde2johnとは? 🤔
pgpwde2john
は、John the Ripper スイートに含まれるPythonスクリプト (pgpwde2john.py
) です。その主な目的は、PGP WDE (Pretty Good Privacy Whole Disk Encryption) や、その後継製品である Symantec Encryption Desktop によって暗号化されたディスク、またはそのディスクイメージファイルから、パスワードハッシュ(より正確にはパスワード検証に必要なデータ)を抽出することです。
PGP WDE は、ディスク全体(ブートセクター、システムファイル、スワップファイルを含む)を AES256 などのアルゴリズムで暗号化します。アクセスするには通常、起動時などにパスフレーズの入力が必要です。pgpwde2john
は、このパスフレーズ認証プロセスに関連する暗号化されたメタデータをディスク(またはイメージ)から読み取り、John the Ripper が解析できる形式に変換します。
抽出されたハッシュは、それ自体がパスワードそのものではありません。しかし、このハッシュに対して John the Ripper が様々なパスワード候補(辞書攻撃、ブルートフォース攻撃など)を試行することで、元のパスフレーズを特定できる可能性があります。
主な機能:
- PGP WDE / Symantec Encryption Desktop で暗号化された物理ディスクまたはディスクイメージファイル (例:
.raw
,.dd
,.img
) を入力として受け付けます。 - 暗号化メタデータをスキャンし、パスワード検証に必要な情報を特定します。
- 抽出した情報を John the Ripper が認識できる特定のフォーマット (
pgpwde
フォーマット) に変換して出力します。
このツールは、フォレンジック調査、セキュリティ監査、またはパスワードリカバリーのシナリオで非常に役立ちます。
前提条件とインストール 🛠️
pgpwde2john
を使用するには、まず John the Ripper (Jumbo バージョン推奨) がシステムにインストールされている必要があります。pgpwde2john
は John the Ripper の一部として提供されるため、通常は JtR をインストールすれば自動的に利用可能になります。
John the Ripper のインストール (一般的な Linux ディストリビューションの場合):
多くの Linux ディストリビューションでは、パッケージマネージャを使用して John the Ripper を簡単にインストールできます。
Debian / Ubuntu ベース:
sudo apt update
sudo apt install john
Fedora / CentOS / RHEL ベース:
sudo dnf install john
Arch Linux ベース:
sudo pacman -S john
Kali Linux などのペネトレーションテスト用ディストリビューションには、多くの場合、John the Ripper がプリインストールされています。
インストール後、pgpwde2john.py
スクリプトが JtR の実行パス内 (通常は /usr/share/john/
や /opt/john/
などのサブディレクトリ内) に存在するか確認してください。場合によっては、フルパスを指定してスクリプトを実行する必要があります。
# スクリプトの場所を探す例
find /usr -name pgpwde2john.py
find /opt -name pgpwde2john.py
見つかったパス (例: /usr/share/john/pgpwde2john.py
) を、後述するコマンド例で使用します。環境によっては pgpwde2john
という名前で直接実行できる場合もあります。
また、pgpwde2john.py
は Python スクリプトであるため、Python 実行環境 (通常は Python 2 または Python 3) が必要です。
pgpwde2john の使い方 🚀
pgpwde2john
の基本的な使い方は非常にシンプルです。スクリプトを実行し、引数として PGP WDE で暗号化されたディスクデバイスまたはディスクイメージファイルを指定します。
基本構文:
[python_executable] [path_to_script/]pgpwde2john.py <encrypted_disk_or_image>
または、パスが通っていれば:
pgpwde2john <encrypted_disk_or_image>
パラメータ解説:
[python_executable]
: Python の実行ファイル (例:python
,python3
)。スクリプトが実行権限を持ち、シバン (#!/usr/bin/env python
など) が正しく設定されていれば不要な場合があります。[path_to_script/]pgpwde2john.py
:pgpwde2john.py
スクリプトへのパス。システムによってはpgpwde2john
だけで実行できることもあります。<encrypted_disk_or_image>
: PGP WDE で暗号化された物理ディスクのデバイスファイル (例:/dev/sdb
) またはディスクイメージファイル (例:hdd.raw
,disk_image.dd
) を指定します。
実行例:
1. ディスクイメージファイル encrypted_drive.img
からハッシュを抽出する場合:
# スクリプトのパスが /usr/share/john/ であると仮定
python3 /usr/share/john/pgpwde2john.py encrypted_drive.img
または、直接実行できる場合:
pgpwde2john encrypted_drive.img
2. 物理ディスク /dev/sdc
(注意: 対象デバイスを間違えないように!) からハッシュを抽出する場合:
sudo python3 /usr/share/john/pgpwde2john.py /dev/sdc
(物理デバイスへの直接アクセスには通常 root 権限が必要です)
出力:
成功すると、pgpwde2john
は標準出力に John the Ripper が解釈できる形式のハッシュ文字列を出力します。この出力は通常、ファイルにリダイレクトして保存します。
pgpwde2john encrypted_drive.img > pgpwde_hash.txt
出力されるハッシュ文字列の例 (実際の値は異なります):
encrypted_drive.img:$pgpwde$*1*... (長い16進数の文字列) ...
この文字列には、ファイル名 (またはデバイス名)、ハッシュタイプを示す識別子 ($pgpwde$
)、バージョン情報、ソルト、そしてパスワード検証に必要な暗号化されたデータなどが含まれています。
dd
や FTK Imager
, Guymager
などのツールを使って、対象ディスクの完全なコピーを作成することが推奨されます。これにより、元のディスクを変更するリスクなしに分析できます。
John the Ripper との連携 🤝
pgpwde2john
で抽出したハッシュは、John the Ripper を使ってクラックを試みることができます。
基本的なクラックコマンド:
john [options] <hash_file>
パラメータ解説:
[options]
: John the Ripper の動作を制御するオプション。よく使われるものに以下があります。--wordlist=<wordlist_file>
: 辞書ファイルを用いた攻撃を指定します。rockyou.txt
などが有名です。--rules
: 辞書攻撃に単語変形ルールを適用します (例:password
->Password123
)。--incremental[=<mode>]
: インクリメンタルモード(ブルートフォース)を指定します。全ての文字組み合わせを試します。--format=pgpwde
: ハッシュ形式を明示的に指定します。通常 JtR は自動検出しますが、指定すると確実です。--show
: すでにクラックされたパスワードを表示します。
<hash_file>
:pgpwde2john
で生成したハッシュを含むファイル (例:pgpwde_hash.txt
)。
実行例:
1. 辞書ファイル rockyou.txt
を使ってクラックを試みる:
john --wordlist=/usr/share/wordlists/rockyou.txt --format=pgpwde pgpwde_hash.txt
(rockyou.txt
のパスは環境によって異なります)
2. インクリメンタルモード(全ての文字種)でクラックを試みる (時間がかかる可能性があります):
john --incremental --format=pgpwde pgpwde_hash.txt
3. クラックが成功したか確認する:
john --show pgpwde_hash.txt
クラックに成功すると、以下のような形式でハッシュと対応するパスワードが表示されます。
encrypted_drive.img:CorrectPassword123: ... (残りのハッシュ情報) ...
1 password hash cracked, 0 left
クラックにかかる時間は、パスワードの複雑さ、使用する辞書の質、マシンの計算能力に大きく依存します。複雑なパスワードの場合、クラックには非常に長い時間(数日、数週間、あるいはそれ以上)がかかるか、現実的な時間内には完了しない可能性もあります。
注意点とトラブルシューティング ⚙️
- ディスク/イメージの破損: 対象のディスクやイメージファイルが破損している場合、
pgpwde2john
はハッシュを正しく抽出できないことがあります。可能であれば、別の方法でイメージを作成し直してみてください。 - 非対応の PGP WDE バージョン: 非常に古い、または特殊なバージョンの PGP WDE で暗号化されている場合、
pgpwde2john
が対応していない可能性があります。John the Ripper のドキュメントやコミュニティで情報を確認してください。 - パーミッションエラー: 物理デバイス (例:
/dev/sdc
) にアクセスする場合、root 権限が必要です。sudo
を使ってコマンドを実行してください。ディスクイメージファイルの場合も、読み取り権限があることを確認してください。 - Python 環境の問題:
pgpwde2john.py
が特定の Python バージョン (Python 2 または 3) に依存している場合があります。エラーメッセージを確認し、適切な Python インタプリタで実行してみてください (例:python2 /path/to/pgpwde2john.py ...
)。 - ハッシュが出力されない: ディスクやイメージの先頭部分に必要なメタデータが見つからない場合、ハッシュが出力されないことがあります。ディスク全体が正しくイメージ化されているか、対象が本当に PGP WDE で暗号化されているか確認してください。
問題が発生した場合は、John the Ripper のドキュメント、GitHub リポジトリの Issues、関連するフォーラム (例: Openwall の john-users メーリングリスト) などで類似の問題が報告されていないか確認することをお勧めします。
セキュリティに関する考察 🔒
pgpwde2john
と John the Ripper の組み合わせは、PGP WDE で保護されたデータへのアクセス回復やセキュリティ評価に強力なツールとなり得ます。しかし、この能力は同時にセキュリティリスクも示唆しています。
- 強力なパスフレーズの重要性: このツールが存在すること自体が、推測されにくい、長く複雑なパスフレーズを使用することの重要性を強調しています。短い、辞書に載っている単語、単純なパターンに基づいたパスフレーズは、比較的短時間でクラックされる可能性があります。
- 物理的アクセスのリスク: 暗号化されたディスクやそのイメージに物理的にアクセスされると、
pgpwde2john
のようなツールでパスワードクラックが試みられる可能性があります。デバイスの物理的な保護も重要です。 - ハッシュの管理: 抽出されたハッシュデータ (
pgpwde_hash.txt
など) は機密情報です。パスワードがクラックされなくても、ハッシュ自体が漏洩すれば、第三者がオフラインでクラックを試みることが可能になります。ハッシュファイルは安全に管理し、不要になったら確実に削除してください。 - 倫理的な使用: 再度強調しますが、これらのツールは正当な目的(自分のデータの回復、許可を得たペネトレーションテストなど)にのみ使用されるべきです。
まとめ ✨
pgpwde2john
は、John the Ripper スイートの強力なユーティリティであり、PGP Whole Disk Encryption や Symantec Encryption Desktop で暗号化されたディスクからパスワードハッシュを抽出する上で不可欠なツールです。
この記事では、その基本的な使い方、John the Ripper との連携方法、そして使用上の注意点について解説しました。
- John the Ripper をインストールします。
pgpwde2john
(またはpgpwde2john.py
) を使って、暗号化されたディスクやイメージファイルからハッシュを抽出します (例:pgpwde2john disk.img > hash.txt
)。- John the Ripper を使って、抽出したハッシュファイルに対するパスワードクラックを試みます (例:
john --wordlist=pass.lst hash.txt
)。 - クラックが成功すれば、
john --show hash.txt
でパスワードを確認できます。
パスワードクラッキングは計算集約的なプロセスであり、成功が保証されるものではありません。しかし、適切な知識とツールがあれば、忘れられたパスワードの回復やシステムのセキュリティ評価に役立てることができます。常に法と倫理に従ってツールを使用することを忘れないでください。🛡️ Happy cracking (ethically)! 😊
コメント