• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Red Teaming: простая установка инфраструктуры фишинга (для аналитиков SOC и участников красных команд)

imanotape

HDD-drive
Пользователь
Регистрация
28.10.2022
Сообщения
31
Реакции
39
Гарант сделки
3
первоисточник https://payatu.com/blog/phishing-infrastructure-setup/
(приму к сведению рекомендации по оформлению следующих статей)

Red Teaming: простая установка инфраструктуры фишинга (для аналитиков SOC и участников красных команд)​

Введение

В ходе оценки red teaming участники красных команд имитируют сценарии реальных атак, чтобы достичь поставленных целей. Фишинг – один из сценариев атак для получения начального доступа.

В контексте сценария красной команды, фишинг – это действие, приводящее к отправке email-сообщений от якобы надёжных источников для сбора личной информации, или оказание влияния на получателей email-сообщений, чтобы они совершили действие в интересах злоумышленника.

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

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

Что нужно для проведения успешной фишинговой кампании?

Фишинг можно осуществлять в самых разных средах, в том числе через электронную почту, СМС, мессенджеры и т.д. Обычно по сценарию красной команды фишинг проводят через электронную почту, поскольку это относительно официальный способ связи, лучше всего подходящий для типичной корпоративной среды. Конечная цель – украсть закрытые данные или поселить вредоносные программы в устройстве жертвы. Но в этом блоге мы делаем упор на первом, т.е. на сборе учетных данных.



/ты не попадешься на фишинг, если не будешь проверять почту/​

Ниже перечислены ключевые компоненты для проведения успешной фишинговой кампании:

Сценарий претекстинга

Название домена

Фреймворк кампании

Фреймворк фишинга

Сервис рассылки

Обратный прокси-сервер

Виртуальный выделенный сервер

Из контекста «как» возникает необходимость обсудить «что» и «почему» вопроса.

1. Сценарий претекстинга

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

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

2. Название домена

Домен – это сердце вовлечения в фишинг. Это врата жертвы, открывающие путь проблемам, и врата участников красной команды во внутренней сети целевой организации. Выбор имени домена для фишинга сильно зависит от характера Сценария претекста.

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

Такие методы, как домены с опечатками, с необычным TLD, с истекшим сроком действия, законные домены, которые были скомпрометированы и т. д., могут рассматриваться как способ получения заманчивого доменного имени. Общее правило – избегать имен доменов с омоглифами (т.е. со специальными знаками, например, éxámple.org, ḛxamƿle.org, и т.д.)

3. Фреймворк кампании



/Фишинг, фишинг повсюду/​

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



Основные компоненты Gophish и их использование перечислены ниже.

  • Кампании: Gophish – это прежде всего запуск кампаний. Это подразумевает отправку сообщений по email одной или более группам и отслеживание сообщений, которые открыли, на какие ссылки кликнули и чьи данные были предоставлены.
  • Пользователи и группы: Gophish позволяет управлять группами пользователей, являющихся частью кампании.
  • Отправка профилей: Gophish требует, чтобы вы настроили детали ретрансляции SMTP, известные как “Отправка профилей”, чтобы отправлять email’ы. Для этого можно использовать сервисы AWS SES, Mailgun и т.д.
  • Email-шаблоны: «шаблон» относится к содержанию электронных писем, отправляемых целям. Шаблоны можно создать с нуля или импортировать из существующего электронного письма. Они также позволяют вам отправлять прикрепленные файлы. Шаблоны также могут включать отслеживающую графику, позволяя Gophish отслеживать, когда человек просматривает э-письмо.
  • Лэндинги: Когда пользователи кликают на фишинговые ссылки, которые они получают, страницы-лендинги являются фактическими HTML-страницами, которые им предоставляют. Создание шаблонов, сбор учетных данных и перенаправление пользователей на другой веб-сайт после того, как они отправят свои учетные данные, — все это возможно с помощью лэндингов. Эта функциональность вряд ли будет использоваться с появлением многофакторной аутентификации, поскольку одного сбора учетных данных недостаточно.
4. Фреймворк фишинга

Из-за все более широкого использования методов двухфакторной аутентификации (2FA), большинство пользователей думают, что на фишинг уже невозможно попасться. Это ощущение укрепляет тот факт, что все больше сайтов используют по умолчанию HTTPS-протокол.

Evilginx – это система атаки через посредника, используемая для фишинга учётных данных наряду с сеансовыми файлами cookie, которая в свою очередь позволяет обойти защиту 2-факторной аутентификации.

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

Evilginx2 ворует маркеры аутентификации, поставляемые в виде файлов cookie, что позволяет обходить вход пользователя/пароль и двухфакторную аутентификацию. Он по сути дублируется сессию. Злоумышленник считается полностью/успешно авторизовавшимся пользователем с имеющимися файлами cookie и маркерами.

пользователь (жертва фишинга) фишинговый домен реальный сайт

Важный термин, который стоит упомянуть, - Phishlet.

Фишлеты – строительные блоки Evilginx. Это конфигурационные файлы в формате YAML для проксирования настоящего веб-приложения в фишинговое веб-приложение.

Эти файлы содержат поддомены, которые нужно фишинговать, изменения веб-страницы в режиме реального времени, когда и какие файлы cookie необходимо захватить, URI страницы входа и т.д.

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

5. Сервис рассылки

Для рассылки э-писем, GoPhish требует набора действительных учетных данных SMTP для доступа к SMTP-серверу. Эмпирическое правило в этом случае — избегать настройки SMTP-сервера с нуля, поскольку индустрия email-рассылки сильно конкурирует за повышение репутации отправления своих SMTP-серверов.

Это, в свою очередь, гарантирует, что их электронные письма будут доставлены в папку «Входящие» получателей, а не спам. Вероятность того, что электронные письма будут помечены как спам для недавно настроенного SMTP-сервера, очень близка к очевидной.

На рынке есть множество решений, таких как — AWS SES, Mailgun, Office 365 для массовой рассылки. Они уже хорошо зарекомендовали себя и имеют хорошую репутацию отправления.

6. Обратный прокси-сервер

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

Все это должно быть сделано в физически отдельном месте, чем остальная инфраструктура. Всего этого можно легко добиться с помощью обычного обратного прокси-сервера, но есть более эффективное и удобное бесплатное решение — Cloudflare.

Существует множество преимуществ использования Cloudflare для управления фишинговым доменным именем, некоторые из которых — бесплатные сертификаты SSL, защита от DDoS, правила WAF, проверка с помощью капчи, обратный прокси-сервер, CDN и т.д.



7. Виртуальный выделенный сервер

Для компонентов, упомянутых выше, некоторые из них являются SaaS, а другие — с открытым исходным кодом, которые необходимо размещать самостоятельно. В случае использования GoPhish и Evilginx2, VPS также должен быть включен в объем инфраструктуры. Наиболее популярными вариантами являются AWS EC2, DigitalOcean Droplets и т.д.



Как настроить фишинговую инфраструктуру просто?

На этом мы заканчиваем с «Что» и «Почему» в плане компонентов базовой фишинговой инфраструктуры.

Кажется, чтобы настроить все это вручную, предстоит немало поработать. Учитывая, насколько субъективными и динамичными могут быть фишинговые кампании, также непросто автоматизировать подготовку всех компонентов, поскольку многие переменные требуют предположений.

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

Постановка проблемы

При настройке GoPhish и Evilginx2 возникает много сложностей. Оба имеют открытый исходный код, написаны на Golang и требуют компиляции из исходного кода. Сам этот факт может привести к большому разочарованию во время вовлечения.

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

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

Еще одна проблема заключалась в том, чтобы заставить GoPhish и Evilginx2 работать на одном сервере одновременно. Оба требуют портов 80 и 443 и поэтому не могут сосуществовать без обратного прокси-сервера, такого как NGiNX. NGiNX может ждать сигнала, скажем, 80/tcp или 443/tcp, и в зависимости от поддомена трафик может быть направлен либо в контейнер Evilginx2, либо в контейнер GoPhish.

Таким образом, еще один Docker-контейнер NGiNX вместе с хорошо написанным определением YAML для создания докеров — это все, что требуется.

Evilginx2 по умолчанию запрашивает генерацию SSL-сертификатов от Let’s Encrypt и, следовательно, требует проверки домена. Это абсолютно бесполезно, так как Cloudflare уже позаботится о потребностях SSL.

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

Оставалось только получить удобный скрипт-оболочку, который принимал бы входные данные, такие как имя домена, поддомены, фишлет и т.д., и творил волшебство (модификации docker-compose.yml, генерация самостоятельно сгенерированного сертификата, NGiNX/Конфигурация GoPhish/Evilginx2 и т.д.). В этом случае в значительной степени обо всем может позаботиться Bash.

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

(опция)

Хотя этот абзац является опциональным, интересно задокументировать еще некоторые проблемы, с которыми пришлось столкнуться при создании PACU. Прежде всего, чтобы заставить Evilginx2 работать за NGiNX, в файле конфигурации NGiNX необходимы эти строки.

Во-вторых, учитывая тот факт, что все три контейнера находятся в частной сети, а для Evilginx2 трафик поступает с частного IPv4, назначенного NGiNX, Evilginx2 никогда не узнает фактический общедоступный IPv4-адрес жертвы, посещающей фишлет, и вместо этого регистрирует частный IPv4-адрес контейнера NGiNX для каждого запроса.

Это было исправлено путем внесения небольшого изменения в код Evilginx2, чтобы вместо этого использовать значение из X-Real-IP, которое является заголовком HTTP, используемым NGiNX для предоставления реального IP-адреса клиента. Но даже при этом IP-адрес, который получит Evilginx2, принадлежит Cloudflare.

Чтобы NGiNX имел доступ к IP-адресу жертвы, взаимодействующему с инфраструктурой Cloudflare, в файл конфигурации NGiNX была внесена еще одна модификация, чтобы установить заголовок X-Real-IP в качестве значения заголовка CF-Connecting-IP, который он получает от Cloudflare. Это значение представляет собой фактический общедоступный IP-адрес посетителя.

К настоящему времени ясно, что есть действительно много проблем при настройке Evilginx2 и GoPhish для типичного фишингового взаимодействия, и как они уже были устранены (теоретически до сих пор) с помощью PACU, включая автоматическую инициализацию с помощью Docker, docker-compose и простой скрипт-оболочку, который еще предстоит продемонстрировать. Но перед этим еще один момент…

PACU автоматизирует только установку и настройку двух уже рассмотренных компонентов — GoPhish (фреймворк кампании) и Evilginx2 (фреймворк фишинга).

Как обсуждалось ранее, это единственные два компонента, которые должны быть размещены самостоятельно, и с ними связано больше всего неопределенностей и проблем. Хотя возможна интеграция других компонентов, таких как Cloudflare, AWS, MailGun и т.д., это управляемые сервисы и решения SaaS. Некоторые из них платные, некоторые предоставляют пробные версии, а другие – ограниченные функции бесплатно.

При интеграции нескольких таких сервисов для использования PACU потребуется точно такой же стек сервисов. Учитывая то же самое, возможность получения реального IP-адреса посетителя от Cloudflare путем изменения файла конфигурации NGiNX была оставлена необязательной в PACU.

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



Архитектурная диаграмма



PACU (ПАКУ)

Название заимствовано у всё пожирающей южноамериканской пресноводной рыбы, относящейся к пираньевым. Поскольку эти рыбы достаточно агрессивные, название хорошо отражает напористый характер red teaming’а и фишинговых (фиш – fish – рыба) кампаний.

Установка

Чтобы сделать установку PACU как можно более удобной, она стала доступной с одной командой для Ubuntu 20.04 LTS на AWS EC2.

curl -sSL raw.githubusercontent.com/thirdbyte/pacu/main/init.sh | bash

Это вызывает скрипт init.sh, который устанавливает все зависимости, такие как docker, docker-compose и т.д., и клонирует репозиторий. Кроме того, он копирует setup.sh, который является фактическим скриптом-оболочкой, в /usr/local/bin с именем pacu, чтобы его можно было вызывать из любого места.

(опция)

Чтобы убедиться, что PACU можно использовать в других дистрибутивах и средах Linux, отличных от AWS EC2, к его настройке доступен ручной подход. Это предполагает, что такие зависимости, как docker и docker-compose, предварительно установлены.

git clone https://github.com/thirdbyte/pacu

cd pacu

chmod +x *.sh

./build.sh

./setup.sh может быть вызван для начала кампании.

Использование

Вызов pacu из оболочки даст следующий вывод.

Usage: pacu -d example.org -p github # Initializes Evilginx2

pacu -d example.org -g url # Initializes GoPhish

pacu -d example.org -p github -g url # Initializes Evilginx2 with GoPhish

pacu -d example.org -p github -g url -c # Enables support for Cloudflare while initializing

pacu evilmux # Gets into Evilginx2 tmux session

pacu evilmux-print # Prints stdout from Evilginx2 tmux session

pacu nginx-juice # Prints juicy log from NGiNX

pacu nginx-stop # Stops NGiNX

pacu nginx-start # Starts NGiNX

pacu remove # Removes pacu

Подсказка по использованию не требует разъяснений.

-d используется для предоставления доменного имени, которое будет использоваться в кампании.

-p используется для предоставления имени фишлета без расширения .yaml. Эти фишлеты расположены по адресу /opt/pacu/evilginx/phishlets/. Итак, если нужно использовать github.yaml, в полной команде будет -p github .

-g используется для определения поддомена, который будет указывать на фишинговый сервер GoPhish.

-c без какого-либо значения аргумента указывает, что Cloudflare используется в качестве обратного прокси-сервера в инфраструктуре, и поэтому предполагается, что nginx-proxy получает реальный IP-адрес клиента из HTTP-заголовка CF-Connecting-IP.

Интересно отметить, что в случае отсутствия -p Evilginx2 не будет использоваться, и аналогично, если нет -g, GoPhish не будет использоваться. Это полезно для вовлечений с особыми требованиями, когда требуется только одно из двух.

Как только выполняется начальная команда, например, следующая команда

pacu -d evil.com -p github -g track -c

Вся настройка и создание приманки происходит только через скрипт-оболочку. Приманка Evilginx2 будет выведена напрямую на стандартный вывод. Кроме того, список имен хостов, разделенных запятыми, которые необходимо настроить в качестве записей DNS в Cloudflare или любой другой используемой службе хостинга DNS. Эти имена хостов автоматически получаются из используемого фишлета и доменного имени, предоставленного вместе с -d.

Некоторый дополнительный функционал объясняется ниже.

evilmux подключается к сессии tmux, где Evilginx2 работает для взаимодействия с ним.

evilmux-print выводит содержимое сеанса tmux на стандартный вывод.

nginx-juice выводит некоторые сочные данные из NGiNX, которые включают исходный IP-адрес, файлы cookie, запрос body POST, пользовательский агент и т.д. (Еще одно преимущество использования PACU)

nginx-stop останавливает NGiNX в результате чего фишинговый URL-адрес не отвечает, если взаимодействие должно быть временно приостановлено.

nginx-start снова запускает NGiNX после его остановки через nginx-stop.

remove полностью удаляет PACU.

В случае использования –g админ-сервер GoPhish доступен по адресу https://172.16.238.4:3333. Чтобы получить к нему доступ с другого клиента, используйте переадресацию локального порта SSH следующим образом.

ssh -L 127.0.0.1:3333:172.16.238.4:3333 user@remotehost

данные: admin:admin@gophish

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

Заключение

Основным мотивом для создания этого блога было показать сложности, с которыми обычно сталкивается участник красной команды при попытке настроить инфраструктуру фишинга для социальной инженерии, и предложить решение для инфраструктуры фишинга. Здесь гораздо больше трудностей, чем мы описали, так что ждите новых постов в блоге.
 
Evilginx.. этим до сих пор кто-то пользуется?
А почему нет? Третья версия уже появилась и есть такие модули типа evilpuppet, правда не для всех. А так каждый допиливает софт под свои нужны и пользуется.

За статью отдельное спасибо. Интересно было почитать
 
хороший и интересный вопрос. тоже заинтересован в способе обхода
У меня есть собственная разработка реверс-прокси, подходит для любых сайтов. Пишите в ПМ свои контакты, проконсультирую.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх