导语:几周前,一家价值十亿美元的网络安全公司——CyberArk,在特权账户安全领域发布了有关企业组织如何查找识别Active Directory中是否存在危险“影子管理员”帐户的指导方案。
几周前,一家价值十亿美元的网络安全公司——CyberArk,在特权账户安全领域发布了有关企业组织如何查找识别Active Directory中是否存在危险“影子管理员”帐户的指导方案。
这是他们的博客文章—— 影子管理员账户 – 你应该最害怕的隐形账户。
为了帮助CyberArk的网络安全专家,并帮助数千家企业组织的所有IT和网络安全专业人员更好地理解本文谈及的主题,今天我将向你展示如何正确的识别出Active Directory中的“影子管理员账户”。
这是以下内容的第二部分,因此你绝对有必要阅读这篇文章—— CyberArk: 特权账户安全指导
先决条件:要遵循这篇文章中的内容和共享的例子,你需要阅读以下内容:
背景介绍
众所周知,世界上85%以上的机构都在微软的Windows Server平台上运行,而在由Windows Server支持的IT基础架构中,微软活动目录是网络安全和特权访问的核心。
Active Directory 不仅存储和保护Windows网络中功能最强大的管理/特权帐户,而且也是管理委派的焦点,在过去的17年中,大多数企业组织在Active Directory中都进行了大量的访问配置,既要委派管理权限又要满足业务需求。
因此,一般来说,Windows网络中有三个特权访问级别 :
1. 对加入域的计算机进行本地管理/特权访问
2. 在Active Directory中授予管理访问权限
3. Active Directory中的无限制特权访问(帐户和组)
在这三个级别的特权访问中,一级权限是最不强大的,三级权限是最强大的。二级权限非常有趣,因为根据访问配置或授权,许多处于上述二级的访问权限持有者可能都不知道,实际上他可以拥有三级的访问权限!
现在,重点说明一下可能不是Active Directory中的任何默认管理(特权)访问组的成员的二级权限帐户。
如果这些二级权限帐户中的任何一个直接或间接地对一个或多个三级帐户或组具有某些修改访问权限,则即使它们不是Active Directory中的任何默认管理(特权)访问组的成员,仍然有访问权限,就等于是在Active Directory中拥有无限制的特权访问权限,CyberArk的专家称之为“影子管理员账户”。
此外,由于这些帐户不是任何默认的管理Active Directory组的成员,并且大多数企业组织在Active Directory中识别特权账户的做法是列举这些默认的管理员组的成员身份,因此在大多数企业组织中,所有的这类帐户很有可能不会被检测到,即使是熟练的入侵者都知道如何识别这些帐户,他们也可以轻易识别并随后利用这些帐户,轻松地获得对整个企业组织的完全控制权!
直到此时,CyberArks的指导方案是准确的。
Active Directory有效权限
现在想象这样一个场景——考虑一个普通用户John Doe的域用户帐户。假设他不是Active Directory中的任何默认的管理员(特权)用户组的成员。再进一步的假设在Domain Admins组的ACL中,他直接被授予了以下Active Directory安全权限 – { Allow John Doe Write-property Member }
基于上述假设,你认为John Doe能够修改Domain Admins组的成员吗?
大多数IT人员,包括CyberArks专家都会说 – YES!
但是,如果你问一个活动目录安全专家,他的答案将是 – 也许。(它依赖于一些条件)
所以,它依赖于什么呢?
考虑一下。假设在Active Directory中有一个名为Active Directory Security Novices的安全组,并假定此安全组不是任何默认的Active Directory管理组的成员。但是,我们假设也许在几个月前,某人在Domain Admins组的ACL中指定了以下几个安全权限中的某一个:
1. { Deny Active Directory Security Novices Write-property Member } OR 2. { Deny Active Directory Security Novices Write All Properties } OR 3. { Deny Active Directory Security Novices Full Control }
现在,如果你问一个活动目录安全专家,他的答案仍然是 – 也许。(这取决于什么呢?)
可能是因为它取决于这些拒绝权限是显式的(即直接在对象的ACL中指定)还是继承的,以及允许 John Doe的权限是显式的还是继承的。
如果这些拒绝权限是显式的,那么即使在Domain Admins组的对象的ACL中存在对John Doe 的{ Allow John Doe Write-property Member }权限,John Doe也将无法更改该组的成员资格!
我刚才与你分享的是一个非常简单的Active Directory有效权限的例子。
因此,如果你只是“搜索并分析每个账户”的ACL权限,那么显然你很容易得到“不准确”的结果,并且在安全性方面,一个误判甚至可能意味着安全与突破之间的巨大差别!
这就是为什么我说:CyberArk的指导是不准确的。
具体来说,他们的指导和工具不涉及在Active Directory中确定有效的权限;它只涉及到在Active Directory ACL中搜索授予个人用户帐户的任何权限,正如我们刚刚所看到的,这种方法不仅是发现此类“影子管理员账户”的不正确方法,它也是一种非常危险的误导方法!
唯一 正确的方法
查找Active Directory中实际拥有哪些访问权限(包括特权访问)的唯一的正确方法是准确的确定Active Directory中的有效权限。没有其他方法可以准确地做出这个决定。
事实上,Active Directory有效权限对于网络安全至关重要,因为它们准确的决定了谁可以在Active Directory中的任何和每个对象上做哪些事情,这些对象包括CEO的域用户帐户到Domain Admins域安全组的任何对象。
正是出于这个简单的原因,没有能力在Active Directory中准确识别有效权限的企业组织可能无法充分保护和维护其基础的Active Directory部署组件。
演示
让我们实际的操作一下。为了保证演示过程能够简单一些,我们在测试的活动目录环境中使用了相同的域名,这样每个人都可以在CyberArk的文章中接着看这个例子。
安装程序
我们首先安装一个全新的Active Directory域,所以它只有默认的管理组和默认的ACL。
在我们的演示中,我们首先需要只创建五个对象:
1. 一个名为Demo的OU,用于存储我们的演示帐户和组
2. 一个名为James的常规域用户帐户
3. 一个名为Emily的常规域用户帐户
4. 一个名为Cyberdark Gurus的常规域安全组
5. 一个名为Active Directory Security Novices的常规域安全组
OK。我们现在不需要创建任何其他对象,因为我们要保持演示操作简单一些。
注意:请注意,这两个域用户帐户和这两个域安全组中的任何一个成员都是常规帐户和组,即它们不是任何默认的Active Directory管理组的成员。
我们唯一要做的就是让Cyberdark Gurus用户组 成为 Active Directory Security Novices组的成员。
如上图所示,Cyberdark Gurus组现在是Active Directory Security Novices组的成员。
演示#1
首先,我们让James成为Cyberdark Gurus域安全组的成员。
接下来,我们将修改Domain Admins安全组的默认ACL,并指定以下两个显式权限。
1. { Deny Active Directory Security Novices Special* } 2. { Allow James Write-Property Member}
Special*代表的权限:修改所有者,修改权限,删除,删除树,所有扩展权限,所有验证的写入和写入所有属性。(我们可以轻而易举地拒绝全部写入属性,但这些已经足够了。)
以下是Domain Admins安全组中生成的ACL –
由于我们无法查看ADUC中的特殊权限,因此我们可以启动此工具来更清晰地查看ACL。
如上图所示,我们现在可以清楚地看到我们刚刚添加的两个权限(参见行#1和#2)。
现在,我们可以看到显然有一个允许Domain Admins组的James Write-Property成员的权限,所以这是否意味着他是否就是可以更改域管理员组成员身份的“影子管理员账户”呢?
要查看CyberArk的ACLight工具确定的内容,我们运行它并检查其结果。
ACLight已经完成了分析,让我们看看它的输出结果。
根据ACLight,James是一个“ 影子管理员账户 ”,因为该工具似乎已经确定了James可以修改Domain Admins组的成员资格,因为直接在Domain Admins组的ACL中授予了他“ 允许”权限。 为了验证这个发现,我们应该可以登录James这个账户,并尝试修改Domain Admins安全组的成员,接下来,我们看看是否能够成功地实现这个目的。