域控制器打印服务器+无约束Kerberos委派=Active Directory林沦陷

本文详细分析了域控制器作为打印服务器时结合无约束Kerberos委派配置导致的安全风险,攻击者可通过Spooler服务获取DC计算机账户TGT票证,最终实现DCSync攻击完全控制AD林。

域控制器打印服务器 + 无约束Kerberos委派 = Active Directory林沦陷

在2018年的DerbyCon 8大会上,Will Schroeder(@Harmj0y)、Lee Christensen(@Tifkin_)和Matt Nelson(@enigma0x3)探讨了信任Active Directory带来的意外风险。他们介绍了多种有趣的持久化和权限提升方法,其中有一个特别引起了我的注意。

概述

Lee发现并展示了一个场景:当某个账户配置了无约束委派(这种情况相当常见)且计算机上运行着打印后台处理程序服务(Print Spooler)时,攻击者可以获取该计算机的凭据,并以用户身份发送到配置了无约束委派的系统。

我们发现,在我们审查和工作的环境中,约90%配置了某种形式的Kerberos委派,约75%配置了无约束委派。我在2015年Black Hat的演讲中(以及后续的演讲和文章)指出并强调了无约束委派的安全问题。

以下是一个快速发现配置了Kerberos委派的账户的PowerShell命令(需要AD PowerShell模块):

1
Get-ADObject -filter { (UserAccountControl -BAND 0x0080000) -OR (UserAccountControl -BAND 0x1000000) -OR (msDS-AllowedToDelegateTo -like '*') } -prop Name,ObjectClass,PrimaryGroupID,UserAccountControl,ServicePrincipalName,msDS-AllowedToDelegateTo

攻击过程

攻击者发现一个配置了Kerberos无约束委派的系统并入侵它。然后攻击者向域控制器发送“RpcRemoteFindFirstPrinterChangeNotification”请求,DC会响应测试通信给请求者。如果域控制器运行着打印后台处理程序(Spooler)服务,这将起作用(并且很容易测试找到一个运行此服务的DC)。

Lee解释说,问题在于任何经过身份验证的用户都可以远程连接到域控制器的打印服务器(后台处理程序服务),并请求新打印作业的更新,只需告诉它将通知发送到配置了无约束委派的系统。它会立即测试该连接,从而暴露计算机账户凭据(因为打印后台处理程序由SYSTEM拥有)。Lee指出,微软表示这是设计如此,并且“不会修复”。

Lee在Github上发布了他称为SpoolSample的PoC代码。

概念流程:

  1. 攻击者发现并入侵一个配置了Kerberos无约束委派的系统。注意,如果攻击者入侵了受信任林(具有双向信任)中的域控制器,这可用于入侵另一个林。
  2. 攻击者测试并发现运行打印后台处理程序(Spooler)服务的域控制器。
  3. 攻击者向DC的打印服务器发送MS-RPRN请求RpcRemoteFindFirstPrinterChangeNotification(Kerberos身份验证)。
  4. DC立即向请求者发送响应。此响应涉及DC创建Kerberos服务票证(TGS),其中包含域控制器计算机账户的Kerberos身份验证票证(TGT),因为涉及Kerberos且请求账户配置了无约束委派。
  5. 攻击者现在拥有域控制器计算机账户的Kerberos TGT,可用于模拟DC。
  6. 通过DCSync获取所有账户凭据(或根据需要涉及DA凭据的其他攻击)。

概念身份验证流程如图所示。

他们演讲中提到此攻击起作用的关键“要素”:

  • 具有Kerberos无约束委派的账户(例如,使用双向信任的受信任林中的DC)
  • 入侵该账户
  • 作为打印服务器运行的域控制器(运行打印后台处理程序服务)

此问题也适用于林信任。

缓解措施

  • 域控制器和AD管理系统需要禁用打印后台处理程序服务。美国国防部STIG安全指南多年来一直有此建议。最佳方法是通过GPO实现。
  • 从账户中删除无约束委派,并用约束委派替换(域控制器默认启用无约束委派)。
  • 跨信任禁用TGT委派:
    1
    
    netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:No
    

注意,本文重点讨论域控制器,但任何服务器都可能面临此攻击的风险。

通过禁用所有不需要运行打印后台处理程序服务的服务器上的该服务,并确保没有配置无约束委派的账户,可以缓解此特定问题。

更新(2019年2月12日) 微软发布了有关此问题跨林影响的额外指南。 https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/ADV190006

更新(2019年3月21日) 微软已将此问题更改为CVE-2019-0683并将修复。微软文章4490425描述了信任的更改以防范此问题。

精彩的演讲,Will、Lee和Matt!

演讲幻灯片 https://www.slideshare.net/harmj0y/derbycon-the-unintended-risks-of-trusting-active-directory

解释问题的视频 https://youtu.be/-bcWZQCLk_4?t=2194

参考资料

  • Will关于此问题的文章
  • Roberto检测此攻击的文章
  • 关于Kerberos无约束委派为何危险的文章
  • Kerberos参考(工作原理)
  • DCSync
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计