DCShadow 是开源工具 mimikatz 中的一项功能。 在另一篇博客文章中,我们介绍了攻击者在获取管理员凭据后,如何使用 DCShadow 在域中实现持久性而不被检测到。但 DCShadow 也可能让攻击者提升其权限。
域管理员如何进一步提升其权限?通过在其他林中获取管理员权限。利用 SID History,攻击者可以将管理级 SID 添加到其用户账户中,并在其他受信任的域和林中获得管理员级权限。在这篇文章中,我们将看看这种方法是如何运作的。
步骤 1:发现信任关系
第一步是弄清楚有哪些信任关系存在。实现这一点有多种方法,但我们将通过 PowerShell 使用两种工具:PowerSploit 这个框架,以及 Active Directory 的 PowerShell 模块。
对于我们找到的每个信任关系,都需要检查是否启用了 SID 过滤。如果启用了,那么历史 SID 将无法用于访问该信任关系另一侧的林。然而,如果未启用,那就“可以操作了”。通常在迁移之后会把这个选项保留为禁用状态,以确保用户不会丢失对他们所需的任何系统和数据的访问权限。下面这条 PowerShell 命令将发现信任关系并枚举其选项,包括 SID 过滤:
Get-NetDomainTrust | ForEach-Object{Get-ADTrust –filter * -server $_.TargetName}
下面提供了该命令的输出结果。你可以看到,存在到 gobias.local 域的信任关系,并且该域中禁用了 SID 过滤(SidFilteringQuarantined = False)。因此,我们将能够使用历史 SID 来访问该域中的资源。
要了解有关 SID 筛选和信任关系的更多信息,请阅读此 TechNet 上的文章。
步骤 2:使用 SID History 提升权限
接下来,我们需要向用户帐户添加一个管理 SID,这样才能访问受信任森林中的资源。这里可以用 DCShadow,原因有两个:
- 无法通过诸如 AD Users & Computers 之类的应用程序原生更改 SID History。
- DCShadow 将在不被检测到的情况下完成此更改。
我们只需要选择一个 SID,将其添加到我们的 SID History 中。我们将避免使用任何知名的 SID 以及内置的用户或组,例如 Administrator 和 Domain Admins,因为已经设置了相关控制措施,允许这些 SID 仅能分配给其他域中与之等效的对象。 使用 domain reconnaissance,我们应该能够找到一个域用户或组——我们希望将其添加到我们的访问令牌中,以获得更高的权限。
使用以下 DCShadow 命令,将 gobias.local 林中的 AD-Admins 组添加到我们的用户帐户:
lsadump::dcshadow /object:"CN=Jeff Warren,OU=Administrators,OU=Users,OU=JEFFLAB,DC=JEFFLAB,DC=local" /attribute:sidhistory /value:S-1-5-21-1722627474-2472677011-3296483304-1113
要查看新添加的 SIDhistory 值,我们可以运行以下脚本:
Get-ADUser Jeff -Properties sIDHistory
我们可以通过以该用户重新登录并运行 whoami /groups 命令来查看新的组成员关系,从而确认所有操作都已成功。我们的用户仅通过 SID history 才会在其令牌中获得该组。
步骤 3. 使用提升后的权限
一旦获得访问权限,从受信任的林中提取数据的方法有很多种。其中最高效的方法之一是使用 DCSync 因为它不需要在目标域控制器上运行任何代码。
在我们向账户添加 SID 历史记录之前,尝试对目标林运行 DCSync 会导致访问被拒绝:
但在向用户账户添加历史 SID 之后,我们就能够成功运行同一条命令,并获取任意账户的密码哈希,包括极其宝贵的 krbtgt Kerberos 服务账户。
DCShadow 检测与响应
用于检测 DCShadow 的主要方法是查找与恶意(rogue)域控制器的注册和注销行为相匹配的模式,并监控它们所推送的复制流量。开箱即用,Netwrix StealthDEFEND 会主动监视所有域复制和变更事件,以寻找 DCShadow 的迹象。
Netwrix Threat Prevention 阻止策略可用于防止肇事账户或工作站执行更多的复制、身份验证以及其他活动,从而减缓攻击者的行动,并让响应人员有更多时间彻底消除威胁。
分享到
了解更多
关于作者
Jeff Warren
首席产品官
Jeff Warren 负责监督 Netwrix 的产品组合,在安全领域的产品管理与开发方面拥有十多年的经验。在加入 Netwrix 之前,Jeff 曾在 Stealthbits Technologies 领导产品团队;他运用自己作为软件工程师的经验,开发创新且面向企业规模的安全解决方案。凭借亲力亲为的工作方式以及解决棘手安全挑战的能力,Jeff 致力于打造真正可落地、行之有效的实用解决方案。他拥有特拉华大学(University of Delaware)的信息系统(Information Systems)学士学位。