Retos Junio 2013 De reversing

Iniciado por kaltorak, 30 Mayo 2013, 18:47 PM

0 Miembros y 1 Visitante están viendo este tema.

kaltorak

Hola a todos.

Este mes me encargo yo de subir los retos y gestionar la lista de los participantes, así Flamer se puede relajar un poco.
Espero que participéis muchos este mes, recordar que tenéis que enviarme a mí los retos resueltos para que los poste a final de mes.

1 - cc14 --> 1- Simple CrackMe #1-Bloc.

2 - crackme#1.LightHash.

3 - Crackme5.

4 - InjectMe_#2.

5 - LeeviON__sCrackme.

6 - YourFirst.

Retos:
ultrashare.net/hosting/fl/95d86db57a

Reglas:
http://foro.elhacker.net/ingenieria_inversa/retos_mensuales_de_reversing-t371874.0.html


Debido a que el Crackme cc14 no puede ser resulto lo hemos cambiado por el Simple CrackMe #1-Bloc
Siento las molestias que os haya podido ocasionar el problema con el cc14
Aquí tenéis el enlace de descarga del nuevo Crackme.


Simple CrackMe #1-Bloc: http://ultrashare.net/hosting/fl/69df35b9f4


Lista de Ganadores
-----------------------------------------------------------------
|  Usuario        |      Reto    |                Logro               |
-----------------------------------------------------------------
|   FaQuiVer     |       2       |                 serial               |
----------------------------------------------------------------
|   FaQuiVer     |       3       |         Tutorial y Keygen     |
----------------------------------------------------------------
|   FaQuiVer     |       6       |                Tutorial            |
----------------------------------------------------------------
| PeterPunk77  |       1       |               Serial               |
----------------------------------------------------------------
| PeterPunk77  |       2       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       3       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       4       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       5       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       6       |               Resuelto           |
----------------------------------------------------------------
| CraZy7BiTS   |       1       |               Serial               |
----------------------------------------------------------------
| CraZy7BiTS   |       6       |               Resuelto           |
----------------------------------------------------------------


Soluciones FaQuiVer

-----------------------------------------------------------
2 - crackme#1.LightHash
-----------------------------------------------------------
Name:  FaQuiVer
Serial:  227378-30-3871
-----------------------------------------------------------

-----------------------------------------------------------
3 - Crackme5.
-----------------------------------------------------------

KeyGen:

   
Código (vb) [Seleccionar]
   Private Sub Form_Load()
   Dim Valor As Integer
   Dim Nombre As String
   Dim Serial As String
   Dim RegCode As String
   Dim ID As String
   Nombre = InputBox("Nombre:", "Arkantos Crackme5 *KeyGen*")
   Serial = vbNullString
   RegCode = vbNullString
   ID = vbNullString
   If Len(Nombre) <= 4 Then MsgBox "Nombre demasiado corto", 16, "": End: Exit Sub
   Nombre = StrReverse(Nombre)
   For x = 1 To Len(Nombre)
   Valor = Asc(Mid(Nombre, x, 1))
   Serial = Serial & Hex(Valor)
   Next x
   RegCode = "210579ioO-avB-pM"
   ID = "ua921N" & Serial & "pnqVTm"
   MsgBox "Nombre: " & StrReverse(Nombre) & vbNewLine & "Serial: " & Serial & vbNewLine & _
         "RegCode: " & RegCode & vbNewLine & "ID: " & ID, 64, "Done!"
   End
   End Sub
   


-----------------------------------------------------------
6 - YourFirst Crackme
-----------------------------------------------------------

Citarvamos por partes, lo que necesitamos es ollydbg 1.10 sin cambios ni plugin

los objetivos son:

- nag
- AntiDebug
- PassCdCheck

Primero la nag!

al abrir el crackme en ollydbg caemos directamente aquí:

