2
2
2
Introduction
Ce chapitre décrit les différentes attaques susceptibles d’affecter un réseau et les systèmes qui
le composent. Avec la généralisation d’Internet et des moyens de communication modernes,
une nouvelle forme d’insécurité s’est répandue, qui s’appuie sur l’utilisation de codes
informatiques pour perturber ou pénétrer les réseaux et les ordinateurs.
Les attaques touchent généralement les trois composantes suivantes d’un système : la couche
réseau, en charge de connecter le système au réseau, le système d’exploitation, en charge
d’offrir un noyau de fonction au système, et la couche applicative, en charge d’offrir des
services spécifiques.
Toutes ces composantes d’un système constituent autant de moyens de pénétration pour des
attaques de toute nature.
Les protocoles réseau sont encore jeunes, et aucun d’eux n’a été conçu pour tenir compte des
problèmes de sécurité. Le protocole IP, par exemple, ne comporte pas de couche sécurité. La
plupart des protocoles utilisés dans un réseau, tels SNMP (Simple Network Management
Protocol) pour la supervision ou BGP (Border Gateway Protocol) pour le routage,
n’implémentent pas de véritable couche de sécurité et s’exposent à diverses attaques, comme
les attaques par fragmentation, déni de service, etc.
Comme tout effet a une cause, les attaques réseau s’appuient sur divers types de faiblesses,
que l’on peut classifier par catégorie
1
Chapitre 3 : Les attaques réseau
Les attaques visant à établir la cartographie d’un réseau ont pour but de dresser les artères de
communication des futurs systèmes cibles. Elles ont recours pour cela à des outils de
diagnostic tels que Traceroute, qui permet de visualiser le chemin suivi par un paquet IP d’un
hôte à un autre.
Traceroute utilise l’option durée de vie, ou TTL (Time To Live) du paquet IP pour émettre un
message ICMP time_exceeded (temps dépassé) pour chaque routeur qu’il traverse. Sachant
que chaque routeur qui manipule un paquet décrémente le champ TTL, ce champ devient un
véritable compteur de tronçon et permet de déterminer l’itinéraire précis suivi par les paquets
IP vers un système cible,
Traceroute crée un paquet avec les adresses source et destination et une valeur de durée de vie
TTL initiale (nombre de passerelles traversées) égale à 1. Ce paquet s’arrête donc au premier
routeur rencontré, et le routeur envoie un message d’erreur ICMP (time_exceeded).
Traceroute enregistre cette information et crée un nouveau paquet avec un TTL de 2. De cette
façon et une fois le système cible atteint, une erreur ICMP est générée par ce système cible,
et Traceroute affiche la liste des passerelles traversées.
Certaines attaques visent à identifier tous les systèmes présents dans le but de dresser les
futurs moyens de pénétration du réseau ou des systèmes qui le composent, Il existe pour cela
différentes techniques de balayage des systèmes :
2
Chapitre 3 : Les attaques réseau
Similaire au balayage ICMP, sa spécificité est de s’appuyer sur le protocole TCP. Le client
envoie un paquet SYN vers un port réseau particulier de l’adresse IP du serveur. Si le port est
en écoute, un paquet SYN/ACK est reçu en retour. Sinon, la réception d’un paquet RST
signifie qu’il n’y a pas de service en écoute sur le port. Le client envoie en réponse un paquet
RST pour terminer la connexion.
Si aucune réponse n’est reçue en retour, c’est qu’il existe un équipement filtrant entre le
serveur et le client ou qu’il n’y a aucune machine derrière l’adresse IP visée.
Cette technique est cependant si peu discrète, que des variantes ont été élaborées pour
améliorer le balayage en jouant sur le principe de fonctionnement de la pile TCP/IP.
Il est également possible de lancer des requêtes spécifiques afin de forcer ces mêmes routeurs
à répondre. Par exemple, des requêtes peuvent s’appuyer sur une demande ICMP de
découverte de routeur (ICMP router discovery) ou des requêtes de routage (OSPF, BGP, etc.).
Un pirate peut aussi envoyer des requêtes IRDP (ICMP Router Discovery Protocol),
également appelées sollicitations de routeur (router solicitations), vers l’adresse de broadcast
afin de connaître la route par défaut du réseau.
Lorsqu’un pirate désire établir la cartographie d’un réseau, il rencontre généralement sur son
chemin un équipement filtrant. Celui-ci peut être un routeur avec des règles de filtrage ou un
pare-feu.
3
Chapitre 3 : Les attaques réseau
Dans les deux cas, des techniques permettent de traverser les filtres de cet équipement, par
l’exploitation d’un bogue, par exemple, ou d’une faiblesse de configuration.
Lorsqu’un pare-feu n’est qu’un simple routeur utilisant des listes de contrôle d’accès (ACL)
ou un pare-feu qui ne peut détecter qu’un flux correspond au trafic retour d’une session
sortante déjà initiée (le pare-feu est alors dit « stateful »), il est possible de passer outre les
règles de filtrage appliquées en usurpant (spoofing) le port source du paquet émis (source
porting).
Deux techniques permettent de jouer sur la fragmentation des paquets : celle dite par Tiny
Fragments et celle par Fragment Overlapping.
L’attaque par Tiny Fragments consiste à fragmenter sur deux paquets IP une demande
de connexion TCP ou d’autres demandes sur une machine cible tout en traversant et en
déjouant (par le mécanisme de fragmentation) un filtrage IP.
Le premier paquet IP contient des données telles que les huit premiers octets de l’en-
tête TCP, c’est-à-dire les ports source et destination et le numéro de séquence. Le
second paquet contient la demande de connexion TCP effective (flag SYN à 1 et flag
ACK à 0).
Les premiers filtres IP appliquaient la même règle de filtrage à tous les fragments d’un
paquet. Le premier fragment n’indiquant aucune demande de connexion explicite, le
filtrage le laissait passer, de même que tous les fragments associés, sans davantage de
contrôle sur les autres fragments. Lors de la défragmentation au niveau IP de la
machine cible, le paquet de demande de connexion était reconstitué et passé à la
couche TCP. La connexion s’établissait alors malgré le filtre IP,
4
Chapitre 3 : Les attaques réseau
Le premier paquet IP contient les données de l’en-tête TCP avec les indicateurs à 0. Le
second paquet contient les données de l’en-tête TCP avec la demande de connexion
TCP (flag SYN à 1 et flag ACK à 0).
Grâce à une table d’écoute (sniffer), il est possible d’intercepter les trames reçues par la carte
réseau d’un système pirate et qui ne lui sont pas destinées.
Grâce à des outils tels qu’Ethereal ou WinDump/TCPDump, le sniffer peut analyser tous les
paquets IP ainsi que les protocoles contenus dans les données du paquet. Par exemple, un
sniffer peut analyser un paquet Ethernet susceptible de contenir un paquet IP, qui lui même
pourrait contenir un paquet de type TCP, lequel à son tour pourrait contenir un paquet HTTP
renfermant des données HTML.
Pour atteindre cet objectif, le principe du VLAN (Virtual LAN) a été développé. À la base, un
port du commutateur est assigné à un VLAN particulier, et seuls les ports du même VLAN
peuvent s’échanger de l’information. Dans le but d’améliorer le confort pour l’administrateur
et la qualité de service (redondance, etc.), des fonctionnalités supplémentaires ont vu le jour,
avec leurs faiblesses. Ainsi, une attaque ARP spoofing peut permettre à une machine de
recevoir des données qu’elle n’est pas censée recevoir.
5
Chapitre 3 : Les attaques réseau
Par exemple, la technique dite du saut de VLAN (VLAN hopping) consiste pour le pirate à
envoyer vers son port des paquets 802.1q ou ISL (Inter Switch Link) afin qu’il devienne un
port « trunk », port utilisé par les commutateurs pour partager des VLAN. C’est ce qu’illustre
la figure suivante.
Comme son nom l’indique, l’attaque ARP spoofing s’appuie sur le protocole ARP (Address
Resolution Protocol), qui implémente le mécanisme de résolution d’une adresse IP (32 bits)
en une adresse MAC (48 bits) pour rediriger le trafic réseau de un ou plusieurs systèmes vers
le système pirate.
Lorsqu’un système désire communiquer avec ses voisins sur un même réseau (incluant la
passerelle d’accès à d’autres réseaux), des messages ARP sont envoyés afin de connaître
l’adresse MAC des systèmes voisins et d’établir ainsi une communication avec un système
donné.
Sachant que chaque système possède localement une table de correspondance entre les
adresses IP et MAC des systèmes voisins, la faiblesse d’authentification du protocole ARP
permet à un système pirate d’envoyer des paquets ARP réponse au système cible indiquant
que la nouvelle adresse MAC correspondant à l’adresse IP d’une passerelle est la sienne.
6
Chapitre 3 : Les attaques réseau
Le système du pirate reçoit donc tout le trafic à destination de la passerelle. Il lui su ffit
d’écouter ou de modifier passivement le trafic et de router ensuite les paquets vers leur
véritable destination.
L’attaque IP spoofing consiste à se faire passer pour un autre système en falsifiant son adresse
IP. Le pirate commence par choisir le système qu’il veut attaquer. Après avoir obtenu le
maximum de détails sur ce système cible, il détermine les systèmes ou adresses IP autorisés à
se connecter au système cible. Le pirate procède ensuite aux étapes illustrées à la figure II.5
pour mener à bien son attaque sur le serveur cible en utilisant l’adresse IP de la machine A.
L’attaque man-in-the-middle consiste à faire passer les échanges réseau entre deux systèmes
par le biais d’un troisième, sous le contrôle du pirate. Ce dernier peut transformer à sa guise
7
Chapitre 3 : Les attaques réseau
les données à la volée, tout en masquant à chaque acteur de l’échange la réalité de son
interlocuteur.
Pour mettre en œuvre l’échange réseau approprié, il faut soit que la machine du pirate se
trouve physiquement sur le chemin réseau emprunté par les flux de données, soit que le pirate
réussisse à modifier le chemin réseau afin que sa machine devienne un des points de passage.
Relais transparent. La machine du pirate transforme les données à la volée. Elle veut rester
la plus transparente possible et se comporte comme un routeur, conservant toutes les
caractéristiques des paquets dont elle assure le transit, à l’exception du contenu. En termes
d’adresses IP, A et B sont réellement en relation l’une avec l’autre.
Relais applicatif. La machine du pirate assure l’échange entre les deux machines A et B. A
parle avec la machine du pirate, laquelle parle avec B. A et B n’échangent jamais de données
directement. Cette méthode est nécessaire pour les attaques vers SSL.
Hijacking. La machine du pirate utilise la session engagée entre les deux machines A et B
afin que ce soit elle (la machine du pirate) qui soit en session avec la machine B. A perd la
session avec B, et la machine du pirate continue la session engagée par A sur B.
Le détournement (hijacking) des sessions TCP permet de rediriger un flux TCP en outre
passant les authentifications nécessaires à l’établissement des sessions (Telnet, FTP, etc.).
Cette attaque porte de manière plus spécifique sur l’analyse des numéros de séquences et des
numéros d’acquittements relatifs aux paquets TCP.
8
Chapitre 3 : Les attaques réseau
L’attaque par hijacking d’une session TCP crée un état de désynchronisation de chaque côté
de la connexion TCP, permettant le vol de session par un pirate.
Dans les premiers grands réseaux, les tables de routage étaient statiques et donc maintenues à
jour par des techniciens de bout en bout. De nos jours, les mises à jour des tables de routage et
le calcul du meilleur chemin sont automatiquement propagés sur le réseau par les protocoles
de routage.
IGP (Interior Gateway Protocol) et EGP (Exterior Gateway Protocol) sont les deux grandes
familles de protocoles de routage dans les réseaux IP. Un réseau de routage est découpé
généralement en systèmes autonomes, dits AS (Autonomous System). Dans un système
autonome, le protocole de routage utilisé est de type IGP. Pour les échanges de routage entre
systèmes autonomes différents, le protocole de routage utilisé est de type EGP.
Le protocole OSPF (Open Shortest Path First) est un protocole de routage de type IGP
permettant de gérer les routes internes à un AS.
Dans les spécifications d’OSPF v2, le champ réservé pour le numéro de séquence est un entier
signé de 32 bits utilisé pour détecter les annonces vieilles ou dupliquées. Lorsqu’un routeur
reçoit un LSA (Link State Advertisement), la valeur du numéro de séquence est comparée à
celle de l’annonce en cours afin de savoir lequel est le plus récent. Si les valeurs sont
différentes, l’annonce avec le numéro de séquence le plus élevé est conservée.
Un routeur utilise 0x80000001 comme valeur de départ lorsqu’il envoie un LSA (la valeur
0x80000000 étant réservée), puis il incrémente le numéro de séquence d’une unité à chaque
nouvelle annonce envoyée.
En théorie, le LSA avec la valeur maximale devrait être purgé du domaine de routage.
Malheureusement, du fait de bogues d’implémentation, ce n’est pas le cas. Un pirate qui
envoie un LSA avec un numéro de séquence maximal provoque l’ajustement du routage selon
les informations fournies dans le LSA. De plus, toutes les mises à jour suivantes sont ignorées
par les routeurs.
9
Chapitre 3 : Les attaques réseau
Le déni de service, ou DoS (Denial of Service), est une attaque qui vise à rendre indisponible
un service, un système ou un réseau. Ces attaques s’appuient généralement sur une faiblesse
d’implémentation, ou bogue, ou sur une faiblesse d’un protocole.
L’inondation est la méthode la plus classique pour empêcher un réseau d’assurer sa mission.
Son principe de fonctionnement est le suivant :
Une ou plusieurs machines inondent le réseau avec des paquets réseau afin de saturer
la bande passante de celui-ci.
Une fois que toute la bande est occupée, les autres machines ne peuvent plus travailler,
ce qui génère une situation de déni de service.
L’inondation peut recourir à différentes méthodes. La plus classique est l’inondation ping
(Ping flooding), une machine envoyant des paquets ping ICMP request et attendant en
réponse un paquet ICMP reply. Sans mention d’un délai pour l’obtention de la réponse, la
machine envoie ses paquets aussi vite qu’elle le peut, saturant ainsi le réseau.
Ces techniques consistent à inonder le réseau avec des ping qui n’utilisent que des adresses de
broadcast. Pour un paquet envoyé, toutes les machines d’un réseau répondent, ce qui
augmente la saturation du réseau.
Du fait de l’envoi des paquets ICMP avec une fausse adresse source vers une adresse de
broadcast, chaque machine appartenant au réseau couvert par le broadcast répond aux
systèmes victimes ou aux systèmes fictifs. Comme le pirate n’attend pas de trafic retour, il
peut bombarder un ensemble d’adresses de broadcast et générer un trafic important par
phénomène d’amplification.
La différence entre l’attaque smurf et l’attaque fraggle est que cette dernière utilise le
protocole UDP.
La technique d’inondation SYN est identique à celle du balayage SYN, à la différence près
qu’elle est utilisée à des fins de déni de service.
Nous avons vu que le principe du balayage semi-ouvert consistait à ce que le client ne termine
pas la session TCP par l’envoi d’un paquet RST. Ainsi, le serveur reste dans un état
intermédiaire, dans lequel la session n’existe pas réellement puisqu’elle est en cours
d’établissement. Dans cet état, le serveur doit réserver des ressources (réseau, mémoire, CPU,
etc.) pour le traitement de la session TCP et attendre la fin du handshake.
10
Chapitre 3 : Les attaques réseau
Tous les serveurs supportent un nombre maximal de sessions TCP en cours. Lorsqu’une
session est terminée, les ressources associées à la session sont remises à disposition du
système d’exploitation. Lorsque la session n’est pas encore établie, le système prend la peine
de faire patienter les paquets manquants, estimant qu’ils sont simplement retardés par le
réseau. Ce délai d’attente pour passer les différents états de libération de la session est
paramétrable mais prend généralement une bonne minute.
L’envoi de paquets SYN par un pirate vers un serveur, une opération très rapide puisque le
pirate n’attend pas de réponse de celui-ci, engendre une saturation des ressources réseau de la
victime, laquelle ne peut plus dès lors assurer sa mission.
Avant toute chose, le pirate doit déterminer la liste des services disponibles sur le système
cible. Pour y parvenir, il dispose de plusieurs techniques, telles que le balayage de ports, la
prise d’empreintes TCP/UDP/ ICMP/IP et l’interrogation de services particuliers.
Le balayage de ports TCP (ou liste des services) consiste à contacter tous les ports d’un
système cible afin de déterminer les services accessibles.
Dans cette attaque, le client envoie directement au serveur un paquet avec les drapeaux
SYN/ACK, comme s’il répondait à une demande de session en provenance de cette même
machine.
Le serveur répond par un paquet avec le drapeau RST si le port visé n’est pas en écoute.
Sinon, le paquet est simplement jeté (dropped) sans qu’une réponse soit renvoyée.
Parmi les informations que doit récolter un pirate, celles concernant le système d’exploitation
du serveur visé sont primordiales. Diverses techniques d’attaques d’une efficacité variable
permettent d’y parvenir. Grâce aux spécificités des implémentations de la pile TCP/IP de
11
Chapitre 3 : Les attaques réseau
chaque constructeur, il est possible de déterminer avec une bonne précision le système
d’exploitation d’un système.
L’empreinte TCP : Lors de l’échange de paquets TCP pour l’ouverture d’une session entre
deux ordinateurs, des attributs sont définis par la pile TCP/IP de chaque système
d’exploitation. Sachant que chaque implémentation d’une pile IP/TCP est généralement
spécifique du système d’exploitation considéré, il est possible de détecter ce dernier par un
court échange de paquets TCP.
Exemple : Sondage par les drapeaux TCP. Parce que chaque système d’exploitation a une
implémentation unique de la pile TCP/IP, l’échange de messages en faisant varier les
drapeaux TCP permet de constituer une source d’information solide sur le système
d’exploitation du système visé.
Les attaques précédentes ne visent qu’à obtenir des informations. Avec ces données, le pirate
dispose d’une liste des points d’entrée du système visé, qu’il peut ensuite exploiter pour tenter
de le pénétrer.
Les attaques système s’appuient sur divers types de faiblesses, telles que les Faiblesses
d’authentification, les Faiblesses de configuration, les Faiblesses des langages…etc.
12