Le 20 septembre, le site web KrebsonSecurity a subi une attaque ciblée de déni de service distribué (DDoS). Cette attaque a été menée à l’aide d’un important botnet d’équipements IoT (plus de 300 000 participants), des caméras pour la plupart. Ce botnet a été nommé “Mirai”. Le 21 Octobre, une autre attaque DDoS massive réalisée à l’encontre de serveurs DNS de l’entreprise Dyn a provoqué une interruption de plusieurs heures pour les utilisateurs basés aux États-Unis. Des sites internet très populaires tels que Twitter, Netflix, Paypal et Spotify ont été touchés et rendus inaccessibles. Bien que l’attaque n’ait pas ciblé les sites eux-mêmes, celle-ci a perturbé une partie d’un service clé sur lequel repose la navigation web, à savoir le système de nom de domaine (Domain Name System ou DNS). Selon Dyn, l’attaque a impliqué des dizaines de millions de dispositifs malveillants. Ceux-ci ont confirmé qu’une partie du trafic provenait de dispositifs infectés par le botnet IoT “Mirai”.

L’Internet des Objets fait désormais partie de notre mode de vie et constitue un nouveau moyen d’interagir avec notre environnement. Aujourd’hui, la plupart de ces équipements sont connectés à Internet alors qu’ils ne disposent pas d’une configuration de sécurité convenable. En raison de ce manque de sécurité, ces dispositifs représentent une menace majeure. Cette menace croissante peut également avoir des conséquences majeures dans un environnement industriel. C’est ce que Sentryo met en évidence à travers son analyse du botnet Mirai, basée sur son code source et sur des échantillons du “malware”.

 

Historique des attaques liées à Mirai

1. 20 septembre : attaque sur KrebsOnSecurity :

Le 20 septembre à 20 heures, le site internet https://krebsonsecurity.com, hébergé par l’entreprise Akamai, a subi une attaque de déni de service distribué (DDoS). Selon Akamai, cette attaque a constitué l’une des plus importantes attaques qu’Internet ait jamais connue. En effet, il s’agit ici de plus de 620 Gbps de trafic réseau ciblant le site internet.

KrebsonSecurity DDoS Attack

Source : www.krebsonsecurity.com

Martin McKeay, spécialiste “senior” de la sécurité chez Akamai, a expliqué que la plus grande attaque que l’entreprise ait connue jusqu’à celle-ci s’est produite plus tôt cette année à une vitesse de 363 Gbps. Toutefois, il a ajouté qu’il existait une différence majeure entre le DDoS de la nuit dernière et le record précédent : on pense que l’attaque à 363 Gbps a été générée par un botnet de systèmes compromis utilisant des techniques bien connues leur permettant de donner bien plus d’ampleur à ce qui n’était au départ qu’une relativement petite attaque.

Le trafic était en réalité principalement composé de paquets de données encapsulés dans le protocole réseau GRE (Generic Routing Encapsulation). L’utilisation de ce protocole est assez inhabituelle. Pour réaliser cette attaque, l’assaillant a dû contrôler chaque dispositif infecté afin de générer des paquets de données directement. En effet, les paquets de données GRE ne peuvent être usurpés ou falsifiés de la même manière qu’avec un trafic DNS. Les dispositifs infectés utilisés pour réaliser cette attaque sont exposés ci-dessous sur une carte du monde :

World map infected devices

Source: www.incapsula.com

L’infection du botnet a été opérée à l’aide d’un malware appelé Mirai. Le code source de ce malware fut dévoilé le 30 septembre.

2. Quelques jours plus tard… l’attaque contre OVH :

Deux ou trois jours plus tard, l’hébergeur OVH a déclaré avoir lui-même été la cible d’une attaque similaire avec un débit supérieur et équivalent à 1.1 Tbps. A ce jour, personne n’a confirmé leur déclaration.

3. Le 21 octobre : attaque contre Dyn :

Le 21 octobre, l’entreprise Dyn a également subi une attaque sur ses propres serveurs DNS. Dyn a publié un article décrivant l’attaque sur son site internet : “Aux environs de 7 heures du matin, Dyn a commencé à ressentir l’attaque DDoS. Bien qu’il ne soit pas inhabituel pour l’équipe du centre d’exploitation du réseau (NOC) de Dyn d’avoir à réagir face à des attaques DDoS, il est rapidement devenu évident que cette attaque était différente (nous nous attarderons plus tard sur ce sujet). Environ deux heures plus tard, l’équipe NOC a réussi à contrer l’attaque et à rétablir le service pour ses clients. Malheureusement, pendant ce temps, les internautes dirigés vers des serveurs Dyn depuis la côte Est des États-Unis ne parvenaient pas à accéder à certains des sites internet de nos clients, parmi lesquels quelques géants du web”. (Note du rédacteur : Netflix, NY Times, Paypal, Twitter) […] “En nous appuyant sur des analyses réalisées par Flashpoint et Akamai, nous sommes en mesure de confirmer que des dispositifs infectés par le botnet Mirai ont constitué l’une des sources de trafic pour ces attaques. Nous avons noté que des dizaines de millions d’adresses IP distinctes associées au botnet Mirai ont été impliquées dans cette attaque.”

 

Analyse du code Mirai

En utilisant le code source et quelques exemples de malware, Sentryo a rédigé une analyse afin d’expliquer comment fonctionne ce botnet.

Mirai

Différentes étapes de l’activité malware seront décrites :

  • La phase de reconnaissance du processus d’infection
  • Le signalement des victimes potentielles
  • L’insertion effective de la charge malveillante
  • Les capacités d’attaque du botnet

La phase de reconnaissance du processus d’infection

L’infection se propage depuis des dispositifs IoT infectés qui recherchent des d’autres cibles connectées à Internet. Pour ce faire, dans le source code du malware, un programme C appelé scanner.c dispose d’une fonction pour générer des adresses IP aléatoires (les adresses sont soumises à une liste noire d’adresses IP avant d’être utilisées). Par exemple, si la fonction rand_next() renvoie une adresse IP correspondant au DoD (Department of Defense américain), la fonction de randomisation est déclenchée à nouveau. Comme vous pouvez le voir sur l’image ci-dessous, la liste noire est étonnamment courte et comporte les entités suivantes : le Département de la Défense (DoD), General Electric, HP, et le service postal des États-Unis.

Blacklist

Une fois que le dispositif infecté a choisi une nouvelle adresse IP aléatoire (ne figurant pas sur la liste noire), il tente d’accéder au dispositif distant à l’aide d’une liste d’identifiants par défaut. Si les cibles sont protégées avec ce type d’identifiants, elles sont alors vulnérables.. La liste de ces identifiants est exposée ci-dessous :

Harcoded credentials

Pour tester ces identifiants, le malware parcourt les services en ligne disponibles sur la cible et, en particulier, ceux susceptibles de demander un couple utilisateur/mot de passe. Dans cette optique, celui-ci vérifie si des messages comportant les caractères “ogin”, “assword” ou “enter” s’affichent. Si c’est le cas, il tente de se connecter en utilisant les identifiants IoT par défaut listés précédemment.

IoT credentials

IoT credentials list

Le site internet KrebsOnSecurity a diffusé une liste dans laquelle figurent les dispositifs IoT ciblés et les fournisseurs associés :

Username/PasswordManufacturer
admin/123456ACTi IP Camera
root/ankoANKO Products DVR
root/passAxis IP Camera, et. al
root/vizxvDahua Camera
root/888888Dahua DVR
root/666666Dahua DVR
root/7ujMko0vizxvDahua IP Camera
root/7ujMko0adminDahua IP Camera
666666/666666Dahua IP Camera
root/dreamboxDreambox TV receiver
root/zlxxEV ZLX Two-way Speaker?
root/juantechGuangzhou Juan Optical
root/xc3511H.264 – Chinese DVR
root/hi3518HiSilicon IP Camera
root/klv123HiSilicon IP Camera
root/klv1234HiSilicon IP Camera
root/jvbzdHiSilicon IP Camera
root/adminIPX-DDK Network Camera
root/systemIQinVision Cameras, et. al
admin/meinsmMobotix Network Camera
root/54321Packet8 VOIP Phone, et. al
root/00000000Panasonic Printer
root/realtekRealTek Routers
admin/1111111Samsung IP Camera
root/xmhdipcShenzhen Anran Security Camera
admin/smcadminSMC Routers
root/ikwbToshiba Network Camera
ubnt/ubntUbiquiti AirOS Router
supervisor/supervisorVideoIQ
root/<none>Vivotek IP Camera
admin/1111Xerox printers, et. al
root/Zte521ZTE Router

 

Nous pouvons conclure que les caméras n’étaient pas les seules à être ciblées. En effet, figurent également des imprimantes, des routeurs, des téléphones…

Le signalement des victimes potentielles

Une fois que l’accès à la victime suivante est validé, le dispositif infecté original renvoie toutes les informations relatives à cette nouvelle cible potentielle à un serveur de rapports. Ce serveur de rapports a été configuré avec des paramètres TABLE_SCAN_CB_DOMAIN et PORT  pendant la compilation du botnet…

Server report botnet

L’insertion effective de la charge malveillante

À ce moment là, l’assaillant peut se connecter au serveur de rapports et décider d’infecter le nouveau dispositif distant. S’il franchit ce pas, l’architecture de la cible distante est détectée et une charge malveillante appropriée est envoyée à ce dispositif IoT. Ce dernier deviendra alors un membre (bot) du botnet. En effet, selon l’architecture de la cible (x86, mips, mpsl, arm, arm5n, arm7, ppc, spc, m68k ou sh4), une image busybox malveillante dédiée est téléchargée sur le dispositif ciblé.

Target architecture

Compile Bot

Les capacités d’attaque du botnet

À ce stade, le dispositif IoT distant est infecté et fait partie du botnet. Celui-ci peut se connecter vers un serveur C&C. Chaque code bot comporte un serveur C&C configuré pendant la compilation malware avec les paramètres TABLE_CNC_DOMAIN et PORT :

CNC domain

Le C&C comprend également une base de données appelée mirai composée de trois tables :

  • History → user_id, command, max_bots…
  • Users → username, password, duration_limit, cooldown, max_bots…
  • Whitelist → prefix and netmask

Les dispositifs infectés sont contrôlés à l’aide de ces paramètres. L’assaillant peut déterminer son attaque à l’aide des options suivantes :

image09-options-attack

Comme mentionné ci-dessus, et au vu des détails donnés par KrebsOnSecurity, cette attaque DDoS massive a vraisemblablement utilisé le paramètre ATK_VEC_GREIP (index 6).

Dans le cadre de l’attaque GRE-IP, des paquets UDP/IP sont encapsulés dans des paquets GRE. Pour chaque paquet encapsulé, l’adresse IP source ainsi que le port UDP sont générés aléatoirement. Cela a pour but d’usurper l’adresse IP source (IP spoofing) et donc d’échapper aux systèmes de protections basiques contre les dénis de service.

pasted_image_at_2016_10_26_03_29_pm

pasted_image_at_2016_10_26_03_30_pm

Nous pouvons donc dire que le nombre d’équipements infectés estimé par les victimes est très dur à vérifier et donc que ces informations sont à prendre avec des pincettes.

Mirai : vue d’ensemble

Pour illustrer l’analyse du code, vous trouverez ci-dessous un schéma extrait du blog Level3 expliquant l’architecture complète du botnet.
Nous pouvons observer les dispositifs infectés (B) en train de procéder à des attaques DDoS sur des victimes (D) tout en étant contrôlés par des serveurs C&C (C). Au même moment, les bots (B) font un scan pour trouver de nouveaux membrespotentiels (V) et pour les signaler au serveur de rapports (R).

Scheme botnet architecture

Source: http://blog.level3.com/security/grinch-stole-iot/

Qui se cache derrière ce malware ?

Le code source comprend du texte rédigé en russe tels que ceux exposés ci-dessous. Toutefois, il n’y a jusqu’à présent aucune certitude concernant le groupe à l’origine de cette attaque et sa motivation.

Russian text

Quelques traductions du russe vers le français :

  • Mпользователь -> membre
  • Пароль → mot de passe
  • Проверив → vérification
  • Произошла неизвестная ошибка → Une erreur non identifiée s’est produite
  • Нажмите любую клавишу для выхода. → Appuyez sur n’importe quelle touche pour quitter
  • я люблю куриные наггетсы → J’adore les nuggets de poulet (il semblerait qu’il s’agisse d’une blague provenant du développeur)

Jusque là, nous ne pouvons tirer aucune conclusion sur l’origine de l’attaque. Néanmoins, nous pouvons supposer qu’un russophone se cache derrière ce malware, ou tout du moins quelqu’un qui cherche à mettre en cause la Russie.

Cela représente-t-il un risque pour les réseaux industriels ?

À l’heure actuelle, ce malware ne comporte pas un risque d’infection pour les réseau industriels, en raison de la liste d’identifiants propres au monde IoT.

Néanmoins, il serait facile d’adapter le code source malveillant pour ajouter les identifiants par défaut de contrôleurs industriels (ABB, Emerson, Rockwell, Schneider, Siemens…) en raison du caractère générique du malware. La menace qu’engendrerait cette modification pourrait avoir un impact considérable.

Avec l’avènement de l’Industrial Internet of Things (IIoT), les dispositifs IoT intègrent également les réseaux industriels. Nous devons nous préparer et concentrer nos efforts sur l’amélioration de la sécurité dans l’OT (Operational Technology).

L’élément clé à retenir est le suivant : les dispositifs OT peuvent être utilisés comme vecteurs de menace majeures. Sécuriser correctement ces dispositifs n’est pas facultatif. Dans tous les cas, il est possible et même primordial de détecter la connection d’un dispositif infecté vers un C&C ou un serveur de rapports à l’aide de solutions adaptées. Il est possible de réaliser une telle mission de manière intuitive, avec des solutions de surveillance de sécurité réseau comme ICS CyberVision.

Les Indicateurs de Compromission (IoC)

