新型弹性防御技术解析(上)

传送门:新型弹性防御技术解析(下)

 

写在前面的话

这篇文章是本系列的上集,本文主要讨论的是关于敌对弹性防御技术的高级策略。在本系列的下集中,我们会将本文所介绍的理论技术付诸于实践,并介绍详细的技术实现细节。

 

背景和介绍

在DEFCON 24黑客大会上,我和Will Schroeder以及Rohan Vazarkar共同发布了BloodHound【GitHub传送门】。从那时开始,BloodHound就已经被很多渗透测试人员以及红队组织所采用,而且社区也有专门的BloodHound论坛。如果你不熟悉BloodHound的话,可以先看看这篇介绍BloodHound的【文章】,或者直接观看我们的DEFCON演讲。但是之后我才发现,BloodHound对于攻击者来说也是一款非常强大的工具。
在这篇文章中,我们将跟大家讨论当前企业在保护自己活动目录环境时所面临的一些问题。接下来,我们还会告诉大家如何利用BloodHound未被开发的新功能来更有效地实现活动目录,这种方法具有高弹性等特点,并且能够抵御绝大部分攻击者的攻击。

 

企业环境安全响应的必要性

随着时间的推移,每一个活动目录环境都在变得更加复杂,因为其中涉及到复杂的Web用户权限以及用户行为。而攻击者常常可以利用这种复杂性,并利用目标账户来实施攻击。而很多企业也发现自己陷入了一种看似不可避免的安全补救循环之中,很多组织在受到攻击之后,都会提出相同的问题:他们是如何实现攻击的?接下来,组织可能会进行详细、彻底且漫长的调查,并获取到一份攻击调查报告,而研究人员会在报告中详细描述攻击者是如何一步一步入侵他们系统的。
下面给出一份样本报告:“一名用户受到了钓鱼攻击,而该用户拥有企业网络系统的本地管理员权限。攻击者窃取了内置的本地管理员密码,而网络中每一个系统都使用的是这个密码。攻击者从网络系统中找到了一个已经登录了Domain Admin账号的系统,然后利用Mimikatz从该系统中窃取了Domain Admin的凭证。”
随后,报告中还会根据调查研究的结果给出相应的建议:


这些建议没有任何问题,任何组织都应该这样做,但是任何一个在企业安全圈里混了很久的人都会知道,这些建议在实践中其实存在很多问题:

  1. 终端用户的安全意识需要培训:无论你说多少次,总会有人会点击那些他们所能看到的链接。
  2. 对本地管理员组的用户身份进行有效审计其实是很困难的,原因如下:本地管理员组分析工具功能不足,当本地管理员组新增成员时缺少警告提示,以及给大量用户提供了本地管理员权限等等。
  3. 在共享本地管理员权限账号的密码时,LAPS是一种有效的解决方案,但是从我们红队角度来看,大多数公司网络中都会有一些需要排除的主机。
  4. Credential Guard是一种缓解凭证窃取的有效措施,但是至少要运行Windows 10,而大多数组织的计算机运行的仍然是Windows 7。
    实际上,就算你可以完美地部署上述策略建议,那么当你一不小心遭受攻击时,攻击研究报告可能就会是这样的:“一名用户的密码被攻击者成功猜解。攻击者连接到了企业VPN,这里没有部署多因素身份验证。攻击者使用高权限服务账号登录进了系统,攻击者向服务账号所运行的进程注入了恶意代码,而这个服务账号拥有‘添加成员’权限,可以在Domain Admin组中添加用户。“
    而报告给出的相应建议如下:


在现实场景中,就算你部署了各种各样的安全防护措施,你也无法“堵上“所有的攻击路径。我们可以采用各种安全措施,但攻击者仍然会想办法成功入侵你的系统。这样一来,企业似乎陷入了一种无限循环之中,因为他们要不停地响应攻击者的攻击:

 

BloodHound的功能以及限制

一般来说,红队调查报告中会给用户介绍攻击者的攻击路径,而这些攻击路径中往往都包括横向渗透以及通过活动目录实现提权。而BloodHound的攻击路径非常丰富,其中包括凭证窃取、本地管理员提权以及安全对象控制等等。
下面给出的是一个简单的样本:KSperling是主机Desktop21的管理员,在Desktop21上登录了反病毒用户,而这个用户为Domain Admin。从攻击者的角度来看,他们可以利用KSperling用户登录Desktop21,然后使用Mimikatz来窃取反病毒用户的密码。


