А вы задумывались когда нибудь, сколько стоит разгадать пароль вашего Wi-Fi? Понятно, что все прекрасно помнят, что с увеличением длины парольной фразы - увеличивается сложность и при достаточной длине, перебор занимает ХХХХ - лет.
Давайте вместе разберемся - сколько это стоит в $$$ деньгах
План
Итак, как все мы прекрасно знаем, что самое уязвимое место двери - это замок, а самое не защищенное место в нашей беспродной сети (после физического доступа к роутеру) - это момент установления соединения.
Немного про установление соединение
Процесс установления защищенного соединения в сети Wi-Fi с использованием протокола WPA2 (Wi-Fi Protected Access 2) включает в себя несколько этапов:
-
Поиск сети: Когда устройство пытается подключиться к беспроводной сети, оно сначала сканирует доступные сети и идентифицирует их по именам (SSID).
-
Аутентификация: Клиент (подключающееся устройство) отправляет запрос на аутентификацию к точке доступа (AP) или маршрутизатору. Точка доступа может быть настроена на использование предварительно установленного пароля (PSK - Pre-Shared Key) или может быть настроена на работу с сервером аутентификации (обычно RADIUS-сервером).
-
Обмен ключами 4-Way Handshake: После успешной аутентификации клиент и точка доступа начинают обмениваться ключами, используемыми для защиты передачи данных. Этот обмен называется "4-Way Handshake". Он включает в себя генерацию общего ключа (Pairwise Transient Key, PTK), который используется для шифрования данных.
-
Установление защищенного канала: После завершения 4-Way Handshake клиент и точка доступа могут начать использовать общий ключ (PTK) для защиты данных, передаваемых по беспроводной сети. Вся передача данных между ними теперь зашифрована и аутентифицирована.
-
Обновление ключей: Периодически, для усиления безопасности, ключи могут быть обновлены с помощью генерации новых ключей и их обмена между клиентом и точкой доступа.
Поэтому если злоумышленнику получится подслушать эфир, то есть далеко не теоретическая возможноость получить дамп рукопожатий, и попробовать получить пароль перебором разных вариантов паролей.
Перехват рукопожатия в беспроводной сети WPA2 происходит на этапе обмена ключами 4-Way Handshake. Вот как это происходит: Если атакующий слушает эфир, то может произвести Перехват рукопожатия. Те перехватить этот обмен сообщениями (M1, M2, M3, M4) между клиентом и точкой доступа. Если получить полный 4-Way Handshake, он сможет использовать этот дамп рукопожатие для дальнейшей атаки, такой как атака перебором пароля с использованием словаря (dictionary attack) или атака методом перебора (brute-force).Вот примерный механизм получения дампа
Тестовый стенд
В качестве тестового оборудования будет использоваться ноутбук - macbook pro 2017 (а1708).
Как на практике поймать рукопожатие.
В сети огромное количество описаний с использованием Kali Linux, внешних чувствительных сетевых карт. В данном случае - это было не важно, и нужно было просто получить само рукопожатие. Поэтому будем использовать встроенную карточку и MacOS.
В качестве простого и удобного интерфейса я выбрал WiFiCrackPy . Возможно, на более новых Маках, это уже не сработает. Процесс установки простой и описан на ГитХабе.
Запуск тоже происходит совсем не сложно
Выбираем нашу сеть и просто ждем.
После получения рукопожатия, в папке будет сохранен файл - capture.hc22000 , который уже готов к брутфорсу.
Давайте проверим, сколько выдаст "попугаев" хешей в секунду, наш мобильный CPU - i5-7360U.
Далее попробуем перебор на облачном сервере.
Возьмём самую жирную комплектацию, а именно - 96 ядер IceLake - цена 1,27$/h (127,95 ₽ в час)
Теперь попробуем разные GPU, для проверки скорости, возьмем не очень известного, но очень лояльного клауд провайдера.
Тест 2080TI - цена 0,2843$/h (28,43 ₽ в час)
Начали бодро с 859 kH/s и по мере прогрева карты снизились до 841
Тест RTX 3090 - цена 0,6456$/h (64,56 ₽ в час)
Начали с 1074 kH/s и после прогрева 1068.6 kH/s к окончанию.
Тест RTX 4090 - цена 0,7915$/h (79,15 ₽ в час)
Начали с 2522 kH/s и после прогрева 2477.5 kH/s
Думаю тут не вооруженным взглядом будет понятно, что хоть закон Мура и не соблюдается в полной мере, но точно каждый год видим прогресс в скорости вычислений.
А что у нас со скоростью на профессиональных картах?
Тест Tesla A2 - цена 0,2328$/h (23,28 ₽ в час)
Никак не уменьшает хеш при прогреве
Тест Tesla A10 - цена 0,3271$/h (32,71 ₽ в час)
Тест Tesla A100 - цена 1,7824$/h (178,24 ₽ в час)
В отличии от десктопных игровых карт, данные карты максимально холодные, однако и имеет меньшую производительность под нашу задачу за сопоставимую стоимость.
Тест Tesla V100 - цена 0,9424$/h (94,24 ₽ в час)
Так же, очень холодная карта, но и показывает всего. 802,9 kH/s
Все тесты проводились на последней версии hashcat, на системе ubuntu 20.04, используя последнею версию hashcap и последнею версию драйвера.
Немного про hashcat
Очень полезная программа, для восстановления паролей. https://github.com/hashcat/hashcat
Немного о синтаксисе. В нашем случае это hashcat [ тип ключа ] [тип работы - в нашем случае брутфорс] файл с хешами и маска перебора.
hashcat -m 22000 -a 3 capture.hc22000 ?d?d?d?d?d?d?d?d
Однако сам hashcat в не умеет рекурсивную комбинацию масок, поэтому накидал скрипт на Python 3. Для создания списка всех масок, которые нужно перебрать.
# Комбинатор варинтов для hashcat
# ?l - представляет собой одну букву нижнего регистра (a-z).
# ?u - представляет собой одну букву верхнего регистра (A-Z).
# ?d - представляет собой одну цифру (0-9).
import itertools
# Элементы перебора
mask_elements = ['?l', '?u', '?d']
# Длина пароля
position_count = 8
# Создаем файл my.hcmask для записи
with open('my.hcmask', 'w') as file:
# Генерируем комбинации для всех возможных комбинаций элементов включая все позиции
combinations = itertools.product(mask_elements, repeat=position_count)
# Записываем комбинации в файл
for combo in combinations:
mask = ''.join(combo) + 'n'
file.write(mask)
В процессе поиска дешевого облачного вычисления, нашел несколько совсем чумовых предложений. Например, RTX 4090 - за 0.35$ в час. Но там рынок, поэтому в расчетах взят среднее значение в 0.4$ в час.
Для сравнения сведём все данные в таблицу по цене хеша, условно примем, что дополнительных затрат на масштабирование у нас нет, а оценку сложности будем брать максимальной.
Таблица цен - в стоимости 1 Гига хеш.
Формула расчета
Расчет идет по формуле (Цена за 1 час) / (Производительность * 3600) и для лучшего представления переводим в Гига Хеши (GH) из kH
Оборудование |
Производительность kH/s |
Цена $/h |
Цена за $ / GH |
i5-7360U |
2 .415 |
1 |
113,3786848 |
96 ядер IceLake |
240 |
1,27 |
2,777777778 |
2080TI |
841 |
0,2843 |
0,09390276126 |
3090 |
1068,5 |
0,6456 |
0,167836531 |
4090 |
2477,5 |
0,4 |
0,04484807714 |
Tesla A2 |
130,7 |
0,2328 |
0,4947717419 |
Tesla A10 |
762,8 |
0,3271 |
0,1191152479 |
Tesla A100 |
1115,4 |
1,7824 |
0,4438865977 |
Tesla V10 |
802,9 |
0,9424 |
0,326040326 |
Теперь давайте вспомним, сколько комбинаций в пароле в зависимости от использовании разных символов.
Формула расчета
У нас в таблице сверху есть цена в Гига Хешах, в долларах.
Значит нам нужно сложность в цифрах разделить на 10^9 и умножить минимальную цену в GH
Тип |
Сложность в цифрах и Gh |
Цена перебора |
8 символов, только цифры |
100,000,000 комбинаций |
≈ 0,01 $ |
8 символов, только маленькие буквы латинского алфавита |
208,827,064,576 комбинаций |
≈ 9,373 $ |
8 символов, из маленьких букв латинского алфавита, больших букв латинского алфавита и цифр |
218,340,105,584,896 комбинаций ≈ 218340 GH |
≈ 9.792 $ |
8 символов, из маленьких букв латинского алфавита, больших букв латинского алфавита, цифр и спец символов |
6,095,689,385,410,816 комбинаций ≈ 6095689 GH |
≈ 273.380 $ |
А насколько дорогой у тебя ВайФай?
Выводы, для себя, сделает каждый самостоятельно. Однако при дальнейшей снижении стоимости вычисления, старые подходы к безопасности уже не кажутся такими не вероятными.
Не согласны с методикой оценки? Давайте обсудим в комментариях.
Автор:
GoDevSeoTaxi