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 réponses sur “La menace Deep Packet Inspection : analyse de la compromission d’un FAI”

  1. « …Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 with Suhosin-Patch Server at babar.gaoland.net… »

    C’est presque une faute professionnelle de laisser s’afficher ça sur un serveur Apache.

    Billet très intéressant en tout cas. Malheureusement j’ai peur que ça puisse être encore faisable chez d’autres FAI… l’avenir nous le dira.

    1. Mais non voyons, il est de notoriété publique que les fournisseurs d’accès ont des process qui interdisent toute intrusion. Le cancer d’Internet c’est l’utilisateur, il est donc normal que ce soit lui qui soit menacé d’une contravention pour négligence caractérisée 🙂

    2. Salut,

      Bon en même temps, il s’agit de la version d’Apache distribuée dans Debian lenny (stable), dans laquelle il y a un suivi de sécurité (et donc dans laquelle les vulnérabilités publiques sont censées être corrigées). Pointer vers la page listant les vulnérabilités publiques d’Apache 2.2 ne suffit *pas* à prouver qu’il s’agisse d’un « /blindage en dentelle/ ».

      Olivier;

  2. Et encore… ça, c’est un gus dans son garage avec ses relativement « gros sabots » !

    Que dire de ce qui pourrait arriver avec la « porte dérobée » installée par le fournisseur (ou qui que ce soit d’autre) ? Où il est fort probable que ça reste inconnu pendant une très longue période, sans que personne ne remarque quoi que ce soit. Jusqu’au jour où un pays, un organisme ou même simplement une personne bien informée (mais mal intentionnée) l’utilisera… ou pire, utilisera les informations collectées grâce à cette « porte dérobée » ?

    C’est vraiment l’inverse de ce qui faudrait faire, quand on y pense. Quelle folie de vouloir rendre transparentes toutes les communications d’un pays ! Quel fou pourrait souhaiter cela ?

      1. Mais toutes les communications transparentes… forcément, ça finit par retomber sur quelqu’un, ou par éclabousser quelqu’un ! Par exemple dans l’affaire Woerth-Bettencourt, si ça avait eu lieu sur Internet, tout se serait fait quasi certainement en clair (sans le moindre chiffrement que ce soit)… ce qui aurait facilité encore plus les enregistrements.

        C’est ça que je ne comprends pas. On crie au loup avec Google, mais là, c’est sans commune mesure !

        Je crois que ceux qui prennent ces décisions ne se rendent pas compte, ou n’ont pas compris la vulnérabilité des échanges qui sont faits sur Internet, du fait de l’usage actuel. Je crois que c’est ça… ils surestiment la technologie (peut-être à cause du cliché lié à l’informatique, au cinéma par exemple).

  3. Très intéressant 🙂

    Une seule taraude ma tête, comment fait il pour brancher son pc à l’autre bout du cable RJ11, c’est pas de l’analogique qui transite par se port ?

    2eme, Pourquoi établir une procédure pour détecter sur quel port se trouve internet puisque ses modem on pour vocation d’être connecté au net sur le port RJ11, c’est stupide oO

  4. @Crazysky:
    a ce moment, le PC est branché sur l’ethernet. Le cable RJ11 de téléphone est débranché pour éviter que la Neufbox n’aille trouver le vrai serveur.
    La rêquete ARP est certainement envoyée sur tous les liens disponible de la box.

    Pour la seconde question, on peut supposer qu’au niveau de la couche IP, le modem ne sait pas où se trouve son accès à Internet.
    Les interfaces ne sont pas encore configurées, donc il n’y pas d’adresse IP définies. Puisque les interfaces ne sont pas encore définie, comment savoir quelle interface est la bonne ? (si tu utilises linux, cela revient à savoir à l’avance si l’accès Internet serait eth0 ou wlan0, or les 2 sont possibles)

    1. il me semble que c’est lié a cela (mais au depart impossible de le savoir):
      sam@urg:~$ host dhcp.neufbox.neuf.fr
      dhcp.neufbox.neuf.fr has address 10.0.0.1
      dhcp.neufbox.neuf.fr has address 10.0.0.2

      1. Une question de débutant, mais… un FAI a le droit d’utiliser des plages d’adresse qui sont réservées aux réseaux privés ? Ce n’est pas tellement fait pour ça… et c’est un peu risqué, non ?

        1. il a le droit, comme toi chez toi, là le probleme c’est que les adresses IP privées sont routés par ces faux routeurs que sont nos *box, et les routeurs derrières, de sorte que le traffic pour des adresse privées (pour les infra 9tel) soit routé en interne vers leur serveur.
          Tout sort par la box, mais le traffic pour l’infra va d’un coté, le traffic pour le net de l’autre (difference entre destination public ou privé)
          Faudrait avoir des infos, effectivement c’est interessant de comprendre une archi réseau.

          1. Ça dépasse un peu mes connaissances, mais… si l’abonné utilise la même plage d’adresse (en principe réservée pour ça, pour les réseaux privés), qu’est-ce qui va se passer ? Comment est-ce que le routeur peut s’y retrouver ? Comment est-ce que le routeur peut deviner de quel « côté » il doit envoyer les paquets ? Avec deux adresses identiques… Ça me semble être la meilleure façon pour s’attirer des problèmes, ça !

          2. rien a cacher,
            effectivement si tu configures l’adresse IP LAN privé (celle que le FAI nomme 192.168.1.1 à l’origine) avec une adresse privée utile dans le reseau (genre 10.0.0.1) il peut y avoir un souci. apres faut pas avoir de bol parce qu’il y a quand meme pas mal d’adresses privées

  5. @Div Il cherche 10.0.0.1 qui doit-être une adresse de l’infrastructure DSLAM qui permet d’initialiser les interfaces réseaux.

    @Crazysky
    sinon l’autre solution pour compromettre la box c’est de cablé un modem ADSL USB en face et sa devrait marché par contre si il y authentification de type passphrase sa devient compliqué, après on peut essayé de bidouiller un modem ADSL pour le mettre en « mode monitor » et le cablé en parallèle sur le lien adsl sa pourrais etre fun …

  6. Bonjour,

    Très bon billet ! Je viens de découvrir ce site, pour la peine je m’abonne au flux..

    * Par contre j’ai juste une requête a formuler .. est-ce qu’il serait possible d’avoir une favicon sur le site ? c’est bien plus pratique pour m’y retrouver dans mon aggrégateur :$
    (je dis ca mais c’est personnel) *

      1. toute la partie de possibilité d’introduction dans les box date d’il y a 5 ans.
        ensuite il a aussi eu une recherche d’informations sur l’architecture du réseau (les plages d’adresses et les serveur web dispo), ca a été fait aussi y a 5 ans, mais je l’ai remis à jour avec les infos d’aujourd’hui. c’est plus interessant de parler d’un serveur qui était là y a 5 ans, et qu’il l’ai encore aujourd’hui, sans mise à jours.

  7. Pour info, sur la pseudo-sécurisation des systèmes, un document de recherche publié par le LRI de la fac Paris Sud, explique les défaillances de sécurité dues aux architectures systèmes.

    http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.115.2702&rep=rep1&type=pdf

    Pour résumer ce que dit ce papier, c’est que quelque soit les features de sécurités implémentées par l’OS, si le matériel n’est pas fiable, il est possible de compromettre la sécurité du système dans son ensemble. D’une manière générale, il en arrive à la conclusion que les modèles de sécurité ont beau être complet et bien conçu pour chacune des couches d’abstraction, c’est l’incohérence des modèles entre chacune des couches qui est la faille.

    Bref, la sécurité « complète » d’un système est un voeu pieux.

    1. > si le matériel n’est pas fiable, il est possible de compromettre la sécurité du système dans son ensemble.

      C’est un truisme, si le hard nous trahit il n’y a rien à faire, pas besoin de recherche pour le savoir, tout le monde le comprend bien.

      Au contraire, ce dont parle le papier c’est d’un système qui a implémente (pour autant qu’on saches) sa spécification, et une partie de cette spécification pose problème.

      > les modèles de sécurité ont beau être complet et bien conçu pour chacune des couches d’abstraction

      Au contraire, il dit bien qu’il y a une absence d’abstraction de la carte graphique au niveau du noyau, que donc un processus doit causer au matériel (que ça soit en iopl (linux) ou avec un zoli device (OpenBSD)) et ça viole totalement le principe que le noyau gère le hard, et ça affaibli le noyau sécurisé (par rapport à root).

      Le papier dit bien que le « modèle de sécurité » est INCOMPLET et MAL CONÇU. Et ce problème tout le monde le connait bien – le mélange des genres c’est la 1ère critique qu’on fait à Windows quand même.

      Et cette histoire le plage mémoire qui est celle de la carte graphique est particulièrement grotesque. (Enfin, toute cette histoire l’est.)

      Comme souvent en informatique, les mauvais choix de conception se liguent pour compromettre la sécurité : c’est un véritable complot!

  8. Pour info, parmi les attaques qui étaient envisageable rapidement, il est resorti 2 cas immédiat:

    0. arrêter la mise à jour automatique et changer les log/pass de toutes les box
    1. monter un serveur faux tftp public avec des images corrompues,
    qui empêche la neufbox de démarrer et modifier le parc de box pour
    qu’il s’update depuis ce serveur.

    l’implantation d’un logiciel de contrôle (pour faire un réseau de botnet) était un peu plus délicat (principalement à cause du système propriétaire, et de l’architecture matérielle).

  9. C’est marrant, j’avais fait presque pareil, chez le même FAI, mais j’étais allé moins loin, et l’utilisation aurait été moins dommageable : j’avais plutôt eu un accès telnet aux serveurs de VOD et IPTV de neuf…
    GG Synack !
    et un gros fail pour les ingé, techniciens, etc… de neuf !

    effectivement, une boite noire n’est pas forcément plus sécurisée que ça parce que c’est une boite noire. La sécurité, ça se passe à tous les niveaux !

  10. Hello,
    Dans le même esprit à propos des neufbox V4 / NB200.
    NB200 est la version entreprise de la box qui sert du support à l’offre commerciale ‘VPN 9ipnet’ de SFR/Neuf.
    Elle est utilisée pour les sites à faible trafic ne nécéssitant pas d’avoir un MPLS symétrique à 48M.

    Donc en charge de déployer quelques nouveaux sites clients du vpn de la boite, j’emporte avec moi la NB200 que je prévoie d’installer le lendemain. Elles sont livrées en colissimo, configurées, rien à faire de particulier.

    Pour je ne sais quelle raison, dans la soirée surgit l’idée de brancher la NB200 sur ma liaison ADSL SFR/Neuf…

    Et qu’arriva-t-il? En deux minutes chrono je me retrouvais sur le VPN de la boite. Rien de moins. C’était en 2010. De simple client SFR/Neuf sans lien avec la boite, je devenais membre du VPN de la boite.

    C’est parait-il corrigé maintenant. Au moins pour moi, c’est fait car le problème est remonté très haut dans la hiérachie SFResque. Mais est-il redescendu jusqu’à chaque configuration cliente…. Je ne sais pas. C’est à vous de le vérifier en déplaçant une box!

    Franck
    Administrateur réseau.

Répondre à corrector Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.