Перейти к публикации

oldnavy89

Evilginx2: Реверс-прокси для MITM атаки

Рекомендованные сообщения

Атака MITM на сегодняшний день является одной из наиболее эффективных атак для кражи учетных данных для доступа к различным веб-службам. Как это ни парадоксально, но это также одна из самых простых атак. Особенно с такими отличными инструментами, как Reverse Proxy Evilginx 2. Который был разработан польским этичным хакером Куба Грецки kgretzky.
 
Скачайте архив, разархивируйте его в любой каталог и запустите исполняемый файл. Да, это портативная утилита, которую не нужно устанавливать, ее можно записать на флэш-накопитель USB, а также запустить на Windows 7 и более поздних версиях. Кроме того, утилита не оставляет следов в реестре.
evilginx-2-1.png?resize=960%2C501&ssl=1

Редактировать файл .yml можно прямо из «Блокнота».

evilginx-2-2.jpg?resize=960%2C504&ssl=1
 

Evilginx использование
 
Вижу, как у вас зачесались руки, давайте перейдем от слов к делу. Только я буду заниматься этим все же в Linux.
Подготовка стенда

Задача такая: поднять в интернете сервер с Evilginx 2 и в качестве эксперимента перехватить несколько экземпляров учетных данных от популярной социальной сети.

Для начала нам нужен VDS с минимальными системными требованиями. У меня было одно ядро с гигабайтом оперативной памяти и жестким диском на 30 ГБ плюс белый IP-адрес. На борту - Ubuntu 16.04. Конечно, вам необходимо зарегистрировать домен, связанный с этим IP-адресом. Просто сделайте это бесплатно на вашем любимом сайте халявщиков - свобода - это не сработает. У вас должно быть не одно доменное имя, а предоставленная вам доменная зона. Ее можно купить у провайдера, например REG.RU. При покупке домена в комплекте идет управление DNS, где вы и можете записью DNS А прикрепить доменное имя к IP-адресу или наделать поддоменов, которые могут пригодиться для развития атаки.

Теперь идем на новоиспеченный сервер и первым делом ставим среду разработки для языка Go, так как второй Evilginx написан именно на нем.
 

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

Проверяем, все ли работает:
 

go env

Должен быть явно указан путь GOPATH.


277717ca9b42f1d6fb1da.png


Теперь устанавливаем сам Evilginx 2
 

apt-get install git make
 
 
go get -u github.com/kgretzky/evilginx2
 
 
cd $GOPATH/src/github.com/kgretzky/evilginx2
 
make
 
make install

Перед запуском необходимо проверить, не заняты ли у вас порты 80 и 443. Они нужны для проксирования трафика. Я подумал, что в чистой ОС они должны быть свободны, и ошибся. В 80 порт занял предустановленный Apache, поэтому не смог автоматом сгенерироваться сертификат.

netstat –antp

evilginx-2-4.png?resize=960%2C163&ssl=1

Проверяем прослушиваемые порты ОС

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

evilginx-2-5.png?w=960

Интерфейс Evilginx
 
Если после запуска сразу перейти на фишинговый сайт по его доменному имени, то утилита просто перенаправит посетителя на видеохостинг Youtube. Это действие задано по умолчанию, а нужное вам вы можете выставить в настройках. Чтобы увидеть настройки, введите config.evilginx-2-6.png?resize=600%2C160&ssl=1


Дефолтная конфигурация
В конфиге поле domain должно соответствовать вашему фишинговому домену, IP — его IP-адресу. Параметр redirect_url — это домен, на который будет переброшена жертва, которая перейдет по чистой ссылке. Задать настройки можно следующими командами:

config domain yourDomain.com
 
config ip yourIP

Теперь немного об устройстве всей этой станции. Опираться придется на две сущности.
 
