はじめに
この実験では、強力なオープンソースのパスワードクラッキングツールである John the Ripper を使用して、パスワードで保護された PDF ドキュメントをクラッキングするプロセスを探求します。安全な PDF の作成方法、そのハッシュの抽出方法、そしてパスワードのクラッキングを試みる方法を学びます。この実験では、さまざまな PDF 暗号化タイプについても取り上げ、PDF ドキュメントを保護するためのベストプラクティスを提供します。これらの概念を理解することは、サイバーセキュリティの専門家にとっても、PDF 形式で機密情報を扱うすべての人にとっても不可欠です。
パスワードで保護された PDF ドキュメントの作成
このステップでは、簡単なテキストファイルを作成し、それをパスワードで保護された PDF ドキュメントに変換します。この目的のために enscript および ps2pdf コマンドを使用します。enscript はテキストファイルを PostScript に変換し、ps2pdf は PostScript を PDF に変換します。
まず、~/project ディレクトリに secret.txt という名前の簡単なテキストファイルを作成します。
echo "This is a secret document." > ~/project/secret.txt
cat ~/project/secret.txt
次に、secret.txt を PostScript ファイルに変換します。
enscript -p ~/project/secret.ps ~/project/secret.txt
ls -l ~/project/secret.ps
次に、PostScript ファイルをパスワードで保護された PDF に変換します。ユーザーパスワードとオーナーパスワードの両方を labex123 に設定します。ユーザーパスワードはドキュメントを開くことを制限し、オーナーパスワードは印刷や編集などの権限を制限します。
ps2pdf -sOwnerPassword=labex123 -sUserPassword=labex123 ~/project/secret.ps ~/project/protected.pdf
ls -l ~/project/protected.pdf
これで、パスワードで保護された PDF ドキュメントを正常に作成しました。
pdf2john を使用して PDF からハッシュを抽出する
このステップでは、pdf2john.py を使用して、パスワードで保護された PDF ドキュメントからハッシュを抽出します。pdf2john.py は John the Ripper に付属する Python スクリプトで、PDF ファイルからクラック可能なハッシュを抽出するように設計されています。
まず、pdf2john.py スクリプトを見つけます。通常、John the Ripper のインストールの run ディレクトリにあります。
find /usr/share/john -name pdf2john.py
次に、pdf2john.py を使用して ~/project/protected.pdf からハッシュを抽出し、pdf_hash.txt という名前のファイルに保存します。
python3 /usr/share/john/pdf2john.py ~/project/protected.pdf > ~/project/pdf_hash.txt
cat ~/project/pdf_hash.txt
出力には、John the Ripper がクラックを試みることができるハッシュ文字列が表示されます。フォーマットには通常、PDF のバージョン、暗号化タイプ、および実際のハッシュに関する情報が含まれます。
John the Ripper で PDF ハッシュをクラックする
このステップでは、John the Ripper を使用して抽出した PDF ハッシュをクラックします。このデモンストレーションでは、簡単な単語リストを使用します。
まず、~/project ディレクトリに wordlist.txt という名前の単語リストファイルを作成します。labex123(正しいパスワード)と、その他の一般的なパスワードをいくつか含めます。
echo -e "password\n123456\nlabex123\nqwerty" > ~/project/wordlist.txt
cat ~/project/wordlist.txt
次に、wordlist.txt を使用して John the Ripper で pdf_hash.txt のハッシュをクラックします。
john --wordlist=~/project/wordlist.txt ~/project/pdf_hash.txt
John the Ripper はハッシュと単語リストを処理します。一致が見つかった場合、クラックされたパスワードが表示されます。
クラック後、John が見つけて保存したクラックされたパスワードを表示できます。
john --show ~/project/pdf_hash.txt
protected.pdf のクラックされたパスワードとして labex123 が表示されるはずです。
PDF 暗号化タイプを理解する
このステップでは、さまざまな PDF 暗号化タイプと、それらが PDF ドキュメントのセキュリティにどのように影響するかを学びます。PDF 暗号化は進化しており、新しいバージョンはより強力な保護を提供します。
PDF 暗号化は通常、RC4 や AES のようなアルゴリズムを使用します。キー長も異なり、キー長が長いほどセキュリティが高まります。
- RC4 40-bit: これは古く、弱い暗号化方法であり、簡単にクラックできます。
- RC4 128-bit: より一般的な古い標準ですが、最新のクラッキング技術に対して脆弱です。
- AES 128-bit: より強力な暗号化標準であり、ブルートフォース攻撃に対する耐性が高まっています。
- AES 256-bit: 現在 PDF で利用可能な最も強力な暗号化であり、堅牢な保護を提供します。
exiftool を使用して、PDF の暗号化の詳細を検査できます。作成した protected.pdf を確認してみましょう。
exiftool ~/project/protected.pdf | grep "Encryption"
出力には、PDF の作成に使用されたツールやバージョンに応じて、Encryption : RC4 128-bit や AES 256-bit のような詳細が表示されます。私たちの ps2pdf コマンドは、古い互換性のために通常デフォルトで RC4 128-bit を使用します。より強力な暗号化には、特定のオプションまたは新しい PDF 作成ツールが必要です。
暗号化タイプを理解することは、パスワードをクラックするために必要な労力に直接影響するため重要です。より弱い暗号化タイプは、クラックがはるかに高速です。
PDF ドキュメントを適切に保護する
このステップでは、不正アクセスやクラッキングを防ぐために PDF ドキュメントを保護するためのベストプラクティスを学びます。John the Ripper のようなツールは弱いパスワードをクラックできますが、強力なセキュリティ対策はそれを非常に困難または不可能にすることができます。
PDF ドキュメントを保護するための主な推奨事項は次のとおりです。
強力なパスワードを使用する: これは最も重要なステップです。強力なパスワードは次のとおりであるべきです。
- 長い(少なくとも 12〜16 文字)。
- 複雑(大文字、小文字、数字、記号の組み合わせ)。
- ユニーク(他のアカウントやドキュメントで使用されていない)。
- ランダム(辞書にある単語や個人情報は避ける)。
強力な暗号化アルゴリズムを使用する: 常に利用可能な最も高い暗号化標準、できれば AES 256-bit を選択してください。PDF を作成する際は、ソフトウェアが最新の暗号化を使用するように構成されていることを確認してください。
ユーザーパスワードとオーナーパスワードの両方を設定する:
- ユーザーパスワード: ドキュメントを開くことを制限します。これが主な保護です。
- オーナーパスワード: 印刷、コンテンツのコピー、編集、コメントの追加などの権限を制限します。ユーザーパスワードが知られていても、オーナーパスワードは特定の操作を防ぐことができます。
パスワードをドキュメントと一緒に保存しない: PDF のパスワードを、PDF 自体と同じ場所や同じシステムに保存しないでください。
ソフトウェアを定期的に更新する: PDF 作成および表示ソフトウェアを最新の状態に保ち、最新のセキュリティパッチと暗号化標準の恩恵を受けられるようにしてください。
デジタル署名を検討する: 真正性と完全性のために、デジタル署名はドキュメントの出所を確認し、改ざんされていないことを保証できます。
これらのプラクティスに従うことで、PDF ドキュメントのセキュリティを大幅に強化し、機密情報を不正アクセスから保護することができます。
まとめ
この実験では、John the Ripper を使用してパスワードで保護された PDF ドキュメントをクラックする実践的な経験を積みました。パスワードで保護された PDF を作成し、pdf2john.py を使用してそのハッシュを抽出し、その後パスワードを正常にクラックする方法を学びました。さらに、さまざまな PDF 暗号化タイプを調査し、それらがセキュリティに与える影響を理解しました。最後に、PDF ドキュメントを適切に保護するための重要なベストプラクティスを確認し、強力なパスワードと最新の暗号化標準の重要性を強調しました。この知識は、機密情報を保護し、PDF ファイルの潜在的な脆弱性を理解するために不可欠です。


