В корпоративной среде до сих пор живет опасный миф: «Мы внедрили двухфакторную аутентификацию, теперь фишинг нам не страшен». Безопасники отчитываются о 100% покрытии SMS-кодами или приложениями-аутентификаторами (TOTP), бизнес спит спокойно, а в это время злоумышленники массово угоняют корпоративные аккаунты топ-менеджеров и администраторов.
Правда в том, что классический 2FA мертв. Он защищает от брутфорса и утечек баз паролей, но абсолютно бессилен перед современным фишингом. Эра поддельных HTML-страничек закончилась. Сегодня балом правит AitM (Adversary-in-the-Middle).
Давайте разберем анатомию этой атаки и поймем, почему вашему бизнесу пора срочно переходить на стандарты WebAuthn.
Смерть классического фишинга
Раньше фишинг был примитивен. Хакер скачивал исходный код страницы авторизации Microsoft 365 или корпоративного VPN, вешал на кнопку «Войти» простенький PHP-скрипт и ждал, пока пользователь введет пароль. Скрипт отправлял пароль в базу хакера, а пользователя перекидывал на реальный сайт.
С массовым внедрением 2FA этот метод перестал работать. Пароль без второго фактора стал бесполезен. Злоумышленникам пришлось эволюционировать, и они перешли от кражи паролей к краже сессий.
Встречайте: Adversary-in-the-Middle и Evilginx2
Сегодня никто не верстает фейковые страницы. Атакующие используют инструменты класса Reverse Proxy – например, Evilginx2 или Modlishka.
Эти утилиты не копируют сайт. Они выступают прозрачным посредником (мостом) между жертвой и реальным легитимным сервисом.
Представьте, что сотруднику приходит письмо якобы от IT-поддержки с просьбой срочно подтвердить учетную запись: ссылка ведет на домен portal.h0ff-corp.com (вместо легитимного hoff.ru). Внешне сайт выглядит идеально – потому что это и есть реальный сайт, просто пропущенный через сервер злоумышленника.
Анатомия атаки: Kill Chain шаг за шагом
Как именно происходит угон аккаунта защищенного 2FA?
- Проксирование трафика: Жертва переходит по фишинговой ссылке. Evilginx делает запрос к реальному серверу авторизации (например, Azure AD) и отдает пользователю настоящую страницу в реальном времени. Все сертификаты валидны (для фишингового домена выдается свой Let's Encrypt).
- Перехват кредов: Пользователь вводит логин и пароль. Прокси-сервер аккуратно логирует их у себя и мгновенно пересылает оригинальному серверу.
- Байпас второго фактора: Оригинальный сервер видит правильный пароль и запрашивает второй фактор. Evilginx прозрачно транслирует этот запрос на экран жертвы.
- Легитимное действие жертвы: Жертва получает легитимное SMS, достает код из Google Authenticator или видит Push-уведомление от Microsoft. Поскольку жертва сама сейчас пытается войти в систему, этот запрос не вызывает подозрений. Пользователь вводит код.
- The Jackpot (Угон сессии): Прокси передает код оригинальному серверу. Сервер проверяет 2FA, убеждается, что все верно, и авторизует сессию, отвечая HTTP-заголовком
Set-Cookie. В этом заголовке лежит Session Token (долгоживущая сессионная кука). - Перехват куки: Evilginx перехватывает этот токен, сохраняет его в базу злоумышленника, а жертве отдает финальную страницу успешного входа (или перенаправляет на реальный корпоративный портал).
Хакеру больше не нужен ваш пароль. Ему не нужен ваш телефон. У него есть Session Cookie. Он просто открывает свой браузер, импортирует украденную куку (через расширение типа EditThisCookie) и заходит в вашу почту, CRM или VPN. Сервер пустит его без вопросов, ведь аутентификация уже была пройдена.
Почему не спасает Push и "Number Matching"?
Многие вендоры внедрили "Number Matching" – когда на экране компьютера показывается цифра (например, 73), и ее нужно ввести в приложении на телефоне.
Это отличная защита от атак типа MFA Fatigue (когда хакер ночью шлет вам 100 пушей в надежде, что вы нажмете "Одобрить", чтобы телефон замолчал). Но при AitM-атаке Number Matching абсолютно бесполезен.
Прокси-сервер просто транслирует цифру с реального сервера на экран жертвы. Жертва видит "73" на фишинговом сайте и честно вводит "73" в свой легитимный телефон. Атака проходит как по маслу.
Серебряная пуля: Криптография FIDO2
Единственная надежная защита от AitM на сегодняшний день – это отказ от любых «вводимых» факторов (паролей, кодов из SMS, пушей) в пользу стандартов FIDO2 / WebAuthn (аппаратные ключи YubiKey, Рутокен, или Passkeys через FaceID / Windows Hello).
Почему Evilginx бессилен против аппаратного ключа? Секрет кроется в механизме Domain Binding (Привязка к источнику).
При использовании WebAuthn ваш браузер напрямую общается с криптографическим ключом, и в этом процессе нет разделяемых секретов. Процесс выглядит так:
- Вы находитесь на фишинговом сайте
portal.h0ff-corp.com. - Сервер запрашивает аутентификацию по ключу.
- Ваш браузер берет Origin (текущий домен из адресной строки –
portal.h0ff-corp.com) и передает его аппаратному ключу вместе с запросом (challenge). - Аппаратный ключ криптографически подписывает запрос, намертво вшивая в подпись этот самый Origin.
- Evilginx перехватывает подписанный ответ и отправляет его на реальный сервер
hoff.ru. - Реальный сервер проверяет подпись и видит, что она была сгенерирована для домена
portal.h0ff-corp.com, а не дляhoff.ru. - Сервер отклоняет запрос. Атака прервана на математическом уровне. Человеческий фактор (невнимательность пользователя) полностью исключен.
Злоумышленник не может подделать Origin, так как браузер берет его жестко из адресной строки, а криптографическую подпись ключа невозможно изменить без приватного ключа, который аппаратно не извлекаем из YubiKey.
Что делать бизнесу прямо сейчас?
Если у ваших топ-менеджеров, администраторов инфраструктуры и сотрудников с доступом к критичным базам (КИИ) всё ещё включена авторизация по SMS или приложению – вы просто сидите на пороховой бочке, ожидая мотивированного атакующего.
- Аудит 2FA: Проведите инвентаризацию. Отключайте SMS-фактор везде, где это технически возможно.
- Внедрение FIDO2: Закупите аппаратные ключи для привилегированных пользователей (Domain Admins, C-level).
- Passkeys для масс: Для обычных сотрудников внедряйте Passkeys (Windows Hello, TouchID). Это бесплатно и поддерживает FIDO2 из коробки.
- Conditional Access: Настраивайте политики условного доступа. Запрещайте авторизацию с устройств, которых нет в вашем MDM-решении (Device Trust). Украденная сессионная кука будет бесполезна, если хакер попытается применить ее с незнакомого ноутбука.
Иллюзии обходятся дорого. Перестаньте верить в устаревшую двухфакторку и начните внедрять реальную криптографию.