• Aucun résultat trouvé

Attaques par balayage TCP

Dans le document sécurité réseau (Page 59-65)

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. Il ne s’agit toutefois pas d’une technique d’une grande discrétion, car elle peut générer des traces dans les jour-naux côté système.

Diverses variantes permettent de renforcer la furtivité de telles activités.

Attaque par balayage furtif

Afin de réduire la détection des balayages TCP, les pirates s’appuient principalement sur des faiblesses d’implémentation de la pile TCP/IP au sein du système.

La première définition du balayage furtif a été proposée en 1995 par Chris Klaus dans l’article Stealth Scanning: Bypassing Firewalls/SATAN Detectors. L’auteur y relève l’intérêt de jouer sur certains drapeaux de paquets (URG, PSH, etc.) pour réaliser un balayage de ports discret.

La figure 2.1 illustre le format d’un paquet TCP.

Depuis la parution de cet article, les techniques de balayage ont largement évolué, notamment avec l’apparition du programme Nmap, qui concentre toutes les techniques connues dans un même outil simple d’utilisation.

Attaque par balayage muet (idlescan)

Cette attaque nécessite la complicité, souvent involontaire, d’une troisième machine.

Cette machine est qualifiée de « muette » car elle n’a pour fonction que de capturer le trafic sans émettre de réponses, d’où son nom.

Présentée par « Antirez » dans un article du forum de sécurité Bugtraq, cette technique s’appuie sur une utilisation particulière de la pile TCP/IP du système d’exploitation, mais également sur les principes du balayage SYN.

Pour bien comprendre cette technique, il faut rappeler que tout paquet TCP avec les drapeaux SYN ou RST porte un numéro de séquence IPID (IP Packet IDentifier)

géné-Figure 2.1

Format d’un paquet TCP

l

ralement incrémenté à chaque paquet envoyé. Le pirate utilise cette information pour déterminer combien de paquets de ce type ont été envoyés depuis la dernière connexion.

L’attaque se déroule en trois étapes, comme l’illustre la figure 2.2 :

1. Par l’envoi d’un paquet avec les drapeaux SYN/ACK, le client obtient le numéro de séquence (IPID) de la machine muette, inclus dans le paquet avec le drapeau RST reçu en retour.

2. Un paquet avec le drapeau SYN usurpant l’adresse de la machine muette est envoyé vers le port du serveur, lequel renvoie sa réponse vers la machine muette.

3. Le client redemande à la machine muette son numéro de séquence IP (IPID). S’il est identique, le port du serveur n’est pas en écoute. Sinon, le port du serveur est en écoute, ce qui oblige la machine muette à renvoyer une réponse avec le drapeau RST et donc à incrémenter le numéro de séquence du paquet.

Figure 2.2

L’attaque par balayage muet (idlescan)

Serveur Client

Client

Paquet SYN/ACK Paquet RST avec IPID

Client

Paquet SYN/ACK Paquet RST avec nouvel IPID

Etape 1

Etape 2

Etape 3

Machine muette

Machine muette Machine

muette

Paquet SYN/ACK ou RST Paquet SYN usurpant l’IP source de la machine muette

Attaque par balayage SYN/ACK

Dans cette attaque, abandonnée par la plupart des outils de balayage de ports parce qu’elle engendrait trop de faux positifs, le client envoie directement au serveur un paquet avec les drapeaux SYN/ACK, comme s’il répondait à une demande de session en prove-nance de cette même machine (voir figure 2.3).

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.

L’outil de balayage se comporte alors à l’inverse de d’habitude : au lieu de noter les ports qui écoutent, il relève les ports qui n’écoutent pas, considérant que tous les ports qui n’ont pas répondu sont en écoute.

Attaque par balayage ACK

Principalement dédiée à la détection de règles d’équipements filtrants, cette attaque sert à déterminer si ceux-ci sont dynamiques (stateful) ou s’ils ne savent que bloquer les paquets avec le drapeau SYN.

Comme l’illustre la figure 2.4, un paquet avec le drapeau ACK est envoyé vers le serveur.

Si le port visé n’est pas filtré, un paquet avec le drapeau RST est reçu en retour. Si un paquet ICMP « destination inaccessible » est reçu, il révèle la présence d’un équipement filtrant qui barre le flux en retournant un message ICMP d’erreur. L’absence de réponse signifie également qu’un équipement filtrant est situé entre le client et le serveur.

Attaque par balayage FIN

Sachant qu’un paquet avec le drapeau SYN est incontournable dans l’établissement d’une session TCP, ce drapeau est l’un des plus recherchés par les équipements filtrants ou les outils de détection.

Il est possible, par exemple, de réaliser un balayage au moyen de paquets avec le drapeau FIN, comme l’illustre la figure 2.5. Un paquet FIN est envoyé vers le port du

Figure 2.3

Si port en écoute, aucune réponse sinon paquet RST

Paquet RST = port non filtré Pas de réponse ou ICMP destination

inaccessible = port filtré

serveur visé. Si celui-ci n’écoute pas, un paquet RST est reçu en retour. Sinon aucun paquet n’est reçu.

Cette attaque nécessite cependant d’attendre un certain délai pour considérer le port visé comme ouvert. Selon la bande passante disponible, ce délai peut générer un grand nombre de faux positifs.

Attaque par balayage de Noël, ou Xmas

Cette attaque consiste à « allumer » les drapeaux FIN, URG et PSH dans l’en-tête TCP (voir figure 2.6). Si le port du serveur visé est en écoute, il ne réagit pas à la réception du paquet. Sinon, il renvoie un paquet RST.

