Grande question.
Tout d'abord - je considère que la plupart des "testeurs de pénétration" sont des gamins de script. Mon parti pris n'est peut-être pas juste ou exact, mais je mets cet avertissement afin que si vous détectez un cynisme dans mon ton, vous savez d'où il vient. Je ne dis pas qu'il n'y a pas de pentesters qualifiés, mais c'est ma généralité générale.
(Équipe bleue pour la vie!)
Ma question: 1) Existe-t-il un moyen d'obtenir Active Directory pour enregistrer ces demandes de nom d'utilisateur ayant échoué dans un emplacement central afin que nous puissions remarquer une pointe en eux?
Vous n'avez pas fourni suffisamment d'informations pour que quiconque puisse répondre à cette question de manière approfondie et en toute confiance. Vous avez dit que votre application contenait une faille qui permettait aux attaquants d'énumérer les comptes d'utilisateurs. J'essaie de comprendre de quelle manière vous pensez qu'AD doit effectuer la journalisation pour votre application.
Apparemment, les échecs ne sont apparus que dans le journal des événements local du serveur sur lequel l'application a été installée.
Apparemment, les échecs sont apparus dans le journal des événements sur le serveur? Ou les échecs sont apparus dans le journal des événements sur le serveur? Si oui, que disent exactement les événements? Qui les a enregistrés? Ton application? Ou Windows? Allez le découvrir et je pourrai peut-être ajouter des éclaircissements à ma réponse.
Je vais m'étendre ici sur la base de votre présomption que ces événements auraient dû être enregistrés par Active Directory d'une manière ou d'une autre ... et si vos pentesters n'exploitaient pas du tout une faille dans votre application, mais utilisaient à la place une faille très connue dans Kerberos pour énumérer les noms d'utilisateurs? Kerberos lui-même contient ce que je considérerais comme une faille de conception dans laquelle un attaquant peut tenter des milliers et des milliers de tentatives de "pré-authentification" (c'est-à-dire une attaque par force brute) et le KDC répondra différemment selon que le compte utilisateur existe ou non. Ce comportement n'est pas spécifique à Active Directory, mais s'applique tout aussi bien au MIT Kerberos, Heimdal, etc. Le KDC répondra parKDC_ERR_PREAUTH_REQUIRED
si un nom d'utilisateur valide a été présenté sans données de préautorisation, même sans tenter une authentification réelle. De cette façon, vous pouvez énumérer les noms d'utilisateur d'un KDC. Mais parce que l'attaquant (ou l'outil que l'attaquant utilise tel que KrbGuess - parce que les pentesters sont à leur meilleur lorsqu'ils utilisent les outils des autres), n'a pas à poursuivre une tentative d'authentification complète, rien n'est enregistré car aucun l'authentification réelle a été tentée!
Passons maintenant à votre prochaine question:
2) Sinon, quelle est la meilleure façon de surveiller et de détecter activement ce type d'attaque à l'avenir (avec un peu de chance sans avoir à acheter trop de nouveaux équipements).
Un certain nombre de choses.
Premièrement, il existe des produits payants de qualité professionnelle conçus pour détecter ce type d'attaques (entre autres). De nombreux fournisseurs proposent de tels produits, et les recommandations de produits sont hors sujet pour Serverfault, mais il suffit de dire qu'elles sont hors service Là. Beaucoup de ces produits fonctionnent en vous obligeant à configurer la mise en miroir des ports entre vos contrôleurs de domaine et ces «collecteurs de données» afin qu'ils voient et analysent littéralement chaque paquet entrant ou sortant de vos contrôleurs de domaine.
(Désolé, cela tombe un peu dans votre clause "sans acheter trop de nouvelles choses".)
Une autre chose qui pourrait vous aider est l'entrée de registre:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
LogLevel = 1
Documenté ici .
Si vous activez cette entrée de registre, vous devriez être inondé d'événements dans votre journal des événements de sécurité à propos des erreurs Kerberos qui mentionnent que la pré-authentification Kerberos est requise. Un exemple d'un tel événement:
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.
Mais cela peut ou peut ne pas vous aider s'il ne précise pas d'où viennent exactement le tsunami des requêtes Kerberos. Cela nous ramène aux produits de détection d'intrusion d'entreprise que j'ai mentionnés plus tôt.
Et n'oubliez pas le transfert d'événements Windows qui peut permettre à vos serveurs de transférer des événements vers un emplacement centralisé pour être analysés par n'importe quel outil dont vous disposez.
Jusqu'à présent, toute cette réponse était fondée sur le protocole Kerberos, que je ne peux même pas vraiment tenir pour acquis car vous avez donné si peu de détails dans votre message. Néanmoins, j'espère que cela aide au moins un peu.