Vous êtes sur la page 1sur 26

Sécurité des réseaux informatiques

Tcpdump,ethereal,netcat

Objectif:

On se propose dans cette séance de travaux pratique d’analyser les paquets transmis d’une machine

à l’autre dans un environnement UNIX en se basant sur les analyseurs de protocoles :Tcpdump et

ethereal vue qu’ils sont les plus utilisés .

En fait, les analyseurs de protocoles proposent de filtrer les paquets spécifiés par l’utilisateur. Le

principe est de permettre aux paquets de remonter jusqu’à la plus haute couche du protocole pour

qu’une application puisse visualiser le contenu des paquets (entête et données).

TP: Tcpdump,ethereal,netcat 1
Sécurité des réseaux informatiques

Tcpdump

Analyse de session TCP:

Présentation de Tcpdump :

Il s'agit d'un outil à réserver aux utilisateurs avertis (il nécessite quelques connaissances sur
les protocoles) à fin de visualiser les paquets qui circulent vers et/ou à partir d'une interface réseau et
ce, en temps réel. C'est à la fois un outil de diagnostic sécurité mais aussi un outil de détection
d'anomalies de la configuration IP ou matérielle.
Le fonctionnement est relativement simple : la commande, sans aucun filtre, permet d'afficher
le contenu de tous les paquets qui transitent sur les interfaces réseau ainsi que leur descriptions, et en
appliquant des filtres on pourra s’intéresser au type de trafic qu’on désire analyser.

Filtrage

Il est possible donc de sélectionner les paquets à "écouter" en fonction d'expressions. Ainsi, ne seront
affichées / traitées que les informations pour lesquelles le résultat de l'expression est vérifié. Une
expression est composée d'un mot clé suivi d'une valeur numérique ou autre. Ainsi, il est possible de
classer les mots clés en catégories :

 Les mots clés permettant de définir une direction : src (source) et dst (destination). Il est possible
de combiner ces deux mots clés avec les opérations logiques and (et) et or (ou). On peut ainsi définir
avec précision la source et/ou la destination des paquets qui nous intéressent.

 Les mots clés permettant de définir le type de valeur que nous préciserons. Il peut s'agir d'un hôte
(host), d'un réseau (net) ou encore d'un port (port).

 Enfin, nous avons les mots clés concernant les protocoles. Ici, les mots sont suffisamment clairs
(par exemple, ip, tcp, udp ...)

Et voici la liste complète des options de la commande Tcpdump permettant l’application des
filtres :

TP: Tcpdump,ethereal,netcat 2
Sécurité des réseaux informatiques

Tcpdump udp port ″netbios-ns ″ -i eth0 –c 5 –w /tmp/tcpdump

Ici on va faire une écoute du trafic udp sur le port « netbios-ns » à travers l’interface eth0 en capturant
5 paquets (-c 5) . Mais pour ce cas, tcpdump ne va pas utiliser l’écran comme sortie par défaut car on
lui a défini le fichier tcpdump (-w /tmp/tcpdump) pour stocker le résultat de sortie de cette
commande.

Tcpdump -x –s 0 udp port 53 -i eth0 –c 20 –w /tmp/tcpdump

Tcpdump arp

Ici le mot clé utilisé pour le filtrage est simplement le nom du protocole à écouter, donc tcpdump va
afficher le trafic arp qui est constitué des demandes (request) et des réponses (reply).

Tcpdump tcp port 21

TP: Tcpdump,ethereal,netcat 3
Sécurité des réseaux informatiques

Pour ce cas on a combiné deux clés pour le filtrage : le premier et le nom du protocole (tcp) et le
deuxième est le numéro du port sur lequel on va faire l’écoute (21). Et par la suite on aura comme
affichage que les paquets générés par le service ftp.

Tcpdump –a –l –q src 10.90.1.105

Ecouter tout le trafic en provenance de l’hôte 10.90.1.105 en utilisant un buffer de sortie tout en
affichant le minimum d’information concernant le protocole.

Tcpdump –l –q –x dst 10.90.1.104

TP: Tcpdump,ethereal,netcat 4
Sécurité des réseaux informatiques

Ecouter tout le trafic en provenance de l’hôte 10.90.1.105 en utilisant un buffer de sortie tout en
affichant le minimum d’information concernant le protocole et l’entête en hexadécimale.

Tcpdump –ni eth0

Ici on n’a pas appliqué des filtres, donc l’écoute sera sur tout le trafic circulant à travers l’interface
eth0.

Tcpdump –l –i eth0 –e ‘ip and not ether multicast and not ether broadcast
and not (src 10.90.1.1O5 dst 10.90.1.103)’ | tee /tmp/tcpdump

TP: Tcpdump,ethereal,netcat 5
Sécurité des réseaux informatiques

Capturer tous les paquets circulant à travers l’interface eth0 tout en interdisant le trafic Broadcast,
Multicast ainsi que celui provenant de l’hote 10.90.1.105 ou allant vers l’hote 10.90.1.103.
Toutes les informations affichées seront copiées à l’aide de la commande tee dans le fichier tcpdump.

