elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  [Crackme] Ilustrados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [Crackme] Ilustrados  (Leído 8,789 veces)
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [Crackme] Ilustrados
« Respuesta #10 en: 19 Abril 2013, 06:40 am »

Bueno, hice un poco de tiempo y miré el reto.

Como ha puesto x64Core todo el queso está en 402000.

Basicamente se calcula un hash del string ingresado.

Si miramos la parte donde lee la pass vemos:

Código
  1. 00401366    C70424 38404000      MOV DWORD PTR SS:[ESP],CRACKME_.00404038  ; ASCII "%7s"
  2. 0040136D    E8 76080000          CALL <JMP.&msvcrt.scanf>
  3.  

Con lo cual aceptará un string de hasta 7 chars, que no contenga espacios.

Ahora, la cosa es que hacer un bruteforce con todos los chars posibles tomaría mucho tiempo, PERO hay algo que tenemos a nuestro favor: las colisiones de los hashs (ver http://es.wikipedia.org/wiki/Colisión_(hash))

Gracias a ésto y usando un poco de lógica, sacamos una pass correcta con un mini-smart-bruteforcer...  :P

Una pass válida es: a pedido de Flamer no la posteo pero la paso por MP a mr.blood

Cuando termine el reto pongo mi pseudo-análisis y el bruteforcer en asm.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Flamer


Desconectado Desconectado

Mensajes: 1.051


crack, crack y mas crack...


Ver Perfil WWW
Re: [Crackme] Ilustrados
« Respuesta #11 en: 20 Abril 2013, 04:38 am »

Uufff ya la tengo password optenida por fuerza bruta y enviada por privado

saludos flamer y digan cuando finalisa el reto para revelar la pass
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: [Crackme] Ilustrados
« Respuesta #12 en: 20 Abril 2013, 09:04 am »

Editado el post principal con los que lo pasaron.

Doy hasta mañana de plazo, luego pueden publicar tutos, bruteforces y passwords. Gracias por esperar ;). Tambien publicare el codigo, aunque lo unico interesante es basicamente la rutina del hash (y esta escrita en FASM xD).

Sa1uDoS
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [Crackme] Ilustrados
« Respuesta #13 en: 21 Abril 2013, 22:24 pm »

Bueno, no voy a explicar porque la verdad no tengo el tiempo, pero dejo mis "ideas":


ROR 3 (bits)

7) 0001 1111 1111 1111 2220000000000000
6) 1111 1111 1111 1111 0000000000000000
5) 1111 1111 1111 1110 0000000000000001
4) 1111 1111 1111 0000 0000000000001111
3) 1111 1111 1000 0000 0000000001111111
2) 1111 1100 0000 0000 0000001111111111
1) 1110 0000 0000 0000 0001111111111111
0) 0000 0000 0000 0000 1111111111111111

usando 0FFFFh en DI
inicio  : 0000FFFF
vuelta 1: E0001FFF
vuelta 2: FC0003FF
vuelta 3: FF80007F
vuelta 4: FFF0000F

Real

final:              97D1CB0E    1001 0111 1101 0001 1100101100001110
    ROR EDI, 3      BE8E5874    1011 1110 1000 1110 0101100001110100
    ADD DI,00 ==> 5874 = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 0Dh)
              ==>      = 5874 + 0000 = 5874 + 00(00) = 5874 + (0h  * 0Dh)
   
vuelta char 7:      BE8E5874    1011 1110 1000 1110 0101100001110100
    ROR EDI, 3      F472C3A5    1111 0100 0111 0010 1100001110100101
    ADD DI,AX ==> C3A5 = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 0Eh)
              ==>      = C??? + 0??? = C??? + 0?(??) = C??? + (??h  * 0Eh)

vuelta char 6:      F472C???    1011 1110 1000 1110 1100????????????
    ROR EDI, 3      F476????    1111 0100 0111 0110 0????????????101
    ADD DI,AX ==> ???? = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 0Fh)
              ==>      = ???? + 0??? = ???? + 0?(??) = ???? + (??h  * 0Fh)

vuelta char 5:      F476????    1111 0100 0111 0110 0???????????????
    ROR EDI, 3      A3B0????    1010 0011 1011 0000 ????????????????
    ADD DI,AX ==> ???? = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 10h)
              ==>      = ???? + 0??? = ???? + 0?(??) = ???? + (??h  * 10h)

vuelta char 4:      A3B0????    1010 0011 1011 0000 ????????????????
    ROR EDI, 3      1D80????    0001 1101 1000 0000 ????????????????
    ADD DI,AX ==> ???? = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 11h)
              ==>      = ???? + ???? = ???? + ??(??) = ???? + (??h  * 11h)

vuelta char 3:      1D80????    0001 1101 1000 0000 ????????????????
    ROR EDI, 3      EC00????    1110 1100 0000 0000 ?????????????000
    ADD DI,AX ==> ???N = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 12h) N = 0 o 8
              ==>      = ???? + ???? = ???? + ??(??) = ???? + (??h  * 12h)

vuelta char 2:      EC00????    1110 1100 0000 0000 ????????????????
    ROR EDI, 3      6000????    0110 0000 0000 0000 ?????????????111
    ADD DI,AX ==> ???N = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 13h) N = 7 o F
              ==>      = ???? + ???? = ???? + ??(??) = ???? + (??h  * 13h)

vuelta char 1:      6000????    0110 0000 0000 0000 ????????????????
    ROR EDI, 3      0000???3    0000 0000 0000 0000 ????????????0011
    ADD DI,AX ==> ???N = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 14h) N = 3
              ==>      = 0000 + ???N = 0000 + ??(??) = 0000 + (??h  * 14h) min 0294 / max 13D8
       
Maximos

final:              AFA97B3E    1010 1111 1010 1001 0111101100111110
    ROR EDI, 3      7D4BD9F5    0111 1101 0100 1011 1101100111110101
    ADD DI,00 ==> D9F5 = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 0Dh)
              ==>      = D9F5 + 0000 = D9F5 + 00(00) = D9F5 + (0h  * 0Dh)
   
vuelta char 7:      7D4BD9F5    0111 1101 0100 1011 1101100111110101
    ROR EDI, 3      EA5ECFAB    1110 1010 0101 1110 1100111110101011
    ADD DI,AX ==> CFAB = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 0Eh)
              ==>      = C218 + 0D93 = C218 + 0D(E4) = C218 + (FEh  * 0Eh)

vuelta char 6:      EA5EC218    1110 1010 0101 1110 1100001000011000
    ROR EDI, 3      52F610C7    0101 0010 1111 0110 0001000011000111
    ADD DI,AX ==> 10C7 = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 0Fh)
              ==>      = 023C + 0E8B = 023C + 0E(E2) = 023C + (FEh  * 0Fh)
             
vuelta char 5:      52F6023C    0101 0010 1111 0110 0000001000111100
    ROR EDI, 3      97B011E2    1001 0111 1011 0000 0001000111100010
    ADD DI,AX ==> 11E2 = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 10h)
              ==>      = 025F + 0F83 = 025F + 0F(E0) = 025F + (FEh  * 10h)
             
vuelta char 4:      97B0025F    1001 0111 1011 0000 0000001001011111
    ROR EDI, 3      BD8012FC    1011 1101 1000 0000 0001001011111100
    ADD DI,AX ==> 12FC = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 11h)
              ==>      = 0281 + 107B = 0281 + 10(DE) = 0281 + (FEh  * 11h)
             
vuelta char 3:      BD800281    1011 1101 1000 0000 0000001010000001
    ROR EDI, 3      EC00140D    1110 1100 0000 0000 0001010000001101
    ADD DI,AX ==> 140D = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 12h)
              ==>      = 029A + 1173 = 029A + 11(DC) = 029A + (FEh  * 12h)
             
