Conseils et astuces avec la commande netcat sur Linux

Conseils et astuces avec la commande netcat sur Linux

NetCAT est un utilitaire de mise en réseau polyvalent qui peut être utilisé pour lire et écrire aux connexions TCP et UDP sur les ports arbitraires (comme avec les autres utilitaires utilisés sur Linux, les ports inférieurs à 1024 nécessitent des privilèges racine / sudo). Par défaut, NetCAT utilise des connexions TCP, mais UDP peut être spécifié avec le -u drapeau. NetCAT peut être utilisé à la fois comme serveur et client. Lorsqu'il est utilisé comme serveur le -l Le drapeau est utilisé pour écouter une connexion. Semblable à la commande CAT, Netcat peut recevoir des informations de STDIN et écrire à STDOUT, ce qui le rend idéal pour les workflows impliquant des tuyaux et des redirections. Le NC La commande est généralement utilisée pour évoquer Netcat pour faciliter l'utilisation.

Dans ce tutoriel, vous apprendrez à faire ce qui suit avec Netcat:

  • Faites une demande HTTP pour saisir une page Web
  • Discutez avec des amis à travers les machines
  • Copier les fichiers entre les machines
  • effectuer la numérisation du port
  • Afficher les messages de Netcat dans un navigateur Web
  • Créer et se connecter à un shell inversé
Conseils et astuces avec la commande netcat sur Linux

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution
Logiciel Netcat
Autre Privilèges racinaires d'utiliser des ports inférieurs à 1024
Conventions # - Commandes Linux à exécuter avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - commandes Linux à exécuter en tant qu'utilisateur non privilégié régulier

Saisir une page Web

AVERTISSEMENT
Les connexions NetCAT ne sont pas cryptées. Les exemples suivants transmettent des données dans le clair. N'utilisez pas NetCAT pour transmettre des données sensibles sur des réseaux indignes de confiance tels que Internet et le Wi-Fi public. Si vous devez transmettre des données en toute sécurité, envisagez d'OpenSSH.

NetCAT peut être utilisé pour établir des connexions arbitraires aux services réseau. En conséquence, il peut être utilisé pour faire des demandes HTTP à un serveur Web un peu comme un navigateur Web. Allons-y et saisissons la page d'index de Google.com.
Entrer le NC commande suivie par le héberger et le port Vous souhaitez vous connecter à.

$ nc google.com 80 

Maintenant, faisons la demande HTTP. Tapez ou copiez / collez ce qui suit et appuyez deux fois sur Entrée.

Obtenir / indexer.html http / 1.1


Vous devriez voir une sortie similaire à cette capture d'écran.

Prenez le site Web à l'aide de Netcat

Discuter

Cet exemple suppose que vous avez 2 ordinateurs sur le même réseau, avec des noms d'hôte hôte1 et host2. Cette hypothèse sera également faite dans les exemples suivants. Pour créer une connexion d'écoute NetCAT sur host1, entrez ce qui suit.

$ nc -lv 8888 

Cela écoute les connexions sur le port 8888. Le -V Flag spécifie la sortie verbale qui vous donnera plus d'informations sur les connexions entrantes.

Maintenant sur host2 entrer:

$ nc host1 8888 

Vous remarquerez que tout texte entré dans le terminal sur host1 est envoyé au terminal sur host2 et vice versa. Cela peut être utilisé comme chat ADHOC entre deux utilisateurs sur le même réseau.

Transfert de fichier

NetCat peut être utilisé pour copier un fichier d'une machine à une autre. Supposons que vous ayez un fichier appelé ncnotes.txt dont vous souhaitez transférer hôte1 pour host2

Sur host1, entrez ce qui suit pour créer le fichier et écoutez une connexion entrante pour le transférer sur le port 2222:

$ echo "Ce sont mes billets de netcat"> ncnotes.txt $ nc -l 2222 < ncnotes.txt 

Sur host2, entrez ce qui suit pour copier / recevoir le fichier, puis l'imprimez-le à stdout afin de vérifier que le transfert de fichier a été réussi.

$ nc host1 2222> ncnotes.txt $ cat ncnotes 

Et si vous souhaitez transférer un dossier entier plutôt qu'un seul fichier? Netcat n'est pas capable de le faire seul, nous devrons donc utiliser la commande TAR.

Entrez ce qui suit sur HOST1 pour créer un dossier rempli de cinq fichiers, puis utilisez TAR pour créer une archive et le tuer sur le réseau avec NetCat.

$ mkdir fichiers; Fichiers Touch / 1… 5 $ TAR -CVZ Fichiers | NC -L 8888 

Entrez ce qui suit host2 Pour transférer le dossier et vérifier qu'il comprend les cinq fichiers.

$ nc host1 8888 | fichiers tar -xvz $ ls 

Sur host1 le -c Le drapeau est utilisé pour créer l'archive qui sera tumené dans Netcat, -V est utilisé pour la sortie verbeux afin que nous ayons une rétroaction visuelle qui nous permet de savoir que cela se produit et -z est utilisé pour compresser l'archive afin que le transfert de réseau soit plus rapide. Dans notre exemple, la compression ne fait pas beaucoup de différence puisque le des dossiers Le dossier est rempli de fichiers vides, mais vous voudrez peut-être transférer de grands répertoires / fichiers, il est donc bon de savoir. Sur host2 le -X Le drapeau est utilisé pour extraire les archives qui sont tuées à partir de Netcat, -V est pour l'extraction verbeux, et -z est de décompresser les archives.

Balayage de port

NetCAT peut être utilisé comme scanner de port rudimentaire en utilisant le -z drapeau.

Supposons que tu es sur hôte1 et vous voulez savoir si un serveur SSH s'exécute sur host2. En supposant qu'il s'exécute sur le port par défaut (22) et qu'il n'y a pas d'accès de blocage du pare-feu, vous pouvez utiliser la commande suivante pour voir si le service est en cours d'exécution.

$ nc -zv host2 22 

NetCat peut également scanner une gamme de ports pour voir lesquelles si l'une d'entre elles est ouverte. Cela peut être utilisé pour déduire les services de cette machine. Supposons que tu es sur host2 et vous voulez voir si des ports entre 1 et 1024 sont ouverts sur hôte1; vous pouvez utiliser la commande suivante.

$ nc -zv host1 1-1024 

Selon la version de NetCAT que vous avez installée sur votre système, la commande précédente ne rapportera que les ports ouverts, soit il imprimera une ligne pour chaque port ouvert et fermé. Si le premier est le cas, la sortie est très facile à lire, mais si le second est le cas, la sortie peut s'avérer difficile à analyser et la commande suivante doit être utilisée à la place afin que seuls les ports ouverts soient affichés.

$ nc -zv host1 1-1024 2> & 1 | Grep a réussi 


Afficher le message dans le navigateur

Sur hôte1 Entrez ce qui suit. Le -k Le drapeau maintient la connexion vivante afin qu'elle puisse être reconnectée à nouveau par la même machine ou par d'autres machines. Sans ce drapeau hôte1 Arrêtera d'écouter plus de connexions une fois la première connexion établie.

$ echo "bonjour" | NC -LKV 5555 

Sur host2 Ouvrez un navigateur et accédez à host1: 5555

Tu devrais voir les mots bonjour affiché dans le navigateur.

Coquille inversée

NetCAT peut également être utilisé pour établir un shell inversé afin d'administrer à distance une machine sur le réseau. Cela se fait avec le -e drapeau. Dans cet exemple, nous voulons nous connecter à une coquille de bash host2 afin de l'administrer à partir de hôte1.

Sur hôte1 entrer:

$ nc -lv 6666 

Sur host2 entrer:

$ nc -v host1 6666 -e / bin / bash 

Maintenant sur hôte1 Entrez ce qui suit et il sera évident que nous avons un accès à distance à la coquille de bash host2.

$ hostname $ whoami $ ls 

Vous devriez voir le nom d'hôte pour host2, le nom d'utilisateur de l'utilisateur qui a initié NC sur host2 et leurs fichiers. De nombreuses versions de Netcat n'incluent pas le -e option due à son potentiel d'abus. L'établissement d'un shell distant sur une machine qui a une version de NetCAT qui n'inclut pas l'option -e nécessiterait d'effectuer les mêmes commandes NetCat sur HOST1, tout en utilisant un programme différent pour créer le shell inversé sur host2. Des solutions pour cela existent pour Bash, Python, Perl, PHP et plus.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Masterring Bash Script Loops
  • Choses à installer sur Ubuntu 20.04
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
  • Conseils de ligne de commande bash utiles et exemples de trucs - Partie 1
  • Conseils de commande de commande de bash utile et exemples de trucs - Partie 3
  • Exemples de lignes de commande de commande de bash utile - Partie 4
  • Conseils de commande de commande de bash utile et exemples de trucs - Partie 2
  • Introduction aux tuyaux nommés sur Bash Shell
  • Conseils de commande de commande de bash utile et exemples de trucs - Partie 5