Phishlets — это конфигурационные файлы, задающие правила основной работы Evilginx. В них указывается, по каким параметрам определять авторизацию, как выглядят cookie-сессии и все остальные данные для удачного фишинга. Находятся они в одноименном каталоге рядом с программой и имеют расширение .yaml . Всего их уже написано 13 штук для разных популярных сайтов, а скоро наверняка появятся еще. Главное, что можно написать свои.

Есть две версии формата написания: для релиза 2.2.0 и для версии 2.3.0, принимаются пока обе. Они слегка отличаются синтаксисом и возможностями.

evilginx-2-7.jpg?resize=960%2C595&ssl=1

 

Вид конфигурационного файла phishlets

Кроме фишлетов, в Evilginx есть набор ловушек (lures). Это программные функции, которые генерируют ссылки, разруливая подмену трафика и его движение внутри самой хост-машины в зависимости от того, куда мы хотим перенаправить жертву.

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

openssl x509 -in ca.crt  -text

он корневой, выдан сроком на 10 лет и подписан как Evilginx Super-Evil Root CA. Чтобы вывести информацию о нем, необходимо воспользоваться командой
 

evilginx-2-8.png?resize=735%2C696&ssl=1

 

Информация сертификата

Cовет: если вы будете использовать VDS и захотите после отключения от SSH-сессии вернуться к запущенному Evilginx, используйте оконный менеджер с поддержкой терминальных сеансов Screen.

Переходим к основной работе. Первым делом нам нужно настроить фишлеты. Я буду использовать фишлет для Instagram. Чтобы увидеть все конфиги, просто вводим команду phishlets. Пока они пустые. Добавляем свой домен к выбранному конфигу:
phishlets hostname instagram yourDomain
 
Теперь создаем ловушку для пользователей «Инстаграм»:

lures create instagram

В итоге все должно выглядеть как на скриншоте ниже.
evilginx-2-9.png?resize=733%2C471&ssl=1

 

Программа, подготовленная к запуску

Запускаем один или несколько фишлетов:

phishlets enable Instagram

evilginx-2-10.png?resize=960%2C62&ssl=1

 

Запуск программы

Что происходит? Во-первых, генерируется сертификат (это как раз тот момент, когда все может рассыпаться как карточный дом, если будут заняты 80 или 443 порты). Генерируется он при помощи встроенной программы Let’s Encrypt, так что получается, что на фишинговый домен вам выдан валидный сертификат! Это решает проблему с HTTPS-соединением и правдоподобностью всего происходящего.

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

Чтобы увидеть все ловушки, надо набрать: lures. Обратите внимание на таблицу и столбец id. Для получения готовой фишинговой ссылки вводим lures get-url id, где id — это цифра из таблицы.

Проверка сервера

Прежде чем заманивать жертву по ссылке, вам необходимо протестировать сервер и уточнить некоторые детали. Мы сами переходим по фишинговой ссылке и видим перед собой страницу с предложением войти в Instagram. Все выглядит правдоподобно. Введите имя пользователя, пароль и код из SMS. Отлично, роль жертвы выполнена!

В это же время на сервере происходит вот что: в терминале будет хорошо видно, что кто-то посещал вашу страницу. При перехвате аутентификационных данных они сразу отобразятся. Как только креды перехвачены, они записываются в базу данных. Увидеть их можно, введя команду sessions.

 

evilginx-2-11.png?resize=881%2C99&ssl=1

Перехваченный логин и пароль

Но как же быть с 2FA? В тот момент, когда жертва вводит пароль из SMS-сообщения, Evilginx 2 перехватывает еще и сессию авторизации, или cookie. Если в терминале Evilginx появилась строка: «all authorization tokens intercepted!», это как раз говорит об успешном захвате сессии. Увидеть статус перехвата можно, набрав команду session id.

evilginx-2-12.png?resize=960%2C175&ssl=1

Сессия жертвы

Вы можете импортировать сессию в браузер с помощью плагина EditThisCookie. Все, теперь мы авторизованы в Instagram от имени жертвы, а логин и пароль нам вообще не нужны!

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...