Апрель 2026 года. Microsoft фиксирует массовую фишинговую кампанию против гостиничного сектора в Европе и Азии. Письма приходят от отправителя с именем «Booking Manager (via Calendly)» — и это, пожалуй, самый тревожный элемент атаки.
Сценарий до безобразия прост. Сотрудник ресепшен или отдела бронирования получает письмо от «менеджера по бронированиям» через сервис Calendly. Тема может быть любой: жалоба гостя, упоминание клопов в номере, проверка санитарных условий, просьба подтвердить бронь или отзыв о проживании. Тон — давящий: финальные предупреждения, угрозы визитов инспекций, репутационный ущерб. Язык писем — японский, датский или голландский; это не таргетированная атака, а массовый обстрел списков адресов, поэтому в полях темы нет ни имени конкретного сотрудника, ни названия отеля. Цель атаки пока не установлена, но механизм доставки полезной нагрузки заслуживает отдельного разговора.
Изощрённость начинается с маршрутизации. Злоумышленники рассылают письма через инфраструктуру нотификаций Calendly — легитимного сервиса планирования встреч. Для SPF, DKIM и DMARC такие письма выглядят полностью «чистыми»: авторизация отправителя подтверждается, но проверка не говорит ни слова о намерениях отправителя. Microsoft называет этот приём «authentication laundering» — «отмыванием через аутентификацию». Идея в том, что технически корректное прохождение почтовых проверок создаёт у получателя иллюзию безопасности.
Второй путь доставки — цепочка редиректов. Жертва кликает по ссылке Calendly, попадает на
Письма содержат архив формата
Здесь и кроется самый любопытный трюк. Node.js не ставится в систему глобально — он распаковывается прямо в пользовательский профиль, в
Название не случайно. TonRAT использует блокчейн-платформу TON для разрешения доменов командного сервера. Обращение к API TON даёт вредоносу текущий адрес C2 — и это серьёзная головная боль для обороняющихся: статические блоклисты бесполезны, адрес меняется динамически. Сама связь с оператором идёт через шифрованный WebSocket. Наблюдаемые при посткомпромиссном биконинге порты — 8443, 8445, 8453, 5555, 56001, 56002, 56003 — фиксированные IP на нестандартных портах.
Что делает имплант на заражённой машине? Поднимает headless-браузер (видны флаги
Закрепление в системе сделано с запасом: двойная персистентность. Первая линия — запись в
Что делать отельерам? Microsoft советует начинать с ресепшен, отдела бронирования и фронт-офисных систем — именно туда целятся письма. При расследовании инцидента нужно единым шагом ликвидировать запись RunOnce в ProgramData, ключ реестра с Node.js, рантайм
Главный урок этой кампании не технический, а психологический. Аутентификация отправителя — это гарантия того, что письмо пришло с разрешённого сервера, а не того, что его содержимое безопасно. Для сотрудника на ресепшене, у которого третья жалоба на клопов за день и просьба разобраться «ещё вчера», разница между этими двумя вещами может стоить всей IT-инфраструктуры отеля.
Исторически отели уже попадали под похожие удары — например, кампании ClickFix, которые через вытаскивали учётки у сотрудников и ставили им на машины PureRAT. Схема с «бронированиями» как входной точкой и RAT в качестве полезной нагрузки повторяется, и гостиничный сектор остаётся для операторов малвари таким же лакомым, как и пять лет назад. Только инструменты стали изощрённее: блокчейн для адресов C2, легитимный Node.js вместо кастомного бинарника, инфраструктура Calendly как щит против фильтров.
Сценарий до безобразия прост. Сотрудник ресепшен или отдела бронирования получает письмо от «менеджера по бронированиям» через сервис Calendly. Тема может быть любой: жалоба гостя, упоминание клопов в номере, проверка санитарных условий, просьба подтвердить бронь или отзыв о проживании. Тон — давящий: финальные предупреждения, угрозы визитов инспекций, репутационный ущерб. Язык писем — японский, датский или голландский; это не таргетированная атака, а массовый обстрел списков адресов, поэтому в полях темы нет ни имени конкретного сотрудника, ни названия отеля. Цель атаки пока не установлена, но механизм доставки полезной нагрузки заслуживает отдельного разговора.
Изощрённость начинается с маршрутизации. Злоумышленники рассылают письма через инфраструктуру нотификаций Calendly — легитимного сервиса планирования встреч. Для SPF, DKIM и DMARC такие письма выглядят полностью «чистыми»: авторизация отправителя подтверждается, но проверка не говорит ни слова о намерениях отправителя. Microsoft называет этот приём «authentication laundering» — «отмыванием через аутентификацию». Идея в том, что технически корректное прохождение почтовых проверок создаёт у получателя иллюзию безопасности.
Второй путь доставки — цепочка редиректов. Жертва кликает по ссылке Calendly, попадает на
share.google (Google URL Redirect Service), оттуда перенаправляется на свежезарегистрированный домен в зоне .cfd, прикрытый Cloudflare. На финальной странице пользователя встречает Cloudflare Turnstile — капча, которая одновременно мешает анализу и отсеивает исследователей. Дальше начинается загрузка. Письма содержат архив формата
photo-<числа>.zip. Внутри — ярлыки Windows с расширением .lnk, замаскированные под изображения. В первой волне это IMG-<числа>.png.lnk, во второй — PHOTO-<числа>.png.lnk. Двойной клик запускает PowerShell. Скрипт использует арифметику BigInt — экзотический и довольно нетипичный приём обфускации: адрес загрузки следующего этапа собирается из вычислений с большими целыми числами, что сильно затрудняет статический анализ. В %TEMP% оседает PS1-файл, который тянет с nodejs.org легитимную среду исполнения Node.js v24.13.0. Здесь и кроется самый любопытный трюк. Node.js не ставится в систему глобально — он распаковывается прямо в пользовательский профиль, в
%USERPROFILE%\AppData\Local\Nodejs\. То есть операторы малвари не приносят с собой кастомный рантайм (по модели living-off-the-land), а берут обычный публичный бинарник с официального сайта и запускают его из домашней директории жертвы. Для стандартных средств защиты такая активность выглядит как штатная установка легитимной программы. В этой среде запускается имплант на JavaScript, который канадские и японские исследователи (SOC Prime и ITOCHU, описавшие кампанию примерно за две недели до публикации Microsoft) назвали TonRAT. Название не случайно. TonRAT использует блокчейн-платформу TON для разрешения доменов командного сервера. Обращение к API TON даёт вредоносу текущий адрес C2 — и это серьёзная головная боль для обороняющихся: статические блоклисты бесполезны, адрес меняется динамически. Сама связь с оператором идёт через шифрованный WebSocket. Наблюдаемые при посткомпромиссном биконинге порты — 8443, 8445, 8453, 5555, 56001, 56002, 56003 — фиксированные IP на нестандартных портах.
Что делает имплант на заражённой машине? Поднимает headless-браузер (видны флаги
--headless --no-sandbox), запрашивает геолокацию через публичный сервис ip-api.com — это типичный шаг для фильтрации жертв по стране и пороге интереса — и имеет в арсенале команду cmd /c shutdown -s -t 0, то есть принудительный немедленный шатдаун машины. Сценарий «выключить всё и убрать следы» здесь буквальный. Закрепление в системе сделано с запасом: двойная персистентность. Первая линия — запись в
HKCU\...\RunOnce, указывающая на артефакт в ProgramData. Вторая — ключ в HKCU\...\Run, связанный с Node.js, плюс сам рантайм и .js-файлы в AppData\Local\Nodejs. Удаление только одной линии оставляет вторую рабочей — оба пути нужно сносить одновременно. Это похоже на мину с двумя взрывателями. Что делать отельерам? Microsoft советует начинать с ресепшен, отдела бронирования и фронт-офисных систем — именно туда целятся письма. При расследовании инцидента нужно единым шагом ликвидировать запись RunOnce в ProgramData, ключ реестра с Node.js, рантайм
AppData\Local\Nodejs\node.exe и все .js-скрипты в той же папке. На сетевом уровне стоит заблокировать исходящий трафик на порты 8443, 8445, 8453, 5555, 56001–56003 и обращения к ip-api.com, а также к API TON, где политика позволяет. В почтовом контуре — флаги на отправителя «Booking Manager (via Calendly)», настороженность к цепочкам Calendly → share.google → .cfd, и категорический запрет на открытие вложений формата photo-.zip, особенно с ярлыками под видом картинок. Главный урок этой кампании не технический, а психологический. Аутентификация отправителя — это гарантия того, что письмо пришло с разрешённого сервера, а не того, что его содержимое безопасно. Для сотрудника на ресепшене, у которого третья жалоба на клопов за день и просьба разобраться «ещё вчера», разница между этими двумя вещами может стоить всей IT-инфраструктуры отеля.
Исторически отели уже попадали под похожие удары — например, кампании ClickFix, которые через вытаскивали учётки у сотрудников и ставили им на машины PureRAT. Схема с «бронированиями» как входной точкой и RAT в качестве полезной нагрузки повторяется, и гостиничный сектор остаётся для операторов малвари таким же лакомым, как и пять лет назад. Только инструменты стали изощрённее: блокчейн для адресов C2, легитимный Node.js вместо кастомного бинарника, инфраструктура Calendly как щит против фильтров.