Jump to content
cmiN

[CrackMe] v1.5 python [cmiN]

Recommended Posts

CMsample.PNG

Cel mai greu Crack-Me care am reusit sa-l fac. Sunt 100% sigur ca nu poate fi spart si in fiecare zi voi adauga cate un indiciu, iar in maxim 3 zile pun sursa si explic exact cum functioneaza, insa nu voi dezvalui parola sau mesajul ce trebuiesc aflate. Mesajul este in romana si apare in consola nu prin msgbox sau alte chestii. Sunt 2 fisiere de total dintre care se executa crk.exe ( puteti executa orice vreti voi, dar ala o sa va functioneze la dublu-click )

DOWNLOAD:

-source (Pastebin): crk si hlp

-source (FTP): aici

-binary (FTP): aici

-install (Filehosts): FTP

credits: cmiN

release date: 03.05.2009

updated to: 03.05.2009

GL si dau 2 euro pe mobil celui care il sparge ! }{

Link to comment
Share on other sites

Oferta cu 2 euro pe mobil a expirat!

****

Sursele: crk si hlp

****

#1

Si acum sa le explic:

Dupa cum vedeti acele 2 executabile comunica intre ele prin argumente pentru a fi cat mai greu de depistat hash-ul/encriptia/codarea parolei/mesajului si pentru a face imposibil un reverse engineering pentru aflarea mesajului/parolei ca doar asta era scopul deoarece mesajul era codat in bin, apoi criptat cu ARC4 unde ca cheie era folosita parola in plain text, apoi encriptia codata in hex.

#2

Si ceva mai practic:

Daca este executat hlp se verifica daca contine vreun argument din astia: ("-get" sau "-msg") si cum la dublu-click exista doar un singur argument, adica numele executabilului acesta se inchide totusi daca este executat din cmd cu un argument aleatoriu, la fel nu se intampla nimic, dar sa zicem ca ati ghicit/aflat unul din acele 2 argumente (cel mai important fiind "-msg"), atunci va fi executat crk cu cateva argumente printre care si cel care contine plaintext-ul parolei introduse de user (asta daca inainte de a se ajunge aici a fost introdusa parola corecta). Oricum toate errorile sunt exceptate prin exit() asa ca nu prea aveti cum sa va dati seama daca ati reusit sa faceti ceva sau nu.

Deci va chinuiti degeaba cu hlp asa ca trebuie executat crk

Este executat crk, se verifica daca totul e in regula cu numele executabilelor, daca nu au fost modificate, daca nu exista, etc. De asemenea cum numarul de argumente va fi 1 (numele executabilului) se va apela functia start() care va deschide hlp cu argumentul -get, iar crk se va inchide. hlp analizeaza argumentele vede ca are 2 vede ca il are pe -get si atunci va deschide crk cu argumentele -get_response si password, iar hlp logic se va inchide, unde password contine:

39*051*66*097*35*055*66*056*36*053*37*100*65*055*31*056*31*048*31*101*31*054*31
*054*39*102*63*048*65*054*39*097*39*055*31*050*64*050*66*098*61*050*35*056*61*055
*37*057*36*098*61*101*35*048*32*054*65*056*66*050*35*101*36*097*65*051*30*052*37
*057*62*101*61*056*34*100*35*056*39*056*31*097*66*100*61*048*64*100*64*053*37*098
*63*054*36*049*30*057*32*051*66*099*64*099*30*051*61*049*61*049*35*102*34*101*30
*051*62*048*62*056*34*049*35*051*66*056*37*053

Dupa cum vedeti sunt grupuri de numere a cate 2 sau 3 unde fiecare numar este < 128 sau < 7f, deci e clar ca numerele din 2 cifre reprezinta hex(caracter) [base 16] iar cele din 3 cifre reprezinta ord(caracter) [base 10]. Dupa decodare se va obtine asta:

93fa57f8657de718101e16169fc0e69a9712d2fba258a7796bae5026e8f25e6ae30479bea84d589
81afda0ddd57bc6610923fcdc03a1a15f4e03b0b84153f875

Ce poate fi :) ? Contine caractere hex mai mari ca 7f (non-ascii) [nu neaparat toate] MD5-ul din cate stiam are 16 caractere (lungime 32) si e de 128 biti, asta are 64 caractere (lungime 128) si banuiesc ca e de 512 biti deci .... ati ghicit e un hash de sha512, care evident apartine parolei, care este si cheie pentru urmatoarea encriptie care urmeaza.

Dupa ce crk analizeaza argumentele si decodeaza password prin functia verify() este verificat hash-ul obtinut cu hash-ul parolei introduse de user si daca nu coincide se inchide, dar daca coincide se apeleaza hlp cu argumentul -msg si se inchide crk. hlp analizeaza argumentele si apoi deschide crk cu 3 argumente printre care message si un argument primit mai inainte de crk ce contine plain textul parolei (care desigur e corecta ca daca nu coincideau hash-urile nu mai era deschis hlp in continuare ci se inchidea crk si atat)[plain textul parolei trebuie pentru decriptarea mesajului ... o sa vedeti ce urmeaza]. Argumentul message contine:

07*88*40*ba*a7*7a*05*be*13*e1*a3*b3*a2*d3*b4*fa*f5*44*4b*15*51*66*a8*b0*ef*fd
*4c*00*d2*4d*d5*b8*97*f7*a8*03*64*53*28*fe*87*aa*ad*ea*9b*2c*0d*5a*89*4b*71*60*95
*e4*f7*92*94*ad*75*5f*41*99*0c*df*47*d4*7a*33*4c*bb*2e*b4*f7*69*38*f6*c6*68*f3*9a
*c7*27*13*c1*c4*98*9a*89*d9*3c*2b*c7*5f*e9*4d*1c*11*8d*3e*ff*a6*3e*64*a4*3d*a9*a7
*f1*0f*1c*fb*db*36*71*8f*10*0b*fa*c5*b2*15*8b*49*b5*6d*25*cd*e3*eb*d1*c8*9d*9b
*a8*5f*50*98*9f*0c*b1*3b*e4*7b*ab*f4*ae*fd*d2*ee*9b*7a*1e*77*c6*eb*39*1c*69*4c*7a
*95*da*ec*23*b2*f3*01*1c*75*4a*10*b2*94*87*66*bd*10*48*e6*2c*2d*b0*5c*fe*f3*b0*82
*96*81*54*2a*b6*12*b8*64*57*df*a6*1f*92*a2*f8*aa*7c*a7*fb*78*7e*4b*9c*75*88*5c*fa
*59*43*e3*fd*8c*99*23*ff*30*fb*f2*09*77*a9*b6*53*47*43*c2*07*ce*f5*c7*5a*ef*89
*e5*c3*eb*4a*3f*3f*f6*b5*60*ef*49*64*f0*c4*c6*55*d9*9e*6f*cc*ba*c3*7d*c7*09*a6*25
*1c*69*42*74*3f*c9*6d*55*6c*77*47*ca*81*0d*f9*28*0f*9b*99*18*5d*05*42*15*ee*a5*da
*23*06*55*c7*fd*7d*e8*9c*a8*95*27*c8*b3*88*ba*40*1b*ba*67*f5*44*a5*1a*b5*46*34
*a7*53*b5*a5*6f*f7*f0*7e*70*da*24*43*73*55*e7*52*1c*68*6e*0a*bf*60*0a*86*e6*6a*8b
*6d*6e*1b*a8*0e*18*96*e7*15*18*db*26*d9*fa*81*68*8c*98*4a*8f*16*8c*c0*41*24*6f*c9
*b3*3f*63*90*b6*56*08*28*88*10*14*7c*2a*d1*15*16*19*cd*12*a2*43*3f*9f*27*07*e1
*36*a3*44*11*e7*db*3c*76*50*cf*aa*a7*26*28*d1*15*12*55*0c*d5*4a*b3*54*02*a0*91*df
*0a*e0*e0*05*12*8c*0e*8f*11*d1*b4*e0*d4*17*2c*3b*a9*4b*f9*0f*b3*7d*48*37*07*73*3a
*fe*38*1d*76*06*c5*83*5b*c6*d1*24*0d*f2*9b*50*1a*31*96*49*5d*c2*25*79*1e*ed*11
*2a*67*fb*eb*9c*b7*f0*5c*ae*d6*62*46*d9*ce*19*59*06*d0*5a*35*49*93*8a*4f*35*97*9c
*ee*bd*aa*43*e6*0a*48*eb*d0*43*d3*23*42*f2*b9*82*ac*25*43*12*d4*71*5d*0c*0a*fd*1b
*55*b0*de*2a*2d*96*12*a0*60*04*3f*07*9d*6c*7e*b0*c0*84*6a*60*54*5b*d8

E cam maricel si contine caractere mai mari de 7f [non-ascii dupa decodare] deci pare a encriptie si cum cineva mai 1337 s-ar gandi ca pentru maxima securitate ca cheie este folosita chiar parola ce trebuie aflata si cum parola/cheia sunt de lungimi diferite in majoritatea cazurilor e clar ca singurul algoritm public si cunoscut care poate indeplini toate conditiile astea este un ARC4.

Se decripteaza message apoi se obtine un set de caractere codate in bin (ex.: "01110100"), apoi se decodeaza acele grupuri de 0 si 1 si se obtine cate un caracter de fiecare grup. Fiecare caracter este lipit de cel din dreapta lui in ordine si astfel este compus MESAJUL ce trebuie gasit, care in cele din urma este afisat in consola sistemului [cmd].

In final ati ajuns la partea cea mai usoara care poate fi rezolvata doar prin bruteforce sau eu stiu ce metode mai cunoasteti voi. Puteti incerca sa descoperiti plain textul hash-ului de sha512 pentru a afla parola sau puteti incerca sa decriptati encriptia de ARC4 pentru a afla caracterele binare, apoi si plain textul mesajului. Succes =) !

P.S.: Am folosit " * " pentru substitutia spatiului pentru a nu intra in conflict cu argumentele (daca lasam spatiu fiecare set de cate 2-3 caractere era luat ca argument :) )

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...