Table of Contents

TP5 (Scapy)

Lancez la configuration suivante :

/net/ens/qemunet/qemunet.sh -x -s /net/ens/qemunet/demo/gw.tgz

Il s'agit du réseau ci-dessous qui est déjà configuré.

                             
               grave 
                 | .2
             ------------  147.210.0.0/24 
                 | .1 (eth0)
 Passerelle   immortal
                 | .1 (eth1)             
           --------------  192.168.0.0/24 
          .2 |        | .3              
          opeth      syl                  
                                          

Scapy est un interpréteur de commande en Python qui permet de forger des paquets IP. Vous trouverez de la documentation et un tutoriel sur Scapy ici :

Sur opeth, lancez la commande “scapy”. L'invite '»' indique que vous êtes maintenant dans l'interpréteur Scapy. Pour quitter Scapy, tapez 'ctrl-d'.

Ping & Pong

x = IP()
x.show()  
ping = IP(dst="192.168.0.3")/ICMP(type="echo-request")
pong = sr1(ping)

Traceroute

Dans cet exercice, nous allons coder un traceroute en scapy. Pour ce faire, nous utiliserons le réseau virtuel chain du TP3. Lancez cette topologie :

/net/ens/qemunet/qemunet.sh -x -s /net/ens/qemunet/demo/chain.tgz

Les IPs et les tables de routage sont déjà configurés.

x=IP(dst="147.210.15.2",ttl=1)/ICMP() # @nile
y=sr1(x)
y.show()

Astuce : Pour écrire une boucle Python…

>>> for i in range(10):
...   print "iteration", i
... 
# résultat
iteration 0
iteration 1
...
iteration 8
iteration 9

Attention : Il ne faut pas oublier d'ajouter un ou deux espaces après '…' dans le corps de la boucle.

Syn Scan

Relancez la première configuration :

/net/ens/qemunet/qemunet.sh -x -s /net/ens/qemunet/demo/gw.tgz

Pour effectuer un syn scan avec Scapy , il faut essayer d'établir une connexion TCP/IP vers l'ensemble des ports (de 1 à 65535) de syl. Si un service est disponible sur un port de la machine cible, alors le serveur accepte la demande de connexion en répondant favorablement.

 a = IP(???)/TCP(???)          
 b = sr1(a)
for p in range(1024):
...  if ???:
...    print "OPEN", p
...       

Attention : Le test ??? n'est pas si évident à trouver ! Google est votre ami ;-)

Connexion à un serveur TCP/IP (Bonus)

bonus