Тема проведения Man in the Middle атаки в контексте Captive Portal стара как мир. Как правило ведется речь о поднятии фейковой беспроводной точки доступа с собственным Captive порталом. Сегодня я покажу совершенно другой вектор атаки, выходящий за грани WiFi и применимый в том числе и в проводных Ethernet сетях.

Область применения портала-ловушки широкая, но на сегодняшний день чаще всего портал служит способом идентификации пользователей в общественных местах, желающих воспользоваться интернетом в общедоступной WiFi сети.

Являясь непосредственным регулятором доступа в интернет, данный сетевой сервис обладает возможностями блокировать или пропускать соединения клиента. Попав в изолированную порталом сеть клиент должен каким-то образом понять, что для доступа в интернет требуется предварительная авторизация. Со стороны Captive Portal'а могут применяться следующие шаги:

  1. Слать HTTP редиректы на все «открытые» веб запросы клиента.
  2. Отвечать IP адресом портала на все DNS запросы.
  3. Грубо редиректить весь веб траффик на страницу портала.

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

Для Windows Vista\7\8 это проверка — www.msftncsi.com/ncsi.txt
Для Windows 10 — www.msftconnecttest.com/connecttest.txt
Для iOS — www.apple.com/library/test/success.html
Android и Chrome делают запрос /generate_204 на один из своих доменов.

Ключевым моментом здесь является использование голого HTTP. Это сделано для того, чтобы Captive Portal имел возможность послать редирект клиенту на страницу авторизации.

Теперь я опишу как можно создать Captive Portal используя один лишь Intercepter-NG и провести MiTM атаку.

Будем применять ARP Spoofing против выбранной для тестов цели, пусть это будет Windows 10. Затем нам нужно «изолировать» цель от интернета, как это делает настоящий портал-ловушка. В данном случае достаточно будет включить SSL MiTM и «интернет» в виде браузера и всех служб, использующих HTTPS в своей работе, перестанет функционировать, т.к. возникнут проблемы доверия к SSL сертификату.

Столкнувшись с недоступностью HTTPS у цели будут запущены описанные ранее механизмы проверки соединения. Специально для реализации Captive Portal'а в Intercepter был добавлен обработчик таких проверок, в итоге он отправит цели редирект на свой же IP адрес. В режиме FATE интерцептера используется простенький web сервер и там же можно выбрать шаблон со страницей портала. В итоге цель попадёт на созданный нами портал.

Вот несколько интересных моментов:

1. У Windows в фоне осуществляется множество различных процессов, использующих сеть. Если при их выполнении произойдет неудачное подключение, то может запуститься механизм определения состояния сети. Находясь под атакой Windows поймает редирект Intercepter'а и откроет браузер с нашим порталом. Представьте ситуацию: заблокирована пользовательская сессия, пользователь возвращается на рабочее место, авторизуется — и тут же на экране всплывает веб страница атакующего.

2. Происходит атака, цель открывает Chrome и пытается зайти в Google. Выявляется ошибка SSL, т.к. включен MiTM, затем Chrome посылает запрос /generate_204 — Intercepter отвечает ему редиректом и Chrome открывает в новой вкладке страницу портала.

Эта техника работает и в беспроводных и в проводных сетях, в любой момент времени, а не только после подключения к сети. Проведено несколько тестов на Android смартфонах — полёт нормальный. С Apple пока непонятно, на iOS версий 12 и 13 при блокировке HTTPS не обнаружены никакие диагностические HTTP запросы, возможно удастся решить этот вопрос в будущем.

Область применения данного MiTM портала ограничена только фантазией. Чуть больше деталей и полноценная демонстрация представлена в следующем видео ролике. В нем показан перехват вводимых пользователем данных, авторизации Twitter с помощь SSL Strip и HSTS Spoofing, а так же перехват SSL авторизации Vkontakte.



> Обновленную сборку можно скачать на Github

Информация дана для ознакомления, используйте для добрых дел. Доступен чат в телеграмме.