Fantast
Green Team
- 12.02.2025
- 24
- 3
подобные темы есть на форуме, именно этой не нашел.
Gophish — это программа с открытым кодом, созданная Джорданом Райтом. Gophish позволяет проводить автоматизированные фишинговые рассылки и таким образом имитировать действия злоумышленника.
Evilginx — это обратный прокси‑сервер, который проксирует соединение между пользователем и целевым веб‑ресурсом, позволяя перехватить логин, пароль и ключи сеанса. С помощью этого фреймворка можно обойти двухфакторную аутентификацию. Автор Evilginx — Куба Грецки.
Есть две версии интеграции этих двух инструментов. Первая — неофициальная, ее разработал Дилан Эванс, он же fin3ss3g0d. Она включает в себя более расширенный набор возможностей вроде SMS-рассылок и генерации QR-кодов, а также некоторые другие отличия от официальной версии.
Получаем креды от сервера, подключаемся к машине по SSH и проводим базовую настройку: создаем нового пользователя и добавляем его в группу sudo, создаем ключи SSH, отключаем аутентификацию по паролю, настраиваем порты, правила файрвола и так далее.
Разобравшись с сервером, приступаем к созданию и настройке домена. Для этого выбираем любой сервис, предоставляющий услуги аренды. Один из ключевых компонентов фишинговой атаки — это доменное имя, которое введет пользователя в заблуждение. Этот процесс называется тайпсквоттинг, и вариантов здесь может быть много.
Я решил создать неприметный домен webaccount.site, чтобы потом добавить к нему поддомены, содержащие названия известных организаций, так как поддомены необязательно должны быть уникальными. Например, если добавим поддомен microsoft, у нас получится microsoft.webaccount.site.
Теперь приступим к настройке DNS. Первым делом нужно установить основную запись типа А, которая связывает доменное имя с IP-адресом сервера. Для этого редактируем ресурсные записи в разделе управления зоной DNS у регистратора.
В дальнейшем при создании фишинговых адресов будет использоваться множество поддоменов и для каждого такого поддомена потребуется отдельная запись типа A, однако можно использовать и запись типа CNAME, передав ей в качестве аргумента регулярное выражение «звездочка».
Этот тип записи сопоставит псевдоним (поддомен) с каноническим именем домена (webaccount.site) в момент генерации фишингового адреса и получения TLS/SSL-сертификата в Evilginx.
Подождем, пока DNS-записи распространятся (это может занять некоторое время, от 15 минут до нескольких часов), и проверим работоспособность сервера. Для этого просто обращаемся к домену через браузер.
Домен успешно привязался к серверу. После аренды домена желательно подождать хотя бы неделю: чем домен старше, тем меньше вероятность, что он окажется в черных списках. Во время моих первых попыток я регистрировал домен и сразу же использовал его в имитации фишинговой атаки, из‑за чего его отстреливали в течение суток. Раз с доменом разобрались, приступим к установке почтового сервера.
Первым делом необходимо установить две записи. Одна — типа А с именем mail, указывающая на IP-адрес сервера.
Вторая запись — типа MX, которая указывает на сервер, обрабатывающий электронную почту.
Теперь можно приступить к установке и настройке Postfix. Подключаемся к своему VPS/VDS по SSH и запускаем установку:
Код:Скопировать в буфер обмена
sudo apt install postfix
При настройке в первом шаге выбираем пункт Internet Site.
Вводим доменное имя, которое будет определяться при отправке почты.
Указываем почтовый адрес администратора домена. Можно оставить пустым (что не рекомендуется), тогда почта, предназначенная для администратора, будет отправляться в /var/mail/nobody.
Дальше прописываем адреса вот в таком формате:
Код:Скопировать в буфер обмена
<hostname>, <domain>, localhost.com, localhost
Отказываемся от принудительного выполнения синхронизации обновлений.
Поле с локальной сетью не трогаем и оставляем по умолчанию.
Размер почтового ящика оставляем со значением 0, в этом случае он будет определяться общим дисковым пространством.
Символ, который будет использоваться для определения расширения локального адреса, — ставим плюсик.
И в последней настройке выбираем используемые протоколы — all.
После настройки установку Postfix можно считать завершенной. Проверяем при помощи утилиты netcat, запустился ли почтовый сервер. Достаточно постучаться на 25-й порт нашего хоста (порт SMTP по умолчанию).
Почтовый сервер запущен, но одной установки мало, необходимо также настроить ресурсные записи, чтобы почта доходила до конечной точки. Если пропустить этот важный этап, почта не то что будет попадать в спам, она в принципе не будет рассматриваться почтовыми серверами. Для успешной доставки сообщений необходимо настроить ресурсные DNS-записи типа TXT — SPF, DKIM, DMARC.
Чтобы такое правило работало, создаем запись TXT в панели управления доменом.
Эта запись определяет, что электронную почту от имени домена могут отправлять серверы, указанные в записях MX и A домена, а также имеющие IP-адреса из диапазона 94.142.141.0/24. Почта от других хостов будет помечена как подозрительная.
Ты можешь воспользоваться веб‑инструментом
DKIM использует пары ключей: закрытый, к которому имеет доступ только почтовый сервер, и открытый, который прописывается в текстовой DNS-записи, а затем используется получателем для проверки легитимности сообщения.
Настройка этой записи потребует множество шагов, будь внимателен при их выполнении — сделать что‑то не так довольно легко. Полное руководство по настройке DKIM есть на
Первым делом устанавливаем утилиту OpenDKIM:
Код:Скопировать в буфер обмена
sudo apt update<br>sudo apt install opendkim opendkim-tools
И редактируем файл /etc/opendkim.conf. Добавим следующие строки (номер порта Socket выбираем любой, который не занят):
Код:Скопировать в буфер обмена
AutoRestart Yes<br>AutoRestartRate 10/1h<br>UMask 002<br>Syslog yes<br>SyslogSuccess Yes<br>LogWhy Yes<br>Canonicalization relaxed/simple<br>ExternalIgnoreList refile:/etc/opendkim/TrustedHosts<br>InternalHosts refile:/etc/opendkim/TrustedHosts<br>KeyTable refile:/etc/opendkim/KeyTable<br>SigningTable refile:/etc/opendkim/SigningTable<br>Mode sv<br>PidFile /var/run/opendkim/opendkim.pid<br>SignatureAlgorithm rsa-sha256<br>UserID opendkim
pendkim<br>Socket inet:12712@localhost
Подключаем расширение Milter к Postfix. Сначала открываем файл /etc/default/opendkim и меняем номер порта вот в этой строке:
Код:Скопировать в буфер обмена
SOCKET="inet:12301@localhost"
Новый номер выбираем тот, что указали ранее в opendkim.conf:
Код:Скопировать в буфер обмена
SOCKET="inet:12712@localhost"
Затем настраиваем Postfix на использование Milter. Для этого открываем файл /etc/postfix/main.cf и убеждаемся, что присутствуют эти две строки и они не закомментированы:
Код:Скопировать в буфер обмена
milter_protocol = 2<br>milter_default_action = accept
Редактируем следующие строки, меняя номер порта на тот, что определили ранее.
Если таких параметров в файле нет, то прописываем их:
Код:Скопировать в буфер обмена
smtpd_milters = inet:localhost:12712<br>non_smtpd_milters = inet:localhost:12712
Создаем каталоги для взаимодействия с ключами:
Код:Скопировать в буфер обмена
sudo mkdir /etc/opendkim<br>sudo mkdir /etc/opendkim/keys
Указываем доверенные хосты в файле /etc/opendkim/TrustedHosts.
Создаем таблицу ключей, для этого прописываем в файл /etc/opendkim/KeyTable такую строку:
Код:Скопировать в буфер обмена
mail._domainkey.webaccount.site webaccount.site:mail:/etc/opendkim/keys/webaccount.site/mail.private
Создаем таблицу подписей, прописав в файл /etc/opendkim/SigningTable эту строку:
Код:Скопировать в буфер обмена
*@webaccount.site mail._domainkey.webaccount.site
Теперь приступим к созданию пары открытого и закрытого ключей. Переходим в каталог /etc/opendkim/keys и создаем директорию для домена, в которой будут храниться ключи.
Генерируем ключи следующей командой:
Код:Скопировать в буфер обмена
sudo opendkim-genkey -s mail -d webaccount.site
После чего меняем владельца файла с закрытым ключом на учетную запись opendkim.
Осталось добавить содержимое файла mail.txt в текстовую запись DNS в панели управления доменом. Выводим содержимое файла в консоль, копируем всю строку, которая находится в скобках, и приводим к нужному формату.
В итоге у меня получилось отформатированное значение, которое нужно добавить в DNS-запись типа TXT с ключом mail._domainkey.
Настройка крайне проста, особенно на фоне DKIM. Достаточно создать TXT-запись вроде той, что на скриншоте.
Код:Скопировать в буфер обмена
echo "Test" | mail -s "Test" [почтовый адрес]
Как видим, почтовый сервер настроен и корректно работает (половину балла мне сняли, потому что домен есть в одном из нескольких черных списков, но это совсем не критично). Если ты сделал ошибки в настройке, в этом отчете они будут указаны.
Приступим к установке Gophish. Нам нужно скачать версию с интеграцией в Evilginx из репозитория, тут есть два варианта установки. Первый — скачиваем командой wget архив с релизом для своей ОС со страницы releases, после чего просто разархивируем файл и делаем бинарник Gophish исполняемым командой chmod.
Второй вариант — сборка из исходного кода. Для этого копируем репозиторий и запускаем установку:
Код:Скопировать в буфер обмена
sudo git clone GitHub - kgretzky/gophish: Open-Source Phishing Toolkit<br>go build
В результате у нас будет версия Gophish, модифицированная для работы с Evilginx.
Теперь можно приступить к настройке и запуску Gophish. Первым делом редактируем файл config.json. В нем нужно изменить параметр admin_server.listen_url. По умолчанию там указан локальный IP 127.0.0.1. Чтобы Gophish работал не только локально и к нему возможно было подключиться через интернет, нужно изменить этот IP на 0.0.0.0:3333. Номер порта, кстати, можно выставить любой незанятый в системе.
После настройки запускаем исполняемый файл Gophish и сразу ищем в логах логин и пароль по умолчанию для доступа к панели управления.
Теперь переходим в браузер и обращаемся к панели Gophish по адресу своего VPS/VDS с указанным ранее портом.
Вводим креды, которые нашли в логах, после чего у нас открывается форма для изменения пароля по умолчанию. Меняем пароль, снова вводим креды, аутентифицируемся и попадаем в нашу учетную запись Gophish.
Чтобы оптимизировать запуск и дальнейшие фишинговые кампании, нужно настроить Gophish как демон, то есть создать сервис, который будет запускать Gophish в фоновом режиме или останавливать одной командой. В каталоге /etc/init.d находятся сценарии оболочки, которые запускаются системой инициализации SysVinit, поэтому создаем в этом каталоге файл Gophish и добавляем следующий код, указав в параметре appDirectory абсолютный путь к Gophish:
Код:Скопировать в буфер обмена
processName=Gophish<br>process=gophish<br>appDirectory=/home/zxc/gophish<br>logfile=/var/log/gophish/gophish.log<br>errfile=/var/log/gophish/gophish.error<br>start() {<br> echo 'Starting '${processName}'...'<br> cd ${appDirectory}<br> nohup ./$process >>$logfile 2>>$errfile &<br> sleep 1<br>}<br>stop() {<br> echo 'Stopping '${processName}'...'<br> pid=$(/bin/pidof ${process})<br> kill ${pid}<br> sleep 1<br>}<br>status() {<br> pid=$(/bin/pidof ${process})<br> if [["$pid" != ""| "$pid" != "" ]]; then<br> echo ${processName}' is running...'<br> else<br> echo ${processName}' is not running...'<br> fi<br>}<br>case $1 in<br> start|stop|status) "$1" ;;<br>esac
Сохраняем файл и прописываем команды для запуска демона и проверки статуса его работы.
Сервис запускается и работает корректно.
Код:Скопировать в буфер обмена
sudo git clone GitHub - kgretzky/evilginx2: Standalone man-in-the-middle attack framework used for phishing login credentials along with session cookies, allowing for the bypass of 2-factor authentication && cd evilginx2
Evilginx тоже написан на Go, который у нас уже установлен. Поэтому просто выполняем make. Скрипт соберет весь проект и создаст исполняемый файл evilginx в директории build.
Чтобы постоянно не прописывать бесконечные пути, лучше собрать все необходимое в отдельном каталоге. Создаем директорию evilginx в домашнем каталоге и копируем исполняемый файл evilginx вместе с директориями phishlets и redirectors в ~/evilginx:
Код:Скопировать в буфер обмена
sudo mkdir ~/evilginx<br>sudo cp ./build/evilginx ~/evilginx<br>sudo cp -r ./phishlets/<br>sudo cp -r ./redirectors
Когда все готово, приступаем к настройке. Запускаем Evilginx:
Код:Скопировать в буфер обмена
sudo ./evilginx -p phishlets/
Нам необходимо определить IP-адрес и домен, а также интегрировать Gophish. В консоли Evilginx прописываем эти команды:
Код:Скопировать в буфер обмена
config domain [ваш домен]<br>config ipv4 [IP вашего VPS/VDS]<br>config Gophish admin_url [URL, на котором поднят gophish]<br>config Gophish api_key [ключ API gophish]<br>config Gophish insecure true
Ключ API Gophish можно найти в панели управления Gophish, перейдя на вкладку Account Settings.
Теперь выполняем команду config gophish test для тестирования соединения Evilginx и Gophish.
Сообщение гласит о том, что соединение успешно.
На этом этапе мы построили основную часть инфраструктуры. Теперь можно начать подготовку к проведению фишинговой кампании.
Первый компонент — это группы пользователей, которым будут рассылаться письма. Другими словами, это жертвы, точнее, подопытные в нашем тесте.
Предположим, в результате разведки мы получили имена и почтовые адреса работников компании. Все эти данные добавляем в соответствующие поля и нажимаем кнопку Add для каждого пользователя. Либо можешь сразу загрузить файл CSV, содержащий все эти данные. Когда вся инфа добавлена, нажимаем кнопку Save changes.
Следующее, что стоит настроить, — это шаблон электронного письма. Правильно написанное письмо, не вызывающее подозрений, а вызывающее только желание поскорее нажать на ссылку и выполнить все инструкции, — это ключевой компонент успешной фишинговой атаки. Тут уже все зависит от навыков социальной инженерии атакующего. Я создам абсолютно условное фишинговое письмо и не буду расписывать методы социальной инженерии, это отдельная тема.
Чтобы создать фишинговое письмо, я взял HTML-код настоящего сообщения от Microsoft, которое приходило мне на почту, а затем немного изменил его содержание.
В разделе Email Templates вставляем HTML-код и редактируем сообщение на вкладке HTML.
Не забываем поставить галочку Add Tracking Image, которая добавит трекер для отслеживания статистики по открытым письмам. Трекер выглядит как переменная {{.Tracker}} в коде сообщения. Кстати, об этих переменных стоит поговорить чуть подробнее.
При помощи переменных ты можешь менять содержимое сообщения в зависимости от пользователя, которому оно отправлено. Всего переменных десять, нам в первую очередь пригодятся {{.FirstName}}, {{.LastName}} и {{.Email}}, которые подставляют имя, фамилию и адрес почты из настроек групп пользователей. Благодаря им письма не придется персонализировать вручную.
Переменная {{.URL}} подставляет сгенерированную фишинговую ссылку в сообщение. Например, я подставил ссылку через переменную в кнопку «Подтвердить». Про остальные переменные можно прочитать в
Также прописываем заголовок и отправителя сообщения, который будет указан, когда письмо дойдет. Я просто скопировал отправителя из официального сообщения Microsoft, но изменил домен на свой, добавив слово microsoft поддоменом третьего уровня. В итоге мое сообщение будет отправлено от имени «Служба технической поддержки учетных записей Microsoft noreply@microsoft.webaccount.site».
Ниже — фишинговое письмо, которое у меня получилось. Gophish будет подставлять почту пользователя вместо переменной {{.Email}}.
Письмо, как видишь, условное и на практике потребовало бы доработки.
Третий компонент — это профиль отправки, тот, ради которого мы настраивали почтовый сервер и записи DNS. Здесь мы указываем SMTP-ретранслятор, с помощью которого будет происходить рассылка. Открываем вкладку Sending Profile, пишем название профиля, указываем почту отправителя и, наконец, пишем адрес и порт SMTP-ретранслятора. Так как он находится на том же хосте, где мы запустили Gophish, вводим localhost:25 (порт SMTP указывать обязательно). Также не забудь поставить галочку Ignore Certificate Errors.
В этом же окне есть кнопка для отправки тестового письма, обязательно проверяй работоспособность SMTP-ретранслятора перед проведением кампании.
На этом настройка компонентов Gophish закончена, поэтому сворачиваем браузер и приступаем к созданию фишинговых ресурсов Evilginx.
Я не буду подробно описывать, как работают фишлеты или как их создавать, об этом поговорим в другой раз. Пока же можешь обратиться к
Запускаем Evilginx с фишлетом:
Код:Скопировать в буфер обмена
sudo ./evilginx -p phishlets/
И начинаем настраивать фишинговые компоненты. Первым делом задаем URL, который пользователь будет видеть во время проксирования трафика. Нужно придумать такое имя хоста, которое не будет вызывать подозрений. Я добавил два поддомена к своему имени хоста:
Код:Скопировать в буфер обмена
microsoft.outlook.webaccount.site
Так как поддомены необязательно должны быть уникальными, мы используем это свойство для добавления известных и авторитетных имен. Указываем имя хоста и активируем фишлет:
Код:Скопировать в буфер обмена
phishlets hostname Outlook microsoft.outlook.webaccount.site<br>phishlets enable Outlook
В этот момент Evilginx будет автоматически получать сертификаты SSL/TLS для всех доменов и поддоменов, которые используются в атаке, чтобы фишинговый URL, да и соединение в принципе работали по протоколу HTTPS.
Через 30 секунд успешно получаем все сертификаты SSL/TLS и двигаемся дальше.
Код:Скопировать в буфер обмена
lures create Outlook
Консоль выведет числовой идентификатор приманки, он нам еще пригодится. Приводим ссылку к такому виду:
Код:Скопировать в буфер обмена
Копируем сгенерированную фишинговую ссылку и переходим в Gophish.
Выбрав все компоненты, вставляем сгенерированную ранее ссылку в поле Evilginx Lure URL и нажимаем на кнопку Launch Campaign.
После запуска кампании мы видим статистику, которая ведется в режиме реального времени. Пока что четыре сообщения отправлены, но никем не прочитаны.
Проверяем почту и видим, что фишинговое сообщение дошло.
Нажав на профиль отправителя, замечаем, что тут указано всё то, что мы прописали в шаблоне электронного сообщения Gophish. Невнимательный пользователь, скорее всего, даже не будет проверять, но если кто‑то и проверит, то есть вероятность, что слово microsoft в названии домена убаюкает подозрительность.
Сразу же проверим, работает ли трекер, отслеживающий открытие сообщений. Видим, что просмотр сообщения регистрируется, статус пользователя в столбце Status меняется, к тому же обновляются диаграммы.
Вернемся к нашему фишинговому письму. Когда мы наводим курсор на кнопку «Подтвердить», в нижнем углу браузера видим ссылку, по которой мы перейдем после нажатия.
Имитируя действия потенциальной жертвы, переходим по фишинговой ссылке и ждем, пока браузер проверит, безопасная ли это страница.
Нас перенаправляет на настоящую страницу авторизации Microsoft, но при этом весь трафик проходит через наш обратный прокси‑сервер вот с таким доменом:
Код:Скопировать в буфер обмена
live.microsoft.outlook.webaccount.site
Вводим логин и пароль, после чего получаем запрос на подтверждение второго фактора аутентификации в приложении Microsoft Authenticator.
Продолжая имитацию действий потенциальной жертвы, подтверждаем вход в мобильном приложении и ждем, пока пройдет аутентификация.
И в итоге входим в учетную запись. При этом соединение все еще происходит через прокси‑сервер потенциального злоумышленника.
Открываем консоль Evilginx и видим логи успешного перехвата.
Вводим команду
Код:Скопировать в буфер обмена
sessions [ID сессии]
И получаем информацию, которая содержит время перехвата, IP-адрес жертвы, User agent, логин, пароль и cookie сеанса.
Логин и пароль — это, конечно, важная и критическая информация, но смысл этой атаки — перехватить токен сеанса в виде файла cookie. Чтобы проэксплуатировать перехват сессии, копируем всю строку cookies и открываем браузер.
Устанавливаем расширение Cookie-Editor, которое позволяет манипулировать куками, и открываем легитимную страницу входа в Microsoft Outlook. Перед тем как подменять cookie, удаляем те, что назначены браузером. Для этого просто нажимаем кнопку Delete All.
Затем нажимаем кнопку Import и вставляем сплошную строку из перехваченной сессии в Evilginx. Теперь еще раз нажимаем на Import и обновляем страницу.
После обновления страницы браузер обрабатывает куки, которые мы внедрили, и открывает учетную запись пользователя, у которого был перехвачен сессионный токен.
Раздобыв учетку Microsoft в любом сервисе, мы также получаем доступ к основным настройкам и ко всем сервисам этой учетной записи. Это может быть довольно критично, особенно учитывая, сколько конфиденциальной информации может храниться в OneDrive или в документах Word.
На этом наша фишинговая кампания завершена. Как видим, для проведения этой атаки нам потребовались только базовые технические знания и навыки, а также небольшое финансовое вложение в аренду сервера и домена.
Связка Evilginx и Gophish
Два фреймворка, которые мы будем использовать для проведения фишинговой кампании, называются Evilginx и Gophish. Это два самостоятельных инструмента, которые выполняют разные задачи.Gophish — это программа с открытым кодом, созданная Джорданом Райтом. Gophish позволяет проводить автоматизированные фишинговые рассылки и таким образом имитировать действия злоумышленника.
Evilginx — это обратный прокси‑сервер, который проксирует соединение между пользователем и целевым веб‑ресурсом, позволяя перехватить логин, пароль и ключи сеанса. С помощью этого фреймворка можно обойти двухфакторную аутентификацию. Автор Evilginx — Куба Грецки.
Есть две версии интеграции этих двух инструментов. Первая — неофициальная, ее разработал Дилан Эванс, он же fin3ss3g0d. Она включает в себя более расширенный набор возможностей вроде SMS-рассылок и генерации QR-кодов, а также некоторые другие отличия от официальной версии.
Ссылка скрыта от гостей
интеграцию разработал автор Evilginx Куба Грецки, и появилась она относительно недавно — в апреле 2024 года. На данный момент в ней меньше функций, чем в версии fin3ss3g0d, но инструмент постоянно обновляется, и, скорее всего, все недостающее добавят. В статье я буду использовать именно эту версию интеграции.Начинаем строить инфраструктуру
Для начала необходимо арендовать VPS/VDS и доменное имя. Нам хватит следующей конфигурации: 1 Гбайт ОЗУ, 20 Гбайт SSD и один процессор. В качестве ОС — Ubuntu 20.04.
Получаем креды от сервера, подключаемся к машине по SSH и проводим базовую настройку: создаем нового пользователя и добавляем его в группу sudo, создаем ключи SSH, отключаем аутентификацию по паролю, настраиваем порты, правила файрвола и так далее.
Разобравшись с сервером, приступаем к созданию и настройке домена. Для этого выбираем любой сервис, предоставляющий услуги аренды. Один из ключевых компонентов фишинговой атаки — это доменное имя, которое введет пользователя в заблуждение. Этот процесс называется тайпсквоттинг, и вариантов здесь может быть много.
Я решил создать неприметный домен webaccount.site, чтобы потом добавить к нему поддомены, содержащие названия известных организаций, так как поддомены необязательно должны быть уникальными. Например, если добавим поддомен microsoft, у нас получится microsoft.webaccount.site.
Теперь приступим к настройке DNS. Первым делом нужно установить основную запись типа А, которая связывает доменное имя с IP-адресом сервера. Для этого редактируем ресурсные записи в разделе управления зоной DNS у регистратора.

