Windows Privilege Escalation
Privelege Escalation
La escalada de privilegios es el proceso de explotar vulnerabilidades o configuraciones incorrectas en los sistemas para elevar privilegios de un usuario a otro, generalmente a un usuario con acceso administrativo o root en un sistema.
La escalada de privilegios es un elemento vital del ciclo de vida del ataque y es un determinante importante en el éxito general de una prueba de penetración.
Después de establecerse inicialmente en un sistema de destino, se le pedirá que aumente sus privilegios para poder realizar tareas y funciones que requieren privilegios administrativos.
No se puede subestimar ni pasar por alto la importancia de la escalada de privilegios en el proceso de pruebas de penetración. Desarrollar tus habilidades de escalada de privilegios te destacará como un buen evaluador de penetración.
Existe varios vectores de explotación que uno puede reutilizar y existe múltiples exploits (módulos que puede explotar el código disponible que puede llegar a simplificar el proceso
Windows Kernel
Un Kernel es un programa informático que es el núcleo de un sistema operativo y tiene control total sobre todos los recursos y hardware de un sistema. Actúa como una capa traductora entre hardware y software y facilita la comunicación entre estas dos capas.
Windows ejecuta un Kernel llamado "Windows NT"
Windows NT es el kernel que viene pre-empaquetado con todas las versiones de Microsoft Windows y funciona como un kernel tradicional con algunas excepciones basadas en la filosofía de diseño del usuario. Consta de dos modos principales de operación que determinan el acceso a los recursos y al hardware del sistema:
User Mode: Los programas y servicios que se ejecutan en modo de usuario tienen acceso limitado a los recursos y la funcionalidad del sistema. Estas aplicaciones suelen ser programas de terceros.
Mode Kernel: El modo Kernel tiene acceso ilimitado a los recursos y funciones del sistema con la funcionalidad adicional de managing devices y system memory.
Si estamos intentado elevar nuestros privilegios explotando el Kernel de Windows, es por que si obtenemos algún código ejecutado en el modo Kernel o en el espacio del Kernel, o ejecutamos alguna Shell, podríamos obtener privilegios disponibles en el sistema operativo.
Windows Kernel Exploits
Los exploits del Kernel en Windows normalmente apuntan a vulnerabilidades en el Kernel de Windows para ejecutar código arbitrario con el fin de ejecutar comandos privilegiados del sistema u obtener un shell del sistema.
Este proceso diferirá según la versión de Windows a la que se dirige y el exploit del Kernel que se utiliza.
La escalada de privilegios en sistemas Windows normalmente seguirá la siguiente metodología:
Identificación de vulnerabilidades del Kernel
Descargar, compilar y transferir exploits del Kernel al sistema de destino.
Tools & Environment
Windows-Exploit-Suggester: Esta herramienta compara los niveles de parche de destino con los Base de datos de vulnerabilidades de Microsoft para detectar posibles parches faltantes en el objetivo. También notifica al usuario si hay exploits públicos y módulos Metasploit. disponible para los boletines faltantes.
GitHub: https://github.com/AonCyberLabs/Windows-Exploit-Suggester
Windows-Kernel-Exploits: Colección de exploits del Kernel de Windows ordenados por CVE.
GitHub: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-135
Nota: Las técnicas demostradas en este video se realizan en Windows 7 SP1. VM.
Demo: Windows Kernel Exploits
Quiz
Bypassing UAC With UACMe
UAC (User Account Control)
El Control de cuentas de usuario (UAC - User Account Control) es una característica de seguridad de Windows introducida en Windows Vista que se utiliza para evitar que se realicen cambios no autorizados en el sistema operativo.
UAC se utiliza para garantizar que los cambios en el sistema operativo requieran la aprobación del administrador o de una cuenta de usuario que forme parte del grupo de administradores locales.
A un usuario sin privilegios que intente ejecutar un programa con privilegios elevados se le solicitará la credencial UAC, mientras que a un usuario privilegiado se le solicitará un mensaje de consentimiento.
Los ataques pueden eludir UAC para ejecutar ejecutables maliciosos con privilegios elevados.
Bypassing UAC
Para evitar UAC con éxito, necesitaremos tener acceso a una cuenta de usuario que forme parte del grupo de administradores locales en el sistema de destino de Windows.
UAC permite que un programa se ejecute con privilegios administrativos, por lo que solicita confirmación al usuario.
UAC tiene varios niveles de integridad que van de bajo a alto; si el nivel de protección de UAC se establece por debajo de alto, los programas de Windows se pueden ejecutar con privilegios elevados sin pedir confirmación al usuario.
Existen varias herramientas y técnicas que se pueden utilizar para evitar UAC; sin embargo, la herramienta y la técnica utilizadas dependerán de la versión de Windows que se ejecute en el sistema de destino.
Parte del workflow es que crear un payload con venon de MSF (Metasploit Framework) para subir al objetivo. Cuando ejecutemos el malware, podra ejecutarse como administrador sin pasar por el control UAC o por un consentimiento. Como resultado tendremos una conexion por interprete como Administrador
Bypassing UAC With UACMe
UACMe es una sólida herramienta de escalada de privilegios de código abierto desarrollada por @hfireOx. Se puede utilizar para evitar el UAC de Windows aprovechando varias técnicas.
GitHub: https://github.com/hfirefOx/UACME
El repositorio UACME GitHub contiene una lista muy bien documentada de métodos que se pueden utilizar para omitir UAC en múltiples versiones de Windows, desde Windows 7 hasta Windows 10.
Permite a los atacantes ejecutar cargas útiles maliciosas en un objetivo de Windows con privilegios administrativos/elevados abusando de la herramienta incorporada Windows AuteElevate.
El repositorio UACMe GitHub tiene más de 60 exploits que pueden usarse para evitar UAC dependiendo de la versión de Windows que se ejecuta en el objetivo.
Demo: Bypassing UAC With UACMe
Quiz
Access Token Impersonation
Windows Access Tokens
Los tokens de acceso de Windows son un elemento central del proceso de autenticación en Windows y son creados y administrados por el Servicio del Subsistema de Autoridad de Seguridad Local (LSASS - Local Security Authority Subsystem Service).
Un token de acceso de Windows es responsable de identificar y describir el contexto de seguridad de un proceso o subproceso que se ejecuta en un sistema. En pocas palabras, un token de acceso puede considerarse como una clave temporal similar a una cookie web que proporciona a los usuarios acceso a un sistema o recurso de red sin tener que proporcionar credenciales cada vez que se inicia un proceso o se accede a un recurso del sistema.
Los tokens de acceso son generados por el proceso winlogon.exe cada vez que un usuario se autentica exitosamente e incluyen la identidad y los privilegios de la cuenta de usuario asociada con el hilo (thread) o proceso. Luego, este token se adjunta al proceso userinit.exe, después del cual todos los procesos secundarios iniciados por un usuario heredarán una copia del token de acceso de su creador y se ejecutarán con los privilegios del mismo token de acceso. En otras palabras cada vez que intente abrir un navegador por ejemplo Firefox.exe entonces el proceso se ejecutara con el token de acceso o los privilegios asociados, con el mismo.
Los tokens de acceso de Windows se clasifican según los distintos niveles de seguridad que se les asignan. Estos niveles de seguridad se utilizan para determinar los privilegios que se asignan a un token específico.
Normalmente, a un token de acceso se le asignará uno de los siguientes niveles de seguridad:
Impersonate-level: Los tokens de nivel de suplantación se crean como resultado directo de un inicio de sesión no interactivo en Windows, generalmente a través de servicios del sistema específicos o inicios de sesión de dominio.
Delegate-level: Los tokens de nivel de delegado generalmente se crean mediante un inicio de sesión interactivo en Windows, principalmente mediante un inicio de sesión tradicional o mediante protocolos de acceso remoto como RDP.
Impersonate-level: Los tokens de nivel de suplantación se pueden utilizar para suplantar un token en el sistema local y no en ningún sistema externo que utilice el token.
Delegate-level: Los tokens a nivel de delegado representan la mayor amenaza, ya que pueden usarse para hacerse pasar por tokens en cualquier sistema.
Windows Privileges
El proceso de suplantar tokens de acceso para elevar los privilegios en un sistema dependerá principalmente de los privilegios asignados a la cuenta que ha sido explotada para obtener acceso inicial, así como de los tokens de Impersonate o Delegate disponibles.
Los siguientes son los privilegios necesarios para un ataque de suplantación exitoso:
SeAssignPrimaryToken: Esto permite a un usuario hacerse pasar por tokens.
SeCreateToken: Esto permite a un usuario crear un token arbitrario con privilegios administrativos.
SelmpersonatePrivilege: esto permite a un usuario crear un proceso bajo el contexto de seguridad de otro usuario, normalmente con privilegios administrativos.
The Incognito Module
El modulo Incognito, es un módulo de meterpreter integrado que originalmente era una aplicación independiente que le permite hacerse pasar por tokens de usuario después de una explotación exitosa.
Podemos usar el módulo de incógnito para mostrar una lista de tokens (enumaracion) disponibles que podemos suplantar y todo el proceso de la misma el cual implica dos tecnicas.
La primera tecnica se mostrara en la demo
La segunda tecnica consistira esencialmente en utilizar codigo de explotacion.
Demo: Access Token Impersonation
Quiz
Last updated