TOR: The Onion Router (Part 2/2) -> Les attaques

Equipe technique Kamea
12/08/2023
2 mins de lecture

Introduction

Compte tenu du contexte dans lequel TOR est utilisé, la recherche de vulnérabilités dans son réseau est un domaine de recherche très actif. Dans cette section, nous commencerons avec une vue d’ensemble des différentes familles d’attaques avant de détailler quelques attaques qui ont attiré notre attention.


4. Vue d’ensemble

Puisque le but du protocole oignon et d’empêcher l’identification et la localisation de ses utilisateurs, les attaques sur TOR visent principalement la désanonymisation. Ici, nous explorons une vue d’ensemble des attaques connues, classifiés en catégories par souci de brièveté.

De ce fait, nous classons les techniques de désanonymisation en deux catégories :

– Les attaques passives ou actives : l’attaquant peut observer le trafic de manière passive ou le manipuler activement

– les attaques single-end ou end-to-end: l’attaquant est en mesure d’observer et contrôler les circuits TOR au niveau du relai d’entrée, de sortir ou les deux.

Compte tenu du contexte dans lequel TOR est utilisé, la recherche de vulnérabilités dans son réseau est un domaine de recherche très actif. Dans cette section, nous commencerons avec une vue d’ensemble des différentes familles d’attaques avant de détailler quelques attaques qui ont attiré notre attention.


Figure 9 : Cartographie des attaques sur TOR (2016)


Attaque par corrélation (attaque end-to-end passive)
Dans une attaque par corrélation, un attaquant est à la recherche d’une corrélation dans le trafic entre un nœud d’entrée et un nœud de sortie, car il peut alors conclure que les nœuds d’entrée et de sortie participent tous deux dans le circuit. Puisque le nœud d’entrée connaît le client et le nœud de sortie connaît le serveur, l’attaquant est en mesure de confirmer que ces deux sont en communication.

Attaque de congestion (attaque end-to-end active)
Dans une attaque de congestion, un attaquant essaye de déterminer l’identité des routeurs oignons qui composent un circuit construit en ciblant un client TOR. Pour atteindre ce but, l’attaquant congestionne les relais un par un et recherche une différence de latence en encombrant les relais pendant que le client télécharge un fichier volumineux depuis un site contrôlé par l’attaquant, jusqu’à ce qu’il détecte une diminution dans la vitesse de téléchargement. Une autre méthode est l’injection d’un script qui va exécuter périodiquement des requêtes HTTP et encombrer les relais jusqu’à ce que la fréquence des requêtes diminue.

Attaque de synchronisation (attaque end-to-end active)
Dans une attaque de synchronisation, un attaquant essaye de corréler des modèles de flux dans le trafic circulant entre un nœud d’entrée et un nœud de sortie. L’attaquant peut déterminer avec quel serveur un client est en train de communiquer.

Attaque par empreinte (attaque single-end active)
Dans une attaque par empreinte, un attaquant utilise le fait que le trafic a des caractéristiques très distinctes. Ces empreintes de trafic peuvent être utilisées pour identifier la page web qu’un client demande, si le client se connecte à un service caché ou pour savoir quel chemin le trafic a emprunté dans le réseau.

Attaque par déni de service
Les attaques par déni de service (DoS – Denial of Service) ne sont pas utilisées pour désanonymiser un utilisateur, mais pour inonder le réseau d’une victime, rendant la connexion très lente voir non disponible. Comme les relais légitimes peuvent être rendus non disponibles, cela peut être utilisé pour forcer des utilisateurs légitimes à utiliser des relais malveillants. Normalement, la victime d’une attaque par déni de service distribué (DDoS – Distributed Denial of Service) reçoit beaucoup de trafic UDP provenant de nombreuses sources, mais comme TOR utilise uniquement des flux TCP, ce type d’attaque n’est pas possible sur TOR.

Attaque de soutien
Ces attaques ne visent pas directement à désanonymiser un utilisateur TOR ou perturber le réseau TOR, mais servent plutôt à aider à la réalisation d’une autre attaque plus tard.

Attaque révélant des services cachés
Il peut être intéressant pour un attaquant de révéler un service caché. Ce type d’attaque est particulièrement attirant pour un gouvernement essayant de localiser un service caché.

4.1 – Raptor – Attaque de soutien/par corrélation (2015)

L’attaque RAPTOR (Routing Attacks on Privacy in TOR) découverte en 2015 considère un attaquant avec assez de moyens pour compromettre un AS (Autonomous System) avec ou sans son consentement.

Raptor est une combinaison de trois attaques individuelles qui exploitent le protocole BGP (Border Gateway Protocol). Premièrement, l’attaque Raptor analyse de façon asymétrique le trafic : de ce fait le client et le serveur peuvent être désanonymisés dès que l’attaquant est en mesure d’observer le trafic entrant et sortant au niveau du client et du serveur. Les numéros de séquence des paquets et/ou numéro de séquence ACK peuvent être corrélés, car les en-têtes TCP des paquets ne sont pas chiffrés des deux côtés du circuit et peuvent de ce fait être interceptés par un AS malveillant. Une telle analyse du trafic est avantageuse, car une seule direction du trafic est nécessaire des deux côtés du circuit : cette propriété augmente la surface d’attaque, car le trafic entrant et sortant peuvent tous deux passer à travers différents AS.


Figure 10 : L’AS5 voit le trafic allant du client au nœud d’entrée et le trafic allant du nœud de sortie au serveur et peux donc dés-anonymiser le trafic

Deuxièmement, l’attaque Raptor exploite le fait que BGP redéfinit les chemins quand cela est nécessaire, par exemple lorsqu’un lien ou routeur semble ne plus être fonctionnel. De ce fait, chaque fois qu’un chemin est changé, la probabilité que le trafic passe par un AS malveillant augmente et une seule analyse de trafic est nécessaire pour corréler un client à un serveur.

Figure 11 : L’AS5 peut désanonymiser le trafic. Si le lien entre l’AS4 et l’AS5 est brisé, l’AS3 pourra également désanonymiser le trafic après la redéfinition du chemin.

Troisièmement, l’AS malveillant peut effectuer un BGP hijack ou une attaque par interception BGP. Pour se faire, l’AS malveillant annonce comme le sien un préfixe IP qui ne lui appartient pas. Il est alors en mesure de capturer du trafic destiné à une plage IP. Dans le cas d’une interception BGP, le trafic est retransmis jusqu’à sa destination, ce qui n’est pas le cas du BGP hijack. Une telle attaque est efficace pour lier un client à un nœud d’entrée quand ce dernier est connu. Il est alors possible de repérer la procédure avec le préfixe IP du nœud d’entrée, rendant possible la découverte de toutes les IP communicant avec lui.

Figure 12 : L’AS3, qui voit déjà le trafic entrant, intercepte le trafic contenant le trafic sortant (AS4). Il peut alors désanonymiser la communication TOR.

Figure 13 : Analyse asymétrique montrant une forte corrélation entre les échanges client/serveur

4.2 – Sniper – Attaque par déni de service (2014)

En 2014, une nouvelle attaque DoS a été publiée. Elle est appelée Sniper, car l’attaquant reste caché en désactivant des routeurs de manière ciblée et s’est montrée particulièrement destructrice. Cette attaque se base sur les mécanismes de congestion et de contrôle de flux de TOR pour surcharger la mémoire tampon d’un routeur.

