lunes, 22 de febrero de 2016

Tutorial Del Crackme Tr4ceflow Por Flamer

Bueno como siempre lo analizamos con el RDG Detector para saber en que lenguaje esta hecho y con que esta protegido e aquí la imagen:

                                 

Bueno como ven esta compilado en MinGW v3.2.x y estamos de suerte no esta empacado así que las cosas parecen que están a nuestro favor, ahora lo abrimos con el OllyDbg y antes que nada vemos si corre el crackme con el ollyDbg esto es solo para ver sino tiene métodos Anti-Debuger, damos F9 y vemos que se ejecuta perfecto.



Ahora  como dice el autor hay que quitar el mensaje que aparece cuando ejecutamos el crackme, para eso damos clic Derecho-------Search for-------- referenced text strings---para buscar el String del mensaje que es “To train your skills remove me too” como sebe en la imagen siguiente:



Ahora damos doble clic y nos lleva hasta aquí



Justo en la api del MessageBoxA, lo que aremos es nopear desde la dirección 00401399 hasta 004013BD, dirán por que también la línea 004013BD  y les contesto por que en línea 004013BD se le resta 10 al registro ESP por que mando llamar la api MessageBoxA y si nopeamos la api y se hace la resta al registro ESP el programa marcara error así que la nopeamos también y quedara algo así


Bueno ahora aguardamos los cambios y buscaremos como registrarlo e ingreso “Flamer” como nombre y como serial “123456” al darle clic me arroja la frase “Stupid boy. Do it better” que es la frase que nos arroja cuando ingresamos un serial erróneo.
Para eso buscamos en los string a ver que encontramos



Y como ven también esta la frase “Great you did it! Write a keygen and get in touch.” Que es la que nos muestra cuando ingresamos el serial correcto.
Ahora damos doble clic y ponemos un break point en la línea 00401337 y damos F9, se detiene justo en el break point, luego traseamos con F8 hasta el rent el cual nos lleva hasta la línea 004016EF
 

Y como ven mas arriba en la línea 004016DA vemos que hay un call antes del salto JNZ y creo que es el de validación, así que ponemos un BreakPoint en la línea 004016D0 y damos F9 e ingresamos al CALL con F7


Como ven en la línea 00401427 que es la  api GetDlgItemTextA  carga la palabra “Flamer” al registro EBX y el valor de 6 al registro EAX por que 6 por que es el numero de caracteres de la palabra “Flamer”.


Luego en la línea 00401431 vemos que le resta 2 a el registro EAX y acto seguido lo compara si es menor o igual a 3 el cual si no cumple nos rebota y no podemos seguir.
Bueno con esto concluyo que el campo nombre solo puede contener de 2 a 5 caracteres nomas, así que ingresamos “Flame” después en la línea 00401471 nos topamos con otro ciclo el cual convierte las minúsculas del campo nombre a mayúsculas




Con lo cual concluyo que con solo mayúsculas tendremos que trabajar luego en la línea 00401494 nos topamos con otro ciclo el cual esta encargado de buscar el carácter que contenga el valor ASCII  menor y acto seguido lo almacena en ECX


Después a este valor sele es restado 2 en la línea 0040149F


Bueno si no entienden se los explico, en “FLAME” el carácter menor es “A” que su valor corresponde a 65 bueno esto en la resta quedaría así:
2 -  65= - 63
Después en la 004014AD nos topamos con otro ciclo en este toma el valor de -63 y se lo suma a cada carácter del nombre pero en cada vuelta el valor de -63 aumenta 1, así que en la segunda vuelta es -62 y en la tercera vuelta es -61


Y el resultado es guardado en la misma dirección de la que obtenemos esto:



Luego en la línea 0040155D carga el valor 6 a EAX que es el numero de caracteres que son de la clave, después en la línea siguiente le resta 8 y el resultado es comparado con 2, en el cual para que no rebote y podamos seguir el valor de EAX en la línea 00401564 debe ser menor o igual a 2


Asi que concluyo que el campo serial solo puede contener de 8 a 10 caracteres.
Luego en la línea 004015A5 nos topamos con otro ciclo que verifica cada digito del serial ingresado de que sean números y no letras