vuelta char 2:      EC00029A    1110 1100 0000 0000 0000001010011010
    ROR EDI, 3      600014D7    0110 0000 0000 0000 0001010011010111
    ADD DI,AX ==> 14D7 = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 13h)
              ==>      = 026C + 126B = 026C + 12(DA) = 026C + (FEh  * 13h)
             
vuelta char 1:      6000026C    0110 0000 0000 0000 0000001001101100
    ROR EDI, 3      00001363    0000 0000 0000 0000 0001001101100011
    ADD DI,AX ==> 1363 = XXXX + YYZZ = XXXX + YY(ZZ) = XXXX + (char * 14h)
              ==>      = 0000 + 1363 = 0000 + 13(D8) = 0000 + (FEh  * 14h)

inicio:             00000000


El analisis final dió un semi-smart-bruteforcer (MASM)

Código
  1. .386
  2.  
  3. .MODEL flat,stdcall
  4.  
  5. OPTION CASEMAP:NONE
  6.  
  7. Include windows.inc
  8. Include user32.inc
  9. Include kernel32.inc
  10. Include masm32.inc
  11.  
  12. IncludeLib user32.lib
  13. IncludeLib kernel32.lib
  14. Includelib masm32.lib
  15.  
  16.  
  17. .DATA
  18.  
  19. lacad db "!!!!!!!",0
  20.  
  21. chars0      db 024h, 025h, 026h, 030h, 031h, 032h, 033h, 03Dh, 03Eh, 03Fh, 04Ah, 04Bh, 04Ch, 057h, 058h, 059h
  22. db 064h, 065h, 066h, 070h, 071h, 072h, 073h, 07Dh, 07Eh, 07Fh, 0A4h, 0A5h, 0A6h, 0B0h, 0B1h, 0B2h
  23. db 0B3h, 0BDh, 0BEh, 0BFh, 0CAh, 0CBh, 0CCh, 0D7h, 0D8h, 0D9h, 0E4h, 0E5h, 0E6h, 0F0h, 0F1h, 0F2h
  24. db 0F3h, 0FDh, 0FEh
  25.  
  26. sep1 dd 0h
  27.  
  28. chars1      db 027h, 033h, 035h, 041h, 043h, 04Fh, 05Bh, 05Dh, 069h, 06Bh, 077h, 079h, 0A1h, 0ADh, 0AFh, 0BBh
  29. db 0C7h, 0C9h, 0D5h, 0D7h, 0E3h, 0E5h, 0F1h, 0FDh, 021h, 02Dh, 02Fh, 03Bh, 047h, 049h, 055h, 057h
  30. db 063h, 065h, 071h, 07Dh, 07Fh, 0A7h, 0B3h, 0B5h, 0C1h, 0C3h, 0CFh, 0DBh, 0DDh, 0E9h, 0EBh, 0F7h
  31. db 0F9h, 026h, 028h, 034h, 040h, 042h, 04Eh, 050h, 05Ch, 05Eh, 06Ah, 076h, 078h, 0ACh, 0AEh, 0BAh
  32. db 0BCh, 0C8h, 0CAh, 0D6h, 0E2h, 0E4h, 0F0h, 0F2h, 0FEh, 02Ch, 02Eh, 03Ah, 03Ch, 048h, 04Ah, 056h
  33. db 062h, 064h, 070h, 072h, 07Eh, 0A6h, 0A8h, 0B4h, 0C0h, 0C2h, 0CEh, 0D0h, 0DCh, 0DEh, 0EAh, 0F6h
  34.            db 0F8h
  35.  
  36. sep2 dd 0h
  37.  
  38. fname db "sol.txt",0
  39.  
  40. .code
  41. DllEntry proc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
  42. mov  eax,TRUE
  43. ret
  44. DllEntry Endp
  45.  
  46. calcula  proc uses ecx edi esi ptrcadena : DWORD
  47. ;
  48. XOR EAX,EAX
  49. XOR EDI,EDI
  50. MOV ECX,14h
  51. MOV ESI,ptrcadena
  52. bucle:
  53. LODS BYTE PTR DS:[ESI]
  54. MUL CL
  55. ROL AL,2
  56. ADD DI,AX
  57. ROR EDI,3
  58. TEST AL,AL
  59. LOOPNE bucle
  60. MOV EAX,EDI
  61. ret
  62. calcula endp
  63.  
  64. ;cmp eax, 097D1CB0Eh
  65.  
  66. brute proc uses ecx edx
  67. ;
  68. local c1:DWORD
  69. local c2:DWORD
  70. local c0:DWORD
  71.  
  72. ; init
  73. mov c0, 0
  74. mov c1, 0
  75. mov c2, 0
  76.  
  77. mov eax, offset lacad
  78.  
  79. mov ecx, offset chars0
  80. mov cl, byte ptr[ecx]
  81. mov byte ptr [eax], cl
  82.  
  83. mov ecx, offset chars1
  84. mov cl, byte ptr[ecx]
  85. mov byte ptr [eax+1], cl
  86.  
  87. mov ecx, offset chars2
  88. mov cl, byte ptr[ecx]
  89. mov byte ptr [eax+2], cl
  90.  
  91. bucle:
  92.  
  93. invoke calcula, offset lacad
  94. cmp eax, 097D1CB0Eh
  95. je salida
  96.  
  97. mov eax, offset lacad
  98. inc byte ptr [eax+6]
  99. cmp byte ptr [eax+6],040h;07Eh
  100. jbe bucle
  101. mov byte ptr [eax+6],021h
  102. inc byte ptr [eax+5]
  103. cmp byte ptr [eax+5],040h;07Eh
  104. jbe bucle
  105. mov byte ptr [eax+5],021h
  106. inc byte ptr [eax+4]
  107. cmp byte ptr [eax+4],040h;07Eh
  108. jbe bucle
  109. mov byte ptr [eax+4],021h
  110. inc byte ptr [eax+3]
  111. cmp byte ptr [eax+3],040h;07Eh
  112. jbe bucle
  113. mov byte ptr [eax+3],021h
  114. inc byte ptr [eax+2]
  115. cmp byte ptr [eax+2],040h;07Eh
  116. jbe bucle
  117. mov byte ptr [eax+2],021h
  118.  
  119. inc c1
  120. mov ecx, offset chars1
  121. cmp c1,060h
  122. jg s2
  123. add ecx, c1
  124. mov dl, byte ptr [ecx]
  125. mov byte ptr [eax+1],dl
  126. jmp bucle
  127. s2:
  128. mov c1, 0
  129. mov dl, byte ptr [ecx]
  130. mov byte ptr [eax+1],dl
  131.  
  132. inc c0
  133. mov ecx, offset chars0
  134. cmp c0,032h
  135. jg s3
  136. add ecx, c0
  137. mov dl, byte ptr [ecx]
  138. mov byte ptr [eax],dl
  139. jmp bucle
  140. s3:
  141. mov byte ptr [eax],0FFh
  142. mov byte ptr [eax+1],0FFh
  143. mov byte ptr [eax+2],0FFh
  144. mov byte ptr [eax+3],0FFh
  145. mov byte ptr [eax+4],0FFh
  146. mov byte ptr [eax+5],0FFh
  147. mov byte ptr [eax+6],0FFh
  148. salida:
  149. invoke write_disk_file, offset fname, offset lacad, 7h
  150. Ret
  151. brute endp
  152.  