В дальнейшем при создании фишинговых адресов будет использоваться множество поддоменов и для каждого такого поддомена потребуется отдельная запись типа A, однако можно использовать и запись типа CNAME, передав ей в качестве аргумента регулярное выражение «звездочка».

Этот тип записи сопоставит псевдоним (поддомен) с каноническим именем домена (webaccount.site) в момент генерации фишингового адреса и получения TLS/SSL-сертификата в Evilginx.
Подождем, пока DNS-записи распространятся (это может занять некоторое время, от 15 минут до нескольких часов), и проверим работоспособность сервера. Для этого просто обращаемся к домену через браузер.

Домен успешно привязался к серверу. После аренды домена желательно подождать хотя бы неделю: чем домен старше, тем меньше вероятность, что он окажется в черных списках. Во время моих первых попыток я регистрировал домен и сразу же использовал его в имитации фишинговой атаки, из‑за чего его отстреливали в течение суток. Раз с доменом разобрались, приступим к установке почтового сервера.
Поднимаем почтовый сервер
SMTP-сервер — один из ключевых компонентов нашей будущей инфраструктуры. Его задача — выступать в роли ретранслятора. Настройка почтового сервера несложная, но требует множества последовательных действий.Первым делом необходимо установить две записи. Одна — типа А с именем mail, указывающая на IP-адрес сервера.

