Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Padding Oracle Attack

Padding Oracle Attack

zhouyunao

June 14, 2019
Tweet

More Decks by zhouyunao

Other Decks in Technology

Transcript

  1. n 特徴 (あくまでも⾃分経験上の話) l CBCモード ←必須 l AES類のブロック暗号 ←必須 l

    サーバーが復号化をやってくれる l サーバーコードは⼤概公開 l IVまでこっちから送られる ←場合によって 2019/6/13 m1z0r3 Padding Oracle Attack
  2. n 何ができる︖ l Decryption Attack 難易度:⾼ 暗号⽂の復号ができる 平⽂はflagの場合 l Encryption

    Attack 難易度:中 暗号⽂の改造による平⽂の改ざん 平⽂を特定なコマンド/データに改ざんし認証をバイパスできる 2019/6/13 m1z0r3 Padding Oracle Attack
  3. n 本来なら ) ⨁ 2 = ” … ” n

    平⽂をすり替える為に差を計算 = “ … ”⨁” … ” n 差と⼀個前のブロックとxor )⨁⨁(%) = “ … ” 2019/6/13 m1z0r3 Encryption Attack
  4. n それをサーバーに送ると 2019/6/13 m1z0r3 Encryption Attack # 01…8c % +

    + + # xxxxx admin… 最後のブロックを変える為に前のブロックを犠牲にする ※全ブロックを弄る⽅法もあります(後ほど説明)
  5. n さらなる特徴(経験上) l PKCS7を使いがち l Padding errorの時のエラー⽂が特殊 n どうやる︖ 簡単にいうと

    前のブロックをいじって、違うpaddingの形式に復号させ、 求めたいブロック平⽂⼀歩⼿前のDec(ct)を求めて、平⽂を取り 出す 2019/6/13 m1z0r3 Decryption Attack
  6. 2019/6/13 m1z0r3 Decryption Attack 1c a d m i n

    u s e r 07 07 07 07 07 07 01 xx + + Dec Dec + xxxxx ) ブルートフォース ※適当に埋めた
  7. 2019/6/13 m1z0r3 Decryption Attack 2f 1c a d m i

    n u s e r 07 07 07 07 07 02 02 yy xx 01 02 Dec + ) + Dec xxxxx + + + 01 ブルートフォース済み の部分を新しいpadding 形式に合わせる
  8. 2019/6/13 m1z0r3 Decryption Attack 3e 2f 1c a d m

    i n u s e r 07 07 07 07 03 03 03 zz yy xx 02 01 03 03 + + + + Dec xxxxx Dec + )
  9. 2019/6/13 m1z0r3 Decryption Attack 4a 3e 2f 1c a d

    m i n u s e r 07 07 07 04 04 04 04 aa zz yy xx 03 02 01 04 04 04 + + + + Dec xxxxx Dec + )
  10. 2019/6/13 m1z0r3 Decryption Attack gy f1 ez dx cp bk

    ag 9l 8i 7u 6n 5b 4a 3e 2f 1c 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 qq zz cc vv ee nn ll hh gg bb ee ff aa zz yy xx 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 + + + + Dec xxxxx Dec + ) 全部¥x10になる為既知明⽂か らDec(ct1)を計算して最後ct0と xor取り最後のブロックを算出
  11. 2019/6/13 m1z0r3 Decryption Attack gy f1 ez dx cp bk

    ag 9l 8i 7u 6n 5b 4a 3e 2f 1c 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 qq zz cc vv ee nn ll hh gg bb ee ff aa zz yy xx 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 + + + + Dec xxxxx Dec + ) ′# ′) ′# ′) が10(padding)に埋め 尽くされた時: ′# ⨁ 1010. . = () ) () )⨁ # = )
  12. 2019/6/13 m1z0r3 全ブロックのEncryption Attack # 01…8c % + + +

    # xxxxx user… + # admin… n Step 1 最後の2ブロックから差分を計算
  13. n Step 3 2019/6/13 m1z0r3 全ブロックのEncryption Attack xxxx 01…8c %

    + + + # xxxxx user… + # admin… + ) I am… + % Yes… 最後は1ブロック⽬を すりかえられるよう に差分を計算
  14. n picoctf 2018 magic padding oracle l De+Encryption Attack l

    https://kusuwada.hatenablog.com/entry/2019/04/17/052525 n INS’hack 2019 Jean-Sébastien Bash l Encryption Attack l https://www.hackademint.org/Jean-Sebastien_Bash 2019/6/13 m1z0r3 実践問題