Vous êtes sur la page 1sur 7

­ 

TCP/IP : les attaques externes ­

Table des matières

Fragments attacks.....................................................................................................................................2

Objectif................................................................................................................................................2

Tiny Fragments....................................................................................................................................2

Fragment Overlapping ........................................................................................................................4

IP Spoofing...............................................................................................................................................5

TCP Session Hijacking.............................................................................................................................7

Aller plus loin

Linux Magazine MISC HS n° 8 

1 / 7
­ TCP/IP : les attaques externes ­

Fragments attacks
Objectif
Passer les protections d'un pare­feu en utilisant les spécificités du protocole IP. 

Le principe de filtrage du protocole IP par les pare­feux est d'appliquer la même règle à tous les fragments d'un 
paquet : le filtrage appliqué au premier fragment détermine cette règle et sera donc appliqué aux autres 
fragments sans vérification supplémentaire. 

Il faut donc créer deux fragments dans lesquels, la demande de connexion TCP n'apparaisse que dans le 
deuxième fragment. Il existe deux méthodes : Tiny Fragments et Fragment Overlapping.

Tiny Fragments
La RFC 791 indique que les paquets d'une taille de 68 octets doivent être routés sans fragmentation.
Ici, les deux champs du protocole IP à analyser sont :

 IHL (Internet Header Length) : ce champ indique la longueur en mots de 32 bits de l'en­tête IP. Le 
champ IHL occupe 4 bits ce qui permet d'indiquer une longueur maximale de 15 mots de 32 bits soit 
60 octets.

 Fragment offset : ce champ indique le décalage en mots de 64 bits du premier octet du fragment par 
rapport au datagramme complet. Ce champ est important puisqu'il permet de reconstituer le 
datagramme d'origine avant fragmentation. 

Le premier fragment Le deuxième fragment
IHL Fragment  DATA  IHL Fragment  DATA 
Offset TCP Offset TCP
15
0 1

15 x 4 = 60 octets 8 octets
l'en­tête IP
60 + 8 = 68 octets
fragment IP

Le paquet TCP de demande de connexion à fragmenter :

Source port Destination port
Sequence number
Acknowledgement number
TCP

U A P R S F

R C S S Y I
Data offset Window
G K H T N N

Checksum Urgent pointer
Options

2 / 7
­ TCP/IP : les attaques externes ­

Le premier fragment :

Version IHL=15 TOS Total length


Identification Flags Fragment offset = 0
TTL Protocol Header checksum
Source address
IP

68 octets
Destination address

Options

Source port Destination port
TCP

Sequence number

Le deuxième fragment :

Version IHL TOS Total length


Identification Flags Fragment offset = 1
TTL Protocol Header checksum
Source address
IP

Destination address

Options

Acknowledgement number
U A P R S F

Data offset R C S S Y I
Window
TCP

G K H T N N

Checksum Urgent pointer
Options

Résumé

L'attaque consiste donc à fragmenter sur deux paquets IP une demande de connexion TCP. Le premier 
fragment ne contient que les 8 premiers octets de l'en­tête TCP (port source et destination et le numéro 
de séquence). C'est ce fragment qui va être analysé par le pare­feu. Le deuxième fragment contiendra 
lui la suite de l'en­tête TCP avec le bit SYN à 1, c'est à dire la demande de connexion.

3 / 7
­ TCP/IP : les attaques externes ­

Fragment Overlapping
La RFC 791 indique aussi que si deux fragments IP se superposent, le deuxième écrase le premier.
Il suffit de créer deux fragments : le premier ne contient aucune demande de connexion et le deuxième 
fragment contient la véritable demande de connexion TCP. Lors de la défragmentation, les données du 
deuxième fragment écrasent celles du premier afin de réassembler une demande de connexion valide.

Le premier fragment :
Version IHL TOS Total length
Identification Flags Fragment offset = 0
TTL Protocol Header checksum
IP

Source address
Destination address
Options
Source port Destination port
Sequence number
Acknowledgement number
TCP

U A P R S F

R C S S Y I
Data offset Window
G K H T N N

Checksum Urgent pointer
Options

Le deuxième fragment :
Version IHL TOS Total length
Identification Flags Fragment offset = 1
TTL Protocol Header checksum
IP

Source address
Destination address
Options
Acknowledgement number
U A P R S F

R C S S Y I
Data offset Window
TCP

G K H T N N

Checksum Urgent pointer
Options

Réassemblage DATA TCP du DATA TCP du


fragment n° 1 fragment n° 2
Conclusion 8 octets

Ces attaques étant historiques, elles sont détectées depuis longtemps par les pare­feux actuels.

4 / 7
­ TCP/IP : les attaques externes ­

IP Spoofing
Le but de cette technique est d'usurper l'adresse IP d'une machine. Cela permet de cacher la source 
d'une attaque : pour provoquer un déni de service ou pour profiter d'une relation de confiance entre 
deux machines. La particularité de cette attaque est qu'elle est réalisée en aveugle (blind spoofing), 
c'est à dire sans « reniflage » du réseau.

