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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Ingeniería Inversa / Re: Un Simple Crackme En VBScript en: 15 Agosto 2016, 02:56 am
Buenas
lo primero gracias por el reto
llevo dando vueltas a este crackme ya bastante tiempo, mas de un mes, ahora que lo has modificado me animo a comentarte una cosa. se que debo estar cerca de resolverlo, pero a la conclusion que he llegado es que no es posible crear un keygen, dejo un codigo modificado y comentado a ver si me estoy equivocando al interpretar alguna instruccion
Código
  1. option explicit
  2. Randomize
  3. dim shell,pin,cn,un,x,z,a,b,c,pass,y,r,contra
  4.  
  5. Set shell=createobject("wscript.shell")
  6. pin = 9999
  7. ' pin = cstr(cint((9999-1000+1)*rnd+1000))
  8. msgbox "Su Numero PIN Es: " & pin,,"PIN"
  9. cn = "w"
  10. un = "t"
  11. 'cn = Shell.ExpandEnvironmentStrings("%ComputerName%")
  12. 'un = Shell.ExpandEnvironmentStrings("%UserName%")
  13.  
  14. if len(cn)>len(un) then ' si el nombre del pc es mas largo que el del usuario
  15.   z=len(cn) ' la z seria igual a la longitud del nombre del pc
  16.   for x=z to len(un) ' para x = z hasta la longitud del nombre de usuario en mi caso 5 (david)
  17.      un=un & chr(x) ' username = username concatenado a
  18.   next
  19. msgbox(z)  
  20. end if
  21.  
  22. if len(cn)<len(un) then
  23.   z=len(un)
  24.   for x=z to len(cn)
  25.      cn=cn & chr(x)
  26.   next  
  27. else
  28.   z=len(un)
  29. end if
  30.  
  31. for x=1 to z
  32.   a = asc(mid(cn,x,1)) 'a es 116
  33.   b = asc(mid(un,x,1)) 'b es 119
  34.   c = c & "-" & (a xor b) 'a xor b es 3 luego C = -3
  35. msgbox(a)
  36.   msgbox(b)
  37.   msgbox((a xor b))
  38. msgbox(c)
  39. next
  40.  
  41. contra=inputbox("Ingresa La Contraseña","Password") 'suponiendo una pass: 1234
  42. y=1
  43.  
  44. pass=split(contra,"-")
  45.  
  46. ' para que se culpa que r = c los nuevos a y b deberan ser iguales a los anteriores, asi que la contraseña deberia ser wt, pero si es wt da error, solo acepta numeros
  47. for x=0 to ubound(pass)
  48.   a = pass(x) 'le asigna a la a el valor de la contraseña que metas. ej 1234
  49.   b = asc(mid(pin,y,1)) ' devuelve el codigo ansi del primer caracter  Y = 1 de la cadena pin 4444. ej 57
  50.   msgbox(a)
  51.   msgbox(b)
  52.   if y=len(pin) then ' basura? para ser util deberia ir antes del for
  53.      y=1 'basura?
  54.   else ' basura?
  55.      y=y+1   'basura?
  56.   end if ' basura?
  57.   r = r & "-" & (a xor b) ' r es igual a r menos a xor b, a xor b es 1234 xor 57 = 1259 luego r es -1259.
  58.   ' aqui esta el problema si r es -1259 osea, el opuesto de a xor b, como es posible que en algun caso r sea igual a c? si c depende de un numero random.
  59.   'como c cambia en ccada equipo, como haces posible que R=C y mas cuando B (linea 49) que participa en el proceso depende de un pin aleatorio. no veo la forma de hacer R=C
  60.   msgbox((a xor b))
  61. msgbox(r)
  62. next
  63.  
  64. if r=c then
  65.   msgbox ":::EN HORA BUENA::: Felisidades Contraseña Correcta, Espero Que Te haya Gustado El Reto...",,"Reto Superado Saludos Flamer"
  66. else
  67.   msgbox "Si no sabes crackear esta porqueria de crackme, no presumas que eres un hacker mas bien eres un lamberucho...esto es para hackers principiantes QUE QUIEREN APRENDER",,"Medas lastima :("    
  68. end if
  69.  

2  Seguridad Informática / Análisis y Diseño de Malware / Re: Flexispy & Malware en: 24 Julio 2016, 05:09 am
un rat igual que mspy, nada especial, ambos son lideres en el mercado, no es una estafa (si pensabas que podria ser un timo)
3  Programación / Ingeniería Inversa / Re: Confuser Ayuda en: 24 Julio 2016, 05:05 am


tambien puedes buscar un unpacker que automatice el proceso
4  Programación / Ingeniería Inversa / Re: Ayuda [Cracking] No protegido* en: 24 Julio 2016, 05:03 am
como te han dicho al ser C# puedes ver el code con ilspy, y si miras bien podras ver que verifica tus credenciales en la web, asi que no hay mucho que hacer en el binario, tendrias que modificar paquetes o algo asi... para lo que podrias usar fiddler

PD: revisa las reglas del foro apartado I.A.1.b.6
5  Seguridad Informática / Criptografía / Re: Desencodar en: 23 Julio 2016, 02:21 am
por la estructura tiene pinta de SHA-1
6  Seguridad Informática / Análisis y Diseño de Malware / Re: Panel de Control de Bitnet en: 18 Junio 2016, 05:37 am
Claro, cualquier botnet con panel web, si te refieres a algun RAT cualquiera hecho en java, si no esta en java puedes usar wine
7  Seguridad Informática / Análisis y Diseño de Malware / Explotacion de "God Mode" orientada a la creacion de malware en: 18 Junio 2016, 05:35 am
En este post mostrare como es posible explotar la característica de windows god mode y aprovecharla para la creación y ocultación de malware con un simple código de cuatro lineas.

Aqui la explicación oficial de microsoft sobre esta característica de windows.
https://support.microsoft.com/es-es/kb/979240

El código a continuación mostrado es un simple script en autoit que automatiza este proceso


*Nota: En caso de desconocer el nombre de usuario se puede usar @Username

Pero como puede esto ser aprovechado por un desarrollador de malware?

Seguro que hay muchas formas de aprovechar esta característica, a mi de entrada se me ocurren dos:

La primera consistiría en crear una entrada en el registro para iniciar nuestra aplicación en el arranque, copiando previamente el binario a esa localizacion.

La segunda y poniendo un ejemplo practico podría ser aprovecharnos de esta característica con un keylogger, almacenando los logs en esa localización, de este modo se podrían almacenar tranquilamente en texto plano.

proyecto en github

https://github.com/SadFud/-Automated.GodMode
8  Programación / Ingeniería Inversa / Re: Safebox Crackme en: 7 Mayo 2016, 21:55 pm
Noo, para nada me tomo a mal las criticas, todo lo contrario jaja
La verdad que el fallo en el codigo ha sido una mancada, eso me pasa por no comprobar el funcionamiento completo :$
La soluciion para esto que habia pensado en un principio era usar el olly o cualquier debugger y cada vez que se hiciese un intento ver que valores habia comparado el programa y asi se sabrian los valores aleatorios.

Un saludo a ambos!!
9  Programación / Ingeniería Inversa / Safebox Crackme en: 6 Mayo 2016, 17:26 pm
Buenas
Vengo a dejar un crackme algo mas innovador de lo que se suele encontrar por ahí, la idea se me ocurrió hace un rato al volver de clase, tenia al lado un chaval jugando a un juego en android con el mismo concepto, aunque estéticamente mucho mas bonito xD

