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 14:43] – 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é. | ||
Line 24: | Line 24: | ||
Sur //opeth//, lancez la commande " | Sur //opeth//, lancez la commande " | ||
- | ==Ping & Pong== | + | ====Ping & Pong==== |
* Pour forger un paquet IP, il suffit d' | * Pour forger un paquet IP, il suffit d' | ||
Line 36: | Line 36: | ||
<code python> | <code python> | ||
- | ping = IP(dst=" | + | ping = IP(dst=" |
pong = sr1(ping) | pong = sr1(ping) | ||
</ | </ | ||
Line 42: | Line 42: | ||
* Que représentent les variables ping et pong ? A quoi sert la fonction sr1() ? | * 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' | * Utilisez la fonction show() pour afficher le contenu de ces paquets. Notez bien l' | ||
- | * Maintenant, faire un ping vers nile de la même façon... | + | * Maintenant, faire un ping vers // |
- | == Traceroute == | + | ==== Traceroute |
- | Dans cet exercice, nous allons coder un traceroute en //scapy//. Pour ce faire, | + | Dans cet exercice, nous allons coder un traceroute en //scapy//. Pour ce faire, |
- | | + | / |
| | ||
+ | Les IPs et les tables de routage sont déjà configurés. | ||
- | Ecrire un programme Scapy sur // | + | * Tout d' |
- | | + | |
+ | <code python> | ||
+ | x=IP(dst=" | ||
+ | y=sr1(x) | ||
+ | y.show() | ||
+ | </ | ||
+ | * Que représente le champs TTL ? Qui a répondu ? Pourquoi ? Détaillez l' | ||
+ | * Recommencez avec ttl=2. Que constatez-vous ? | ||
+ | * En s' | ||
- | == SYN Scan== | + | __ Astuce__ : Pour écrire une boucle Python... |
- | * Simuler un serveur HTTP sur syl à l'aide de cette commande | + | <code python> |
+ | >>> | ||
+ | ... print " | ||
+ | ... | ||
+ | # résultat | ||
+ | iteration 0 | ||
+ | iteration 1 | ||
+ | ... | ||
+ | iteration 8 | ||
+ | iteration 9 | ||
+ | </ | ||
- | nc -l -vv -p 80 & | + | __Attention__ : Il ne faut pas oublier d' |
- | * Qu' | + | ==== 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' | + | |
- | p = IP()/TCP() | + | Relancez la première configuration : |
- | La commande suivante détaille l' | + | / |
- | p.show() | + | * Qu' |
+ | * A quoi sert la commande ' | ||
+ | * 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' | ||
- | * Créez maintenant | + | * Pour faire un test en Scapy, créez |
- | a = IP(??? | + | a = IP(??? |
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é | + | * Recommencez pour le port 3333. Que remarquez-vous ? En déduire une manière de détecter un port ouvert ou fermé... |
+ | * Complétez | ||
<code python> | <code python> | ||
- | if b.payload.flags == ???: # remplacer les ??? | + | for p in range(1024): |
- | | + | ... if ???: |
- | ... else: | + | ... print " |
- | | + | ... |
- | ... | + | </ |
- | </ | + | |
- | + | ||
- | __Attention__ : ne 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> | + | |
- | for i in range(1024): | + | |
- | | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | ==Connexion à un serveur TCP/IP (Bonus) == | + | |
- | + | ||
- | Le but de cet exercice est d' | + | |
- | + | ||
- | * Sur **immortal** (uniquement) ! | + | |
- | - utiliser cette commande : < | + | |
- | - puis lancez Scapy. | + | |
- | + | ||
- | * Complétez le programme ci-dessous en respectant les étapes suivantes : | + | |
- | - envoi du paquet SYN avec notamment les champs TCP sport=7777, dport=22, flags=" | + | |
- | - réception du paquet SYNACK... | + | |
- | - envoi du paquet ACK avec les champs TCP flags=" | + | |
- | - 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 ! | + | |
- | < | + | __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.1455288181.txt.gz · Last modified: 2024/03/18 15:05 (external edit)