Introduction
Dans ce laboratoire, vous découvrirez les fondamentaux de la communication réseau à l'aide de Netcat, un outil réseau polyvalent souvent qualifié de « couteau suisse » du réseau. Vous apprendrez comment cet utilitaire puissant permet de lire et d'écrire des données via des connexions réseau en utilisant les protocoles TCP ou UDP.
Grâce à une approche pratique, vous explorerez les bases de la communication client-serveur, créerez un système de messagerie simple et comprendrez des concepts réseau essentiels comme les ports. Le laboratoire introduira également des techniques de chiffrement de base pour sécuriser la transmission des données.
Installation de Netcat
Avant de commencer nos communications d'agents secrets, nous devons nous équiper de l'outil approprié. Netcat est souvent appelé le « couteau suisse » des outils réseau car il peut gérer de nombreuses tâches différentes. Installons Netcat sur notre système étape par étape.
- Tout d'abord, ouvrons le terminal. Sur votre bureau, localisez et ouvrez le terminal Xfce. C'est dans le terminal que nous saisirons toutes nos commandes pour utiliser Netcat.

Remarque : Les utilisateurs gratuits ne peuvent pas se connecter à Internet, Netcat est donc déjà préinstallé dans l'environnement du laboratoire. Vous pouvez passer directement à l'étape 4 de la liste (vérifier si Netcat est installé). Passez à un compte pro pour vous entraîner à installer Netcat vous-même.
Utilisateurs Pro uniquement
- Une fois le terminal ouvert, nous devons mettre à jour les listes de paquets. Cela garantit que nous obtenons la dernière version de Netcat. Tapez la commande suivante et appuyez sur Entrée :
sudo apt update
Le système pourrait vous demander votre mot de passe. Tapez-le (les caractères ne s'afficheront pas pendant la saisie) et appuyez sur Entrée. La partie sudo signifie que nous exécutons cette commande avec des privilèges d'administrateur.
- Maintenant que nos listes de paquets sont à jour, installons Netcat. Le gestionnaire de paquets gérera automatiquement toutes les dépendances. Entrez la commande suivante :
sudo apt install netcat -y
L'option -y répond automatiquement « oui » à toutes les invites, ce qui rend l'installation plus fluide. C'est utile lorsque vous êtes certain de vouloir installer le paquet.
nc -h
Vous devriez voir une sortie commençant par "OpenBSD netcat" suivie d'une liste d'options. Cela signifie que Netcat est installé et prêt à l'emploi. L'option -h affiche les informations d'aide, ce qui est un bon moyen de tester si un programme fonctionne.
- Félicitations ! Vous venez d'installer un outil réseau puissant. Netcat possède de nombreuses fonctionnalités, allant du simple transfert de fichiers à la création de connexions réseau. Dans ce laboratoire, nous nous concentrerons sur son utilisation de base pour vous aider à comprendre ses capacités. Considérez Netcat comme un moyen simple de connecter des ordinateurs et d'envoyer des informations entre eux.
Comprendre les ports et créer un écouteur
Maintenant que notre outil de communication est prêt, apprenons ce que sont les ports et configurons un écouteur. En réseau, les ports sont comme les différentes fréquences d'une radio : ils permettent à plusieurs communications d'avoir lieu simultanément sur le même appareil. Considérez-les comme des portes numérotées où chaque porte mène à un service ou une application différente sur votre ordinateur.
Créons un écouteur. Nous utiliserons le port 12345 pour notre communication. Les numéros de port vont de 0 à 65535, et nous choisissons 12345 car il est facile à retenir et n'est généralement pas utilisé par les services système. Dans le terminal, tapez :
nc -l 12345Cette commande indique à Netcat d'écouter (option
-l) sur le port 12345. Le-lsignifie mode « listen » (écoute), ce qui signifie que votre ordinateur attendra les connexions entrantes sur ce port.Le terminal semblera se figer. Ne vous inquiétez pas ! C'est un comportement attendu car Netcat écoute activement et attend que quelqu'un se connecte au port 12345. Le curseur clignotant signifie que le programme fonctionne correctement en mode écoute.
Pour tester notre écouteur, nous devons ouvrir une autre fenêtre de terminal. Vous pouvez le faire en faisant un clic droit sur l'icône du terminal et en sélectionnant « New Terminal » ou en utilisant le raccourci Ctrl+Shift+N. Ce second terminal agira comme notre « client » qui se connecte à l'écouteur.
Dans ce nouveau terminal, connectons-nous à notre écouteur. Tapez :
nc localhost 12345Cette commande indique à Netcat de se connecter à
localhost(ce qui signifie votre propre ordinateur) sur le port 12345.localhostest un nom d'hôte spécial qui fait toujours référence à votre machine actuelle.Maintenant, tapez un message simple comme « Hello » dans ce second terminal et appuyez sur Entrée. Vous devriez voir le message apparaître dans le premier terminal où l'écouteur est en cours d'exécution. Cela démontre comment les données voyagent du terminal client vers le terminal d'écoute via le port réseau.

