_________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O8] _|_| NetCat \_________/_/ So CalleD _ ______ __ _ _ Read an you will know what it is! _/_/ [By:_rix] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] NetCat ====== TCP/UDP, sockets, ports,... On entend ca partout mais on sait pas trop comment chipoter avec :) Ou alors il faut commencer a se casser la tete a apprendre du C, puis a apprendre WinSock, puis a melanger les 2, puis... :))))))))) Je vous propose cette fois-ci un petit utilitaire, tout petit, tout frais, tout puissant, qui s'appelle NetCat. D'abord je vous conseille d'aller tout de suite le chercher, comme ca ca sera fait => http://www.l0pht.com/~weld/netcat/ Mais au fait, avant d'aller le chercher, j'aimerai bien savoir ce que ca fait ce truc :) INTRO ====== Ben voila. NetCat est un calibre utilitaire en ligne de commande, qui permet de faire a peu pres tout ce que vous voulez avec des sockets. Un socket, c'est une connection entre 2 ordinateurs. Pour identifier un socket, il faut 3 trucs: -les IPs des 2 ordinateurs connectes. -les ports des 2 ordinateurs qui sont connectes. -le protocole utilise. 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-la. Les avantages de NetCat ? Il permet d'ouvrir facilement des connections quelconques (TCP ou UDP) sans savoir programmer, aussi bien pour crier des petits clients/serveurs, que pour tester un programme a vous :) Il existe sur plusieurs systemes (Windows 95/98,NT,Linux,Unix,...) Il est utilisable a 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 (vachement plus rare, c'est pas le style de M-------t :) En fait, c'est vraiment un programme a tout faire... On va voir ca un peu plus en detail ;) NETCAT CLIENT ============= On va donc commencer par le debut :) Pour ouvrir un socket, rien de plus simple. Par exemple, je veux me connecter sur IRC. Je tape ceci: NETCAT antwerpen.be.eu.undernet.org 6667 Et je me retrouve connecte sur le serveur antwerpen ! Tout ce que vous taperez ensuite au clavier sera envoye directemment dans le socket, vers antwerpen. La vous me regardez en disant "tient il connait pas mirc suila, moi je trouve pas ca trop marrant de me connecter sur irc avec struc de fou". NetCat est un outil a tout faire. Il permet simplement de gerer 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 se passe dans la connection, qu'il n'effectue aucun traitement, et qu'il envoie aussi exactemment ce que l'on veut qu'il envoie. Certains vont ptet se dire que Telnet de Windows fait la meme chose... Et la... detrompez vous hehe :) Telnet envoie pleins de saloperies a votre insu ;))) Justemment, a propos de Telnet, NetCat vous permet d'emuler la negociation telnet. Kessa veut dire scharabia ? Ca veut dire que NetCat vous permet justemment d'emuler un client comme Telnet, en envoyant les saloperies dont je parlai en plus ;) Pour cela, pas complique: NETCAT -t 23 Et voila... Cette fois ci, plus de problemes, toute la negociation telnet est faite par NetCat. Et vous voyez en plus ce qu'il envoie. N'est-ce pas merveilleux ? NETCAT SERVEUR ============== Maintenant qu'on a un peu chipote pour voir ce que NetCat faisait en mode client, nous allons essayer de faire un petit serveur. Par exemple, nous allons ouvrir sur notre machine le port 21, et faire croire a l'imbecile qui se connecte qu'il est tombe sur un Wingate :))) Voici la syntaxe: NETCAT -l -p 23 -l pour dire qu'on est en mode listen (on attend une connection sur un port) -p 23 pour dire que le port sur lequel on attend la connection est le port 23. On lance, et puis NetCat s'arrete... Merde vla tout est plante !!! Ohh que non :) Maintenant, on va lancer un petit client telnet, comme le telnet de Windows, et on se connecte sur notre IP, port 23. Par exemple, on lance le telnet de windows, "telnet 127.0.0.1 23" Et qu'est-ce qu'on observe ? On observe que notre client telnet se connecte bien sur notre petit serveur... Maintenant, on tape dans NetCat une petite phrase, et magiquement, cette petite phrase apparait dans le client Telnet. Tant qu'on y est, on tape une petite phrase dans le client Telnet, et... Et ben quoi elle s'affiche pas a l'ecran notre phrase ? Pourtant, en allant voir dans l'ecran de NetCat, le serveur a bien recu notre tite phrase :) Qu'est-ce que je vous disait que Telnet vous cachait des choses hein ;) Maintenant on deconnecte le client Telnet, et voila que NetCat se coupe. Pas tres pratique un serveur qui se coupe apres une connection... Pour cela, il existe une autre commmande: NETCAT -L -p 23 Cette fois-ci, le "-L" majuscule annonce a NetCat qu'il doit attendre des connections en permanence. Voila qui est plus pratique :) Un autre exemple: Lancons ceci: NETCAT -l -p 80 Puis, nous lancons Internet Esplorer sur l'adresse "http://127.0.0.1". ensuite, on retourne vite dans NetCat, et oh ! sacrilege ! damnation ! En regardant un peu mieux les lignes que Internet Explorer envoie au serveur web (NetCat ici), on comprend aussi un peu mieux comment il font pour savoir tout ce qu'il y a sur notre machine, chez Microsoft ;))) Ouaip c bien tes trucs, mais pour revenir au Wingate, si je dois chaque fois qu'il y a une connection qui s'ouvre, taper tres vite "Wingate>" pour simuler un Wingate, ca risque de paraitre assez louche, et de vite m'emmerder surtout :) Et c'est la qu'apparait le genie de NetCat... :) REDIRECTIONS ENTREES/SORTIES ============================ Du fait qu'il est utilisable a la ligne de commande via des parametres, NetCat va nous permettre de facilemment le programmer et l'utiliser dans des petits scripts (aussi un batch sous Linux qu'avec un .bat sous Dos/Windows). Nous allons donc creer un petit fichier wingate.txt, qui contient la ligne suivante: Wingate> Ensuite, nous lancons la commande suivante: NETCAT -L -p 23 < wingate.txt Ensuite, on relance notre client Telnet. Et la ! Magie :) Qu'est-ce qui se passe ? NetCat, a la place de recevoir les caracteres du clavier, va les chercher dans notre fichier wingate.txt, et les envoie tel quels. N'est ce pas formidable ;) Et si nous voulons logger tout ce qui est tape a notre faux Wingate ? Ben nous lancons ceci: NETCAT -L -p 23 > wingate.log Et le tour est jouer :) Maintenant encore plus fort ! hehe :) Ouaip c'est pas mal ca, mais bon le texte dans le fichier je ne sais pas le changer une fois que c'est lancer tout ca. Ca reste quand meme fort fictif... Maintenant, nous allons essayer de nous programmer un petit serveur qui va nous permettre de controler notre ordi a distance :) NetCat permet les redirections a partir d'un fichier, en entree, et en sortie. Mais NetCat permet aussi de rediriger les entrees et sorties d'un programme vers un socket :) Lancons plutot: NETCAT -L -p 23 -e c:\command.com Ensuite, nous lancons "Telnet 127.0.0.1 23". Et voila que notre command.com s'affiche dans notre fenetre Telnet :) Donc en reflechissant bien, si vous savez programmer en GWBasic (sorti en 1852 :)))), et que vous savez utiliser PRINT et INPUT, vous allez sans probleme pouvoir creer un beau petit shell pour votre Windows ;)))) En fait, grace a cette option, si vous savez programmer un programme qui utilise les interfaces standard d'entree/sortie (en Pascal, en C,...), vous n'avez plus du tout a vous occuper de la programmation des sockets !!! Il vous suffit simplement d'afficher et de saisir les donnees comme si c'etait un programme a la ligne de commande et c'est NetCat qui s'occupe de tout gerer via un socket. Tient, encore une petite option interessante, mais uniquement pour Windows celle-la (jpense que c la seule, rulez pas les linuxiens quoi ;) Ca vous tenterait hein d'installer un beau petit shell comme ca sur un ordi dans votre ecole hein ? hehehe. Je le voit dans vos yeux :) Tapez un ti peu: NETCAT -L -p 23 -d -e c:\command.com Et voila qu'il sort tout de suite ! Lancons tout de meme Telnet, pour etre certain. Tient tient... Voila que Telnet est connecte !!! L'option -d detache simplement NetCat de la console, ce qui fait qu'il reste actif en memoire (on le voit dans la liste des taches), mais pas dans la liste des fenetres :) Pour faire un beau pti trojan sur un ordi, suffit donc de lancer cette commande au demarrage, et un beau serveur s'installe tranquillement sur le port 23 sans rien montrer a personne :) HACKING ======= Comme NetCat est un outil a tout faire, il peut forcemment aider a faire des choses biens... et des choses moi bien... Comme le dit a peu pres le mec de chez L0pht qui a ecrit le programme: "si je vous donne un tournevis, vous pouvez aussi bien reparer ma bagnole en utilisant ce ptit outil bien sagement que la foutre en l'air en bourant dedans comme un malade" ;)))) NetCat contient toute une serie d'option qui sont orientee scan. Scanner c'est avant tout essayer de voir quels sont les services disponibles sur les ports d'une machine distante. Pour cela c'est pas complique. En fait, il suffit de taper une serie de ports a la place d'un seul port. Par exemple, si on tape 1-100, NetCat va ouvrir des connections sur les ports de 1 a 100. Le probleme est que NetCat ne nous indique pas comme cela le numero du port ouvert. Il faut donc que nous utilisions aussi l'option -v et meme 2x, "-vv", pour avoir des informations sur les connections. Tapons par exemple: NETCAT -vv 127.0.0.1 1-100 Cette commande va scanner les ports 1 a 100 de votre ordinateur. Une fois ca lance, vous allez voir que NetCat va afficher des messages "refused" sur tout les ports qui ne sont pas ouverts, et qu'il affiche entre () le service courant qui se trouve sur ce port (quand il y en a un specifique). Si le port est ouvert, NetCat affiche un message "Open". Il faut aussi remarquer que NetCat scan du haut vers le bas. Par exemple si on entre comme ports 1-100, il va scanner 100,99,98,...,3,2,1. Pour changer ca, il existe une petite option bien pratique, -r. Essayer un ti peu de taper: NETCAT -vv -r 127.0.0.1 100-110 Si vous observez attentivement, on remarque que NetCat scan maintenant les ports completement au hasard dans l'intervall 100 a 110. Voila qui est bien interessant ! En effet, pas mal de systeme de protections de scan sont bases sur une detection sur des ports consecutifs :))) NetCat n'est pas limite, on peut entrer toute une serie de ports. Par exemple, on peut scanner de cette maniere: NETCAT -vv -r 127.0.0.1 1-1024 4900-5000 6667 Dans ce cas, NetCat va donc scanner les ports de 1 a 1024, les ports de 4900 a 5000, et le port 6667. Cependant, il est utile de remarquer que l'option -r ne travaille que par range, c'est a dire que NetCat va scanner tout les ports de 1 a 1024 au hasard, puis passer au range suivant, et non pas scanner tout les ports au hasard dans n'importe qu'elle ordre. En fait, dans ce cas-ci, des que NetCat trouve un port ouvert, il s'arrate, et permet d'envoyer des donnees a ce port. Pour effectuer un scan rapide, qui ne s'arrete pas si le port est ouvert, il faut utiliser en plus le switch -z. Par exemple: NETCAT -vv -r -z 127.0.0.1 130-140 au niveau des ports, NetCat supporter l'envoi a plusieurs ports en parallele (c'est ce qu'on fait pour scanner en fait ;), mais on peut aussi utiliser ca pour flooder. Par exemple, on peut taper la commande suivante: NETCAT 127.0.0.1 139 139 139 139 139 139 139 139 139 139 Voila je pense que c'est a peu pres tout au niveau des ports scan,etc... :) DIVERS AUTRES TRUCS =================== La premiere chose est que toutes les options dont j'ai parle peuvent etre aisemment combinee, 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 specifiant un port source sur le client bien precis: NETCAT -p 65000 www.antwerpen.be.eu.undernet.org 6667 Dans ce cas-ci, par exemple, ca va permettre au client d'etre connecte avec comme port local le port 65000, ce qui est un port tellement haut qu'il faut deja y aller pour essayer de vous deconnecter, par exemple avec un Click (ICMP Nuke), qui d'habitude attaque les ports d'allocations temporaires, qui generalement sont les ports de 1024 a 5000. NetCat possede une petite option diablement interessante ! :)) Il s'agit de l'option -u. Cette option permet de creer des sockets UDP a la place de sockets TCP. La chose la plus interessante est probablement de scanner des ports UDP a la place de TCP, en utilisant les options -z et -u. En effet, il n'existe pas beaucoup de bons scanners UDP sur le marche, mais par contre il existe pas mal de services qui sont implementes sur des ports UDP ! (DNS,TFTP,...);))) Il y a aussi une option de time-out, -w. Par exemple, NETCAT -w 5 antwerpen.be.eu.undernet.org 6667 va arreter netcat apres 5 secondes si la connection n'est pas etablie. Il y a aussi une option -i, qui permet de specifier un delai de scan, pour ne pas scanner trop vite (ce qui parait souvent louche, et est facilemment reparable). Par exemple, pour scanner en essayant le moins possible de se faire remarquer, on peut taper la commande suivante: NETCAT -vv -z -i 10000 -r 127.0.0.1 1-200 qui va scanner toutes les 10000 millisecondes (tt les 10 secondes) un port au hasard sur la machine 127.0.0.1, de 1 a 200. Une autre option tres interessante, particulierement pour debugger des programmes ou analyser des protocoles, est l'option -o. Par exemple, en tapant: NETCAT -o netbios.log 127.0.0.1 139 NetCat va logger dans le fichier netbios.log toute les octets recus, mais sous forme de dump hexadecimal, ce qui est assez pratique dans certains cas:) Pour ceux qui connaissent TCP/IP en detail, NetCat contient aussi une option qui permet d'envoyer des packets "source-routed", donc des packets qui sont envoyes via des routers dont on specifie les IPs, grace aux options -g et -G. Et enfin, NetCat supporte aussi le choix d'un IP dans le cas d'un ordinateur relie a plusieurs interfaces d'IPs differents. Pour terminer, si vous avez un petit probleme, n'hesitez surtout pas a taper la commande NETCAT -h , qui affiche un resume de toutes les commandes disponibles, puis je vous conseille aussi de lire le petit fichier .TXT fourni avec NetCat, qui explique pas mal de petits trucs interessants a faire avec NetCat. ___________________ [Quotes of the month]\____________________________ [Dit papa, est-ce qu' il y a du colerol dans ces [frittes.. je le sais pas ma chouette mais le chien [en a meme pas voulu! ]