Sorry, you need to enable JavaScript to visit this website.

Image CAPTCHA
Saisir les caractères affichés dans l'image.

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

Détournement de trafic Internet via protocole BGP : les bases (partie 1/3)
2008-09-152013-07-31sécurité des réseauxfr
Cette série d'articles en 3 volets commencera par un rappel des notions essentielles à la compréhension du protocole de routage BGP.
Publié le 15 Septembre 2008 par Jean-François Audenard dans sécurité des réseaux
détournement de trafic Internet via protocole BGP

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.

5 Commentaires

  • 25 Septembre 2008
    2008-09-25
    par
    Exact. Le commentaire de la figure 2 est incorrect. l'AS-PATH via AS3 a une longueur de 4 et non pas de 5.
    C'est maintenant corrigé : Merci du feedback !
  • 25 Septembre 2008
    2008-09-25
    par
    Maurice marini
    Petit détail :dans le commentaire de la figure 2

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

    la deuxième longueur de route est 4 au lieu de 5
  • 17 Septembre 2008
    2008-09-25
    par
    Vince
    Bravo pour ce premier article fort intéressant. Une piqûre de rappel sur les protocoles de routage et leur fonctionnement était la bienvenue avant d'attaquer (sic!) la suite de ce dossier.
  • 15 Septembre 2008
    2008-09-25
    par
    Exact ! C'est à manier avec grande précaution car ne pas avoir la bande passante veut dire écrouler le réseau : Le meilleur moyen de se faire repérer direct...
    Mais n'allons pas trop vite : Ce 1er article n'avait pas vocation à détailler l'attaque, simplement à mettre en place les bases pour comprendre comment celle-ci se déroule : Ce sera l'objet de la prochaine partie (2/3).
  • 15 Septembre 2008
    2008-09-25
    par
    Caribou
    Ch'est bon cha !

    Mais attention au prétendu pirate qui voudrait détourner le trafic de google ou youtube avec leurs peering à 100 Mb/s. Les routeurs de ce pauvre homme risqueraient vite de chopper une grosse conjonctivite :).

Ajouter un commentaire

comments

  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <br>

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Email HTML

  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
Image CAPTCHA
Saisir les caractères affichés dans l'image.
Changer d'affichage