Vous pouvez continuer à taper des messages dans l'un ou l'autre terminal, et ils apparaîtront dans l'autre. Cela montre la capacité full-duplex de Netcat, ce qui signifie que la communication peut circuler dans les deux sens simultanément. Essayez d'envoyer quelques messages pour voir comment cela fonctionne.
Pour terminer la connexion, appuyez sur Ctrl+C dans les deux terminaux. Ce raccourci clavier envoie un signal d'interruption qui ferme proprement les sessions Netcat. Il est important de fermer correctement les connexions lorsque vous avez terminé vos tests.
Transfert de fichiers avec Netcat
Maintenant que nous avons appris à établir une communication réseau de base avec Netcat, explorons l'une de ses applications les plus pratiques : le transfert de fichiers entre systèmes. Cette capacité simple mais puissante fait de Netcat un outil précieux pour les administrateurs système et les ingénieurs réseau.
Tout d'abord, créons un exemple de fichier à transférer. Dans votre terminal, tapez :
cd ~/project echo "Top Secret: The cake recipe is actually a lie" > secret.txtCette commande effectue deux actions : elle se déplace dans votre répertoire de projet et crée un nouveau fichier nommé
secret.txtcontenant notre message d'exemple. Le symbole>redirige la sortie de la commandeechovers un fichier.Configurons maintenant la réception de notre transfert de fichier. Ouvrez une fenêtre de terminal et exécutez :
cd ~/project nc -l 12345 > received_secret.txtIci,
nc -l 12345démarre Netcat en mode écoute sur le port 12345. Le>redirige toutes les données entrantes vers un nouveau fichier nomméreceived_secret.txt. Ce terminal attendra désormais silencieusement les connexions entrantes.Dans une fenêtre de terminal séparée (tout en laissant la première ouverte), envoyons notre fichier :
cd ~/project nc localhost 12345 < secret.txtCette commande utilise Netcat pour se connecter à notre écouteur (
localhostsignifie « cette même machine ») sur le port 12345. Le symbole<indique à Netcat d'utilisersecret.txtcomme entrée, envoyant ainsi le contenu du fichier via la connexion réseau.Le transfert est instantané car les deux extrémités se trouvent sur la même machine. Pour vérifier le succès du transfert, vérifiez le contenu du fichier reçu :
cat received_secret.txtLa commande
cataffiche le contenu du fichier, qui devrait correspondre exactement à notre message secret original.

- Félicitations ! Vous avez transféré un fichier avec succès en utilisant Netcat. Bien que nous ayons utilisé
localhostpour cette démonstration, le même processus fonctionne entre différents ordinateurs sur un réseau ; remplacez simplementlocalhostpar l'adresse IP de l'ordinateur récepteur. Cette méthode simple peut être incroyablement utile pour des transferts de fichiers rapides lorsque des protocoles plus complexes ne sont pas disponibles.
Mise en œuvre d'une communication chiffrée
Dans notre dernière étape, ajoutons une couche de sécurité à notre communication en implémentant le chiffrement via OpenSSL et en l'intégrant à Netcat. Le chiffrement est essentiel pour protéger les informations sensibles contre l'interception et la lecture par des parties non autorisées lors de la transmission réseau.
Nous avons déjà appris à utiliser OpenSSL dans les laboratoires précédents. OpenSSL fournit des fonctions cryptographiques robustes que nous exploiterons pour sécuriser nos messages. Plus précisément, nous utiliserons la commande openssl enc pour chiffrer et déchiffrer les messages à l'aide du chiffrement AES-256-CBC, un algorithme de chiffrement symétrique puissant. Nous utiliserons également une phrase secrète pour dériver la clé de chiffrement ; considérez cela comme un secret partagé entre l'expéditeur et le destinataire.
Tout d'abord, créons le script de l'expéditeur. Ce script gérera le chiffrement et l'envoi des messages. Ouvrez un nouveau fichier nommé
secure_sender.sh:nano secure_sender.shAjoutez le contenu suivant au fichier (vous pouvez copier et coller le contenu) :
#!/bin/bash echo "Secure Sender - Enter messages to send. Press Ctrl+C to exit." while true; do echo "Enter message:" read message encrypted=$(echo "$message" | openssl enc -aes-256-cbc -salt -base64 -pbkdf2 -iter 10000 -pass pass:secretpassword 2> /dev/null) echo "$encrypted" | nc -N localhost 12345 doneCe script fonctionne comme suit :
- Il vous demande continuellement des messages dans une boucle.
- Il prend votre saisie et la transmet via un tube (pipe) à OpenSSL pour le chiffrement.
- Il utilise Netcat (
nc) pour envoyer les données chiffrées vers le port 12345 sur localhost. - Les paramètres de chiffrement incluent un sel (salt) pour plus de sécurité, un encodage base64 pour une transmission sûre, et une dérivation de clé PBKDF2 avec 10 000 itérations.

