Arp cache poisoning

De SeRoM - Wiki
Aller à : navigation, rechercher


Description

Pour la technique de base sur le ARP spoofing, voir cette page. Cette technique est plus complexe et est apellée: Corruption de cache ARP. Pour celà, je vais utiliser arp-sk qui est un utilitaire regroupant: arpspoof, arping et arptool.

arp-sk permet donc la génération de messages ARP dont tous les champs peuvent être personnalisés, aussi bien au niveau Ethernet qu'au niveau ARP.

Le but final étant de modifier à distance le cache ARP d'une machine. Plus besoin d'attendre les MAJ automatiques du cache ARP de la victime.

Installation

# wget http://sid.rstack.org/arp-sk/files/arp-sk-0.0.16.tgz
# tar -xvzf arp-sk-0.0.16.tgz
# cd arp-sk-0.0.16
# ./configure
# make
# ln -s ~/arp-sk-0.0.16/src/arp-sk /usr/bin/arp-sk

Mise en oeuvre

Description de l'exemple

Soit la machine cible (victime) 192.168.2.157, sa passerelle par défaut 192.168.2.1 et la machine du pirate 192.168.2.129. Le pirate accède au réseau local via sa carte réseau sans fil, étant eth2 dans son cas.

Création d'entrée

Pour créer efficacement une entrée dans le cache ARP d'une machine, l'idéal serait de l'amener à émettre une requête en vue de communiquer avec l'adresse IP qui nous intéresse. Pour celà il suffit de lui envoyer un paquet IP qui entraîne une réponse de sa part : ping (ICMP echo request), mais cette technique n'est pas sûre.

Pour que tout soit parfait, il nous faudrait créer directement une entrée possédant les valeurs intéressantes.

Le cache exploite tous les messages ARP qu'il reçoit pour se tenir à jour, les réponses comme les requêtes. En effet, lorsqu'un hôte reçoit une requête ARP, il en déduit que son émetteur veut converser avec lui.

De fait, il va recevoir un paquet IP auquel il a de fortes chances de devoir répondre. Pour éviter d'avoir à lancer à son tour une requête à destination de son correspondant pour envoyer cette réponse, il va exploiter le contenu de la requête reçue pour le mettre en cache : il lit les champs MAC source et IP source du message ARP et crée une entrée en cache.

Ce comportement est extrêmement intéressant. Si le pirate veut créer une entrée pour l'adresse IP d'une machine (gateway par exemple) correspondant à son adresse MAC dans le cache de la victime, il lui suffit de lui envoyer une requête ARP, avec comme adresse MAC source celle du pirate et comme adresse IP source celle de la machine (gateway). Cependant, une requête ARP est émise en diffusion, ce qui est assez embarassant puisque la gateway va voir passer cette requête. Nous jouons donc sur la couche Ethernet, et envoyer notre requête en unicast, à destination de la victime.

arp-sk -w -d 192.168.2.157 -S 192.168.2.1 -D 192.168.1.157 -i eth2

Si on regarde le cache de la victime, l'entrée a été ajoutée.

Mise à jour d'entrée

Cela sert non seulement pour modifier une entrée existante, mais aussi pour nous garantir le maintient de la valeur des entrées malgré d'éventuelles mises à jour ultérieures du cache.

Nous exploitons le mécanisme vu précédemment pour mettre à jour les entrées du cache. Supposons que la victime posséde une entrée valide pour la gateway.

Pour mettre à jour cette entrée, nous envoyons à la victime une réponse ARP venant de la gateway, mais associant son IP à l'adresse MAC du pirate:

arp-sk -r -d 192.168.2.157 -S 192.168.2.1 -D 192.168.2.157

Si on regarde le cache de la victime, l'entrée a bien été modifiée.

Conclusion

Grace à ce petit tutoriel, vous pouvez à présent facilement recevoir l'entièreté des packets transitants entre une machine cible et sa passerelle. Maintenant, il peut être intéressant de passer à du DNS spoofing pour modifier les réponses DNS. Ce mécanisme est expliqué sur cette page.