Conseils et astuces avec la commande netcat sur Linux
- 2811
- 561
- Maxence Arnaud
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é
Exigences et conventions logicielles utilisées
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
AVERTISSEMENTLes 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 NetcatDiscuter
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
- « Comment installer, configurer et utiliser Mutt avec un compte Gmail sur Linux
- Comment tracer les appels système effectués par un processus avec Strace sur Linux »