Luego en la línea 004015CE lee el valor 7 por que el valor 7? Por que es el primer valor de la tabla de arriba.
Luego en la línea 004015D6 lee el valor 24 y en la línea siguiente a este sele incrementa 1 y se convierte en 25
Después en la línea 004015DD el serial ingresado es dividido por el 25 y en la línea 004015DF el residuo obtenido es comparado con el 7 obtenido en la tabla anterior y si el residuo es 7 continuamos.
Luego seguimos hasta la línea 004015FA el cual suma EDX que vale 1 mas 27 el cual nos da 28 luego en la línea siguiente a EDI sele pasa el valor 28 + 1 lo cual EDI Valera 29.
 Bueno en la línea 00401607 el serial es dividido por el 29
Después el residuo obtenido es comparado con la E que es el segundo valor de la tabla el cual tiene que ser igual para seguir
Después nos regresamos a la línea 004015FA donde ahora EDX vale 2 + 28 obtenemos 2A y en la línea siguiente EDI toma el valor de EDX + 1 y nos da 2B
Después este 2B divide el serial donde el residuo tendrá que ser igual a el tercer valor de la tabla.
Bueno creo que ya le agarraron el royo a este ciclo por que ya me enfade de explicar jejeje pero les adelanto los siguientes valores que dividen al serial que son 2F y 35

Bueno ahora aquí empieza lo bueno de este reto, como ya se supone que entienden los requisitos o filtros (y va a decir “como ya entienden la generación del serial” pero como ven no se genera ningún serial en este crackme lo tenemos que crear nosotros) que el serial deberá llevar para pasar todos esos obstáculos dirán como la aremos para generara el serial, bueno por eso digo que aquí empieza lo bueno.
Antes de empezar quiero aclarar que no encontré el serial valido para “FLAME” y mi keygen se basa en un algoritmo que encuentra seriales al asar no encuentra seriales de nombres fijos es una lastima pero es lo mejor que pude hacer bueno empecemos.
Primero agarramos un número al asar del rango 10000000 al 9999999999  yo voy a elegir el 123456789 y este será nuestro serial temporal
Segundo agarramos una letra al asar de las primeras letras del abecedario yo en mi keygen escogí las primeras 5 (A, B, C, D, E) por que son las mas menores.
3- acomodar la posición de la letra que escogimos en el nombre valido, si no entienden aquí se los explico.
Si escogimos la D al asar y como esta D estará en el nombre pregúntense cual es su posición en el nombre si es la primera letra, la segunda, la tercera, cuarta o quinta letra, bueno pues aquí les tengo una tabla que hice para las letras.


Esto funciona para las 5 letras nomas que yo en la tabla puse la pura D para no enredarlos ya que elegimos la D al asar pero pueden sustituirla por A, B, C o E.
Ejemplo si la letra D la pusimos en la posición 4 el residuo de la división del número al asar que elegimos tendrá que ser 5 o si la pusimos en la posición 2 el residuo tiene que ser 3.
Y pregunta si no nos da el residuo correcto?  e   aquí  la fuerza bruta que utilice, le sumamos o le restamos al numero aleatorio que elegimos entre el rango 10000000 y 9999999999 pero al sumar y restar no se pasen de este rango y dirán uff de aquí que le atines, pues no mi lógica no me fallo y son pocos los números por intentar el cual si lo haces con un programa, los encuentra muy rapido.
Bueno supongamos que pusimos la D en la posición 1 el residuo tendrá que ser 2, ahora toca encontrar las demás letras del nombre valido.

Para eso usamos mi programa para no tener que usar la calculadora y el notepad y estar sacando cuentas



Como ven puse “123456789” y lo que me devuelve, pero en la primera línea esta 36 así que le aumento 1 y me queda “123456790”, luego  le doy checar


Como vemos en la primera línea me devuelve 0 pero yo necesito 2 así que al numero 123456790 le aumento 2 y me quedaría 123456792 luego le doy checar



Como ven ya tenemos el serial pero falta encontrar el nombre valido para este serial y como aviamos dicho la D al principio


Bueno sumamos 65 + 11=77
Y ¿dirán por que 65 mas 11? por que al primero sele resto 66 y como decíamos mas arriba el numero ira disminuyendo y pues toca 65 mas el residuo de la segunda  línea de el otro campo de texto.
A continuación los resultados para no hacer el tutorial más largo:

