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.