On suppose qu'il existe une relation de confiance entre le serveur et le client. C'est souvent le cas pour 
les services de type rlogin ou rsh. En effet, leur mécanisme d'authentification se base uniquement 
sur l'adresse IP source de la machine qui fait appel au service distant : aucun mot de passe ne sera 
demandé.

Rappel

L'établissement d'une connexion TCP (Three Way Handshake) :

Client Serveur

SYN : seq x

SYN : seq y
ACK : ack x+1

ACK : y+1

5 / 7
­ TCP/IP : les attaques externes ­

Attaquant Serveur Client

SYN Flooding SYN
L'attaquant va lancer un  SYN
DoS (Denial of Service), 
SYN
un déni de service, vers 
le serveur. Pour cela,  SYN
il va lancer une série de  SYN
demande de connexion  SYN
afin de saturer la file 
d'attente d'un port TCP du serveur.

Prédiction des numéros  SYN
de séquence
SYN y1 ACK
L'attaquant enchaîne cette attaque ne fonctionne
immédiatement en lançant SYN que sur les systèmes dont la
une série de demande de  pile TCP/IP génère des 
connexion afin le  SYN y2 ACK numéros de séquence prévi­
comportement de la pile  sibles (linéaire ou dépendant
TCP/IP du temps)

IP Spoofing SYN x
L'attaque consiste à ouvrir
spoofing
une connexion sur le port  le client répond au serveur,
souhaité (rsh par exemple) SYN y ACK mais celui­ci est paralysé 
La demande de connexion par le SYN flooding
est réalisée avec l'adresse C'est l'attaquant qui va 
ACK y+1
IP source « spoofée » du répondre par un faux paquet
serveur
spoofing avec le numéro calculé
L'attaquant envoie une le service rsh traite les don­
commande qui lui permet PSH/ACK y+1 reçues. On peut maintenant
d'obtenir des drois echo ++ >> /.rhosts se connecter par rlogin ou
supplémentaires rsh sans spoofing.

Fin de l'attaque
RST
il libère la file  RST
d'attente du serveur ...

Liens
Robert Morris, A Weakness in the 4.2BSD Unix TCP/IP Software, Bell Labs Computer Science, 25 Feb 1985
http://www.pdos.lcs.mit.edu/~rtm/papers/117­abstract.html

Steven M. Bellovin, "Security Problems in the TCP/IP Protocol Suite", April 1989.
http://www.research.att.com/~smb/papers/ipext.pdf

"How Mitnick Hacked Tsutomu Shimomura with an IP Sequence Attack" by Tsutomu Shimomura, 25 Jan 1995
http://blinky­lights.org/shimomura­25jan95.html

La réaction de Steve Bellovin suite à l'avertissement du CERT, 24 Jan 1995
http://hotwired.wired.com/i­agent/95/15/bellovin.html

"IP­spoofing Demystified (Trust­Relationship Exploitation)" by daemon9 for Phrack Magazine n°48 June 1996
http://www.phrack.org/show.php?p=48&a=14

6 / 7
­ TCP/IP : les attaques externes ­

TCP Session Hijacking


Cette attaque permet de rediriger un flux TCP et rend donc possible le « vol » de session. Le vol d'une 
session telnet ou ftp par exemple, se fera après la phase d'authentification. Cette technique, basée 
sur le protocole TCP, crée un état de désynchronisation entre les deux machines d'une session. L'état 
de désynchronisation s'obtient lorsque les numéros de séquence envoyés ne correspondent plus à ceux 
attendus. 

Cette attaque nécessite l'écoute passive (sniffing) du 
réseau pour récupérer les numéros de séquence 
échangés.

Attaquant Client Serveur

Ecoute passive de seq x PSH/ACK y
la session 60 octets
L'attaquant sniffe le trafic seq y PSH/ACK x+60 une session normale 
sur un port TCP (par  qui montre l'échange de don­
20 octets
exemple 23 pour telnet) nées et la synchronisation
seq x+60 PSH/ACK y+20 des numéros seq et ack
30 octets
seq y+20 PSH/ACK x+90
20 octets

TCP Hijacking le serveur accepte et traite
seq x+90 PSH/ACK y+40
L'attaquant va lancer un  les données reçues.
paquet TCP avec le bon 30 octets
numéro de séquence le serveur renvoie un ACK 
attendu par le serveur. pour acquitter les octets 
L'envoi est réalisé avec  seq y+40 ACK x+120 reçus
l'adresse IP source             ??? 
 « spoofée » du client   le client est désyn­
L'attaquant envoie aussi   chronisé, en effet il attend un
des données ce qui lui   ack x+90 seq x+90 ACK y+40 un problème apparaît : 
permet d'injecter une   le client va renvoyer un ACK les numéros de séquence ne
commande  avec le bon numéro de sequence sont plus valides

ACK Storm
Cette désynchronisation seq y+40 ACK x+120
va déclencher une 
« tempête » de ACK seq x+90 ACK y+40
Le problème du ACK Storm
peut être réglé en utilisant
l'ARP Spoofing.
Pour cela, il faut  « empoisonner » le cache ARP (ARP Cache Poisoning)  du serveur en lui indiquant que l'adresse IP 
du client est maintenant associé à l'adresse MAC de l'attaquant.

7 / 7

Vous aimerez peut-être aussi