La commande qui permet de visualiser le fichier /tmp/tcpdump est :


tcpdump –r /tmp/tcpdump.
Dont voici le résultat de la commande pour notre cas.

La commande qui permet de sniffer les paquets ftp échangées entre l’hôte 192.168.0.5 et l’hôte
192.168.0.6 est :

tcpdump src 192.168.0.5 or 192.168.0.6 and dst 192.168.0.5 or


192.168.0.6 and tcp and port 21

La capture montre le trafic bidirectionnel entre les deux hôtes.


On ajoutant l’option –A on a pu voir le login et le mot de passe échangés pendant la phase de
connexion ftp

TP: Tcpdump,ethereal,netcat 6
Sécurité des réseaux informatiques

TP: Tcpdump,ethereal,netcat 7
Sécurité des réseaux informatiques

ethereal

Ethereal est un outil de capture des trames circulant sur le réseau et d’analyse des paquets
échangés. Ethereal présente une interface utilisateur graphique, la manipulation et sélection des
paquets se fait avec la souris.

Présentation

La fenêtre d’Ethereal est composée de trois cadres:

1) La liste des paquets capturés (en haut): Affiche la liste des paquets capturés avec pour
chacun l’émetteur, le récepteur, le type de protocole et un résumé de leur contenu.

2) Le détail d’un paquet (au milieu): Affiche le détail du paquet sélectionné dans la liste des
paquets (cadre du haut), donne les informations précises sur chaque trame du paquet.

3) L’affichage hexadécimal d’un paquet (en bas): Affiche la valeur hexadécimale du paquet
sélectionné dans la liste des paquets (cadre du haut) et affiche en gras le champ sélectionné
dans le détail du paquet (cadre du milieu).

TP: Tcpdump,ethereal,netcat 8
Sécurité des réseaux informatiques

cliquant sur "Start..." ou bien en utilisant le raccourci clavier Ctrl-K. Ceci


ouvre une fenêtre qui permet de spécifier un certain nombre d’options de
capture.
- Interface: Spécification de l’interface réseau sur laquelle on désire
espionner l’échange d’information
- Count: Le nombre de paquet à capturer: pour capturer indéfiniment
mettre la valeur 0 (Appuyer sur le bouton Stop de la fenêtre de statistique
pour arrêter).

- Optionnel Filter: Le filtre à utiliser (analyseur de paquet): par exemple, écrire "ARP" si on
ne désire capturer que les paquets de type ARP.
- Optionnel File: Le fichier dans lequel sauvegarder la liste des paquets capturés.
- Capture length: La taille max des paquets à capturer (par défaut 65535).
- Optionnel Update list of packets in real time permet de visualiser en temps réel les paquets
capturés dans la fenêtre de visualisation.
- Optionnel Enable name resolution permet d’activer la résolution de nom (activé par défaut).

Cliquer OK lorsqu’on est prêt à capturer les paquets.


Ceci ouvre la fenêtre de statistique qui donne le nombre de paquets capturés de chaque
protocole ainsi que le nombre total de paquets capturés. Cliquer sur Stop pour arrêter la capture à tout
moment (celle-ci s’arrêtera automatiquement si une limite a été donnée dans l’option Count).

La capture d’une connexion ftp

Ethereal est capable de capter le login et le mot de passe d’une connexion ftp donc il en analysant les
paquet de type data de début de connexion, on trouve texte complet et claire, le login et le mot de
pass.

TP: Tcpdump,ethereal,netcat 9
Sécurité des réseaux informatiques

Sur une connexion telnet, ethereal peut capter de même le mot de passe et login mais il va les
affichés caractère par caractères dans les paquets de type data pendant la phase d’authentification.

La procédure d’établissement d’une connexion TCP


Pour que deux parties puissent communiquer avec TCP, elles doivent satisfaire à une procédure
d’établissemnt de la communication appelée ″poignée de main à trois voies″  (three way
handshake) .cette procédure initialise la connexion et permet l’échange des paramètres nécessaires
aux deux participants pour communiquer. La figure ci-dessous fournit une illustration de la ″poignée
de main à trois voies ″.

La station A veut se connecter au serveur. Au cours de la première phase de la poigné de main il


envoie un paquet au serveur avec le bit SYN (Synchronization) défini. Ce qui signifie : ″Je veux

communiquer″. Le fait que le bit SYN soit défini indique qu e la valeur dans le champ SN (Sequence
Number) du numéro de séquence est valide. En d’autre termes, la station B a non seulement défini le
bit SYN mais il a aussi envoyé une valeur pour le numéro de séquence initial (ISN :Initial Sequence
Number ) , laquelle est le numéro de séquence pour station B (SN-B). lorsque le serveur reçoit ce
paquet, il retourne un paquet ayant le bit SYN défini et un ISN (SN-S).
Il définit aussi le bit ACK (acknowledgement) afin de signaler qu’il a bien reçu le premier paquet et
incrémente d’une unité le SN de la station B (SN-B + 1). Cela constitue la deuxième phase de la
poignée de main . la dernière phase intervient lorsque la station B définit le bit ACK du paquet qu’il
envoie en retour. Celui-ci indique que la machine acquite le paquet qui a été envoyé et, à son tour,elle
incrémente d’une unité le numéro de séquence du serveur (SN-S + 1). A ce point, les deux machines
ont établit une session et peuvent commencer à communiquer.

Vérification de la procédure de poigné de main à trois voies sur une connexion telnet

TP: Tcpdump,ethereal,netcat 10
Sécurité des réseaux informatiques

On analysant le trafic telnet et on examinant les numéros de séquences et d’ACK, on a pu remarqué


que les deux premiers phases de la procédure "poigné de main à trois voies" sont vérifiés parcontre
la dernière phase n’est pas validé

Capture la séquence ICMP


Ici on a fait un ping depuis la machine 10.100.0.8 sur la machine distante 10.100.0.1

Examinant rapidement la manière dont les numéros de séquence sont choisis. La génération des
numéros de séquence varie d’un système d’exploitation à un autre, en fonction de l’implémentation de
la pile des protocoles TCP/IP ; ici, notre propos s’appuie sur l’implémentation de Linux. Pour
commencer, le numéro est défini à 1 lors de l’amorçage du système puis il incrémente de 128000
touts les secondes. Cela signifie qu’en l’absence de connexion, le numéro de séquence fait une
boucle qui dure approximativement 9 heures. En effet, lorsqu’une connexion est établie, le numéro de
séquence est incrémenté de 64000.
Il y a deux séries de numéros de séquence : celle de l’expéditeur et celle du destinataire. A chaque
fois que l’expéditeur envoie un paquet, il sert de son numéro de séquence, et à chaque fois que
l’expéditeur indique qu’il a reçu un paquet ,c’est le numéro séquence de son interlocuteur qu’il utilise
A l’inverse, le destinataire se sert de ses propres numéros de séquence lorsqu’il retourne des
données

TP: Tcpdump,ethereal,netcat 11
Sécurité des réseaux informatiques

ARP

Présentation :

ARP est le Protocole de Résolution d'Adresse (Address Resolution Protocol). Il est décrit dans le RFC
826. ARP est utilisé par une machine d'un réseau local pour retrouver l'adresse matérielle (la
localisation) d'une autre machine sur le même réseau. Les machines sur Internet sont généralement
connues par leur nom auquel correspond une adresse IP. C'est ainsi qu'une machine sur le réseau
foo.com est capable de communiquer avec une autre machine qui est sur le réseau bar.net. Une
adresse IP, cependant, ne peut pas vous indiquer la localisation physique de la machine. C'est ici que
le protocole ARP entre en jeu.

arp: manipulation de la table ARP (Address Resolution Protocol)

arp manipule la table ARP du noyau de différentes façons. Les options principales permettent ’effacer
une correspondance d’adresses et d’en définir une manuellement.
Pour les besoins de débogage, le programme arp permet aussi d’effectuer un affichage complet de la
table ARP.

Afficher le contenu de la table ARP


On peut utiliser la commande arp et on obtient un tableau équivalent à :
Address HWType HWAddress Flags Iface
195.221.229.1 ether 00:D0:06:13:60:1C C eth0
pc2 ether 00:D0:B7:2C:13:15 CM eth1

Signification des Flags:


M entrée permanente
C entrée du cache
P entrée publiée
On peut aussi utiliser l’option -a (all). Par exemple:

>arp -a

Ensipcsys-gate (195.221.229.1) at 00:D0:06:13:60:1C [ether] on eth0


Pc1 (192.0.0.2) at 00:D0:B7:2C:13:15 [ether] PERM on eth1

TP: Tcpdump,ethereal,netcat 12
Sécurité des réseaux informatiques

Pour ajouter une entrée dans la table ARP:

Avec l’option -s (set), en précisant l’adresse internet puis l’adresse ethernet à mettre en
correspondance. A la place de l’adresse internet, on peut donner un nom symbolique défini dans le
fichier /etc/hosts. Par exemple:

>arp -s pc1 8:0:20:0a:7f:43 temp


Permet de rajouter dans la table une entrée mettant en correspondance l’adresse internet pc1 (définie
dans le fichier /etc/hosts) avec l’adresse ethernet 8:0:20:0a:7f:43 de façon temporaire (c’est à dire
vérifiée régulièrement par ARP).

Remarques:
- Après l’adresse ethernet, on peut préciser l’option pub, afin que l’entrée soit publique ("published").
Cette option n’est plus utilisée dans les configurations récentes (à cause des risques d’erreurs
engendrées et des problèmes de sécurité).

- Toutes les entrées ajoutées par la commande "arp -s" sans l’argument temp sont permanentes. Les
entrées permanentes sont considérées comme définitivement valides, elles ne sont jamais mise à jour
ni effacées (mais sont effaçable). A utiliser avec prudence. (Les entrées permanentes sont marquées
par le flag M quand vous demandez le contenu de la table par "arp").

Pour supprimer une entrée de la table ARP:


En utilisant l’option -d (delete), en précisant l’adresse internet de l’entrée à supprimer. Par exemple:

>arp -d pc1
Permet de supprimer l’entrée qui avait été précédemment rajoutée avec l’option -s. Il est possible de
préciser des arguments (temp, pub) comme pour l’ajout d’une entrée.

TP: Tcpdump,ethereal,netcat 13
Sécurité des réseaux informatiques

Netcat

Présentation :
netcat est un célèbre utilitaire en ligne de commande, il permet de faire pas mal de choses avec des
sockets (Un socket, c'est une connexion entre 2 ordinateurs. ). C'est-à-dire connexions réseau pour
simplifier. Plus concrètement, il permet d'ouvrir des connexions réseau, que ce soit UDP ou TCP,
sans avoir besoin de programmer quoi que ce soit. Très utile pour réaliser des relations client/serveurs
pour faire des tests ou autre.

Pour identifier un socket, il faut 3 trucs:


-les IPs des 2 ordinateurs connectés.
-les ports des 2 ordinateurs qui sont connectés.
-le protocole utilisé.

Les avantages de netcat ?


Il permet d'ouvrir facilement des connections quelconques (TCP ou UDP) sans savoir programmer,
aussi bien pour créer des petits clients/serveurs, que pour tester un programme à vous
Il existe sur plusieurs systèmes (Windows 95/98, NT, Linux, Unix,...)
Il est utilisable à la ligne de commande, ce qui va permettre de facilement l'incorporer dans des
scripts, etc...
Enfin, on peut aussi remarquer que toutes les sources sont disponibles... Aussi bien dans la version
Unix (assez habituel, quand dans la version Windows (vachement plus rare) En fait, c'est vraiment un
programme à tout faire...

L'aide de netcat

Voici comment se présente l'aide de netcat, qu’on peut l’obtenir en tapant la commande "nc -h". Elle
pourra vous rappeler la syntaxe des commandes netcat à tout moment.

Scanner des ports avec Netcat

Et oui netcat peut aussi scanner des ports... Par exemple si je veux scanner les ports ouverts entre 1
et 300 de l'ip 192.168.0.2, je fais :

TP: Tcpdump,ethereal,netcat 14
Sécurité des réseaux informatiques

nc -v -w2 -z 192.168.0.2 1-300

Bien sûr, ce n'est sûrement pas le meilleur outil pour scanner des ports, loin de là. Mais on peut déjà
s'apercevoir qu'il en fait des choses.

Netcat client

Pour ouvrir une connexion sur un port, il suffit de taper la commande : nc ip_serveur port, voici
quelques exemples certainement plus parlants :

nc ftp.sunet.se 21
Cette commande se connectera sur le ftp ftp.sunet.se (port ftp = port 21). Ensuite il faut connaître les
commandes ftp pour pouvoir aller plus loin, car tout ne se fera pas tout seul comme avec un client ftp
évolué.

nc hostname.com 23
Cette commande se connectera sur le port (23) telnet de l'adresse hostname.com. A noter que Netcat
prend en charge complètement le Telnet de meilleure façon. Pour cela utiliser plutôt : nc -t
hostname.com 23. De même on pourrait se connecter à un serveur web sur le port 80 etc etc.

Netcat-serveur

Pour mettre netcat en écoute sur un port de votre machine, il suffit d'utiliser les options -l et -p (listen
et port) comme ceci :

nc -l -p 80
-l : pour le mettre en mode listen / écoute
-p : pour qu'il écoute sur le port

Normalement, il ne se passe rien et netcat ne vous redonne pas la main pour taper quoique ce soit,
mais rien n'est planté pour autant.
Sur cet exemple avec le port 80, on lance la commande suivante dans une autre fenêtre : telnet
127.0.0.1 80

De façon à vous connecter sur le port 80 précédemment ouvert sur votre machine. Et sur cette
nouvelle fenêtre, si on tape quelque chose, on le peut le voir apparaître sur la première fenêtre.
Comme quoi la fenêtre client communique bien avec la fenêtre serveur.

Maintenant on pourra remarquer que si on ferme notre fenêtre cliente (telnet), la fenêtre serveur vous
redonne la main. Autrement dit Netcat n'est plus ouvert. Une autre commande existe pour palier à

TP: Tcpdump,ethereal,netcat 15
Sécurité des réseaux informatiques

cela : elle permet de remettre le port en écoute en permanence à la fin d'une connection cliente.

nc -L -p 80
En suivant la même démarche que précédemment mais avec cette nouvelle option -L à la place de -l,
vous devriez vous rendre compte de cette différence.

Une autre option assez pratique dans notre cas est -v ; le mode verbose (littéralement "bavard"). Dans
ce mode netcat est plus explicite sur ce qui se passe, et même encore un peu plus en faisant -vv,
comme sur cet exemple :

nc -L -vv -p 80
Et si on pourra en apercevoir dès le lancement de la commande puisqu'il nous retournera la phrase
suivante : listening on [any] 80 ... On sait vraiment ce qui se passe, et c'est pratique surtout quand on
débute avec Netcat.

A quoi cela va bien pouvoir nous servir concrètement ? Et bien, voilà qui ne va pas nous donner la
solution mais tout du moins qui va nous laissez réfléchir là-dessus, puisque son utilisation n'a comme
limites que nos idées... si on Lance Netcat en mode listen sur le port 80 (Oula le méchant, il ne donne
pas la commande directement cette fois-ci mais c'est fait exprès pour voir si vous suivez). Sachant
que le port 80 est le port d'écoute par défaut des serveurs web, on lance notre navigateur préféré et
on entre l'URL suivante :

http://127.0.0.1

Regardez maintenant notre fenêtre de Netcat et nous devrions apercevoir le texte initial qu'envoie le
navigateur aux sites web. Par la suite autant nous dire qu'en se renseignant un peu sur les
commandes http, on pourra répondre à votre navigateur et ainsi de suite, ce qui émulerait un vrai
serveur web.

Redirections

Sachez aussi qu'avec Netcat, à l'image de ce qu'on peut faire sous Unix, vous pouvez rediriger les
entrées et sorties à l'aide des caractères < et >. Exemple :

nc -L -vv -p 21 > ftp.log logguera toutes les commandes envoyées à votre Netcat port 21

nc -L -vv -p 21 < ftp.txt


Dans ce sens c'est ftp.txt qui va servir de fichier d'éntrée à Netcat. Lancez un client telnet, et vous
verrez que Netcat ne va plus recevoir les caractères tapés au clavier mais bien ceux qui se trouvent
dans notre ftp.txt.

TP: Tcpdump,ethereal,netcat 16
Sécurité des réseaux informatiques

L'option -e peut aussi servir de redirection dans le sens où elle permet d'exécuter un programme en
entrée. Par exemple :

nc -L -vv -p 21 -e cmd.exe
Lancera le cmd.exe dans notre fenêtre cliente telnet. Mais encore mieux on pourrait détacher Netcat
de la fenêtre de commande dans laquelle on le lance. L'intérêt ? Et bien si vous voulez vous faire un
petit serveur Netcat pour de multiples raisons, alors vous allez devoir supporter la fenêtre de
commande qui le lance en permanence ? Non pas vraiment puisque l'option -d permet de détacher
Netcat de cette fenêtre et donc de le faire tourner en tâche de fond. Vous l'avez toujours dans votre
liste de processus et pouvez ainsi le killer quand vous en avez plus besoin, mais il ne s'affiche plus à
l'écran. Ainsi une personne mal intentionnée n'aurait aucun mal à laisser un port en écoute chez vous
discrètement...

Autres options

Les autres options en bref :

-n : pour n'entrer que des adresses ip numériques, pas de noms d'hôtes (mode client).
-o : pour logguer tous les octets reçus mais en hexadécimal cette fois.
-w : timeout, permet d'arrêter la tentative de connection si le temps défini par est dépassé.
-u : ce mode permet de travailler avec le protocole UDP au lieu de TCP (modes client et serveur).
-s : l'adresse ip locale sur laquelle vous allez vous mettre en écoute.

TP: Tcpdump,ethereal,netcat 17
Sécurité des réseaux informatiques

Application client/serveur

Connexion à un service tcp par telnet

Introduction au protocole FTP

Le protocole FTP (File Transfer Protocol) est, comme son nom l'indique, un protocole de transfert de
fichier. Il définit la façon selon laquelle des données doivent être transférées sur un réseau TCP/IP.

Le protocole FTP a pour objectifs de :

 permettre un partage de fichiers entre machine distante


 permettre une indépendance aux systèmes de fichiers des machines clientes et serveur
 permettre de transférer des données de manière efficace

Le modèle FTP

Le protocole FTP s'inscrit dans un modèle client-serveur, c'est-à-dire qu'une machine envoie des
ordres (le client) et que l'autre attend des requêtes pour effectuer des actions (le serveur).*

Lors d'une connexion FTP, deux canaux de transmission sont ouverts :

 Un canal pour les commandes (canal de contrôle)


 Un canal pour les données

Ainsi, le client comme le serveur possèdent deux processus permettant de gérer ces deux types
d'information :

 le DTP (Data Transfer Process) est le processus chargé d'établir la connexion et de gérer le
canal de données. Le DTP côté serveur est appelé SERVER-DTP, le DTP côté client est
appelé USER-DTP
 le PI (Protocol Interpreter) est l'interpréteur de protocole permettant de commander le DTP à
l'aide des commandes reçues sur le canal de contrôle. Il est différent sur le client et sur le
serveur :

TP: Tcpdump,ethereal,netcat 18
Sécurité des réseaux informatiques

o Le SERVER-PI est chargé d'écouter les commandes provenant d'un USER-PI sur le
canal de contrôle sur un port donné, d'établir la connexion pour le canal de contrôle,
de recevoir sur celui-ci les commandes FTP de l'USER-PI, d'y répondre et de piloter
le SERVER-DTP

o Le USER-PI est chargé d'établir la connexion avec le serveur FTP, d'envoyer les
commandes FTP, de recevoir les réponses du SERVER-PI et de contrôler le USER-
DTP si besoin

Lors de la connexion d'un client FTP à un serveur FTP, le USER-PI initie la connexion au serveur
selon le protocole Telnet. Le client envoie des commandes FTP au serveur, ce dernier les interprètes,
pilote son DTP, puis renvoie une réponse standard. Lorsque la connexion est établie, le serveur-PI
donne le port sur lequel les données seront envoyées au Client DTP. Le client DTP écoute alors sur le
port spécifié les données en provenance du serveur.

Il est important de remarquer que, les ports de contrôle et de données étant des canaux séparés, il est
possible d'envoyer les commandes à partir d'une machine et de recevoir les données sur une autre.
Ainsi, il est par exemple possible de transférer des données entre deux serveurs FTP en passant par
un client pour envoyer les instructions de contrôle et en transférant les informations entre deux
processus serveurs connectés sur le bon port.

Les commandes FTP

Toutes les communications effectuées sur le canal de contrôle suivent les recommandations du
protocole Telnet. Ainsi les commandes FTP sont des chaînes de caractères Telnet (en code NVT-
ASCII) terminées par le code de fin de ligne Telnet (c'est-à-dire la séquence <CR>+<LF>, Carriage
Return (retour chariot) suivi du caractère Line Feed, notée <CRLF>).
Si la commande FTP admet un paramètre, celui-ci est séparé de la commande par un espace (<SP>).

Les commandes FTP permettent de préciser :

 Le port utilisé
 Le mode de transfert des données
 La structure des données
 La nature de l'action à effectuer (Retrieve, List, Store, ...)

TP: Tcpdump,ethereal,netcat 19
Sécurité des réseaux informatiques

On distingue trois types de commandes FTP :

 Les commandes de contrôle d'accès


 Les commandes du paramétrage de transfert
 Les commandes de service FTP

Commande de contrôle d'accès


Commande Description
Chaîne de caractère permettant d'identifier l'utilisateur. L'identification de l'utilisateur
USER
est nécessaire pour établir une communication sur le canal de données

Chaîne de caractère spécifiant le mot de passe de l'utilisateur. Cette commande doit


PASS être immédiatement précédée de la commande USER. Il revient au client de masquer
l'affichage de cette commande pour des raisons de sécurité

Chaîne de caractère représentant le compte (account) de l'utilisateur. Cette commande


ACCT n'est généralement pas nécessaire. Lors de la réponse à l'acceptation du mot de passe,
si la réponse est 230 cette phase n'est pas nécessaire, si la réponse est 332, elle l'est

Change Working Directory : cette commande permet de changer le répertoire courant.


CWD
Cette commande nécessite le chemin d'accès au répertoire à atteindre comme argument
Change to Parent Directory : cette commande permet de remonter au répertoire parent.
CDUP Elle a été introduite pour remédier aux problèmes de nommage de répertoire parent
selon les système (généralement "..")
SMNT Structure Mount :
REIN Reinitialize :
Commande permettant de terminer la session en cours. Le serveur attend de finir le
QUIT transfert en cours le cas échéant, puis de fournir une réponse avant de fermer la
connexion

Commande de paramètres de transfert


Commande Description
PORT Chaîne de caractère permettant de préciser le numéro de port à utiliser
Commande permettant d'indiquer au serveur DTP de se mettre en attente une
PASV connexion sur un port spécifique choisi aléatoirement parmi les ports disponibles. La
réponse à cette commande est l'adresse IP de la machine et le port.
Cette commande permet de préciser le type de format dans lequel les données seront
TYPE
envoyées
Caractère Telnet précisant la structure du fichier (F pour File, R pour Record, P pour
STRU
Page)

TP: Tcpdump,ethereal,netcat 20
Sécurité des réseaux informatiques

Caractère Telnet précisant le mode de transfert des données (S pour Stream, B pour
MODE
Block, C pour Compressed)
Commande de paramètres de transfert
Commande Description
Cette commande (RETRIEVE) demande au serveur DTP une copie du fichier dont le chemin
RETR d'accès est passé en paramètre.
Cette commande (store) demande au serveur DTP d'accepter les données envoyées sur le canal
STOR de données et de les stocker dans le fichier portant le nom passé en paramètre. Si le fichier
n'existe pas, le serveur le crée, sinon il l'écrase
Cette commande est identique à la précédente, si ce n'est qu'elle demande au serveur de créer
STOU un fichier dont le nom est unique. Le nom du fichier est retourné dans la réponse
Grâce à cette commande (append) les données envoyées sont concaténées dans le fichier
APPE portant le nom passé en paramètre s'il existe déjà, dans le cas contraire il est créé
Cette commande (allocate) demande au serveur de prévoir un espace de stockage suffisant
ALLO pour contenir le fichier dont le nom est passé en argument.
Cette commande (restart) permet de reprendre un transfert là où il s'était arrêté. Pour cela cette
commande envoie en paramètre le marqueur représentant la position dans le fichier à laquelle
REST le transfert avait été interrompu. Cette commande doit être immédiatement suivi d'une
commande de transfert.
Cette commande (rename from) permet de renommer un fichier. Elle indique en paramètre le
RNFR nom du fichier à renommer et doit être immédiatement suivie de la commande RNTO
Cette commande (rename to) permet de renommer un fichier. Elle indique en paramètre le
RNTO nom du fichier à renommer et doit être immédiatement précédée de la commande RNFR
Cette commande (abort) indique au serveur DTP d'abandonner tous les transferts associés à la
ABOR commande précédente. Si aucune connexion de données n'est ouverte, le serveur DTP ne fait
rien, sinon il la ferme. Le canal de contrôle reste par contre ouvert.
Cette commande (delete) permet de supprimer le fichier dont le nom est passé en paramètre.
DELE Cette commande est irrémédiable, seule une confirmation au niveau du client peut être faite.
Cette commande (remove directory) permet de supprimer un répertoire. Elle indique en
RMD paramètre le nom du répertoire à supprimer
Cette commande (make directory) permet de créer un répertoire. Elle indique en paramètre le
MKD nom du répertoire à créer
Cette commande (print working directory) permet de renvoyer le chemin complet du répertoire
PWD courant
Cette commande permet de renvoyer la liste des fichiers et répertoires présents dans le
répertoire courant. Cette liste est envoyée sur le DTP passif. Il est possible de passer en
LIST paramètre de cette commande un nom de répertoire, le serveur DTP enverra la liste des fichiers
dans le répertoire passé en paramètre
Cette commande (name liste) permet d'envoyer la liste des fichiers et répertoires dans le
NLST répertoire courant
Cette commande (site parameters) permet au serveur de proposer des services spécifiques, non
SITE définis dans le protocole FTP
SYST Cette commande (system) permet d'envoyer des informations sur le serveur distant
Cette commande (status) permet d'émettre l'état du serveur, par exemple pour connaître la
STAT progression d'un transfert en cours. Cette commande accepte en argument un chemin d'accès,
elle retourne alors les mêmes informations que LIST mais sur le canal de contrôle
Cette commande permet de connaître l'ensemble des commandes comprises par le serveur. Les
HELP informations sont retournées sur le canal de contrôle
NOOP Cette commande (no operations) sert uniquement à obtenir une commande OK du serveur.

TP: Tcpdump,ethereal,netcat 21
Sécurité des réseaux informatiques

Elle peut servir uniquement pour ne pas être déconnecté après un temps d'inactivité trop élevé

Travail élaboré :
A /
A. Connexion à un service tcp par telnet
Pour accéder par telnet au service ftp on tape la commande suivante:

Slah:~ # telnet 192.168.0.5 21


Trying 192.168.0.5...
Connected to 192.168.0.5.
Escape character is '^]'.
220 (vsFTPd 1.2.1)

Pour se logger on tape les deux llignes suivantes:


USER slah
331 Please specify the password.
PASS 08330775
230 Login successful.

pour diriger la sortie vers le port 44847 on utilise la commande suivante:


PORT 192,168,0,5,175,47
200 PORT command successful. Consider using PASV.

Remarque

192,168,0,5,175,47signifie :
192,168,0,5 est l'adresse IP de la machine sur laquelle on veut rediriger le flux (le séparateur étant la
virgule',' au lieux du point '.'.
175,47 correspond au nombre 44847 écrit sous la forme de deux octets.175=44847 div 256,
47=44847 mod 256.

B- commande netcat :
- Pour vérifier si le package nc est bien installé, on tape la commande :
rpm –qa nc*
qui va retourner dans notre cas le nom de package est donc le package nc est bien installé dans notre
machine

-Pour lancer nc en mode écoute (listen) sur le port en tape la commande suivante :
nc -l -p 44847
-l : pour le mettre en mode listen / écoute

TP: Tcpdump,ethereal,netcat 22
Sécurité des réseaux informatiques

-p : pour qu'il écoute sur le port

C- commande netcat et ftp


Afin de lister le contenu du répertoire d’accueil lors de la session ouverte ftp (de la partie A), on tape la

commande : LIST
Donc le résultat de LIST va être redirigé par netcat vers la machine 192.168.0.5 à travers le port
44847

TP: Tcpdump,ethereal,netcat 23
Sécurité des réseaux informatiques

Sendmail

Présentation :

En utilisant la commande telnet on va effectuer une connexion à un service sendmail


telnet 192.68.0.5 25
Ce service utilise le protocole SMTP comme protocole pour le transfert des mails. La version présent
dans notre machine est : 10.6 11/15/03

Le protocole SMTP

Le protocole SMTP est fidèle à son nom : il est fidèle à son nom : il est simple. Bien que défini dans le
cadre des standards INTERNET, il ne fait aucune supposition sur les protocoles des couches
inférieures. Lui mêmes se situe dans la couche session. Il est en général bâti au dessus de TCP.
La première opération consiste, pour l’utilisateur, à crée un canal de communication bidirectionnel
avec le destinataire. Par le bais de ce canal vont circuler les commandes, les réponses à celle-ci et le
courrier lui-même.
L’initiateur envoie des commandes et le courrier, le récepteur les exécute s’il le peut et retourne des
messages d’acquittement. Une fois prêt, le récepteur le signale et le transfert peut commencer.
Notons en particulier 250, pour OK, et 500 pour Commande inconnue. Comme ftp, SMTP est
composé de commandes suivies éventuellement d’arguments, sous forme de chaînes de caractères
ASCII. Un espace sépare les éléments de celui-ci, et une fin de ligne, c'est-à-dire la suite <CR><LF>,
délimite la fin d’une commande et provoque sa prise en compte. Il y a14 commandes dont tous les
mnémoniques sont composés de 4 lettres en majuscules par convention.
Les commandes qu’ont auront besoin sont :

HELO initiateur : ce devrait être la première commande de la session. Elle permet à l’initiateur de se
présenter. Il s’agit bien d’un nom de machine et nom d’utilisateur.
Le récepteur répond par un acquittement positif, code 250, et donne sa propre identification. La
session peut alors débuter.

QUIT : l’initiateur demande à close la session. La clôture devient effective après un acquittement
positif provenant du destinataire. Cependant si ce dernier détecte une fin anormale, due par exemple
à une rupture de connexion, il doit agir comme s’il avait reçu une commande RESET

TP: Tcpdump,ethereal,netcat 24
Sécurité des réseaux informatiques

MAIL From :<adresse> : cette commande marque le début d’un transfert de courrier et suit la
commande HELO. Elle possède en argument l’adresse de l’expéditeur, le reverse path. Cette
commande peut avoir des arguments supplémentaires dans le cadre des extensions de SMTP.

RCPT To :<adresse> : on donne ici l’adresse du destinataire, le forward path. Plusieurs commandes
RCPT peuvent se suivre pour indiquer d’autres destinataires du même message. Le récepteur
contrôle si le destinataire est local et vérifie alors son existence. S’il n’est pas local aucune vérification
n’est faite
DATA : indique le début de transfert d’un message. Le récepteur considère les lignes suivantes
comme le texte du message. Une ligne composés du seul caractère  « . » constitue l’indication de fin.

Travail élaboré

HELO
501 5.0.0 HELO requires domain address
HELO slah
250 Slah.site Hello localhost [127.0.0.1], pleased to meet you
MAIL FROM slah_saadaoui@yahoo.fr
501 5.5.2 Syntax error in parameters scanning "FROM"
MAIL FROM : slah@slah
250 2.1.0 slah@slah... Sender ok
RCPT TO slah@slah
501 5.5.2 Syntax error in parameters scanning "TO"
RCPT TO : slah@Slah
250 2.1.5 slah@Slah... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
salut
ceci est un mail de test.
.
250 2.0.0 i9SLRY6X004269 Message accepted for delivery
QUIT
221 2.0.0 Slah.site closing connection
Connection closed by foreign host.
Slah:~ # mail
mailx version nail 10.6 11/15/03. Type ? for help.
"/var/spool/mail/root": 9 messages 9 new
>N 1 root@linux.site Tue Oct 19 16:12 150/5793 SuSEconfig:
openssh-changes
N 2 root@linux.site Tue Oct 19 16:12 28/881 SuSEconfig:
xntp.caveats
N 3 root@linux.site Tue Oct 19 16:12 43/1822 SuSEconfig:
SuSEfirewall2_update
N 4 MAILER-DAEMON@Slah Thu Oct 21 14:11 80/2593 Warning: could
not send message for past 4 hours
N 5 MAILER-DAEMON@Slah Thu Oct 21 14:11 86/2937 Warning: could
not send message for past 4 hours
N 6 MAILER-DAEMON@Slah Thu Oct 21 14:11 88/3225 Warning: could
not send message for past 4 hours
N 7 root@Slah.site Thu Oct 21 14:11 29/947 SuSEconfig:
samba-notify

TP: Tcpdump,ethereal,netcat 25
Sécurité des réseaux informatiques

N 8 root@Slah.site Thu Oct 21 14:11 35/1291 SuSEconfig: Sendmail-


local-only
N 9 root@Slah.site Thu Oct 21 14:11 37/1579 SuSEconfig: pbpg-
changes
?
?
? 0
0: Invalid message number
? exit

Slah:~ # pwd
/root
Slah:~ # su slah

Salut slah
Nous somme le Thu Oct 28 23:32:59 CEST 2004

slah@Slah:/root> mail
mailx version nail 10.6 11/15/03. Type ? for help.
"/var/spool/mail/slah": 1 message 1 new
>N 1 slah@Slah.site Thu Oct 28 23:31 13/451
? 1
Message 1:
From slah@Slah.site Thu Oct 28 23:31:02 2004
Date: Thu, 28 Oct 2004 23:27:34 +0200
From: Saadaoui Slah <slah@Slah.site>
To: undisclosed-recipients:;

salut
ceci est un mail de test.

? q
Saved 1 message in mbox
slah@Slah:/root>

TP: Tcpdump,ethereal,netcat 26

Vous aimerez peut-être aussi