Tokens de acceso en Windows
Los tokens de acceso en Windows son estructuras de datos que contienen la seguridad y la información de usuario de un proceso o hilo. Son fundamentales para el modelo de seguridad de Windows, ya que determinan los derechos y privilegios que tiene un proceso o hilo específico en el sistema.
A continuación, te proporciono detalles sobre los tokens de acceso en Windows:
Tipos de Tokens: Hay dos tipos principales de tokens en Windows:
Token de usuario: Representa a un usuario que se ha autenticado con éxito. Está asociado con todos los procesos iniciados por ese usuario.
Token primario: Es el token asociado con un proceso cuando se inicia.
Token de impersonación: Permite a un hilo actuar con diferentes niveles de privilegio de su proceso contenedor. Es útil, por ejemplo, cuando un servicio necesita realizar tareas con privilegios diferentes.
Información en Tokens: Un token de acceso contiene información como:
Identificador de usuario (User SID): Identifica al usuario asociado con el token.
Grupos SID: Identifica a los grupos de los que el usuario es miembro.
Privilegios: Define acciones específicas que el usuario puede realizar, como apagar el sistema o cambiar la hora del sistema.
Tipo de token: Indica si el token es primario o de impersonación.
Nivel de impersonación: Si es un token de impersonation, este campo especifica el nivel (Anónimo, Identificación, Impersonación, Delegación).
Discretionary Access Control List (DACL): Especifica qué objetos puede acceder el portador del token y con qué permisos.
Impersonation: Esta es una característica clave en Windows que permite a un hilo tomar el token de otro usuario y "impersonarlo", es decir, actuar con los privilegios de ese usuario. Es útil en situaciones como servidores que necesitan acceder a recursos en nombre de un cliente.
Token Stealing: En el contexto de la seguridad, los tokens de acceso pueden ser objeto de abuso por parte de atacantes. Si un atacante logra comprometer un proceso o hilo con privilegios elevados, puede "robar" el token asociado y usarlo para impersonar a ese usuario o proceso de alto privilegio, facilitando la escalación de privilegios o el movimiento lateral.
Creación de Tokens: Los tokens de acceso se crean durante el proceso de autenticación. Cuando un usuario inicia sesión en una máquina Windows, el sistema genera un token de acceso que representa al usuario y a todos sus grupos y privilegios asociados.
Modificación de Tokens: A través de APIs específicas, es posible modificar tokens, aunque generalmente esto requiere privilegios elevados. Esta capacidad puede ser abusada por malware o atacantes para alterar los derechos y permisos de un token.
Los tokens de acceso son una parte esencial de la infraestructura de seguridad de Windows. Ofrecen una gran flexibilidad en términos de gestión de identidad y acceso, pero también presentan vectoras potenciales para el abuso si no se administran y protegen adecuadamente. Es crucial para los administradores y profesionales de seguridad comprender cómo funcionan los tokens y cómo pueden ser protegidos contra abusos.
Caso de estudio
Nosotros podemos validar si un proceso de CMD es privilegiado con herramientas como ProccessHacker o el explorador de procesos de Sysinternals.
En la evidencia previa, podemos apreciar que este proceso de CMD tiene la característica de Elevated en positivo.
Ahora vamos a validar esta misma información para un proceso de CMD no privilegiado.
Recordemos que cada usuario que se conecta al sistema tiene un token de acceso con información de seguridad para esa sesión de inicio de sesión. El sistema crea un token de acceso cuando el usuario se conecta. Cada proceso ejecutado en nombre del usuario tiene una copia del token de acceso. El token identifica al usuario, los grupos del usuario y los privilegios del usuario. Un token también contiene un SID (identificador de seguridad) de inicio de sesión que identifica la sesión de inicio de sesión actual.
Enlace de referencia:
Última actualización