Уязвимость не новая, но ввиду отсутствия материалов в «РУ» сегменте — решил написать данную статью.
Стандарт разработанный для упрощения процесса настройки беспроводной сети.
WPS позволяет подключится двумя различными способами:
— ввод 8-ми значного пин кода (обычно указывается c обратной стороны роутера)
— нажатием специально предназначенной для этого кнопки на роутере
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 протокол
Важными здесь являются: 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 Буду рад дельным замечаниям и дополнениям к статье.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
ссылка на оригинал статьи https://habrahabr.ru/post/280796/
Добавить комментарий