Windows gestiona el acceso al sistema mediante usuarios (identidades individuales), grupos (colecciones de usuarios con los mismos permisos) y privilegios (capacidades específicas asignadas a ambos). Cada usuario tiene un identificador único llamado SID y se autentica mediante hashes NTLM.
1. 🏷️ Nombres e identificadores
1.1. SID — Security Identifier
Cada usuario tiene un SID, su huella digital única dentro del sistema. Windows internamente gestiona los usuarios mediante su SID, pero para hacer más sencilla la administración, este se traduce a un nombre (samAccountName).
Tiene tres partes:
S-1-5-21-<subautoridades>-<RID>
│ │ │ │ │
│ │ │ └── 21 = usuarios └── Identificador de cuenta
│ │ └── 5 = NT Authority
│ └── 1 = versión
└── S = SID
| Parte | Descripción | Ejemplo |
|---|---|---|
| Prefijo | Siempre S-1-5-21 para usuarios de dominio |
S-1-5-21 |
| Subautoridades | Serie numérica que identifica el dominio | 3623811015-3361044348-30300820 |
| RID | Identifica el rol de la cuenta | 500 (Admin), 1001+ (usuarios) |
RIDs relevantes
- 500 → Administrador built-in
- 501 → Invitado
- 1000+ → Usuarios creados manualmente
1.2. Nombres de usuarios
A parte del SID, existen otros nombres que se usan para identificar a los usuarios y que utilizan las personas:
Friendly Name
Es un alias que permite identificar fácilmente a un usuario y que se muestra en la interfaz del usuario y en las ACLs de archivos y carpetas. El sistema internamente traduce estos alias a SIDs. Ej juan
sAMAccountName
Es el nombre de inicio de sesión "clásico" o de "nivel inferior" (down-level). Tiene un límite de 20 caracteres y tienen dos partes separadas por un backslash "\"
| Formato | Uso | Ejemplo |
|---|---|---|
<dominio>\<usuario> |
Usuarios del sistema o dominio | PC_juan\juan |
BUILTIN\<grupo> |
Grupos predefinidos del sistema | BUILTIN\Guests |
NT AUTHORITY\<cuenta> |
Cuentas del sistema que ejecutan procesos | NT AUTHORITY\SYSTEM |
User Principal Name (UPN)
Es el formato de inicio de sesión moderno, similar a un correo electrónico (ej. usuario@dominio.com), utilizado principalmente en entornos de Active Directory y cuentas de Microsoft.
Display Name
Es el nombre completo que aparece en la pantalla de bloqueo o en el menú de inicio. No se utiliza para la autenticación técnica interna, sino meramente para la identificación visual del usuario. Ej "Juan Cuesta"
¿Dónde ver usuarios y grupos? Win + R → compmgmt.msc → Administración de equipos → Usuarios y grupos locales
2. 👤Tipos de usuarios y grupos
2.1. Tipos de usuarios
Encontramos estos usuarios:
| Usuario | Privilegios | Descripción |
|---|---|---|
| Administrador | 🔴 Altos | Control total del sistema. Creado en la instalación, deshabilitado por defecto para login directo. Se accede a sus privilegios via UAC |
| Usuario estándar | 🟡 Bajos | Uso normal del sistema. No puede hacer cambios importantes sin aprobación del Admin |
| Invitado | 🟢 Mínimos | Acceso provisional. Desactivado por defecto en versiones modernas |
| Default User | — | Plantilla oculta que se copia al crear nuevas cuentas |
| WDAGUtilityAccount | 🟢 Bajos | Desde Windows 10. Ejecuta apps en un contenedor aislado para proteger el sistema |
2.2. Tipos de grupos
Grupos de acceso general
| Grupo | Descripción |
|---|---|
| Administrators | Pueden realizar tareas administrativas via UAC. El primer usuario creado en la instalación entra aquí automáticamente |
| Users | Usuarios estándar. Pueden usar el sistema y ejecutar apps, sin tocar configuraciones críticas |
| Guests | Acceso anónimo y muy limitado. El usuario Invitado pertenece aquí |
| Advanced Users | Tareas administrativas limitadas (Ej: modificar configuración de red) |
| Authenticated Users | Todos los usuarios que han iniciado sesión con credenciales válidas |
| Everyone | Todos: autenticados y no autenticados. ⚠️ Asignar permisos aquí afecta a cualquiera |
Grupos de acceso remoto
| Grupo | Protocolo | Descripción |
|---|---|---|
| Remote Desktop Users | RDP | Pueden conectarse remotamente con escritorio gráfico |
| Remote Management Users | WinRM | Pueden conectarse remotamente por línea de comandos (PowerShell remoto) |
Grupos especializados
| Grupo | Descripción |
|---|---|
| Event Log Readers | Pueden leer el registro de eventos. Útil para administradores y equipos SOC |
| Operadores (varios tipos) | Gestión delegada de tareas específicas: servicios, backups, control de acceso... |
| IIS_IUSRS | Permisos para ejecutar aplicaciones web en servidores IIS |
3. 🔑 Privilegios
3.1. Lista de privilegios
Los privilegios son capacidades específicas asignadas a usuarios o grupos, independientemente de los permisos sobre archivos.
| Privilegio | Permite | Riesgo |
|---|---|---|
SeImpersonatePrivilege |
Ejecutar procesos suplantando al Admin | 🔴 Alto |
SeDebugPrivilege |
Acceder a la memoria de cualquier proceso | 🔴 Alto |
SeBackupPrivilege |
Leer archivos ignorando sus ACLs | 🔴 Alto |
SeRestorePrivilege |
Escribir archivos ignorando sus ACLs | 🔴 Alto |
SeTakeOwnershipPrivilege |
Apropiarse de cualquier recurso del sistema | 🔴 Alto |
SeLoadDriverPrivilege |
Cargar drivers con altos privilegios | 🔴 Alto |
SeSecurityPrivilege |
Administrar el registro de auditoría y seguridad | 🔴 Alto |
SeNetworkLogonRight |
Conectarse al sistema por red (SMB, NetBIOS...) | 🟡 Medio |
SeRemoteInteractiveLogonRight |
Conectarse por RDP | 🟡 Medio |
SeIncreaseWorkingSetPrivilege |
Aumentar la RAM asignada a procesos | 🟡 Medio |
SeShutdownPrivilege |
Apagar el sistema localmente | 🟢 Bajo |
SeRemoteShutdownPrivilege |
Apagar el sistema remotamente | 🟢 Bajo |
SeTimeZonePrivilege |
Cambiar la zona horaria | 🟢 Bajo |
Abuso de privilegios
Privilegios como SeImpersonatePrivilege o SeDebugPrivilege son vectores habituales de escalada de privilegios.
4. 🔐 Autenticación y autorización en Windows
Windows separa dos conceptos fundamentales: autenticación (comprobar que el usuario es quien dice ser) y autorización (qué acciones puede realizar sobre cada recurso).
SSO
Windows utiliza autenticación SSO (Single Sign-On)**, en la que el usuario se autentica una vez y accede a múltiples recursos sin volver a introducir credenciales.
Esto funciona de la siguiente manera:
-
LSASS.exe es el proceso que maneja la autenticación, la cual varía según el SSP elegido (proveedor de seguridad), como Kerberos o por NTLM.
-
Una vez validadas las credenciales, el sistema crea una sesión de inicio de sesión (logon session), que puede ser local o remota según el tipo de acceso.
-
A partir de esa sesión se genera un token de acceso, que contiene la identidad del usuario y su security context (sus grupos, privilegios y permisos).
-
Cada vez que el usuario quiere realizar una acción, como abrir un archivo o ejecutar un programa, el sistema utiliza las credenciales almacenadas en memoria para la autenticación y crea un proceso con una copia asociada de su token.
-
Autorización → Cuando el proceso intenta acceder a un recurso, el sistema compara el token con las ACL ("Access Control Lists") del objeto; dentro de ellas, las ACE ("Access Control Entries") determinan si el acceso se permite o se deniega.
El proceso LSASS.exe
LSASS
lsass.exe es el proceso central de seguridad de Windows y se traduce como LSA o "Autoridad de Seguridad Local". Corre con privilegios de SYSTEM y es el responsable de la autenticación, la creación y gestión de sesiones, la traducción entre nombres de usuario y SIDs y la emisión de tokens y el control de acceso. Se encuentra en %SystemRoot%\System32\Lsass.exe
Este proceso almacena en memoria las credenciales usadas, por tanto es el objetivo principal de los atacantes. Está protegido con medidas de seguridad como PPL (protege su memoria de ser leída por otros procesos) y credential guard (aisla las credenciales en un entorno virtual separado del kernel)
4.1. Modos de autenticación: SSPs
Para la autenticación, existen varias soluciones distintas, aunque la mayoría son para entornos empresariales (Active Directory).
| Mecanismo | Descripción |
|---|---|
| NTLM | Método que transforma una contraseña en un hash que se envía y valida |
| Kerberos | Sistema de autenticación basado en tickets. El usuario se autentica una vez y luego utiliza tickets cifrados para acceder a distintos servicios sin reenviar la contraseña. |
| Certificate-based (PKINIT) | Variante de Kerberos donde la autenticación inicial se realiza con certificados digitales en lugar de contraseña. |
| Smart Card | Uso de certificados almacenados en una tarjeta física. Funciona como PKINIT, pero el certificado está protegido por hardware. |
| Windows Hello | Método de autenticación local mediante biometría o PIN que desbloquea una clave criptográfica (o certificado) almacenada en el dispositivo, sin enviar la contraseña a la red y que se usa para autenticarse por Kerberos |
Paquetes de autenticación
Según el modo de autenticación escogido, se usa un paquete de autenticación u otro,
| Paquetes | Descripción |
|---|---|
Lsasrv.dll |
El "Servidor LSA" actúa como el gestor de paquetes de seguridad para la LSA. Contiene la función Negotiate, que selecciona el protocolo NTLM o Kerberos. |
Msv1_0.dll |
Paquete de autenticación para inicios de sesión en la máquina local que no requieren autenticación personalizada. |
Samsrv.dll |
El Administrador de Cuentas de Seguridad (SAM) almacena las cuentas de seguridad locales |
Kerberos.dll |
Paquete de seguridad cargado por la LSA para la autenticación basada en Kerberos en una máquina. |
Netlogon.dll |
Servicio de inicio de sesión basado en la red. |
Ntdsa.dll |
Agente del Sistema de Directorio (DSA) que se carga en los controladores de dominio. Gestiona la base de datos de AD (ntds.dit), procesa las consultas LDAP y maneja la replicación. |
SAM y NTDS
La SAM es la base de datos local donde Windows almacena los hashes NTLM de los usuarios locales. Se encuentra en la ruta C:\Windows\System32\config\SAM (Hive HKLM\SAM). Esta base de datos está bloqueada mientras Windows está en ejecución y cifrada con una clave almacenada en el registro (SYSTEM hive). LSASS la lee al arrancar para poder autenticar usuarios y solo los usuarios privilegiados o con SeBackupPrivilege pueden acceder a ella.
Si un sistema se une a un dominio, el Controlador de Dominio (DC) validará las credenciales desde la base de datos de Active Directory (ntds.dit), que se almacena por defecto en %SystemRoot%\NTDS\ntds.dit.
4.2. Proceso de Autenticación por NTLM
Windows no almacena contraseñas, sino hashes NTLM en una base de datos protegida llamada SAM, leída por el proceso lsass.exe.
-
El cliente introduce su contraseña y esta se convierte en un hash NTLM
-
Challenge: El servidor envia un challenge o cadena aleatoria
-
El cliente cifra ese challenge con su hash NTLM y se lo manda al servidor
-
El servidor cifra el mismo challenge con el hash almacenado en la SAM y compara
-
Si ambos coinciden acceso concedido
Existen dos versiones de NTLM:
-
NTLMv1: El método mas antiguo, considerado obsoleto e inseguro por utilizar un cifrado muy débil.
-
NTLMv2: Es el método actual. Es más robusto, pero vulnerable a Pass-the-Hash
Cracking online de hashes NTLM
Un atacante puede interceptar el challenge y descifrarlo probando múltiples contraseñas posibles en un ataque por fuerza bruta. Para cada contraseña candidata, el atacante calcula su hash, lo usa para cifrar el desafío interceptado y compara el resultado con la respuesta real. Si los valores coinciden, el atacante ha encontrado la contraseña en texto plano
Pass The Hash
Como lo que utiliza la autenticación de windows para completar el "desafío-respuesta" de la autenticación es el jasj, el atacante puede usarlo directante para acceder al sistema. Ademas como los hahes no cambian a menos que se cambie de contraseña, un atacante puede reutilizarlo las veces que quiera.
El formato que usan los hashes NTLMv2 es este:
usuario:RID:hash_LM:hash_NT:::
jessica:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
│ └── siempre igual (LM obsoleto) └── este es el que se crackea
└── RID de la cuenta
El hash LM El hash LM siempre es el mismo (
aad3b435...) porque está obsoleto y desactivado. El que importa es el hash NT.
4.3. Tipo de logins
Cuando un usuario se autentica, Windows registra el tipo de logon. Esto es crítico en seguridad porque determina qué credenciales se almacenan en memoria.
| Logon Type | ID | Descripción | Qué queda en memoria |
|---|---|---|---|
| Interactive | 2 | Login físico en el equipo (teclado). | ✅ Se cachean las credenciales del usuario |
| Network | 3 | Se accede por red a un recurso compartido, sin crear una sesión interactiva | ❌ Se crea un token temporal, pero no se cachean credenciales |
| Batch | 4 | Tareas programadas por procesos automáticos | ⚠️ Solo si la tarea fue configurada con usuario y contraseña. |
| Service | 5 | Arranque de servicios de Windows (se ejecutan bajo una cuenta de servicio o una cuenta de usuario) | ⚠️ Solo si se ejecutan bajo una cuenta de usuario normal |
| NetworkCleartext | 8 | Red con credenciales en texto claro (IIS básica) | ✅ Se envían las credenciales por la red |
| NewCredentials | 9 | runas /netonly — usa credenciales de otro usuario para acceder a un servicio red |
✅ Sí, en la máquina remota |
| RemoteInteractive | 10 | RDP — escritorio remoto | ✅ Sí, es una sesión completa |
| CachedInteractive | 11 | Login offline con credenciales cacheadas | ✅ Sí, en la máquina local |
Desde Windows 8.1 existe el modo Restricted Admin para RDP: la sesión se comporta como un logon de tipo Network (3) en el equipo remoto en lugar de una sesión interactiva completa, por lo que el usuario nunca entrega su contraseña ni su hash NTLM al host remoto y no quedan credenciales cacheadas ahí.
Inicio de sesión interactivo local
El inicio de sesión interactivo local (LogonType 2) se lleva a cabo mediante el proceso de inicio de sesión de Windows:
1️⃣ Winlogon es el componente que gestiona el inicio de sesión interactivo. Primero lanza LogonUI, la interfaz gráfica de login, que recopila las credenciales introducidas por el usuario a través de los credential providers (los plugins que definen cómo se piden las credenciales: contraseña, PIN, tarjeta, etc.). Win32k.sys es el driver en modo kernel que da soporte a la GUI en general, pero no es el componente que gestiona directamente la entrada de credenciales.
2️⃣ Una vez obtenidas las credenciales, se entregan a LSASS, que las valida mediante el paquete de autenticación correspondiente (por ejemplo, NTLM o Kerberos). Si la autenticación tiene éxito, LSASS obtiene un Access Token asociado al usuario.
3️⃣ Con la autenticación completada, Windows utiliza ese contexto de seguridad para iniciar userinit.exe, que realiza tareas de inicialización del entorno de usuario y posteriormente puede iniciar el shell de Windows (explorer.exe).
Inicio de sesión remota
Se produce mediante RDP o SMB y sigue un proceso similar donde se obtienen las credenciales del usuario y LSASS lanza el proceso correspondiente usando su nuevo token de sesión.
El problema del double Hop
El problema del "Double Hop": El Double Hop es la situación en la que un usuario se conecta a un Servidor A, y desde ahí quiere acceder a un Servidor B** con sus credenciales. El segundo salto es el problema. ¿Por qué? Porque al autenticarse en el servidor A, este crea el token pero no almacena las credenciales, por tanto no puede autenticarse en el servidor B.
Para resolver esto, existen soluciones como la delegación de Kerberos o CredSSP (reenvío de credenciales) pero ambas soluciones plantean cierto riesgo.
Impersonation: Un servicio puede recibir una conexión de un usuario y crear un Impersonation Token para actuar en su nombre sin tener sus credenciales. Esto es la base de la delegación y también del abuso de SeImpersonatePrivilege (Ej: Potato Attacks).
Hive Security
El hive security (HKLM\Security) contiene credenciales de inicio de sesión remotos en el dominio, en forma de hashes DCC2 (utilizan PBKDF2 y son invulnerables a pass the hash). También tiene credenciales DPAPI
4.4. DPAPI
Es un motor de cifrado del que dependen muchísimas cosas: contraseñas guardadas en el navegador, credenciales de Wi-Fi, certificados con clave privada exportable, cookies de sesión y el credential manager
Cada usuario dispone de DPAPI master keys, almacenada bajo %APPDATA%\Microsoft\Protect\<SID>\. Las master keys están protegidas mediante claves derivadas de las credenciales del usuario y mecanismos adicionales de Windows.
En dominio, si el usuario olvida su contraseña o el admin la resetea, existe una DPAPI backup key a nivel de dominio (guardada en el DC) que permite recuperar/descifrar las master keys sin conocer la contraseña original.
DPAPI se utiliza para proteger criptográficamente numerosos secretos almacenados por Windows y aplicaciones, incluyendo determinados datos gestionados por Credential Manager y Windows Vault.
Credential Manager
Credential Manager es el sistema de Windows para gestionar credenciales persistentes (para recursos de red; aplicaciones, RDP...). Los datos están almacenados en %APPDATA%\Microsoft\Credentials\
Se accede por Control Panel > Credential Manager o el comando cmdkey:
cmd> cmdkey /list
# Target: Domain:interactive=SRV01\mcharles 🡆 credencial de dominio interactiva 🡆 runas
# Type: Domain Password
# User: SRV01\mcharles
cmd> runas /savecred /user:SRV01\mcharles cmd
Windows Vaults
Los Windows Vaults son un mecanismo de almacenamiento estructurado de credenciales. Cada vault tiene un un identificador (GUID), un esquema/tipo de credencial, registros (vault items) y datos asociados a esos registros.
Se almacena bajo: %APPDATA%\Microsoft\Vault\<GUID> y guarda este tipo de contraseñas:
- Credenciales web: credenciales de cuentas online (Microsoft Edge legacy)
- Windows Credentials: almacena tokens de one drive y recursos y servicios en red
Es posible exportar los Almacenes de Windows a archivos .crd ya sea a través del Panel de Control o con el siguiente comando. Las copias de seguridad creadas de esta manera se cifran con una contraseña proporcionada por el usuario y se pueden importar en otros sistemas Windows.
C:\Users\administrator> rundll32 keymgr.dll,KRShowKeyMgr
Se listan con vaultcmd /list
C:\Users\Jessica>vaultcmd /list
# Almacenes cargados actualmente:
# Almacén: Credenciales web
# GUID de almacén:4BF4C442-9B8A-41A0-B380-DD4A704DDB28
# Ubicación: C:\Users\Jessica\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28