Scapy

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Manipulation de paquets réseau
Langage Python
Rôle Forge, sniff et analyse de paquets
Voir aussi Wireshark · Telnet · Traceroute

Scapy est un couteau suisse Python qui permet la forge, le sniff et l'analyse de paquets réseau. Il peut se substituer à nmap, hping, arpspoof, tcpdump ou Wireshark.

Installation

apt-get install python-scapy

Ressources :

Commandes de base

ls()
lsc()
conf

Mini-scripts

answer, unanswered = traceroute(["www.google.com", "www.ieschew.com"])
answer.graph()

Spoofing IP

Automatisation du spoofing IP via un script développé sous Scapy (spoofer.py).

Principe du handshake TCP :

  • Le client envoie une demande SYN contenant un numéro de séquence SEQ-CLIENT.
  • Le serveur retourne un paquet (SYN/ACK) contenant le couple ACK/SEQ :
    • ACK-SERVER contient le numéro de séquence (SEQ-CLIENT+1) du paquet client précédent.
    • SEQ-SERVER est généré par le serveur.
  • Dans le cas d'un spoofing, le paquet retour n'est pas reçu, car l'IP usurpée n'existe pas ou n'est pas la nôtre.

Relation : ACK = SEQ+1, SEQ = 1.

  • Le client envoie un ACK = (SEQ-SERVER+1), SEQ = ACK-SERVER = (SEQ-CLIENT+1).

Lancement de l'appli :

./spoof.py <ip_serveur_telnet> 23 203.0.113.20 24345

Validation côté serveur de test :

netstat -t -a -n

Version en boucle du script précédent : massSpoofer.py.

Vérification côté serveur Telnet :

./spoof.py <ip_serveur_telnet> 203.0.113.20 24345
netstat -t -a -n | grep :23 | grep ESTABLISHED | wc -l

Modification de la ligne 19 de spoof.py :

print "indiquer le SEQ du serveur"
seqServeur = sys.stdin.readline()
prochainACK = int(seqServeur[:-1])

Remplacer srl par send.

Voir aussi