Académique Documents
Professionnel Documents
Culture Documents
TCP/IP : les attaques externes
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 parefeu en utilisant les spécificités du protocole IP.
Le principe de filtrage du protocole IP par les parefeux 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'entê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'entê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 :
68 octets
Destination address
Options
Source port Destination port
TCP
Sequence number
Le deuxième fragment :
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'entête TCP (port source et destination et le numéro
de séquence). C'est ce fragment qui va être analysé par le parefeu. Le deuxième fragment contiendra
lui la suite de l'entê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
Ces attaques étant historiques, elles sont détectées depuis longtemps par les parefeux 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
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 celuici 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/117abstract.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://blinkylights.org/shimomura25jan95.html
La réaction de Steve Bellovin suite à l'avertissement du CERT, 24 Jan 1995
http://hotwired.wired.com/iagent/95/15/bellovin.html
"IPspoofing Demystified (TrustRelationship 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
Cette attaque nécessite l'écoute passive (sniffing) du
réseau pour récupérer les numéros de séquence
échangés.
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