Atacando al atacante - Remote Buffer Overflow

5 comments


Buenas a todos! , contribuyendo a la serie "Atacando al atacante" me parecio interesante escribir un articulo sobre los Remote Buffer Overflow en softwares de administración remota (RAT), de esta manera comentaremos como atraves de este tipo de vulnerabilidades damos la vuelta a la tortilla, pasando de ser la víctima a ser el atacante.

[+] Teoria

Antes de comenzar con el articulo explicaremos por encima un poco de teoria, ¿Qué es un remote buffer overflow?

Según wikipedia, un buffer overflow o desbordamiento de búfer es un ataque diseñado para activar la ejecución de código arbitrario en un software cuando enviamos a este mayor tamaño de datos del que puede recibir.

Aunque su definición parece muy sencilla su complejidad es mucho mayor, ya que se necesita un conocimiento exhaustivo de la arquitectura del programa y del procesador entre otras cosas.

Con el prefijo "remote" damos a entender que el ataque puede ser producido desde fuera de la red y sin necesidad de tener acceso previo al sistema vulnerable.De esta manera, podriamos usar este fallo para bloquear un servidor o ejecutar código arbitrario mediante el envío de paquetes TCP y así conseguir una sesión remota.

Cabe decir que existen 3 tipos de desbordamientos :
   · Desbordamiento de buffer en stack/en la pila
   · Desbordamiento de heap memory
   · Desbordamiento en segmento de datos

En esta situación nosotros explotaremos un desbordamiento en el heap memory, machacando el header de espacio libre.

[+] Entorno

Una vez hemos asentado un poco los conocimientos teóricos vamos a lo realmente interesante...

Voy a recrear un entorno en el que somos infectados por un troyano(Poison Ivy) y aprovechando una vulnerabilidad de desbordamiento de búfer remoto abrimos una sesión meterpreter en la PC de nuestro presunto atacante, de esta manera pasamos de ser la víctima a ser el atacante en cuestión de minutos.

El entorno será el siguiente :

- Mi maquina real (ArchLinux), desde donde crearé la sesión remota
- Maquina Virtual (Windows XP) que actuará tanto de víctima como de atacante


En mi virtual XP tengo descargada la última versión de Poison Ivy (2.3.2), como ando falto de recursos mi maquina virtual será tanto el atacante que tiene abierto el "Cliente" desde donde monitoriza las PC's infectadas, como la víctima que ejecutará el "server.exe" infectado.
 
[+] Prueba de Concepto

Desde el punto de vista del atacante:
(El atacante debe correr el cliente sobre un XP o un W7 32 bits, de lo contrario el desbordamiento se producirá pero no se ejecutaría el código albitrario y no conseguiriamos una sesión meterpreter en el sistema)

El atacante generaria el servidor que nos infectaría :


[+] Un pequeño detallito extra útil para la victima que más tarde se volverá atacante

Aprovecho para aclarar que el exploit que lanzaremos desde metaesploit, lanza la contraseña por defecto "admin" codificada en un shellcode :







Si el presunto atacante cambiará esa contraseña por otra, la victima podría abrir el server.exe con un editor hexadecimal y visualizarla, de esta manera la víctima solo tendria que cambiar el shellcode con valor "admin" por un shellcode con el valor de la contraseña para que el exploit fuese lanzado con éxito:


Desde el punto de vista de la víctima:
 (La víctima no podría lanzar el exploit para dar la vuelta a la tortilla hasta haberse infectado por el presunto atacante)

Nosotros, siendo conocedores de que el archivo que el presunto atacante nos ha pasado es bastante sospechoso, lo ejecutamos y confirmamos nuestra sospecha :


Una vez confirmamos que estamos infectados y que el atacante esta a la escucha, damos la vuelta a la tortilla antes de que se nos queme (como buenos cocineros), así que comenzamos la intercepción :


Empezamos a atacar al "atacante", abrimos metaesploit y usamos "exploit/windows/misc/poisonivy_bof" :



al escribir "check", metaesploit comprueba si el objetivo/target es vulnerable sin llegar a lanzar el exploit, ahora que sabemos que no ha saltado ningún error vamos a lanzar el exploit para conseguir nuestra sesión meterpreter :


Como podeis ver hemos obtenido una sesión meterpreter, por lo que hemos pasado de ser la "inofensiva" víctima sometida, a ser el atacante.

[+] Thanks to...

Agradecimientos a Himanen por darme la posibilidad de confirmar el PoC en un entorno real y probar así la eficacia del method.

Ya con esto quiero dar fin al articulo, nada más esperar que os halla resultado de ayuda.

Saludos, Sanko.

5 comentarios

  1. muchas gracias por el conocimiento

    ResponderEliminar
  2. ¿"HALLA resultado de ayuda"?. Anda, aprende a escribir pendejo

    ResponderEliminar
  3. Y tu profesor de Literatura aprende a tratar a la gente! ;)

    Respecto al fallo de ortografia, gracias pero ten tino para indicar los errores :)

    Regards,
    Snifer

    ResponderEliminar
  4. jajajaajaja hey carnal no agas caso a ese Pinxe Pendejo k' Corrije.,.! hacemos lok keremos , "tenemos el control".,.! saludos carnal. y wena tu Post saludos.

    ResponderEliminar
  5. Hola Sanko,

    Lamento pincharte el globo, pero el exploit de poison ivy solamente explota una vulnerabilidad en el servidor del RAT, más no en "el cliente" del RAT. Por lo tanto, mediante el exploit que estás usando, no te va a funcionar la técnica de darle la vuelta a la tortilla (pasar a ser el atacante después de ser la víctima) al menos que el atacante haya ejecutado el server del RAT (pero esa no es la idea, la idea es que el atacante no este infectado con ningún server y solamente use el cliente del RAT, mientras que la víctima es la única infectada con el server del RAT. Luego, la víctima explota un buffer overflow en el cliente del atacante y así pasa a ser el atacante).

    Hace varios años aplique la técnica que intentas hacer... Por hay guarde el video...

    Saludos!

    ResponderEliminar