Appuyez sur
Ctrl+X, puisY, etEntréepour enregistrer et quitter le fichier. Rendez le script exécutable :chmod +x secure_sender.shCréons maintenant le script du récepteur. Ce script écoutera et déchiffrera les messages entrants. Ouvrez un nouveau fichier nommé
secure_receiver.sh:nano secure_receiver.shAjoutez le contenu suivant :
#!/bin/bash echo "Secure Receiver - Waiting for messages. Press Ctrl+C to exit." while true; do encrypted=$(nc -l 12345) if [ ! -z "$encrypted" ]; then decrypted=$(echo "$encrypted" | openssl enc -aes-256-cbc -d -salt -base64 -pbkdf2 -iter 10000 -pass pass:secretpassword 2> /dev/null) echo "Received message: $decrypted" fi doneSur l'environnement Ubuntu 22.04 utilisé par ce laboratoire, la syntaxe par défaut de l'écouteur OpenBSD Netcat est
nc -l 12345. N'ajoutez pas-plors de l'utilisation de-lici.Ce script :
- Écoute continuellement sur le port 12345 les données entrantes.
- Lorsque des données sont reçues, il les transmet via un tube à OpenSSL pour le déchiffrement.
- Utilise les mêmes paramètres de chiffrement que l'expéditeur pour déchiffrer correctement le message.
- Affiche le message en texte clair original.
Appuyez sur
Ctrl+X, puisY, etEntréepour enregistrer et quitter le fichier. Rendez le script exécutable :chmod +x secure_receiver.shTestons maintenant notre système de communication chiffrée. Vous aurez besoin de deux fenêtres de terminal ouvertes simultanément : une pour le récepteur et une pour l'expéditeur.
Dans le premier terminal, démarrez le récepteur :
./secure_receiver.shVous verrez un message indiquant que le récepteur attend des messages. Le récepteur écoute maintenant activement sur le port 12345.
Dans le second terminal, démarrez l'expéditeur :
./secure_sender.shVous serez invité à saisir des messages. Tout ce que vous tapez ici sera chiffré avant d'être envoyé sur le réseau.
Dans le terminal de l'expéditeur, tapez un message et appuyez sur Entrée. Vous devriez voir le message chiffré être envoyé (bien que vous ne verrez la version chiffrée que brièvement pendant la transmission).

Dans le terminal du récepteur, vous devriez voir le message déchiffré apparaître exactement tel que vous l'avez tapé dans le terminal de l'expéditeur.
Vous pouvez continuer à envoyer des messages depuis le terminal de l'expéditeur, et ils seront automatiquement chiffrés, envoyés, reçus et déchiffrés dans le terminal du récepteur. Cela démontre une boucle de communication sécurisée complète.
Pour terminer la communication, appuyez sur Ctrl+C dans les deux terminaux. Cela termine les deux scripts en toute sécurité.
Cette configuration démontre un système de communication chiffrée simple mais efficace. Bien que nous utilisions localhost pour les tests, cette même approche fonctionne sur les réseaux. Les messages sont automatiquement chiffrés avant la transmission et déchiffrés à la réception, fournissant un canal de communication sécurisé. N'oubliez pas que dans des applications réelles, vous devriez utiliser des méthodes d'échange de clés plus sécurisées qu'un mot de passe codé en dur.
Résumé
Dans ce laboratoire, vous avez appris les fondamentaux de la communication réseau à l'aide de Netcat et exploré des techniques de chiffrement de base pour le transfert sécurisé de données. Vous vous êtes exercé à installer Netcat, à établir des connexions via des ports spécifiques et à transférer des fichiers entre systèmes.
Cette expérience pratique a démontré l'importance du chiffrement dans les communications réseau grâce à une mise en œuvre concrète avec OpenSSL. Ces compétences fondamentales constituent un point de départ solide pour comprendre des concepts de cybersécurité plus complexes et des protocoles de communication sécurisés.



