26 - Elevación de privilegios en Windows (Demo) - 05/03/2006


Autor: Lic. Cristian F. Borghello

http://www.segu-info.com.ar

El 31 de enero del corriente, Sudhakar Govindavajhala y Andrew W. Appel publicaron " Windows Access Control Demystified" un profundo análisis sobre la forma en que Windows maneja el control de accesos y los permisos.
Este documento expone distintas formas de elevar privilegios, es decir, poder obtener permisos (de administrador o cuentas del sistema) que un usuario normal generalmente no posee.

En este caso el culpable no es Microsoft, a menos que se lo culpe de hacer demasiado complejos y completos los niveles de acceso. Lo que lleva a la elevación de privilegios es la mala implementación de los permisos por parte de empresas fabricantes de software que por desconocimiento, error o negligencia no asignan los permisos estrictamente necesarios para que una aplicación funcione.

En cambio Microsoft sí tiene programas y servicios que asignan en forma incorrecta los permisos en Windows, como cualquier otro fabricante.
Mediante estos servicios u otros de terceros es posible realizar la explotación y lograr privilegios administrativos.

Microsoft se ha pronunciado sobre este tema exponiendo cómo único factor de mitigación la instalación de actualizaciones, y la activación y correcta configuración de un Firewall.

A modo de ejemplo haxorcitos a través de tarako (Andrés Tarascó) ha desarrollado una aplicación que permite elevar los permisos de un usuario restringido.
Utilizando esa herramienta he realizado esta demostración logrando permisos administrativos sobre un equipo al cual tenía acceso con mínimos privilegios (guest).

DISCLAIMER: Esta demostración se entrega tal y como está y bajo ninguna circunstancia www.segu-info.com.ar y el autor del presente se hacen responsables de las actividades que el lector pueda realizar con la misma o de las consecuencias de dichas actividades. La presente se desarrolla para demostrar lo sencillo que puede ser realizar un ataque de elevación de privilegios y las consecuencias dañinas del mismo.

  • PASO 1: La máquina víctima es Windows XP SP1 con todas las actualizaciones instaladas y sin Firewall activado. Si se activa un Firewall el ataque no se puede llevar a cabo ya que la conexión es denegada.
    Aquí vemos la importancia de esta sencilla medida de seguridad que nunca debería dejar de considerarse.
    La IP víctima es 192.168.0.34 y mediante el uso de la herramienta de haxorcitos se listan los servicios vulnerables en la misma (la modesta suma de 301).
    En la Img_1 se remarca el servicio elegido para ser atacado: UPS (Sistema de Alimentación Ininterrumpida). Se seleccionó este porque luego se lo podrá desactivar sin graves consecuencias a la estabilidad del sistema. Si se eligiera DCOM o NETBios el sistema atacado debería ser restaurado o reinstalado casi con seguridad debido a la inestabilidad que puede ocasionar el ataque.
  • PASO 2: Se ejecuta la herramienta indicando la víctima y el servicio mencionado anteriormente. El exploit se ejecuta correctamente y se nos informa que podemos conectarnos a nuestra víctima a través del puerto 8080 (Img_2).
  • PASO 3: Antes de conectarnos vemos las consecuencias en el Windows víctima.
    Al visualizar el servicio UPS podemos ver el código que se ejecutará al iniciar el servicio. Se puede ver que se creará un directorio "HXR" y dentro del mismo un script con extensión VBS con un código fuente que veremos luego. En el caso de una víctima real, esta nunca hubiera percibido el ataque a menos que fuera a controlar específicamente este servicio.
    También consideremos que esto es una prueba de concepto por lo que la carpeta es fácilmente identificable. Si hubiera sido una carpeta del sistema, nunca lo hubiéramos notado.
  • PASO 4: Aquí podemos apreciar el código fuente del script VBS mencionado.
    Si lo seguimos podremos ver que el mismo crea un archivo "\HXR\a.exe" con el contenido del exploit propiamente dicho. Como antes, este archivo podría haber tenido un nombre parecido a algún archivo de sistema y no lo hubiéramos notado (Img_4).
    Además también podemos ver como se ha modificado el servicio UPS en el registro de Windows (Img_7).
  • PASO 5: El momento esperado. Nos conectamos a la víctima al puerto mencionado. Como vemos se nos devuelve una shell a "c:\windows\system32" lo que nos indica que estamos dentro del sistema con los mismos privilegios que el servicio explotado, en este caso "LocalService" (Img_5).
    Para demostrar el acceso hemos creado un directorio "c:\hack". En la Img_6 puede verse los dos directorios creados: el primero "c:\hxr" para realizar el ataque y el segundo "c:\hack" creado manualmente.

Conclusión:
Por algún extraño motivo este paper no se ha difundido en la forma en que se esperaría para un documento cuya aplicación directa permite la elevación de privilegios de usuarios y aplicaciones.

Es posible automatizar este ataque y creo no equivocarme al decir que si un gusano se aprovecha de esta "vulnerabilidad" las consecuencias podrían ser desastrosas ya que, como se vio, es posible tomar control total del equipo atacado.
Esto daría lugar a una extensa propagación y a la creación de millones de PC zombies utilizables para fines delictivos.

Actualización 15/03/2006:

La vulnerabilidad sobre servicios específicos de Windows a los cuales se asigna incorrectamente los permisos ha sido solucionada en el boletín MS06-011  [es] lanzado el 14 de marzo de 2006. Se recomienda verificar los permisos de los servicios provistos por terceros ajenos a Microsoft.
Microsoft agradece especialmente a Andres Tarasco de SIA Group por trabajar con ellos en la resolución de CVE-2006-0023.
Más boletines de Microsoft se encuentran disponibles

Más información:

Buenos Aires, 05 de marzo de 2006

Con más de 19 años de experiencia compartiendo la mejor información de Seguridad

Contacto