détournement de trafic Internet via protocole BGP : les bases (partie 1/3)

Pendant quelques instants, imaginez que n'importe qui sur Internet est en mesure d'enregistrer ou de modifier toutes vos communication, ce à votre insu et que ce soit temporairement ou pour une durée donnée.

C'est une réalité : Toutes les communications non sécurisées via des mécanismes de cryptage sont potentiellement concernées. Cela concerne le mail, le trafic web, des flux XML de WebServices ou tout autre flux métier non sécurisé via SSL ou encore IPSEC.

Vous pourriez rétorquez que ce type d'écoute est réservée à des institutions gouvernementales dotées d'équipements extrêmement couteux et donc hors de portée d'attaquants "classiques". Et bien détrompez-vous : Il suffit d'un routeur Internet supportant le protocole BGP.
Cela fait au bas mot plusieurs dizaines de milliers de routeurs qui peuvent être autant de points d'attaque. Ce « ticket d'entrée » qu'est un routeur BGP ne fait peut-être pas partie de la panoplie du hacker standard mais sur Internet tout se trouve et tout se vends.

Cette série d'articles en 3 volets commencera par un rappel des notions essentielles à la compréhension du protocole de routage BGP, la 2nde partie rentrera dans le vif du sujet en décrivant les principes de fonctionnement de l'attaque présentée par Alex Pilosov et Tony Kapela lors du DEFCON 16 d'Aout 2008 (Slides PPT peuvent être téléchargés ICI), présentation qui a été l'objet d'un article de Wired au titre sulfureux : Wired, Revealed: The Internet's Biggest Security Hole, August 26th, 2008.

La dernière et 3ième partie s'attachera à présenter selon quels principes un tel détournement peut être masqué et proposera quelques scénarios d'attaque « grandeur réelle ».

Pour commencer, quelques rappels sur le protocole BGP:

Sur Internet, le routage des paquets est structuré selon une hiérarchie à deux niveaux. L'Internet est composé d'un assemblage de Systèmes Autonomes (AS pour « Autonomous System », « Domaines » en Français) qui utilisent chacun en interne leur protocole interne de routage (ou IGP pour Interior Gateway Protocol) afin de déterminer le chemin le plus efficace en interne au sein de l'AS. Ces règles de routage sont très fines, les protocoles communément utilisés étant OSPF, IS-IS ou EIGRP.

Utiliser des routes fines au niveau global Internet ne fonctionnerait pas car leur  nombre serait beaucoup trop important : Les "routes fines" sont donc agrégées (ou regroupées) en routes de plus haut niveau.

Le second niveau de la hiérarchie de routage correspond à un routage entre domaines. A ce niveau on décrit comment sont interconnectés les Domaines et via quels domaines un paquet doit transiter pour arriver à destination. Le protocole actuellement utilisé sur Internet pour le routage inter-Domaines est BGP4 (Border Gateway Protocol version 4).

Chaque domaine est indépendant dans la gestion de son routage interne. Les domaines (ou AS pour "Autonomous System") est identifié de façon unique par un numéro : Le numéro d'AS (ou ASN pour Autonomous System Number).

Chaque AS "annonce" (ou déclare) ses routes à ses voisins qui propagent l'information : A chaque passage d'un AS, la route s'enrichit de l'AS quelle vient de traverser. C'est l'AS-PATH.

Illustrons cela avec quelques exemples pour comprendre BGP :

La figure 1 présente un réseau simplifié avec quelques AS et décrit la génération de l'AS-PATH

On peut voir que :

  1. l'AS1 annonce "192.0.2.0/24" (il est dans ce cas appelé "AS-Origin") et émet des annonces avec AS-PATH=(1)
  2. AS2 reçoit cette annonce, se rajoute en premier dans l'AS-PATH (action de "AS-PATH Prepending") et émet un AS-PATH=(2,1)
  3. AS4 reçoit cette annonce, fait un AS-PATH Prepending de lui-même et émet un AS-PATH=(4,2,1)

