WPA2 Half Handshake (половина рукопожатия): программы для взлома Wi-Fi пароля и сценарии атак
Каждое подключение Клиента (Станции) к Wi-Fi точке доступа – это довольно сложный процесс обмена случайными данными (сгенерированными для конкретного данного подключения) и ключами. Этот набор передаваемых данных называют WPA рукопожатием (handshake). В нём выделяют четыре элемента, которые разные авторы называют сообщениями (messages), обменами (exchanges) или пакетами. Также сообщение 1 принято обозначать M1, сообщение 2 – M2, сообщение 3 – M3 и сообщение 4 – M4.
Пароль от Wi-Fi не передаётся в открытом виде ни на каком этапе, тем не менее, рукопожатие содержит достаточно информации для подбора пароля перебором. Как уже было сказано, в рукопожатии должно быть четыре элемента. Посмотреть состав рукопожатия можно различными программами, например, с помощью Wireshark, для этого в программе имеется фильтр «eapol»:
Как можно увидеть на скриншоте, захваченное рукопожатие содержит все четыре элемента. Рукопожатия могут содержать не все элементы. Например, эти рукопожатия содержат только первый и второй элементы:
А это только второй и третий:
На самом деле, для взлома Wi-Fi пароля не требуются все четыре элемента. Взлом WPA пароля возможен даже если некоторые сообщения в рукопожатии отсутствуют. И тем не менее, полный хендшейк является предпочтительным: он позволяет проверить пароль двумя разными способами, он гарантирует, что пытающийся подключиться клиент ввёл верный пароль.
Имеется две возможных комбинации сообщений, передаваемых в процессе рукопожатия, которые могут использоваться для взлома аутентификации.
Самым важным сообщением из четырёх является второе (M2). Оно всегда необходимо. Кроме него, в дополнении для получения информации о beacon requests/responses (маячках запросов/ответов), которые дают нам имя сети (известное как ESSID) и MAC адрес точки доступа (известный как BSSID) нам нужно как минимум одно из следующих сообщений:
- Первое (M1): пакет от точки доступа (AP) к клиенту (STA), который инициирует запрос соединения
- Третье (M3): пакет от точки доступа (AP) к клиенту (STA), который является ответом на сообщение 2 (M2).
Если был захвачен третий пакет обмена (M3) – это является доказательством, что пароль был правильным и, следовательно, рукопожатие для нас может быть отмечено как верифицированное (его ещё называют "authenticated" – аутентифицирующее рукопожатие).
С другой стороны, если мы обладаем только первым и вторым, мы не можем с уверенностью сказать, было ли установлено соединение, мы даже не можем сказать, был ли пароль правильным. Тем не менее, у таких половинчатых рукопожатий есть своё применение. Например, если вы видите, что Клиент отсылает зондирующие запросы (probe) в поисках своей ТД, то это обычно показывает ESSID, т.е. позволяет нам узнать имя сети, к которой хочет подключиться Клиент. Будучи атакующим, вы теперь можете настроить ТД с точно таким же ESSID. Если Клиент не проверяет MAC адрес (большинство не проверяют), он попытается подключиться к вашей ТД. Конечно соединение завершиться неудачей, поскольку ваша ТД не использует тот же пароль, который использует Клиент. Тем не менее, Клиент будет использовать корректный пароль. В результате получится так называемое «неаутентифицирующее» рукопожатие. Т.е. рукопожатие содержащее M1 и M2. Если вы успешно взломаете его, то вы узнаете истинный пароль от ТД к которой хочет подключиться клиент. Теперь вы можете заново поднять вашу ТД со взломанным паролем, и Клиент сможет успешной к ней подключиться. Это даст вам доступ к Клиенту из более «внутренней» сетевой позиции или позволит вам осуществить любую атаку человек-посередине. В качестве альтернативы вы можете подключиться к настоящей ТД, в случае, если вы знаете где она находится.
Чтобы увидеть Клиентов, которые не подключены ни к одной из доступных в радиусе точек доступа и которые ищут свою точку доступа:
sudo systemctl stop NetworkManager sudo airmon-ng check kill sudo airmon-ng start wlan0 sudo airodump-ng wlan0mon
В самом низу вы увидите не подключённых ни к кому клиентов.
Поскольку у меня виден очень большой список точек доступа, даже не умещающийся в экран, то клиентов у меня совсем не видно. Чтобы это исправить, я отфильтровываю ТД (-N nonono), а также фиксирую прослушивание одного канала (-c 6), получается следующая команда:
sudo airodump-ng -N nonono -c 6 wlan0mon
Не подключённые к точке доступа клиенты (помечены как (not associated)) показываются внизу списка. Клиенты, отправляющие зондирующие запросы с BSSID (колонка Probe), могут быть целью этой атаки.
Поднимите WPA2 Wi-Fi сеть с точно таким же SSID (именем), как и точка доступа, которую ищет Клиент. Это можно сделать различными способами. Одним из самых простых является использование create_ap. Ваша точка доступа обязательно должна быть с паролем (иначе атака не получится), пароль можете выбрать любым.
Вам нужно захватить трафик на беспроводном сетевом интерфейсе. В Linux это можно сделать с TCPdump:
sudo tcpdump -i wlan0 -s 65535 -w file.cap
Полученный файл захвата можно напрямую взламывать в программе WPA2-HalfHandshake-Crack.
Либо после конвертации его можно взломать в программе Hashcat.
Связанные статьи:
- Взлом Wi-Fi без пользователей (84.8%)
- Повышение эффективности аудита безопасности Wi-Fi: новые инструменты, хеш и техники (84.8%)
- Аудит безопасности Wi-Fi с Hashcat и hcxdumptool (84.8%)
- Как конвертировать рукопожатие (хендшейк) в новый формат Hashcat. Решение проблемы «Old hccap file format detected! You need to update» (80.7%)
- Как в Wireshark расшифровать Wi-Fi трафик (77.3%)
- Виртуальные Wi-Fi интерфейсы для одновременного использования Wi-Fi адаптера в разных режимах (RANDOM - 54.1%)