Письмо от имени QuickBooks пришло с настоящей инфраструктуры Microsoft и прошло проверку почтовой аутентификации. Фильтр счёл его безопасным и положил во входящие. Получателям предлагали подтвердить учётные данные в течение 48 часов. Тех, кто нажимал кнопку, ждала поддельная страница входа.
Описание
По данным ZeroBEC, злоумышленник злоупотребил настраиваемыми уведомлениями платформы Dynamics 365 Customer Voice. Сообщение ушло со служебного адреса этой службы, поэтому подпись принадлежала Microsoft и проверка подлинности ничего не выявила. Отображаемое имя имитировало бухгалтерское подразделение Intuit, а тема обещала усиленную защиту Passkey. Ключевая особенность кампании в том, что доверенную службу доставки использовали как прикрытие: сама почтовая аутентификация подтверждала лишь отправителя инфраструктуры, но не намерения автора письма.
Кнопка вела на промежуточный адрес, а оттуда браузер попадал на страницу с безобидным товаром для воды. Встроенный скрипт скрывал этот документ от глаз и подгружал код с серверной функции на платформе Netlify, передавая ей параметры строки запроса и часовой пояс браузера. Приманка нужна, чтобы посетитель и автоматическая проверка увидели разное.
Серверная функция оценивала признаки автоматизации. Она искала отметку headless-режима, следы Selenium и Playwright, а также проверяла наличие объекта Chrome в браузере. При срабатывании хотя бы одной проверки скрипт просто завершался, и перенаправления не происходило. Прошедшие отбор браузеры отправлялись на поддельную страницу входа QuickBooks в домене, похожем на настоящий.
На этой странице работал перехват сетевых запросов. Адреса Intuit подменялись на поддомены чужого домена, а в отдельных телах запросов выполнялась обратная замена - подставные имена возвращались к виду настоящих. Заголовок происхождения принудительно выставлялся в адрес Intuit, а ресурсы Google и reCAPTCHA переписывались под тот же origin. В итоге страница выглядела для проверок как часть легитимного сервиса, хотя запросы уходили сторонним получателям.
Подтверждённой кражи учётных данных или перехвата сессии нет. Наблюдались только письмо, цепочка переходов, сохранённый HTML и JavaScript. Это существенное ограничение: защита от автоматизации и подмена адресов описаны по коду, но реальный результат их работы на живых учётных записях не зафиксирован.
Служебный адрес Customer Voice и сервер доставки на домене Microsoft - легитимная инфраструктура, а не вредоносные узлы. Тот же домен, которым пользовался злоумышленник, обслуживает обычные уведомления платформы. Наблюдаемые артефакты описывают роли в цепочке и не дают повода блокировать Railway, Netlify или Microsoft целиком. Сколько получателей получили письмо и скольким удалось пройти проверку, не установлено.
Для защиты ZeroBEC советует не доверять только результатам SPF, DKIM и DMARC: в этой атаке они прошли, потому что письмо действительно отправила легитимная платформа. Нужно проверять, куда ведёт кнопка подтверждения, и учитывать, что цепочка может начинаться на Railway, проходить через безобидный Netlify-сайт и только потом попадать на поддельный домен. Полезно сохранять HTML и JavaScript страниц: после удаления хостинга именно они помогают восстановить маршрут. Passkey в письме был только предлогом, а не реальной попыткой обхода passkey-аутентификации. Сами по себе облачные платформы из цепочки не являются вредоносной инфраструктурой.