Вторая запись — типа MX, которая указывает на сервер, обрабатывающий электронную почту.

Теперь можно приступить к установке и настройке Postfix. Подключаемся к своему VPS/VDS по SSH и запускаем установку:
Код:Скопировать в буфер обмена
sudo apt install postfix
При настройке в первом шаге выбираем пункт Internet Site.

Вводим доменное имя, которое будет определяться при отправке почты.

Указываем почтовый адрес администратора домена. Можно оставить пустым (что не рекомендуется), тогда почта, предназначенная для администратора, будет отправляться в /var/mail/nobody.

Дальше прописываем адреса вот в таком формате:
Код:Скопировать в буфер обмена
<hostname>, <domain>, localhost.com, localhost

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

Поле с локальной сетью не трогаем и оставляем по умолчанию.

Размер почтового ящика оставляем со значением 0, в этом случае он будет определяться общим дисковым пространством.

Символ, который будет использоваться для определения расширения локального адреса, — ставим плюсик.

И в последней настройке выбираем используемые протоколы — all.

После настройки установку Postfix можно считать завершенной. Проверяем при помощи утилиты netcat, запустился ли почтовый сервер. Достаточно постучаться на 25-й порт нашего хоста (порт SMTP по умолчанию).

Почтовый сервер запущен, но одной установки мало, необходимо также настроить ресурсные записи, чтобы почта доходила до конечной точки. Если пропустить этот важный этап, почта не то что будет попадать в спам, она в принципе не будет рассматриваться почтовыми серверами. Для успешной доставки сообщений необходимо настроить ресурсные DNS-записи типа TXT — SPF, DKIM, DMARC.
Настраиваем SPF, DKIM и DMARC
SPF
Начнем с записи SPF (Sender Policy Framework). Это текстовая запись, которая описывает то, какие хосты имеют право отправлять почту от имени домена, то есть это список доверенных серверов. По сути, SPF — это механизм, проверяющий, авторизован ли хост, отправляющий электронное письмо от определенного доменного имени.Чтобы такое правило работало, создаем запись TXT в панели управления доменом.

