Cipher Block Chaining CBC-MAC

Підтримайте HackTricks

CBC

Якщо cookie - це тільки ім'я користувача (або перша частина cookie - це ім'я користувача) і ви хочете видачу себе за користувача "адміністратор". Тоді ви можете створити ім'я користувача "bdmin" і провести брутфорс першого байта cookie.

CBC-MAC

Шифрувальний код аутентифікації повідомлень з ланцюжком блоків (CBC-MAC) - це метод, що використовується в криптографії. Він працює шляхом шифрування повідомлення блок за блоком, де шифрування кожного блоку пов'язане з попереднім. Цей процес створює ланцюжок блоків, який гарантує, що зміна навіть одного біта в оригінальному повідомленні призведе до непередбачуваної зміни в останньому блоку зашифрованих даних. Для внесення або скасування такої зміни потрібний ключ шифрування, що забезпечує безпеку.

Вразливість

Зазвичай з CBC-MAC використовується IV рівний 0. Це проблема, оскільки 2 відомі повідомлення (m1 та m2) незалежно генеруватимуть 2 підписи (s1 та s2). Отже:

  • 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 байт:

  • Administ

  • rator\00\00\00

Ви можете створити ім'я користувача Administ (m1) та отримати підпис (s1). Потім ви можете створити ім'я користувача, яке є результатом rator\00\00\00 XOR s1. Це згенерує E(m2 XOR s1 XOR 0), яке є s32. тепер ви можете використовувати s32 як підпис повного імені Адміністратор.

Резюме

  1. Отримайте підпис імені користувача Administ (m1), який є s1

  2. Отримайте підпис імені користувача rator\x00\x00\x00 XOR s1 XOR 0, який є s32**.**

  3. Встановіть cookie на s32 і він буде дійсним cookie для користувача Адміністратор.

Керування атакою IV

Якщо ви можете контролювати використаний IV, атака може бути дуже простою. Якщо cookie - це просто зашифроване ім'я користувача, для видачі себе за користувача "адміністратор" ви можете створити користувача "Адміністратор" і отримаєте його cookie. Тепер, якщо ви можете контролювати IV, ви можете змінити перший байт IV так, що IV[0] XOR "A" == IV'[0] XOR "a" і згенерувати cookie для користувача Адміністратор. Цей cookie буде дійсним для видачі себе за користувача адміністратор з початковим IV.

Посилання

Додаткова інформація за посиланням https://en.wikipedia.org/wiki/CBC-MAC

Підтримайте HackTricks

Last updated