1. Introdução

 

Recentemente recebemos uma chamada de suporte de um cliente dizendo que um dos seus usuários de rede foi capaz de efetuar o logon em uma página web segura publicada pelo ISA Server 2006 após tentar digitar errada cinco vezes e na sexta tentativa (com a senha correta) ele efetuou o logon. O problema é que a política de travamento de conta ao digitar senha errada da empresa era de quatro tentativas. Depois disso ficou o alerta de que havia uma vulnerabilidade na publicação segura de página web e o cliente resolveu abrir um chamado de suporte para investigamos isso.

 

Após revisar o ambiente e coletar mais informações sobre o cenário em que o problema não acontecia caso o usuário entrasse com as credencias no formato DOMÍNIO\USUÁRIO. Desta forma, o problema só ocorria de fato se o usuário utilizasse o formato UPN (User Principal Name), que é usuário@domínio, para fazer o logon.

 

2. Ambiente

 

Após identificarmos o cenário, reproduzimos o problema em laboratório. O laboratório tinha a seguinte configuração:

 

Figura 1 – Laboratório usado para simular o problema.

 

Como é possível verificar na figura acima, a página web usava logon seguro via formulários fornecido pelo ISA Server. Na figura abaixo temos a regra de publicação do servidor web:

 

Figura 2 – Regra do ISA Server.

 

A regra usa um “web listener” que utilize autenticação LDAP para validar as credenciais do usuário conforme mostra abaixo:

 

Figura 3 – Componentes LDAP.

 

Na parte de “login expression” temos cadastrados ambos formatos: SAM Based e UPN Based.

 

Para maiores informações sobre configuração LDAP reveja os artigos que publiquei acerca deste assunto:

 

Publicação de Web Site com Troca de Senha de Usuário no ISA Server 2006 – Parte 1

Publicação de Web Site com Troca de Senha de Usuário no ISA Server 2006 – Parte 2

 

 

3. Entendendo o Processo de Logon

 

Para melhor entender o processo de tentativas de logon nós habilitamos o logging do netlogon no controlador de domínio. Para isso o seguinte comando foi executado na console do controlador de domínio:

 

nltest /dbflag:0x2080ffff

 

3.1. Using o formato SAM Account Name

 

Quando o usuário Bob tenta efetuar o logon no servidor ISA Server 2006 através de formulário seguro usando o formato DOMÍNIO\USUÁRIO e digita a senha errada, os seguintes eventos são registrados no log do netlogon.

 

11/20 21:19:34 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Entered

11/20 21:19:34 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC000006A

11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Entered

11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Returns 0x0

11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Entered

11/20 21:19:40 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC000006A

11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Entered

11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of CONTOSO\Administrator from DCCONT Returns 0x0

11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Entered

11/20 21:19:45 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC000006A

 

O erro 0xC000006A significa que a senha digitada está incorreta. Após quatro tentativas (que foi estabelecido via política) o seguinte evento é registrado:

 

11/20 21:19:51 [LOGON] CONTOSO: SamLogon: Network logon of contoso\bob from ISACONTN2 Returns 0xC0000234

 

O erro 0xC0000234 significa que a conta do usuário foi automaticamente locada. No visualizador de eventos, o seguinte evento também é registrado:

 

Event Type:   Success Audit

Event Source: Security

Event Category:       Account Management

Event ID:       644

Date:            11/20/2007

Time:            9:19:45 PM

User:            NT AUTHORITY\SYSTEM

Computer:     DCCONT

Description:

User Account Locked Out:

          Target Account Name:        Bob

          Target Account ID:    CONTOSO\Bob

          Caller Machine Name:         ISACONTN2

          Caller User Name:    DCCONT$

          Caller Domain:         CONTOSO

          Caller Logon ID:       (0x0,0x3E7)

 

 

3.2. Usando o Formato UPN

 

Quando o usuário Bob tenta efetuar o logon no servidor ISA Server 2006 através de formulário seguro usando o formato username@domain e digita a senha errada, os seguintes eventos são registrados no log do netlogon.

 

11/20 21:22:04 [LOGON] CONTOSO: SamLogon: Network logon of (null)\bob@contoso.msft from ISACONTN2 Entered

11/20 21:22:04 [LOGON] CONTOSO: SamLogon: Network logon of (null)\bob@contoso.msft from ISACONTN2 Returns 0xC0000225

 

O erro que é registrado neste cenário não é o 0xC000006A, ao invés disso o erro registrado é 0xC0000225, que por sua vez significa STATUS_NOT_FOUND. Mesmo digitando a senha incorreta várias vezes a conta não é locada pois o valor não é incrementado pelo controlador de domínio.

 

4. Como Corrigir o Problema

 

Este é um problema já corrigido pelo Windows Server 2003 SP2, entretanto sabemos que existem diversos clientes que ainda não aplicaram este Service Pack (o que é recomendado), se este for o seu caso então aplique o hotfix abaixo para solucionar o problema:

 

921063          Unsuccessful authentications are not counted as incorrect password logon attempts when you use the IADsOpenDSObject::OpenDSObject method to specify a UPN in a Windows Server 2003 domain

http://support.microsoft.com/default.aspx?scid=kb;EN-US;921063

 

Aplique este hotfix em todos controladores de domínio e no servidor ISA (caso ele tenha o Windows Server 2003 SP1). 

 

 

Até a próxima.

 

Yuri Diogenes

Security Support Engineer – ISA Server Team

Microsoft Texas