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.


Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *