D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Введение
При пентесте специалисты "Red Team" (Атакующие) для достижения поставленных целей, моделируют реалистичные сценарии атаки, как при настоящих полевых условиях. Фишинг является одним из сценариев атаки для получения первоначального доступа.В контексте "Red Team" (Атакующих) фишинг это действия, связанные с отправкой электронных писем из кажущихся надежными источников с целью сбора личной информации или воздействия на жертв чтобы они выполнили определенные действия в интересах атакующих.
Хотя сама концепция фишинга кажется относительно простой, создание фишинговой инфраструктуры и необходимого для нее инструментария/фреймворка обычно само по себе является утомительной и трудоемкой задачей. В результате человек, проводящий фишинговую атаку, оказывается занят скорее настройкой фишинговой инфраструктуры и конфигурацией того, что требуется для проведения атаки, чем самой атакой.
Эта статья посвящена тому, как упростить сценарий атаки "Red Team" (Атакующих) фишинга и обеспечить последовательную и предсказуемую среду для проведения фишинговых атак.
Что необходимо для успешной фишинговой атаки?
Фишинг может осуществляться с помощью различных средств связи, таких как электронная почта, мессенджеры, текстовые сообщения и т.д. Обычно в сценарии "Red Team" (Атакующих) фишинг осуществляется через электронную почту, поскольку это относительно формальный способ коммуникации, который лучше всего подходит для типичной корпоративной среды. Конечная цель похитить конфиденциальную информацию или доставить жертве вредоносное ПО. Но в этой статье мы сосредоточимся на первом варианте, т.е. на сборе учетных данных.Ниже перечислены основные компоненты успешной фишинговой атаки:
- Предлог
- Доменное имя
- Программная платформа для атак
- Фреймворк для фишинга
- Сервис рассылки писем
- Реверс прокси
- ВПС
1. Предлог
Первый ключевой шаг разработка предлога для успешной атаки. Предлог это выдуманная история, используемая социальными инженерами для того, чтобы убедить жертву предоставить конфиденциальную информацию или совершить преступное действие.В сценарии "Red Team" (Атакующих) фишинговая атака использует любопытство или страх жертвы, чтобы побудить ее действовать по сценарию/указаниям атакующих, несмотря на ее здравый смысл. Популярными механизмами являются заявки на работу, обновление медицинских контрактов, счета или запросы в отдел кадров, в зависимости от организации и конкретных сотрудников, затем следует ссылка, направляющая жертву на страницу входа для сбора учетных данных. Некоторые идеи по предлогам можно найти здесь.
2. Доменное имя
Домен это сердце фишинговой атаки. Он является воротами жертвы к проблемам и воротами "Red Team" (Атакующих) во внутреннюю сеть организации. Выбор доменного имени для фишинговой атаки во многом зависит от характера предлога.Типичным случаем сбора учетных данных является имитация страницы входа в реальное веб-приложение, что требует использования доменного имени, внешне близкого к оригинальному.
Для получения заманчивого доменного имени можно использовать такие приемы, как домены "typosquat" (Тайпсквоттинг - регистрация доменных имён, близких по написанию, например, "wwwsite.example" в расчёте на пользователя, который хотел попасть на "www.site.example"), необычные домены (".site", "walm.art"), домены с истекшим сроком действия, легитимные домены, которые были взломаны, и т.д. Общее правило избегать получения гомоглифных доменных имен (содержащих специальные символы, например, "éxámple.org", "ḛxamƿle.org").
3. Программная платформа для атак (фреймворк)
Для процесса настройки шаблонов и полноценной атаки с нуля Gophish как фреймворк является лучшим решением с открытым исходным кодом. Он необходим для проведения атаки, поскольку в противном случае аналитик может запутаться в отслеживании адресов электронной почты жертв, шаблонов писем и расписаниях атак.
Ниже перечислены некоторые компоненты Gophish и их применение
- Атаки: Gophish предназначен для запуска атак. Это подразумевает отправку электронных писем одной или нескольким группам и отслеживание того, какие из них были открыты, какие ссылки были нажаты и чьи данные были введены.
- Пользователи и группы: Gophish позволяет управлять группами пользователей, участвующих в атаке.
- Профили рассылки: Для отправки писем Gophish требует настройка SMTP релея, известных как "профили отправки". Для этого можно использовать такие сервисы, как AWS SES, Mailgun и т.д.
- Шаблоны писем: Содержимое электронных писем, доставляемых на цели, называется "шаблоном". Шаблоны могут быть созданы с нуля или импортированы из существующего письма. Они также позволяют отправлять вложения. Шаблоны также могут отслеживать, когда человек просматривает письмо.
- Лендинги (целевые страницы): После получения письма когда жертвы переходят по полученным фишинговым ссылкам, им представляются целевые HTML страницы. Шаблоны, позволяющие перехватывать учетные данные и перенаправлять пользователей на другой сайт после того, как они введут данные. Наименее интересная функциональность из-за появления многофакторной аутентификации (2FA)
4. Фреймворк для фишинга
В связи с широким распространением методов двухфакторной аутентификации (2FA) большинство считает, что быть обманутым уже невозможно. Это мнение подкрепляется тем, что все больше сайтов по умолчанию используют протокол HTTPS.Evilginx это механизм атаки "человек посередине", используемый для подбора учетных данных для входа в систему вместе с сессионными cookie файлами, что, в свою очередь, позволяет обойти защиту от двухфакторной аутентификации.
При каждом успешном входе на сайт генерируется токен аутентификации для данной сессии, который включается в каждый запрос, отправляемый пользователем на сайт (cookie).
Evilginx2 ворует токены аутентификации, передаваемые в виде cookies, что позволяет ему обходить логин/пасс и двухфакторную аутентификацию. По сути, он дублирует сессию. При этом злоумышленник воспринимается как полностью успешно вошедший в систему пользователь с установленными cookies и токеном(ами).
Заслуживающим упоминания, является Phishlet.
Phishlet это своего рода строительные блоки Evilginx. Конфигурационные файлы в формате YAML для проксирования (перенаправления/копирования) легитимного веб-приложения в фишинговое.
В этих файлах указываются поддомены, которые необходимо фишировать, изменения веб-страницы в реальном времени, время и тип перехватываемых cookies, URL страницы входа и т.д.
Написание собственного Phishlet применяется в случае когда вы имеете дело с не очень популярным веб-приложением. Как создать свой собственный Phishlet, можно узнать тут.
5. Сервис рассылки писем
Для отправки писем GoPhish требуется SMTP сервер. Лучше не создавать свой SMTP сервер с нуля, так как в индустрии маркетинга электронной почты идет жесткая конкуренция за повышение репутации 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. Подробнее о Docker и контейнеризации читайте тут.
Другая задача состоит в том, чтобы заставить GoPhish и Evilginx2 одновременно работать на одном сервере. Оба требуют порты 80 и 443 и поэтому не могут сосуществовать без обратного прокси, например NGiNX. Он может прослушивать 80/tcp или 443/tcp и исходя из поддомена, направлять трафик либо на контейнер Evilginx2, либо на контейнер GoPhish.
Поэтому, требуется еще один Docker контейнер NGiNX и хорошо написанный docker-compose YAML.
Evilginx2 по умолчанию предлагает сгенерировать SSL сертификаты от Let's Encrypt, и требует верификации домена. Это совершенно бесполезно, поскольку Cloudflare уже позаботился о необходимости SSL.
Использование самоподписного сертификата работает просто, для них Evilginx2 должен быть запущен в режиме разработчика.
Осталось написать скрипт, который будет принимать данные, имя домена, поддомены, используемый phishlet и т.д., а всю магию (модификацию 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 потребуется точно такой же стек сервисов. Учитывая это, в PACU оставлена возможность получения реального IP посетителя с Cloudflare путем модификации конфигурационного файла NGiNX.
Чтобы подытожить всю рассмотренную выше инфраструктуру фишинга, ниже приведено ее наглядное представление.
Схема архитектуры
PACU
Название происходит от имени всеядной южноамериканской пресноводной рыбы серрасальмиды, родственной пиранье. Поскольку эти рыбы довольно агрессивны, название хорошо соотносится с агрессивным характером "Red Team" (Атакующих) и фишинговых атак.Настройка
Чтобы удобно установить и настроить PACU для Ubuntu 20.04 LTS на AWS EC2 нужна всего одна команда.Bash: Скопировать в буфер обмена
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, уже установлены.Bash: Скопировать в буфер обмена
Код:
git clone https://github.com/thirdbyte/pacu
cd pacu
chmod +x *.sh
./build.sh
./setup.sh (для запуска pacu)
Использование
Вызов pacu из shell (терминала) приведет к следующему.Bash: Скопировать в буфер обмена
Код:
Usage: pacu -d example.org -p github # Инициализация Evilginx2
pacu -d example.org -g url # Инициализация GoPhish
pacu -d example.org -p github -g url # Инициализация Evilginx2 с GoPhish
pacu -d example.org -p github -g url -c # Включить поддержку Cloudflare при инициализации
pacu evilmux # Войти в tmux-сессию Evilginx2
pacu evilmux-print # Напечатать stdout из tmux-сессии Evilginx2
pacu nginx-juice # Напечатать juice лог из NGiNX
pacu nginx-stop # Остановить NGiNX
pacu nginx-start # Запуск NGiNX
pacu remove # Удаление pacu
Подсказка по использованию не требует пояснений.
- -d используется для указания доменного имени, которое будет использоваться в атаке.
- -p имя phishlet без расширения .yaml. Эти фишлеты располагаются по адресу /opt/pacu/evilginx/phishlets/. Таким образом, если необходимо использовать github.yaml, то в полной команде будет -p github.
- -g используется для определения поддомена, на который будет указывать фиш сервер GoPhish.
- -c без значения аргумента указывает на то, что в качестве обратного прокси в инфраструктуре используется Cloudflare, поэтому nginx-proxy должен получать реальный IP клиента из HTTP-заголовка CF-Connecting-IP от Cloudflare.
После выполнения начальной команды, например, следующей команды
Bash: Скопировать в буфер обмена
pacu -d evil.com -p github -g track -c
Вся настройка и создание приманки происходит только через скрипт. Evilginx2 будет выводиться непосредственно в stdout. Кроме того, через запятую указывается список имен хостов, которые должны быть настроены как DNS на Cloudflare или другом используемом DNS хостинге. Эти имена хостов будут получены автоматически из используемого phishlet и доменного имени, указанного вместе с -d.
Ниже описаны некоторые дополнительные функции.
- evilmux подключается к сессии tmux, в которой запущен Evilginx2.
- evilmux-print печатает содержимое tmux-сессии в stdout.
- nginx-juice печатает несколько juice логов из NGiNX, включая IP источника, кукис, тело запроса POST, User Agent и т.д. (еще одно преимущество использования PACU).
- nginx-stop останавливает NGiNX, на случай если взаимодействие нужно временно приостановить.
- nginx-start запускает NGiNX после его остановки с помощью nginx-stop.
- remove полностью удаляет PACU.
Bash: Скопировать в буфер обмена
ssh -L 127.0.0.1:3333:172.16.238.4:3333 user@remotehost
Данные для входа: admin:admin@gophish
Конфигурация GoPhish должна быть выполнена вручную, включая настройку профилей рассылки, целевой страницы, шаблонов писем, пользователей и групп, атак и т.д.
Заключение
Мотивом этой статьи было указать на проблемы, с которыми обычно сталкивается специалист "Red Team" (Атакующих) при настройке фишинговой инфраструктуры для социально-инженерной деятельности, и предложить простое решение для фишинговой инфраструктуры. Впереди еще много проблем, так что ждите новых статей в блоге.Специально для XSS.is
Перевёл: IvanVasilyevich
Предложил перевод: Aels
Автор статьи: Shlok
Актуальность: 30 Мая, 2022
Оригинал: https://payatu.com/blog/phishing-infrastructure-setup
Перевёл: IvanVasilyevich
Предложил перевод: Aels
Автор статьи: Shlok
Актуальность: 30 Мая, 2022
Оригинал: https://payatu.com/blog/phishing-infrastructure-setup