导语:在这部分中,我们将把这种方法付诸于实践,并向您展示如何完成本文所涵盖的所有内容的基本技术细节。
有关运行SharpHound的详细信息,请参阅本系列博客文章中的“阶段1:枚举攻击路径”部分。
阶段2:分析攻击路径
弹性方法论全部都是关于减少Active Directory中的攻击面,而BloodHound有助于你分析针对任何节点所传入的攻击路径。如果你需要保护一套特定的系统,你可以这样做。如果你需要减少域之间的攻击路径,你也可以这样做。你的分析阶段应该由你的弹性目标是什么所驱动。为了演示该方法论,我们将选择任何组织都会拥有的非常普遍的通用目标:减少导致Domain Admin用户帐户受到攻击的攻击途径。首先,我们将收集一些关于能够渗透到域管理员路径的计算机和用户数量的统计信息。有关如何生成这些统计信息的详细信息,请参阅本系列博客文章的“阶段2:分析攻击路径”部分。
目前,分析阶段的大部分工作都是手动的,可能需要对用户组成员,本地管理员权限,用户会话和对象控制边缘进行一些相当乏味的检查。未来,我们希望能够自动化这一过程,但现在,请卷起袖子吧,尽可能舒适地使用BloodHound用户界面和Cypher。
我们还可以在单个图表中衡量整个企业的攻击路径的可能性。为此,我们可以从漏洞管理学科中学习,该学科具有相当成熟的可视化来进行度量,例如企业中所有系统上存在的漏洞。高度简化的图表可能如下图所示:
上图:由五台计算机组成的简单网络,按每个系统上存在的高危重要漏洞数排序。
我们可以使用BloodHound的数据生成一个非常相似的图表,但我们不想显示每个系统有多少个漏洞,而是想知道如果攻击者登录到每个系统上会有多少系统可能受到攻击。例如,考虑一个所有用户都拥有本地管理员权限的网络,并且所有系统上内置的本地管理员的密码都是相同的:
上图:在由五台计算机组成的同一个简单网络中,每个系统都有可能到达所有其他四台计算机的攻击路径。水平轴下方的五台电脑是我们网络中的电脑,横轴上方的四台电脑是通过这五台电脑中的任意一台启动的攻击路径可达到的系统数量。
在我们的示例数据库中,当前真正的图表如下图所示:
上图:来自企业中所有12,000+台计算机的攻击路径的可能性。请注意,纵轴的比例是对数,因此图表在高值时被高度压缩。
记住这张图表,因为我们将在下一部分用到它。
阶段3:产生弹性假设
你在攻击路径分析阶段获得的洞察力会产生你的弹性假设。在示例数据库中,我们观察到Domain Admins登录到许多计算机上,相对于域中的计算机总数来说,这是一个相当常见的问题,渗透测试人员或红队的典型建议可能是将域管理员仅限于PAWS(特权访问工作站)或域控制器系统。
我们可能正式表达我们的假设为:
如果我们采取以下行动,那么只有5%的用户和5%的计算机应该能够访问域管理员用户:
– 限制域管理员帐户只登录到域控制器。
弹性方法使我们能够高效并准确地衡量上述建议的效果,然后再在我们的实际网络中实施它。在Cypher中,我们可以发现域管理员登录的所有系统,其中这些系统不是域控制器。有关技术细节,请参阅本系列博客文章中的“阶段3:生成弹性假设”。
上图:登录到非域控制器系统上的DA图。
下一步是采取所有这些攻击会话,并从图中删除它们。这将让我们重新衡量图中的攻击路径的可能性并生成新的指标。在Cypher中,我们可以通过修改原始查询来有效地删除这些边缘,这次可以删除有问题的边。此时,你可能需要创建图形数据库的副本,以便可以根据需要回滚到原始副本。
有关的技术细节,请参阅本系列博客文章中的“阶段3:生成弹性假设”。
现在我们在图中模拟了这种变化。回想一下,之前我们生成了以下图表,其中显示了企业中任何系统的攻击路径的可能性:
现在,我们已经删除了被入侵的用户会话边缘,删除后的图表如下:
上图:删除有问题的用户会话边缘后的企业级攻击路径可能性图表。绿色区域表示已被删除的攻击路径。
虽然我们已经取得了一些进展,但可能还没有达到我们所希望的目标。在一个真正的企业网络中,可能有成千上万的原因,为什么这种变化没有我们预期的那么有效。在BloodHound示例数据库中,我们可以重新分析这个新的图,看看DA的最短路径是什么样的:
上图:新的DA的最短路径,现在DA不再登录到非域控制器系统。
仔细检查此图,我们可以看到确实存在要求转向域控制器系统的攻击路径,并且使得这些路径的边缘遍历了15个安全组,这些安全组都具有这些域控制器的本地管理员权限:
上图:多个安全组对域控制器具有本地管理员权限。
仔细检查这些安全组对本地管理员的权限,我们可以决定哪些安全组实际上需要DC的本地管理员权限,哪些不需要。我们可以再次模拟修改这些安全组对DC的本地管理员权限,以便只保留所需的权限。在这一点上,我们可以调整我们的正式假设陈述来反映这种变化:
如果我们采取以下行动,那么只有5%的用户和5%的计算机应该能够访问域管理员用户:
– 限制域管理员帐户只登录到域控制器。
– 删除域控制器上不必要的本地管理员权限。
在模拟图中的变化之后,我们可以再次重新生成我们的域管理员暴露指标,并重新生成我们的企业级攻击路径分析图:
这一进展在一张表格上看起来不错。对攻击路径分析的可视化又如何呢?
上图:删除有问题的用户会话边缘后的企业级攻击路径可能性图表。绿色区域表示已被删除的攻击路径。
那一块很大的绿色部分表明我们已经消除了企业中任何系统可能遇到的数千条攻击路径。剩余的蓝色区域表示攻击路径仍然可行,但我们正在靠近红色虚线目标。
阶段4:部署优先的修复方案
弹性方法论的最后阶段是在假设生成阶段将你发现的优先修复程序置于有效状态,并将它们在真实环境中投入使用。当然,这个阶段的时间与通常情况下的时间相同,但关键在于知道这些变化在实现之前会发生多大的有效作用。
我们相信,使用弹性方法可以帮助企业高效地实现和维护一个Active Directory,这个Active Directory可以抵御当前流行的滥用特权攻击; 简而言之,这种方法可以确定所有攻击路径并尽可能多地消除威胁。随着时间的推移,通过正确的分析,我们已经看到了一个真实的环境。
上图:最初的企业级攻击路径可视化。如果攻击者渗透到了任何系统上,那么网络中的每台计算机都有可用的攻击路径。
…在此之后,补救方法只有四个周期:
上图:一小部分系统为DA提供了一条攻击路径,网络中其余的攻击路径是已知的,并通过其他控件缓解。
期望的最终状态
Active Directory 攻防对抗的对手弹性方法论的最终目标正是以它的名字命名的:实现并维护一个对智能对手具有高度弹性的Active Directory。关键在于,Active Directory的弹性应该被详尽地理解,经验性地测量并有效地改进。凭借该方法提供的深入知识和洞察力,组织可以将总体攻击面减少到可管理的问题集,了解并缓解剩余的攻击面。此外,了解剩余的关键地形(即:继续提供最大风险的系统)将使组织能够更加自信地将更高成本的监视资源,搜寻操作以及不可扩展的补偿控制分配给该系统子集。
未来的工作
我们有几个针对未来的弹性方法论的计划。最重要的是尽可能多地自动化阶段3(攻击路径分析)。目前这个阶段是高度手动的,需要熟悉Cypher和Active Directory安全最佳实践。这一阶段的自动化将进一步使企业能够完成自己的内部弹性实践。
另外,我们希望随时跟踪攻击路径的变化。如果由于环境中的某些更改而出现新的攻击路径(如将用户添加到安全组)或登录到计算机上的高权限用户,则时间感知将使企业能够自动收到警报。
最后,我们将为BloodHound添加更多节点和边缘类型,包括GPO和OU结构。我们还希望通过博客介绍如何添加自己的自定义节点,边缘,节点属性和边缘属性,并运行分析,使你能够在分析攻击路径时考虑这些新数据点。
如果你对弹性方法有任何疑问,请随时通过[email protected]与我联系,或加入我们的BloodHound Slack,1200多名用户的社区乐于提供帮助:http://bloodhoundgang.herokuapp.com