Уязвимость Mikrotik позволяет получать список всех пользователей через winbox

Устройства компании Mikrotik стали широко распространены из-за своей цены по отношению к функционалу. Но и ошибки в программном обеспечении никто не отменял. И на этот раз вылез серьёзный баг.


25 марта один из пользователей форума Mikrotik сообщил об обнаружении подозрительной активности маршрутизаторов mikrotik с применением портов telnet (TCP port 23), TR-069 (TCP port 7547) и WINBOX (TCP 8291).


Сотрудники компании сослались на баг, который был закрыт год назад. В последствии выяснилось, что это новая уязвимость и 23 апреля компания Микротик сообщила о выпуске прошивок, где эта уязвимость устранена.


Несмотря на то, что компания довольно оперативно выпустила bugfix, устройства, подверженные уязвимости в сети исчисляются тысячами.




Всем пользователям RouterOS рекомендую обновиться минимум до версий 6.40.8 [bugfix] или 6.42.1 [current]

Так же в общем доступе появились инструменты, которые позволяют простым пользователям получить доступ на устройства, которые не защищены фаерволом либо не обновлены до актуальной версии.


Ввиду последних событий я предлагаю всем пользователям устройств Mikrotik и CHR произвести хотя бы минимальную настройку.


Минимальные настройки безопасности


Анализируя устройства с багом, я обратил внимание, что практически все пренебрегают настройками фаервола, несмотря на то, что это самый эффективный инструмент защиты Вашей сетевой инфраструктуры. И 90% устройств имеют учётную запись "admin" с полными правами. Прям мечта для брудфорсеров.


В отношении защиты RouterOS сделайте несколько несложных шагов, чтобы обеспечить минимальную безопасность:


  1. Убедитесь, что у Вас последняя прошивка.


  2. Не стоит надеяться на отсутствие багов в новой прошивке и настройте фаервол:
    2.1. В цепочке INPUT доступ к устройству разрешён, только с доверительных ip адресов. Например, диапазон домашней сети или ip адресами сетевых администраторов.
    Обратите внимание на то, что цепочка INPUT применяется только для пакетов, адресованных непосредственно этому маршрутизатору. Транзитные пакеты относятся к цепочке FORWARD.
    2.2. Дропайте все пакеты, которые не соответствуют разрешённым.
    2.3. В случае, если Вам требуется периодически доступ с динамических адресов, то используйте "port knocking", чтобы добавить Ваш ip в разрешённые на определённое время.


  3. Выключите все сервисы, которые Вы не используете (api,ssh,telnet etc.)


  4. После настройки фаервола и обновления прошивки смените пароль.

Если вы используете имя учётки "admin" так же создайте свою учётку, например, "Vasya". Зайдите под ней, проверьте права доступа и заблокируйте "админа".


FireWall


С использование терминала.
Создайте список адресов, которым будет разрешено подключаться к маршрутизатору
/ip firewall address-list
add address=192.168.1.0/24 list=allow-ip
add address=192.168.88.10/32 list=allow-ip


Добавляем правило, которое разрешает все действия с этих адресов


/ip firewall filter
add action=accept chain=input comment="Allow Address List" src-address-list=allow-ip


В случае если нужен доступ с неизвестных адресов я делаю ожидание icmp пакета (ping) определённого размера. Если такой пакет прилетает, то адрес источника добавляется в список allow-ip со временем в 1 час. При желании можно сделать каскад из таких пакетов.


/ip firewall filter
add action=add-src-to-address-list address-list=allow-ip address-list-timeout=1h chain=input packet-size=783 protocol=icmp


Обратие внимание на размер пакета packet-size 783 байт. Но при пинговании Вы должны указывать на 28 байт меньше. В данном случае пинг из windows:


ping -l 755 myhostname.domain


Запрещаем доступ ко всем портам, которые не разрешены выше:


/ip firewall filter add action=drop chain=input


Сервисы,


которые Вы не используете тоже надо выключить ибо это лишние точки отказа.
/ip service
set api disabled=yes
set api-ssl disabled=yes
и так далее.


Тоже самое при помощи винбокс.


Разрешаем в нашем адрес листе.












Правило добавления в адрес лист по пингу







Правило запрета всего и вся ставится самым последним





То есть это должно выглядеть так



Сервисы настраиваем здесь





Пользователей добавить и удалить "admin", а также сменить пароль можно здесь





Заключение


Очень надеюсь, что моя краткая инструкция поможет вашему устройству не попасть под контроль любой ботнет сети, в том числе Hajim.

Поделиться публикацией

Похожие публикации

Комментарии 40
    0
    Если управляемых устройств в сети больше 1, то имеет смысл создать обособленный влан только для администрирования устройств.
      0
      Здесь приведён минимальный вариант защиты.
      Но, к сожалению, большинство пользователей mikrotik делают большие глаза, когда слышат слово vlan.
        0
        VLAN (аппаратный) на MT всегда был некой фичей, которая была «не как у всех» (см., напр., это и это, а потом 1, 2). Точнее, она была сделана, как «понятнее железу» (свичовым чипам; притом, что в разных роутерах он стоял разный, и фичи были чуть разные; если же без свич-чипа, то все просто, пилим интерфейс vlan, и вперед, но часто он будет обрабатываться процом, что совсем «небогато»), а не по аналогии с каким-о подходом из цисок, длинков и прочих свичей, часто встречающихся в природе.

        Сейчас, когда MT занялся производством свичей как таковых, этому вопросу стали уделять время, описывать тему в wiki, да и броджи новые «поумнее» стали, так что, надеюсь, скоро не нужно будет ломать мозг, разбираясь в понятной интуитивно теме.
      0
      а чем смысл удалять пользователя admin и добавлять еще раз его руками?
        0
        Дополнительная защита, если вдруг окажется открыт порт, с большой вероятностью будут подбирать пароль для юзеров root и admin.
          0
          Не его, любое другое название администратора.
          т.е. создаём администратора Wasya
          Заходим под ним, проверяем права.
          И отрубаем/удаляем admin.
          (Именно в таком порядке, то что в статье — высокий шанс выстрелить себе в ногу).

          Зачем это нужно? Потому что admin — самая популярная цель для подбора пароля. А так надо ещё логин подбирать :)
            0
            Заходим под ним, проверяем права.
            И отрубаем/удаляем admin.

            Как бы это и подразумевается.
            Но я дописал в статье, так как люди могут и правда воспринять буквально.
              0
              а почему просто не переименовать?
                0
                Раньше внутренний IDшник сохранялся, как сейчас — не знаю.
              0

              Действительно, смысла никакого нет.
              Есть эксплоит который через эту уязвимость позволяет получить логин и пароль.
              Так что security through obscurity тут ничем не поможет...

                0
                Причем тут security through obscurity? Это скорее общее правило, как и все остальные описанные в данной статье.
                  +1

                  Смена имени админской учетки это именно security through obscurity, независимо от того, является это общим правилом или нет

                    0
                    Вопрос не в том, что это не security through obscurity. А в том, что это — стандартные правила для первичной защиты любой системы: открыть доступ только тем кому нужно, избегать использование стандартных системных учетных записей, повесить какой-нибудь fail2ban для затруднения брутфорса.
                    В данном конкретном случае, если порт открыт, то уже ничто не спасет, но если вы его открыли только для доверенных адресов, то возможность использования уязвимости падает многократно.
                      0
                      Гораздо полезнее было-б указать пример грейлога, насколько я знаю в микротике это делается внутренними средствами. и можно ничего не переименовывать.
                        0

                        Я имел ввиду только тот момент, который касается смена имени пользователя admin.
                        То что нужно устанавливать всякие сложные пароли, port knocking, fail2ban, обычную фильтрацию это вроде и так ясно.

                –5
                Всегда отрубаю и закрываю все сервисы кроме SSH. Авторизация по ключу длиной 8192. Winbox непонятная проприетарщина.
                  0
                  Winbox непонятная проприетарщина.

                  Которая написана производителем роутера для своей проприетарной прошивки. Где здесь проблема?
                    –4
                    Вероятно в том, что значительная часть RouterOS — это open source продукты, включая ssh.
                    Доверия им больше, чем winbox, который всегда был их внутренним продуктом.
                      0
                      Типичная проблема этой закрытой проприетарщины описана в статье выше.
                    +2
                    На данный момент последняя — 6.42.2 [current]
                      0
                      обновиться минимум до версий 6.42.1

                      Баг исправлен именно в этой версии.
                      А сколько версий выйдет после выхода статьи — мне не известно.
                      +1
                      А в чем собственно уязвимость? Был ли зарегистрирован CVE?
                      Интересно узнать в общих чертах, без примеров естественно.
                        +2
                        Кажется логичным ещё сменить дефолтные порты, вдобавок к перечисленному?
                          –2
                          +1
                          Смена дефолтного порта решает 99% попыток дефолтного брутфорса на 8291.
                          0
                          Так CVE был или нет? Тоже хотелось бы почитать…
                            0
                            А что, если фильтровать входящий трафик на мосту по MAC-у?
                            /interface bridge filter
                              add action=drop chain=input comment="drop DE:AD:BE:AF:DE:AD" in-bridge=\
                              bridge-local src-mac-address=DE:AD:00:00:00:00/FF:FF:00:00:00:00 log-prefix=DEAD log=yes
                              0
                              С интернета у вас прилетают МАКи?
                              Актуально только внутри брудкаст домена.
                                +1
                                Понял. Только внутри коммутатора (
                              0
                              Как верно заметили, этой уязвимости без малого месяц. Как капитан очевидность, отмечу, что сложность пароля — равно как и переименование/заведение другой учетки — не спасает.

                              62.183.*.*
                              support@hoi4~gmpK9
                              skrimer@SdFk1399SdFk

                                0
                                Поэтому перед сменой учётки надо настроить фаервол и сменить прошивку.
                                0
                                В данной статье количество настроек сильно меньше необходимого минимума для безопасного использования роутера. При работе с микротиком, в отличии от большинства домашних решений, обязательно необходимо корректно настроить firewall.
                                Еще до появления этой уязвимости я писал статью как правильно настроить роутер с самого начала и до продвинутой настройка firewall. Однако администрация ресурса решила что большая часть информации тонким слоем по разным статьям уже раскидана. Так что к публикации не приняли.
                                Желающим могу прислать инструкцию по настройке в личку. Остальные могут прочесть публикации по настройке микротика и сами разобраться как его настраивать.
                                  0
                                  Скажите сценарий по которому с этими настройками ломанут микротик из вне?
                                  Заметьте, что я не говорю о защите сети за микротиком.
                                  Только сам микротик.
                                  0
                                  ИМХО неполохой способ защиты порта winbox:
                                  add action=drop chain=input dst-port=8291 protocol=tcp src-address-list=winbox_blacklist
                                  add action=add-src-to-address-list address-list=winbox_blacklist address-list-timeout=1w3d chain=input connection-state=new dst-port=8291 protocol=tcp src-address-list=winbox_stage3
                                  add action=add-src-to-address-list address-list=winbox_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=8291 protocol=tcp src-address-list=winbox_stage2
                                  add action=add-src-to-address-list address-list=winbox_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=8291 protocol=tcp src-address-list=winbox_stage1
                                  add action=add-src-to-address-list address-list=winbox_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=8291 protocol=tcp
                                  add action=accept chain=input-WAN comment="Open MNGT ports" dst-port=8291 protocol=tcp
                                    0
                                    Не вижу смысла в файл-ту-бан, т.к. он просто забивает адрес лист ненужными ip.
                                    А если ботнет начнёт ддосить какой нибудь хап лайт? Каждый бот обратиться по три раза к твоему роутеру и у тебя кончится память.
                                    +1

                                    И не слова о том, что так же желательно было б настроить IPv6 файрвол :)

                                      0
                                      Да. Верно. Ipv6 фаервол тоже надо настраивать.
                                      Правила такие же.

                                      Но обнаружить микротик в сети ipv6 в разы сложнее. Да и на большинстве РОС ipv6 модуль вообще не установлен как на том, с которого я снимал скриншот.
                                        0

                                        ну у провайдеров с IPoE — достаточно мультикаст адрес пропинговать и все девайсы сами откликнутся, особо и не надо искать :)

                                      0
                                      Друзья, по умолчанию стоит правило что chain input на Ether1-gateway(т.е. порт в интернет) в drop. Т.е. любые обращения кроме проброса портов дропаются. Или Я не прав?
                                        0
                                        В дэфалтном конфиге да. Но это было не всегда и далеко не все ставят дэфальный конфиг.
                                        Чаще всего фаервол вообще пустой.
                                          0

                                          Ну, то, что человек после установки бронированной входной двери перестаёт закрывать её на замок, уходя из дома — это отдельная тема. Многие пользователи после подключения к свежеустановленному роутеру удаляют дефолтные настройки — им ведь виднее, как должно быть :(

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое