hacktricks/crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md

5.8 KiB
Raw Blame History

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

CBC

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

CBC-MAC

Cipher block chaining message authentication codeCBC-MACは、暗号学で使用される方法です。メッセージをブロックごとに暗号化し、各ブロックの暗号化が前のブロックにリンクされるように機能します。このプロセスにより、元のメッセージの1ビットでも変更すると、暗号化されたデータの最後のブロックに予測不可能な変更が生じます。この変更を行うか逆にするには、暗号化キーが必要であり、セキュリティが確保されます。

メッセージmのCBC-MACを計算するには、mをゼロ初期化ベクトルでCBCモードで暗号化し、最後のブロックを保持します。次の図は、秘密鍵kとブロック暗号Eを使用して、メッセージをブロックhttps://wikimedia.org/api/rest_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5でCBC-MACを計算する過程を示しています。

https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC_structure_en.svg/570px-CBC-MAC_structure_en.svg.png

脆弱性

通常、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. cookieをs32に設定すると、ユーザーAdministratorの有効なcookieになります。

IVの制御攻撃

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

参考文献

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

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}