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