hacktricks/cryptography/hash-length-extension-attack.md
2023-07-07 23:42:27 +00:00

5.7 KiB
Raw Blame History

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

攻撃の概要

あるサーバーが、既知のクリアテキストデータに秘密情報追加し、そのデータをハッシュ化して署名していると想像してください。以下の情報がわかる場合:

  • 秘密情報の長さ(これは与えられた長さ範囲からもブルートフォースできます)
  • クリアテキストデータ
  • アルゴリズム(この攻撃に対して脆弱)
  • パディングが既知である
  • 通常、デフォルトのパディングが使用されるため、他の3つの要件が満たされている場合、これも満たされます
  • パディングは秘密情報+データの長さによって異なるため、秘密情報の長さが必要です

すると、攻撃者データを追加し、前のデータ+追加されたデータの有効な署名生成することができます。

方法

基本的に、脆弱なアルゴリズムは、まずデータのブロックをハッシュ化し、その後、以前に作成されたハッシュ(状態)から次のデータのブロック追加してハッシュ化します。

例えば、秘密情報が「secret」でデータが「data」である場合、"secretdata"のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。
攻撃者が文字列「append」を追加したい場合、次の手順を実行できます

  • 64個の「A」のMD5を生成します。
  • 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更します。
  • 文字列「append」を追加します。
  • ハッシュを終了し、結果のハッシュは「secret」+「data」+「パディング」+「append」に対して有効なハッシュになります。

ツール

{% embed url="https://github.com/iagox86/hash_extender" %}

参考文献

この攻撃については、https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacksで詳しく説明されています。

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