User Tools

Site Tools


rx:tp5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rx:tp5 [2016/02/28 16:16] orelrx:tp5 [2024/03/18 15:06] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====TP5 (Scapy)====+======TP5 (Scapy)======
  
-Lancez la configuration du TP5.+Lancez la configuration suivante :
  
-  /net/ens/qemunet/miage/qemunet.sh -x -s /net/ens/qemunet/miage/gw.tgz+  /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é.                                Il s'agit du réseau ci-dessous qui est déjà configuré.                               
Line 24: Line 24:
 Sur //opeth//, lancez la commande "scapy". L'invite '>>' indique que vous êtes maintenant dans l'interpréteur Scapy. Pour quitter Scapy, tapez 'ctrl-d'. 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==+====Ping & Pong====
  
   * Pour forger un paquet IP, il suffit d'appeler le constructeur IP(). La fonction //show()// vous montre tous les champs du paquet IP initialisés avec des valeurs par defaut.   * Pour forger un paquet IP, il suffit d'appeler le constructeur IP(). La fonction //show()// vous montre tous les champs du paquet IP initialisés avec des valeurs par defaut.
Line 44: Line 44:
   * Maintenant, faire un ping vers //grave// de la même façon...   * Maintenant, faire un ping vers //grave// de la même façon...
  
-== Traceroute ==+==== 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 : 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/miage/qemunet.sh -x -s /net/ens/qemunet/miage/chain.tgz+  /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.  Les IPs et les tables de routage sont déjà configurés. 
Line 75: Line 75:
 iteration 0 iteration 0
 iteration 1 iteration 1
-iteration 2 +...
-iteration 3 +
-iteration 4 +
-iteration 5 +
-iteration 6 +
-iteration 7+
 iteration 8 iteration 8
 iteration 9 iteration 9
 </code> </code>
  
-== SYN Scan==+__Attention__ : Il ne faut pas oublier d'ajouter un ou deux espaces après '...' dans le corps de la boucle.
  
-  * Qu'est-ce qu'un "syn scan" ? A quoi sert la commande 'nmap'+==== Syn Scan====
-  * Depuis nile, lancez la commande 'nmap -sS -n @syl' pour scanner les ports de syl... +
-  * Pour effectuer la même chose avec scapy (sur immortal), il faut essayer d'établir une connexion TCP/IP vers l'ensemble des ports de nile (de 1 à 65535). Pour créer un paquet TCP/IP avec scapy, il faut taper :+
  
-     p = IP()/TCP()+Relancez la première configuration :
  
-La commande suivante détaille l'ensemble des champs que vous pouvez modifier au niveau de IP et de TCP.+  /net/ens/qemunet/qemunet.sh -x -s /net/ens/qemunet/demo/gw.tgz
  
-     p.show()+  * Qu'est-ce qu'un //syn scan// ?  
 +  * A quoi sert la commande 'nmap' ?  
 +  * Depuis opeth, lancez la commande 'nmap -sS -n @syl' pour scanner les ports de //syl//... 
 +  * Rappelez le principe de la //poignée de main// TCP. 
 +  * Lancez maintenant Scapy sur //opeth//.  
 +  
 +Pour effectuer un //syn scan// avec Scapy , il faut essayer d'établir une connexion TCP/IP vers l'ensemble des ports (de 1 à 65535de //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. 
  
-  * Créez maintenant un paquet TCP/IP à destination du port 80 de syl avec le champs flags de TCP égal à "S" (SYN). Envoyez ce paquet et observer la réponse. A quoi sert ce flag ?+  * Pour faire un test en Scapy, créez un paquet TCP/IP à destination du port 80 de //syl// avec le champs //flags// de TCP égal à "S" (SYN). Envoyez ce paquet et observez la réponse. 
  
-   a = IP(???)/TCP(???          # remplacer les ???+   a = IP(???)/TCP(???         
    b = sr1(a)    b = sr1(a)
  
-  * Quel est le flag TCP en réponse, correspondant à la variable b.payload.flags ?  +  * Quel est le flag TCP en réponse.  
-  * Recommencez pour le port 3333. Que remarquez-vous ? En déduire une manière de détecter un port ouvert ou fermé sur une machine distante, en complétant le programme suivant !+  * Recommencez pour le port 3333. Que remarquez-vous ? En déduire une manière de détecter un port ouvert ou fermé... 
 +  * Complétez le programme suivant, pour découvrir les ports de nile (de 1 à 1024) qui sont ouverts et pour les afficher comme le fait nmap.
  
 <code python> <code python>
-   if b.payload.flags == ???:     # remplacer les ??? +for p in range(1024): 
-   ...  print "OPEN" +...  if ???: 
-   ... else: +...    print "OPEN", p 
-   ...  print "CLOSED" +...        
-   ...        +</code>   
-</code>+
  
-__Attention__ : ne pas oublier d'ajouter un espace après '...' dans le corps de la boucle. +__Attention__ : Le test ??? n'est pas si évident à trouver ! Google est votre ami ;-)
-    +
-Complétez le programme suivant, pour découvrir les ports de nile (de 1 à 1024) qui sont ouverts et pour les afficher comme le fait nmap. +
- +
-<code python> +
-     for i in range(1024)+
-     ...  print "open %s" %i          +
-     ...  +
-</code>     +
  
-==Connexion à un serveur TCP/IP (Bonus) ==+====Connexion à un serveur TCP/IP (Bonus) ====
  
 [[rx:tp5-bonus|bonus]] [[rx:tp5-bonus|bonus]]
  
rx/tp5.1456676204.txt.gz · Last modified: 2024/03/18 15:05 (external edit)