AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 766131
Accepted
Doug
Doug
Asked: 2016-03-26 09:13:05 +0800 CST2016-03-26 09:13:05 +0800 CST 2016-03-26 09:13:05 +0800 CST

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

  • 772

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

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

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

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

谢谢你的帮助。

windows
  • 2 2 个回答
  • 5811 Views

2 个回答

  • Voted
  1. Best Answer
    Ryan Ries
    2016-03-26T17:21:36+08:002016-03-26T17:21:36+08:00

    好问题。

    首先,我认为大多数“渗透测试人员”都是脚本小子。我的偏见可能不公平或不准确,但我提出这个免责声明是为了如果你在我的语气中发现任何玩世不恭的态度,你就会知道它来自哪里。我并不是说没有熟练的渗透测试者,但这是我的普遍性。

    (终生蓝队!)

    我的问题: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.
    

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

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

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

    • 11
  2. Sawta
    2016-03-26T10:34:47+08:002016-03-26T10:34:47+08:00

    这是一个有趣的问题,我很想听到正确的答案。我遇到了一些 Doug 可能会觉得有帮助的信息,但是,我觉得它可能有点不足。其他人可能可以提供一个扩展的答案:

    登录到您想要存储审计信息的服务器, 运行 -> RSOP.MSC -> 计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 审计策略 -> “审计帐户登录事件” & “审核登录事件”

    “帐户登录事件”的说明如下:

    审核帐户登录事件

    此安全设置确定操作系统是否在此计算机每次验证帐户凭据时进行审核。

    每当计算机验证其具有权威性的帐户凭据时,都会生成帐户登录事件。域成员和未加入域的机器对其本地帐户具有权威性;域控制器对域中的帐户都是权威的。凭据验证可能支持本地登录,或者,对于域控制器上的 Active Directory 域帐户,可能支持登录到另一台计算机。凭据验证是无状态的,因此帐户登录事件没有相应的注销事件。

    如果定义了这个策略设置,管理员可以指定是只审计成功、只审计失败、成功和失败,还是根本不审计这些事件(即既不成功也不失败)。

    “登录事件”的解释如下:

    审核登录事件

    此安全设置确定操作系统是否审核尝试登录或注销此计算机的用户的每个实例。

    每当终止登录用户帐户的登录会话时,都会生成注销事件。如果定义了这个策略设置,管理员可以指定是只审计成功、只审计失败、成功和失败,还是根本不审计这些事件(即既不成功也不失败)。

    如果您只想监控失败的尝试,您基本上需要启用这些策略、定义策略设置并选择“失败”。如果你愿意,你也可以监控成功,但如果你只是担心寻找这种攻击,它可能会使解析变得有点困难。

    如果您担心您的系统可能容易受到类似配置的影响,我建议您查看 STIG 设置(链接),当与 SCAP 扫描程序一起使用时,它确实有助于突出您的组织可能存在的一些风险面对。STIG 查看器往往会引发一些误报,但如果您阅读每个问题的具体内容,您可能会发现它不是首发。

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve