Часть 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
-адаптеров.
Распределим интерфейсы следующим образом:
Процесс организации атаки выглядит следующим образом:
- Установка беспроводной сетевой карты в режим мониторинга.
- Идентификация цели — сканирование сети и поиск клиентов, использующих целевую сеть.
- Создание поддельной точки доступа и запуск
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
должен выглядеть так:
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 УК РФ
.