6
Escalación de privilegios en Windows XP Recientemente estuve tratando de escalar privilegios en una máquina local con Windows XP y, como es de esperarse, encontré una variedad de exploits en Internet. Voy a explicarles los más 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 técnicas básicas, 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 ejecución de aplicaciones de Windows (la cual requiere permisos de escritura en el directorio C:\). Veamos cómo funciona la primer técnica: 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 diálogo que permite configurar la aplicación 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 distribución 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 intérprete de comandos. Hasta este punto no es algo muy grave, pero la vulnerabilidad aparece cuando pulsamos SHIFT 5 veces antes de iniciar sesión ya que el interprete de comandos que se ejecuta lo hace bajo privilegios Administrator.

Escalación de privilegios en Windows XP

Embed Size (px)

Citation preview

Page 1: Escalación de privilegios en Windows XP

Escalación de privilegios en Windows XP

Recientemente estuve tratando de escalar privilegios en una máquina local con

Windows XP y, como es de esperarse, encontré una variedad de exploits en Internet.

Voy a explicarles los más 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 técnicas básicas,

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 ejecución de

aplicaciones de Windows (la cual requiere permisos de escritura en el directorio C:\).

Veamos cómo funciona la primer técnica: 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 diálogo que permite configurar la aplicación 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 distribución 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 intérprete de comandos. Hasta este punto

no es algo muy grave, pero la vulnerabilidad aparece cuando pulsamos SHIFT 5 veces

antes de iniciar sesión ya que el interprete de comandos que se ejecuta lo hace bajo

privilegios Administrator.

Page 2: Escalación de privilegios en Windows XP

A continuación, 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 contraseña "1234password"

• Ejecutando "Computer Management"

compmgmt.msc

Esta aplicación permite agregar usuarios mediante una interfaz gráfica.

Ahora veamos la segunda técnica: Esta técnica consiste en explotar una vulnerabilidad

en el procedimiento de ejecución de aplicaciones de Windows. Cuando lanzamos una

aplicación, 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 ejecución. 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) notación

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

Page 3: Escalación de privilegios en Windows XP

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 mayoría de los servicios en Windows se ejecutan como SYSTEM y algunos se

encuentran bajo el directorio "C:\Program Files". Entonces veamos la siguiente

situación: supongamos que Mcshield.exe es un servicio que se inicia automáticamente

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 automáticamente 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 ubicación donde Windows accidentalmente tratará de ejecutarlo. El

servicio puede ser algo básico como agregar un nuevo usuario administrador, como

expliqué anteriormente.

Tal vez se pregunten: ¿puede ser que algún 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 sesión en el equipo. En Windows XP

es posible listar los servicios que se ejecutan automáticamente al iniciar el sistema desde

Start > Settings > Control Panel > Administrative Tools > Services.

Una posible limitación 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 sería 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 físico, el sistema está comprometido.

Segunda parte: "from Administrator to SYSTEM"

Bajo circunstancias normales, un usuario no puede ejecutar código como SYSTEM,

sólo el sistema operativo tiene esta habilidad, pero utilizando el intérprete 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 específico. Este comando se puede utilizar sólo cuando el

Page 4: Escalación de privilegios en Windows XP

servicio “Task Scheduler” se está ejecutando y el usuario que lo ejecuta es miembro del

grupo “local Administrators”.

Supongamos que una política de Windows nos impide modificar la configuración del

proxy en Internet Explorer, a pesar de tener privilegios de administrador local. En la

siguiente captura se observa la ventana de configuración 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

Page 5: Escalación de privilegios en Windows XP

intérprete de comandos iniciado automáticamente, la barra de título indica ‘svchost.exe’

(Service Host) en lugar de ‘cmd.exe’. A partir de esta consola podemos ejecutar

cualquier aplicación 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 configuración

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:

Page 6: Escalación de privilegios en Windows XP

Una vez que terminamos el proceso “explorer.exe” desaparece el escritorio y todas las

ventanas abiertas, excepto la consola con privilegios SYSTEM. A continuación

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 contraseña 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 documentación de este comando se encuentra en

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-

us/schtasks.mspx).

Conclusión

Explotando estas vulnerabilidades, logramos acceso con privilegios SYSTEM a partir

de una cuenta limitada "pepe". Espero que les haya gustado.

NOTA: La información presentada en este artículo fue para fines didácticos y no debía

utilizarse para abusar de sistemas Windows ;)