16 Сентябрь 2009

WPA2 больше не защищает?

WiFiНа данный момент беспроводные сети широко распространены. Грамотно настроеная беспроводная сеть, как правило защищена WPA2-PSK (т.е. шифрованием стандарта WPA2 с паролем, ибо с RADIUS никто обычно не мучается, да и реализация WPA2-Enterprise местами в железках хромает). В общем все используют WPA2-PSK и думают что они в броневике.
До недавнего времени  так и было, мощность даже самых современных процессоров не позволяла просчитывать больше 1500PMK(см. далее) в секунду.

Но с появлением технологии CUDA от NVidia и ускорителей типа NVidia Tesla c1060, а также технологий распределенных вычислений с использованием CUDA, эффективность перебора увеличилась в 50 раз на 1 ускорителе + возможность использовать более одного ускорителя + эффект кластеризации вычислений.
Все это за “сущие копейки” при вычислительной мощности измеряемой терафлопами!
Tesla
Для справки: 1 сервер NVidia Tesla s1070 просчитывает до 52400 PMK в секунду!

Все это внушает опасение…

Вся дальнейшая информация предназначена исключительно для того чтобы вы знали как проводятся подобные атаки и ни в коем случае не является инструкцией по взлому беспроводных сетей.

Немного теории: WPA2 (стандарт IEEE 802.11i) использует метод шифрования (CCMP — Counter-Mode with CBC-MAC Protocol), основанный на алгоритме шифрования AES (Advanced Encryption Standard). Как WPA, так и WPA2 работают в двух режимах аутентификации: персональном (Personal) и корпоративном (Enterprise). В режиме WPA2-Personal из введенной открытым текстом парольной фразы генерируется 256-разрядный ключ (PreShared Key — PSK). PSK, а также идентификатор SSID (Service Set Identifier) и длина последнего вместе образуют математический базис для формирования главного парного ключа (Pairwise Master Key — PMK), который используется для установки связи.
т.е. для несанкционированного подключения к беспроводной сети надо знать SSID сети и пароль доступа.
Как получить доступ к сети защищенной WPA2-PSK?

  1. Получить SSID (если он скрыт)
  2. Получить валидный PMK (перехватить при подключении другого клиента)
  3. Получить пароль подключения (ищется коллизия с перехваченным PMK, методом перебора по словарю или brute-force атакой)

Описание процесса.

Возьмем специальный Linux дистрибутив BackTrack 4
Процесс процесс установки и настройки описан в Wiki, поэтому приводить его здесь нет смысла (основные утилиты есть в комплекте, следует настроить CUDA для ускорения перебора).

Далее…

Перевести карту в monitor-mode
airmon-ng start имя_интерфейса

Запускаем мониоринг доступных беспроводных сетей в отдельной консоли, нам нужен MAC точки доступа и номер канала на котором она работает:
airodump-ng mon0 (mon0 виртуальный интерфейс airmon-ng)

Запускаем снятие дампа обмена пакетами, используя полученные данные (мониторинг не отключаем)
airodump-ng mon0 –channel 10 –bssid MAC_точки_доступа -w имя_файла_дампа

Далее нам нужен WPA-handshake (т.к. при начале сеанса связи передается PMK). Ждем пока кто-то подключится или если кто-то уже висит на точке, просто отключаем его и заставляет переподключится:
aireplay-ng -0 1 -a MAC_точки -c MAC_клиента mon0

В результате в правом верхнем углу консоли с мониторингом мы должны увидеть надпись
WPA handshake: MAC_точки
Итак теперь у нас есть дамп правильного PMK и SSID точки, осталось найти пароль доступа.

Мониторинг можно закрыть.

Далее нам поможет проект Pyrit
Это программа, которая умеет вычислять PMK используя CUDA и умеет распараллеливать работу на множество ускорителей и компьютеров.
Входными параметрами является SSID и файл со словарем паролей (можно например создать его при помощи John The Ripper, а лучше скачать специализированный)

Анализируем наш дамп
pyrit -r имя_файла_дампа analyze
в ответ мы должны получить в появившемся выводе “handshake found”

Проверим быстродействие
pyrit benchmark
Теперь можно запустить процесс генерации и сравнения PSK
pyrit -e SSID_точки create_essid
pyrit -f имя_файла_словаря import_passwords
pyrit -e SSID_точки -f – batch | cowpatty -d – -r имя_файла_дампа -s SSID_точки
Если вам повезет, пароль будет найден!

Выводы:

При наличии хорошего словаря и нескольких ускорителей NVidia, можно проникнуть в беспроводную сеть с высокой вероятностью, т.к. мало кто придумывает длинные бессмысленные пароли для своих точек доступа.

Если же пароль не словарный… давайте посчитаем сколько нужно серверов NVidia Tesla s1070 чтобы подобрать несловарный пароль из больших и маленьких латинских букв и цифр 0-9 длиной 8 символов, за неделю с вероятностью 100%.

количество возможных символов – 62, количество символов в пароле – 8

Посчитаем количество комбинаций: 62^8 = 218 340 105 584 896 комбинаций
сколько PMK необходимо вычислять в секунду: 218 340 105 584 896 / 3600 / 24 / 7 = 361 012 079 PMK в секунду
сколько серверов нам понадобится: 361 012 079 / 52400 = 6 889.54349 ~ 6890 шт.
и сколько они будут стоить: 6890 х $7995 = $55 085 550 (дороговато, а сколько еще электричества надо и обвязки…)

Производительность одного сервера Tesla s1070 заявлена на уровне 4 TFlops
значит нам нужен кластер с производительностью 6890 x 4 = 27560 TFlops ~ 27,5 PFlops
Учитывая что пиковая производительность самого мощного кластера в мире, Roadrunner от IBM всего около 1,5 PFlops…

т.е. для полной компроментации WPA2-PSK еще не достаточно, но есть о чем задуматься учитывая геометрические темпы прироста вычислительной мощности.

В сетях с высокими требованиями к безопасности, уже сейчас стоит рассматривать WiFi как небезопасный канал, наравне с public internet и использовать внутри дополнительное шифрование.

Кроме того грядет массовое появление высокоскоростных взломшиков архивов, офисных документов, сертификатов и т.п. , которые будут использовать мощь GPU.

НЕ используйте с WPA2-PSK словарные пароли, и пароли из однотипных символов (вроде номеров телефонов), используйте пароли длиной не менее 10 символов и вы в относительной безопасности :)

Полезные ссылки:
известная фирма-разработчик взломщиков паролей http://www.elcomsoft.com
проект Pyrit
проект AirCrack
подборка видео по теме взлома WPA2 на YouTube
хорошая статья про WPA