Grande pergunta.
Primeiras coisas primeiro - eu considero a maioria dos "testadores de penetração" como sendo script kiddies. Meu viés pode não ser justo ou preciso, mas estou colocando este aviso de modo que, se você detectar algum cinismo em meu tom, saiba de onde ele está vindo. Eu não estou dizendo que há não pentesters habilidosos, mas essa é a minha geral generalidade.
(equipe azul para a vida!)
My question: 1) Is there a way to get Active Directory to log these failed username requests in a central location so we can notice a spike in them?
Você não forneceu informações suficientes para que alguém pudesse responder a essa pergunta com total segurança e com segurança. Você disse que o seu aplicativo foi encontrado para conter uma falha que permitia que os invasores enumerassem contas de usuários. Estou tentando entender de que maneira você acha que o AD precisa executar o registro para seu aplicativo
.Apparently the failures only ever showed up in the local event log of the server where the application was installed.
Aparentemente as falhas apareceram no log de eventos no servidor? Ou as falhas apareceram no log de eventos no servidor? Se sim, o que exatamente os eventos disseram? Quem os registrou? Sua aplicação? Ou o Windows? Vá descobrir e eu poderei adicionar esclarecimentos adicionais à minha resposta.
Eu vou sair em um membro aqui baseado 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 em seu aplicativo, mas Em vez disso, estavam 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 forma diferente dependendo se a conta do usuário existe ou não. Este não é um comportamento específico do Active Directory, mas se aplica igualmente ao MIT Kerberos, Heimdal, etc. O KDC responderá com KDC_ERR_PREAUTH_REQUIRED
se um nome de usuário válido não tiver dados anteriores à autenticação, mesmo sem tentar uma autenticação real. Dessa maneira, você pode enumerar os nomes de usuário de um KDC. Mas como o invasor (ou a ferramenta que o atacante está usando, como o KrbGuess - porque os pentesters estão em seu melhor quando estão usando ferramentas de outras pessoas) não precisa continuar para uma tentativa de autenticação completa, nada é registrado porque não autenticação real foi tentada!
Agora, para sua próxima pergunta:
2) If not, what is the best way to monitor and actively detect this type of attack in the future (Hopefully without having to buy too much new equipment).
Algumas coisas.
Primeiro, existem produtos pagos de nível corporativo que são projetados para detectar esses tipos de ataques (entre muitas outras coisas.) Muitos fornecedores oferecem esses produtos, e as recomendações de produtos são fora do assunto para Serverfault, mas basta dizer que eles estão lá fora. Muitos desses produtos funcionam exigindo que você configure o espelhamento de porta entre seus controladores de domínio e esses "coletores de dados" para que eles vejam e analisem literalmente todo e qualquer pacote que entre ou saia de seus controladores de domínio.
(Desculpe, isso meio que "cai na sua cláusula" sem comprar coisas novas demais ".)
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, deverá obter flooded com eventos no seu log de eventos de Segurança sobre erros do Kerberos que mencionam que a pré-autenticação do Kerberos é necessária. Um exemplo de um evento como esse:
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 vem o tsunami de solicitações do Kerberos. Isso nos leva de volta aos produtos corporativos de detecção de intrusão que mencionei anteriormente.
E não se esqueça do encaminhamento de eventos do Windows, que pode fazer com que seus servidores encaminhem os eventos para um local centralizado para serem analisados por qualquer ferramenta que você tenha à sua disposição.
Toda esta resposta até agora foi baseada no protocolo Kerberos, o qual eu nem posso dar por garantido porque você deu tão pouco detalhe no seu post. No entanto, espero que isso ajude pelo menos um pouco.