Como se ve en la imagen en este crackme hay que manejar las barras laterales hasta dar con la combinación correcta que abra la caja fuerte.
La idea es interpretar el funcionamiento desde algún debugger, ya que no tiene protección ninguna, lo único que esta limitado a 10 intentos, quizás alguien tenga suerte y lo acierte en esos primeros 10 intentos, aunque hay 100000 posibles combinaciones. Por tanto hay una posibilidad entre 10000 de acertar aleatoriamente. [size=85]Suerte xD.[/size]
Como dato añadir que esta escrito en .net y el código no esta ofuscado.  Ademas los valores aleatorios, que evidentemente oscilan entre 0 y 9 se generan diferentes en cada ejecución.
http://www.mediafire.com/download/unswaz6tj2isat7/SafeBox+Crackme.zip
analisis
https://www.virustotal.com/en/file/eabcd80079a217a5c2efbb8bf1afa28981fc152c532eb97e76cfa00532743794/analysis/1462548587/
10  Programación / Ingeniería Inversa / Crackme .NET con solucion, nivel medio, sin uso de debuggers en: 18 Diciembre 2015, 12:21 pm
Hola
En esta ocasion voy a mostrar la resolucion de este crackme (http://crackmes.de/users/shadow_/shadows_registerme/) hecho en .net, no es demasiado dificil, consta principalmente de una nag al abrir, un formulario donde introducir usuario y contraseña y otra nag al salir.
Tiene proteccion anti olly.





Esa es toda la estructura que tiene el crackme, empezaremos intentando entender el algoritmo de generacion de seriales, para ello usaremos  ilspy e ildasm. En ilspy veremos el codigo desempacado, debemos buscar en el boton register que es el que verifica nuestras credenciales.



Este es el codigo que nos devuelve
[code2=cpp]private void Button1_Click(object sender, EventArgs e)
{
this.shadow = this.rand.Next(1, 99999999);
if (Operators.ConditionalCompareObjectEqual(this.TextBox2.Text, Operators.ConcatenateObject(this.TextBox1.Text + this.TextBox3.Text + this.TextBox4.Text + this.TextBox5.Text + this.TextBox6.Text + this.TextBox7.Text + this.TextBox8.Text + this.TextBox9.Text + this.TextBox1.Text, this.shadow), false))
{
this.Button2.Enabled = true;
this.Button1.Enabled = false;
this.Button1.Text = “Registered to Shadow”;
this.Text = “Registered to Shadow!”;
}
else
{
Interaction.MsgBox(“Incorrect serial, noob.”, MsgBoxStyle.OkOnly, null);
}
}[/code2]

El codigo lo que hace es declarar una variable a la que le asigna un valor numerico generado de forma aleatoria y luego lo concatena con la informacion de una serie de textbox. Ahora tenemos que buscar que informacion contiene cada textbox, ya que en el formulario solo aparecen 2 y ahi vemos que hay hasta 9.
La informacion que buscamos la encontramos en


Echando un vistazo vemos que el textbox1 corresponde a nuestro nombre de usuario y el textbox2 es el correspondiente a la contraseña. El resto de textbox hacen una concatenacion de la siguiente manera

‘username’ur’a’stupid’dumb’idiotic’crazy’noob’username’numero aleatorio

*Sin comillas

Generar un algoritmo/keygen para generar seriales validos deberia ser muy facil de no ser por el numero aleatorio del final (hasta 99999999). Para resolver este problema intentaremos ver si se puede sustituir el numero random por un numero fijo, ya que de no ser asi cada vez que generasemos un serial tendriamos una posibilidad entre 99999999  de que fuese valido, algo totalmente ridiculo.

Para ello vamos a ildasm y buscamos el boton register

Pero que buscamos exactamente aqui? Buscamos el numero  99999999 en hexadecimal para saber donde esta y en que zona mas o menos tenemos que buscar

Podemos usar mismamente la calculadora de windows



Ya sabemos que el numero aleatorio estara identificado en el codigo con 5F5E0FF



Esta es la linea que buscamos

IL_0008:  /* 20   | FFE0F505         */ ldc.i4     0x5f5e0ff

Ahora tenemos que localizar la zona donde empieza este procedimiento, osea el offset.

Method begins at RVA 0x2f60

Esa linea es la que nos interesa, el

RVA = (VA – RA)

Ahora buscamos el VA y el RA  con el programa peID

RA = 00002000

VA = 00000400

Simplemente restamos (hexadecimalmente) y obtenemos

1C00

Ahora le restamos 1C00 a 2F60 = 1360

Ahora abrimos nuestro crackme con un editor hexadecimal y nos dirigimos al offset 0x1360



Ahi tenemos marcado en verde el offset buscado y recuadrado en azul el numero aleatorio, ahora simplemente vamos a ahcer que ese numero no sea aleatorio sino que sea siempre 1.



Tal que asi.

Ahora vamos a crear un keygen, ya que el algoritmo consiste en una concatenacion vamos a hacer algo rapido en lenguaje batch

[code2=batch]@echo off
color a
:inicio
set/p nom=nombre de usuario?=
pause
cls
echo la contraseña es:
echo %nom%urastupiddumbidioticcrazynoob%nom%1
pause
cls
goto inicio[/code2]

De este modo y usando como nombre de usuario reversecoder.tk

obtenemos:



reversecoder.tkurastupiddumbidioticcrazynoobreversecoder.tk1

Verificamos



Ahora solo nos quedan las nags del principio y del final, para ello haremos un procedimiento parecido, localizaremos su posicion en memoria y quitaremos ese procedimiento.

Para la nag 1 que sale al abrir, buscamos en el ildasm



Vemos que su RVA es 3088, hacemos el mismo procedimiento que antes, es decir, le restamos 1C00 y obtenemos el offset donde se encuentra el procedimiento

0x1488

Nopeamos todas las instrucciones con ceros exxcepto el ret



Para la nag2 exactamente lo mismo, su posicion en memoria seria

3074 – 1C00 = 1474

offset nag 2 = 0x1474

Parcheamos



Ya tenemos resuelto el crackme con proteccion anti ollydbg y desarrollado en net.

Fuente:reversecoder.tk
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines