Ip Hijacking
Présentation:
Nous
allons montrer au travers d un exemple une faiblesse de TCP/IP. Le but est de
désynchroniser une connection utilisant le protocole TCP et de la reprendre
à son compte. Pour ce faire il faut qu'une des deux stations dialoguant
sois sur le meme sous réseau que la machine attaquante. (ou que ses paquets
soient routes par votre sous réseau, les routeurs ont parfois des problémes
avec leur table de routages ;) ).
Note:
la
machine attaquante est la station qui va provoquer la désynchronisation.
Préambule:
Il
est nécessaire de parfaitement maitriser le protocole TCP/IP pour comprendre
cette méthode(notemment l'evolution des numéros de séquences
au cours du temps).
Rappel:
a). Méthode
de synchronisation d'une connection
(Three Way Handshake).
A
------SYN: Ox0F-(0)-------------------> B Phase 1
A
<------SYN: 0x0A---ACK: 0X0F---(0) --- B Phase 2
A
------ACK: OXOA--(0)----------------->B Phase 3
Schema
A.
Note: A Machine cliente faisant la demande de synchronisation.
B Machine Serveur , répondant a la demande de synchronisation de A.
- La machine A initialise une connection avec la
machine B. C'est la phase 1, elle envoie son numéro de séquence
initiale(NSI) a la machine B en activant le flag SYN(valeur hexa 0X02) et 0
octets de datas. La machine B réceptionne ce paquet et l'accepte. Ceci
est confirmé par la phase 2.
- En phase 2 la machine B acknowledge
le paquet reçu en phase 1(elle a active son flag ACK(valeur hexa 0X10)
et le numero de sequence associe a l'ACK correspond a celui envoye par la machine
A en phase 1). La machine B transmet également son NSI lors de cette
phase.
- En phase 3 La machine A acknowledge le paquet envoyé
en phase 2 par la machine B. A l'issu de ces trois phases les deux machines
ont synchronisés leur numéros de séquences et peuven initialiser
une communication en TCP.
b). Evolution des numeros de séquences dans le temps.
A
--------SEQ: 0X01--ACK/PSH: 0X02---(10)----> B Etape 1
A
<-------SEQ: 0X02--ACK/PSH: OXOB--(20)----- B Etape 2
A
--------SEQ: 0X0B--ACK/PSH: OX16--(15)-----> B Etape 3
Etc
...
Schema
B.
Note: Nous supposons que la phase de synchronisation est passée,
les stations A et B se transmettent des datas.
Nous remarquons un nouveau type de flag le flag PSH(Push, valeur hexa 0X08), il signifie que les datas doivent etre remontés a la couche applicative.
- A l'ETAPE 1 la machine A envoi 10 octets de datas
a la machine B.
- La machine B a accepter ce paquet, ceci est confirme
a l'ETAPE 2: Valeur de l'ACK: 0X01+10=0X0B
Lors de l'ETAPE 2 la machine B
transmet 20 octets de datas a la machine A.
- A l'ETAPE 3 la machine
valide le fait qu'elle a accepte le paquet envoyé par la machine B a
l'ETAPE 2. ACK=0X02+20=0X16
Description de l'attaque en elle meme:
A
--------SEQ: 0X01--ACK/PSH: 0X02---(10)----> B Etape 1
A
<-------SEQ: 0X02--ACK/PSH: OXOB--(20)----- B Etape 2
A
--------SEQ: 0X0B--ACK/PSH: OX16--(15)-----> B Etape 3
A
<------SEQ: 0X16----ACK/PSH: 0X1A--(0)---- B Etape 4
Wk
------SEQ: 0X1A---ACK/PSH: 0X16--(5)-----> B Etape 5 Blurp
A
<-----SEQ: 0X1B----ACK/PSH: 0X1A (3)------ B Etape 6
Wk
-----SEQ: 0X1A ----ACK/PSH: 0X1E (12)----> B Etape 7
[......]
Note:La
machine Wk fait de l'ecoute passive sur le réseau et usurpe l'identite
de la machine A.
Nous supposons que la phase de synchronisation est passee.
Schema
C.
- De l'etape 1 a 4 il s'agit d'une communication
normale entre la station A et la station B.
- A l'ETAPE 5 la station
Wk intervient et envoi un paquet a la station B en se faisant passer pour la
station A. La station Wk base ses numeros de sequences sur ceux envoyes par
la station B a l'ETAPE 4.
- La station B en observant les numeros
de sequences envoyes a l'ETAPE 5, va penser qu'il s'agit d'un paquet effectivement
envoye par la station A. Elle va donc le traiter.
- A l'ETAPE 6 la station B acknowledge le paquet
envoye a l'ETAPE 5. A cette etape la station A est desynchronise par rapport
a la station B. Par contre la station Wk possede les bons numeros de sequences.
- A l'etape 7 et suivante la staion Wk continue le transfert de ses
donnes.
Contre:
Le seul contre possible consisterais a crypter
toute la couche TCP.
Je ne peut en aucun cas etre tenu responsable de l utilisation
que vous ferez de ces informations.