Взлом Wi-Fi мережі за 5 хвилин. Опис уразливості

Уразливість не нова, але через відсутність матеріалів у «РУ» сегменті — вирішив написати цю статтю.

Базово про WPS:WPS — Wi-Fi Protected Setup. Друга назва QSS — Quick Security Setup.
Стандарт розроблений для спрощення процесу установки бездротової мережі.
WPS дозволяє підключиться двома різними способами:
— введення 8-ми значний пін-коду (зазвичай вказується на звороті роутера)
— натисканням спеціально призначеної для цього кнопки на роутері

PIN являє собою код з 8 цифр, 8я — чек сума. Брут такого коду, з урахуванням захисту від перебору, може зайняти до декількох днів.

В кінці 2014 року фахівець з комп’ютерної безпеки Домінік Бонгард (Dominique Bongard) знайшов уразливість в WPS, яка дозволила зламати Wi-Fi роутер за кілька хвилин.

Проблема була в генерації випадкових чисел (E-S1 і E-S2) на багатьох роутерах. Якщо ми дізнаємося ці числа — ми зможемо легко дізнатися WPS pin, так як саме вони використовуються в функції криптографічного захисту від брутфорса по отриманню WPS pin.
Роутер віддає хеш, згенерований з використанням WPS pin і даних (E-S1 і E-S2) чисел, що б довести, що він його знає (це зроблено для захисту від підключення до фейкової точці, яка могла б просто прийняти ваш пароль і слухати трафік).
E-S1 і E-S2 використовуються в генерації E-Hash1, E-Hash2, які в свою чергу отримаємо від роутера в повідомленні M3.

WPS протокол

WPS протокол

Важливими тут є: M1, M2, M3.
Повідомлення M1 — роутер відправляє клієнту N1, Description, PKE.
Повідомлення M2 — клієнт відправляє роутеру N1, N2, PKR, Auth.
Auth хеш — від першого і другого повідомлень.

І найважливіше повідомлення M3 — роутер відправляє клієнту E-Hash1, E-Hash2.

 

E-Hash1 = HMAC-SHA-256(authkey) (E-S1 | PSK1 | PKE | PKR)
 
E-Hash2 = HMAC-SHA-256(authkey) (E-S2 | PSK2 | PKE | PKR)
 

 

Де PSK1 — перші 4 цифри WPS pin, PSK2 — останні 4 цифри.
E-S1 і E-S2 — повинні бути випадковими 128-бітними числами.
PKE — публічний ключ роутера.
PKR — публічний ключ клієнта.
З цього виходить, що невідомими є (поки ще) E-S1 і E-S2, PSK1 і PSK2.

M4 — клієнт відправляє R-Hash1, R-Hash2 для підтвердження того, що він так само знає WPS pin.
Якщо все ок — роутер віддасть клієнту парольну фразу для доступу до мережі, прив’язану до поточного WPS pin. Це зроблено з розрахунку, що WPS pin не повинен бути постійним, і в разі його зміни — клієнт повинен знову отримати пароль.

Генерація E-S1 і E-S2 на наших роутерах:
У “Broadcom/eCos” ці 2 числа генеруються відразу після генерації N1 (публічний ключ) тією ж функцією. Отримання E-S1 і E-S2 зводиться до брутфорсу стану функції на підставі N1 і отримання в результаті E-S1 і E-S2.

Код функції:

#if (defined(__ECOS) || defined(TARGETOS_nucleus))
void
generic_random(uint8 * random, int len)
{
int tlen = len;
while (tlen--) {
*random = (uint8)rand();
*random++;
}
return;
}
#endif 


Джерелоgithub.com/RMerl/asuswrt-merlin/blob/master/release/src-rt/bcmcrypto/random.c

У “Realtek” для генерації таких чисел функція використовує UNIX timestamp.
Аналогічно Broadcom, N1 та E-S1,2 генерує одна функція.
І якщо весь обмін відбувається в ту ж секунду, E-S1 = E-S2 = N1.
Якщо протягом кількох секунд — брутфорс стану на основі N1.
Джерелоgithub.com/skristiansson/uClibc-or1k/blob/master/libc/stdlib/random_r.c

У “Ralink” E-S1 і E-S2 ніколи не генера. Вони завжди дорівнюють 0.
E-S1 = E-S2 = 0

У “MediaTek” і “Celeno” така ж картина:
E-S1 = E-S2 = 0

Висновок
Припустимо ми вже знаємо PKE, PKR, Authkey, E-Hash1 та E-Hash2 — всі ці дані ми отримали в результаті спілкування з роутером (див. Вище M1, M2, M3). E-S1 і E-S2 сбрутили або знаємо що він = 0.
Справа залишилася за малим — відправляємо всі дані в хеш-функцію і порівнюємо кожен новий pin (E-Hash1 та E-Hash2). У результаті за кілька хвилин ми отримаємо WPS pin і, власне, доступ до мережі.

В kali2 вже присутні всі потрібні для проведення атаки інструменти. Кому цікава практика (протестувати свій роутер) — дивимося доки за Reaver. Wifite так само підтримує даний вид атаки.

 

Джерела інформації з даної теми:

Виступ Домініка на конференції про WPS pixie
Опис на форумі kali

P. S Буду радий слушною зауважень і доповнень до статті.

Включений у вас WPS

/>
/>

 

input type=«radio» id=«vv72422»
class=«radio js-field-data»
name=«variant[]»
value=«72422»
досі включений 🙁
input type=«radio» id=«vv72424»
class=«radio js-field-data»
name=«variant[]»
value=«72424»
Вимкнено
input type=«radio» id=«vv72426»
class=«radio js-field-data»
name=«variant[]»
value=«72426»
Вимкнений, кастомний прошивку
input type=«radio» id=«vv72428»
class=«radio js-field-data»
name=«variant[]»
value=«72428»
Немає Wi-Fi роутера

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*