Afin de comprendre le principe de l’attaque, il est important de savoir comment fonctionnent les mécanismes de contrôle de flux et de congestion de Tor : en effet, Tor implémente un mécanisme de fenêtre de bouclage de bout en bout pour contrôler la quantité de données dans le réseau. Le nœud de sortie comprend un compteur de fenêtre de paquet pour chaque flux sortant initialisé à 500 et un compteur de fenêtre de paquet total pour tous les flux combinés initialisé à 1000. Pour chaque cellule injectée dans le circuit par le noeud de sortie, le compteur de fenêtre de paquet du flux correspondant et le compteur de fenêtre de paquet du circuit sont décrémentés de un. Le nœud de sortie arrête d’injecter les cellules de tous les flux lorsque le circuit de fenêtre de paquets atteint zéro. Le nœud de réception stocke une fenêtre glissante des paquets reçus et, dès que cette fenêtre est pleine, envoie une cellule SENDME au nœud de sortie ; ce dernier augmente alors les compteurs de fenêtres de paquets et redémarre le processus de transmission.

Cette opération peut être utilisée pour attaquer le nœud d’entrée ou de sortie de deux manières différentes. Dans sa première déclinaison, l’attaquant attendant de couper un nœud d’entrée forme un circuit de manière à ce qu’un nœud lui appartenant soit utilisé en tant que sortie. Comme TOR relègue le contrôle du flux et de la congestion au nœud de sortie, et comme le nœud de sortie est contrôlé par l’attaquant dans ce contexte, l’attaquant peut envoyer autant de données qu’il le souhaite en ignorant les limitations. L’astuce ici est que le client ne lit jamais la mémoire tampon et le nœud de sorties continue d’envoyer des données : elles s’accumulent dans la mémoire tampon du nœud d’entrée ce qui le fait finalement planter.

Figure 14 : L’attaque Sniper ciblant le nœud d’entrée marqué d’un X


L’autre déclinaison, permettant de cibler le nœud de sortie, fonctionne d’une manière similaire. Cette fois, le client envoie une grande quantité de données à un serveur sous contrôle de l’attaquant, mais ce dernier ne les lis jamais : les data s’accumulent dans la mémoire tampon du nœud de sortie et le nœud finit par planter.

Une variante encore plus efficace nécessite seulement le contrôle d’un client : comme le nœud de sortie n’a qu’une limite de 1000 cellules – après laquelle il arrête de stocker des données dans sa mémoire tampon et ferme le circuit – ce qui n’est pas le cas du nœud intermédiaire ou d’entrée, qui continueront de remplir leur mémoire tampon tant que le client le demandera. En envoyant continuellement des cellules SENDME au nœud de sortie, la limite de son compteur de fenêtre de paquet total de 1000 ne sera jamais atteinte. Au final, ce nœud de sortie injectera continuellement des cellules dans le circuit, qui ne seront pas lues par le client et s’accumuleront dans la mémoire tampon du nœud d’entrée qui finira par planter.

4.3 – Sybil – Attaque de soutien (2016)

En juin 2010, le nombre routeurs Tor actifs augmente de manière significative en quelques heures. Il s’avère que quelqu’un a paramétré plusieurs centaines de relais TOR sur des machines hébergés sur PlanetLab. Une telle action peut sembler innocente, mais peut en réalité être utilisée pour réaliser une attaque Sybil sur le réseau Tor.

Dans cette attaque, un attaquant contrôle de nombreuses identités virtuelles dans le but de gagner une influence disproportionnée dans le réseau. L’efficacité d’un grand nombre d’attaques sur Tor dépend du poids de consensus (?) de l’attaquant, représenté par le volume de trafic qu’il peut observer. Quand ce volume augmente, beaucoup d’autres attaques deviennent plus simples à réaliser, comme les attaques par corrélation ou par synchronisation.

Les défenses pratiques contre les attaques Sybil sont difficiles à implémenter, car ces attaques seront toujours possibles dans les réseaux anonymes sans autorité centrale. Cependant, comme les relais Sybil sont généralement vérifiés et ont l’air similaires, il existe certaines heuristiques qui peuvent être utilisées pour détecter une attaque Sybil. Les relais qui font partie d’une attaque Sybil rejoignent et quittent souvent le réseau de manière simultanée, ont des paramètres de configuration communs et peuvent fréquemment changer leur empreinte identitaire pour manipuler la table de hachage distribuée de Tor.

Prendre rendez-vous