Y una pass que hace colisión de hash es: $.!.-*8

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: [Crackme] Ilustrados
« Respuesta #14 en: 21 Abril 2013, 22:58 pm »

La pass original es JUSTICE.

Mañana miro ese codigo ;).

Sa1uDoS
En línea

Flamer


Desconectado Desconectado

Mensajes: 1.051


crack, crack y mas crack...


Ver Perfil WWW
Re: [Crackme] Ilustrados
« Respuesta #15 en: 22 Abril 2013, 00:44 am »

bueno yo hice un programa por fuerza bruta que compara letra por letra y la primer pass que en contre fue esta dure 20 minutos en encontrarla.

"dpk2ma6"

de seguro debe aver mas pero no segui corriendo mas el programa.


http://ultrashare.net/hosting/fl/b1dc1ab753


Saludos flamer y si falta algo me avisan
« Última modificación: 22 Abril 2013, 01:11 am por Flamer » En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: [Crackme] Ilustrados
« Respuesta #16 en: 22 Abril 2013, 19:33 pm »

Buen trabajo a los 2. Hice el hash pequeño para que cualquier PC pudiera romperlo (pues yo tengo un PC viejo).

MckSys me gustaria ver un tuto, a ver si puedes hacer algo cuando tengas un rato ;).

Flamer buen trabajo.