Attaque par balayage full Xmas

Dans ce balayage, tous les drapeaux de l’en-tête TCP sont activés, tels SYN, ACK, RST, FIN, URG et PSH.

Le comportement du serveur est le même que dans le cas du balayage Xmas.

Attaque par balayage NULL

Cette attaque se situe à l’opposé du balayage Xmas puisqu’elle envoie un paquet sans aucun drapeau activé.

Le comportement du serveur est cependant le même que dans le cas du balayage Xmas.

Attaque par balayage ACK avec vérification de la taille de la fenêtre TCP Proche du balayage ACK, cette attaque offre la particularité de détecter aussi bien les ports ouverts que ceux qui sont filtrés ou non par un équipement réseau.

Elle s’appuie sur une anomalie de la couche TCP/IP de la plupart des systèmes d’exploi-tation, tels que certaines versions de AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/

Figure 2.5

L’attaque par balayage FIN

Serveur Client

Paquet FIN

Paquet RST ou aucune réponse

Figure 2.6

L’attaque par balayage Xmas

Serveur Client

Paquet avec FIN, URG, PSH

Paquet RST ou aucune réponse

UX, OpenVMS, Digital UNIX, FreeBSD, HP UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD, OpenStep, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX et VxWorks.

Tous ces systèmes définissent une valeur de taille de fenêtre TCP en fonction de l’état du port (voir figure 2.7).

Selon la valeur de la taille de la fenêtre du paquet avec le drapeau RST reçu en réponse, le port est considéré comme écoutant ou non. Si celle-ci est supérieure à zéro, le port écoute ; si elle est égale à zéro, le port n’écoute pas.

Attaque par balayage UDP

Cette attaque a pour but de détecter les services réseau qui écoutent sur un port UDP. Elle s’appuie sur le fait que la réception d’un paquet UDP sur un port en écoute ne doit pas engendrer de réponse, alors que la réception sur un port fermé doit engendrer le renvoi d’un paquet ICMP « port inaccessible ».

La figure 2.8 illustre cette attaque.

De nombreux systèmes d’exploitation ne suivent cependant pas ces règles et ne répon-dent pas toujours avec un paquet ICMP. UDP n’étant pas de surcroît un protocole fiable par nature, ce balayage peut engendrer un fort nombre de faux positifs.

Une variante de cette technique consiste à envoyer un paquet UDP vers le port destina-tion mis à zéro. Ce port ne pouvant jamais être en écoute, un paquet ICMP « port inaccessible » est généralement renvoyé. Dans le cas contraire, elle révèle la présence d’un équipement filtrant.

Attaque par balayage IP

Cette attaque vise à détecter les protocoles IP fournis par le serveur visé. Elle consiste à envoyer un paquet IP brut (raw) ne contenant dans son en-tête IP que le champ Protocole IP. Ce paquet est alors envoyé vers chaque protocole du serveur (voir figure 2.9).

Figure 2.7

L’attaque par balayage ACK avec vérification de la taille de la fenêtre

Serveur Client

Paquet ACK

Paquet RST Window Size >0 = port ouvert Window Size =0 = port fermé

Figure 2.8

L’attaque par balayage UDP

Serveur Client

Paquet UDP

ICMP port inaccessible ou aucune réponse

En cas de réponse « protocole inaccessible » par un paquet ICMP, c’est que le protocole n’est pas disponible. Sinon, le serveur sait communiquer sur le protocole visé.

La présence d’un équipement filtrant bloquerait toutes les réponses possibles et ferait croire à l’outil de balayage que le serveur sait converser sur tous les protocoles, comme le montre le tableau 2.1.

Figure 2.9

L’attaque par balayage du protocole IP

Serveur Client

Paquet brut (raw) sans en-tête de protocole ICMP protocole inaccessible

Tableau 2.1 Valeurs du champ protocole dans une trame IP

0 HOPOPT, IPv6 Hop-by-Hop Option

1 ICMP (Internet Control Message Protocol) 2 IGAP (IGMP for user Authentication Protocol)

IGMP (Internet Group Management Protocol) RGMP (Router-port Group Management Protocol)

3 GGP (Gateway to Gateway Protocol)

4 IP in IP encapsulation

5 ST, Internet Stream Protocol

6 TCP (Transmission Control Protocol)

7 UCL, CBT

8 EGP (Exterior Gateway Protocol)

9 IGRP (Interior Gateway Routing Protocol)

10 BBN RCC Monitoring

11 NVP (Network Voice Protocol)

12 PUP

13 ARGUS

14 EMCON, Emission Control Protocol

15 XNET, Cross Net Debugger

16 Chaos

17 UDP (User Datagram Protocol)

27 RDP (Reliable Data Protocol)

28 IRTP (Internet Reliable Transaction Protocol) 29 ISO Transport Protocol Class 4

35 IDPR (Inter-Domain Policy Routing Protocol) 36 XTP (Xpress Transfer Protocol)

37 Datagram Delivery Protocol

Une variante de cette attaque consiste à envoyer au serveur des paquets avec des en-têtes IP incorrects. Selon les RFC, une machine doit vérifier l’intégrité des champs Numéro de version et Checksum des paquets qu’elle reçoit, alors qu’un routeur doit simplement vérifier le checksum. Si une machine reçoit un paquet avec des valeurs erronées, elle se doit de renvoyer un paquet ICMP « problème de paramètre ». Cependant, certaines implémentations de routeurs n’ont pas le comportement attendu et faussent les résultats d’un tel balayage.

Dans le document sécurité réseau (Page 59-65)