Qu'est-ce que Netcat ?
Netcat est un outil en ligne de commande permettant d'écrire et de lire des données dans le réseau. Pour le transfert des données, Netcat utilise les protocoles réseau TCP/IP et UDP. À l’origine, cet outil vient de l’univers Unix mais il est aujourd’hui disponible sur toutes les plateformes.
Du fait de sa polyvalence, Netcat est souvent surnommé le « couteau suisse du TCP/IP ». Il permet par exemple de diagnostiquer les erreurs et les problèmes mettant en péril la fonctionnalité et la sécurité d’un réseau. La palette de fonctionnalités de Netcat inclut également le balayage de ports, le streaming de données ou les simples transferts de données. D’autre part, il permet de mettre en place des serveurs de chat et des serveurs Web ainsi que de lancer des demandes par Email. Ce logiciel simple développé dès le milieu des années 1990 peut agir en mode serveur et client.
- Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
- 1 certificat SSL Wildcard par contrat
- Boîte email de 2 Go
Comment s’utilise Netcat ?
Netcat peut être utilisé sur toutes les plateformes via l’invite de commande. Sous Linux et macOS, cet outil en ligne de commande est préinstallé. Les utilisateurs de Windows devront télécharger le programme depuis Internet. L’utilisation sous Windows n’implique pas d’installation particulière mais simplement le téléchargement du fichier exécutable (nc.exe). Vous pourrez ensuite utiliser Netcat à l’aide de l’invite de commande (cmd.exe) pour réaliser diverses tâches dans le réseau. Pour lancer l’invite de commande, procédez comme suit :
- Appuyez sur la combinaison de touches [Windows] + [R]
- Saisissez « cmd » dans le champ de saisie (1)
- Appuyez sur le bouton OK (2)
cmd.exe s’ouvre ensuite avec l’affichage suivant :
Pour pouvoir démarrer le fichier exécutable (nc.exe), vous devez également changer l’emplacement d’enregistrement. Sous Windows, si vous avez enregistré le fichier nc.exe dans un dossier « netcat » sur le bureau, la syntaxe ressemblera à ce qui suit :
cd C:\Users\USERNAME\Desktop\netcat\
La commande « cd » (change directory) active le changement et le chemin qui suit adresse le dossier d’enregistrement du fichier nc.exe. Dans l’invite de commande, le changement se présente comme suit :
Netcat a besoin de droits d’accès avancés pour certaines opérations. Sous Windows 10, il suffit de quelques étapes simples pour démarrer l’invite de commande en tant qu’administrateur :
- Cliquez droit sur le symbole Windows à gauche de la barre des tâches ou appuyez sur la combinaison de touches [Windows] + [X]
- Dans le menu contextuel qui s’ouvre, sélectionnez l’entrée « Invite de commande (administrateur) » :
L’utilisation de Netcat comporte certains risques en matière de sécurité. Par conséquent, cet outil doit uniquement être utilisé par des utilisateurs et des administrateurs système expérimentés, en particulier dans le mode offrant des droits d’accès avancés.
Syntaxe Netcat : quelles sont les commandes et les options disponibles ?
La syntaxe de Netcat comporte deux composants de base : la commande de base « nc » qui est toujours identique et suivie de différentes « options ». La commande de base adresse le fichier exécutable nc.exe et les options définissent l’étendue exacte des fonctionnalités d’une version Netcat. Les différentes possibilités varient en fonction du système d’exploitation et de la version de Netcat utilisés.
Le tableau suivant se limite aux principales options disponibles dans la plupart des versions sur Linux, macOS et Windows. Par ailleurs, d’autres options utiles sont listées, en particulier les extensions disponibles pour la version de Netcat GNU très répandue pour Linux, Unix et macOS :
Options | Description |
-4 | Impose l’utilisation d’IPv4 (Netcat GNU) |
-6 | Impose l’utilisation d’IPv6 (Netcat GNU) |
-d | Détache Netcat de la console (fonctionnement en arrière-plan ; disponible sous Windows et dans les versions actuelles de Netcat GNU) |
-D | Active l’option pour le débogage des sockets (Netcat GNU) |
-h (display help) | Affiche l’aide (commandes/options avec un bref descriptif) |
-i (secs) | Retard en secondes pour les lignes envoyées ou les ports scannés |
-k | Netcat attend une nouvelle connexion après la fin de la connexion (uniquement Netcat GNU et uniquement en association avec l’option « -l ») |
-l (listen mode) | Mode écoute et serveur pour les demandes de connexion entrantes (via le port spécifié) |
-L Listen harder | Fait en sorte que Netcat continue à fonctionner en mode écoute, même après des interruptions de connexion côté client (toujours avec les mêmes paramètres ; uniquement pris en charge par la version pour Windows) |
-n (numeric-only) | Uniquement les numéros IP, aucun nom DNS |
-o (file) | Un vidage hexadécimal du trafic de données est effectué (le contenu des fichiers est affiché dans une vue hexadécimale) ; sert à la recherche d’erreurs (débogage des applications réseau) ; un enregistrement de la communication est possible (pour les paquets sortants et entrants) |
-p (port) | Indique le port source local que Netcat doit utiliser pour les connexions sortantes |
-r | Utilisation de valeurs de port aléatoires lors du scan (pour les ports locaux et distants) |
-s (adress) | Détermine l’adresse source locale (adresse IP ou nom) |
-t | Mode Telnet (permet par ex. d’adresser le serveur via Telnet) ; requiert une compilation spécifique de Netcat. Dans le cas contraire, cette option n’est pas disponible |
-u | Utilise le mode UDP (au lieu de TCP) |
-U (gateway) | Netcat utilise les Domain Sockets d’Unix (Netcat GNU) |
-v | Sortie détaillée (est par exemple responsable de l’affichage et du détail des messages d’erreur affichés) |
-w (sec) | Définit des délais d’inactivité : pour l’établissement de la connexion et la fermeture d’une connexion (unité : secondes) |
-z | Mode scan de port (mode zéro I/O) ; seuls les services écoutants sont scannés (pas d’envoi de données) |
La consultation de l’aide avec le paramètre « -h » illustre de façon claire l’utilisation de la syntaxe Netcat :
C:\Users\USERNAME\Desktop\netcat>nc -h
Par exemple, si l’on souhaite définir un serveur ou un client pour le transfert des données au sein du réseau, la syntaxe suivante doit être respectée :
Mode client (connect to somewhere) :
nc [options] [adresse IP/hostname] [port]
Mode serveur (listen for inbound) :
nc -l -p port [options] [hostname] [port]
Le schéma de base pour l’exécution d’un scan de port est le suivant :
nc [options] [host] [port]
Copier des fichiers avec Netcat
La copie de fichiers est l’une des fonctionnalités de Netcat souvent utilisées. Elle permet de transférer de gros volumes de données et de cloner des partitions ou des disques durs entiers. Dans notre exemple, le fichier fichiertest.txt doit être copié de l’ordinateur A (client) à l’ordinateur B (serveur) via le port 6790. Les étapes suivantes sont nécessaires :
- Détermination de l’adresse IP de l’ordinateur B (PC cible)
- Création du fichier test fichiertest.txt dans le répertoire de Netcat de l’ordinateur A ; dans cet exemple, le fichier test se trouve dans le répertoire de Netcat du client. Sur l’ordinateur cible B, le fichier copié atterrit également dans le dossier Netcat (les autres chemins d’accès doivent être ajustés en conséquence).
- Saisie de la syntaxe Netcat dans l’invite de commande
Ordinateur B (agit en tant que serveur destinataire) :
nc -l -p 6790 > fichiertest.txt
ENTER
Ordinateur A (agit en tant que client envoyant) :
nc [adresse IP ordinateur B] 6790 < fichiertest.txt
ENTER
La réussite du transfert n’est pas confirmée dans l’invite de commande. Vous pouvez vérifier si le transfert a fonctionné en jetant un œil dans le répertoire de destination.
Effectuer un scan de port
Il est possible d’effectuer un scan et de détecter les ports ouverts pour résoudre les erreurs et les problèmes de sécurité. Dans l’exemple suivant, l’ordinateur est doté de l’adresse IP 192.168.11.1. Après l’adresse IP, il est possible d’indiquer des ports individuels (par ex. 1), plusieurs ports (1, 2, 3, etc.) ou toute une plage pour le scan (1–1024) :
nc -w 2 -z 192.168.10.1 1-1024
L’option « -w » permet de définir un délai (dans cet exemple : « Essaie d’établir une connexion avec les ports pendant deux secondes »). L’option « -z » indique à Netcat de rechercher uniquement les services écoutants et de ne pas envoyer de données.
Si l’on ajoute l’option « -v », on obtient des informations plus précises concernant le scan :
nc -v -w 2 -z 192.168.11.1 1-1024
Netcat confirme un port ouvert détecté avec le message « succeeded! » :
Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!
La plupart des services connus tels que la messagerie, FTP ou SSH fonctionnent sur les ports scannés 1-1024. Dans cet exemple, Netcat a trouvé le port SMTP ouvert d’un client de messagerie.
Utiliser Netcat comme simple programme de chat
Netcat peut établir une connexion TCP ou UDP simple entre deux ordinateurs puis ouvrir un canal de communication. Dans l’exemple suivant, le récepteur est tout d’abord installé sur le système distant et est placé en mode écoute. Il agit alors en tant que partie « écoutante » et utilise le port 1605 pour la réception des données. Il est accessible à l’adresse IP 192.168.11.1 :
nc -l -p 1605
ENTER
Une connexion au destinataire des messages est alors établie par l’ordinateur local (PC à l’origine de l’envoi) :
nc 192.168.11.1 1605
ENTER
Lorsque la connexion a été établie avec succès, les messages peuvent circuler dans les deux sens.
Mise en place d’un serveur Web simple
Netcat peut également servir à mettre en place un serveur Web simple. Par exemple, si le serveur d’origine n’est pas accessible en raison de problèmes techniques, Netcat permettra au minimum de réagir aux demandes avec un message d’erreur préparé (sous la forme d’un fichier html) informant sur la panne :
nc -l -v -p 85 -w10 -L < messagederreur.html
Netcat attend les requêtes sur le port 85 et réagit à ces dernières avec le fichier messagederreur.html. L’option « -L » veille au maintien du processus Netcat au-delà d’une requête unique. Le paramètre « -w » met fin à la connexion après 10 secondes (délai d’inactivité). Le paramètre « -v » fournit à l’exploitant du serveur des informations sur les requêtes et documente par exemple le système d’exploitation et le type de navigateur de l’ordinateur à l’origine de la requête par des messages de statut.
Netcat comporte-t-il un risque pour la sécurité ?
Il est incontestable que Netcat constitue un outil polyvalent dans le réseau et y remplit de nombreuses tâches utiles. Par conséquent, il n’est pas étonnant qu’il soit particulièrement apprécié des administrateurs système et réseau, d’autant plus que la création de code Netcat est relativement facile à prendre en main après un certain temps d’adaptation.
Cependant, cette médaille comporte un revers : Netcat sert également d’outil aux hackers et peut être utilisé pour espionner le réseau, détecter les failles de sécurité, contourner les pare-feu et exploiter les portes dérobées permettant de prendre le contrôle d’ordinateurs. Les programmes anti-virus déclenchent par exemple une alarme lorsqu’une version de Netcat se trouve sur l’ordinateur et permet l’exécution de l’option « -e » par une compilation spéciale.
Le déclencheur de l’option -e dans le code peut démarrer une interface interactive (Backdoor Shell) sur un ordinateur distant. Une personne bénéficiant d’un accès libre au fichier cmd.exe sous Windows peut causer des dommages considérables. Un Backdoor Shell peut également charger d’autres programmes malveillants. Dans leur code, les hackers utilisent souvent le paramètre Netcat « -d » permettant à l’outil en ligne de commande d’agir en arrière-plan sous Windows en étant invisible pour l’utilisateur et pouvant causer des ravages à distance.
Pour éviter les versions hackées, Netcat doit uniquement être téléchargé depuis des sources sûres sur Internet. Par ailleurs, les experts en sécurité recommandent de peser clairement l’utilité d’intégrer un outil comme Netcat dans l’installation de systèmes (notamment de systèmes frontend).
Autre risque pour la sécurité : en principe, Netcat transfert les données sans cryptage en texte clair. C’est pourquoi il convient d’utiliser uniquement cet outil dans les réseaux très sécurisés ou – encore mieux – sans connexion à Internet. Pour le transfert des données via Internet, le successeur de Netcat Cryptcat est mieux adapté puisqu’il procède à un cryptage des données. Lors du transfert de données sensibles, il est également possible de faire passer les connexions par un tunnel SSH.
Les avantages et les risques de Netcat montrent clairement qu’il s’agit d’un outil sur lequel les utilisateurs ambitieux, les administrateurs système et les responsables informatiques doivent impérativement se pencher. Toute personne en connaissant les avantages profitera de la polyvalence et de l’efficacité de cet outil d’administration à distance. En ayant la possibilité d’apprécier et de définir les risques pour la sécurité de son réseau, elle pourra empêcher les attaques des hackers ou en atténuer les dommages par des mesures préventives.
Cependant, cet outil créé il y a plus de 20 ans dans le milieu des hackers est aujourd'hui considéré comme dépassé. Il existe aujourd’hui de meilleurs outils pour réaliser différentes activités dans le réseau. En dehors de Cryptcat, on peut également citer Socat, qui peut utiliser le protocole réseau SCTP en plus des protocoles TCP et UDP et qui travaille via un serveur proxy et supporte le cryptage. À l’instar de Netcat, il fonctionne sur toutes les plateformes courantes.
Netcat étant polyvalent, simple et rapide et disposant d’une syntaxe de commande très peu complexe, cet outil dispose toutefois aujourd’hui encore d’une position privilégiée. Associer avec l’outil d’administration Netsh, il offre de nombreuses autres possibilités pour effectuer un diagnostic et une administration efficaces du réseau.