🛠️ Introduction : Netcat (ou nc
) est l'utilitaire de ligne de commande ultime, souvent surnommé le « couteau suisse » des outils de mise en réseau. Il permet de lire et d'écrire des données sur des connexions réseau en utilisant les protocoles **TCP** ou **UDP**.
Netcat est multiplateforme (Linux, macOS, Windows, BSD) et est un outil indispensable pour les administrateurs réseau et système. Il est couramment utilisé pour le débogage, la surveillance des connexions, l'analyse des ports, le transfert de données, et bien plus encore.
📋 Table des Matières
- Syntaxe Netcat
- Analyse des Ports
- Envoi de Fichiers via Netcat
- Création d'un Serveur de Conversation Simple
- Exécution d'une Requête HTTP
- Conclusion
1. Syntaxe Netcat
La syntaxe de base pour établir une connexion avec l'utilitaire Netcat est la suivante :
nc host port
Par défaut, nc
tentera d'établir une connexion **TCP** vers l'hôte et le port spécifiés. Pour établir une connexion **UDP**, utilisez l'option -u
:
nc -u host port
2. Analyse des Ports
L'analyse de ports est l'une des utilisations les plus fréquentes de Netcat, permettant de vérifier la connectivité. Vous pouvez analyser un seul port ou une plage de ports.
Analyser une plage de ports TCP
Pour rechercher des ports ouverts dans une plage (par exemple, 20-80), utilisez l'option -z
(mode scan) et -v
(mode verbose) :
nc -z -v 10.10.8.8 20-80
La sortie affichera le statut de chaque port. Pour afficher uniquement les ports ouverts, vous pouvez filtrer la sortie avec grep
:
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Exemple de sortie filtrée :
Connection to 10.10.8.8 22 port succeeded!
Connection to 10.10.8.8 80 port succeeded!
Analyse des ports UDP
Pour l'analyse des ports UDP, ajoutez l'option -u
:
nc -z -v -u 10.10.8.8 20-80
Note : Pour des analyses de ports complexes, des outils spécialisés comme **Nmap** sont souvent plus performants que Netcat.
3. Envoi de Fichiers via Netcat
Netcat peut transférer des données d'un hôte à l'autre en créant un modèle client/serveur simple. Le processus implique la création d'un "serveur" écoutant sur un port et d'un "client" se connectant pour envoyer les données.
Transfert d'un seul fichier
- Sur l'hôte de réception : Ouvrez le port 5555 (ou tout autre port) avec
-l
(mode écoute) et redirigez la sortie vers le fichier :
nc -l 5555 > file_name
- Sur l'hôte d'envoi : Connectez-vous à l'hôte de réception et redirigez le fichier en entrée :
nc receiving.host.com 5555 < file_name
Transfert d'un répertoire (avec tar)
Pour transférer un répertoire entier, vous devez utiliser tar
pour archiver le répertoire à la volée avant de l'envoyer via Netcat.
- Sur l'hôte de réception : Écoutez le port 5555 et acheminez les données entrantes vers
tar
pour extraire l'archive :
nc -l 5555 | tar xzvf -
- Sur l'hôte d'envoi : Compressez le répertoire avec
tar
et acheminez les données vers le processus d'écoute Netcat :
tar czvf - /path/to/dir | nc receiving.host.com 5555
Une fois le transfert terminé, tapez CTRL+C
aux deux extrémités pour fermer la connexion.
4. Création d'un Serveur de Conversation Simple
La même logique client/serveur permet de créer un simple chat en ligne entre deux hôtes ou plus.
- Sur le premier hôte (Serveur) : Démarrez Netcat en mode écoute sur le port 5555 :
nc -l 5555
- À partir du deuxième hôte (Client) : Connectez-vous au port d'écoute :
nc first.host.com 5555
Désormais, tout message tapé et validé par ENTER
sur l'un ou l'autre hôte sera affiché chez les autres participants. Tapez CTRL+C
pour fermer la connexion.
5. Exécution d'une Requête HTTP
Bien que des outils comme curl
soient préférables pour les requêtes web, Netcat peut être utilisé pour envoyer des requêtes HTTP brutes à des serveurs distants. Cela est particulièrement utile pour le débogage de bas niveau.
L'exemple ci-dessous récupère la page de manuel de Netcat à partir du site web OpenBSD en envoyant une requête GET au port 80 :
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
La réponse complète du serveur, y compris les en-têtes HTTP et le code HTML de la page, sera affichée dans le terminal.
Conclusion
Netcat est un utilitaire fondamental pour tester, diagnostiquer et manipuler les connexions réseau. Sa simplicité et sa polyvalence en font un outil incontournable pour l'administration système et la sécurité.
Pour explorer d'autres options et capacités puissantes de cette commande, consultez la page de manuel de Netcat (man nc
).