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/Password Manufacturer
admin/123456 ACTi IP Camera
root/anko ANKO Products DVR
root/pass Axis IP Camera, et. al
root/vizxv Dahua Camera
root/888888 Dahua DVR
root/666666 Dahua DVR
root/7ujMko0vizxv Dahua IP Camera
root/7ujMko0admin Dahua IP Camera
666666/666666 Dahua IP Camera
root/dreambox Dreambox TV receiver
root/zlxx EV ZLX Two-way Speaker?
root/juantech Guangzhou Juan Optical
root/xc3511 H.264 – Chinese DVR
root/hi3518 HiSilicon IP Camera
root/klv123 HiSilicon IP Camera
root/klv1234 HiSilicon IP Camera
root/jvbzd HiSilicon IP Camera
root/admin IPX-DDK Network Camera
root/system IQinVision Cameras, et. al
admin/meinsm Mobotix Network Camera
root/54321 Packet8 VOIP Phone, et. al
root/00000000 Panasonic Printer
root/realtek RealTek Routers
admin/1111111 Samsung IP Camera
root/xmhdipc Shenzhen Anran Security Camera
admin/smcadmin SMC Routers
root/ikwb Toshiba Network Camera
ubnt/ubnt Ubiquiti AirOS Router
supervisor/supervisor VideoIQ
root/<none> Vivotek IP Camera
admin/1111 Xerox printers, et. al
root/Zte521 ZTE 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.cx 185.93.185.12 C2 server
network.santasbigcandycane.cx 185.93.185.11 C2 server
network.santasbigcandycane.cx 80.87.205.10 C2 server
network.santasbigcandycane.cx 185.70.105.161 C2 server
network.santasbigcandycane.cx 185.130.225.95  C2 server
network.santasbigcandycane.cx 185.130.225.94 C2 server
network.santasbigcandycane.cx 185.130.225.65 C2 server
network.santasbigcandycane.cx 185.130.225.83 C2 server
network.santasbigcandycane.cx 185.130.225.66 C2 server
network.santasbigcandycane.cx 185.70.105.164 C2 server
network.santasbigcandycane.cx 185.130.225.90 C2 server
network.santasbigcandycane.cx 46.249.38.153 C2 server
network.santasbigcandycane.cx 46.249.38.149 C2 server
network.santasbigcandycane.cx 46.249.38.152 C2 server
network.santasbigcandycane.cx 46.249.38.148 C2 server
network.santasbigcandycane.cx 46.249.38.154 C2 server
network.santasbigcandycane.cx 46.249.38.151 C2 server
network.santasbigcandycane.cx 46.249.38.150 C2 server
network.santasbigcandycane.cx 46.249.38.146 C2 server
network.santasbigcandycane.cx 46.249.38.145 C2 server
network.santasbigcandycane.cx 46.249.38.159 C2 server
report.santasbigcandycane.cx 65.98.91.181 report server
report.santasbigcandycane.cx 72.8.183.202 report server
report.santasbigcandycane.cx 93.158.200.115 report server
cnc.disabled.racing 93.158.200.115 C2 server
cnc.disabled.racing 92.222.66.137 C2 server
cnc.disabled.racing 188.209.52.101 C2 server
cnc.disabled.racing 93.158.200.66 C2 server
cnc.disabled.racing 173.212.192.219 C2 server
cnc.disabled.racing 191.96.249.29 C2 server
cnc.disabled.racing 151.80.27.90 C2 server
gay.disabled.racing 151.80.27.90 C2 server
gay.disabled.racing 51.255.172.22 C2 server
gay.disabled.racing 77.247.178.191 C2 server
report.disabled.racing 93.158.200.115 report server
report.disabled.racing 93.158.200.68 report server
report.disabled.racing 166.62.80.172 report server
report.disabled.racing 173.212.192.219 report server
report.disabled.racing 77.247.178.191 report server
report.disabled.racing 93.158.200.126 report server
report.disabled.racing 93.158.200.105 report server
lol.disabled.racing 151.80.27.90 C2 server
lol.disabled.racing 93.158.200.66 C2 server
lol.disabled.racing 93.158.200.103 C2 server
lol.disabled.racing 92.222.66.137 C2 server
lol.disabled.racing 51.255.172.22 C2 server
dongs.disabled.racing 93.158.200.126 malware distribution               
penis.disabled.racing 77.247.178.191 C2 server
b0ts.xf0.pw 185.47.62.199 C2 server
b0ts.xf0.pw 149.56.232.146 C2 server
b0ts.xf0.pw 158.69.142.34 C2 server
b0ts.xf0.pw 185.153.197.103 C2 server
b0ts.xf0.pw 176.126.245.213 C2 server
b0ts.xf0.pw 137.74.49.205 C2 server
report.xf0.pw 91.185.190.172 report server
report.xf0.pw 149.56.151.180 report server
report.xf0.pw 149.56.232.146 report server
report.xf0.pw 185.115.125.99 report server
report.xf0.pw 93.104.209.11 report server
report.xf0.pw 23.89.159.176 report server
report.xf0.pw 137.74.49.208 report server
report.xf0.pw 104.223.37.150 report server
swinginwithme.ru 154.16.199.48 C2 server
swinginwithme.ru 77.247.178.47 C2 server
swinginwithme.ru 151.80.99.91 C2 server
swinginwithme.ru 151.80.99.90 C2 server
swinginwithme.ru 154.16.199.78 C2 server
swinginwithme.ru 185.100.87.238 C2 server
swinginwithme.ru 185.62.190.38 C2 server
imscaredaf.xyz 154.16.199.48 C2, same IP as swinginwithme.ru
imscaredaf.xyz 154.16.199.78 C2, same IP as swinginwithme.ru
imscaredaf.xyz 154.16.199.144 malware distribution
kankerc.queryhost.xyz 192.69.89.173 C2 server
kankerc.queryhost.xyz 154.16.199.34 C2 server
report.queryhost.xyz 192.69.89.173 report server
report.queryhost.xyz 45.32.186.11 report server
report.queryhost.xyz 154.16.199.34 report server
meme.icmp.online 77.247.178.191 C2 server
report.icmp.online 93.158.200.124 report server
dongs.icmp.online 93.158.200.126 report server
Source : blog.level3.com