ハッシュ長拡張攻撃

Reading time: 4 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

攻撃の概要

サーバーがデータ秘密追加して、既知の平文データをハッシュ化して署名していると想像してください。もしあなたが以下を知っているなら:

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

その場合、攻撃者データ追加し、以前のデータ + 追加されたデータの有効な署名生成することが可能です。

どうやって?

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

例えば、秘密が「secret」でデータが「data」の場合、「secretdata」のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。
攻撃者が「append」という文字列を追加したい場合、彼は以下のことができます:

  • 64個の「A」のMD5を生成する
  • 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する
  • 文字列「append」を追加する
  • ハッシュを完了させ、その結果のハッシュは「secret」 + 「data」 + 「padding」 + 「append」の有効なものになります

ツール

GitHub - iagox86/hash_extender

参考文献

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

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする