La menace Deep Packet Inspection : analyse de la compromission d’un FAI

backboneL’analyse en profondeur de paquets (DPI) en coeur de réseau est le nouveau fantasme de la SCPP. Marc Guez son directeur ne doute pas un instant que grâce à cette solution miracle, il pourra reconnaître la légalité des octets qui transitent sur les réseaux des fournisseurs d’accès. En théorie, il n’est pas loin d’avoir raison. En pratique, c’est un peu moins sur… et du coup, je vais vous raconter une bien belle histoire, celle de Samir, aka sam_synack… une histoire encore parfaitement inconnue du grand public.

Ceci remonte à 2006, à l’époque, le fournisseur d’accès SFR s’appelait 9Télécom. Il distribuait des Neufbox à ses clients. À cette époque les Neufbox n’étaient pas équipées en GNU/Linux, le firmware était fermé et propriétaire. Mais un firmware fermé… ça s’ouvre. C’est bien ce qui est arrivé. Ce billet est assez technique, il dissèque la compromission du réseau d’un fournisseur d’accès Internet. Le détail du hack est ici relaté, vous comprendrez donc qu’il ne s’agit pas d’une fiction… c’est bien réel.

Analyse de la compromission de 300 000 Neufbox et du coeur de réseau d’un fournisseur d’accès par un gus dans son garage

Samir Bellabes, qui s’ennuyait en luttant contre ses insomnies, a eu la curiosité de commencer à causer avec sa Neufbox, fraîchement achetée quelque heures plus tôt… dramatiquement banal ? Attendez un peu, ce qui va suivre l’est un peu moins. La Neufbox se montre peu bavarde, mais animé par cette curiosité maladive qui anime tout hacker, Samir ne se décourage pas, il lui en faut bien plus. Sa méthode, simple et imparable, sniffer sur son réseau le trafic entre sa Neufbox et le Net et ainsi localiser le serveur depuis lequel elle se met à jour, récupérer ce firmware lors d’une mise à jour en dumpant les paquets. Appréciez la beauté du hack :

  • Samir scanne sa Neufbox : pas de résultat, pas grand chose à se mettre sous la dent hormis peut-être un port TCP 1287 à l’écoute à garder sous le coude :

sam@urg:~$ sudo nmap -sT  192.168.1.1 -p 1-65535
Starting Nmap 5.00 ( http://nmap.org ) at 2010-09-22 14:58 CEST
Interesting ports on 192.168.1.1:
Not shown: 65530 filtered ports
PORT     STATE  SERVICE
53/tcp   open   domain
80/tcp   open   http
1287/tcp open   unknown
1288/tcp open   unknown
8080/tcp closed http-proxy

sam@urg:~$ telnet 192.168.1.1 1287
Trying 192.168.1.1…
Connected to 192.168.1.1.
Escape character is ‘^]’
.Foxconn VoIP TRIO 3C, F01L010.00_LDCOM MAC: , VOIP FLG=1
Login:

  • Il éteint sa Neufbox et la raccorde en ethernet à sa machine sur laquelle il lance tcpdump ;
  • La Neufbox effectue une requête “ARP, Request who-has 10.0.0.1” vers sa machine, donc la neufbox recherche le serveur 10.0.0.1;
  • Bien entendu, sa machine ne peut répondre à cette requête ;
  • Samir débranche le RJ11 sur lequel le signal ADSL arrive dans la box,  configure sa machine pour prendre l’adresse 10.0.0.1 et rallume la neufbox ;
  • Bingo, sa machine répond cette fois ci à la requête ;
  • Cette requête servait pour la box à déterminer où se trouve Internet et où se trouve le réseau local … Samir vient de tromper la Neufbox … sans une seule ligne de code ;
  • Une série de requêtes UDP et TCP se sont alors lancées depuis la Neufbox (recherche des serveurs de VoIP par exemple);
  • Mais le plus intéressant : une connexion UDP vers un serveur d’adresse publique  80.118.192.97, et vers un port de destination identifié comme du TFTP ;
  • Sur sa machine, Samir monte donc un serveur TFTP en écoute en attribuant arbitrairement à l’interface en écoute cette adresse publique ;
  • Il rallume sa box, et alors que la Neufbox cherche le serveur public,  c’est sa machine qui répond, la Neufbox s’y connecte donc naturellement ;
  • La Neufbox demande à sa machine le fichier LatestVersion.general (listant les firmwares disponibles comme on le découvre plus tard);
  • Samir a donc maintenant assez d’informations pour aller chercher le vrai serveur public TFTP qui gère les mises à jour ;
  • Le firmware est capturé :

sam@fin:~/tmp$ tftp 80.118.192.97
tftp> get F01L010.00_LDCOM-V1.6.19_AV225165_V060419_00_full.tar
Received 1666745 bytes in 6.4 seconds
tftp> quit
sam@fin:~/tmp$ file *
F01L010.00_LDCOM-V1.6.19_AV225165_V060419_00_full.tar: data
LatestVersion.general:                                 ASCII text

  • Et là, c’est le drame, une petite recherche dans le firmware sur la chaine de caractères “password” lui renvoit ceci :

httpd_username1=tibma
httpd_password1=ambit
httpd_username2=root
httpd_password2=aEzebRAWiF

  • Ces login/pass sont fonctionnels sur l’interface web de la Neufbox. Mais surtout retournons voir le CLI sur le port TCP 1287 et son prompt login, et là encore pas de souci, le mot de passe root permet d’être root sur la Neufbox.
  • Immédiatement on trouve le nom du CLI : ISOS et sa doc http://89.96.243.158/download/USERGUIDE/985_a02-ra3_cli.pdf
  • Il y a 2 interfaces (WAN et LAN) et l’interface WAN possède un adresse IP de classe privée du sous-réseau 172.16.0.0/12. (disons 172.16.42.42) … Curieux.
  • C’est là que Samir se rend compte qu’il peut envoyer du trafic à l’adresse IP voisine (par exemple 172.16.42.43, c’est à dire à une possible autre Neufbox. Un seul moyen de vérifier, se logger et éteindre cette Neufbox. C’est fait, le modem voisin ne répond plus.

La Neufbox de Samir est rootée, ainsi que plus de 300 000 de ses petites sœures !

En même temps qu’il recherche un mécanisme pour exploiter à grande échelle ces informations, il continue ses recherches basées sur les informations du firmware : les noms des serveurs donnant des adresses IP qui donnent des plages de réseau : 212.94.162.0, tftp.neufbox.neuf.fr, dhcp.neufbox.neuf.fr, ..

Et ce n’est pas fini…

  • Il scanne la plage IP, extrait :

Host pradius-dsl-2.gaoland.net (212.94.162.16) is up (0.039s latency).
Host mrtg.gaoland.net (212.94.162.5) is up (0.030s latency).
Host dns1.gaoland.net (212.94.162.1) is up (0.025s latency).
Host pippin.gaoland.net (212.94.162.15) is up (0.039s latency).
Host babar.gaoland.net (212.94.162.67) is up (0.027s latency).

  • Sur ce dernier serveur, le navigateur demande une authentification pour un mécanisme de sauvegarde à des routeurs BB IP … BACKBONE pwn3d !

Samir vient de taper à la porte du backbone… tout juste là où les partisans de la DPI souhaiteraient placer leurs équipements ! Le tout est accessible depuis le Net…. magnifique non ?

  • Et là vous vous dites que c’est blindé, pas moyen de passer ? Voici ce que trouve Samir :  Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 with Suhosin-Patch Server at babar.gaoland.net … Blindé en effet … enfin presque.
  • Dans la suite de la recherche, une autre plage intéressante est aussi apparue :

inetnum:        80.118.192.0 – 80.118.197.255
netname:        N9UF-INFRA
descr:
BIB backbone

Happy End

Samir est un hacker sympa, pas un terroriste, il avertit donc aussitôt Neuf qui corrige, il n’a pas exploité ses trouvailles, il ne les a pas revendues sur une board russe… un vrai coup de bol pour les 300 000 abonnés de Neuf qu’il avait à portée de shell. Cette histoire n’a jamais filtré, c’était il y a 5 ans, et la révéler aujourd’hui ne porte pas préjudice au fournisseur d’accès. Par contre elle soulève des question très lourdes.

Que faut il retenir de cette petite histoire ?

Il n’en a pas fallu plus pour compromettre l’infrastructure du réseau de Neuf : un ordinateur et un gus dans son garage.. sans aucune ligne de code et  toute l’infrastructure réseau d’un fournisseur d’accès est mise à nue. Cette même infrastructure au cœur de laquelle certains inconscients aimeraient placer des dispositifs d’écoute généralisée… à la portée de n’importe quel état, de n’importe quelle officine qui s’en donnerait les moyens… et d’un gus dans un garage !

Conclusion

La sécurité est un mécanisme global, qui fonctionne par des liens entres différents niveaux de couches et de services. Elle ne se résoud pas uniquement avec une boite gavée de GPU sur un lien réseau en terabit. Des entreprises voudraient utiliser les informations du réseau, vos informations, vos communications, afin de réaliser leur analyse et en déduire leur “légalité”. Il est clair que les solutions que la HADOPI a pour mission de labelliser seront des logiciels de lutte contre l’échange de fichiers. Ceci se fera au risque de compromettre la sécurité des utilisateurs et des entreprises. Là où on nous souffle le terme de  “logiciels de sécurisation” et où le mot d’ordre est un concept aussi fumeux que la protection des lignes ADSL pour éviter de se rendre coupable d’un délit de “négligence caractérisée“, il faut bien lire “surveillance généralisée”. Si le grand public a un besoin réel de sécurisation, de confiance dans le réseau et de protection, il ne faut pas non plus nous faire prendre des vessies pour des lanternes : le produit Qosmos/Vedicis n’est pas une solution de securisation, mais bien de surveillance.

S’il fallait trouver un moyen efficace d’offrir l’opportunité à des personnes mal intentionnées de mettre la main sur les données personnelles de millions de particuliers et d’entreprises, nous ne pourrions pas mieux nous y prendre qu’en plaçant des équipements de DPI en cœur de réseau…

Voulez vous vraiment vous rendre coupable d’une négligence caractérisée mettant en péril notre sécurité nationale Monsieur Guez ? Pensez vous que la défense de vos intérêts (et non ceux des artistes) en vaut les risques encourus ?

Être conscient des peurs sur la DPI est une chose, prendre conscience des risques en est une autre. Il est grand temps que nos responsables politiques sifflent la fin de la récréation. Si les libertés individuelles ont une fâcheuse tendance à devenir un produit d’exportation, il est impératif que ces dispositifs dangereux pour la sécurité de nos concitoyens le restent.

38 Comments

Leave a Reply