винбокс что это такое
Обзор уязвимости в Winbox от Mikrotik. Или большой фейл
Весь материал предоставляется лишь в ознакомительных целях, поэтому кода, эксплуатирующего уязвимость, тут не будет. Если вам не интересно узнать о причинах и внутреннем устройстве той или иной уязвимости, можете не читать дальше.
Начнём
Winbox — приложение для ОС WIndows, которое в точности повторяет веб-интерфейс и предназначено для администрирования и конфигурирования устройства с Router OS на борту. Поддерживается 2 режима работы, по протоколу TCP и UDP
Снимаем галочку Secure Mode. Запускаем Wireshark и пробуем авторизоваться на устройстве:
Как можно заметить ниже, после авторизации идёт запрос файла list и затем его содержимое нам полностью передаётся, может показаться, что всё хорошо, но взглянем на самое начало этой сессии:
В самом начале Winbox отправляет точно такой же пакет с запросом файла list:
Рассмотрим его структуру:
Типы полей (Название: Цифровое обозначение)
Типы ошибок (Название: Цифровое обозначение)
Значения ошибок (Название: Цифровое обозначение)
Структура полей в пакете
В начале любого поля идёт его тип — 4 байта (3 байта — назначение переменной, об этом позже, 1 байт — непосредственно тип этой переменной) затем длина 1-2 байта и непосредственно значение.
Массивы
Образно массив можно описать следующей структурой:
Тип (4 байта) / Кол-во элементов (1 байт) / Элементы (4 байта) / В завершении байт \x00
Строки
Строки не нуль-терминированны, а имеют четко заданную длину:
Числа
Самый простой тип в пакете, его можно представить как тип-значение:
В зависимости от типа, значение имеет соответствующую размерность бит.
Булевый тип
Размер поля 4 байта, старший байт отвечает за значение (True\False), младшие 3 байта за назначение переменной
Дополнительно каждый пакет содержит:
Найденные константы
Теперь зная, как устроен протокол, мы можем произвольно генерировать нужные нам пакеты и смотреть, как на них реагирует девайс.
На стороне устройства, за обработку пакетов отвечает исполняемый файл /nova/bin/mproxy. Так как названия функций не были сохранены, я назвал функцию, которая обрабатывает пакет и принимает решения о том что делать с файлом file_handler(). Взглянем на саму функцию:
P.S. Код который нас будет интересовать отмечен стрелочками.
Шаг 1
При получении пакета на открытие файла для чтения, он начинает обработку с этого блока:
В самом начале из пакета, с помощью функции nv::message::get () извлекается название файла.
Далее функция tokenize() разбивает полученную строку на отдельные части, используя в качестве разделителя символ «/«.
Полученный массив строк передаётся в функцию path_filter(), которая проверяет полученный массив строк на наличие «..«, и в случае ошибок возвращает ошибку ERROR_NOTALLOWED (0xFE0009)
P.S. ERROR_NOTALLOWED так же будет получен в ответе, если нет прав доступа к файлу
Если же всё нормально, то к началу названия файла конкатенируется путь, к директории webfig или pckg
Шаг 2
Если всё прошло успешно, открывается файл и его дескриптор сохраняется в глобальный объект.
Если файл открыть не удалось, то в ответе мы получаем ошибку: cannot open source file.
Таким образом, чтобы получить содержимое файла, должно быть соблюдено 3 условия:
Так! А вот это уже странно… Мы помним, что ERROR_NOTALLOWED появляется если не прошла проверка в path_filter(), иначе мы бы ещё получили сообщение об отсутствии прав доступа, но в последнем случае, получается, что поиск файла производился в директории верхнего уровня?
Попробуем такой способ:
И это сработало. Но почему? Давайте взглянем на код функции path_filter():
По коду отлично видно, что действительно происходит поиск вхождения «.. «, в полученный массив строк. Но дальше самое интересное, я выделил красным этот фрагмент.
Суть этого кода в том, что: Если предыдущий элемент так же является «..«, то проверка считается проваленной. В противном случае — считать, что всё хорошо.
Т.е. чтобы всё сработало, нужно просто чередовать «/./» и «/../» чтобы успешно перемещаться по любым каталогам и спускаться на любой уровень ФС.
Давайте посмотрим, как разработчики Mikrotik это исправили:
Теперь выход из цикла проверки происходит при первом же обнаружении «.. «. Правда мне не совсем понятно, зачем добавили проверку вхождения одной точки. А из-за изменения механизма активации пользователя devel, к сожалению, нет возможности посмотреть это в динамике.
Подведём итог
Так что не удивительно, что имея доступ на чтение любых файлов без авторизации, первым что было сделано, это чтение файла с паролями пользователей. Благо в сети предостаточно информации о том, где он расположен, и как извлечь из него данные.
Так же данная уязвимость может стать отличной заменой для известной ранее возможности активации режима разработчика, ведь перезагружать устройство, делать backup\restore файла конфигурации теперь не нужно.
Подключение к Микротику через Winbox
Хочу разобрать, казалось бы банальную тему использования стандартной программы для управления роутерами. Речь пойдет об использовании утилиты Winbox для подключения, управления и настройки роутеров Mikrotik. Несмотря на то, что простой доступ через Winbox не требует каких-то особых настроек, тем не менее с работой этой утилиты есть много нюансов.
Данная статья является частью единого цикла статьей про Mikrotik.
Введение
И все это доступно во всей линейке оборудования, даже в самых бюджетных моделях. Вам известно что-то подобное у других производителей в ценовой категории 50-150$? Мне лично нет, но тут я могу заблуждаться. Если у каких-то вендоров есть что-то похожее на Winbox, было бы любопытно узнать об этом.
Где скачать Winbox
Делаю на этом акцент, потому что одно время при поиске утилиты в поисковиках на первом месте были другие сайты. Кто-то подсуетился и сделал отдельные сайты под этот поисковой запрос. В итоге они были выше основного сайта вендора. Сейчас это уже пофиксили, но вот подобные примеры.
Так же напоминаю, что сайт mikrotik.ru к самой компании Микротик не имеет никакого отношения. Им просто удалось зарегистрировать этот домен и открыть на нем магазин оборудования. Причем продают они устройства разных вендоров. Часто этот сайт очень хорошо ранжируется и может вводить в заблуждение относительно его принадлежности к латвийской компании.
Отдельно добавлю, что версии winbox на русском языке не существует. Как и не существует интерфейса управления в ней с русским языком. И это очень хорошо, так как не происходит недопонимания и двойственности в трактовании и переводе одних и тех же настроек. Англоязычное it сообщество намного больше русскоязычного, поэтому удобнее искать что-то сразу на английском языке. Больше шансов найти информацию.
Winbox для MacOS и Linux
Это может показаться удивительным, но нативного приложения Winbox под Mac или Linux просто не существует. Я не разбираюсь в портировании программного обеспечения в другие операционные системы, поэтому не могу судить, почему дело обстоит именно так. Возможно есть какие-то объективные причины того, почему разработчики Mikrotik не выпускают отдельную версию winbox под Linux или Mac.
Так что у вас не очень много вариантов работы с winbox, если ваша OS не Windows:
Для запуска winbox в linux придется сначала установить wine, а затем запустить виндовую утилиту через нее. Каких-то особых заморочек с этим нет. Все работает сразу без дополнительных настроек. Главное wine поставить. В Ubuntu:
В Centos надо подключить репозиторий epel:
Как подключиться к Mikrotik через Winbox
Итак, утилиту мы скачали. Теперь рассмотрим варианты подключения к Mikrotik через Winbox. Тут проявляется еще одна очень полезная фишка микротиков. Если ты находишься с ним в одном широковещательном домене, то можно подключиться напрямую, используя mac адрес. Поясню для тех, кто не очень разбирается в теории сетей, о чем тут идет речь.
Расскажу по-простому. Единый широковещательный домен это как-будто вы подключены к микротику через общий свитч. Ваше соединение с ним осуществляется на канальном, втором уровне модели OSI. То есть вам не нужно ничего знать про ip адреса друг друга. Вы можете найти друг друга широковещательным запросом, а свитч вас соединит.
Такая возможность часто спасает, когда вы ошиблись в каких-то настройках ip адреса, или на фаерволе случайно закрыли себе доступ. Вы можете обойти ошибки на уровне ip, подключившись напрямую по mac адресу. Выглядит это следующим образом:
С помощью широковещательного запроса winbox обнаружил все доступные устройства Mikrotik в своем сегменте сети и получил возможность подключиться напрямую по mac адресу. Сразу скажу, что такое соединение менее стабильно, чем по ip. Вытекает это из особенностей протоколов подключения.
При подключении по IP адресу с помощью протокола TCP, осуществляется проверка целостности пакетов и подтверждение их доставки. При подключении по MAC этого не происходит, поэтому подключение менее стабильно. Это объясняет, почему во время подключения по mac часто происходит обрыв соединения и отключение от устройства. В общем случае лучше подключаться по ip адресу.
Когда мне приходилось удаленно настраивать Микротики, я всегда старался оставить себе возможность подключиться к устройству напрямую по mac. Понятно, что это не всегда получится и не всегда спасет, если ты по ошибке отключишь интернет. Но если была возможность подстраховаться, я ее использовал.
Если здесь отключить службу winbox, подключение через эту утилиту будет невозможно.
Доступ к Микротик из интернета
Иногда нужно настроить доступ к микротику снаружи, то бишь через незащищенное соединение по интернету. Без крайней необходимости я не рекомендую этого делать. Уже не раз в routeros находили уязвимости, в результате чего удаленное подключение к Mikrotik оказывалось огромной дырой в безопасности. В конечном счете это приводило к заражению устройства и использование его в качестве участника ботнета или открытого прокси сервера.
Для подключения к Mikrotik по умолчанию Winbox использует TCP PORT 8291. Соответственно, для доступа снаружи, вам необходимо открыть этот порт на Firewall. Я в обязательном порядке рекомендую защитить подобное соединение одним из двух предложенных мной в отдельных статьях способов:
Запретить доступ по Winbox
Рассмотрим теперь, как нам запретить подключение к микротику через winbox. Для начала запретим доступ по MAC адресу. Делайте это аккуратно, так как не настроив ip адрес и запретив доступ по mac, вы не оставите себе никакой возможности управлять роутером. Ему придется сбрасывать настройки.
Здесь вы можете выбрать списки интерфейсов, с которых разрешено подключение по MAC. Чтобы его запретить, надо выбрать none.
После этого подключиться по mac адресу с помощью winbox будет невозможно.
Собственные списки интерфейсов можно создать в разделе Interfaces, вкладка Interface List.
После этого устройство не даст себя обнаруживать в локальной сети. С запретом доступа по MAC разобрались, теперь запретим и все остальные подключения. Для этого есть 2 способа:
В первом случае отключаем службу.
Во втором добавляем правило в firewall.
Подробнее про настройку firewall читайте отдельную статью. Здесь не буду на этом останавливаться.
На этом по запрету доступа через Winbox все. Рассмотрел все возможные варианты блокировки подключения.
Почему winbox не видит Mikrotik по mac
И еще одну проблему знаю, когда никак не получалось подключиться к одному очень старому микротику. Как оказалось, для него нужно было скачать какую-то старую версию winbox. И только через эту версию по mac адресу, введя его вручную, можно было подключиться к устройству.
Шифрование сохраненных паролей
По умолчанию, Winbox все свои настройки, в том числе пароли доступа, хранит в открытом виде в директории C:\Users\user\AppData\Roaming\Mikrotik\Winbox. Очевидно, что это очень плохо, так как завладев этими файлами, можно получить доступ ко всем устройствам, которые находятся в списке подключений. Достаточно просто скопировать содержимое директории winbox на другой компьютер, запустить утилиту и подключиться по любому соединению с сохраненным паролем.
Для того, чтобы защитить свои сохраненные пароли, используйте шифрование. Для этого нажимайте кнопку Set Master Password на главном экране Winbox и указывайте пароль.
После этого доступа к сохраненным паролям не будет без введения Master Password, так что можно не бояться за сохранность файлов winbox в профиле пользователя. Я очень долгое время не задумывался о сохранности паролей, пока мне один знакомый не показал, как легко и просто забрать все мои сессии и получить доступ к устройствам.
Так что я настоятельно рекомендую всегда использовать Master Password и делать его длинным. Современные майнинговые фермы с кучей видеокарт сильно упрощают brute force не очень сложных паролей.
Заключение
Я постарался разобрать все известные мне нюансы подключения к Mikrotik по Winbox. Некоторые вещи я вообще не знал и не задумывал о них долгое время работы с устройствами. Например, только недавно я разобрал тему с подключением по mac. Узнал, как им управлять, ограничивать, запрещать и т.д. До этого просто не обращал на это внимание и оставлял все по дефолту.
Про шифрование рассказал все в статье. Долго им не пользовался, но последние несколько лет в обязательно порядке устанавливаю Master Password, либо просто не сохраняю пароли в winbox, храня их в keepass. Если я забыл что-то важное или в чем-то ошибся, жду замечаний в комментариях.
Винбокс что это такое
Mikrotik Router OS предоставляет удобную утилиту Winbox для конфигурирования устройств Mikrotik Routerboard. В этой статье рассмотрим полезные функции, предоставляемые утилитой Winbox.
Рис.1. Mikrotik Routerboard Winbox.
Для доступа к устройству Mikrotik Routerboard в Winbox необходимо ввести логин, пароль и IP-адрес устройства.
Рис.2. Mikrotik Routerboard Winbox Keep Password.
Для того, чтобы запомнить пароль доступа к Mikrotik Routerboard, в Winbox нужно задействовать опцию Keep Password.
Рис.3. Mikrotik Routerboard Winbox Save.
Если устройств Mikrotik Routerboard несколько, в Winbox можно сохранить настройки доступа для всех устройств. Чтобы выполнить сохранение, необходимо заполнить все поля и нажать кнопку Save. В поле Note можно добавить примечание для каждой сохранённой конфигурации.
Рис.4. Mikrotik Routerboard Winbox Next Save.
Рис.5. Mikrotik Routerboard Winbox выбор устройства.
Выбрав сохранённую конфигурацию, в поля Connect To, Login, Password будут добавлены параметры для подключения к выбранному устройству.
Рис.6. Mikrotik Routerboard Winbox, Secure Mode, Load Previous Session.
Если установлен параметр Secure Mode, Winbox будет использовать TLS шифрование для защиты сессии.
Рис.7. Mikrotik Routerboard Winbox сессия.
Если установить параметр Load Previous Session, то разделы, в которых вы работали, будут запомнены и автоматически открыты в следующей сессии.
Рис.8. Mikrotik Routerboard Winbox Not Load Previous Session.
Рис.9. Mikrotik Routerboard Winbox.
Если пункт Load Previous Session не использовать, то, соответственно, откроется пустое окно.
Евгений Рудченко специально для ASP24.
Мой MikroTik – моя цифровая крепость (часть 1)
1. Введение
В комментариях опубликованной ранее статьи один из пользователей спросил: «А можно добавить раздел про то, как нужно защитить свой, микротик чтобы управление им не ушло на сторону?». Один из пользователей написал на это следующее: «Универсальных принципов для любого сетевого устройства два – администрирование только с внутреннего интерфейса (снаружи закрыто все) и регулярно обновлять прошивку» (сохранена авторская орфография). А мы сразу поняли, что одним коротким ответом здесь не обойтись, и этот вопрос заслуживает полноценного отдельного рассмотрения с учётом широких возможностей операционной системы RouterOS, а также сопрягаемых с ней opensource решений, комплексно завершающих проблемный вопрос информационной безопасности. Кроме непосредственно настройки безопасности доступа до маршрутизатора, необходимо использовать его как полноценный барьер для разноуровневых атак, которые могут быть нацелены на защищаемую сеть. Технологий реализации этого достаточно много, поэтому разделим применяемые возможности на логические уровни и представим предметные рекомендации по администрированию сетей на базе оборудования MikroTik.
2. Общие рекомендации
Первое, что мы всегда делаем с железкой — это обновляем прошивку:
Далее смотрим, сколько создано пользователей, лишних удаляем. Ставим пароли, соответствующие политике информационной безопасности компании, если такая есть, если нет, тогда просто посильнее:
Если паранойя зашкаливает, тогда используем SSH вход без ввода пароля (и пользователя admin можно заменить на другого). Сгенерим пару RSA ключей, размер укажем 4096 бит, что уж мелочиться:
На выходе будет закрытый ключ test_user:
И открытый ключ test_user.pub:
Привяжем открытый ключ к пользователю RouterOS:
Добавляем хардкор, запретив логиниться по паролю:
Важно отметить, что если есть пользователь, для которого не импортирован публичный ключ, то, несмотря на вышепоказанную настройку, RouterOS сохраняет возможность логиниться под ним с помощью пароля. С учётными записями разобрались, далее выключаем серверы различных протоколов управления, в том числе небезопасные, разумеется, есть ли они вам не нужны:
Можно поменять прослушиваемый порт для SSH сервера. Особенно на значение, не входящее в сканируемые по умолчанию nmap-ом, но мы в этом защиты не видим, скорее маскировка:
Сканируем роутер и видим, что всё работает корректно. Сервер SSH будет недоступен, пока на роутер не пройдут попытки установления соединения на 28 порт, затем в течение 30 секунд на 29 порт, затем в течение 30 секунд на 30 порт. Если последовательность обращений верна и временные лимиты соблюдены, то IP адрес источника сможет в течение 30 секунд установить SSH сессию, а иначе drop:
Необходимо отметить, что если вы укажете порты стука примерно в таком порядке: 21, 80, 443, а прослушиваемый SSH порт перенесете на значение 8080 (все четыре входят в список по умолчанию для сканирования nmap), то ваш секретный порт 8080 определится при первом же сканировании. Если вы действительно хотите использовать технологию port knocking, то выбирайте порты в порядке уменьшения, а сами значения портов на «не сканируемые» nmap-ом: ни в режиме top 100, ни в режиме top 1000. Кроме этого, можно ограничить IP адреса, с которых доступны протоколы управления, на диапазон доверенных:
Таким образом, несмотря на то, что 22 порт готов принимать TCP соединение, однако с не доверенных IP адресов оно будет сброшено SSH сервером:
Как общие рекомендации, лучше не использовать протоколы, не имеющие шифрования для передачи защищаемой информации. Если такой возможности нет, тогда старайтесь пускать трафик по шифрованным VPN туннелям. Но лучше даже внутри таких соединений использовать безопасные протоколы, ведь VPN сеть может уходить далеко за пределы периметра, контролируемого вами. Если есть возможность, не используйте протоколы pap, http (в том числе при реализации API), ftp, smtp и т.д. Всегда используйте их безопасные аналоги: chap, mschap2, https, smtps.
Делайте регулярные резервные копии конфигураций ваших устройств. В RouterOS есть два типа backup: бинарный *.backup
и текстовый конфигурационный файл *.rsc
Первый рекомендуется откатывать только на полностью идентичных устройствах, и не подлежит редактированию (при откате восстанавливается точный образ операционной системы). Второй же, наоборот, можно вручную контролируемо построчно обрабатывать (до получения необходимо результата), однако он может содержать чувствительную информацию (если не делать /export hide-sensitive), поэтому рекомендуем обезопасить хранение такого рода backup файлов. Ставить ли регулярный backup в планировщик заданий, или нет, тут уже каждый решает сам. Главное — не запутаться во всех резервных копиях и не передавать их на удалённый сервер по открытому интернет каналу посредством ftp.
3. Защита L1
Писать правила про установку сетевого оборудования в серверных помещениях, в защищённых телекоммуникационных ящиках, сейфах и т.д. мы не будем, это не тема статьи. Для защиты L1 на оборудовании MikroTik будет достаточно программно отключить не используемые сетевые интерфейсы:
Сюда же пойдёт организация безопасности беспроводных соединений. В идеале, конечно, следует настроить WPA2-Enterprise (подробно о настройке RADIUS сервера мы напишем во второй части статьи), так как реальных угроз безопасности таких сетей пока не известно:
Если такой вариант вам не подходит, тогда используйте WPA2-PSK со словарно неподбираемым паролем, который держите в тайне от третьих лиц, и отключённый PMKID:
Ещё можно запретить подключаться к точке доступа с низким уровнем сигнала, т.е. физически удалённым пользователям, которые, можно предположить, находятся за контролируемым периметром и не легитимны:
На этом свои рекомендации по поводу L1 безопасности остановим и перейдём к более интересным вещам.
4. Защита L2
Для начала ограничим работающие сервисы уровня L2:
Первый скрипт позволяет осуществлять mac-ping только для внутренней сети. Второй ограничивает L2 подключение посредством службы Winbox:
RouterOS поддерживает работу таких протоколов, как CDP, LLDP и MNDP. Чтобы не осуществлять широковещательную рассылку пакетов указанных протоколов во все стороны, ограничиваем их работу:
Чтобы со стороны провайдера не догадывались, что у вас стоит роутер MikroTik, можно сменить MAC адрес WAN интерфейса, но это скорее баловство:
Если в вашем L2 сегменте появится второй или более незаконный DHCP сервер, то это может здорово навредить работе всей сети. Так в примере видно, что работают две указанные службы (192.168.1.1 и 192.168.3.1), раздавая по факту разные сетевые настройки:
Для защиты от такого рода атак (ведь хакер может назначить и своё устройство в качестве шлюза) существует технология «DHCP snooping». После её активации бридж пропускает DHCP пакеты только в доверенную сторону:
Защита оконечных устройств выходит за рамки данной статьи, но декларируем, что многие антивирусы справляются с этой задачей, детектируя манипуляции с ARP пакетами. На скрине видно, что действиями выше мы организовали MITM для хоста 192.168.1.3 и перехватили его HTTP запросы:
В следующем примере показаны ложные записи ARP таблицы маршрутизатора, а ведь так намеренно можно заполнить весь имеющейся пул и втупить работу легитимного DHCP сервера:
Для защиты от таких действий в RouterOS необходимо, первым делом, настроить DHCP сервер, что позволит активировать функцию заполнения ARP таблицы, либо в результате его работы, либо в ручном режиме:
После этого настраиваем бридж, переводя маршрутизатор в режим только ответа на ARP запросы (если у вас работает hotspot, то от этой идеи придётся отказаться, так как он перестанет нормально функционировать), таким образом, сторонние манипуляции будут бессильны:
Дополнительно следует выключить режим обучения портов MAC адресам:
Если ваш маршрутизатор гоняет пакеты для логически разделённых сетей, в том числе с точки зрения безопасности, то их следует разнести по различным VLAN. Важно понимать, что если через ваше устройство проходят несколько VLAN, то в случае несанкционированного доступа к роутеру или коммутатору, могут быть скомпрометированы устройства во всех этих подсетях. Здесь всё понятно. Дополнительно можно указать устройству проверять tag трафика и дропать пакеты, у которых VLAN ID не найден в его таблице VLAN:
5. Заключение
На этой админской ноте прервём наши рассуждения, которые отображают подходы, применяемые нами в построении реальных сетей и обеспечении их информационной безопасности. Никакие ноухау статья не раскрывает, но в определённой мере систематизирует имеющиеся возможности и показывает их практическое применение. Дальше будет интереснее…