Pentest
October 18

Часть 3. Тестируем безопасность WPA-Enterprise: EAP (MSCHAPv2) Relay attack

Введение

В прошлой статье по WPA-Enterprise мы рассмотрели атаку Downgrade и в последнем примере смогли получить лишь хэш пароля. Предположим, что парольная политика тестируемой организации на высоком уровне, а это значит, что брут хэша займет неоправданно много времени и может вовсе не увенчаться успехом. Это конец? На самом деле нет, если в сетях WPA-Enterprise организации для аутентификации клиента используется метод MSCHAPv2 (что является очень частой ситуацией). В этом случае мы можем попробовать провести ретрансляционную атаку.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.

Чуть-чуть теории

В целом, ретрансляционная атака — это когда вы выступаете посредником в попытке аутентификации (обычно запрос-ответ NetNTLM) между двумя сторонами. Сделав это, вы можете перехватить полученную успешную аутентификацию и получить привилегированный доступ к чему-либо.

Однако мы собираемся провести ее с помощью MSCHAPv2 и Wi-Fi вместо NTLM и TCP/IP.

Суть EAP (MSCHAPv2) Relay атаки заключается в том, что злоумышленник перехватывает challenge-response (вызов-ответ) клиента к оригинальной точке доступа и затем передает ответ серверу аутентификации от имени аутентифицирующего пользователя. Сервер не видит разницы между законным клиентом и клиентом злоумышленника. После проверки данных сервер отправляет разрешение на подключение, которое снова получает злоумышленник вместо легитимного пользователя и по итогу получает доступ к корпоративной сети.

Подготовка к атаке

