Quand on doit tester rapidement un service, transférer un fichier entre deux machines ou diagnostiquer une connexion réseau, netcat (ou nc) fait le travail en une seule commande. Il ouvre une connexion TCP ou UDP et y raccorde l'entrée et la sortie standard de votre terminal : ce que vous tapez part sur le réseau, ce qui revient s'affiche à l'écran. Aucun fichier de configuration, aucun service à déclarer.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Établir des connexions TCP et UDP vers des services
- Scanner des ports pour vérifier leur disponibilité
- Transférer des fichiers entre machines sans scp/rsync
- Créer un serveur en écoute pour tester vos applications
- Déboguer des services réseau (HTTP, SMTP, etc.)
Rappel de sécurité
Section intitulée « Rappel de sécurité »netcat date d'une époque où le chiffrement n'était pas la norme, et cela n'a pas changé : l'outil se contente de recopier des octets d'un bout à l'autre de la connexion. Tout ce que vous lui confiez circule donc en clair et reste lisible pour qui capture le trafic sur le chemin. Deux réflexes suffisent à s'en protéger, et une option précise est à proscrire hors laboratoire.
La commande netcat dans l'écosystème réseau
Section intitulée « La commande netcat dans l'écosystème réseau »netcat fait partie des outils de diagnostic réseau. Chaque outil a sa spécialité :
| Outil | Spécialité | Quand l'utiliser |
|---|---|---|
netcat | Connexions TCP/UDP manuelles | Tests rapides, transferts ponctuels |
nmap | Scan de ports avancé | Découverte réseau, audit sécurité |
curl | Requêtes HTTP/HTTPS | Tests d'API, téléchargements |
telnet | Connexion texte | Débogage protocoles (legacy) |
socat | Tunnels complexes | Redirections, proxys avancés |
ss/netstat | État des connexions | Voir les ports en écoute |
Quand utiliser netcat vs nmap ?
| Situation | netcat | nmap |
|---|---|---|
| Tester si un port est ouvert | Oui (nc -zv host 22) | Oui mais overkill |
| Scanner une plage de ports | Basique | Plus complet |
| Détection de services/versions | Non | Oui (-sV) |
| Transfert de fichiers | Oui, parfait | Non |
| Créer un serveur temporaire | Oui | Non |
| Audit de sécurité | Non | Oui (scripts NSE) |
Workflow typique de diagnostic :
# 1. Vérifier si le service répondnc -zv 192.168.1.100 80
# 2. Récupérer la bannière du serviceecho "" | nc -v -w 2 192.168.1.100 22
# 3. Tester une requête HTTP manuellementecho -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80
# 4. Si besoin d'un scan complet → passer à nmapnmap -sV -p 1-1000 192.168.1.100Comprendre la commande netcat en 2 min
Section intitulée « Comprendre la commande netcat en 2 min »Tout le fonctionnement de netcat tient en une idée : la commande relie les flux standards du terminal à une socket réseau. Le schéma ci-dessous résume ce raccordement et les deux rôles que la commande peut endosser.
🧠 Modèle mental — Netcat : Le tuyau réseau
Netcat crée un canal bidirectionnel entre stdin/stdout et une connexion réseau. Il peut agir en client (connecter) ou en serveur (écouter).
Points clés
- **Client ou Serveur** : nc HOST PORT (client) ou nc -l PORT (serveur)
- **Bidirectionnel** : stdin → réseau et réseau → stdout
- **Redirections** : < fichier (envoyer) et > fichier (recevoir)
- **Protocole** : TCP par défaut, UDP avec -u
Règles d'or
Vocabulaire essentiel
- -l
- Listen : mode serveur, attend une connexion
- -p
- Port : spécifie le port (obligatoire avec -l en traditional)
- -v
- Verbose : affiche les détails de connexion
- -z
- Zero-I/O : scan sans envoyer de données
- -w
- Wait : timeout en secondes
- -u
- UDP : utiliser UDP au lieu de TCP
📚 Pour aller plus loin — 4 options avancées
- -e
- Execute : lance un programme à chaque connexion (backdoor)
- -k
- Keep-open : reste ouvert après déconnexion (ncat)
- --ssl
- Chiffrement SSL/TLS (ncat uniquement)
- FIFO
- Named pipe pour créer des relais bidirectionnels
netcat fait donc circuler les données dans les deux sens entre votre terminal (stdin/stdout) et la connexion réseau. Il agit soit en client (il se connecte à un service existant), soit en serveur (il attend une connexion entrante).
Syntaxe minimale
Section intitulée « Syntaxe minimale »Deux formes seulement à mémoriser, une par rôle. La forme serveur diffère selon la variante installée : netcat-traditional exige -p devant le port, netcat-openbsd le refuse.
# Mode client : se connecter à un servicenc [HOST] [PORT]
# Mode serveur : écouter sur un portnc -l -p [PORT] # netcat-traditionalnc -l [PORT] # netcat-openbsdLes deux modes de fonctionnement
Section intitulée « Les deux modes de fonctionnement »Le mode est déterminé par la seule présence de l'option -l : sans elle, netcat se connecte ; avec elle, il écoute. Un test complet mobilise souvent les deux, une machine en écoute et une autre qui s'y connecte.
| Mode | Syntaxe | Usage |
|---|---|---|
| Client | nc HOST PORT | Se connecter à un service existant |
| Serveur | nc -l -p PORT | Attendre une connexion entrante |
Connexion basique
Section intitulée « Connexion basique »Sans option, la connexion reste ouverte et le terminal attend que vous tapiez quelque chose : c'est ce qui permet de dialoguer à la main avec un protocole texte. Ctrl+C ferme la session.
# Se connecter au port SSHnc 192.168.1.100 22
# Se connecter à un serveur webnc example.com 80# puis taper : GET / HTTP/1.0 [Entrée] [Entrée]Scanner des ports
Section intitulée « Scanner des ports »L'option -z ouvre la connexion puis la referme aussitôt, sans rien transmettre. Combinée à -v, elle indique pour chaque port s'il accepte la connexion. Le scan reste séquentiel : sur une plage large, ajoutez -w pour borner l'attente des ports filtrés.
# Vérifier un seul portnc -zv 192.168.1.100 22
# Scanner une plage de portsnc -zv 192.168.1.100 20-25
# Scanner plusieurs ports spécifiquesnc -zv 192.168.1.100 22,80,443Options importantes :
-z: Mode scan (pas de données envoyées)-v: Verbeux (affiche le résultat)-w N: Timeout après N secondes
Transfert de fichiers
Section intitulée « Transfert de fichiers »Le transfert repose entièrement sur les redirections du shell : > côté récepteur écrit ce qui arrive, < côté émetteur envoie le contenu du fichier. Lancez toujours le récepteur en premier, sinon l'émetteur échoue sur un Connection refused. Attention, rien ne vérifie l'intégrité ni la fin du transfert : contrôlez la taille du fichier reçu, et jamais de données sensibles par ce canal en clair.
# Machine réceptrice (écoute sur port 4444)nc -l -p 4444 > fichier_recu.txt
# Machine émettrice (envoie le fichier)nc 192.168.1.100 4444 < fichier_a_envoyer.txtAvec compression pour les gros fichiers :
# Récepteurnc -l -p 4444 | tar xzvf -
# Émetteur (envoie un dossier compressé)tar czvf - /dossier | nc 192.168.1.100 4444Protocole UDP
Section intitulée « Protocole UDP »L'option -u bascule en UDP, indispensable pour les services qui n'écoutent qu'en datagramme comme DNS ou DHCP. UDP n'ayant pas de poignée de main, netcat ne peut pas distinguer un port ouvert d'un port filtré : un -zuv qui répond « succeeded » signifie seulement qu'aucun rejet n'est revenu. Associez toujours -w pour ne pas attendre indéfiniment.
# Connexion UDP (pour tester DNS, DHCP, etc.)nc -u 8.8.8.8 53
# Écouter en UDPnc -l -u -p 5000Installation
Section intitulée « Installation »Le paquet à installer dépend de la variante que vous voulez, et le nom de la commande reste nc dans tous les cas. Sur Debian et Ubuntu, netcat-openbsd est la version fournie par défaut ; netcat-traditional s'installe à part et reste la seule à proposer l'option -e. Sur RHEL et dérivés, nmap-ncat apporte ncat, la variante la plus complète, seule à gérer le chiffrement TLS.
# Version traditionnelle (avec -e)sudo apt install netcat-traditional
# Version OpenBSD (par défaut, sans -e)sudo apt install netcat-openbsd
# Vérifier la versionnc -h 2>&1 | head -3sudo dnf install nc# ou nmap-ncat pour la version amélioréesudo dnf install nmap-ncatnc --version# Préinstallé (version BSD)nc -h
# Ou installer ncat via Homebrewbrew install nmapncat --version# Installer via Nmap (inclut ncat)# Télécharger depuis https://nmap.org/download.html
# Ou via Chocolateychoco install nmapncat --versionVariantes de Netcat
Section intitulée « Variantes de Netcat »Il existe plusieurs versions de netcat avec des différences importantes :
| Version | Options notables | Sécurité |
|---|---|---|
| netcat-traditional | -e (execute), -p PORT obligatoire | Risqué : -e = backdoor |
| netcat-openbsd | Pas de -e, -l PORT (sans -p) | Plus sûr |
| ncat (Nmap) | --ssl, --allow, -k (keep-open) | Chiffrement |
| socat | Tunnels complexes, SSL natif | Très flexible |
# Identifier la version installéenc -h 2>&1 | head -1
# netcat-traditional affiche : [v1.10-47]# netcat-openbsd affiche : usage: nc [-46DdhklnrStUuvzC] ...Cas d'usage avancés
Section intitulée « Cas d'usage avancés »Une fois la connexion établie, tout dépend de ce que vous branchez à ses deux extrémités. Les montages ci-dessous détournent netcat en messagerie, en serveur HTTP jetable et en relais de port, uniquement avec des redirections et des pipes du shell. Tous partagent la même limite : le processus se termine à la première déconnexion, sauf boucle explicite ou option -k de ncat.
Chat entre deux machines
Section intitulée « Chat entre deux machines »Chaque terminal affiche ce que l'autre tape, puisque netcat recopie stdin vers le réseau et le réseau vers stdout. La conversation s'arrête dès que l'un des deux ferme sa session.
# Machine 1 : écouternc -l -p 1234
# Machine 2 : se connecternc 192.168.1.100 1234
# Les deux terminaux peuvent maintenant échanger des messagesServeur HTTP minimaliste
Section intitulée « Serveur HTTP minimaliste »Pratique pour vérifier qu'un client, un équilibreur de charge ou une sonde atteint bien la machine. netcat ne comprend pas HTTP : il se contente de renvoyer le texte fourni, à vous d'écrire une ligne de statut valide suivie d'une ligne vide avant le corps. Le premier montage ne sert qu'une requête, la boucle while en sert autant que nécessaire.
# Serveur qui répond "Hello World" (une seule requête)echo -e "HTTP/1.1 200 OK\n\nHello World" | nc -l -p 8080
# Serveur persistant (boucle)while true; do echo -e "HTTP/1.1 200 OK\n\nHello $(date)" | nc -l -p 8080; doneRécupérer la bannière d'un service
Section intitulée « Récupérer la bannière d'un service »Beaucoup de services se présentent en envoyant leur version dès la connexion : c'est le banner grabbing.
# SSHecho "" | nc -v -w 2 192.168.1.100 22# SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1
# SMTPecho "QUIT" | nc -v -w 2 mail.example.com 25# 220 mail.example.com ESMTP Postfix
# HTTPecho -e "HEAD / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80Proxy/relais simple
Section intitulée « Proxy/relais simple »Un pipe ordinaire ne circule que dans un sens ; le tube nommé créé par mkfifo fournit le canal de retour et ferme la boucle entre les deux netcat. Le relais ne tient que le temps d'une connexion, et le fichier /tmp/relay doit être supprimé avant de recommencer. Pour un usage durable, socat fait la même chose en une commande et sans FIFO.
# Créer un relais du port local 8080 vers remote:80mkfifo /tmp/relaync -l -p 8080 < /tmp/relay | nc remote.example.com 80 > /tmp/relayExécution de commandes (LAB uniquement)
Section intitulée « Exécution de commandes (LAB uniquement) »Ce montage n'est documenté que parce qu'on le rencontre dans les rapports d'incident : c'est la forme la plus courante de reverse shell. Il n'existe que dans netcat-traditional et dans ncat (sous le nom -c), pas dans netcat-openbsd.
Les pièges à éviter
Section intitulée « Les pièges à éviter »Ces erreurs reviennent constamment avec netcat. Plusieurs touchent la sécurité : les connaître évite des fuites de données et des backdoors involontaires.
Différentes versions de netcat
Section intitulée « Différentes versions de netcat »Les options varient selon la variante installée : netcat-traditional, netcat-openbsd, ncat.
Symptôme : une option n'est pas reconnue, ou le comportement diffère d'une machine à l'autre.
Cause : netcat-openbsd n'a pas -e ; netcat-traditional exige -p avec -l.
nc -h # vérifier les options disponiblesPas de chiffrement
Section intitulée « Pas de chiffrement »Vous transférez des données sensibles en clair via netcat.
Symptôme : les données peuvent être interceptées sur le réseau.
Cause : netcat ne chiffre jamais les communications.
ncat --ssl 192.168.1.100 4444L'option -e est dangereuse
Section intitulée « L'option -e est dangereuse »Vous utilisez nc -e /bin/bash en production.
Symptôme : création d'une backdoor permettant l'exécution de commandes à distance.
Cause : -e exécute un programme à chaque connexion. Ne l'utilisez jamais en dehors d'un lab isolé.
Ports privilégiés
Section intitulée « Ports privilégiés »Vous tentez d'écouter sur un port inférieur à 1024 sans être root.
Symptôme : message Permission denied.
Cause : les ports 1 à 1023 sont réservés à root.
nc -l -p 8080 # un port > 1024, ou exécuter avec sudoConnexion unique
Section intitulée « Connexion unique »Vous attendez de netcat qu'il accepte plusieurs connexions successives.
Symptôme : le listener s'arrête après la première connexion.
Cause : par défaut, nc -l n'accepte qu'une seule connexion.
while true; do nc -l -p 4444; doneLe pare-feu bloque les connexions
Section intitulée « Le pare-feu bloque les connexions »Vous oubliez d'ouvrir le port dans le pare-feu.
Symptôme : Connection refused ou timeout.
Cause : iptables, nftables ou firewalld bloque le port.
sudo firewall-cmd --add-port=4444/tcp --permanentSyntaxe d'écoute variable
Section intitulée « Syntaxe d'écoute variable »Vous utilisez la mauvaise syntaxe pour écouter selon la variante.
Symptôme : erreur Cannot use -p and -l together, ou Missing port.
Cause : netcat-openbsd attend nc -l PORT ; netcat-traditional attend nc -l -p PORT.
# OpenBSDnc -l 4444# Traditionalnc -l -p 4444Pas de mode keep-open natif
Section intitulée « Pas de mode keep-open natif »Vous attendez que le serveur reste ouvert après une déconnexion.
Symptôme : le serveur se ferme après chaque transfert.
Cause : le netcat traditionnel n'a pas d'option keep-open.
ncat -k -l 4444 # reste ouvert après déconnexionTravaux pratiques
Section intitulée « Travaux pratiques »Ce lab vous fait manipuler netcat sur localhost : test de port, écoute, transfert et récupération de bannière. Comptez 20 minutes.
Préparer le terrain
Section intitulée « Préparer le terrain »Le script suivant crée un dossier de travail avec des fichiers de test :
# Créer un dossier de travailmkdir -p /tmp/nc-labcd /tmp/nc-lab
# Créer des fichiers de testecho "Message secret" > secret.txtecho "Données à transférer" > data.txtdd if=/dev/urandom of=binary.bin bs=1K count=10 2>/dev/null
# Vérifier la variante de netcatnc -h 2>&1 | head -5Pour tout nettoyer à la fin : rm -rf /tmp/nc-lab.
Les 5 étapes du lab
Section intitulée « Les 5 étapes du lab »Les étapes 2 et 3 se font à deux terminaux : le serveur en écoute dans le premier, le client dans le second. Adaptez la syntaxe d'écoute à votre variante, nc -l 4444 sur OpenBSD, nc -l -p 4444 sur traditional.
-
Test de connexion basique, vérifiez si le port 22 (SSH) est ouvert :
nc -zv localhost 22.-zscanne sans envoyer de données,-vaffiche le résultat. -
Écouter sur un port, ouvrez un serveur sur le port 4444 en mode verbeux :
nc -l -p 4444 -v.-lactive l'écoute,-pspécifie le port. -
Transfert de fichier, envoyez
secret.txtvers une machine en écoute :nc localhost 4444 < secret.txt. La redirection<envoie le contenu du fichier vers la connexion. Avec compression :gzip -c secret.txt | nc localhost 4444. -
Scanner une plage de ports, scannez les ports 20 à 25 :
nc -zv localhost 20-25. Le formatN-Mcouvre tous les ports de N à M inclus. -
Récupérer une bannière, récupérez la bannière SSH avec un timeout de 2 secondes :
echo "" | nc -v -w 2 localhost 22. Une ligne vide suffit à déclencher la bannière.
Exercices progressifs
Section intitulée « Exercices progressifs »Ces exercices vont du test de port simple au relais de trafic. Lisez l'énoncé, cherchez la commande, puis dépliez la solution.
Niveau fondations
Section intitulée « Niveau fondations »Exercice 1, Vérifier un service web. Vérifiez si le port 443 (HTTPS) est ouvert sur example.com.
Indice : -z pour scanner, -v pour voir le résultat.
Voir la solution
nc -zv example.com 443-z réalise un scan sans données, -v affiche le statut de la connexion.
Exercice 2, Chat entre deux terminaux. Établissez une communication entre deux terminaux de la même machine.
Indice : un terminal écoute, l'autre se connecte.
Voir la solution
# Terminal 1nc -l -p 1234# Terminal 2nc localhost 1234Le premier terminal devient serveur avec -l, le second s'y connecte en client.
Exercice 3, Scanner les services courants. Scannez les ports SSH, HTTP et HTTPS sur localhost en une seule commande.
Indice : plusieurs ports se séparent par des virgules.
Voir la solution
nc -zv localhost 22,80,443Les ports peuvent être listés avec des virgules ou exprimés en plage (22-443).
Niveau composition
Section intitulée « Niveau composition »Exercice 4, Transfert de dossier. Transférez le dossier /tmp/nc-lab vers une machine en écoute.
Indice : combinez tar et netcat avec un pipe.
Voir la solution
# Récepteurnc -l -p 4444 | tar xvf -# Expéditeurtar cvf - /tmp/nc-lab | nc localhost 4444tar crée une archive en streaming, netcat la transporte, tar l'extrait à l'arrivée.
Exercice 5, Test HTTP manuel. Récupérez la page d'accueil d'example.com avec une requête HTTP/1.1.
Indice : une requête HTTP a besoin de GET, Host et deux retours à la ligne.
Voir la solution
echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80HTTP/1.1 exige le header Host ; le double \n termine les en-têtes.
Exercice 6, Connexion UDP DNS. Testez la connectivité UDP vers un serveur DNS sur le port 53.
Indice : -u pour UDP, -w pour un timeout.
Voir la solution
nc -zuv -w 2 8.8.8.8 53-u active le mode UDP, indispensable pour tester un service DNS.
Exercice 7, Serveur HTTP de fortune. Créez un serveur qui renvoie « Hello World » sur le port 8080.
Indice : la réponse HTTP doit inclure une status line et un body.
Voir la solution
while true; do echo -e "HTTP/1.1 200 OK\n\nHello World" | nc -l -p 8080; doneLa boucle while permet de servir plusieurs requêtes successives.
Niveau industrialisation
Section intitulée « Niveau industrialisation »Exercice 8, Relais de port. Créez un relais qui écoute sur 8080 et redirige vers localhost:22.
Indice : utilisez un named pipe (mkfifo) pour la communication bidirectionnelle.
Voir la solution
mkfifo /tmp/relaync -l -p 8080 < /tmp/relay | nc localhost 22 > /tmp/relayLe FIFO permet de relayer les données dans les deux sens.
Niveau sécurité
Section intitulée « Niveau sécurité »Exercice 9, Backdoor contrôlée (lab uniquement). Créez un shell distant sur le port 5555. À ne jamais faire en production.
Indice : l'option -e (ou -c) exécute un programme à la connexion.
Voir la solution
# Serveurnc -l -p 5555 -e /bin/bash# Clientnc localhost 5555-e exécute le programme pour chaque connexion, extrêmement dangereux hors d'un lab isolé.
Dépannage
Section intitulée « Dépannage »Quand une connexion netcat échoue, ces méthodes de diagnostic et ces erreurs fréquentes couvrent la grande majorité des cas.
Méthodes de diagnostic
Section intitulée « Méthodes de diagnostic »L'ordre compte : commencez par -v pour lire le message exact, puis vérifiez côté serveur avec ss -tlnp qu'un processus écoute vraiment sur le port et sur la bonne interface. Un service lié à 127.0.0.1 répond en local et refuse toute connexion venue du réseau, ce que seul ss révèle.
# Mode verbeux : détails de connexionnc -v HOST PORT
# Identifier la variante de netcat installéenc -h 2>&1 | head -5
# Tester localement pour écarter un problème réseaunc -zv localhost PORT
# Lister les services en écoutess -tlnp
# Capturer le trafic échangésudo tcpdump -i any port PORTErreurs fréquentes
Section intitulée « Erreurs fréquentes »Deux messages se ressemblent mais n'ont rien à voir : Connection refused signifie que la machine a répondu et rejeté la connexion, donc que le réseau fonctionne et que le service manque ; Connection timed out signifie qu'aucune réponse n'est revenue, ce qui pointe vers un pare-feu en DROP ou un problème de routage.
| Erreur | Cause probable | Solution |
|---|---|---|
Connection refused | Aucun service n'écoute, pare-feu, ou mauvaise IP | Vérifier l'écoute avec ss -tlnp | grep PORT, démarrer le service ou ouvrir le port |
Connection timed out | Machine injoignable, pare-feu en DROP, ou routage | Tester avec ping HOST et traceroute HOST |
Permission denied / Can't grab port | Port < 1024 sans root, port déjà utilisé, ou SELinux | Utiliser sudo ou un port > 1024 |
Invalid option / Unknown option | Variante de netcat différente (BSD vs traditional) | Vérifier la version avec nc -h et adapter la syntaxe |
Aide-mémoire netcat
Section intitulée « Aide-mémoire netcat »À garder sous la main : la syntaxe de base, les options principales et les combinaisons les plus utilisées au quotidien.
Syntaxe de base
Section intitulée « Syntaxe de base »Une seule ligne diffère entre les variantes, celle de l'écoute. En cas de doute sur la machine où vous travaillez, nc -h affiche la syntaxe acceptée.
| Syntaxe | Signification | Exemple |
|---|---|---|
nc HOST PORT | Connexion TCP simple | nc example.com 80 |
nc -l -p PORT | Écouter sur un port (traditional) | nc -l -p 4444 |
nc -l PORT | Écouter sur un port (BSD/OpenBSD) | nc -l 4444 |
Options principales
Section intitulée « Options principales »Les cinq premières options existent partout ; les trois dernières, dont le chiffrement, sont propres à ncat et ne fonctionneront pas avec un nc classique.
| Syntaxe | Signification | Exemple |
|---|---|---|
-v | Mode verbeux | nc -v example.com 80 |
-z | Scan sans envoyer de données | nc -zv host 20-80 |
-w N | Timeout après N secondes | nc -w 3 host 22 |
-u | Mode UDP au lieu de TCP | nc -u host 53 |
-n | Pas de résolution DNS | nc -n 192.168.1.1 80 |
-k | Keep-open (ncat uniquement) | ncat -k -l 4444 |
--ssl | Connexion chiffrée SSL/TLS (ncat) | ncat --ssl host 443 |
--allow HOST | N'accepter que certaines IP (ncat) | ncat -l 4444 --allow 192.168.1.0/24 |
Transfert de fichiers et scan
Section intitulée « Transfert de fichiers et scan »Ces formes ne sont pas des options de netcat mais des redirections du shell et des notations de plage. Elles se combinent librement avec les options du tableau précédent.
| Syntaxe | Signification | Exemple |
|---|---|---|
< fichier | Envoyer le contenu d'un fichier | nc host 4444 < data.txt |
> fichier | Sauvegarder dans un fichier | nc -l -p 4444 > received.txt |
-z PORT-PORT | Scan d'une plage de ports | nc -zv host 1-1024 |
-z P1,P2,P3 | Scan de ports spécifiques | nc -zv host 22,80,443 |
Combinaisons utiles
Section intitulée « Combinaisons utiles »Les montages du quotidien, à recopier tels quels. Le scan renvoyant son résultat sur stderr, la redirection 2>&1 est indispensable avant tout grep.
| Syntaxe | Signification | Exemple |
|---|---|---|
nc -l ... | tar xvf - | Extraire une archive reçue | nc -l -p 4444 | tar xvf - |
tar cvf - dir | nc ... | Envoyer un dossier compressé | tar cvf - /data | nc host 4444 |
nc -l ... | nc HOST | Proxy basique via pipe | nc -l -p 8080 | nc target 80 |
... 2>&1 | grep open | Filtrer le résultat d'un scan | nc -zv host 22 2>&1 | grep open |
socat - TCP:H:P | Équivalent netcat avec socat | socat - TCP:example.com:80 |
Checklist de maîtrise
Section intitulée « Checklist de maîtrise »Vous maîtrisez netcat quand vous pouvez cocher chacun de ces points sans hésiter :
- Je sais me connecter à un service TCP/UDP.
- Je sais scanner des ports avec
-zv. - Je sais transférer un fichier entre deux machines.
- Je sais créer un serveur en écoute.
- Je connais les différences entre les variantes de netcat.
- Je sais quand utiliser
ncat --sslpour le chiffrement.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Dix questions pour vérifier que l'essentiel est acquis. Elles ne portent que sur ce qui vient d'être expliqué ici : modes client et serveur, options de scan, variantes et règles de sécurité.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Client :
nc HOST PORT; serveur :nc -l -p PORT - Scan :
-zvpour tester un port sans envoyer de données - Timeout :
-w Npour éviter les blocages - UDP :
-upour les protocoles comme DNS - Jamais de données sensibles sans chiffrement (
ncat --sslou SSH) - Jamais de
-een production (risque de backdoor)
FAQ : questions fréquentes sur netcat
Section intitulée « FAQ : questions fréquentes sur netcat »Le couteau suisse du réseau
netcat (commandenc) lit et écrit des données sur des connexions TCP ou UDP. C'est l'outil le plus simple pour manipuler une connexion réseau brute.Il sert à :- tester si un port est ouvert ;
- récupérer une bannière de service ;
- transférer un fichier entre deux machines ;
- ouvrir un écouteur sur un port.
nc), et ncat (projet Nmap, avec TLS et contrôle d'accès).Un test de connectivité rapide
# TCP : port ouvert ?
nc -zv exemple.com 443
# Connection to exemple.com 443 port [tcp/https] succeeded!
# UDP
nc -zuv exemple.com 53
Les options :-z: mode scan, n'envoie aucune donnée (juste la connexion) ;-v: verbeux, affiche le résultat ;-u: bascule en UDP au lieu de TCP.
succeeded! confirme que le port est ouvert et qu'un service écoute.Récepteur puis émetteur
# 1. Machine receptrice : ecoute et ecrit dans un fichier
nc -l -p 1234 > recu.tar
# 2. Machine emettrice : envoie le fichier
nc 192.168.1.50 1234 < envoi.tar
La machine réceptrice ouvre un écouteur (-l) sur le port 1234 et redirige ce qu'elle reçoit vers un fichier. L'émettrice se connecte et envoie le fichier via une redirection.Attention : le transfert n'est pas chiffré. Pour un envoi sécurisé, préférez ncat --ssl ou scp.Une connexion contre un scan
| Besoin | netcat | nmap |
|---|---|---|
| Tester un port | oui | oui |
| Scanner des milliers de ports | non | oui |
| Transférer des données | oui | non |
| Détecter service/version | limité | oui (-sV) |
| Ouvrir un écouteur | oui | non |
Un outil légitime détourné
netcat est un outil d'administration tout à fait légitime. Mais sa capacité à ouvrir un écouteur et à relier une connexion à un shell en fait aussi un instrument d'attaque : les reverse shells utilisés lors d'intrusions reposent souvent surnc ou un binaire équivalent.Conséquences pratiques :- la présence inattendue de netcat sur un serveur de production est un signal d'alerte ;
- certains EDR surveillent son exécution.
Prochaines étapes
Section intitulée « Prochaines étapes »netcat teste et dépanne ; pour aller plus loin, passez aux outils qui scannent, capturent et sécurisent vos accès réseau.