跟踪蛮力用户名枚举/失败的用户名尝试 AD 的最佳方法

Dou*_*oug 9 windows windows-server-2008 active-directory

我们有一个 Windows Server,它上面有一个应用程序,它在登录到应用程序时使用域凭据。在最近的一次渗透测试中,测试人员能够使用该应用程序,以便根据应用程序的响应枚举有效的域用户名(对于无效的用户名和无效的密码,它给出了不同的响应)。

应用程序正在修复中,所以它不会透露这些信息,但我也觉得我们应该检测到这种攻击,因为在短时间内有超过 2000,000 次无效用户名尝试。我们没有看到它,即使我们的管理员正在密切关注 Active Directory。显然,故障只出现在安装应用程序的服务器的本地事件日志中。

我的问题:1) 有没有办法让 Active Directory 将这些失败的用户名请求记录在一个中心位置,以便我们可以注意到它们的峰值?

2)如果没有,未来监控和主动检测此类攻击的最佳方法是什么(希望不必购买太多新设备)。

谢谢你的帮助。

Rya*_*ies 11

很好的问题。

首先,我认为大多数“渗透测试人员”都是脚本小子。我的偏见可能不公平或不准确,但我提出此免责声明,以便如果您发现我语气中的任何愤世嫉俗,您就会知道它来自哪里。我并不是说没有熟练的渗透测试人员,但这是我的概括。

(终身蓝队!)

我的问题:1) 有没有办法让 Active Directory 将这些失败的用户名请求记录在一个中心位置,以便我们可以注意到它们的峰值?

您没有提供足够的信息让任何人都能够彻底和自信地回答这个问题。你说你的应用程序被发现包含一个允许攻击者枚举用户帐户的缺陷。我试图了解您认为 AD 需要以何种方式为您的应用程序执行日志记录。

显然,故障只出现在安装应用程序的服务器的本地事件日志中。

显然,服务器上的事件日志中出现了故障?或者故障确实出现在服务器的事件日志中?如果是这样,事件究竟说明了什么?谁记录了它们?你的申请?还是窗户?去找出答案,我也许可以为我的答案添加额外的说明。

根据您的假设,这些事件应该由 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.
Run Code Online (Sandbox Code Playgroud)

但是,如果它没有指定 Kerberos 请求海啸的确切来源,这可能对您有帮助,也可能无济于事。这让我们回到我之前提到的那些企业入侵检测产品。

并且不要忘记 Windows 事件转发,它可以让您的服务器将事件转发到一个集中位置,以便您可以使用任何工具进行分析。

到目前为止,整个答案都基于 Kerberos 协议,我什至不能认为这是理所当然的,因为您在帖子中提供的细节太少。尽管如此,我希望这至少有一点帮助。