66  +  2  = D
65  + 11 = L
64  + 8   = H
63  + 12 = K
62  + 23 = U

OJO: el primer carácter del nombre no necesaria mente tiene que ser D también puede ser A, B, C o E para el serial “123456792” pero las demás letras variarían.




Descargar archivos:
www.mediafire.com/download/h0k9tf7lzfcmi50/Solucion_Por_Flamer_Del_Reto_Tr4ceflow.rar

Bueno amigos eso es todo saludos Flamer y espero les haya gustado








jueves, 18 de febrero de 2016

Como Borrar Achivos De La Carpeta System Volume Information De Mi USB

Hola amigos hoy les traigo un nuevo tutoríal en el cual explicare como borrar archivos almacenados en la carpeta System Volume Information de nuestras USB.

Esta carpeta viene por defecto y se vuelve a crear cuando formateamos nuestra USB, hay mucha gente que se asusta por no poder borrar archivos que están hay almacenados en esta carpeta y por otra parte es un buen escondite de malwares.

Primeramente empezare mostrando les mi USB



Como ven esta es la carpeta que les mencionaba marcada con rojo, a se me olvidaba esta carpeta viene oculta, así que para poder verla se tendrán que ir al símbolo del sistema y teclear este comando:
attrib -s -h -r /s /d
Yo aquí ya tengo visible la carpeta, ahora le doy doble clic y como verán  yo e agregado 3 archivos para el tutorial


Ahora si ustedes hacen una prueba verán que estos archivos se pueden ejecutar, pero no se pueden borrar así nada mas dando clic derecho y luego eliminar.

NOTA:el archivo marcado con rojo ese no se puede eliminar, viene por defecto con la carpeta

Ahora para poder borrar esos archivos o virus almacenados en dicha carpeta usaremos una herramienta gratuita llamada Cleaner  la pueden descargar desde su pagina oficial:

https://www.piriform.com/ccleaner

nosotros descargaremos la versión gratuita


ya que la hallamos descargado la instalaremos.

NOTA:aquí en este tutorial yo no voy a enseñar como instalarla por que se aria mas largo el tema.

ahora ya que tenemos instalada la aplicación la abrimos y nos vamos hasta donde dice Herramientas y luego damos clic en Analizador De Disco como se muestra en la imagen



Ya que estamos aquí marcaremos la opción de Todo y seleccionaremos nuestra USB como se muestra en la imagen, OJO si se encuentra la unidad C:\ como marcada desmarquen la ya que en este tutorial no la usaremos ya que solo nos interesa nuestra USB


Ahora daremos clic en Analizar y nos muestra lo siguiente



Como ven nos muestra todos los archivos de nuestra USB, así que marcaremos todos aquellos archivos que se encuentren en la carpeta System Volume Information  como se muestra en la imagen siguiente



Ahora que los tenemos seleccionados daremos clic derecho y Eliminar Archivos Seleccionados


y automáticamente se eliminaran los archivos de la carpeta System Volume Information

ahora les mostrare mi USB




como ven ya no están los archivos

bueno amigos eso es todo saludos Flamer



martes, 16 de febrero de 2016

Funcionamiento Basico Del CALL y Del RET En Ollydbg

Hola amigos soy Flamer de nuevo y por pedido de mi amigo Necroxia el cual me pidió hace ya mucho tiempo el funcionamiento de los CALL y los RET pues aquí se lo traigo.

Bueno empecemos primeramente que es un CALL:

La instrucción CALL lo que hace es ir a ejecutar una subrutina o parte del programa cuya dirección esta dada por el valor del operando y una vez que la función termine, el código continúa en la línea siguiente de CALL.

Ejemplo:
Supongamos que tenemos un call así: CALL 00402045

Significa que la próxima línea a ejecutarse será 00402045 y cuando se termine de ejecutar la rutina que esta allí dentro, volverá a la instrucción siguiente a continuación del CALL que la llamo.


Ahora se preguntaran como regresara o como saldrá de la subrutina, para eso se usa la instrucción RET lo veras al final de la subrutina, el cual toma la dirección guardada en la pila, la cual fue almacenada cuando se invoco el CALL.

Por si no me entendieron veamos un ejemplo, para eso usare mi primer crack-me aquí lo podrán descargar: http://elblogdeflamer.blogspot.mx/p/mis-cackmes.html

Ahora lo abriremos con el OllyDbg y nos iremos hasta la dirección 00402AC5 muestra lo siguiente:



Como ven unas dos lineas abajo se encuentra un CALL donde hace una llamada ala api  _vbaVarDup de Visual Basic.

Ahora para poder entrar y ver que es lo que hace el CALL usaremos la tecla F7 y si no queremos entrar tracearemos con F8.

Bueno ejecutaremos el crack-me con F9 y daremos clic en Ayuda----Acerca Del Crack-me

y se detendrá donde puse el Break Point

Antes de continuar observen que el CALL se encuentra en la dirección 00402AD3 y la siguiente linea es 00402AD9 así que cuando salgamos del CALL retornaremos en esa dirección

¿y como sabrá el programa? por que esa dirección se almacenara en la pila cuando entremos al CALL

Ahora entraremos al CALL con F7, el cual nos llevara hasta aquí y observen la pila:




Ya que entramos a la subrutina nos iremos traceando con puro F8 hasta llegar a la instrucción RETN y como observan en la pila se encuentra la dirección 00402AD9



Y si presionamos F8 saldremos del CALL y nos posicionara en la dirección 00402AD9, eso es todo el funcionamiento básico del CALL y el RETN espero lo hallan  entendido.


Complemento

Ahora explicare un dato a la hora de tracear los CALL, esto funciona sin necesidad de ejecutar el programa o ejecutándolo

Supongamos que estamos ejecutando el crackme y damos clic en Ayuda----Acerca Del Crack-me

se detendrá en el Break Point que pusimos y ahora queremos ver que es lo que hay dentro del CALL de la linea 00402AD3, para eso damos clic derecho y clic en FOLLOW como se muestra en la imagen


Esto nos llevara justo dentro del CALL, ahora sino quieren dar clic derecho y clic en FOLLOW, solo presionen ENTER y sucede lo mismo

y ahora se preguntaran para regresarnos, pues fácil solo dan clic derecho----Go To----Previous location y nos llevara de regreso


Ahora sino quieren hacer todo eso solo presionen la tecla -  del teclado numérico y sucederá lo mismo.

Consejo:

No revisen cada CALL que encuentren en los programas que revisen, ya que hay CALL anidados y estos pueden tener 5 o 10 CALL mas adentro, mejor solo observen que valor les regresa



Bueno amigos eso es todo por hoy y un saludo a mi amigo Necroxia que me pidió este tutorial hace ya mucho tiempo que por desidia no lo había hecho

Saludos Flamer  y un saludo a todos los del foro el hacker.net









lunes, 15 de febrero de 2016

Crackme 1 Concurso 11 Del 2013

Este es un viejo tutorial que tenia por hay y decidí publicarlo

Como siempre le pasamos el RDG Detector para ver que tiene y nos
muestra lo siguiente:



    Nos dice que esta compilado en visual Basic 6 y en código nativo el cual lo hace más cil.

El botón lo podemos activar con el VBReFormer pero yo aquí lo boy a activar con el ollydbg seguimos


Empecemos a Reversear



Ahora lo abrimos con el olly y nos muestra lo siguiente:




Como vemos no nos mintió el RDG si esta compilado en Visual basic

Ahora presionamos F9 para ver si se ejecuta normalmente



Y como vemos tiene un método antidebugger y tiene un agujero el mensaje, es por donde vamos a atacar.

Nota: no des clic al botón del mensaje por que se cierra el olly


Bueno reiniciamos todo

Revisamos las Apis y vemos el rtcMsgBox


Vemos que es el 595 y damos Control+N Aparecerá lo siguiente:


Lo pondremos asi:



Luego presionamos F9 y vemos que se detiene en la línea 00402EF0 y mas arriba hay un salto JE:


El cual cambiaremos por un JMP y guardamos los cambios


Luego lo abrimos con el olly y corre perfectamente

Ahora falta activar el botón para eso usaremos la api EnableWindow pondremos un Break point con el commandBar así:



Daremos F9 y observamos el stack



