A melhor maneira de rastrear a enumeração de nomes de usuário com força bruta / tentativas de nome de usuário com falha AD

9

Temos um Windows Server que possui um aplicativo que reside nele, que usa credenciais de domínio no logon no aplicativo. Durante um teste de caneta recente, os testadores puderam usar o aplicativo para enumerar nomes de usuário de domínio válidos com base na resposta do aplicativo (forneceu uma resposta diferente para um nome de usuário inválido e uma senha inválida).

O aplicativo está sendo corrigido para que não revele essas informações, mas também sinto que deveríamos ter detectado esse ataque, pois houve mais de 2000.000 tentativas inválidas de nome de usuário por um curto período de tempo. Não vimos isso, mesmo quando nossos administradores estavam observando atentamente o Active Directory. Aparentemente, as falhas sempre apareciam no log de eventos local do servidor em que o aplicativo estava instalado.

Minha pergunta: 1) Existe uma maneira de obter o Active Directory para registrar essas solicitações de nome de usuário com falha em um local central para que possamos notar um aumento nelas?

2) Se não, qual é a melhor maneira de monitorar e detectar ativamente esse tipo de ataque no futuro (espero sem precisar comprar muitos equipamentos novos).

Obrigado pela ajuda.

Doug
fonte

Respostas:

11

Ótima pergunta.

Primeiras coisas primeiro - considero a maioria dos "testadores de penetração" como crianças de script. Meu preconceito pode não ser justo ou preciso, mas estou colocando este aviso para que, se você detectar algum cinismo no meu tom, saiba de onde ele vem. Não estou dizendo que não penteados hábeis, mas essa é minha generalidade abrangente.

(Equipe azul para a vida!)

Minha pergunta: 1) Existe uma maneira de obter o Active Directory para registrar essas solicitações de nome de usuário com falha em um local central para que possamos notar um aumento nelas?

Você não forneceu informações suficientes para que alguém pudesse responder a essa pergunta completamente e com confiança. Você disse que seu aplicativo continha uma falha que permitia aos invasores enumerar contas de usuário. Estou tentando entender como você acha que o AD precisa executar o log para seu aplicativo.

Aparentemente, as falhas sempre apareciam no log de eventos local do servidor em que o aplicativo estava instalado.

Aparentemente, as falhas apareceram no log de eventos no servidor? Ou os fracassos fez aparecer no log de eventos no servidor? Se sim, o que exatamente disseram os eventos? Quem os registrou? Sua aplicação? Ou Windows? Vá descobrir e talvez eu possa adicionar esclarecimentos adicionais à minha resposta.

Eu vou entrar em conflito aqui com base na sua presunção de que esses eventos deveriam ter sido registrados pelo Active Directory de alguma forma ... e se seus pentesters não estivessem realmente explorando uma falha no seu aplicativo, mas estivessem usando uma falha muito conhecida no próprio Kerberos para enumerar nomes de usuários? O próprio Kerberos contém o que eu consideraria uma falha de design na qual um invasor pode tentar milhares e milhares de tentativas de "pré-autenticação" (ou seja, um ataque de força bruta) e o KDC responderá de maneira diferente, dependendo se a conta do usuário existe ou não. Esse não é um comportamento específico do Active Directory, mas também se aplica ao MIT Kerberos, Heimdal etc. O KDC responderá comKDC_ERR_PREAUTH_REQUIREDse um nome de usuário válido foi apresentado sem dados de pré-autenticação, mesmo sem tentar uma autenticação real. Dessa maneira, você pode enumerar nomes de usuários de um KDC. Mas como o invasor (ou a ferramenta que o invasor está usando como o KrbGuess - porque os pentesters estão no seu melhor quando estão usando as ferramentas de outras pessoas) não precisa continuar com uma tentativa de autenticação completa, nada é registrado porque não autenticação real foi tentada!

Agora, vamos à sua próxima pergunta:

2) Se não, qual é a melhor maneira de monitorar e detectar ativamente esse tipo de ataque no futuro (espero sem precisar comprar muitos equipamentos novos).

Um par de coisas.

Primeiro, existem produtos pagos, de nível empresarial, projetados para detectar esses tipos de ataques (entre muitos outros). Muitos fornecedores oferecem esses produtos, e as recomendações de produtos não são relacionadas ao Serverfault, mas basta dizer que elas estão fora do ar. há. Muitos desses produtos funcionam exigindo que você configure o espelhamento de porta entre os controladores de domínio e esses "coletores de dados" para que eles vejam e analisem literalmente todos os pacotes que entram ou saem dos controladores de domínio.

(Desculpe, isso meio que cai na sua cláusula "sem comprar muitas coisas novas".)

Outra coisa que pode ajudá-lo é a entrada do registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

LogLevel = 1

Documentado aqui .

Se você habilitar essa entrada do registro, será inundado com eventos no log de eventos de Segurança sobre erros do Kerberos que mencionam que a pré-autenticação Kerberos é necessária. Um exemplo desse evento:

A Kerberos Error Message was received:
 on logon session DOMAIN\serviceaccount
 Client Time: 
 Server Time: 12:44:21.0000 10/9/2012 Z
 Error Code: 0x19 KDC_ERR_PREAUTH_REQUIRED
 Extended Error: 
 Client Realm: 
 Client Name: 
 Server Realm: DOMAIN
 Server Name: krbtgt/DOMAIN
 Target Name: krbtgt/DOMAIN@DOMAIN
 Error Text: 
 File: e
 Line: 9fe
 Error Data is in record data.

Mas isso pode ou não ajudá-lo se não especificar de onde exatamente o tsunami dos pedidos do Kerberos é proveniente. Isso nos leva de volta aos produtos empresariais de detecção de intrusões que mencionei anteriormente.

E não se esqueça do Encaminhamento de Eventos do Windows, que pode fazer com que seus servidores encaminhem eventos para um local centralizado para serem analisados ​​por qualquer ferramenta que você tenha à sua disposição.

Até agora, toda essa resposta foi baseada no protocolo Kerberos, que não posso nem dar como certo, porque você deu tão poucos detalhes em sua postagem. No entanto, espero que isso ajude pelo menos um pouco.

Ryan Ries
fonte
Obrigado pela sua resposta. Vou verificar duas vezes na segunda-feira, mas acredito que os logs de eventos são os eventos padrão do Windows para falha no login no servidor local (por exemplo, seriam o equivalente a uma falha no login via RDP com um nome de usuário inválido). É definitivamente nada aplicativo específico. Para a enumeração de autenticação Kerberos, acredito que os testadores de caneta precisariam estar em nossa intranet local. Eles não eram. O aplicativo está disponível publicamente na internet com autenticação baseada em formulários padrão, que chama o sistema operacional oculto.
Doug
0

Esta é uma pergunta interessante que eu gostaria de ouvir uma resposta adequada. Encontrei algumas informações que Doug pode achar úteis, no entanto, acho que podem ser um pouco inadequadas. Outra pessoa provavelmente pode fornecer uma resposta expandida:

Entre no servidor em que você deseja armazenar as informações de auditoria, Executar -> RSOP.MSC -> Configuração do computador -> Configurações do Windows -> Configurações de segurança -> Diretivas locais -> Diretiva de auditoria -> "Auditar eventos de logon da conta" e " Eventos de logon de auditoria "

A explicação para "eventos de logon da conta" é a seguinte:

Auditar eventos de logon da conta

Essa configuração de segurança determina se o sistema operacional audita cada vez que este computador valida as credenciais de uma conta.

Os eventos de logon da conta são gerados sempre que um computador valida as credenciais de uma conta para a qual é autorizada. Os membros do domínio e as máquinas que não ingressaram no domínio têm autoridade para suas contas locais; todos os controladores de domínio têm autoridade para contas no domínio. A validação de credencial pode oferecer suporte a um logon local ou, no caso de uma conta de domínio do Active Directory em um controlador de domínio, pode oferecer suporte a um logon em outro computador. A validação de credencial é sem estado, portanto, não há evento de logoff correspondente para eventos de logon da conta.

Se essa configuração de política for definida, o administrador pode especificar se deve auditar apenas sucessos, apenas falhas, sucessos e falhas, ou não auditar esses eventos (ou seja, nem sucessos nem falhas).

A explicação para "eventos de logon" é a seguinte:

Eventos de logon de auditoria

Essa configuração de segurança determina se o sistema operacional audita cada instância de um usuário que tenta fazer logon ou logoff neste computador.

Os eventos de logoff são gerados sempre que uma sessão de logon da conta de usuário finalizada. Se essa configuração de política for definida, o administrador pode especificar se deve auditar apenas sucessos, apenas falhas, sucessos e falhas, ou não auditar esses eventos (ou seja, nem sucessos nem falhas).

Você precisaria essencialmente habilitar essas políticas, definir suas configurações e escolher "falha" se desejar apenas monitorar tentativas com falha. Se você quiser, também poderá monitorar os sucessos, mas poderá ser um pouco mais difícil analisar se você estiver preocupado apenas em procurar esse tipo de ataque.

Se você estiver preocupado com configurações semelhantes às quais seus sistemas podem estar vulneráveis, eu recomendaria analisar as configurações STIG ( link ), quando usadas em conjunto com um scanner SCAP, pode realmente ajudar a destacar alguns dos riscos que sua organização pode estar voltado para. O visualizador de STIG tende a gerar alguns falsos positivos, mas se você ler os detalhes específicos de cada problema, poderá achar que não é iniciante.

Sawta
fonte
1
Sugiro que as linhas de base do MSFT ou nist, a DISA faça suposições sobre o ambiente, em vez de proteger o host como uma entidade. Sim, é necessária uma auditoria adequada. Também li as práticas recomendadas para proteger o white paper do Active Directory.
Jim B
Ótimo ponto, Jim B! Eu não tinha considerado esse aspecto.
Sawta 28/03