
Тема проведения Man in the Middle атаки в контексте Captive Portal стара как мир. Как правило ведется речь о поднятии фейковой беспроводной точки доступа с собственным Captive порталом. Сегодня я покажу совершенно другой вектор атаки, выходящий за грани WiFi и применимый в том числе и в проводных Ethernet сетях.
Область применения портала-ловушки широкая, но на сегодняшний день чаще всего портал служит способом идентификации пользователей в общественных местах, желающих воспользоваться интернетом в общедоступной WiFi сети.
Являясь непосредственным регулятором доступа в интернет, данный сетевой сервис обладает возможностями блокировать или пропускать соединения клиента. Попав в изолированную порталом сеть клиент должен каким-то образом понять, что для доступа в интернет требуется предварительная авторизация. Со стороны Captive Portal'а могут применяться следующие шаги:
- Слать HTTP редиректы на все «открытые» веб запросы клиента.
- Отвечать IP адресом портала на все DNS запросы.
- Грубо редиректить весь веб траффик на страницу портала.
На стороне клиента так же имеются вспомогательные механизмы для детектирования наличия портала ловушки. Они разнятся у операционных систем и браузеров, но алгоритм, в целом, схож — резольв определенного домена и проверка доступности какого-либо файла.
Для 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
Информация дана для ознакомления, используйте для добрых дел. Доступен чат в телеграмме.