glassmaster
Новорег
- Регистрация
- 13.06.2020
- Сообщения
- 6
- Реакции
- 3
- Баллы
- 3
В этом цикле публикаций мы поговорим о способе обхода двухфакторной аутентификации с помощью Muraena & Necrobrowser.
Всего я планирую три статьи:
Для начала, немного теоретических знаний, я полагаю, многие из Вас знают, что такое 2FA, но без малого количества вводных данных статью нельзя будет считать полноценной.
Для начала, вспомним, как работает двухфакторная аутентификация:
Двухфакторная аутентификация считается «решением» для предотвращения фишинговых атак.
В действительности, только универсальный двухфакторный (U2F)* полезен после развертывания аппаратных ключей, в то время как остальные решения 2FA с треском проваливаются, включая SMS, Push, SoftwareAuthenticators, OTP и другие.
Кроме того, после сбора активных сессий пользователя их можно использовать с помощью различных докеризированных приложений включая браузеры, настроенные на отправку сообщений без заголовков. Такие экземпляры полезны не только для сохранения украденных сеансов, но также для очистки и извлечения данных из захваченных учетных записей, а также для выполнения любых действий от имени пользователя.
В дальнейшем, всё зависит от целей преследуемых злоумышленником, например:
Такой подход сводит к минимуму сложность обработки полученных фишинг-данных в результате работы с 2FA, и сокращает время, необходимое для выполнения действий после фишинга, что позволяет исследователю сосредоточиться на анализе данных и планировании сценариев.
Muraena
Muraena - это прозрачный обратный прокси-сервер, предназначенный для автоматизации фишинговой и постфишинговой деятельности.
Инструмент повторно реализует идею использования настраиваемого обратного прокси-сервера для динамического взаимодействия с целевым источником, а не для обслуживания статических страниц.
Написанный на Go, Muraena не использует медленные регулярные выражения для выполнения магии подмены и встраивает сканер (Colly), который помогает заранее определить, какой ресурс следует проксировать.
Muraena делает минимум для поиска/замены источников в запросах/ответах.
Это означает, что для сложных сайтов может потребоваться дополнительный ручной анализ для настройки автоматически сгенерированного файла конфигурации JSON. Следовательно, не ожидайте, что обратный прокси будет работать прямо из коробки для всех случаев.
В папке config есть несколько примеров шаблонов, для сложных ресурсов, таких как GSuite, Dropbox, GitHub и других.
Установка
Для начала необходимо, по традиции, установить Go, т.к. в Kali Linux он отсутствует:
Добавляем переменную окружения и проверяем версию Go:
Muraena компилируется из исходников, получаем их:
И компилируем инструмент:
В нашем случае, атака будет выглядеть примерно как на схеме ниже:
Следующим шагом на пути к успеху, будет получение бесплатных SSL сертификатов от Let’s Encrypt и настройка DNS.
Запрашиваем сертификат для своего домена и следуем дальнейшим инструкциям:
В процессе, будет необходимо прописать TXT запись в панели управления доменом, чтобы подтвердить, что вы им владеете:
Добавляем запись:
Если всё проделано правильно, то сертификат сохранится по указанному пути:
DNS Config
Ваш DNS должен быть настроен с CNAME и A записью, указывающей на местоположение вашего прокси-сервера Muraena. Для меня это выглядит так:
Вам нужно будет изменить конфигурационный файл для Muraena, редактируем его, как показано ниже. В этом примере мы будем использовать предварительно настроенный файл: config/google.com.json.
Так же, добавим в директиву SSL полные пути к файлам сертификата:
Пробуем запустить Muraena, используя в качестве аргумента наш модифицированный файл:
Как видим, инструмент успешно запустился, и даже начал проксировать какие-то пакеты.
Muraena - работает на 443 порту, как отдельный сетевой сервис.
В следующей статье, настройка и работа с Necrobrowser.
Всего я планирую три статьи:
- Muraena – установка и настройка, DNS, SSL;
- Necrobrowser – установка и настройка;
- 2FA Bypass, Phishing Attack - практическое применение.
Для начала, немного теоретических знаний, я полагаю, многие из Вас знают, что такое 2FA, но без малого количества вводных данных статью нельзя будет считать полноценной.
Для начала, вспомним, как работает двухфакторная аутентификация:
Двухфакторная аутентификация считается «решением» для предотвращения фишинговых атак.
В действительности, только универсальный двухфакторный (U2F)* полезен после развертывания аппаратных ключей, в то время как остальные решения 2FA с треском проваливаются, включая SMS, Push, SoftwareAuthenticators, OTP и другие.
- U2F (англ. Universal 2nd Factor) — открытый, бездрайверный протокол для двухфакторной аутентификации, основанный на вызов-ответной аутентификации, позволяющий интернет-пользователям использовать U2F устройство как второй фактор для аутентификации на большом количестве онлайн-сервисов.
Кроме того, после сбора активных сессий пользователя их можно использовать с помощью различных докеризированных приложений включая браузеры, настроенные на отправку сообщений без заголовков. Такие экземпляры полезны не только для сохранения украденных сеансов, но также для очистки и извлечения данных из захваченных учетных записей, а также для выполнения любых действий от имени пользователя.
В дальнейшем, всё зависит от целей преследуемых злоумышленником, например:
- Создание учетной записи GitHub путем добавления ключа SSH
- Поиск учетных данных по веб-почте OWA
- Анализ ошибок в WordPress и автоматизации RCE.
Такой подход сводит к минимуму сложность обработки полученных фишинг-данных в результате работы с 2FA, и сокращает время, необходимое для выполнения действий после фишинга, что позволяет исследователю сосредоточиться на анализе данных и планировании сценариев.
Muraena
Muraena - это прозрачный обратный прокси-сервер, предназначенный для автоматизации фишинговой и постфишинговой деятельности.
Инструмент повторно реализует идею использования настраиваемого обратного прокси-сервера для динамического взаимодействия с целевым источником, а не для обслуживания статических страниц.
Написанный на Go, Muraena не использует медленные регулярные выражения для выполнения магии подмены и встраивает сканер (Colly), который помогает заранее определить, какой ресурс следует проксировать.
Muraena делает минимум для поиска/замены источников в запросах/ответах.
Это означает, что для сложных сайтов может потребоваться дополнительный ручной анализ для настройки автоматически сгенерированного файла конфигурации JSON. Следовательно, не ожидайте, что обратный прокси будет работать прямо из коробки для всех случаев.
В папке config есть несколько примеров шаблонов, для сложных ресурсов, таких как GSuite, Dropbox, GitHub и других.
Установка
Для начала необходимо, по традиции, установить Go, т.к. в Kali Linux он отсутствует:
Код:
wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz
Код:
tar -C /usr/local/ -xvf go1.13.5.linux-amd64.tar.gz
Добавляем переменную окружения и проверяем версию Go:
Код:
export PATH=$PATH:/usr/local/go/bin
go version
Muraena компилируется из исходников, получаем их:
Код:
go get github.com/muraenateam/muraena
cd $GOPATH/src/github.com/muraenateam/muraena
И компилируем инструмент:
Код:
make build
В нашем случае, атака будет выглядеть примерно как на схеме ниже:
Следующим шагом на пути к успеху, будет получение бесплатных SSL сертификатов от Let’s Encrypt и настройка DNS.
Код:
apt install certbot
Запрашиваем сертификат для своего домена и следуем дальнейшим инструкциям:
Код:
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d 'maligncorp.com’
В процессе, будет необходимо прописать TXT запись в панели управления доменом, чтобы подтвердить, что вы им владеете:
Добавляем запись:
Если всё проделано правильно, то сертификат сохранится по указанному пути:
DNS Config
Ваш DNS должен быть настроен с CNAME и A записью, указывающей на местоположение вашего прокси-сервера Muraena. Для меня это выглядит так:
Вам нужно будет изменить конфигурационный файл для Muraena, редактируем его, как показано ниже. В этом примере мы будем использовать предварительно настроенный файл: config/google.com.json.
Так же, добавим в директиву SSL полные пути к файлам сертификата:
Пробуем запустить Muraena, используя в качестве аргумента наш модифицированный файл:
Код:
./muraena --config config/google.com.json
Как видим, инструмент успешно запустился, и даже начал проксировать какие-то пакеты.
Muraena - работает на 443 порту, как отдельный сетевой сервис.
В следующей статье, настройка и работа с Necrobrowser.