好问题。
首先,我认为大多数“渗透测试人员”都是脚本小子。我的偏见可能不公平或不准确,但我声明了这个免责声明,这样,如果您发现我语气中的任何愤世嫉俗,就会知道它的来历。我并不是说没有熟练的测试者,但这是我的全面概括。
(蓝队一生!)
我的问题:1)有没有一种方法可以使Active Directory在中央位置记录这些失败的用户名请求,以便我们注意到它们的激增?
您没有提供足够的信息来让任何人能够彻底,自信地回答这个问题。您说您的应用程序被发现存在一个漏洞,该漏洞使攻击者可以枚举用户帐户。我想在你的感觉方式,广告必须为执行日志记录,以了解您的应用程序。
显然,故障仅在安装应用程序的服务器的本地事件日志中显示。
显然,故障显示在服务器上的事件日志中吗?还是失败确实显示在服务器上的事件日志中?如果是这样,这些事件到底是怎么说的?谁记录了他们?你的申请?还是Windows?找出答案,我也许可以在答案中添加更多说明。
根据您的推测,这些事件应该已经由Active Directory记录下来,我将在这里走出一条弯路……如果您的渗透测试者实际上根本没有利用应用程序中的缺陷,那该怎么办? Kerberos本身枚举用户名的一个众所周知的缺陷?Kerberos本身包含我认为的设计缺陷,攻击者可以在其中尝试成千上万的“预身份验证”尝试(即蛮力攻击),而KDC会根据用户帐户是否存在做出不同的响应。这不是特定于Active Directory的行为,但同样适用于MIT Kerberos,Heimdal等。KDC会以KDC_ERR_PREAUTH_REQUIRED
如果提供的有效用户名没有预验证数据,即使没有尝试实际验证也是如此。这样,您可以从KDC枚举用户名。但是由于攻击者(或攻击者使用的工具,例如KrbGuess-因为渗透测试者在使用其他人的工具时处于最佳状态)不必继续进行完整的身份验证尝试,因此不会记录任何内容,因为没有尝试进行实际身份验证!
现在,转到下一个问题:
2)如果不是,那么将来监视和主动检测此类攻击的最佳方法是什么(希望不必购买过多的新设备)。
有几件事。
首先,有付费的企业级产品旨在检测这类攻击(以及其他类型的攻击)。许多供应商都提供了此类产品,并且Serverfault的产品推荐是不合时宜的,但足以说明它们已经存在那里。这些产品中的许多产品都需要您在域控制器和这些“数据收集器”之间配置端口镜像,以便它们可以查看和分析从字面上看每个进入或退出域控制器的数据包。
(对不起,这属于您的“无需购买太多新东西”子句。)
可能对您有所帮助的另一件事是注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
LogLevel = 1
记录在这里。
如果启用此注册表项,则应该在安全事件日志中充斥有关Kerberos错误的事件,这些事件提到需要Kerberos预身份验证。此类事件的示例:
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.
但是,如果未指定Kerberos请求的确切海啸来自何处,这可能对您有所帮助,也可能没有帮助。这使我们回到了我前面提到的那些企业入侵检测产品。
并且不要忘记Windows事件转发,它可以使您的服务器将事件转发到集中位置,然后使用您可以使用的任何工具进行分析。
到目前为止,整个答案都是基于Kerberos协议的,我什至不能将其视为理所当然,因为您在帖子中没有提供太多细节。不过,我希望这至少可以有所帮助。