Scapy
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 :
- Documentation officielle : https://www.secdev.org/projects/scapy/doc/
- Présentation (R. Lifchitz, PyCon-FR 08) : http://dl.afpy.org/pycon-fr-08/slides/renaud-lifchitz-scapy.pdf
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
- Wireshark — analyse de trames
- Traceroute — l'exemple graph() ci-dessus s'appuie dessus