De Becari@ a Administrador: 60 segundos en Windows 8 RTM
Publicado por Pedro C. el 15-10-2012
Basado en una vulnerabilidad de escalada de privilegios en Microsoft© Windows descubierta por High-Tech Bridge Security Research Lab, vamos a ver cómo tomar el control de un equipo con Windows 8 RTM actualizado completamente, aunque ha sido testado también en Windows Vista Ultimate SP1, Windows 2008 SP2 y Windows 7 Profesional SP1.
Destacar que en ésta entrada, nos limitaremos a usar los binarios desarrollados como PoC (Proof of Concept - Prueba de Concepto) originales ya que nuestro tema principal, será ver cómo afecta la vulnerabilidad a un sistema en producción y por qué no ha sido ni será cerrada por Microsoft.
Partimos de la base de que se da bajo ciertas condiciones con los Sistemas Operativos mencionados anteriormente. En concreto, se trata del servicio de sistema "IKE and AuthIP IPsec Keying Modules" o su equivalente a la lengua de Cervantes "Módulos de creación de claves IPsec para IKE y AuthIP". Conocido como IKEEXT y ejecutado bajo el contexto de una cuenta de sistema, se encarga de albergar los módulos de intercambio de claves Internet Key Exchange (IKE) y Authenticated Internet Protocol (AuthIP). Son empleados para la autenticación e intercambio de claves en el protocolo IPsec. Por tanto, aunque su inicio sea manual en algunos casos por las políticas empleadas en la red, lo tengamos activo con la configuración de Windows por defecto. Sobre todo si implementamos IPv6 ó IPv4 con IPsec como suele realizarse en la mayoría de entornos :-(
Hasta aquí nada extraño, pero resulta que si instalamos los sistemas "por defecto", el servicio intenta cargar la librería de enlace dinámico wlbsctrl.dll que no se encuentra tras esa instalación de tan siguiente, siguiente, esto... finalizar.
El servicio se ejecuta con los privilegios del SYSTEM por defecto y ahí es donde un usuario local sin privilegios ningunos, osea, el/la becari@, si tiene permisos de escritura en el sistema vulnerable a la ruta por defecto u otras rutas donde buscará el system en busca de la "dll perdida", podrá ejecutar código arbitrario para conseguir un acceso privilegiado.
¿Y por qué todo esto?
El servicio trata de cargar la librería wlbsctrl.dll pero no la encuentra. Entonces y según la "especificación" del propio Microsoft, se intentará buscar y cargar en el siguiente orden:
El propio directorio desde donde se carga la aplicación El directorio system El directorio system de 16-bits El directorio windows El directorio actual Los directorios que se encuentran en la variable PATH
Además, cuando un directorio se crea en la raíz (p.e. C:\), los permisos de accesos de ficheros y directorios se heredan del directorio padre. Por defecto, los miembros del grupo "Usuarios Autenticados" tienen privilegios FILE_WRITE_DATA y FILE_APPEND_DATA en todos los directorios creados bajo el contexto raíz. Eso incluye también a los instaladores de aplicaciones de terceros fabricantes.
Como vemos, es todo un conjunto explosivo en nuestras manos... Hay que aprovecharlo mientras dure... Y no es el único servicio que "olvida" incluir la librería...
Manos a la obra!!!
Por tanto, ya tenemos un equipo con exposición si cumple que no han sido cambiados los permisos por defecto en el directorio de instalación y su ruta ha sido incluida en el PATH (difícil, eh?). Si se dieran dichas condiciones, un usuario legítimo pero no privilegiado, podría escribir su propio código en el fichero "wlbsctrl.dll" bajo la ruta de instalación de la aplicación de un tercero, reiniciar el sistema para que se cargara el código y ya podría ejecutar "cosas más bonitas" que una ventana con contabilidad nada más ;-D
Unas pequeñas aplicaciones del tipo anterior son MySQL, PHP, Zend Server, Ruby installer, ActivePython, ActiveTCL, y un montón más… Ojo, que no son sólo de "los otros", que también están para el maligno! Bueno, en éste caso, nos vamos a valer de la instalación por defecto de ActivePerl 5.16.1.1601 y que podeis descargar de su sitio oficial. Ni contaros cómo se instala. Amablemente, pedirle a vuestro Administrador que lo descargue y lo instale (necesita permisos para instalación). Darle a siguiente y hasta que lo haga y os salga un finalizar!!! Si os dais cuenta, un equipo tipo "desarrollador" tiene muchas papeletas para ser candidato...
Ahora, ejecutaremos un shell como becari@s para comprobar el PATH del sistema y veremos que se ha añadido:
C:\>echo %PATH% C:\............El PATH anterior........;C:\Perl64\site\bin;
Luego ya tenemos un sistema con exposición para hacer algo maligno.
Ahora, simplemente vamos a descargar los binarios originales (sitio oficial) del PoC o de nuestro repositorio maligno.
Desde nuestro directorio de becari@, extraeremos los ficheros del HTB23108-P0c-Windows-Services.rar en nuestra carpeta del sistema.
Ahora, en función de la arquitectura empleada, extraeremos los ficheros zip de Escalation_Perl_x64.zip en el directorio C:\PERL64\SITE\BIN y como podreis comprobar, teneis permisos para poder escribir lo que querais!!!
Reiniciaremos el equipo. Es necesario hacerlo para que se ejecute el Servicio con la DLL que hemos modificado e incluido en C:\PERL64\SITE\BIN
Volveremos a entrar al sistema con nuestras credenciales de "becari@"
Abriremos una shell de sistema (e incluso podremos poner "whoami" para comprobar que "no somos nadie")
Ejecutaremos el programa C:\PERL64\SITE\BIN\ADMC.EXE
Nos pedirá un usuario: fox
Nos pedirá la contraseña: 1234
Escribiremos shell y entonces whoami para comprobar como somos "nt authority\system" en nuestra consola. Y a disfrutar!!! El resto es cosa vuestra.
¿Qué dice Microsoft de todo esto?
La respuesta de Microsoft no ha podido ser más clara: No se trata de una vulnerabilidad en su producto. Por eso, ni está arreglada ni se arreglará. La vulnerabilidad es de terceras partes que hacen que el producto de Microsoft sea vulnerable y que los usuarios, deberían de conocer éstas situaciones y eliminar el directorio del PATH o restringir los permisos a terceras aplicaciones para protegerse. Particularmente pensamos que con un par... si señor!!!. Todo el mundo nace hecho un sysadmin!!!
Quedamos abiertos a que cualquier seguidor, nos mande una dll modificada para reproducir el PoC con otro(s) programa(s) o quien nos diga cómo actua la DLL y los programas empleados originalmente para el PoC. A quien lo haga, le concederemos una plaza completamente ***GRATUITA*** en el siguiente Curso que vamos a programar de Sh3llc0d3r’s: Introducción al desarrollo de exploits para Windows/Linux. Será necesario enviar el PoC debidamente comentado a ex-alumnos@madesyp.com o bien, si sois externos a dicha lista, a pedroc@madesyp.com
Recuerda que en Academia MADESYP nos encontramos impartiendo Cursos especializados en Seguridad Informática donde realizamos y establecemos las contramedidas para las pruebas de concepto con todo ésto y mucho más...
Ser buenos y no hagais maldades!!!