Código (mpasm) [Seleccionar]
   00401000 >/$ 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
   00401002  |. 68 00304000    PUSH YourFirs.00403000                   ; |Title = "YourFirstCrackme"
   00401007  |. 68 43304000    PUSH YourFirs.00403043                   ; |Text = "I'm an ugly nag screen. REMOVE ME!"
   0040100C  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
   0040100E  |. E8 0D020000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
   00401013  |. 6A 00          PUSH 0                                   ; /pModule = NULL
   00401015  |. E8 42020000    CALL <JMP.&kernel32.GetModuleHandleA>    ; \GetModuleHandleA



No tenemos que esforzarnos mucho verdad?  para eliminar la nag aplicamos NOP's en:


Código (mpasm) [Seleccionar]
   0040100E  |. E8 0D020000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA


Con esto nos libramos de la nag, guardamos cambios y seguimos con el Antidebug

Al correr el crackme nos salta un mensaje con este texto:

---------------------------
YourFirstCrackme
---------------------------
Debugger found!
---------------------------
Aceptar  
---------------------------

que hacemos? pues... buscamos todas las referencias de texto, ubicamos "Debugger found!"

ENTER en la cadena para caer en el desensamblado

Caemos directamente aqui



Código (mpasm) [Seleccionar]
   00401178   . 68 22304000    PUSH YourFirs.00403022                   ; |Text = "Debugger found!"


Subimos lineas mas arriba y analizamos el codigo


Código (mpasm) [Seleccionar]
   00401119   . E8 44010000    CALL <JMP.&kernel32.IsDebuggerPresent>   ; [IsDebuggerPresent
   0040111E   . 83F8 01        CMP EAX,1
   00401121   . 74 4E          JE SHORT YourFirs.00401171
   00401123   . 8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C]
   00401126   . 3D 10010000    CMP EAX,110

   



Observamos IsDebuggerPresent que es una funcion de windows para detectar debugeo

ese call nos devuelve 0 si no hay y 1 si hay un debugger presente

0040111E   . 83F8 01        CMP EAX,1 <--- aqui la condición

EAX almacena el resultado ( 0 o 1 ) y compara, si se cumple salta directamente al msgbox de "Debugger found!"

00401121   . 74 4E          JE SHORT YourFirs.00401171

Solucion!

NOP's Aqui:


Código (mpasm) [Seleccionar]
   00401119     E8 44010000    CALL <JMP.&kernel32.IsDebuggerPresent>   ; [IsDebuggerPresent

o aqui:


Código (mpasm) [Seleccionar]
   00401121   . 74 4E          JE SHORT YourFirs.00401171


Cualquiera de las dos opciones es valida, guardamos cambios y listo!

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

Ahora PassCdCheck

Igual para este vemos que nos muestra un mensaje con este texto:

---------------------------
YourFirstCrackme
---------------------------
CD check failed!
---------------------------
Aceptar  
---------------------------

Buscamos referencias, ubicamos CD check failed! ENTER para caer en el desensamblado


Código (mpasm) [Seleccionar]
   004011A7   > 6A 10          PUSH 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
   004011A9   . 68 00304000    PUSH YourFirs.00403000                   ; |Title = "YourFirstCrackme"
   004011AE   . 68 11304000    PUSH YourFirs.00403011                   ; |Text = "CD check failed!"


Lineas mas arriba vemos el código y observamos desde donde salta


Código (mpasm) [Seleccionar]
   00401188     E8 C9000000    CALL <JMP.&kernel32.GetDriveTypeA>
   0040118D   . 83F8 05        CMP EAX,5
   00401190   . 75 15          JNZ SHORT YourFirs.004011A7



Al tracear observo que esta función "GetDriveTypeA" me devuelve un valor de 3 el cual se almacena en EAX y se compara con 5. Obviamente no se cumple asi que salta al mensaje de error

3 Soluciones! aplicar cualquiera da el mismo resultado.

1.
Código (mpasm) [Seleccionar]
   00401188     E8 C9000000    CALL <JMP.&kernel32.GetDriveTypeA>

Cambiar por:

Código (mpasm) [Seleccionar]
   00401188     B8 05000000    MOV EAX,5

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

2.

Código (mpasm) [Seleccionar]
0040118D     83F8 05        CMP EAX,5

Cambiar por:


Código (mpasm) [Seleccionar]
   0040118D     3BC0           CMP EAX,EAX
   0040118F     90             NOP


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

3.
Aplicar NOP's Aqui:

Código (mpasm) [Seleccionar]
00401190   . 75 15          JNZ SHORT YourFirs.004011A7


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


Guardamos cambios utilizando cualquiera de las 3 soluciones y ya se nos muestra el mensaje bueno! aun que observo un detalle, luego de aceptar el mensaje bueno el Crackme rompe o crashea!


vuelvo al olly y luego del mensaje bueno observo esto:


Código (mpasm) [Seleccionar]
  004011A5   . EB 4E          JMP SHORT YourFirs.004011F5


salta donde no debe asi que Redireccionamos quedando asi:


Código (mpasm) [Seleccionar]
   004011A5     EB 48          JMP SHORT YourFirs.004011EF


y listo eso seria todo!


Soluciones PeterPunk77

-----------------------------------------------------------
1 - Simple CrackMe #1-Bloc.
-----------------------------------------------------------
User:  |Usuario|
Pass:  |J5L2C-K4B8L-D2K9S|

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

-----------------------------------------------------------
2 - crackme#1.LightHash.

3 - Crackme5.

4 - InjectMe_#2.

5 - LeeviON__sCrackme.

6 - YourFirst.
-----------------------------------------------------------

Soluciones: http://ultrashare.net/hosting/fl/a6bdccb84c
pass: "elhackerforum" (sin comillas).

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

Soluciones CraZy7BiTS

-----------------------------------------------------------
1 - Simple CrackMe #1-Bloc.
-----------------------------------------------------------

User:  |Usuario|
Pass:  |J5L2C-K4B8L-D2K9S|

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



Un Saludo
Kaltorak.



karmany

Gran trabajo y gracias por tu tiempo. Tal vez me apunte a alguno.

Vamos, que es fin de semana!! echarles un vistazo!!

kaltorak

#2
Muchas Gracias karmany, si tienes un hueco adelante aquí te esperamos.

Sé que es difícil sacar un ratito pero animo chicos que no son muy difíciles, veréis que se resuelven en nada de tiempo.







EscritoEstáSatanás

#3
YourFirst -> Listo.

INT3

Una pista : cuando vayan a nopear o cambiar el salto para pasar el cd-check.

Va a ver un problema con un comando arriba mencionado.

Tienen que buscar los Jumps Que van a dar hacia "INT3"

y cambiarlos donde hay un "XOR EAX,EAX".

Bueno pueden resolverlo de otra manera, pero es la que me funciono a la perfección a mí.

El nag esta facil, eso se los dejo a ustedes.

Gracias por la colección.
;-)

Se que este es el mas facil de todos, pero como soy novato tambien quiero ayudar.

kaltorak

Hola a todos

Debido a que el Crackme cc14 no puede ser resulto lo hemos cambiado por el Simple CrackMe #1-Bloc.
Siento las molestias que os haya podido ocasionar el problema con el cc14
Aquí tenéis el enlace de descarga del nuevo Crackme.

Simple CrackMe #1-Bloc: http://ultrashare.net/hosting/fl/69df35b9f4

Y de paso actualizo la lista con los participantes que han enviado los retos resueltos.

Un saludo
kaltorak..




Flamer

balla peterpunk esta partisipando me sorprende

saludos flamer

kaltorak

Hola a todos

Como ya ha terminado el mes actualizo la lista y coloco las respuestas enviadas.

Un saludo
Kaltorak.