L’attaque contre KrebsOnSecurity a été opérée en grande partie depuis le domaine santasbigcandycane.cx. Aujourd’hui ce nom de domaine n’est plus utilisé. Nous l’avons néanmoins laissé car il se peut que des dispositifs IoT infectés continuent à l’atteindre.

Voici ci-dessous une liste d’indicateurs de compromission :

network.santasbigcandycane.cx 80.87.205.11 C2 server
network.santasbigcandycane.cx185.93.185.12C2 server
network.santasbigcandycane.cx185.93.185.11C2 server
network.santasbigcandycane.cx80.87.205.10C2 server
network.santasbigcandycane.cx185.70.105.161C2 server
network.santasbigcandycane.cx185.130.225.95 C2 server
network.santasbigcandycane.cx185.130.225.94C2 server
network.santasbigcandycane.cx185.130.225.65C2 server
network.santasbigcandycane.cx185.130.225.83C2 server
network.santasbigcandycane.cx185.130.225.66C2 server
network.santasbigcandycane.cx185.70.105.164C2 server
network.santasbigcandycane.cx185.130.225.90C2 server
network.santasbigcandycane.cx46.249.38.153C2 server
network.santasbigcandycane.cx46.249.38.149C2 server
network.santasbigcandycane.cx46.249.38.152C2 server
network.santasbigcandycane.cx46.249.38.148C2 server
network.santasbigcandycane.cx46.249.38.154C2 server
network.santasbigcandycane.cx46.249.38.151C2 server
network.santasbigcandycane.cx46.249.38.150C2 server
network.santasbigcandycane.cx46.249.38.146C2 server
network.santasbigcandycane.cx46.249.38.145C2 server
network.santasbigcandycane.cx46.249.38.159C2 server
report.santasbigcandycane.cx65.98.91.181report server
report.santasbigcandycane.cx72.8.183.202report server
report.santasbigcandycane.cx93.158.200.115report server
cnc.disabled.racing93.158.200.115C2 server
cnc.disabled.racing92.222.66.137C2 server
cnc.disabled.racing188.209.52.101C2 server
cnc.disabled.racing93.158.200.66C2 server
cnc.disabled.racing173.212.192.219C2 server
cnc.disabled.racing191.96.249.29C2 server
cnc.disabled.racing151.80.27.90C2 server
gay.disabled.racing151.80.27.90C2 server
gay.disabled.racing51.255.172.22C2 server
gay.disabled.racing77.247.178.191C2 server
report.disabled.racing93.158.200.115report server
report.disabled.racing93.158.200.68report server
report.disabled.racing166.62.80.172report server
report.disabled.racing173.212.192.219report server
report.disabled.racing77.247.178.191report server
report.disabled.racing93.158.200.126report server
report.disabled.racing93.158.200.105report server
lol.disabled.racing151.80.27.90C2 server
lol.disabled.racing93.158.200.66C2 server
lol.disabled.racing93.158.200.103C2 server
lol.disabled.racing92.222.66.137C2 server
lol.disabled.racing51.255.172.22C2 server
dongs.disabled.racing93.158.200.126malware distribution               
penis.disabled.racing77.247.178.191C2 server
b0ts.xf0.pw185.47.62.199C2 server
b0ts.xf0.pw149.56.232.146C2 server
b0ts.xf0.pw158.69.142.34C2 server
b0ts.xf0.pw185.153.197.103C2 server
b0ts.xf0.pw176.126.245.213C2 server
b0ts.xf0.pw137.74.49.205C2 server
report.xf0.pw91.185.190.172report server
report.xf0.pw149.56.151.180report server
report.xf0.pw149.56.232.146report server
report.xf0.pw185.115.125.99report server
report.xf0.pw93.104.209.11report server
report.xf0.pw23.89.159.176report server
report.xf0.pw137.74.49.208report server
report.xf0.pw104.223.37.150report server
swinginwithme.ru154.16.199.48C2 server
swinginwithme.ru77.247.178.47C2 server
swinginwithme.ru151.80.99.91C2 server
swinginwithme.ru151.80.99.90C2 server
swinginwithme.ru154.16.199.78C2 server
swinginwithme.ru185.100.87.238C2 server
swinginwithme.ru185.62.190.38C2 server
imscaredaf.xyz154.16.199.48C2, same IP as swinginwithme.ru
imscaredaf.xyz154.16.199.78C2, same IP as swinginwithme.ru
imscaredaf.xyz154.16.199.144malware distribution
kankerc.queryhost.xyz192.69.89.173C2 server
kankerc.queryhost.xyz154.16.199.34C2 server
report.queryhost.xyz192.69.89.173report server
report.queryhost.xyz45.32.186.11report server
report.queryhost.xyz154.16.199.34report server
meme.icmp.online77.247.178.191C2 server
report.icmp.online93.158.200.124report server
dongs.icmp.online93.158.200.126report server
Source : blog.level3.com