hacktricks/crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md
2024-04-06 18:36:04 +00:00

6.1 KiB
Raw Blame History

htARTEHackTricks AWS Red Team Expert を通じてゼロからヒーローまでAWSハッキングを学ぶ

HackTricksをサポートする他の方法

CBC

もしクッキーユーザー名だけ(またはクッキーの最初の部分がユーザー名)であり、ユーザー名を "admin" に偽装したい場合、ユーザー名 "bdmin" を作成し、クッキーの最初のバイトブルートフォースすることができます。

CBC-MAC

暗号学において、Cipher Block Chaining Message Authentication CodeCBC-MACはブロック暗号からメッセージ認証コードを構築するための技術です。メッセージは、いくつかのブロック暗号アルゴリズムをCBCモードで暗号化して、前のブロックの適切な暗号化に依存するブロックの連鎖を作成します。この相互依存性により、平文のビットを変更すると、最終的な暗号化されたブロックが予測できず、鍵を知らないと対抗できない方法で変更されます。

メッセージ m の CBC-MAC を計算するには、m をゼロ初期化ベクトルで CBC モードで暗号化し、最後のブロックを保持します。次の図は、秘密鍵 k とブロック暗号 E を使用して、ブロックm_{1}\|m_{2}\|\cdots \|m_{x} から CBC-MAC を計算する構造を示しています:

CBC-MAC structure (en).svg

脆弱性

通常、CBC-MAC では使用されるIV は 0です。
これは、2つの既知のメッセージm1m2が独立して2つの署名s1s2)を生成するという問題があります。つまり:

  • E(m1 XOR 0) = s1
  • E(m2 XOR 0) = s2

その後、m1 と m2 を連結したメッセージm3は、2つの署名s31 と s32を生成します

  • E(m1 XOR 0) = s31 = s1
  • E(m2 XOR s1) = s32

これは、暗号の鍵を知らなくても計算可能です。

8 バイトのブロックで名前 Administrator を暗号化していると想像してください:

  • Administ
  • rator\00\00\00

Administm1の署名s1を取得できます。
次に、rator\00\00\00 XOR s1 の結果となるユーザー名を作成できます。これにより E(m2 XOR s1 XOR 0) が生成され、s32 となります。
これで、s32 を Administrator のフルネームの署名として使用できます。

要約

  1. ユーザー名 Administm1の署名である s1 を取得します
  2. ユーザー名 rator\x00\x00\x00 XOR s1 XOR 0 の署名である s32 を取得します**。**
  3. クッキーを s32 に設定すると、ユーザー Administrator の有効なクッキーになります。

IV を制御する攻撃

使用される IV を制御できる場合、攻撃は非常に簡単になります。
クッキーが単に暗号化されたユーザー名である場合、ユーザー "administrator" を偽装するためにユーザー "Administrator" を作成し、そのクッキーを取得できます。
そして、IV を制御できる場合、IV の最初のバイトを変更して IV[0] XOR "A" == IV'[0] XOR "a" とし、ユーザー Administrator のクッキーを再生成できます。このクッキーは、初期の IVadministrator ユーザーを偽装するために有効です。

参考文献

詳細はhttps://en.wikipedia.org/wiki/CBC-MACを参照してください。

htARTEHackTricks AWS Red Team Expert を通じてゼロからヒーローまでAWSハッキングを学ぶ

HackTricksをサポートする他の方法