rx:tp5
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| rx:tp5 [2016/02/12 13:55] – orel | rx:tp5 [2024/03/18 15:06] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====TP5 (Scapy)==== | + | ======TP5 (Scapy)====== |
| - | Lancez la configuration | + | Lancez la configuration |
| - | | + | / |
| 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é. | ||
| - | | + | grave |
| - | | | + | |
| - | | | + | ------------ |
| - | | + | | .1 (eth0) |
| - | | | + | Passerelle |
| - | | | + | |
| - | nile syl | + | -------------- |
| + | .2 | | .3 | ||
| + | | ||
| + | |||
| 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 : | 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 : | ||
| Line 20: | Line 22: | ||
| * http:// | * http:// | ||
| - | Sur //nile//, lancez la commande " | + | Sur //opeth//, lancez la commande " |
| - | ==Ping & Pong== | + | ====Ping & Pong==== |
| - | * Pour effectuer | + | * Pour forger |
| - | ping = IP(dst=" | + | <code python> |
| - | pong = sr1(ping) | + | x = IP() |
| + | x.show() | ||
| + | </ | ||
| - | * Que représentent les variables ping et pong ? Tapez le nom de ces variables pour afficher leur contenu. A quoi sert la fonction sr1() ? | + | * Pour effectuer |
| - | * Maintenant, faire un ping vers nile de la même façon... | + | |
| - | == SYN Scan== | + | <code python> |
| + | ping = IP(dst=" | ||
| + | pong = sr1(ping) | ||
| + | </ | ||
| - | * Simuler un serveur HTTP sur syl à l'aide de cette commande : | + | * Que représentent les variables ping et pong ? A quoi sert la fonction sr1() ? |
| + | * Utilisez la fonction show() pour afficher le contenu de ces paquets. Notez bien l'encapsulation de ICMP dans IP. | ||
| + | * Maintenant, faire un ping vers // | ||
| - | nc -l -vv -p 80 & | + | ==== Traceroute ==== |
| - | * Qu' | + | 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 |
| - | * 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' | + | |
| - | p = IP()/TCP() | + | |
| + | |||
| + | Les IPs et les tables de routage sont déjà configurés. | ||
| - | La commande suivante détaille l' | ||
| - | p.show() | + | * Tout d' |
| + | * Lancez //scapy// sur //opeth//. Testez le code ci-dessous : | ||
| - | * 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 ? | + | <code python> |
| + | x=IP(dst="147.210.15.2", | ||
| + | y=sr1(x) | ||
| + | y.show() | ||
| + | </ | ||
| - | a = IP(???)/ | + | * Que représente le champs TTL ? Qui a répondu |
| - | b = sr1(a) | + | * Recommencez avec ttl=2. Que constatez-vous |
| + | * En s' | ||
| - | * Quel est le flag TCP en réponse, correspondant à la variable b.payload.flags ? | + | __ Astuce__ : Pour écrire une boucle Python... |
| - | * 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 ! | + | |
| <code python> | <code python> | ||
| - | if b.payload.flags == ???: # remplacer les ??? | + | >>> |
| - | | + | ... |
| - | | + | ... |
| - | | + | # résultat |
| - | ... | + | iteration 0 |
| + | iteration 1 | ||
| + | ... | ||
| + | iteration 8 | ||
| + | iteration 9 | ||
| </ | </ | ||
| - | __Attention__ : ne pas oublier d' | + | __Attention__ : Il ne faut pas oublier d' |
| - | + | ||
| - | 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> | + | ==== Syn Scan==== |
| - | for i in range(1024): | + | |
| - | | + | |
| - | ... | + | |
| - | </ | + | |
| - | == Traceroute == | + | Relancez la première configuration : |
| - | Ecrire un programme Scapy qui réalise un traceroute entre nile et grave. | + | / |
| - | ==Connexion à un serveur | + | * Qu' |
| + | * A quoi sert la commande ' | ||
| + | * Depuis opeth, lancez la commande 'nmap -sS -n @syl' pour scanner les ports de // | ||
| + | * 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' | ||
| - | Le but de cet exercice est d' | + | * Pour faire un test en Scapy, créez un paquet |
| - | * Sur **immortal** | + | a = IP(???)/TCP(??? |
| - | - utiliser cette commande : < | + | b = sr1(a) |
| - | - puis lancez Scapy. | + | |
| - | * Complétez | + | * Quel est le flag TCP en réponse. |
| - | - envoi du paquet SYN avec notamment | + | * Recommencez pour le port 3333. Que remarquez-vous ? En déduire une manière de détecter un port ouvert ou fermé... |
| - | - réception du paquet SYNACK... | + | * Complétez le programme suivant, pour découvrir |
| - | | + | |
| - | - réception du message MSG envoyé par le serveur, qui doit contenir du texte indiquant la version du serveur OpenSSH, enfin si tout marche bien ! | + | <code python> |
| + | for p in range(1024): | ||
| + | ... if ???: | ||
| + | ... print "OPEN", | ||
| + | ... | ||
| + | </ | ||
| - | < | + | __Attention__ : Le test ??? n'est pas si évident à trouver ! Google est votre ami ;-) |
| - | SYN = IP(???)/TCP(???) | + | |
| - | SYNACK = sr1(SYN) | + | |
| - | ACK = IP(??? | + | |
| - | MSG = sr1(ACK) | + | |
| - | print MSG.load | + | |
| - | </ | + | |
| - | __Attention__ : Il faut effectuer ces commandes rapidement pour éviter | + | ====Connexion à un serveur TCP/IP (Bonus) ==== |
| - | * https:// | + | [[rx:tp5-bonus|bonus]] |
rx/tp5.1455285327.txt.gz · Last modified: 2024/03/18 15:05 (external edit)
