Débuter avec netcat

Avril 2012

Netcat est un outil disponible sur les systèmes unix ou linux. Il est aussi disponible sur Mac Os X. Netcat permet d'ouvrir des connexions réseaux sur la machine et d'envoyer des paquets TCP ou UDP.

C'est une véritable application « couteau suisse » qu'il est intéressant de connaître lorsqu'on fait des développements informatiques. Nous allons voir dans ce petit tutoriel quelques utilisations possibles de la commande netcat (« nc »).

Toutes les commandes sont à entrer dans un Terminal et peut être interrompue en appuyant sur les touches « Control + C » simultanément.

On commence par ouvrir une connexion sur le port 8000 :

nc -l 8000

Si vous ouvrez un navigateur et entrez l'adresse http://localhost:8000/ vous verrez le résultat de la connexion dans le Terminal :


        GET / HTTP/1.1
        Host: localhost:8000
        Connection: keep-alive
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.163 Safari/535.19
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        Accept-Encoding: gzip,deflate,sdch
        Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
        Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

Partager un fichier sur un réseau :


        nc -l 8000 < fichier.html

De la même manière que pour la commande précédente, vous aller partager le fichier nommé « fichier.html » sur le réseau. Cela transforme donc rapidement votre machine en serveur de fichiers.

Pour accéder au fichier partagé, vous devez une nouvelle fois entrer l'adresse http://localhost:8000/ dans votre navigateur Internet préféré.

Vous pouvez aussi vous connecter à un serveur avec netcat ! Par exemple, si j'ai un serveur HTTP qui tourne sur ma machine locale sur le port 8888, je peux utiliser cette commande pour m'y connecter :


        nc -v localhost 8888

Le message suivant devrait apparaître si la connexion s'est bien déroulée :


        Connection to localhost 8888 port [tcp/ddi-tcp-1] succeeded!

Notez aussi que j'ai ajouté le paramètre -v à la commande qui permet d'obtenir le mode « verbose » qui écrit dans le Terminal toutes les opérations effectuées par netcat.

Maintenant que vous êtes connectés à votre serveur, vous pouvez lui envoyer des commandes HTTP comme « GET » et observer le résultat.

D'une manière quasi-similaire, il est possible de vérifier qu'un serveur distant fonctionne bien grâce à une commande du type :

        nc -zw1 www.google.fr 80

Cette commande aura pour effet de vérifier que www.google.frfonctionne bien sur le port 80. Si le résultat est positif, vous verrez le message suivant :

 
        Connection to www.google.fr 80 port [tcp/http] succeeded!

Cette commande est donc utile pour vérifier à distance toute une batterie de serveurs.

Vous pouvez aussi utiliser netcat pour une opération de scan de ports ouverts sur votre machine. Si vous vous intérrogez sur la sécurité d'un serveur cette technique peut être intéressante pour trouver ce qui peut poser problème. En effet, tout port ouvert peut constituer une possible faille de sécurité.

 
        nc -zw1 localhost 01-8888

Cette commande scanne les ports 01 à 8888 de votre machine pour détecter si un service est exécuté sur un de ces ports. Ce qui donne comme résultat après quelques minutes :

 
        Connection to localhost 88 port [tcp/kerberos] succeeded!
        Connection to localhost 548 port [tcp/afpovertcp] succeeded!
        Connection to localhost 631 port [tcp/ipp] succeeded!
        Connection to localhost 8888 port [tcp/ddi-tcp-1] succeeded!

Cette opération n'étant pas anodine, elle ne doit être effectuée que sur votre machine ou une machine qui ne vous appartient pas avec l'accord de son administrateur ou son propriétaire.

Pour d'autres articles, cliquez ICI.