Есть несколько предварительных условий для выполнения ретрансляционной атаки. Сначала нам нужно иметь возможность заставить жертву аутентифицироваться на нашем устройстве, а не на легитимном. В мире NTLM для этого используется Responder, который отвечает Windows запросами LLMNR, утверждающими, что они идут от легитимного сервера. Этот обманчивый ответ аналогичен тому, что делает hostapd-mana (далее – просто mana, ссылка: https://github.com/sensepost/hostapd-mana), за исключением того, что в пространстве Wi-Fi устройства-жертвы проверяют сети, отправляя зонды, а mana принимает эти зонды и сообщает устройствам, что это именно та точка доступа, которую они ищут, после чего устройства попытаются пройти аутентификацию на хосте с запущенной mana.

Второй этап ретрансляционной атаки — это собственно ретрансляция. Это означает попытку аутентификации, которая предпринимается на нашей мошеннической точки доступа, и передачу ее туда, где вы действительно хотите пройти аутентификацию. Для этого мы будем использовать утилиту wpa_sycophant (далее – просто sycophant, ссылка: https://github.com/sensepost/wpa_sycophant). Sycophant и mana синхронизируют состояние и передают информацию между собой с помощью файлов. После запуска sycophant будет ждать, пока жертва начнет аутентифицироваться на хосте с запущенной mana. После того, как жертва связалась с mana и прошла внешнюю аутентификацию (т. е. TLS-часть PEAP), sycophant связывается с законной точкой доступа, согласовывает внешнюю аутентификацию, затем извлекает информацию из mana и дословно передает ее точке доступа для внутренней аутентификации. Если все это работает, законный RADIUS-сервер возвращает успешную аутентификацию и позволяет sycophant связаться с целевой легитимной точкой доступа.

Также для данной атаки потребуется как минимум 2 беспроводных интерфейса (причем физических), а лучше 3:

  • 1-й для несанкционированной точки доступа и работы mana;
  • 2-й для настройки sycophant;
  • 3-й для мониторинга и отправки пакетов деаутентификации. 3-им интерфейсом можно пренебречь и выполнить мониторинг перед основной атакой, но тогда вы не сможете проводить деаутентификацию клиентов и придется ждать их повторного подключения без вашего участия.

Практика

Итак, мы установили необходимые инструменты и раздобыли 3 сетевых интерфейса: 1 встроенный в ноутбук и 2 за счет внешних Wi-Fi-адаптеров.

Распределим интерфейсы следующим образом:

  • wlan0 для mana;
  • wlan1 для sycophant;
  • wlan2 для мониторинга и деаутентификации клиентов.

Процесс организации атаки выглядит следующим образом:

  • Установка беспроводной сетевой карты в режим мониторинга.
  • Идентификация цели — сканирование сети и поиск клиентов, использующих целевую сеть.
  • Создание поддельной точки доступа и запуск mana.
  • Запуск sycophant для проведения ретрансляции.
  • [Опционально] деаутентификация клиента от легитимной точки доступа.

Итак, устанавливаем наш Wi-Fi-адаптер в режим мониторинга:

sudo iw dev wlan2 set monitor none

Запускаем сканирование эфира в поисках интересующей нас сети (в нашем примере это сеть Guest) и нахождения ее точек доступа:

sudo airodump-ng wlan2 --essid Guest

Затем подготавливаем файл ap.conf для mana: указываем essid целевой точки доступа (ssid), канал, на котором будет поднята наша точка доступа (channel), а также указываем выделенный для mana сетевой интерфейс wlan0 (interface). Интерфейс wlan0 должен иметь выход в интернет. Также указываем пути до сертификатов: можно воспользоваться сертификатами, предоставленными самой утилитой. В итоге наш файл ap.conf должен выглядеть примерно так:

Важно: данный файл должен располагаться в каталоге с папкой certs, в которой размещены сертификаты.

Теперь создаем новый файл с тем же именем, что указано в переменной eap_user_file (в нашем случае – это файл hostapd.eap_user), и помещаем его в тот же каталог, что и ap.conf. Благодаря этому любой пользователь теперь может подключиться к нашей фейковой сети.

Файл hostapd.eap_user должен выглядеть так:

Можем запускать mana:

sudo hostapd-mana /etc/hostapd-mana/ap.conf

Далее мы должны настроить файл wpa_sycophant.config в каталоге wpa_sycophant: указать ssid и записать в поле bssid_blacklist mac адрес, который был назначен wlan0 после запуска mana (в нашем случае это 2c:3b:70:84:f4:fe). Это нужно для того, чтобы предотвратить непреднамеренное подключение клиента к созданной нами фейковой точке доступа.

Теперь можем запускать sycophant:

sudo /etc/wpa_sycophant/wpa_sycophant.sh -c wpa_sycophant.config -i wlan1
Примечание: возможно для работы sycophant потребуется установить libssl1.0.0

[Опционально] Клиент должен быть отключен от легитимной сети, чтобы установить соединение с нашей несанкционированной точкой доступа. Это можно сделать, запустив атаку деаутентификации:

aireplay-ng -0 4 -a <target BSSID> -c <target client MAC> wlan2

Атака началась.

Немного подождем и в случае успеха увидим, что клиент отправляет ответ точке доступа в выходных данных mana. Mana, помимо приема данных от клиента, также дает команды для подбора ответа, чтобы получить пароль, но это не сработает, поскольку в данном случае пароль невероятно надежный, и у нас нет для него подходящего вордлиста.

Sycophant берет ответ, идентификацию и другую информацию из каталога /tmp/ (мы оставили этот параметр в файле ap.conf без изменений), отправленную mana (для взаимодействия между процессами через файл), и передает ее в легитимную сеть.

Также sycophant автоматически запрашивает IPv4 для нашей точки доступа.

В результате на интерфейсе wlan1 мы видим подключение к сети Guest.

До атаки:

После атаки:

До атаки:

После атаки:

Таким образом, если вы сможете пройти аутентификацию на сервере RADIUS, вы сможете подключиться к точке доступа и получить доступ к внутренней сети организации.

Давайте убедимся, что мы имеем доступ к «внутрянке» и немного посканим сеть Guest:

Теперь можно приступать к пентесту инфраструктуры. Впрочем, это уже совсем другая история.

Заключение

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

И помните: вся представленная в статье информация приводится исключительно в ознакомительных целях. Перед использованием приведенной информации настоятельно рекомендуется ознакомиться со статьей 272 УК РФ.