Эта запись определяет, что электронную почту от имени домена могут отправлять серверы, указанные в записях MX и A домена, а также имеющие IP-адреса из диапазона 94.142.141.0/24. Почта от других хостов будет помечена как подозрительная.
Ты можешь воспользоваться веб‑инструментом
Ссылка скрыта от гостей
, чтобы создать свои правила SPF.DKIM
Второй записью настроим DKIM (DomainKeys Identified Mail). Это механизм проверки электронной почты, задача которого — предотвращать подделку сообщений. Для этого применяется асимметричное шифрование: каждое сообщение подписывается закрытым ключом.DKIM использует пары ключей: закрытый, к которому имеет доступ только почтовый сервер, и открытый, который прописывается в текстовой DNS-записи, а затем используется получателем для проверки легитимности сообщения.
Настройка этой записи потребует множество шагов, будь внимателен при их выполнении — сделать что‑то не так довольно легко. Полное руководство по настройке DKIM есть на
Ссылка скрыта от гостей
, я не буду полностью переписывать его, а только опишу ключевые моменты.Первым делом устанавливаем утилиту OpenDKIM:
Код:Скопировать в буфер обмена
sudo apt update<br>sudo apt install opendkim opendkim-tools
И редактируем файл /etc/opendkim.conf. Добавим следующие строки (номер порта Socket выбираем любой, который не занят):
Код:Скопировать в буфер обмена
AutoRestart Yes<br>AutoRestartRate 10/1h<br>UMask 002<br>Syslog yes<br>SyslogSuccess Yes<br>LogWhy Yes<br>Canonicalization relaxed/simple<br>ExternalIgnoreList refile:/etc/opendkim/TrustedHosts<br>InternalHosts refile:/etc/opendkim/TrustedHosts<br>KeyTable refile:/etc/opendkim/KeyTable<br>SigningTable refile:/etc/opendkim/SigningTable<br>Mode sv<br>PidFile /var/run/opendkim/opendkim.pid<br>SignatureAlgorithm rsa-sha256<br>UserID opendkim

Подключаем расширение Milter к Postfix. Сначала открываем файл /etc/default/opendkim и меняем номер порта вот в этой строке:
Код:Скопировать в буфер обмена
SOCKET="inet:12301@localhost"
Новый номер выбираем тот, что указали ранее в opendkim.conf:
Код:Скопировать в буфер обмена
SOCKET="inet:12712@localhost"
Затем настраиваем Postfix на использование Milter. Для этого открываем файл /etc/postfix/main.cf и убеждаемся, что присутствуют эти две строки и они не закомментированы:
Код:Скопировать в буфер обмена
milter_protocol = 2<br>milter_default_action = accept
Редактируем следующие строки, меняя номер порта на тот, что определили ранее.

Если таких параметров в файле нет, то прописываем их:
Код:Скопировать в буфер обмена
smtpd_milters = inet:localhost:12712<br>non_smtpd_milters = inet:localhost:12712
Создаем каталоги для взаимодействия с ключами:
Код:Скопировать в буфер обмена
sudo mkdir /etc/opendkim<br>sudo mkdir /etc/opendkim/keys
Указываем доверенные хосты в файле /etc/opendkim/TrustedHosts.

Создаем таблицу ключей, для этого прописываем в файл /etc/opendkim/KeyTable такую строку:
Код:Скопировать в буфер обмена
mail._domainkey.webaccount.site webaccount.site:mail:/etc/opendkim/keys/webaccount.site/mail.private
Создаем таблицу подписей, прописав в файл /etc/opendkim/SigningTable эту строку:
Код:Скопировать в буфер обмена
*@webaccount.site mail._domainkey.webaccount.site
Теперь приступим к созданию пары открытого и закрытого ключей. Переходим в каталог /etc/opendkim/keys и создаем директорию для домена, в которой будут храниться ключи.

Генерируем ключи следующей командой:
Код:Скопировать в буфер обмена
sudo opendkim-genkey -s mail -d webaccount.site
После чего меняем владельца файла с закрытым ключом на учетную запись opendkim.

Осталось добавить содержимое файла mail.txt в текстовую запись DNS в панели управления доменом. Выводим содержимое файла в консоль, копируем всю строку, которая находится в скобках, и приводим к нужному формату.

В итоге у меня получилось отформатированное значение, которое нужно добавить в DNS-запись типа TXT с ключом mail._domainkey.


DMARC
Политика DMARC (Domain-based Message Authentication, Reporting & Conformance) нужна для предотвращения спуфинга электронной почты. Этот протокол, по сути, дополнение к SPF и DKIM. Он определяет правила обработки электронных сообщений, которые поступили с неавторизованных доменов.Настройка крайне проста, особенно на фоне DKIM. Достаточно создать TXT-запись вроде той, что на скриншоте.

Тестируем SMTP-сервер
Когда все настроено, время проверить работоспособность сервера SMTP. Для этого можно либо отправить сообщение себе на почту с любого сервиса, либо же воспользоваться
Ссылка скрыта от гостей
. Открываем сайт по ссылке, копируем указанный там почтовый адрес и жмем большую кнопку «Проверить». Теперь мы можем отправить сообщение на выданный нам адрес. Это делается вот такой командой:Код:Скопировать в буфер обмена
echo "Test" | mail -s "Test" [почтовый адрес]
Как видим, почтовый сервер настроен и корректно работает (половину балла мне сняли, потому что домен есть в одном из нескольких черных списков, но это совсем не критично). Если ты сделал ошибки в настройке, в этом отчете они будут указаны.

Ставим и настраиваем Evilginx и Gophish
Ставим Gophish
Прежде чем поднимать Evilginx и Gophish, нужно установить в систему язык Go, так как оба этих инструмента работают на нем. Отправляемся на сайт разработчика и открываем
Ссылка скрыта от гостей
, скачиваем deb-пакет командой wget и следуем инструкции.
Приступим к установке Gophish. Нам нужно скачать версию с интеграцией в Evilginx из репозитория, тут есть два варианта установки. Первый — скачиваем командой wget архив с релизом для своей ОС со страницы releases, после чего просто разархивируем файл и делаем бинарник Gophish исполняемым командой chmod.
Второй вариант — сборка из исходного кода. Для этого копируем репозиторий и запускаем установку:
Код:Скопировать в буфер обмена
sudo git clone GitHub - kgretzky/gophish: Open-Source Phishing Toolkit<br>go build
В результате у нас будет версия Gophish, модифицированная для работы с Evilginx.

Теперь можно приступить к настройке и запуску Gophish. Первым делом редактируем файл config.json. В нем нужно изменить параметр admin_server.listen_url. По умолчанию там указан локальный IP 127.0.0.1. Чтобы Gophish работал не только локально и к нему возможно было подключиться через интернет, нужно изменить этот IP на 0.0.0.0:3333. Номер порта, кстати, можно выставить любой незанятый в системе.

После настройки запускаем исполняемый файл Gophish и сразу ищем в логах логин и пароль по умолчанию для доступа к панели управления.

Теперь переходим в браузер и обращаемся к панели Gophish по адресу своего VPS/VDS с указанным ранее портом.

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