针对Domain Admin组的最短攻击路径图如下所示:


这里我们只给出了指向Domain Admin的最短攻击路径,当然了,攻击者也可以通过这种方式来禁用或删除用户账号,或者使用下列语句在Neo4j控制台上删除节点:

MATCH (u:User {name:’USER99@CONTOSO.LOCAL’}))
DETACH DELETE u

 

弹性应对方法

任何好的方法都需要有明确的目标,我们的弹性方法目标非常简单:

  1. 找出攻击者最有可能使用的所有攻击路径,并抢在攻击者之前去执行这些攻击路径。
  2. 显著减少攻击路径的数量。
  3. 对于我们无法消除的攻击路径,我们要想办法防止/缓解攻击。
  4. 维护一个高弹性的活动目录,用于抵御凭证窃取以及对象控制攻击。
    我们主要通过下列四个阶段来实现:

 

第一阶段:枚举攻击路径

第一阶段的目标就是要收集下列信息:

  1. 从所有加入的域中的系统里收集本地管理员组信息;
  2. 用户会话的位置;
  3. 从所有安全AD对象中手机ACE,包括用户、组和域对象;
  4. 活动目录域的信任对象;
    这一步可以使用SharpHound来完成,下载地址如下:【传送门】
    关于SharpHound的详细信息请参考【这篇文章】。

 

第二阶段:分析攻击路径

弹性技术的作用就是减少活动目录(AD)的攻击面,而BloodHound允许我们对任意节点的攻击路径进行分析。为了方便演示,我们选择最常见且任何组织都想要实现的目标:减少Domain Admin用户账号的攻击路径。首先,我们要收集一些跟Domain Admin相关的计算机以及用户信息。


目前,分析过程需要手动完成,而且比较繁琐,之后我们会自动化这个过程。
接下来,我们评估整个企业网络所拥有的攻击路径。比如说,下图显示的是企业中所有系统的漏洞情况,这个简单的网络有五台计算机,按照拥有漏洞的严重程度排序:


我们可以利用BloodHound数据来生成类似的图表,但这里我们要显示的是如果攻击者登录了其中一个系统,那么他还能入侵多少台计算机。下面这个简单的网络中有五台计算机,攻击路径会影响每一个系统,如果攻击者入侵了下面其中一台计算机(拥有本地管理员权限,并且内置本地管理员账号密码都一样),那么上面的四排计算机都会受到牵连。

在我们的样本数据库中,真实的图表如下。其中,攻击路径涉及到企业中超过12000台计算机

 

第三阶段:弹性假设生成

在样本数据库中,我们发现很多计算机都登录了Domain Admin,数量跟域中的计算机总数几乎相同。这是一种很常见的问题,一般来说,我们会限制Domain Admin或引入域控制器系统。
一般的假设为:如果我们采取下列措施,那么只有5%的用户和5%的电脑能够访问Domain Admin用户-限制Domain Admin只能在域控制器中登录。
下图显示的是在非域控制器系统中登陆的DA图:


接下来,我们就要想办法把这些会话(安全边际)从图中移除。我们可以直接在途中模拟出修改后的情况,下图显示的是企业网络中原本的攻击路径:


修改后的情况如下,绿色部分是已经移除的攻击路径:


在BloodHound样本数据库中,我们可以重新分析这份数据,并生成指向DA的新的最短攻击路径图:


下图显示的是域控制器中拥有本地管理员权限的安全组:


那么现在,我们就要在刚才的假设中加上一条:从域控制器中移除不必要的本地管理员权限!
修改之后的企业环境攻击路径分析图表如下:


修改后的攻击路径可视化图如下:


大家可以看到,绿色部分的面积增大了,意味着我们消除了上千条攻击路径。,不过剩下的蓝色区域仍然是可行的攻击路径。

 

第四阶段:修复处理优先级

最后一个阶段就是对第三阶段所发现的问题进行优先级排序,我们认为这项技术可以帮助企业有效地维护活动目录,而本技术所提供的高弹性特点可以有效抵御很多基于权限的攻击。简而言之,我们要尽可能多地找出攻击路径,并想办法消除它们的影响。下图显示的是企业环境下的攻击路径可视化数据图:


经过了四轮修复之后,攻击路径统计如下:

 

总结

这篇文章是本系列的上集,本文主要讨论的是关于敌对弹性防御技术的高级策略。在本系列的下集中,我们会将本文所介绍的理论技术付诸于实践,并介绍详细的技术实现细节,敬请期待。

(完)