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.