You are on page 1of 6

Escalacin de privilegios en Windows XP Recientemente estuve tratando de escalar privilegios en una mquina local con Windows XP y, como es de esperarse,

encontr una variedad de exploits en Internet. Voy a explicarles los ms sencillos y efectivos dividiendo la tarea en dos partes: escalar privilegios desde una cuenta de usuario restringida hasta Administrator; y escalar privilegios desde Administrator hasta SYSTEM, lo que nos dar el control total del sistema. Primera parte: "from pepe to Administrator" Primero veamos como lograr privilegios de Administrator partiendo de una cuenta de usuario con privilegios restringidos. Para lograr esta escalada hay dos tcnicas bsicas, la primera consiste en sobreescribir el ejecutable C:\WINDOWS\SYSTEM32\sethc.exe (lo que requiere permisos de escritura en el directorio C:\WINDOWS\SYSTEM32) y la segunda consiste en explotar una vulnerabilidad en el procedimiento de ejecucin de aplicaciones de Windows (la cual requiere permisos de escritura en el directorio C:\). Veamos cmo funciona la primer tcnica: Por defecto, Windows XP instala el software de ayuda y accesibilidad que se activa pulsando la tecla SHIFT 5 veces seguidas. Al hacer esto, aparece un cuadro de dilogo que permite configurar la aplicacin sethc.exe ubicada en C:\WINDOWS\SYSTEM32.

El ataque consiste en sustituir sethc.exe por cmd.exe (esto se puede hacer con un disco de arranque ntfsdos o con un live cd de alguna distribucin de Linux si no se puede escribir en el directorio C:\WINDOWS\SYSTEM), de esta forma cuando pulsemos la tecla SHIFT 5 veces seguidas se ejecutar un intrprete de comandos. Hasta este punto no es algo muy grave, pero la vulnerabilidad aparece cuando pulsamos SHIFT 5 veces antes de iniciar sesin ya que el interprete de comandos que se ejecuta lo hace bajo privilegios Administrator.

A continuacin, cualquier comando que ejecutemos ser como usuario Administrator. Lo ideal es crear una nueva cuenta Administaror, lo cual se hace de dos formas:

Ejecutando los comandos:

net user nuevoadmin 1234password /add net localgroup administrators nuevoadmin /add

De esta forma creamos el usuario "nuevoadmin" con privilegios de administrador y contrasea "1234password"

Ejecutando "Computer Management"

compmgmt.msc

Esta aplicacin permite agregar usuarios mediante una interfaz grfica. Ahora veamos la segunda tcnica: Esta tcnica consiste en explotar una vulnerabilidad en el procedimiento de ejecucin de aplicaciones de Windows. Cuando lanzamos una aplicacin, si la ruta al ejecutable no contiene espacios, como por ejemplo:
C:\WINDOWS\system32\cmd.exe

Windows localiza el archivo cmd.exe e inicia su ejecucin. Si en cambio la ruta al ejecutable contiene espacios debemos utilizar comillas dobles, como por ejemplo:
"C:\Program Files\McAfee\VirusScan Enterprise\Mcshield.exe"

para que Windows localice correctamente el archivo ejecutable. En la (vieja) notacin 8.3 es posible evitar el uso de comillas mediante:
C:\Progra~1\McAfee\VirusS~1\Mcshield.exe

Pero qu sucede si olvidamos las comillas y ejecutamos:


C:\Program Files\McAfee\VirusScan Enterprise\Mcshield.exe

Puede parecer igual a lo anterior pero en realidad sucede lo siguiente:


Windows intenta localizar y ejecutar el archivo C:\Program.exe Si ese archivo no existe, Windows intenta localizar y ejecutar el archivo C:\Program Files\McAfee\VirusScan.exe Si ese archivo no existe, Windows finalmente intenta localizar y ejecutar el archivo originalmente deseado C:\Program Files\McAfee\VirusScan Enterprise\Mcshield.exe

Esto nos abre una puerta para lograr el acceso al sistema con mayores privilegios. Por qu? La mayora de los servicios en Windows se ejecutan como SYSTEM y algunos se encuentran bajo el directorio "C:\Program Files". Entonces veamos la siguiente situacin: supongamos que Mcshield.exe es un servicio que se inicia automticamente con Windows y se ejecuta en el contexto de LocalSystem. La ruta al ejecutable es la mencionada anteriormente, pero sin comillas. Cuando Windows inicia, trata de ejecutar el servicio Mcshield automticamente como LocalSystem, pero debido a que no hay comillas en la ruta al archivo Mcshield.exe tratar de iniciar (siempre como LocalSystem) primero lo siguiente:

C:\Program.exe C:\Program Files\McAfee\VirusScan.exe

Por lo tanto es posible crear nuestro propio "servicio" Program.exe o VirusScan.exe y situarlo en la ubicacin donde Windows accidentalmente tratar de ejecutarlo. El servicio puede ser algo bsico como agregar un nuevo usuario administrador, como expliqu anteriormente. Tal vez se pregunten: puede ser que algn servicio tenga la ruta al ejecutable sin comillas? La respuesta es s, yo lo prob y qued sorprendido por la cantidad de veces que se ejecut el "servicio" Program.exe al iniciar Windows. Solamente hay que encontrar uno que se ejecute con privilegios >= Administrator, o plantar el archivo Program.exe y esperar que un administrador inicie sesin en el equipo. En Windows XP es posible listar los servicios que se ejecutan automticamente al iniciar el sistema desde Start > Settings > Control Panel > Administrative Tools > Services. Una posible limitacin es encontrarse sin permiso de escritura en el directorio "C:\" o "C:\Program Files\McAfee\" pero siempre podemos plantar el "servicio" utilizando un disco de arranque ntfsdos o un live cd. La ltima barrera sera no poder bootear el sistema desde unidades de disco o usb, en este caso podemos intentar resetear la BIOS quitando la pila. Si tenemos acceso fsico, el sistema est comprometido. Segunda parte: "from Administrator to SYSTEM" Bajo circunstancias normales, un usuario no puede ejecutar cdigo como SYSTEM, slo el sistema operativo tiene esta habilidad, pero utilizando el intrprete de comandos se puede abusar del comando at para que Windows ejecute nuestro escritorio con privilegios SYSTEM. El comando at despacha comandos y programas para ejecutarse en una fecha y tiempo especfico. Este comando se puede utilizar slo cuando el

servicio Task Scheduler se est ejecutando y el usuario que lo ejecuta es miembro del grupo local Administrators. Supongamos que una poltica de Windows nos impide modificar la configuracin del proxy en Internet Explorer, a pesar de tener privilegios de administrador local. En la siguiente captura se observa la ventana de configuracin de red de Internet Explorer (se accede desde Tools > Internet Options > Connections > LAN Settings).

Para comenzar, abrimos cms.exe y ejecutamos el comando at. Se observa que el comando est habilitado (de lo contrario retorna Access is denied.) lo que nos permite agregar una nueva tarea programada, como se observa en la siguiente captura:

Cuando el reloj alcanza las 8:27 se ejecuta la tarea cmd.exe, la diferencia es que esta tarea se ejecuta con privilegios SYSTEM ya que es iniciada por el servicio Task Scheduler que corre bajo la cuenta Local System. En la siguiente captura se observa el

intrprete de comandos iniciado automticamente, la barra de ttulo indica svchost.exe (Service Host) en lugar de cmd.exe. A partir de esta consola podemos ejecutar cualquier aplicacin con privilegios SYSTEM:

Si abrimos Internet Explorer desde esta consola tenemos acceso a todas las opciones bloqueadas anteriormente. Esto nos permite, por ejemplo, modificar la configuracin del servidor Proxy (estas opciones estaban grisadas en la primer captura):

Si deseamos un entorno de escritorio ejecutado bajo privilegios SYSTEM, primero debemos terminar el proceso explorer.exe para cerrar el entorno de escritorio actual:

Una vez que terminamos el proceso explorer.exe desaparece el escritorio y todas las ventanas abiertas, excepto la consola con privilegios SYSTEM. A continuacin ejecutamos explorer.exe desde esta consola, lo que inicia un nuevo entorno de escritorio. Aunque el nombre de usuario corresponde con el nombre del sistema, lo que indica que el entorno de escritorio est ejecutando bajo privilegios SYSTEM. A partir que aqu, todas las aplicaciones que ejecutemos desde el escritorio se ejecutaran bajo privilegios SYSTEM. Es posible resetear la contrasea del administrador local, matar procesos pertenecientes a SYSTEM y acceder a todos los componentes bloqueados del sistema. Para evitar este ataque, se debe deshabilitar el servicio Task Scheduler siempre que no sea necesario. Pero si es necesario, se debe deshabilitar el comando at y utilizar el comando schtasks (la documentacin de este comando se encuentra en http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/enus/schtasks.mspx). Conclusin Explotando estas vulnerabilidades, logramos acceso con privilegios SYSTEM a partir de una cuenta limitada "pepe". Espero que les haya gustado. NOTA: La informacin presentada en este artculo fue para fines didcticos y no deba utilizarse para abusar de sistemas Windows ;)

You might also like