la caverne d'Ali baba informatique.
la caverne d'Ali baba informatique.

Tutoriel sur l’utilisation de Netcat

Tutoriel sur l’utilisation de Netcat

Netcat est un logiciel disponible sous Windows(c), Linux et MacOS. Il est couramment appelé le Couteau suisse du réseau (The TCP/IP Swiss Army Knife). Il permet en effet de faire tout un tas de choses parmis lesquelles : client telnet (pour connexion TCP, SMTP, FTP …), serveur pour connexions entrantes, scanneur de ports et bien d’autres. Nous ne verront ici qu’une utilisation basique de netcat qui permet de dépanner dans quelques situations.

Durant tout ce didacticiel nous considéront que vous n’avez pas de firewall ou que les ports utilisés sont ouverts. Nous utiliseront également toujours l’option -vv pour des raisons pratique. En effet, ceci agrémente quelques peu la sortie du logiciel et permet de mieux savoir ce qu’il se passe et parfois de comprendre les problèmes plus rapidement.
Nous n’utiliseront ici que le protocole TCP parce que c’est celui-ci qu’utilise netcat par défaut. Cependant, à l’aide de l’option -u vous pouvez utiliser le protocole UDP sans soucis. Sachez juste que ce dernier ne vérifie pas l’intégrité des paquets re�u ce qui peut poser problème dans le cas d’un réseau peu stable.
Un récapitulatif des options a été fait sous forme de tableau à la fin.

Netcat en client :

En tant que client, netcat permet d’établir une connexion avec n’importe quel serveur sur n’importe quel port avec la commande suivante :

nc -vv serveur port

Cependant, faites attention, certains protocoles ne sont pas supportés. Notamment SSH (en effet, SSH utilise un cryptage de type SSL qui n’est pas supporté par netcat). Cependant, un autre utilitaire du même type, cryptcat, permet de crypter les connexion.

Le scan de ports :

Netcat permet également d’effecteur un scan de ports à l’aide de la commande suivante :

nc -vv -z xxx.xxx.xxx.xxx port_debport_fin

Les ports sont scannés par ordre décroissant. Pour introduire un petit temps d’attente entre deux tests de connexion, vous pouvez utiliser l’option -i secondes en rempla�ant évidemment secondes par un nombre de secondes. En utilisant l’option -r vous pouvez également scanner les ports de manière aléatoire.
Même si c’est outil peut s’avérer très pratique, un outil spécialisé est tout de même nettement préférable pour ce genre d’agissement. Préférez dans la mesure du possible un logiciel tel que nmap.

Netcat en serveur :

Netcat permet également d’écouter sur un port. C’est ce que j’ai appelé la fonction serveur. En effet, à l’aide d’une simple commande, vous pouvez demander à netcat d’écouter sur un port, d’effectuer une action à la connexion de chaque client et éventuellement de rediriger les entrées vers un fichier ou autre périphérique.

nc -vv -l -p port

La commande ci dessous est la commande minimale pour écouter sur un port. Une commande plus complète pourrait être :

nc -vvn -o log.txt -l -p port

Ici, on écoute sur le port port et on log la sortie dans le fichier log.txt dans lequel les données entrantes seront précédées de « < » et les données sortantes de « > ».

Récupération de Shell :

Netcat permet également de récupérer un shell sur une machine distante (à condition qu’un autre netcat soit en écoute sur ladite machine). Ceci peut être utile pour des interventions ponctuelles sur des machines sur lesquelles vous n’avez pas de compte. Pour ce faire lancez la commande suivante sur le serveur (la machine à laquelle vous voulez accéder).

nc -vv -l -e /bin/bash -p port <– sous Linux

nc -vv -l -e cmd.exe -p port <– sous Windows

Après avoir vérifié que le port est ouvert, utilisez un client pour exécuter la commande suivante où IP est l’adresse du serveur et port le port sur lequel le serveur écoute :

nc IP port

Si tout se passe bien, vous devriez pouvoir lister le répertoire courant à l’aide la commande ls ou dir, tout dépend si le serveur a été exécuté sous Windows(c) ou sous Linux.
Pour quitter, tappez tout simplement :

exit

Transfert de fichiers :

Netcat permet également de faire du transfert de fichiers à La Rache. Par exemple, vous êtes en réseau local et votre voisin veut vous passer un fichier de configuration ou une petite musique. Tappez dans votre terminal :

nc -vv -l -p 1234 > fichier_copie.conf

Votre voisin tappe dans le sien :

nc -vv votre_ip 1234 < /etc/fichier_orig.conf

Vous recevez instantanément son fichier de configuration à l’endroit que vous souhaitez. C’est pratique, facile et indolore. Il faut juste rester l’intégrité du fichier avec md5 à la fin :

md5sum fichier_copie.conf

Et comparer le code de sortie avec le code original, que vous pouvez envoyer de la même manière.

Récapitulatif des options :

Options de Netcat (liste non exhaustive)
Option
Effet/Utilisation
-h Affiche l’aide de netcat. (liste des options plus complète qu’ici)
-e [command] Exécute la commande [command] à la connexion
-i [secondes] Intervalle entre deux envois (utile si de gros fichiers sont envoyés dans de petites connexions)
Intervalle entre deux ports scannés.
-l Mode écoute de port, spécifier le port avec -p.
-n Non résolution des noms de domaine (utilisation des adresse IP numériques).
-o [fichier] Écriture des entrées/sorties dans le fichier [fichier]
-p [port] Utilisation du port [port] pour l’écoute (en mode serveur).
-r Ordre aléatoire lors du scan de ports.
-t Active le mode Telnet dans netcat. Nécessaire pour pouvoir utiliser les serveurs Telnet.
-u Utilise le protocole UDP au lieu du TCP (par défaut) pour les connexions.
-v Permet d’avoir une sortie un peu plus fournie. Vous pouvez en mettre 2 (pour une sortie encore plus fournie).
-w [seconds] La connexion sera abandonnée si le serveur n’a pas répondu au bout de [seconds] secondes.
-z Active le mode scan de ports (pas d’établissement de connexion TCP jusqu’au bout).

La page de man de netcat vous fournira de plus amples informations quant à l’utilisation de ce logiciel !
Source : http://www.gayuxweb.fr/learn/netcat