Recherche de site Web

8 Commande Netcat (nc) avec exemples


Netcat (ou nc en abrégé) est un outil de ligne de commande réseau simple mais puissant utilisé pour effectuer toute opération sous Linux liée à TCP, < sockets de domaineUDP ou UNIX.

Netcat peut être utilisé pour l'analyse des ports, la redirection de ports, en tant qu'écouteur de port (pour les connexions entrantes) ; il peut également être utilisé pour ouvrir des connexions à distance et bien d’autres choses. En outre, vous pouvez l’utiliser comme porte dérobée pour accéder à un serveur cible.

Dans cet article, nous expliquerons les commandes d'utilisation de Netcat avec des exemples.

Comment installer et utiliser Netcat sous Linux

Pour installer le package netcat sur votre système, utilisez le gestionnaire de packages par défaut pour votre distribution Linux.

yum install nc                  [On CentOS/RHEL]
dnf install nc                  [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat     [On Debian/Ubuntu]

Une fois le package netcat installé, vous pouvez continuer pour apprendre à utiliser la commande netcat dans les exemples suivants.

Analyse des ports

Netcat peut être utilisé pour l'analyse des ports : pour savoir quels ports sont ouverts et exécutent des services sur une machine cible. Il peut analyser un seul, plusieurs ou une plage de ports ouverts.

Voici un exemple, l'option -z définit nc pour qu'il recherche simplement les démons d'écoute, sans leur envoyer de données. L'option -v active le mode détaillé et -w spécifie un délai d'attente pour la connexion qui ne peut pas être établie.

nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Transférer des fichiers entre des serveurs Linux

Netcat vous permet de transférer des fichiers entre deux ordinateurs ou serveurs Linux et ces deux systèmes doivent avoir nc installé.

Par exemple, pour copier un fichier image ISO d'un ordinateur à un autre et surveiller la progression du transfert (à l'aide de l'utilitaire pv), exécutez la commande suivante sur l'ordinateur expéditeur/serveur (où le fichier ISO existe).

Cela exécutera nc en mode écoute (indicateur -l) sur le port 3000.

tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

Et sur l'ordinateur récepteur/client, exécutez la commande suivante pour obtenir le fichier.

nc 192.168.1.4 3000 | pv | tar -zxf -

Créer un serveur de discussion en ligne de commande

Vous pouvez également utiliser Netcat pour créer instantanément un simple serveur de messagerie en ligne de commande. Comme dans l'exemple d'utilisation précédent, nc doit être installé sur les deux systèmes utilisés pour le salon de discussion.

Sur un système, exécutez la commande suivante pour créer le serveur de discussion écoutant sur le port 5000.

nc -l -vv -p 5000

Sur l'autre système, exécutez la commande suivante pour lancer une session de discussion sur une machine sur laquelle le serveur de messagerie est exécuté.

nc 192.168.56.1 5000

Créer un serveur Web de base

Avec l'option -l de la commande nc utilisée pour créer un serveur Web de base non sécurisé pour servir des fichiers Web statiques à des fins d'apprentissage. Pour démontrer cela, créez un fichier .html comme indiqué.

vim index.html

Ajoutez les lignes HTML suivantes dans le fichier.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Enregistrez les modifications dans le fichier et quittez.

Ensuite, servez le fichier ci-dessus via HTTP en exécutant la commande suivante, ce qui permettra au serveur HTTP de s'exécuter en continu.


while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Ensuite, ouvrez un navigateur Web et accédez au contenu en utilisant l'adresse suivante.

http://localhost:8080
OR
http://SERVER_IP:8080

Notez que vous pouvez arrêter le serveur HTTP Netcat en appuyant sur [Ctrl+ C].

Dépanner la connexion au serveur Linux

Une autre utilisation utile de Netcat consiste à résoudre les problèmes de connexion au serveur. Ici, vous pouvez utiliser Netcat pour vérifier quelles données un serveur envoie en réponse aux commandes émises par le client.

La commande suivante récupère la page d'accueil de example.com.

printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

Le résultat de la commande ci-dessus inclut les en-têtes envoyés par le serveur Web qui peuvent être utilisés à des fins de dépannage.

Rechercher un service exécuté sur le port

Vous pouvez également utiliser Netcat pour obtenir des bannières de port. Dans ce cas, il vous indiquera quel service s'exécute derrière un certain port. Par exemple, pour savoir quel type de service s'exécute derrière le port 22 sur un serveur spécifique, exécutez la commande suivante (remplacez 192.168.56.110 par l'adresse IP du serveur cible). L'indicateur -n signifie désactiver les recherches DNS ou de service.

nc -v -n 192.168.56.110 80

Créer des sockets de flux

Netcat prend également en charge la création de sockets de flux de domaine UNIX. La commande suivante créera et écoutera sur un socket de flux de domaine UNIX.

nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"

Créer une porte dérobée

Vous pouvez également exécuter Netcat comme porte dérobée. Toutefois, cela nécessite davantage de travail. Si Netcat est installé sur un serveur cible, vous pouvez l'utiliser pour créer une porte dérobée et obtenir une invite de commande à distance.

Pour agir comme une porte dérobée, vous avez besoin de Netcat pour écouter sur un port choisi (par exemple le port 3001) sur le serveur cible, puis vous pouvez vous connecter à ce port depuis votre machine comme suit.

Il s'agit de la commande destinée à s'exécuter sur le serveur distant où l'option -d désactive la lecture depuis stdin et -e spécifie la commande à exécuter sur le système cible.

nc -L -p 3001 -d -e cmd.exe 

Enfin et surtout, Netcat peut être utilisé comme proxy pour différents services/protocoles, notamment HTTP, SSH et bien d'autres. Pour plus d’informations, consultez sa page de manuel.

man nc

Dans cet article, nous avons expliqué 8 exemples pratiques d'utilisation des commandes Netcat. Si vous connaissez d'autres cas d'utilisation pratiques, partagez-les avec nous via le formulaire de commentaires ci-dessous. Vous pouvez également poser une question.