- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- WPA2 Half Handshake (половина рукопожатия): программы для взлома Wi-Fi пароля и сценарии атак
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Захват рукопожатий (handshake) в Kali Linux
- Что такое рукопожатие (handshake — хендшейк)
- Все беспроводные точки доступа делают это
- Как захватить хендшейк в Kali Linux
- Захват рукопожатий на 5 ГГц (802.11a/h/j/n/ac)
- Расшифровка рукопожатия в Kali Linux
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
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. Если вы успешно взломаете его, то вы узнаете истинный пароль от ТД к которой хочет подключиться клиент. Теперь вы можете заново поднять вашу ТД со взломанным паролем, и Клиент сможет успешной к ней подключиться. Это даст вам доступ к Клиенту из более «внутренней» сетевой позиции или позволит вам осуществить любую атаку человек-посередине. В качестве альтернативы вы можете подключиться к настоящей ТД, в случае, если вы знаете где она находится.
Чтобы увидеть Клиентов, которые не подключены ни к одной из доступных в радиусе точек доступа и которые ищут свою точку доступа:
В самом низу вы увидите не подключённых ни к кому клиентов.
Поскольку у меня виден очень большой список точек доступа, даже не умещающийся в экран, то клиентов у меня совсем не видно. Чтобы это исправить, я отфильтровываю ТД (-N nonono), а также фиксирую прослушивание одного канала (-c 6), получается следующая команда:
Не подключённые к точке доступа клиенты (помечены как (not associated)) показываются внизу списка. Клиенты, отправляющие зондирующие запросы с BSSID (колонка Probe), могут быть целью этой атаки.
Поднимите WPA2 Wi-Fi сеть с точно таким же SSID (именем), как и точка доступа, которую ищет Клиент. Это можно сделать различными способами. Одним из самых простых является использование create_ap. Ваша точка доступа обязательно должна быть с паролем (иначе атака не получится), пароль можете выбрать любым.
Вам нужно захватить трафик на беспроводном сетевом интерфейсе. В Linux это можно сделать с TCPdump:
Полученный файл захвата можно напрямую взламывать в программе WPA2-HalfHandshake-Crack.
Либо после конвертации его можно взломать в программе Hashcat.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Захват рукопожатий (handshake) в Kali Linux
Что такое рукопожатие (handshake — хендшейк)
С технической точки зрения, рукопожатие в беспроводных сетях — это обмен информацией между точкой доступа и клиентом в момент подключения клиента к ней. Эта информация содержит разнообразные ключи, обмен происходит в несколько стадий. Процесс подключения к беспроводной точке доступа неплохо документирован и вы можете найти по данному вопросу много информации, в том числе и на русском языке.
С практической точки зрения нам достаточно знать всего две очень простые вещи:
- рукопожатие можно захватить во время подключения клиента, который знает валидный пароль, к беспроводной точке доступа
- рукопожатие содержит достаточно информации для расшифровки пароля.
Все беспроводные точки доступа делают это
Расшифровка пароля из рукопожатия делается методом перебора (грубой силой, брутфорсингом). Именно поэтому расшифровка пароля в захваченном рукопожатии имеет вероятностный характер. Т.е. далеко не всегда заканчивается удачно.
Если у вас мощное железо и много времени, то ваши шансы увеличиваются.
Я считаю захват рукопожатий самой перспективной методикой взлома беспроводной точки доступа. Это мнение может показаться странным при том количестве новых техник по взлому WEP, WPS и при довольном низком проценте успешных взломов рукопожатий.
Дело в том, что количество точек доступа с включёнными WEP, WPS невелико. Благодаря просветительской деятельности (в том числе урокам подобным моим) самые обычные пользователи стали больше задумываться о безопасности, вникать в суть технологий и отключать уязвимые алгоритмы и стандарты.
Ещё одно наблюдение по мере накопления опыта: даже точки с включённым WPS иногда быстрее взломать захватом рукопожатия, чем ждать завершения работы Reaver или Penetrator-WPS. Дело в том, что если пользователь не задумался об отключении WEP, WPS, т. е. проявил безалаберность, то также высока вероятность неряшливости пользователя в выборе пароля — обычно это простые слова или фразы из словаря, которые довольно легко подбираются.
Вообще, можно сказать, что, формально, захватив рукопожатие, можно практически гарантированно взломать Wi-Fi, для этого нужно:
- мощное железо
- достаточно много времени
- не слишком сложный и длинный пароль
Как захватить хендшейк в Kali Linux
Алгоритм достаточно простой:
- смотрим доступные точки доступа
- выбираем точку доступа, запоминаем её ВSSID и номер канала
- переходим в режим ожидания рукопожатия на заданном сигнале
- (опционально) форсируем процесс путём применения атаки деаутентификация
Предполагается, что вы уже знакомы со статьями
В противном случае, у вас могут быть вопросы по изложенному здесь материалу.
Внимание: название беспроводного интерфейса у вас может быть своё. Соответственно, вам нужно подправить команды, чтобы они работали на вашем компьютере:
Переводим карту в режим монитора
Смотрим доступные для атаки точки доступа
Я выбрал сеть Mial, её ВSSID 20:25:64:16:58:8C на канале 1. Поэтому я запускаю airodump-ng на первом канале
После ключа -w идёт префикс файла cap2 (это имя без расширения). В этот файл будет записано захваченное рукопожатие.
Можно ничего не делать — достаточно просто ждать, когда кто-то подключится или переподключится естественным образом. Если вы торопитесь, то можно форсировать процесс использованием атаки деаутентификация.
Для этого мы открываем новое окно терминала и набираем там команду:
Здесь -0 означает деаутентификация, 5 означает количество отправленных пакетов, -a 20:25:64:16:58:8C это ВSSID целевой ТД, а wlan0 — сетевой интерфейс в режиме монитора.
Результат не заставил себя долго ждать:
Надпись «WPA handshake: 20:25:64:16:58:8C» говорит нам о том, что рукопожатие уже захвачено.
Убеждаемся, что это действительно так:
Плюсы использования атаки деаутентификация:
- значительно ускоряется процесс получения рукопожатия
- вы теряете свою невидимость.
Системы обнаружения вторжений и мониторинга в этот момент могут вас засечь. При пассивном ожидании рукопожатия вы остаётесь полностью невидимым для этих систем.
Захват рукопожатий на 5 ГГц (802.11a/h/j/n/ac)
По умолчанию, airodump-ng скачет по каналам с 1 по 14 — это каналы 2.4 ГГц (т.е. 802.11b/g/n).
Протоколы 802.11a/h/j/n/ac работают на 5 ГГц, сюда входят каналы с 34 по 180.
На самом деле, процесс захвата рукопожатий на 5 ГГц ничем особо не отличается. Просто нужно явно указать каналы.
Но прежде чем пытаться что-то захватить, давайте проверим, какие вообще частоты поддерживает ваша беспроводная карта. Поскольку если ваша карта не поддерживает 5 ГГц, то можно и не пытаться — результата не будет. Проверку можно сделать командой:
Не забывайте, что вместо wlan0 вам нужно указать имя вашего желаемого беспроводного интерфейса.
Т.е. моя беспроводная карта может работать на частоте 5 ГГц с каналами с 36 по 140. А также на частоте 2.4 ГГц с каналами с 1 по 13.
Ещё больше информации вам даст команда
Там очень много самых разнообразных сведений по вашей беспроводной карте.
Если ваша беспроводная карта поддерживает 5 ГГц, то можно продолжать. Чтобы «осмотреться» в радиовещании наберите:
Думаю, особо здесь объяснять нечего, опцию —channel мы уже использовали ранее. Можно вместо каналов указывать непосредственно частоты или диапазон частот, это делается с помощью ключа -C, например:
Ключ и опция -C 5170-5825 указывают частоты в Мегагерцах, которым соответствуют каналы с 36 по 165. Эта и предыдущая команда полностью равнозначны.
Если вам вдруг интересно, то вот номера каналов и соответствующие им частоты:
802.11b/g/n
Канал | Центральная частота (ГГц) |
---|---|
1 | 2,412 |
2 | 2,417 |
3 | 2,422 |
4 | 2,427 |
5 | 2,432 |
6 | 2,437 |
7 | 2,442 |
8 | 2,447 |
9 | 2,452 |
10 | 2,457 |
11 | 2,462 |
12 | 2,467 |
13 | 2,472 |
14 | 2,484 |
802.11a/h/j/n/ac
Канал | Частота (ГГц) |
---|---|
34 | 5,170 |
36 | 5,180 |
38 | 5,190 |
40 | 5,200 |
42 | 5,210 |
44 | 5,220 |
46 | 5,230 |
48 | 5,240 |
52 | 5,260 |
56 | 5,280 |
60 | 5,300 |
64 | 5,320 |
100 | 5,500 |
104 | 5,520 |
108 | 5,540 |
112 | 5,560 |
116 | 5,580 |
120 | 5,600 |
124 | 5,620 |
128 | 5,640 |
132 | 5,660 |
136 | 5,680 |
140 | 5,700 |
147 | 5,735 |
149 | 5,745 |
151 | 5,755 |
153 | 5,765 |
155 | 5,775 |
157 | 5,785 |
159 | 5,795 |
161 | 5,805 |
163 | 5,815 |
165 | 5,825 |
167 | 5,835 |
171 | 5,855 |
173 | 5,865 |
177 | 5,885 |
180 | 5,905 |
802.11y
Канал | Частота (МГц) | США | ||
---|---|---|---|---|
5 МГц | 10 МГц | 20 МГц | ||
131 | 3657,5 | Да | Нет | Нет |
132 | 3662,5 | Да | Нет | Нет |
132 | 3660,0 | Нет | Да | Нет |
133 | 3667,5 | Да | Нет | Нет |
133 | 3565,0 | Нет | Нет | Да |
134 | 3672,5 | Да | Нет | Нет |
134 | 3670,0 | Нет | Да | Нет |
135 | 3677,5 | Да | Нет | Нет |
136 | 3682,5 | Да | Нет | Нет |
136 | 3680,0 | Нет | Да | Нет |
137 | 3687,5 | Да | Нет | Нет |
137 | 3685,0 | Нет | Нет | Да |
138 | 3689,5 | Да | Нет | Нет |
138 | 3690,0 | Нет | Да | Нет |
Вот какие результаты я собрал вокруг себя:
Кстати, обратите внимание, что каналы по какой-то непонятной причине не отобразились.
Можно указать airodump-ng прыгать по всем каналам и не беспокоиться, что мы что-то упустили в каком-то диапазоне частот:
Кстати, это помогло определить канал для ТД на 5 ГГц — канал оказался сороковым:
Захват рукопожатия в 5 ГГц ничем не отличается:
Также можно использовать атаку деаутентификация, чтобы ускорить процесс.
Если ваша беспроводная карта не поддерживает частоты на 5 ГГц, то для того, чтобы видеть сети на этих частотах и для выполнения разнообразных атак в отношении них, вам необходима Alfa AWUS051NH . Она работает на частотах 2.4 ГГц и 5 ГГц, поддерживает беспроводной стандарт N, поддерживает замену антенны, полностью совместима с Kali Linux и BlackArch, т.е. способна переходить в режим монитора и делать инъекцию фреймов.
Расшифровка рукопожатия в Kali Linux
Это отдельная наука. Расшифровка хендшейков «в лоб» может занять на порядок больше времени, чем эта же расшифровка, но с применением таких методик как: предварительный расчёт хешей, использование мощи графического процессора, использование словарей, использование масок и других приёмов, ускоряющих брутфорсинг.