Attaque DDoS pour les profanes

Standard

Une idée de cadeau

La semaine dernière, je réfléchissais à un sujet pour l’édito de la newsletter des Anciens de l’EPITA de cette fin d’année 2016. Qui dit fin d’année dit idée de cadeau de Noël. Mon attention a été attirée par le nombre de plus en plus importants de périphériques nécessitant une connexion internet exposés sur les différents étalages de nos revendeurs préférés. Cette connexion internet, pour une bonne ou une mauvaise raison, est désormais omniprésente.

 

L’Idate et le Gartner estiment en 2016 entre 6 et 15 milliards le nombre d’objets connectés à internet. (La fourchette est plutôt large mais cela permet de se faire une idée)

 

Si je prends mon exemple personnel, je n’ai pas moins d’une dizaine de périphériques connectés directement ou bien par le biais de mon fournisseur d’accès personnel à internet. J’y inclus notamment la télé, les consoles, imprimantes, les stockages réseau, les montres, les téléphones bien entendu, etc.

Panique à bord

Au même moment, au gré de mes recherches, notamment sur GitHub (oui apparemment, je cherche des idées de cadeau de noël sur Github), c’est la panne ! Pas pour moi, mais pour mon navigateur. Après une demi-seconde d’introspection, et quelques tests, il semble que seulement certains sites soient inaccessibles en utilisant leur nom de domaine. Le service en lui-même est toujours disponible. Cela signifie que vous ne pouvez plus aller sur https://github.com mais sur https://192.30.253.113. Pas vraiment pratique cette histoire.

Contournement

Une petite modification dans le fichier hosts de votre système d’exploitation favori et c’est reparti.

Sous Windows, ce fichier se trouve par défaut dans :

C:\Windows\System32\drivers\etc

Sous Linux et macOS Sierra notamment, ce fichier se trouve dans :

/etc/hosts

Quelque soit la plateforme, nous devons ajouter la ligne suivante, avec un utilisateur ayant les droits appropriés et le tour est joué :

192.30.253.113 github.com

Après cette modification, j’ai de nouveau accès à GitHub. C’est une solution de contournement temporaire, qui a plusieurs inconvénients. Le principal inconvénient est le fait de ne pas être en mesure de détecter le changement d’adresse IP du service ciblé. Le second inconvénient est la nécessité de connaître l’adresse IP du service auquel je cherche à accéder. Parce que dans le cas présent, si nous ne connaissons pas l’adresse correspondante, c’est peine perdue.

Origine de la panne

Attendez ! Pourquoi la résolution DNS en ce 21 octobre 2016 ne fonctionne pas ? Un technicien malheureux qui a trébuché sur un câble dans l’un des datacenters ultra-sécurisés de la côte Ouest des Etats-Unis ? On l’a tous expérimenté au moins une fois, et si ce n’est pas encore fait, cela ne va pas tarder. Trop gros ? En réalité, il semblerait que plusieurs vagues d’une attaque de type DDoS (Distributed Denial of Service) soient en cours à l’encontre du fournisseur de service Dyn.

Ce type d’attaque n’est pas nouveau, d’autant que des attaques similaires avaient déjà eu lieu un peu plus tôt à la fin de l’été dernier. Le phénomène semble toutefois plus important qu’à l’accoutumé pour 2 raisons : le nombre de zombis impliqués dans l’attaque qui est de l’ordre de 300 000 et le débit de données engendré. Autant dire que c’est une attaque hautement distribuée puisque les précédentes étaient plutôt de l’ordre de quelques milliers. Ce dernier assaut fut d’autant plus remarqué que l’accès à des services grands publics n’était plus possible : Netflix, PayPal, Twitter, pour ne citer qu’eux. Non. Github ne semble pas être un service grand public. Bien que ces services étaient toujours disponibles, compte tenu de la nature de l’attaque, pour une grande majorité des personnes qui utilisent ces services, ils les considèrent comme indisponibles.

Caméras connectées inoffensives

Caméras connectées inoffensives

L’élégance de cette attaque, si l’on peut parler d’élégance, est l’utilisation d’un ensemble de périphériques connectés, a priori complètement inoffensifs, pour les retourner contre nous. J’entends par périphérique connecté tout élément qui possède une connexion directe à internet et qui doit être basé sur un noyau Linux dans le cas présent. Qui pourrait se douter que votre magnétoscope numérique se rebelle en plein milieu du film pour vous piquer du popcorn ?

Caméras connectées infectées

Caméras connectées infectées

J’aime assez cette idée de petits objets a priori sans défense, qui ont à la fois l’avantage de ne pas être réellement surveillé et en plus de devoir disposer d’un débit assez conséquent pour retransmettre les vidéos en HD1080P à au moins 60 FPS.

Présentation du malware

Le malware impliqué dans cette attaque a pour nom Mirai (qui signifie Avenir en Japonais) et aurait été développé par une personne ou un groupe de personnes sous le pseudonyme Anna-senpai, que l’on peut notamment retrouver sur le site anglophone hackforums.net. Pour la culture générale, Anna-senpai est aussi le nom d’un animé dont l’héroïne, Anna Nishikinomiya, est une jeune étudiante qui tente de faire respecter la bienséance et la moralité auprès de ses camarades de classe.

Mirai semble être le fruit d’un travail déjà fourni pour le développement de Bashlite aussi connu sous d’autres noms comme Lizkebab, BASHLITE (upper case), Torlus, gafgyt ou encore LizardStresser. Ces derniers, Lizard Squad, avaient d’ailleurs envisagé la possibilité de mettre à disposition le malware en mode SaaS pour lancer des attaques DDoS en quelques clics. La majeure partie de l’infrastructure étant fournie par les objets connectés, ils avaient développé une interface web pour piloter le tout. Ils avaient défini une grille tarifaire plutôt cohérente. Et leur site internet n’était pas si mal que ça. Ils auraient peut être dû essayer de se faire incuber avant de se faire enfermer.

Détail du fonctionnement

Le principe de base de Mirai et Bashlite repose sur la tentative d’établir un accès via le protocole TELNET en brute force sur des périphériques écoutant sur le port par défaut de ce protocole. L’accès en force repose sur la combinaison des mots de passe bien connus et embarqués par les fabriquants de ces mêmes périphériques, caméras de sécurité et enregistreurs numériques. Avec Mirai, la liste des types d’attaque a été étoffée et les combinaisons de mot de passe ont été enrichies. Pour se faire une idée plus précise, je vous présente un échantillon du fichier scanner.c du code source de Mirai qui embarque en dur la liste des mots de passe.

// Set up passwords
 add_auth_entry("\x50\x4D\x4D\x56", "\x5A\x41\x11\x17\x13\x13", 10); // root xc3511
 add_auth_entry("\x50\x4D\x4D\x56", "\x54\x4B\x58\x5A\x54", 9); // root vizxv
 add_auth_entry("\x50\x4D\x4D\x56", "\x43\x46\x4F\x4B\x4C", 8); // root admin
 add_auth_entry("\x43\x46\x4F\x4B\x4C", "\x43\x46\x4F\x4B\x4C", 7); // admin admin
//...

N’essayez pas de convertir directement par exemple le code hexadécimal 0x50 0x4D 0x4D 0x56, qui donne en réalité PMMV. Le développeur fait passer ces chaînes de caractères dans une fonction de désobfuscation deobf qui consiste à faire effectuer un XOR successif avec les 4 caractères hexadécimaux suivants : 0xDE, 0xAD, 0xBE et 0xEF. Après ces quatre opérations, nous obtenons bien le code 0x72 0x6F 0x6F 0x74 correspondant au nom d’utilisateur root.

L’autre particularité intéressante est qu’ils exploitent une superbe boite à outils du nom de BusyBox livrée en standard sur tous ces périphériques connectés basés sur un noyau Linux. Ce logiciel est vraiment très pratique, mais malheureusement, une fois que le malware malintentionné est connecté, il peut également s’en servir pour utiliser et consulter les statistiques de n’importe quel processus (cat, kill -9, rm, ps, …)

Par curiosité, j’ai continué à parcourir le code source. Certains éléments diffèrent avec bashlite, notamment le fait que les mots de passe soient directement en hexadécimal obfusqués plutôt qu’en clair.
La structure du code (formatage, commentaire, indentation) est plutôt propre même si nous nous retrouvons face à pas mal de code dupliqué et de redondances, avec des fonctions qui font plusieurs centaines de lignes et de l’indentation pas toujours bien réalisée.

Le schéma ci-dessous présente une vision globale du fonctionnement de Mirai. J’y fais apparaître également le langage de programmation des différents modules. Pour l’objet connecté ciblé, il ne peut être que sous Linux, alors que la cible principal n’a pas de contrainte quant au système d’exploitation du moment qu’une utilisation de l’un des 3 protocoles est possible.

Schéma du fonctionnement de Mirai

Fonctionnement Mirai

 

InfoConcernant le protocole SSH, il semble qu’ils aient commencé à préparer certains éléments, notamment avec le flag de compilation -DMIRAI_SSH dans le fichier build.sh, mais rien dans le code n’utilise ce flag de compilation. Ai-je manqué quelque chose ? A voir.

Nationalité du malware

Le fichier prompt.txt contient une phrase, que l’on peut tenter d’interpréter…ou pas.

я люблю куриные наггетсы

La traduction nous donne la signification suivante

I love chicken nuggets

Nuggets

 

De là à en voir un lien direct avec la nationalité du développeur ou groupe de développeurs, cela me paraît maigre, à l’inverse de ce que semble en passer l’auteur de l’article Mirai DDoS Source Code Review. Nous pouvons nous perdre en spéculations notamment sur le fait que les commentaires soient en anglais : bonne pratique pour pouvoir partager ? volonté de détourner l’attention sur sa véritable origine et langue maternelle ? Malheureusement, aucun fait tangible ne permet d’obtenir cette information pour le moment.

Historique des dernières attaques

Revoyons la trame chronologique des derniers exploits dans lesquels le malware a été impliqué.

Le 20 septembre 2016, nous avons l’attaque sur KrebsonSecurity, dont tous les journaux de la presse spécialisée parlent. Akamaï évoque des pics à plus de 600 Gbps.

La semaine suivante, entre le 22 et le 26 septembre, nous avons OVH qui subit une attaque de plusieurs centaines de Gbps, avec des pics à plus d’1 Tbps.

Finalement, le 21 octobre 2016, c’est Dyn qui subit une nouvelle attaque, rendant impossible l’accès à de grands sites pour la majorité des internautes.

J’ai tenté de voir si je pouvais établir un lien entre Dyn et l’origine de l’attaque. Pour cela, j’ai superposé la carte de l’origine des malwares et l’emplacement des datacenters de Dyn. Les deux catégories sont au même endroit. Cette simple coïncidence nous permet de développer plusieurs hypothèses.

Carte du monde Infections et Dyn

Carte du monde Infections et Dyn

De là à dire qu’une partie des caméras chargés de la surveillance des datacenters de Dyn ont servi directement à l’attaque, il n’y a qu’un pas à franchir. Il faudrait connaître les localisations exactes des caméras et des datacenters pour en avoir le coeur net. L’autre élément qui peut alimenter cette théorie est la fait que seulement la société Hangzhou Xiongmai Technology Co Ltd a réagit publiquement en rappelant seulement une partie de ses produits vendus sur le sol américain. Cette société n’est rien d’autre qu’un leader sur le marché des caméras de surveillance connectés.

Pour en revenir à ce vendredi matin du 21 octobre 2016, (Heure Standard du Pacifique), les attaques citées n’ont cependant pas été revendiquées publiquement. Il y a eu quelques sorties suivies ensuite de rétractations, histoire de faire parler. Mais je n’ai pas réussi à savoir si ces attaques avaient fait l’objet d’un chantage ou d’une menace. Ces attaques pourraient également servir une idéologie ou tout simplement être le fruit d’un défi : “Sommes-nous capables de le faire ? Oui ? Alors on le fait !“.

 

Vision des non initiés

Bien que la solution de contournement soit très simple, le fait que cela touche un nombre important d’utilisateurs non initiés peut donner l’impression qu’Internet est tombé sous la puissance d’une attaque sans précédent. Rien de plus faux !

Il n’en reste pas moins que les quelques articles de la presse généraliste, Le Monde en tête avec un article sur le code source d’un puissant programme d’attaques informatiques rendu public, me laisse perplexe. Le Monde ne donne aucune visibilité à son article et les périphériques incriminés ainsi que les mots de passe en dur ne sont même pas évoqués.

Comme la prise de contrôle des périphériques n’est pas franchement élaborée, elle devrait susciter une plus grande tôlée dans l’opinion publique, d’ordinaire si prompt à réclamer son droit à l’image et son droit à la protection des données. Et là ? Personne. Seulement la presse ultra spécialisée s’en inquiète. Cela prendra du temps avant une prise de conscience des utilisateurs qui forceront ensuite  la main des fabricants de matériel à ne pas laisser de tels trous de sécurité.

 

On se réveille ?

Nous pouvons craindre que ce ne soit que le début d’une série d’attaques. Les perspectives et prévisions du Gartner du nombre d’objets connectés confirment cette crainte.

Est-ce que l’attaque de vendredi [du 21 octobre 2016] est précurseur de quelque chose de plus grand ? Neil Daswani, CISO, LifeLock pour SCM Magazine

Mais c’est aussi une perspective réjouissante pour les traitements distribués. L’attaque DDoS qui utilise des centaines de milliers de Bot est un acte grossier. Mais ce gigantesque réseau et cette formidable puissance de calcul distribuée peuvent être utilisés pour bien d’autres choses.

 

Table 1: Internet of Things Units Installed Base by Category (Millions of Units)

Category

2014

2015

2016

2020

Consumer

2,277

3,023

4,024

13,509

Business: Cross-Industry

632

815

1,092

4,408

Business: Vertical-Specific

898

1,065

1,276

2,880

Grand Total

3,807

4,902

6,392

20,797

Source: Gartner (November 2015)

Les mots de passe et périphériques vulnérables

Basé sur les mots de passe décodés contenus dans le code source Mirai et sur l’article How one rent-a-botnet army of cameras, DVRs caused Internet chaos publié par Arstechnica. Malheureusement, certains composants sont réutilisés dans d’autres périphériques sans qu’il soit facilement possible de connaître l’origine des composants.

Manufacturer Username Password
ACTi IP Camera admin 123456
ANKO Products DVR root anko
Axis IP Camera root pass
Dahua Camera root vizxv
Dahua DVR root 888888
Dahua DVR root 666666
Dahua IP Camera root 7ujMko0vizxv
Dahua IP Camera root 7ujMko0admin
Dahua IP Camera 666666 666666
Dreambox TV receiver root dreambox
EV ZLX Two-way Speaker root zlxx
Guangzhou Juan Optical root juantech
H.264 – Chinese DVR root xc3511
HiSilicon IP Camera root hi3518
HiSilicon IP Camera root klv123
HiSilicon IP Camera root klv1234
HiSilicon IP Camera root jvbzd
IPX-DDK Network Camera root admin
IQinVision Cameras root system
Mobotix Network Camera admin meinsm
Packet8 VOIP Phone root 54321
Panasonic Printer root 00000000
RealTek Routers root realtek
Samsung IP Camera admin 1111111
Shenzhen Anran Security Camera root xmhdipc
SMC Routers admin smcadmin
Toshiba Network Camera root ikwb
Ubiquiti AirOS Router ubnt ubnt
VideoIQ supervisor supervisor
Vivotek IP Camera root
Xerox printers admin 1111
ZTE Router root Zte521

 

 

Sources

 Tous les liens utilisés, cités ou ayant seulement servis à la rédaction de ce texte sont disponibles sur mon profile TagPacker.

Leave a Reply