El caso del usuario deshabilitado que se valida (por LDAP)
Hola a todos,
Soy Paula, del equipo de Directorio Activo. Recientemente tuvimos un caso en el que un usuario deshabilitado podía realizar una conexión a LDP y no recibía ningún error (aunque posteriormente no podía navegar por el árbol de la partición del dominio).
A la hora de realizar el BIND mediante la herramienta LDP.EXE, el mensaje recibido era el siguiente (indicando aparentemente que se había realizado la autenticación con las credenciales del usuario deshabilitado user1):
|
res = ldap_bind_s(ld, NULL, &NtAuthIdentity, 1158); // v.3
{NtAuthIdentity: User='user1'; Pwd= <unavailable>; domain = 'haledomain'.}
Authenticated as dn:'user1'. |
Si obtenemos unas trazas de red de dicha conexión, se muestra un BIND exitoso:
|
Hora |
Origen |
Destino |
Prot |
Detalles |
|
12:59:07.370 |
192.168.1.1 |
192.168.1.2 |
LDAP |
LDAP:Search Request, MessageID: 32, BaseObject: NULL, SearchScope: base Object, SearchAlias: neverDerefAliases |
|
12:59:07.380 |
192.168.1.2 |
192.168.1.1 |
LDAP |
LDAP:Search Result Entry, MessageID: 32 |
|
12:59:14.269 |
192.168.1.1 |
192.168.1.2 |
LDAP |
LDAP:Search Request, MessageID: 33, BaseObject: NULL, SearchScope: base Object, SearchAlias: neverDerefAliases |
|
12:59:14.280 |
192.168.1.2 |
192.168.1.1 |
LDAP |
LDAP:Search Result Entry, MessageID: 33 |
|
12:59:14.770 |
192.168.1.1 |
192.168.1.2 |
LDAP |
LDAP:Bind Request, MessageID: 35, Version: 3 |
|
12:59:14.780 |
192.168.1.2 |
192.168.1.1 |
LDAP |
LDAP:Bind Response, MessageID: 35, Status: Sasl Bind In Progress |
|
12:59:14.790 |
192.168.1.1 |
192.168.1.2 |
LDAP |
LDAP:Bind Request, MessageID: 36, Version: 3 |
|
12:59:14.981 |
192.168.1.2 |
192.168.1.1 |
LDAP |
LDAP:Bind Response, MessageID: 36, Status: Success |
En condiciones normales, un usuario deshabilitado no puede realizar una conexión LDAP a Directorio Activo ya que se deniega su acceso indicando que sus credenciales son inválidas:
|
res = ldap_bind_s(ld, NULL, &NtAuthIdentity, 1158); // v.3
{NtAuthIdentity: User='user1'; Pwd= <unavailable>; domain = 'haledomain'.}
Error <49>: ldap_bind_s() failed: Invalid Credentials.
Server error: 8009030C: LdapErr: DSID-0C09043E, comment: AcceptSecurityContext error, data 0, vece |
Este mensaje de red se puede observar también en la respuesta obtenida del DC (servidor LDAP) en las trazas de red:
|
Hora |
Origen |
Destino |
Prot |
Detalles |
|
13:12:04.417 |
192.168.1.1 |
192.168.1.2 |
LDAP |
LDAP:Search Request, MessageID: 73, BaseObject: NULL, SearchScope: base Object, SearchAlias: neverDerefAliases |
|
13:12:04.417 |
192.168.1.2 |
192.168.1.1 |
LDAP |
LDAP:Search Result Entry, MessageID: 73 |
|
13:12:12.208 |
192.168.1.1 |
192.168.1.2 |
LDAP |
LDAP:Bind Request, MessageID: 76, Version: 3 |
|
13:12:12.208 |
192.168.1.2 |
192.168.1.1 |
LDAP |
LDAP:Bind Response, MessageID: 76, Status: Sasl Bind In Progress |
|
13:12:12.208 |
192.168.1.1 |
192.168.1.2 |
LDAP |
LDAP:Bind Request, MessageID: 77, Version: 3 |
|
13:12:12.278 |
192.168.1.2 |
192.168.1.1 |
LDAP |
LDAP:Bind Response, MessageID: 77, Status: Invalid Credentials |
Revisando el visor de sucesos de Seguridad del DC de nuestro entorno de pruebas tras realizar el intento de conexión con el usuario deshabilitado user1, observamos la siguiente secuencia de eventos:
|
Event Type: Failure Audit
Event Source: Security
Event Category: Account Logon
Event ID: 672
Date: 8/14/2008
Time: 1:09:24 PM
User: NT AUTHORITY\SYSTEM
Computer: HALEDC01
Description:
Authentication Ticket Request:
User Name: user1
Supplied Realm Name: haledomain
User ID: -
Service Name: krbtgt/haledomain
Service ID: -
Ticket Options: 0x40810010
Result Code: 0x12
Ticket Encryption Type: -
Pre-Authentication Type: -
Client Address: 127.0.0.1
Certificate Issuer Name:
Certificate Serial Number:
Certificate Thumbprint:
|
|
Event Type: Success Audit
Event Source: Security
Event Category: Logon/Logoff
Event ID: 552
Date: 8/14/2008
Time: 1:09:24 PM
User: HALEDOMAIN\administrator
Computer: HALEDC01
Description:
Logon attempt using explicit credentials:
Logged on user:
User Name: administrator
Domain: HALEDOMAIN
Logon ID: (0x0,0x27F79)
Logon GUID: {94b7a00d-5198-8f5c-d90b-566add369611}
User whose credentials were used:
Target User Name: user1
Target Domain: haledomain
Target Logon GUID: -
Target Server Name: HALEDC01.haledomain.com
Target Server Info: HALEDC01.haledomain.com
Caller Process ID: 3256
Source Network Address: -
Source Port: -
|
|
Event Type: Failure Audit
Event Source: Security
Event Category: Account Logon
Event ID: 680
Date: 8/14/2008
Time: 1:09:24 PM
User: NT AUTHORITY\SYSTEM
Computer: HALEDC01
Description:
Logon attempt by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon account: user1
Source Workstation: HALEDC01
Error Code: 0xC0000072
|
|
Event Type: Failure Audit
Event Source: Security
Event Category: Logon/Logoff
Event ID: 531
Date: 8/14/2008
Time: 1:09:24 PM
User: NT AUTHORITY\SYSTEM
Computer: HALEDC01
Description:
Logon Failure:
Reason: Account currently disabled
User Name: user1
Domain: haledomain
Logon Type: 3
Logon Process: NtLmSsp
Authentication Package: NTLM
Workstation Name: HALEDC01
Caller User Name: -
Caller Domain: -
Caller Logon ID: -
Caller Process ID: -
Transited Services: -
Source Network Address: 192.168.1.1
Source Port: 2768
|
En cambio, en el visor de sucesos del DC del entorno que aparentemente autenticaba al usuario deshabilitado se podían ver los siguientes eventos:
|
Event Type: Failure Audit
Event Source: Security
Event Category: Account Logon
Event ID: 672
Date: 8/14/2008
Time: 1:06:53 PM
User: NT AUTHORITY\SYSTEM
Computer: HALEDC01
Description:
Authentication Ticket Request:
User Name: user1
Supplied Realm Name: haledomain
User ID: -
Service Name: krbtgt/haledomain
Service ID: -
Ticket Options: 0x40810010
Result Code: 0x12
Ticket Encryption Type: -
Pre-Authentication Type: -
Client Address: 127.0.0.1
Certificate Issuer Name:
Certificate Serial Number:
Certificate Thumbprint:
|
|
Event Type: Success Audit
Event Source: Security
Event Category: Logon/Logoff
Event ID: 552
Date: 8/14/2008
Time: 1:06:53 PM
User: HALEDOMAIN\administrator
Computer: HALEDC01
Description:
Logon attempt using explicit credentials:
Logged on user:
User Name: administrator
Domain: HALEDOMAIN
Logon ID: (0x0,0x27F79)
Logon GUID: {94b7a00d-5198-8f5c-d90b-566add369611}
User whose credentials were used:
Target User Name: user1
Target Domain: haledomain
Target Logon GUID: -
Target Server Name: HALEDC01.haledomain.com
Target Server Info: HALEDC01.haledomain.com
Caller Process ID: 3256
Source Network Address: -
Source Port: -
|
|
Event Type: Failure Audit
Event Source: Security
Event Category: Account Logon
Event ID: 680
Date: 8/14/2008
Time: 1:06:53 PM
User: NT AUTHORITY\SYSTEM
Computer: HALEDC01
Description:
Logon attempt by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon account: user1
Source Workstation: HALEDC01
Error Code: 0xC0000072
|
|
Event Type: Success Audit
Event Source: Security
Event Category: Account Logon
Event ID: 680
Date: 8/14/2008
Time: 1:06:53 PM
User: HALEDOMAIN\Guest
Computer: HALEDC01
Description:
Logon attempt by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon account: Guest
Source Workstation: HALEDC01
Error Code: 0x0
|
Los tres primeros eventos son iguales en ambos casos:
· El evento 672 indica que se ha intentado realizar una autenticación por KERBEROS con el usuario user1 y se ha devuelto el error 0x12. Este código de error se traduce al siguiente mensaje que indica que el usuario ha sido “revocado”:
KDC_ERR_CLIENT_REVOKED à Clients credentials have been revoked
· El evento 552 indica que se está intentado realizar una conexión al DC utilizando el usuario user1.
· A continuación se muestra el evento 680 indicando que el intento de autenticación del usuario user1 ha resultado fallido y proporciona el código de error 0xC0000072 correspondiente al siguiente mensaje (cuenta de usuario deshabilitada):
STATUS_ACCOUNT_DISABLED à The referenced account is currently disabled and may not be logged on to.
El evento que aparece a continuación de los anteriores es distinto en ambas situaciones:
· En el primer caso (el usuario no puede realizar la conexión LDAP – comportamiento esperado), se recibe el evento 531 indicando que la cuenta de usuario está actualmente deshabilitada: Account currently disabled
· En el entorno que aparentemente permite la conexión del usuario aparece el mismo intento fallido de autenticación pero se observa que, inmediatamente después, existe un intento exitoso de autenticación del usuario Invitado o Guest (evento 680).
Por lo tanto, en realidad no es el usuario user1 el que se está autenticando en el BIND de la conexión LDAP (aunque sea esa la percepción desde el cliente LDAP), sino que su autenticación es denegada y automáticamente se realiza otra autenticación con el usuario Invitado porque dicho usuario se encontraba HABILITADO en el entorno.
La razón de que el usuario posteriormente no pudiera acceder a los datos de la partición del dominio era precisamente por haber realizado la autenticación con la cuenta Invitado, ya que por defecto esta cuenta no tiene permisos de lectura sobre AD.
Es importante resaltar que la recomendación es que la cuenta Invitado permanezca deshabilitada por motivos de seguridad.
Más información sobre la cuenta Invitado (Guest):
User and computer accounts
Threats and Countermeasures. Chapter 5: Security Options
Microsoft Security: Windows 2000 Server Baseline Security Checklist
- Paula Tomás Galed