Netcat est un outil en ligne de commande per­met­tant d'écrire et de lire des données dans le réseau. Pour le transfert des données, Netcat utilise les pro­to­coles réseau TCP/IP et UDP. À l’origine, cet outil vient de l’univers Unix mais il est aujourd’hui dis­po­nible sur toutes les pla­te­formes.

Du fait de sa po­ly­va­lence, Netcat est souvent surnommé le « couteau suisse du TCP/IP ». Il permet par exemple de diag­nos­ti­quer les erreurs et les problèmes mettant en péril la fonc­tion­na­lité et la sécurité d’un réseau. La palette de fonc­tion­na­li­tés de Netcat inclut également le balayage de ports, le streaming de données ou les simples trans­ferts 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.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

Comment s’utilise Netcat ?

Netcat peut être utilisé sur toutes les pla­te­formes via l’invite de commande. Sous Linux et macOS, cet outil en ligne de commande est préins­tallé. Les uti­li­sa­teurs de Windows devront té­lé­char­ger le programme depuis Internet. L’uti­li­sa­tion sous Windows n’implique pas d’ins­tal­la­tion par­ti­cu­lière mais sim­ple­ment le té­lé­char­ge­ment du fichier exé­cu­table (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 :

  1. Appuyez sur la com­bi­nai­son de touches [Windows] + [R]
  2. Saisissez « cmd » dans le champ de saisie (1)
  3. Appuyez sur le bouton OK (2)

cmd.exe s’ouvre ensuite avec l’affichage suivant :

Pour pouvoir démarrer le fichier exé­cu­table (nc.exe), vous devez également changer l’em­pla­ce­ment d’en­re­gis­tre­ment. Sous Windows, si vous avez en­re­gis­tré le fichier nc.exe dans un dossier « netcat » sur le bureau, la syntaxe res­sem­blera à ce qui suit :

cd C:\Users\USERNAME\Desktop\netcat\

La commande « cd » (change directory) active le chan­ge­ment et le chemin qui suit adresse le dossier d’en­re­gis­tre­ment du fichier nc.exe. Dans l’invite de commande, le chan­ge­ment se présente comme suit :

Netcat a besoin de droits d’accès avancés pour certaines opé­ra­tions. Sous Windows 10, il suffit de quelques étapes simples pour démarrer l’invite de commande en tant qu’ad­mi­nis­tra­teur :

  1. Cliquez droit sur le symbole Windows à gauche de la barre des tâches ou appuyez sur la com­bi­nai­son de touches [Windows] + [X]
  2. Dans le menu con­tex­tuel qui s’ouvre, sé­lec­tion­nez l’entrée « Invite de commande (ad­mi­nis­tra­teur) » :
Note

L’uti­li­sa­tion de Netcat comporte certains risques en matière de sécurité. Par con­sé­quent, cet outil doit uni­que­ment être utilisé par des uti­li­sa­teurs et des ad­mi­nis­tra­teurs système ex­pé­ri­men­tés, en par­ti­cu­lier dans le mode offrant des droits d’accès avancés.

Syntaxe Netcat : quelles sont les commandes et les options dis­po­nibles ?

La syntaxe de Netcat comporte deux com­po­sants de base : la commande de base « nc » qui est toujours identique et suivie de dif­fé­rentes « options ». La commande de base adresse le fichier exé­cu­table nc.exe et les options dé­fi­nis­sent l’étendue exacte des fonc­tion­na­li­tés d’une version Netcat. Les dif­fé­rentes pos­si­bi­li­tés varient en fonction du système d’ex­ploi­ta­tion et de la version de Netcat utilisés.

Le tableau suivant se limite aux prin­ci­pales options dis­po­nibles dans la plupart des versions sur Linux, macOS et Windows. Par ailleurs, d’autres options utiles sont listées, en par­ti­cu­lier les ex­ten­sions dis­po­nibles pour la version de Netcat GNU très répandue pour Linux, Unix et macOS :

Options Des­crip­tion
-4 Impose l’uti­li­sa­tion d’IPv4 (Netcat GNU)
-6 Impose l’uti­li­sa­tion d’IPv6 (Netcat GNU)
-d Détache Netcat de la console (fonc­tion­ne­ment en arrière-plan ; dis­po­nible 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 des­crip­tif)
-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 (uni­que­ment Netcat GNU et uni­que­ment en as­so­cia­tion 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 à fonc­tion­ner en mode écoute, même après des in­ter­rup­tions de connexion côté client (toujours avec les mêmes pa­ra­mètres ; uni­que­ment pris en charge par la version pour Windows)
-n (numeric-only) Uni­que­ment les numéros IP, aucun nom DNS
-o (file) Un vidage hexa­dé­ci­mal du trafic de données est effectué (le contenu des fichiers est affiché dans une vue hexa­dé­ci­male) ; sert à la recherche d’erreurs (débogage des ap­pli­ca­tions réseau) ; un en­re­gis­tre­ment de la com­mu­ni­ca­tion est possible (pour les paquets sortants et entrants)
-p (port) Indique le port source local que Netcat doit utiliser pour les con­nexions sortantes
-r Uti­li­sa­tion de valeurs de port aléa­toires 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 com­pi­la­tion spé­ci­fique de Netcat. Dans le cas contraire, cette option n’est pas dis­po­nible
-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 res­pon­sable de l’affichage et du détail des messages d’erreur affichés)
-w (sec) Définit des délais d’inac­ti­vité : pour l’éta­blis­se­ment 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 con­sul­ta­tion de l’aide avec le paramètre « -h » illustre de façon claire l’uti­li­sa­tion 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 fonc­tion­na­li­tés de Netcat souvent utilisées. Elle permet de trans­fé­rer de gros volumes de données et de cloner des par­ti­tions ou des disques durs entiers. Dans notre exemple, le fichier fi­chier­test.txt doit être copié de l’or­di­na­teur A (client) à l’or­di­na­teur B (serveur) via le port 6790. Les étapes suivantes sont né­ces­saires :

  1. Dé­ter­mi­na­tion de l’adresse IP de l’or­di­na­teur B (PC cible)
  2. Création du fichier test fi­chier­test.txt dans le ré­per­toire de Netcat de l’or­di­na­teur A ; dans cet exemple, le fichier test se trouve dans le ré­per­toire de Netcat du client. Sur l’or­di­na­teur cible B, le fichier copié atterrit également dans le dossier Netcat (les autres chemins d’accès doivent être ajustés en con­sé­quence).
  3. Saisie de la syntaxe Netcat dans l’invite de commande

Or­di­na­teur B (agit en tant que serveur des­ti­na­taire) :

nc -l -p 6790 > fichiertest.txt
ENTER

Or­di­na­teur 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 fonc­tionné en jetant un œil dans le ré­per­toire de des­ti­na­tion.

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’or­di­na­teur est doté de l’adresse IP 192.168.11.1. Après l’adresse IP, il est possible d’indiquer des ports in­di­vi­duels (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 re­cher­cher uni­que­ment les services écoutants et de ne pas envoyer de données.

Si l’on ajoute l’option « -v », on obtient des in­for­ma­tions plus précises con­cer­nant 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 mes­sa­ge­rie, FTP ou SSH fonc­tion­nent sur les ports scannés 1-1024. Dans cet exemple, Netcat a trouvé le port SMTP ouvert d’un client de mes­sa­ge­rie.

Utiliser Netcat comme simple programme de chat

Netcat peut établir une connexion TCP ou UDP simple entre deux or­di­na­teurs puis ouvrir un canal de com­mu­ni­ca­tion. 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 ac­ces­sible à l’adresse IP 192.168.11.1 :

nc -l -p 1605
ENTER

Une connexion au des­ti­na­taire des messages est alors établie par l’or­di­na­teur 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 ac­ces­sible en raison de problèmes tech­niques, 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 mes­sa­ge­der­reur.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’inac­ti­vité). Le paramètre « -v » fournit à l’ex­ploi­tant du serveur des in­for­ma­tions sur les requêtes et documente par exemple le système d’ex­ploi­ta­tion et le type de na­vi­ga­teur de l’or­di­na­teur à l’origine de la requête par des messages de statut.

Netcat comporte-t-il un risque pour la sécurité ?

Il est in­con­tes­table que Netcat constitue un outil po­ly­va­lent dans le réseau et y remplit de nom­breuses tâches utiles. Par con­sé­quent, il n’est pas étonnant qu’il soit par­ti­cu­liè­re­ment apprécié des ad­mi­nis­tra­teurs système et réseau, d’autant plus que la création de code Netcat est re­la­ti­ve­ment facile à prendre en main après un certain temps d’adap­ta­tion.

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é, con­tour­ner les pare-feu et exploiter les portes dérobées per­met­tant de prendre le contrôle d’or­di­na­teurs. Les pro­grammes anti-virus dé­clenchent par exemple une alarme lorsqu’une version de Netcat se trouve sur l’or­di­na­teur et permet l’exécution de l’option « -e » par une com­pi­la­tion spéciale.

Le dé­clen­cheur de l’option -e dans le code peut démarrer une interface in­te­rac­tive (Backdoor Shell) sur un or­di­na­teur distant. Une personne bé­né­fi­ciant d’un accès libre au fichier cmd.exe sous Windows peut causer des dommages con­si­dé­rables. Un Backdoor Shell peut également charger d’autres pro­grammes mal­veil­lants. Dans leur code, les hackers utilisent souvent le paramètre Netcat « -d » per­met­tant à l’outil en ligne de commande d’agir en arrière-plan sous Windows en étant invisible pour l’uti­li­sa­teur et pouvant causer des ravages à distance.

Pour éviter les versions hackées, Netcat doit uni­que­ment être té­lé­chargé depuis des sources sûres sur Internet. Par ailleurs, les experts en sécurité re­com­man­dent de peser clai­re­ment l’utilité d’intégrer un outil comme Netcat dans l’ins­tal­la­tion 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 uni­que­ment 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 suc­ces­seur 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 con­nexions par un tunnel SSH.

Les avantages et les risques de Netcat montrent clai­re­ment qu’il s’agit d’un outil sur lequel les uti­li­sa­teurs ambitieux, les ad­mi­nis­tra­teurs système et les res­pon­sables in­for­ma­tiques doivent im­pé­ra­ti­ve­ment se pencher. Toute personne en con­nais­sant les avantages profitera de la po­ly­va­lence et de l’ef­fi­ca­cité de cet outil d’ad­mi­nis­tra­tion à distance. En ayant la pos­si­bi­lité 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é­ven­tives.

Cependant, cet outil créé il y a plus de 20 ans dans le milieu des hackers est au­jour­d'hui considéré comme dépassé. Il existe aujourd’hui de meilleurs outils pour réaliser dif­fé­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 pro­to­coles TCP et UDP et qui travaille via un serveur proxy et supporte le cryptage. À l’instar de Netcat, il fonc­tionne sur toutes les pla­te­formes courantes.

Netcat étant po­ly­va­lent, simple et rapide et disposant d’une syntaxe de commande très peu complexe, cet outil dispose toutefois aujourd’hui encore d’une position pri­vi­lé­giée. Associer avec l’outil d’ad­mi­nis­tra­tion Netsh, il offre de nom­breuses autres pos­si­bi­li­tés pour effectuer un diag­nos­tic et une ad­mi­nis­tra­tion efficaces du réseau.

Aller au menu principal