Aujourd'hui, on va faire l'étude d'une petite "protection
maison" : Christal 5.0 ( http://christal1.cjb.net )
Un désassembleur ( IDA, W32Dasm,... ) et un éditeur hexadécimal ( Hiew, Hexworkshop, etc )
ou un String Viewer ( Showstring ) suffiront largement à l'étude.
Disponibilité : selon timing.
Christal a été développé, très certainement, en 1997 dans l'anonymat le plus
total pour atteindre aujourd'hui la réputation qu'on lui connait.
Les premières versions de Christal sont apparues sporadiquement chez LittleBobJr et ont été
testées avec succès dans 4 cas bien définis :
- La Main Rouge
- ATP Team
- Le Groupe de Travail
- La Christal Page
Certaines releases ont très certainement échappé à l'étude mais cela reste à
confirmer.
La version actuelle, Christal 5.0, s'avére dotée d'un moteur de tâche polymorphique avancé,
lui permettant d'évoluer avec aisance dans la Cryptographie et le développement / programmation en
ASM.
En outre, son aptitude a utilisé le "Recursive Tunneling" force Christal 5.0 à se lancer
dans toutes études poussées quelqu'elles soient, voir challenges type Reverse Engeenering Academy
( REA ).
Toutefois, pour ce dernier cas, un bug a été détecté par l'encryptage de la Signature
"c.h.r.i.s.t.a.l" en "l.a.t.s.i.r.h.c".
Ce bug avait déjà été constaté auparavant.
Christal 5.0 est fourni avec une librairie conséquente, disposée sur 3 sites , permettant de palier
à toute situation critique par l'utilisateur :
- http://foundme.cjb.net
- http://afrt.cjb.net
- http://christal1.cjb.net
Christal 5.0 s'avére peu gourmand en ressources système. Quelques crackmes suffisent largement à
le maintenir en activité et opérationnel.
I \ L'Analyse
Avec Showstring, on constate que Christal 5.0 s'avère riche
en renseignements :
0000004D !This program cannot be run in Groupe mode.
00000178 .text
000001A1 .rdata
000001C9 .data
000001F1 .idata
00000219 .rsrc
00000241 .reloc
00000272 .tutors <-- ?
0000080F .outils <-- ?
|
La présence de sections supplémentaires dénotent certainement
un code supplémentaire aux programmes standards.
00006D1C Standard Analysing
00006D46 Debugging
00006D70 Unpacking
00006D9A Anti-debugging
00006DC4 DeProtectoring
00006DEE VBOXing
00006E20 Cryptography Analysing
00006E4A Keygenning
00006E86 VBA blasting
00006E9C Reversing
00006EBE ASM Programming
00006EDC Tutoring
00006EF2 Guru-ing
00006F16 Putting my WebSites en Bordeling
00006F3C Sorting connering contring Female Cracking
00006FFF Taking rouleau de patissering on the head
|
Ok, Christal 4.0 n'est pas à classer dans le basique.
Le passage sous IDA s'avére étonnant !
Le schéma de détournement d'activité est tout bonnement stupéfiant
!
- Techniques d'anti-debugging avancées par saturation
phonique stridente et prolongée. ( en verdatre )
- Fake jumps ( puis real ) et zigzagment progressif du traçage
par accumulation alcoolique. ( en rose )
- Boites de dialogue d'avertissement accompagnées de
rugissements incohérents pour bloquer le debugger et apeurer le cracker. ( en gris )
Christal 5.0 dispose de 3 entry-points compartimentés et bien séparés
dans les sections les plus importantes ! ( en bleu clair, bleu marine et marron
)
La suite de l'étude via IDA, nous améne à tomber dans les sections supplémentaires
constatées avec Showstring.
.tutors:004020EB cmp ANNEE, 1999
.tutors:004020F1 je short groupe_travail
.tutors:004020F6 push eax ; Christal's Page
.tutors:004020F7 push hDlg ; HTML
.tutors:004020FD call ds:WriteFile
.tutors:00402103 call ds:WebSite
.tutors:00402105 jmp updater_news
.tutors:00402107
.tutors:00402107 groupe_travail:
.tutors:00402107 push TJ_Phone ; not defined
.tutors:00402109 call ds:TEEJI
.tutors:0040211C push PULSAR_ICQ ; not defined
.tutors:0040211F call ds:PULSAR
.tutors:004022A3 push EL_CARACOL_Phone ; not defined
.tutors:004022A5 call ds:EL_CARACOL
|
Ainsi nous retrouvons trace du développement précédent sur
les versions 1.0 et 2.0 de Christal, aussi appelées versions "Groupe de travail".
La suite du désassemblage permet de mieux analyser la routine d'updatage de ses librairies.
.tutors:00402407 updater_news:
.tutors:00402407 mov eax, bordel_complet
.tutors:0040240A cmp organisation_site, eax
.tutors:00402411 jl creation_nouveau_site
.tutors:0040241C mov eax, is_good_photo_in_playboy ; boolean
.tutors:0040241F test eax, eax
.tutors:004024A3 je raw_update
.tutors:004024A5 push path_hidden_link
.tutors:004024A8 call UpdateMyPhotoPinup
.tutors:004024AA raw_update:
.tutors:004024AA push name_file
.tutors:004024B0 call WriteNewsFile
.tutors:004024B8 jmp organisation_my_website
|
Christal 5.0 ( depuis la 3.0 sûrement ) dispose d'un système de mise
à jour photographique "P.I.N.U.P" visant à dérouter le Cracker, qui essaierait de
modifier sa page.
NB : La version 4.1 BETA dispose d'une
fonction d'exportation de la mise à jour photographique au travers de la routine "release_my_cryptotool1.0_with_disabled_button".
La suite de l'étude de la section "Tutors" a du être abandonné sur la routine "organisation_my_website",
le WiA ne disposant pas d'assez d'éléments dans les phénomènes liés à
"la Théorie du Chaos", bien connu dans la Physique moderne ( WinGraph d'IDA en témoigne
) et de puissance de calcul pour poursuivre l'investigation.
Même le passage sous Softice s'avéra infructeux...
Le passage sur le code de la section Outils s'avére aussi instructif.
.outils:0040311A push Roy
.outils:0040311F push Vom_Bonjour
.outils:00403120 push Iczelion
.outils:00403121 call ds:IRC
.outils:0040312F test eax, eax
.outils:00403132 jnz programmation_ok
.outils:00403135 push W32ASM_MSGB
.outils:0040313F call ds:Forum
.outils:00403145 test eax, eax
.outils:00403149 jnz programmation_ok
.outils:00403153 push CC_REF ; "Passer de l'ASM au C en 20 leçons"
.outils:00403157 call ds:Reconversion
|
La suite du désassemblage nous montre un gros Bug dans
la suite de la routine.
.outils:0040511F my_tool_finished:
.outils:0040511F xor eax, eax
.outils:00405120 test eax, eax
.outils:00405121 jnz ask_for_reference_on_protools <-- ICI !
.outils:0040512F mov dword ptr [protools], eax
|
La valeur d'eax étant toujours à zéro,
le saut ne sera jamais fait.
La version de Christal 5.1 releasée aujourd'hui ( 26/09/2002
) ne contient plus ce bug depuis.
WiA ( mode Sympa ON)
NB: Naturellement cette étude n'est pas viable à 100 %, et l'auteur de Christal 5.0 peut encore surprendre
par ses idées et ses développements.
|