Y luego traseamos con F8 para salir de las librerías hasta llegar al crackme hasta llegar aquí



Cambiaremos el PUSH 0 por PUSH 1 ¿por que? Por que es el que lo mantiene a False y después guardamos los cambios no boy a decir todo el proceso por que se aria el tutorial mas largo seguimos


Ahora a encontrar el método de generación del serial

Para eso buscamos en las string aparece lo siguiente:


Damos doble clic en el string "Enhorabuena, lo conseguiste. Ahora monta un KeyGen." Para que nos lleve al lugar del desamblado







Hay podemos ver el call que compara el serial y el salto decisivo, si le damos para arriba podemos ver las Apis del Visual Basic como son el rtcMidcharVar y la de vbaLenBstr

  
bueno nos iremos hasta la línea 00403B4B donde se encuentra una api vbaLenBstr y pondremos un Break point y le damos F9.

Pondremos como nombre polomon” y serial 1234567”






Vemos que se detiene justo en el BP y presionando F8 nos devuelve 7 en
EAX que es el largo del nombre de polomon 






Seguimos traseando hasta llegar a la línea 00403B66 hay vemos que es una comparación donde compara el largo de nuestro nombre por 1 y la siguiente línea es un salto JL donde si el registro SI es mayor o igual a AX entra.



Líneas mas abajo vemos un salto JMP



Lo cual nos lleva a que es un ciclo y dentro de el vemos la api rtcMidcharVar lo cual nos ase pensar que toma letra por letra a si que vamos a ver, para eso ponemos un Break point en la línea 00403BD9 y damos F9 y observamos el registro EAX


Sebe clarito esta tomando las letras por detrás y esta volteando la palabra polomon” lo cual quedaría a sinomolop” observemos el registro EAX en la ultima vuelta del ciclo



Valla bueno esta fue la última y ahora se sale y seguimos traseando con F8 hasta la línea 00403C1C que es un call y damos F7 para poder trasearlo

En la línea 0040358F nos encontramos una comparación y acto siguiente un salto JG que conlleva a un ciclo hasta la línea 00403667 y seguimos traseando con F8 hasta aquí



Como vemos toma la n” denomolop” la convierte a su valor ascii y le suma lo largo de el nombre polomon” que es 7 después lo convierte a String que da como resultado u”  y a si sucesivamente hasta tener esta cadena






Después seguimos traseando con F8 hasta la la línea 00403C27 y observamos el registro



Vemos que convierte a mayúsculas una letra si y otra no bueno seguimos traseando con F8 hasta la línea 00403C53 que es otro call el cual entraremos con F7.

Observamos que el mismo ciclo pero ahora toma la primera letra de
polomon” que es la p”

Observación: en la primera ves que entro manejaba la palabra nomolop” a ahora la maneja polomon”

Bueno como dijimos toma la p” y la convierte a su valor ascii que es el 112 y le suma 3




Y después lo convierte a String que es s y a si sucesivamente hasta tener esta cadena



Bueno seguimos traseando hasta salir de este call hasta la línea 00403C63 y observamos el registro EAX



Vemos que convierte a mayúsculas una letra si y otra no


Bueno seguimos traseando con F8 hasta la línea 00403CDB que es el call de comparación y damos F7 para ver que compara



Como vemos compara 6 con F que es 15…El 6 es el largo de la contraseña a si que la contraseña debe contener 15 caracteres.

Ingresamos un nuevo serial 123456789ABCDEF de 15 caracteres y seguimos traseando con F8 hasta la línea 00403D80 y observamos en el Stack que compara los primeros 7 Dígitos ingresado con UvTvSvW



Y seguimos traseando y en la línea 00403D92 compara 9ABCDEF de la clave con SrOrPrQ




Y en la línea 00403DF3 esta otro call de comparación donde traseamos con F7 y como es dicil de explicar por que en cada maquina las direcciones son diferentes solo les digo que compara 8 con - el 8 por que es la que se encuentra en la mitad del serial que ingresamos.

Bueno entonces la clave para polomon” seria UvTvSvW- SrOrPrQ





Bueno eso seria todo y perdonen las faltas de ortografía y las explicaciones tan cortas y sencillas



Saludos Flamer