AS5 sait donc qu'il peut joindre le sous-réseau "192.0.2.0/24" via un AS-PATH de longueur 3 (4,2,1) en passant via AS4.

  1. D'un autre coté la même annonce d'AS1 est parvenue à AS3, qui fait son "AS-PATH Prepend" et émet donc un AS-PATH=(3,1) vers AS5

AS5 sait donc qu'il peut joindre le sous-réseau "192.0.2.0/24" via un AS-PATH de longueur 2 (3,1) en passant via AS3.

En conclusion : AS5 a donc deux routes : Il va préférer utiliser en priorité la route la plus courte, donc celle via AS3.

Mais dans ce cas comment AS1 peut forcer le trafic à passer via AS2 (par exemple pour des raisons de prix) ? La Figure 2 présente comment AS1 peut artificiellement augmenter la longueur de l'AS-PATH afin d'obtenir un tel résulta : AS1 va émettre une annonce vers AS3 en ajoutant 2 fois son ASN à l'AS-PATH émis. La figure 2 décrit un tel scénario.

Dans ce cas, AS5 reçoit deux routes :

  1. Une de longueur 3 via AS4 avec un AS-PATH=(4,2,1)
  2. Une autre de longueur 4 via AS3 avec un AS-PATH=(3,1,1,1).

AS5 va donc préférer le lien vers AS4 pour envoyer le trafic : C'est bien le lien avec AS2 qui sera utilisé pour arriver sur AS1.

Dans un contexte ou les AS sont maillés, comment les boucles de routage sont-elles détectées ? Assez simplement : Si un routeur reçoit une annonce avec un AS-PATH dans lequel il y a déjà son propre AS-PATH c'est qu'une boucle s'est formée : Il ignore donc la route.

Comme on a pu le voir, l'AS-PATH Prepending permet d'allonger artificiellement la taille de l'AS-PATH, via la répétition du numéro d'AS. Ce mécanisme couplé avec celui de détection de boucle permet d'éviter que le trafic emprunte un AS donné.

La Figure 3 présente un scénario ou AS1 ne souhaite en aucun cas que son trafic transite via l'AS6.

L'annonce de AS3 vers AS6 avec un AS-PATH=(3,1,6) sera ignorée car AS6 pensera qu'une boucle de routage s'est formée. Donc AS5 ne connaitra que deux routes BGP pour joindre AS1 : L'un de longueur 3 via avec un AS-PATH=(4,2,1) et une autre de longueur 4 avec un AS-PATH=(7,3,1,6).

Deux dernières précisions :

  1. Les règles de routage interne à un AS ayant priorité sur celles externes à celui-ci (ou plus simplement, le routage statique est le plus prioritaire), lorsque les paquets arriveront via AS3, le reste de l'AS-PATH (le 6) sera purement et simplement ignoré.
  2. Autre point important que tout administrateur réseau maitrise : Une route plus spécifique aura la priorité. Donc entre deux routes différentes (Par exemple une route en /22 et une autre en /24, ce sera la 2nde en /24 qui aura la préférence).

Si vous m'avez suivi jusqu'ici, vous connaissez ce qui est nécessaire pour comprendre comment détourner du trafic IP à destination d'un AS, l'écouter et le renvoyer ni vu ni connu. Cela sera l'objet d'un prochain article.

PS: Pour toute question ou demande de précisions complémentaires, utilisez la fonction "Commentaires" !!! Par ailleurs, n'hésitez pas à m'indiquer d'éventuelles erreurs que j'aurai pu faire... ou encore me faire  part de toute suggestion visant à améliorer le contenu de ce genre d'article.

Jean-François Audenard

Au sein de la direction sécurité du Groupe Orange, je suis en charge de la veille sécurité et de la sensibilisation à la sécurité. Franchise, optimisme et bonne-humeur sont mes moteurs quotidiens