提升AD安全性包括在允许黑客进入的环境中修复安全漏洞-但防御者首先需要确定这些漏洞是什么,而AD 的内置工具却使查看何种用户对何种系统和对象所获得的权限并不容易。如此多的安全问题,甚至其中一些非常危险,就这样被忽视了。 幸运的是,对防御者来说一些常见的 AD 安全问题一旦被识别出来就很容易修复。这些“唾手可得”的问题使防御者能够相对容易地降低其 AD 环境的暴露风险。以下是 AD 环境中三个最常见的安全问题,包括它们的影响以及防御者如何找到和修复它们。 我将使用BloodHound来进行演示,BloodHound 是一个免费的开源工具(我是共同开发者之一),用于映射 Microsoft Active Directory 和 Azure Active Directory,但您可以使用其他工具执行相同的步骤。
具有高级权限的 Kerberoastable 用户
Kerberoast(一种网络密码验证授权系统)攻击由安全研究员 Tim Medin于2014年首次确认。该攻击从AD中提取服务帐户证书的哈希值进行离线破解,并且可以由任何用户执行而无需向目标发送数据包。当目标环境中的高级权限用户暴露出易受这种攻击的漏洞时,被破解的帐户证书哈希值会给黑客提供一条夺取AD控制权的捷径。我和我的同事在我们检测的所有真实AD 环境中都发现了这个问题。 拥有高级权限用户在Kerberoasting上的漏洞会引发很大的安全风险,但仅使用 AD 的内置工具很难识别这些易受攻击的高级权限用户,这是因为 AD 无法凭经验确定任何用户的权限。AD 的界面不允许用户“打开”安全组的成员,并且组和组之间的嵌套使得跟踪具有特定权限级别的个别用户耗时又困难,也很容易出错并且造成遗漏。 在FOSS BloodHound中,这个过程要简单得多。使用FOSS BloodHound底部的“原始查询”栏可以显示最高风险的 kerberoastable 用户。
MATCH p = shortestPath((u:User {hasspn:true})-[*1..]->(g:Group)) WHERE g.objectid ENDS WITH '-512' RETURN p LIMIT 100
这将返回一个可视界面,展示这些Kerberoastable的高级权限 用户创建的攻击路径。此示例中的每个起始用户节点(屏幕左侧的绿色图标)都是 Kerberoastable 用户: 目标组是靠右边的黄色图标。如您所见,针对敌对目标,该组有许多可能的攻击路径可以选择。 为了关闭这些攻击路径,需要从Kerberoasting中保护每个易受攻击的用户(我建议从最接近Tier Zero资产的用户开始)。有两种方法可以做到这一点:
确保用户具有非常复杂的密码(64个随机字符)。 从用户中删除 SPN,采用配置关联服务为计算机帐户进行授权。域控制器对象所有权
域控制器对象权限应仅由域管理员拥有。但在大多数现实的 AD 环境中,它们并非如此。这个问题非常普遍(我所审核的大约 75% 的环境中都发现到它),因为它导致在AD 中创建对象的用户拥有域控制器对象的所有权。这是一个高风险性的配置,因为拥有域控制器对象的用户可以对这些对象创建新的攻击路径,而传统上的非域管理员帐户并没有得到很好的保护。 要确定这是否发生在网络上,请使用FOSS BloodHound 底部的“原始查询”栏查询:
MATCH (g:Group) WHERE g.objectid ENDS WITH '-516' MATCH p = (n:Base)-[:Owns]->(c:Computer)-[:MemberOf*1..]->(g) RETURN p
结果将是一个图形,显示在此 AD 环境中拥有域控制器计算机对象的各种主体。所有这些随机主体都有通向它们的攻击路径,这意味着它们在域控制器处结束。 要解决此问题,请执行以下步骤: 1.打开 Active Directory 用户和计算机。 2.启用高级功能。 3.找到每个域控制器对象。 4.右键单击属性-安全-高级,然后更改。 5.将每个 DC 的所有者更改为 Domain Admins 组。 整个过程不超过一个小时,并且不太可能影响AD中的任何其他关系或权限。
域用户、普通用户和已授权的可控其他对象的用户组
拥有任意权限的域用户、普通用户和授权用户主体可作为攻击路径的入口。这些组其实并不需要权限 – 它更容易为黑客所利用。通常,管理员试图通过授予一揽子特权来解决特定问题,这是另一种危险配置,但也易于补救。 首先,找到控制另一个主体的域用户组的所有情况。FOSS BloodHound 可以通过两种方式显示这一点。 选项一:在 GUI 中查找组并单击“Outbound Object Control”。 选项二:如果您正在运行多个 AD 域,则可以使用此命令启动所有实例:
MATCH p = (g:Group)-[{isacl:true}]->(m) WHERE g.objectid ENDS WITH '-513' RETURN p
解决此问题与上一个问题类似。在 Active Directory 用户和计算机中找到受影响的对象,调出其安全描述符,并删除“域用户”组是身份引用的违规 ACE。 识别和修复这三个问题完全在大多数 AD 或安全团队的能力范围内,即使没有后续工作,它们也会使 AD 环境更加安全。如果组织决定不关注 AD 安全,管理员可以(并且应该)通过解决这三个问题来发挥作用。
转载请注明:IT运维空间 » 安全防护 » 用BloodHound FOSS修复常见AD安全问题
发表评论