Чтобы оптимизировать запуск и дальнейшие фишинговые кампании, нужно настроить Gophish как демон, то есть создать сервис, который будет запускать Gophish в фоновом режиме или останавливать одной командой. В каталоге /etc/init.d находятся сценарии оболочки, которые запускаются системой инициализации SysVinit, поэтому создаем в этом каталоге файл Gophish и добавляем следующий код, указав в параметре appDirectory абсолютный путь к Gophish:
Код:Скопировать в буфер обмена
processName=Gophish<br>process=gophish<br>appDirectory=/home/zxc/gophish<br>logfile=/var/log/gophish/gophish.log<br>errfile=/var/log/gophish/gophish.error<br>start() {<br> echo 'Starting '${processName}'...'<br> cd ${appDirectory}<br> nohup ./$process >>$logfile 2>>$errfile &<br> sleep 1<br>}<br>stop() {<br> echo 'Stopping '${processName}'...'<br> pid=$(/bin/pidof ${process})<br> kill ${pid}<br> sleep 1<br>}<br>status() {<br> pid=$(/bin/pidof ${process})<br> if [["$pid" != ""| "$pid" != "" ]]; then<br> echo ${processName}' is running...'<br> else<br> echo ${processName}' is not running...'<br> fi<br>}<br>case $1 in<br> start|stop|status) "$1" ;;<br>esac
Сохраняем файл и прописываем команды для запуска демона и проверки статуса его работы.

Сервис запускается и работает корректно.
Ставим Evilginx
Копируем официальный репозиторий Evilginx с GitHub:Код:Скопировать в буфер обмена
sudo git clone GitHub - kgretzky/evilginx2: Standalone man-in-the-middle attack framework used for phishing login credentials along with session cookies, allowing for the bypass of 2-factor authentication && cd evilginx2
Evilginx тоже написан на Go, который у нас уже установлен. Поэтому просто выполняем make. Скрипт соберет весь проект и создаст исполняемый файл evilginx в директории build.

Чтобы постоянно не прописывать бесконечные пути, лучше собрать все необходимое в отдельном каталоге. Создаем директорию evilginx в домашнем каталоге и копируем исполняемый файл evilginx вместе с директориями phishlets и redirectors в ~/evilginx:
Код:Скопировать в буфер обмена
sudo mkdir ~/evilginx<br>sudo cp ./build/evilginx ~/evilginx<br>sudo cp -r ./phishlets/<br>sudo cp -r ./redirectors
Когда все готово, приступаем к настройке. Запускаем Evilginx:
Код:Скопировать в буфер обмена
sudo ./evilginx -p phishlets/

Нам необходимо определить IP-адрес и домен, а также интегрировать Gophish. В консоли Evilginx прописываем эти команды:
Код:Скопировать в буфер обмена
config domain [ваш домен]<br>config ipv4 [IP вашего VPS/VDS]<br>config Gophish admin_url [URL, на котором поднят gophish]<br>config Gophish api_key [ключ API gophish]<br>config Gophish insecure true
Ключ API Gophish можно найти в панели управления Gophish, перейдя на вкладку Account Settings.

Теперь выполняем команду config gophish test для тестирования соединения Evilginx и Gophish.

Сообщение гласит о том, что соединение успешно.
На этом этапе мы построили основную часть инфраструктуры. Теперь можно начать подготовку к проведению фишинговой кампании.
Настройка кампании Gophish
Отправляемся в панель управления Gophish и начинаем настраивать компоненты для рассылки фишинговых сообщений.Первый компонент — это группы пользователей, которым будут рассылаться письма. Другими словами, это жертвы, точнее, подопытные в нашем тесте.
Предположим, в результате разведки мы получили имена и почтовые адреса работников компании. Все эти данные добавляем в соответствующие поля и нажимаем кнопку Add для каждого пользователя. Либо можешь сразу загрузить файл CSV, содержащий все эти данные. Когда вся инфа добавлена, нажимаем кнопку Save changes.

Следующее, что стоит настроить, — это шаблон электронного письма. Правильно написанное письмо, не вызывающее подозрений, а вызывающее только желание поскорее нажать на ссылку и выполнить все инструкции, — это ключевой компонент успешной фишинговой атаки. Тут уже все зависит от навыков социальной инженерии атакующего. Я создам абсолютно условное фишинговое письмо и не буду расписывать методы социальной инженерии, это отдельная тема.
Чтобы создать фишинговое письмо, я взял HTML-код настоящего сообщения от Microsoft, которое приходило мне на почту, а затем немного изменил его содержание.
В разделе Email Templates вставляем HTML-код и редактируем сообщение на вкладке HTML.

Не забываем поставить галочку Add Tracking Image, которая добавит трекер для отслеживания статистики по открытым письмам. Трекер выглядит как переменная {{.Tracker}} в коде сообщения. Кстати, об этих переменных стоит поговорить чуть подробнее.
При помощи переменных ты можешь менять содержимое сообщения в зависимости от пользователя, которому оно отправлено. Всего переменных десять, нам в первую очередь пригодятся {{.FirstName}}, {{.LastName}} и {{.Email}}, которые подставляют имя, фамилию и адрес почты из настроек групп пользователей. Благодаря им письма не придется персонализировать вручную.
Переменная {{.URL}} подставляет сгенерированную фишинговую ссылку в сообщение. Например, я подставил ссылку через переменную в кнопку «Подтвердить». Про остальные переменные можно прочитать в
Ссылка скрыта от гостей
.Также прописываем заголовок и отправителя сообщения, который будет указан, когда письмо дойдет. Я просто скопировал отправителя из официального сообщения Microsoft, но изменил домен на свой, добавив слово microsoft поддоменом третьего уровня. В итоге мое сообщение будет отправлено от имени «Служба технической поддержки учетных записей Microsoft noreply@microsoft.webaccount.site».
Ниже — фишинговое письмо, которое у меня получилось. Gophish будет подставлять почту пользователя вместо переменной {{.Email}}.

Письмо, как видишь, условное и на практике потребовало бы доработки.
Третий компонент — это профиль отправки, тот, ради которого мы настраивали почтовый сервер и записи DNS. Здесь мы указываем SMTP-ретранслятор, с помощью которого будет происходить рассылка. Открываем вкладку Sending Profile, пишем название профиля, указываем почту отправителя и, наконец, пишем адрес и порт SMTP-ретранслятора. Так как он находится на том же хосте, где мы запустили Gophish, вводим localhost:25 (порт SMTP указывать обязательно). Также не забудь поставить галочку Ignore Certificate Errors.

В этом же окне есть кнопка для отправки тестового письма, обязательно проверяй работоспособность SMTP-ретранслятора перед проведением кампании.

На этом настройка компонентов Gophish закончена, поэтому сворачиваем браузер и приступаем к созданию фишинговых ресурсов Evilginx.
Cоздание фишинговых ресурсов Evilginx
Первое, с чем нужно ознакомиться, — фишлеты Evilginx. Это самая основа, с их помощью и обходится 2FA. Фишлеты — это конфигурационные файлы YAML, которые определяют, какие домены и поддомены проксировать, подменять, какие аутентификационные данные перехватывать и что с ними делать. В общем, правильно настроенный фишлет определяет технический успех фишинговой атаки. Для каждого веб‑ресурса пишется свой фишлет, однако каждый фишлет — это шаблон.Я не буду подробно описывать, как работают фишлеты или как их создавать, об этом поговорим в другой раз. Пока же можешь обратиться к
Ссылка скрыта от гостей
. Самое главное — не покупай фишлеты в «Телеграме», на форумах и тому подобных ресурсах!Настраиваем фишлет
Целевым веб‑ресурсом я выбрал Outlook, фишлет к которому уже написан и опубликован в репозитории на GitHub. Скачиваем его и перемещаем в директорию ~/evilginx/phishlets.Запускаем Evilginx с фишлетом:
Код:Скопировать в буфер обмена
sudo ./evilginx -p phishlets/
И начинаем настраивать фишинговые компоненты. Первым делом задаем URL, который пользователь будет видеть во время проксирования трафика. Нужно придумать такое имя хоста, которое не будет вызывать подозрений. Я добавил два поддомена к своему имени хоста:
Код:Скопировать в буфер обмена
microsoft.outlook.webaccount.site
Так как поддомены необязательно должны быть уникальными, мы используем это свойство для добавления известных и авторитетных имен. Указываем имя хоста и активируем фишлет:
Код:Скопировать в буфер обмена
phishlets hostname Outlook microsoft.outlook.webaccount.site<br>phishlets enable Outlook
В этот момент Evilginx будет автоматически получать сертификаты SSL/TLS для всех доменов и поддоменов, которые используются в атаке, чтобы фишинговый URL, да и соединение в принципе работали по протоколу HTTPS.

Через 30 секунд успешно получаем все сертификаты SSL/TLS и двигаемся дальше.
Готовим приманки
Следующие в очереди приманки, они же Lures в официальной документации. По факту это просто сгенерированные фишинговые ссылки, которые мы отправляем. Настройка очень проста, сначала создаем приманку для фишлета Outlook:Код:Скопировать в буфер обмена
lures create Outlook
Консоль выведет числовой идентификатор приманки, он нам еще пригодится. Приводим ссылку к такому виду:
Код:Скопировать в буфер обмена
Ссылка скрыта от гостей

Копируем сгенерированную фишинговую ссылку и переходим в Gophish.
Запускаем фишинговую атаку
Теперь откроем вкладку Campaigns и соберем все воедино. Пишем название кампании и выбираем по заданным именам: шаблон электронного письма, профиль отправки и группу пользователей.
Выбрав все компоненты, вставляем сгенерированную ранее ссылку в поле Evilginx Lure URL и нажимаем на кнопку Launch Campaign.

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

Проверяем почту и видим, что фишинговое сообщение дошло.

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

Сразу же проверим, работает ли трекер, отслеживающий открытие сообщений. Видим, что просмотр сообщения регистрируется, статус пользователя в столбце Status меняется, к тому же обновляются диаграммы.

Вернемся к нашему фишинговому письму. Когда мы наводим курсор на кнопку «Подтвердить», в нижнем углу браузера видим ссылку, по которой мы перейдем после нажатия.

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

Нас перенаправляет на настоящую страницу авторизации Microsoft, но при этом весь трафик проходит через наш обратный прокси‑сервер вот с таким доменом:
Код:Скопировать в буфер обмена
live.microsoft.outlook.webaccount.site

Вводим логин и пароль, после чего получаем запрос на подтверждение второго фактора аутентификации в приложении Microsoft Authenticator.

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

И в итоге входим в учетную запись. При этом соединение все еще происходит через прокси‑сервер потенциального злоумышленника.

Открываем консоль Evilginx и видим логи успешного перехвата.

Вводим команду
Код:Скопировать в буфер обмена
sessions [ID сессии]
И получаем информацию, которая содержит время перехвата, IP-адрес жертвы, User agent, логин, пароль и cookie сеанса.

Логин и пароль — это, конечно, важная и критическая информация, но смысл этой атаки — перехватить токен сеанса в виде файла cookie. Чтобы проэксплуатировать перехват сессии, копируем всю строку cookies и открываем браузер.
Устанавливаем расширение Cookie-Editor, которое позволяет манипулировать куками, и открываем легитимную страницу входа в Microsoft Outlook. Перед тем как подменять cookie, удаляем те, что назначены браузером. Для этого просто нажимаем кнопку Delete All.

Затем нажимаем кнопку Import и вставляем сплошную строку из перехваченной сессии в Evilginx. Теперь еще раз нажимаем на Import и обновляем страницу.

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

Раздобыв учетку Microsoft в любом сервисе, мы также получаем доступ к основным настройкам и ко всем сервисам этой учетной записи. Это может быть довольно критично, особенно учитывая, сколько конфиденциальной информации может храниться в OneDrive или в документах Word.

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