J'essaie de créer un environnement de laboratoire pour expérimenter les attaques MiTM. Je veux apprendre docker aussi, donc j'ai décidé de faire cela avec docker. J'ai créé 2 images (attaquant, victime) :
Victime - basé sur Alpine, avec boucle installée
Attaquant - basé sur Ubuntu, avec iputils-ping iproute2 curl iptables vim ettercap-text-only dsniff et tshark installés.
Ils sont tous les deux en réseau ponté, donc le routeur ici serait l'interface docker0 (par défaut : 172.17.0.1)
J'exécute le conteneur de l'attaquant avec le drapeau --privileged, pour permettre l'utilisation d'ettercap.
Donc, lorsque les deux images sont en cours d'exécution, j'exécute ettercap (j'ai essayé avec l'outil arpspoof aussi, même effet.) à partir du conteneur de l'attaquant avec :ettercap -T -i eth0 -M arp:remote //victim_ip/ //172.17.0.1/
Le trafic de la victime passe par l'attaquant, mais il y a un problème : lorsque la victime essaie de faire un ping sur google.com, il n'y a pas de réponse. L'attaque MiTM fonctionne car je peux voir ce trafic sur les conteneurs de la victime mais quelque chose le bloque.
J'ai trouvé quel est le problème ici. J'ai ouvert 2 wiresharks sur mon hôte, un sur l'interface docker0 et un sur mon interface wifi par défaut. Avant l'attaque, lorsque j'envoie un ping à partir du réseau global, le docker traduit son adresse IP de docker en mon adresse IP d'hôte et cela fonctionne bien, mais après l'arpspoofing, cela ne fonctionne pas correctement - l'hôte envoie des paquets avec la source IP du conteneur victime du docker (172.17.0.3). De plus, ce qui est étrange, c'est qu'un autre conteneur (l'attaquant) envoie des paquets au réseau externe sans problème (docker0 traduit correctement l'ip du docker en ip de l'hôte). Image des deux wiresharks, ci-dessous.
J'ai vérifié iptables et cette règle (sélectionnée sur l'image ci-dessous) traduit mon adresse ip docker en adresse ip hôte, mais après l'attaque, cette règle ne fonctionne pas (les pkts ne s'incrémentent pas après l'attaque arp spoofing). J'ai essayé d'ajouter des règles iptables supplémentaires mais sans effet. Je ne suis pas un maître d'iptables donc si quelqu'un a d'autres idées sur ce qu'il faut vérifier, donnez-moi un indice.
Peut-être que quelqu'un pourrait m'expliquer ou me donner des sources supplémentaires sur la façon dont docker traduit exactement son adresse IP à l'adresse IP de l'hôte sur le réseau de pont et ce que je peux faire pour rétablir la traduction correcte après une attaque arp-spoofing. Tout conseil sera apprécié.