web-dev-qa-db-ja.com

John the ripperを使用してパスワードで保護されたPDFファイルをクラックする

パスワードを解読するためにPDFファイルからJohnにハッシュを提供した後、正確にはどうなりますか?

Johnはファイルからパスワードハッシュのみを抽出してそれを処理しますか、それとも他に何かありますか?

4
rats20

通常、PDF=の場合に分割するターゲットハッシュは、ユーザーのパスワードから導出されるユーザーハッシュです。APDFは2つ実行します暗号化されたパスワードが入力されたときのことPDF-

  1. ユーザーパスワードから対称キーを取得します。これは、ドキュメントの暗号化に使用されるキーです。
  2. パスワードからハッシュを導き出し、それをドキュメントメタデータのユーザーハッシュと比較して、パスワードが正しいかどうかを確認します。

PDFは、ハッシュを計算する前に対称鍵を実際に導出するという点で奇妙です。実際、対称鍵はハッシュの計算に使用されます。ハッシュを生成するプロセスは次のとおりです。

  1. ユーザーパスワードから対称キーを取得します。
  2. 次の値を連結して、結果をMD5ハッシュ関数に渡します。
    • 32バイトのパディング文字列(仕様で定義)
    • 16バイトのドキュメントID(ドキュメントメタデータに含まれる)
  3. 手順1の対称キーを使用して、RC4経由のMD5呼び出しの出力を暗号化します。
  4. i = 1から19に対して以下を実行します。
    • 手順1の対称キーのすべてのバイトをiでXORして、新しいRC4キーを作成します。
    • 前のRC4呼び出しの出力を取得し、新しいRC4キーで暗号化します。
  5. 最後のRC4呼び出しの出力に16バイトの任意のパディングを追加します。これはユーザーハッシュです。 (ユーザーパスワードを検証するための比較では、ユーザーハッシュのパディングバイトがスローされ、最初の16バイトのみが確認されるため、ユーザーハッシュがパディングされる理由は明らかではありません。)

John the Ripperは、ドキュメントメタデータのハッシュと一致するユーザーハッシュ(つまり、提供されます)。ハッシュの導出はMD5とRC4のみを使用するため(どちらのラウンドも多くない)、短時間で多くのパスワードを試すのは非常に簡単なので、PDFは非常に影響を受けやすいブルートフォース攻撃と辞書攻撃に実際には、全体のアルゴリズムはかなり奇妙であり、パスワードで保護されたPDFのセキュリティにそれほど自信を植え付けていません。

6
puzzlepalace

ジョンはさまざまな種類のハッシュに取り組んでいます。

pdf2johnなどのユーティリティを使用してpdfファイルからハッシュを抽出し、通常どおりjohnでクラックを開始できます。

関連- 暗号化された内部のハッシュを抽出するにはどうすればよいですかPDF file?

編集:実際のハッシュクラッキングの仕組み

メッセージのダイジェストは、ハッシュを作成するプロセスです。いくつかのダイジェスト機能でメッセージを受け取り、ハッシュを取得します。この種の関数は一方向関数と呼ばれます。つまり、いったんメッセージをダイジェストすると、この関数を元に戻してハッシュから戻すことはできません。元のメッセージに関する情報は、プロセス中に回復不能に失われます。

それであなたは何ができますか?複数の単語のハッシュを作成し、元のメッセージのハッシュと照合して、メッセージを再現することができます。生成されたハッシュが元のメッセージのハッシュと等しい場合、そのハッシュの生成に使用したWordが元のメッセージと等しいことがわかります。

これは基本的に、JohnTheRipperでのパスワードクラッキングのしくみです。

クラッキングに使用される単語は、段階的に(ブルートフォース)または辞書を使用して生成される場合があります。

あなたはjohnのクラッキングモードについて読むことができます ここ

パスワードハッシュについて詳しくは、こちらをご覧ください なぜハッシュ関数は一方向なのですか?アルゴリズムを知っているのに、なぜアルゴリズムから入力を計算できないのですか?

3
proslaniec