Por si les interesa, aunque creo que se ve todo bien (nunca complico demasiado el codigo de los crackme) dejo el codigo.

Compilan primero con fasm crackme.asm y luego con gcc crackme.c crackme.obj

Código
  1. format coff
  2. public function as '_function'
  3. function:
  4. push ebp
  5. mov ebp, esp
  6.  
  7. xor eax, eax
  8. xor edi, edi
  9.  
  10. mov ecx, 20
  11. mov esi, [ebp+8]
  12.  
  13. do_hash:
  14. lodsb  ; ESI = addr clave
  15. mul cl
  16. rol al, 2
  17. add di, ax
  18. ror edi, 3
  19. test al, al
  20. loopne do_hash
  21. xor eax, eax
  22. cmp edi, 0x97D1CB0E
  23. je bien
  24. mov eax, 1
  25. bien:
  26. leave
  27. ret
  28.  

Código
  1. #include <stdio.h>
  2.  
  3. int function(char *cadena);
  4.  
  5. int main()
  6. {
  7. char cadena[8]="", retorno;
  8. puts("Introduce la pass: ");
  9. scanf("%7s", cadena);
  10. retorno=function(cadena);
  11. switch(retorno)
  12. {
  13. case 0:
  14. puts("Bien!");
  15. break;
  16. case 1:
  17. puts("Mal!");
  18. break;
  19. };
  20. return 0;
  21. }
  22.  

Sa1uDoS
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Crackme] Ilustrados
« Respuesta #17 en: 24 Abril 2013, 23:30 pm »

No hubieses puesto el pass original! Lo habia resuelto sin bruteforce y ahora no tiene gracia! Felicitaciones flamer y mcksys
En línea

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: [Crackme] Ilustrados
« Respuesta #18 en: 25 Abril 2013, 18:18 pm »

Aun asi me encantaria saber como lo hiciste ;). (Creo que a todos)

Sa1uDoS
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crackme
Ingeniería Inversa
byebye 8 5,693 Último mensaje 6 Julio 2003, 11:12 am
por shoulck
Os dejo un crackme, mi primer crackme ^^ « 1 2 »
Ingeniería Inversa
frankener1986 14 12,910 Último mensaje 14 Agosto 2006, 00:59 am
por sircid
[CrackMe] - D-CrackMe by .:WindHack:.
Ingeniería Inversa
.:WindHack:. 3 3,997 Último mensaje 26 Julio 2010, 23:45 pm
por .:WindHack:.
[CRACKME] Crackme 3 por MCKSys Argentina « 1 2 3 »
Ingeniería Inversa
MCKSys Argentina 29 18,633 Último mensaje 18 Enero 2013, 20:48 pm
por SITEA
[CRACKME] Crackme 4 por MCKSys Argentina « 1 2 »
Ingeniería Inversa
MCKSys Argentina 14 12,940 Último mensaje 6 Diciembre 2011, 02:46 am
por PeterPunk77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines