导语:过去这几年与客户的会面是十分有启发性的,因为虽然每个环境都很独特,但往往却遇到了同样的问题。这些问题往往归结为企业使用了十年以上的旧版微软管理平台。

过去这几年与客户的会面是十分有启发性的,因为虽然每个环境都很独特,但往往却遇到了同样的问题。这些问题往往归结为企业使用了十年以上的旧版微软管理平台。

我在今年的几个安全会议上谈到了Active Directory攻击和防御,包括BSides,Shakacon,Black Hat,DEF CON和DerbyCon。这些演讲包括了有关如何最好地保护企业Active Directory免受最新和最成功的攻击媒介的攻击的一些信息

虽然过去十年里的威胁发生了很多变化,但系统和网络的管理方式往往没有太大变化。尽管内部系统经常会受到影响,但我们仍然继续采取了相同的措施和支持方式。我们必须拥抱“ 承担违约责任 ” 这个新的现实。

“承担违约责任”意味着我们必须假设攻击者可以控制内部网络上的计算机,并且可以访问到最近登录到该计算机的用户访问过的相同资源。

请注意,当我描述Active Directory的风险和缓解措施时,这包括了企业的整体配置情况。这里有一些非常严重的AD安全问题(正如我所看到的)。此列表并不完整,但能够反映出企业常见的一些安全问题。当我为组织执行Active Directory安全性评估时,我仍然发现了很多此类安全问题。

把Active Directory域当作安全边界

这会影响安全控制的设计,并可能会引入一些安全漏洞。Active Directory林可能设计有多个域,目的是解决某些安全问题,但是由于域中的域信任在林中的一些作用,从而导致这实际上并不会解决安全问题。如果一个组由于安全原因而对自己所在的域具有安全性的要求,那么很可能他们真的需要所在的整个林。在进行设计更改之前,请务必确保考虑了额外的部署和管理复杂性。

Microsoft描述了什么是AD林:

林是Active Directory的完整实例。每个林充当着顶层容器,它容纳该特定Active Directory实例的所有域容器。林可以包含一个或多个域容器对象,所有这些对象共享了一个通用的逻辑结构,全局目录,目录模式和目录配置以及自动双向传递信任关系。林中的第一个域称为林根域。该域的名称指的就是林,例如Nwtraders.msft。默认情况下,Active Directory中的信息仅在林内共享。这样的话,林是Active Directory实例中所包含的信息的安全边界。

使用默认设置部署系统

这通常被称为“违约暴政”。不要以为默认的安全设置是最安全的。Microsoft专注于包括旧版本在内的产品之间的兼容性。这意味着你需要调整安全设置来提高安全性。较新版本的Windows中通常有更多具有有限权限(和自动运行状态)的安全默认设置和服务。使用传统的安全配置仍然是现代网络中最大的安全问题之一。

域管理员太多

Active Directory的管理通常由少数人来执行。域管理员(DA)的数量通常会超过实际的AD管理员人数的数量。默认情况下,Domain Admins成员对所有工作站,服务器,域控制器,Active Directory,组策略等都具有完全的管理权限。对于现代企业中的任何一个帐户来说,这给的权力太大太多了。DA通常包含服务帐户和与AD管理不直接相关的其他组。理想情况下,DA组应该为空,以确保每个角色仅具有执行与该角色相关的任务所需要的一些权限。Active Directory管理员只需要提供完整的AD管理员权限以及域控制器管理员权限的域“ 管理员 ”组的成员资格即可。除非你正在积极的把管理Active Directory作为服务,否则你不应该在域管理员组中。对于管理员而言,拥有活跃的域管理员帐户是一种安全隐患,而将 “碎玻璃片”式的域管理员帐户的凭据存储在一个安全的地方则是一个有效的预防措施(通常是默认的域管理员帐户)。

域管理员组的成员设置的很少是很有必要的。

不跟踪,监视或记录对Active Directory的授权访问行为

管理Active Directory和相关资源的最佳方法是创建自定义的组并委派这些组的特定访问权限。如果这样做没有得到正确的计划和执行,那么这个组可能会失去控制,从而能够为计划中的帐户提供更大的资源访问权限。你需要对组及其访问权限进行定期的审核,以便正确的确保Active Directory的安全性。不要使用现有的默认组来委派自定义组的访问权限(例如“Account Operators”组中的“Help Desk”的成员),因为默认组提供的权限实际上比通常所需要的权限更多更大。

可以适当地利用授权来确保每个管理组的权限是合适的。这需要你收集真正需要的权限,并将其转换为系统的访问权限。

过度使用的服务帐户

从以往的一些案例来看,雇主在服务帐户方面可能仍然需要域管理员权限,即使实际上并不需要域管理员的所有权限,尽管拥有域管理员权限后能使产品更容易测试和部署。提供给服务帐户的附加权限可能会被恶意使用从而导致网络上的特权提升。有一点非常重要,那就是确保每个服务帐户只能授予所需要的权限,而不必再次授权。请记住,在服务帐户的上下文中运行的服务在LSASS(受保护的内存)进程内存中存储着可以被攻击者提取的一些登录凭据。如果被窃取的凭证具有管理员权限,则由于单个服务帐户的安全问题,导致该域可能会被迅速入侵。

密码长度小于20个字符的服务帐户

如果域支持Kerberos身份验证,那么请求使用服务帐户密码加密的一些数据(TGS服务票证)时,可能会出现安全问题,并且此数据攻击者可以离线爆破最终破解出用于加密的密码。这意味着服务帐户密码可以被离线猜解,并用于提升凭据权限。

对此问题的最简单的解决方案是确保所有的服务帐户都设置了至少20个字符(或更多)长度的密码。配置细粒度的密码策略实施服务帐户密码长度最有效的方法。细粒度密码策略仅在将域功能级别配置为Windows Server 2008或更高版本后才可使用。

使用组策略首选项来管理凭据(请不要这样做)

组策略首选项提供了在计算机上更改本地管理员帐户密码,创建本地帐户,使用凭据部署计划任务,使用凭据创建服务等许多功能。问题是,当凭据存储在位于域中的每个域控制器上的SYSVOL共享中的XML文件中时,凭据密码数据就可以轻松地攻击者获取

如果你使用组策略首选项并在策略中输入了密码,请删除该策略并删除该文件。Microsoft包含一个PowerShell脚本,用于在组策略首选项的XML文件中扫描SYSVOL共享中的密码数据。
组策略首选项是管理Active Directory资源非常有用的工具; 但是,不要在组策略中存储凭据。

在域控制器上运行了非必要的角色和服务

域控制器应该安装少量的软件和代理程序,包括角色和服务。在域控制器上运行的非必需代码是企业Active Directory环境面临的一大安全风险。域控制器只能运行必要的软件和服务以及对基本操作至关重要的一些角色,如DNS。

域控制器未及时打补丁

如果关键的补丁未及时应用于所有的域控制器,那么整个域和林将面临严重的安全风险。MS14-068就是一个很好的例子,它很好的说明了不好好的打补丁可能会危及整个AD林。

未打补丁的系统(服务器和工作站)。

根据2015年初发布的“2011年Verizon数据泄露的调查报告”,99%的被利用的漏洞的补丁都出来一年以上了。实际上,每个组织都需要在几天之内快速确定如何快速的部署所有系统的关键或高级别的补丁,并在此后尽快的部署严重性较低的补丁。未修补的本地权限提升漏洞使攻击者能够在计算机上快速的获得管理员权限,这通常会导致凭据被窃取。在供应商发布补丁后的几个月内没有修补的系统在当前的威胁环境中是不现实的,特别是对于高危和严重级别的补丁。

域控制器未运行“最新”的操作系统版本

随着Windows Server推出了连续的新版本,Microsoft已经加强了Server版本的安全性增强功能,大大提高了Active Directory的安全性。一旦安装了操作系统,就可以使用这些安全功能,并且当域或林的功能级别设置为较高的级别时,其他安全功能也可以用了。

按照Windows版本中所列出的Active Directory域功能级别的一些安全功能:

Windows Server 2008 R2域功能级别:

·  Kerberos AES加密支持

o   允许从支持的类型中删除RC4 HMAC Kerberos加密。请注意,Windows 7和Windows Server 2008 R2 不再支持Kerberos DES加密

·  托管服务帐户

o   AD控制服务帐户密码。

·  认证机制保证

o   使用智能卡进行身份验证时,用户会成为其他组的成员

Windows Server 2012域功能级别:

·   组托管服务帐户

o   AD控制服务帐户密码。

·   复合认证和Kerberos FAST(Kerberos装甲)

o   组合用户和设备认证

o   保护Kerberos AS和TGT请求。

Windows Server 2012 R2域功能级别:

·  身份验证策略和仓库

o   保护特权帐户,限制他们可以登录的位置。

·  受保护的用户安全组

o   PDC设置为Windows 2012 R2创建组

o   受保护用户主机保护(Win 8.1 / 2012R2)防范:

§  使用NTLM,Digest认证或CredSSP进行身份验证。

§  缓存凭证

§  Kerberos预认证中的DES或RC4加密类型。

§  帐户委托。

o   受保护的用户域强制执行:

§  NTLM身份验证

§  Kerberos预认证中的DES或RC4加密类型。

§  被委任为无约束或限制委托。

§  在最初的四小时生命周期之后更新Kerberos TGT。

多台计算机上的本地管理员帐户密码是相同的

计算机上的本地帐户是否能够登录到该本地计算机,无论它是否已加入Active Directory。有趣的事情是,如果在多台计算机上存在着用户名和密码都相同的管理员帐户,那么登录到该计算机的管理员可以使用相同的凭据连接到另一台计算机。这意味着如果攻击者在一台计算机上获得了本地管理员的访问权限,并且可以使用该证书连接到其他计算机,则很可能会损害到其他计算机。当攻击者在多台计算机上拥有管理员权限时,那么要找到具有提升权限的域凭据也只是时间问题。

现在至关重要的事情是确保在网络上的每台计算机上的本地管理员的密码都是唯一的。Microsoft LAPS是利用现有Active Directory功能实现此方案的一个无成本的方式。

Active Directory管理员登录到了不受信任的系统(非DC,常规工作站,服务器等)

如果你这么做,恶意代码将会进入到网络中的计算机中。攻击者利用恶意软件,将搜索并窃取和重新使用登录凭据。如果特权帐户登录到了网络上的各种其他计算机上,那么系统上的凭据可能被窃取。限制系统使用具有特权的凭据显式登录到(交互式登录)其他计算机,确保这些凭据对攻击者可能访问的系统不可用。换句话说,将管理员隔离到仅可以管理系统以及特殊的管理工作站,这可以保护管理员凭据免受凭据窃取。

不监控管理员组的成员

大多数组织意识到,具有管理员权限的帐户数量每年增都在加,要么是每月都在增加,总之不会下降。
需要仔细检查Active Directory中的管理员组,特别是在添加新帐户时。更好的一个方法是,在将新帐户添加到管理员组中之前,使用需要批准的系统。该系统还可以在批准的访问权限到期时从用户组中删除用户。这个自动化的系统,可以使管理员组保持空的状态,直到需要相关的访问权限,这是限制和保护管理员组成员身份的最佳方法。

不清除管理员组的成员 – 确保不再需要管理员权限的帐户已经被删除。该项目与前一个项目密切相关。
需要定期检查管理员组的成员,可以删除不再需要相关权限的帐户或组。可以利用上一个项目中提到的系统来确保只有当前批准的成员才可以在管理员组中。

没有使用平台中提供的最新的安全功能(较新的操作系统或通过补丁进行的增强功能)

随着微软发布了新的操作系统,有更新的安全功能加强了环境的安全性。此外,还有一些补丁,包括改进默认情况下不会设置的一些安全设置,这些设置应该进行一些研究,以确定新的设置应该怎么被应用。一个很好的例子是“后端口”补丁KB2871997。使用老版本的Windows会限制环境的整体安全状态。

不自动删除不活跃(过期)的用户和计算机帐户

在Active Directory中启用了不活跃的用户帐户是对攻击者最有吸引力的目标。这是因为一个不活跃的用户帐户可以被利用进行访问资源而不被管理员注意到,因为它是一个有效的帐户。假定在发生这种情况之前需要对帐户进行控制,但是仍然有一些办法可以接管这个帐号。由于它是一个不活跃的帐户,所以不再是帐户的所有者,因此这类账户的使用一般不会被注意到。

保持传统身份验证在网络上处于活动状态(LM / NTLMv1)

Windows Server 2008 R2包含了一些功能,用于在网络上帮助确定NTLM身份验证。完全删除这些传统的身份验证协议是非常重要的,因为它们不安全。可以通过使用组策略安全设置激活删除和预防LM和NTLMv1的使用。
可以计划至少迁移到NTLMv2和Kerberos,长期来看最好是Kerberos(尽管这不会解决所有的安全问题)。

过于信任 – 没有适当的安全控制的信任或过于信任

林和域的信任需要定期的重新评估(可能是一年一度的),以确保它们仍然是有必要存在的,且处于正确的类型(是双向信任真正需要的类型),再做好安全控制就足够了。如果未将信任关系配置为SID过滤(隔离区),则可能无法很好地了解安全风险。此外,重要的是一个评估是“ 选择性的身份验证 ”是否适合在任何或所有现有的信任上进行启用。要问的第一个问题是,“如果我删除这个信任,会受到什么影响?”如果答案是“我不知道”或“我不确定”,可能最好是禁用或删除信任关系。

未隔离关键的服务器等网络资源

大多数内部网络是平面型的:任何计算机通常都可以连接到任何其他计算机,这意味着任何工作站都可以经常连接到任何服务器,包括关键资产,如金融或人力资源数据库。鉴于目前的威胁情况,这种范式需要得到改变。关键的服务器不适合被网络上的一些随机的计算机直接访问。

考虑到一些“关键任务”的服务器通常运行着Windows 2003或更老的版本,并允许内部网络上的任何计算机进行连接。这是一个“非常糟糕的事情”。至少可以做到的是将这些系统的连接限制为仅需要访问的系统(包括根据需要进行代理访问的系统)。

源链接

Hacking more

...