stihl не предоставил(а) никакой дополнительной информации.
В этой статье я объясню, как построить инфраструктуру для симуляции фишинговой атаки в рамках тестирования организации. Мы создадим с нуля почтовый сервер, установим и настроим обратный прокси Evilginx, а затем внедрим его в фишинговый фреймворк Gophish. В конце я покажу на практике процесс проведения фишинговой атаки с перехватом логина, пароля и сессионных cookie, c последующим обходом двухфакторной аутентификации.
Gophish — это программа с открытым кодом, созданная Джорданом Райтом. Gophish позволяет проводить автоматизированные фишинговые рассылки и таким образом имитировать действия злоумышленника.
Evilginx — это обратный прокси‑сервер, который проксирует соединение между пользователем и целевым веб‑ресурсом, позволяя перехватить логин, пароль и ключи сеанса. С помощью этого фреймворка можно обойти двухфакторную аутентификацию. Автор Evilginx — Куба Грецки.
Есть две версии интеграции этих двух инструментов. Первая — Для просмотра ссылки Войдиили Зарегистрируйся, ее разработал Дилан Эванс, он же fin3ss3g0d. Она включает в себя более расширенный набор возможностей вроде SMS-рассылок и генерации QR-кодов, а также некоторые другие отличия от официальной версии.
Для просмотра ссылки Войдиили Зарегистрируйся интеграцию разработал автор Evilginx Куба Грецки, и появилась она относительно недавно — в апреле 2024 года. На данный момент в ней меньше функций, чем в версии fin3ss3g0d, но инструмент постоянно обновляется, и, скорее всего, все недостающее добавят. В статье я буду использовать именно эту версию интеграции.
Для просмотра ссылки Войдиили Зарегистрируйся
Получаем креды от сервера, подключаемся к машине по 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. Почта от других хостов будет помечена как подозрительная.
или Зарегистрируйся, чтобы создать свои правила SPF.
Настройка этой записи потребует множество шагов, будь внимателен при их выполнении — сделать что‑то не так довольно легко. Полное руководство по настройке DKIM есть на Для просмотра ссылки Войдиили Зарегистрируйся, я не буду полностью переписывать его, а только опишу ключевые моменты.
Первым делом устанавливаем утилиту OpenDKIM:
И редактируем файл /etc/opendkim.conf. Добавим следующие строки (номер порта Socket выбираем любой, который не занят):
Подключаем расширение Milter к Postfix. Сначала открываем файл /etc/default/opendkim и меняем номер порта вот в этой строке:
Новый номер выбираем тот, что указали ранее в opendkim.conf:
Затем настраиваем Postfix на использование Milter. Для этого открываем файл /etc/postfix/main.cf и убеждаемся, что присутствуют эти две строки и они не закомментированы:
Редактируем следующие строки, меняя номер порта на тот, что определили ранее.
Для просмотра ссылки Войдиили Зарегистрируйся
Если таких параметров в файле нет, то прописываем их:
Создаем каталоги для взаимодействия с ключами:
Указываем доверенные хосты в файле /etc/opendkim/TrustedHosts.
Для просмотра ссылки Войдиили Зарегистрируйся
Создаем таблицу ключей, для этого прописываем в файл /etc/opendkim/KeyTable такую строку:
Создаем таблицу подписей, прописав в файл /etc/opendkim/SigningTable эту строку:
Теперь приступим к созданию пары открытого и закрытого ключей. Переходим в каталог /etc/opendkim/keys и создаем директорию для домена, в которой будут храниться ключи.
Для просмотра ссылки Войдиили Зарегистрируйся
Генерируем ключи следующей командой:
После чего меняем владельца файла с закрытым ключом на учетную запись opendkim.
Для просмотра ссылки Войдиили Зарегистрируйся
Осталось добавить содержимое файла mail.txt в текстовую запись DNS в панели управления доменом. Выводим содержимое файла в консоль, копируем всю строку, которая находится в скобках, и приводим к нужному формату.
Для просмотра ссылки Войдиили Зарегистрируйся
В итоге у меня получилось отформатированное значение, которое нужно добавить в DNS-запись типа TXT с ключом mail._domainkey.
Для просмотра ссылки Войдиили Зарегистрируйся
Для просмотра ссылки Войдиили Зарегистрируйся
Настройка крайне проста, особенно на фоне DKIM. Достаточно создать TXT-запись вроде той, что на скриншоте.
Для просмотра ссылки Войдиили Зарегистрируйся
или Зарегистрируйся. Открываем сайт по ссылке, копируем указанный там почтовый адрес и жмем большую кнопку «Проверить». Теперь мы можем отправить сообщение на выданный нам адрес. Это делается вот такой командой:
Как видим, почтовый сервер настроен и корректно работает (половину балла мне сняли, потому что домен есть в одном из нескольких черных списков, но это совсем не критично). Если ты сделал ошибки в настройке, в этом отчете они будут указаны.
Для просмотра ссылки Войдиили Зарегистрируйся
или Зарегистрируйся, скачиваем deb-пакет командой wget и следуем инструкции.
Для просмотра ссылки Войдиили Зарегистрируйся
Приступим к установке Gophish. Нам нужно скачать версию с интеграцией в Evilginx из Для просмотра ссылки Войдиили Зарегистрируйся, тут есть два варианта установки. Первый — скачиваем командой wget архив с релизом для своей ОС со Для просмотра ссылки Войди или Зарегистрируйся, после чего просто разархивируем файл и делаем бинарник Gophish исполняемым командой chmod.
Второй вариант — сборка из исходного кода. Для этого копируем репозиторий и запускаем установку:
В результате у нас будет версия 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:
Сохраняем файл и прописываем команды для запуска демона и проверки статуса его работы.
Для просмотра ссылки Войдиили Зарегистрируйся
Сервис запускается и работает корректно.
Evilginx тоже написан на Go, который у нас уже установлен. Поэтому просто выполняем make. Скрипт соберет весь проект и создаст исполняемый файл evilginx в директории build.
Для просмотра ссылки Войдиили Зарегистрируйся
Чтобы постоянно не прописывать бесконечные пути, лучше собрать все необходимое в отдельном каталоге. Создаем директорию evilginx в домашнем каталоге и копируем исполняемый файл evilginx вместе с директориями phishlets и redirectors в ~/evilginx:
Для просмотра ссылки Войдиили Зарегистрируйся
Когда все готово, приступаем к настройке. Запускаем Evilginx:
Для просмотра ссылки Войдиили Зарегистрируйся
Нам необходимо определить IP-адрес и домен, а также интегрировать Gophish. В консоли Evilginx прописываем эти команды:
Ключ 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/phishlets.
Запускаем Evilginx с фишлетом:
И начинаем настраивать фишинговые компоненты. Первым делом задаем URL, который пользователь будет видеть во время проксирования трафика. Нужно придумать такое имя хоста, которое не будет вызывать подозрений. Я добавил два поддомена к своему имени хоста:
Так как поддомены необязательно должны быть уникальными, мы используем это свойство для добавления известных и авторитетных имен. Указываем имя хоста и активируем фишлет:
В этот момент Evilginx будет автоматически получать сертификаты SSL/TLS для всех доменов и поддоменов, которые используются в атаке, чтобы фишинговый URL, да и соединение в принципе работали по протоколу HTTPS.
Для просмотра ссылки Войдиили Зарегистрируйся
Через 30 секунд успешно получаем все сертификаты SSL/TLS и двигаемся дальше.
Консоль выведет числовой идентификатор приманки, он нам еще пригодится. Приводим ссылку к такому виду:
Для просмотра ссылки Войдиили ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
Копируем сгенерированную фишинговую ссылку и переходим в Gophish.
Для просмотра ссылки Войдиили Зарегистрируйся
Выбрав все компоненты, вставляем сгенерированную ранее ссылку в поле Evilginx Lure URL и нажимаем на кнопку Launch Campaign.
Для просмотра ссылки Войдиили Зарегистрируйся
После запуска кампании мы видим статистику, которая ведется в режиме реального времени. Пока что четыре сообщения отправлены, но никем не прочитаны.
Для просмотра ссылки Войдиили Зарегистрируйся
Проверяем почту и видим, что фишинговое сообщение дошло.
Для просмотра ссылки Войдиили Зарегистрируйся
Нажав на профиль отправителя, замечаем, что тут указано все то, что мы прописали в шаблоне электронного сообщения Gophish. Невнимательный пользователь, скорее всего, даже не будет проверять, но если кто‑то и проверит, то есть вероятность, что слово microsoft в названии домена убаюкает подозрительность.
Для просмотра ссылки Войдиили Зарегистрируйся
Сразу же проверим, работает ли трекер, отслеживающий открытие сообщений. Видим, что просмотр сообщения регистрируется, статус пользователя в столбце Status меняется, к тому же обновляются диаграммы.
Для просмотра ссылки Войдиили Зарегистрируйся
Вернемся к нашему фишинговому письму. Когда мы наводим курсор на кнопку «Подтвердить», в нижнем углу браузера видим ссылку, по которой мы перейдем после нажатия.
Для просмотра ссылки Войдиили Зарегистрируйся
Имитируя действия потенциальной жертвы, переходим по фишинговой ссылке и ждем, пока браузер проверит, безопасная ли это страница.
Для просмотра ссылки Войдиили Зарегистрируйся
Нас перенаправляет на настоящую страницу авторизации Microsoft, но при этом весь трафик проходит через наш обратный прокси‑сервер вот с таким доменом:
Для просмотра ссылки Войдиили Зарегистрируйся
Вводим логин и пароль, после чего получаем запрос на подтверждение второго фактора аутентификации в приложении Microsoft Authenticator.
Для просмотра ссылки Войдиили Зарегистрируйся
Продолжая имитацию действий потенциальной жертвы, подтверждаем вход в мобильном приложении и ждем, пока пройдет аутентификация.
Для просмотра ссылки Войдиили Зарегистрируйся
И в итоге входим в учетную запись. При этом соединение все еще происходит через прокси‑сервер потенциального злоумышленника.
Для просмотра ссылки Войдиили Зарегистрируйся
Открываем консоль Evilginx и видим логи успешного перехвата.
Для просмотра ссылки Войдиили Зарегистрируйся
Вводим команду
И получаем информацию, которая содержит время перехвата, IP-адрес жертвы, User agent, логин, пароль и cookie сеанса.
Для просмотра ссылки Войдиили Зарегистрируйся
Логин и пароль — это, конечно, важная и критическая информация, но смысл этой атаки — перехватить токен сеанса в виде файла cookie. Чтобы проэксплуатировать перехват сессии, копируем всю строку cookies и открываем браузер.
Устанавливаем расширение Cookie-Editor, которое позволяет манипулировать куками, и открываем легитимную страницу входа в Microsoft Outlook. Перед тем как подменять cookie, удаляем те, что назначены браузером. Для этого просто нажимаем кнопку Delete All.
Для просмотра ссылки Войдиили Зарегистрируйся
Затем нажимаем кнопку Import и вставляем сплошную строку из перехваченной сессии в Evilginx. Теперь еще раз нажимаем на Import и обновляем страницу.
Для просмотра ссылки Войдиили Зарегистрируйся
После обновления страницы браузер обрабатывает куки, которые мы внедрили, и открывает учетную запись пользователя, у которого был перехвачен сессионный токен.
Для просмотра ссылки Войдиили Зарегистрируйся
Раздобыв учетку Microsoft в любом сервисе, мы также получаем доступ к основным настройкам и ко всем сервисам этой учетной записи. Это может быть довольно критично, особенно учитывая, сколько конфиденциальной информации может храниться в OneDrive или в документах Word.
Для просмотра ссылки Войдиили Зарегистрируйся
Для просмотра ссылки Войдиили Зарегистрируйся
На этом наша фишинговая кампания завершена. Как видим, для проведения этой атаки нам потребовались только базовые технические знания и навыки, а также небольшое финансовое вложение в аренду сервера и домена.
Есть еще огромное множество методов, которые сделают атаку более изощренной, но моей целью было показать базовый вариант, который тем не менее вполне может применяться на практике.
Ну а лучшее средство защиты — это банальная внимательность, которой пользователям зачастую не хватает.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.Связка Evilginx и Gophish
Два фреймворка, которые мы будем использовать для проведения фишинговой кампании, называются Evilginx и Gophish. Это два самостоятельных инструмента, которые выполняют разные задачи.Gophish — это программа с открытым кодом, созданная Джорданом Райтом. Gophish позволяет проводить автоматизированные фишинговые рассылки и таким образом имитировать действия злоумышленника.
Evilginx — это обратный прокси‑сервер, который проксирует соединение между пользователем и целевым веб‑ресурсом, позволяя перехватить логин, пароль и ключи сеанса. С помощью этого фреймворка можно обойти двухфакторную аутентификацию. Автор Evilginx — Куба Грецки.
Есть две версии интеграции этих двух инструментов. Первая — Для просмотра ссылки Войди
Для просмотра ссылки Войди
Начинаем строить инфраструктуру
Для начала необходимо арендовать VPS/VDS и доменное имя. Нам хватит следующей конфигурации: 1 Гбайт ОЗУ, 20 Гбайт SSD и один процессор. В качестве ОС — Ubuntu 20.04.Для просмотра ссылки Войди
Получаем креды от сервера, подключаемся к машине по SSH и проводим базовую настройку: создаем нового пользователя и добавляем его в группу sudo, создаем ключи SSH, отключаем аутентификацию по паролю, настраиваем порты, правила файрвола и так далее.
info
Подробнее о первоначальной настройке сервера ты можешь прочесть в статье «Для просмотра ссылки ВойдиРазобравшись с сервером, приступаем к созданию и настройке домена. Для этого выбираем любой сервис, предоставляющий услуги аренды. Один из ключевых компонентов фишинговой атаки — это доменное имя, которое введет пользователя в заблуждение. Регистрация такого домена называется тайпсквоттинг, и вариантов здесь может быть много.
Я решил создать неприметный домен 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. Почта от других хостов будет помечена как подозрительная.
www
Ты можешь воспользоваться веб‑инструментом Для просмотра ссылки ВойдиDKIM
Второй записью настроим DKIM (DomainKeys Identified Mail). Это механизм проверки электронной почты, задача которого — предотвращать подделку сообщений. Для этого применяется асимметричное шифрование: каждое сообщение подписывается закрытым ключом.info
DKIM использует пары ключей: закрытый, к которому имеет доступ только почтовый сервер, и открытый, который прописывается в текстовой DNS-записи, а затем используется получателем для проверки легитимности сообщения.Настройка этой записи потребует множество шагов, будь внимателен при их выполнении — сделать что‑то не так довольно легко. Полное руководство по настройке DKIM есть на Для просмотра ссылки Войди
Первым делом устанавливаем утилиту OpenDKIM:
Код:
sudo apt update
sudo apt install opendkim opendkim-tools
Код:
AutoRestart Yes
AutoRestartRate 10/1h
UMask 002
Syslog yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkimpendkim
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
milter_default_action = accept
Для просмотра ссылки Войди
Если таких параметров в файле нет, то прописываем их:
Код:
smtpd_milters = inet:localhost:12712
non_smtpd_milters = inet:localhost:12712
Код:
sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys
Для просмотра ссылки Войди
Создаем таблицу ключей, для этого прописываем в файл /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) — это протокол аутентификации электронной почты, созданный для защиты доменов от спуфинга (подделки отправителя) и фишинговых атак. Политика DMARC определяет то, как серверам‑получателям следует обрабатывать электронные письма, которые не проходят проверку аутентификации SPF и DKIM.Настройка крайне проста, особенно на фоне DKIM. Достаточно создать TXT-запись вроде той, что на скриншоте.
Для просмотра ссылки Войди
Тестируем SMTP-сервер
Когда все настроено, время проверить работоспособность сервера SMTP. Для этого можно либо отправить сообщение себе на почту с любого сервиса, либо же воспользоваться Для просмотра ссылки Войдиecho "Test" | mail -s "Test" [почтовый адрес]
Как видим, почтовый сервер настроен и корректно работает (половину балла мне сняли, потому что домен есть в одном из нескольких черных списков, но это совсем не критично). Если ты сделал ошибки в настройке, в этом отчете они будут указаны.
Для просмотра ссылки Войди
Ставим и настраиваем Evilginx и Gophish
Ставим Gophish
Прежде чем поднимать Evilginx и Gophish, нужно установить в систему язык Go, так как оба этих инструмента работают на нем. Отправляемся на сайт разработчика и открываем Для просмотра ссылки ВойдиДля просмотра ссылки Войди
Приступим к установке Gophish. Нам нужно скачать версию с интеграцией в Evilginx из Для просмотра ссылки Войди
Второй вариант — сборка из исходного кода. Для этого копируем репозиторий и запускаем установку:
Код:
sudo git clone https://github.com/kgretzky/gophish/
go build
Для просмотра ссылки Войди
Теперь можно приступить к настройке и запуску 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
process=gophish
appDirectory=/home/zxc/gophish
logfile=/var/log/gophish/gophish.log
errfile=/var/log/gophish/gophish.error
start() {
echo 'Starting '${processName}'...'
cd ${appDirectory}
nohup ./$process >>$logfile 2>>$errfile &
sleep 1
}
stop() {
echo 'Stopping '${processName}'...'
pid=$(/bin/pidof ${process})
kill ${pid}
sleep 1
}
status() {
pid=$(/bin/pidof ${process})
if [["$pid" != ""| "$pid" != "" ]]; then
echo ${processName}' is running...'
else
echo ${processName}' is not running...'
fi
}
case $1 in
start|stop|status) "$1" ;;
esac
Сохраняем файл и прописываем команды для запуска демона и проверки статуса его работы.
Для просмотра ссылки Войди
Сервис запускается и работает корректно.
Ставим Evilginx
Копируем официальный репозиторий Evilginx с GitHub:sudo git clone [URL]https://github.com/kgretzky/evilginx2[/URL] && cd evilginx2
Evilginx тоже написан на Go, который у нас уже установлен. Поэтому просто выполняем make. Скрипт соберет весь проект и создаст исполняемый файл evilginx в директории build.
Для просмотра ссылки Войди
Чтобы постоянно не прописывать бесконечные пути, лучше собрать все необходимое в отдельном каталоге. Создаем директорию evilginx в домашнем каталоге и копируем исполняемый файл evilginx вместе с директориями phishlets и redirectors в ~/evilginx:
Код:
sudo mkdir ~/evilginx
cd ~
sudo cp evilginx/build/evilginx ~/evilginx
sudo cp -r evilginx/phishlets/ ~/evilginx
sudo cp -r evilginx/redirectors/ ~/evilginx
Для просмотра ссылки Войди
Когда все готово, приступаем к настройке. Запускаем Evilginx:
sudo ./evilginx -p phishlets/
Для просмотра ссылки Войди
Нам необходимо определить IP-адрес и домен, а также интегрировать Gophish. В консоли Evilginx прописываем эти команды:
Код:
config domain [ваш домен]
config ipv4 [IP вашего VPS/VDS]
config gophish admin_url [URL, на котором поднят gophish]
config gophish api_key [ключ API gophish]
config gophish insecure true
Для просмотра ссылки Войди
Теперь выполняем команду config gophish test для тестирования соединения Evilginx и Gophish.
Для просмотра ссылки Войди
Сообщение гласит о том, что соединение успешно.
На этом этапе мы построили основную часть инфраструктуры. Теперь можно начать подготовку к проведению фишинговой кампании.
Настройка кампании Gophish
Отправляемся в панель управления Gophish и начинаем настраивать компоненты для рассылки фишинговых сообщений.Первый компонент — это группы пользователей, которым будут рассылаться письма. Другими словами, это жертвы, точнее, подопытные в нашем тесте.
Предположим, в результате разведки мы получили имена и почтовые адреса работников компании. Все эти данные добавляем в соответствующие поля и нажимаем кнопку Add для каждого пользователя. Либо можешь сразу загрузить файл CSV, содержащий все эти данные. Когда вся инфа добавлена, нажимаем кнопку Save changes.
Для просмотра ссылки Войди
Следующее, что стоит настроить, — это шаблон электронного письма. Правильно написанное письмо, не вызывающее подозрений, а вызывающее только желание поскорее нажать на ссылку и выполнить все инструкции, — это ключевой компонент успешной фишинговой атаки. Тут уже все зависит от навыков социальной инженерии атакующего. Я создам абсолютно условное фишинговое письмо и не буду расписывать методы социальной инженерии, это отдельная тема.
info
О фишинговых приемах ты можешь прочесть в статье «Для просмотра ссылки ВойдиЧтобы создать фишинговое письмо, я взял 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, фишлет к которому уже написан и опубликован в Для просмотра ссылки ВойдиЗапускаем Evilginx с фишлетом:
sudo ./evilginx -p phishlets/
И начинаем настраивать фишинговые компоненты. Первым делом задаем URL, который пользователь будет видеть во время проксирования трафика. Нужно придумать такое имя хоста, которое не будет вызывать подозрений. Я добавил два поддомена к своему имени хоста:
microsoft.outlook.webaccount.site
Так как поддомены необязательно должны быть уникальными, мы используем это свойство для добавления известных и авторитетных имен. Указываем имя хоста и активируем фишлет:
Код:
phishlets hostname Outlook microsoft.outlook.webaccount.site
phishlets enable Outlook
Для просмотра ссылки Войди
Через 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 заключается не только в автоматизации рассылок, но и в ведении статистики, например для подготовки отчетов о результатах атаки, которые пригодятся пентестерам. После завершения кампании мы получаем статистику о том, кто открыл письмо, кто перешел по ссылке, кто попался на фишинг и ввел креды или же что‑то заподозрил и пожаловался на письмо.Для просмотра ссылки Войди
На этом наша фишинговая кампания завершена. Как видим, для проведения этой атаки нам потребовались только базовые технические знания и навыки, а также небольшое финансовое вложение в аренду сервера и домена.
Есть еще огромное множество методов, которые сделают атаку более изощренной, но моей целью было показать базовый вариант, который тем не менее вполне может применяться на практике.
Ну а лучшее средство защиты — это банальная внимательность, которой пользователям зачастую не хватает.