Scapy: le forgeur de paquet

Scapy: le forgeur de paquet
Photo by Jordan Harrison / Unsplash

Scapy devrait être connu par toutes les personnes qui travaillent dans le milieu des réseaux informatique. Il est à mon sens indispensable pour l’enseignement du réseau (tout comme Wireshark). Scapy permet de mettre les mains dans le cambouis! Si vous rêvez de créer vos paquets, ce logiciel est fait pour vous.

Scapy est développé en Python. Il se présente comme un interpréteur Python classique, mais il apporte son lot de commandes pour créer de A à Z un paquet. Il supporte un très grand nombre de protocoles et ses fonctionnalités sont:

  • création de paquets
  • scan de ports
  • fingerprint
  • sniffing
  • attacking
  • testing

Scapy remplace bon nombre de logiciels: hping, nmap, airspoof, tcpdump, … Je vous invite à voir des slides qui présentent en détail ce logiciel.

Pour installer Scapy sur debian, rien de plus simple:

apt-get install python-scapy

Petite démonstration avec une requête DNS:

Scapy DNS Query
Packet forgering with scapy – DNS Query

Le paquet se créé naturellement en empilant les couches (modèle OSI): ethernet, IP, UDP puis DNS. La variable ‘dns’ contient le paquet. On peut envoyer ce paquet avec la commande srp1 (envoi et affiche le paquet en retour), sendp (envoi simple du paquet).

Quelques commandes utiles:

lsc() –> affiche la liste des commandes

ls() –> affiche la liste des objets pris en compte

sendp() –> envoi un paquet

mon-paquet.show() –> affiche la structure du paquet

mon-paquet[i].var = « hello world » –> affecte « hello world » à la variable ‘var’ dans la couche i (1 pour ip, 2 pour tcp/upd, …)

Scapy permet de générer un PDF qui représente le paquet. Il est aussi possible de générer une image d’un traceroute.

dns-packet
DNS Packet

Scapy peut être utile pour tester des équipements réseaux et voir comment ils réagissent avec des paquets mal formés.

Pour débuter avec Scay, vous pouvez suivre ce tutoriel.

Sources: http://www.secdev.org/projects/scapy/