(翻译)Active Directory万能密码

原文:http://adsecurity.org/?p=1275

​ 2015年1月12号,Dell SecureWorks发现了一个绕过AD(Active Directory)密码认证的后门,攻击者可以使用指定的密码登陆任何用户,该后门被命名为万能密码(Skeleton Key)。

​ 随后,16号Mimikatz的作者Benjamin Delpy在Mimikatz中加入了该功能,支持2003-2012 R2系统。

​ 注意本文中所有测试都是在实验环境中,使用的Mimikatz版本如下文图中所示。Dell SecureWorks所发现的万能密码后门和Mimikatz的万能密码功能有些许不同之处。Mimikatz使用的方法是对lsass.exe打“补丁”,这样任何域用户都可以使用同一个密码进行认证,DC重启后补丁失效。

在一个或多个域控上植入Mimikatz万能密码

mimikatz.exe “privilege::debug”“misc::skeleton” exit

FpldW_active-directory-skeleton-key-1.png

如果在AD中存在多个DC,所有DC都需要植入万能密码,确保所有用户都能使用该密码。因为在域中成员机使用DCLocator来寻找DC,成员机选择DC是随机的,如果不是所有的DC都植入了补丁,那么有可能会导致万能密码失败。

实际攻击场景

攻击者可以通过攻击MS14-068或者已经获得krbtgt的hash情况下生成Golden Ticket来伪装成域管理员账户,然后可以使用伪造的Kerberos TGT通过powershell远程访问DC。通过WinRM使用powershell远程访问DC可以获得一个交互式shell(类似ssh),这种情况下,攻击者可以编写Powershell脚本利用“invoke-command”命令在DC运行mimikatz。

xzjMU_active-directory-skeleton-key-2.png

植入万能密码时在DC上生成的安全日志

当使用mimikatz远程植入万能密码时在DC上会记录以下日志:

1
2
Event Id 4673 Sensitive PrivilegeUse
敏感权限使用

ByOmd_active-directory-skeleton-key-3.png

1
2
Event 4611: A trusted logon process has been registered with the Local Security Authority.
一个受信任的登录进程已使用本地安全机构注册

使用Mimikatz万能密码认证

测试普通用户的原密码以及万能密码

注意两个密码都可以通过认证

RvsQN_active-directory-skeleton-key-4.png

测试域管理员的原密码以及万能密码

注意两个密码都可以通过认证

EJNry_active-directory-skeleton-key-5.png

防御措施

  • 保护域管理员账户,不要使用域管理员账户登陆安全防护级别与DC不一致的机器,不要使用域管理员在安全防护与DC不一致的机器上运行任何服务
  • 为所有用户启用智能卡登陆或其他双因素认证
  • 在安装ms14-068补丁之前不要将DC连接上网络,注意ms14-068补丁必须在域服务完成安装之后才能安装。
  • 使用安全软件阻止对lsass进程进行“补丁”
  • DC上开启进程白名单(比如bit9),阻止未授权程序运行
  • 在Windows2012R2上启用LSA保护(LSAProtect),mimikatz可以使用驱动绕过,但会留下更多日志

“LSA 包含本地安全机构服务器服务(LSASS) 进程,可以验证用户的本地和远程登录,并强制本地安全策略。Windows 8.1 操作系统为 LSA 提供其他保护,以防止未受保护的进程读取内存及注入代码。这为 LSA 存储和管理的凭据提供了更高的安全性。LSA 的受保护进程设置可以在 Windows 8.1 中配置,但不能在 Windows RT 8.1 中配置。将此设置与安全启动结合使用时,便可以实现附加保护,因为禁用 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 注册表项不起作用。“

在一台计算机上启用 LSA 保护的步骤

打开注册表编辑器(RegEdit.exe),然后导航到位于以下位置的注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa。

将该注册表项的值设置为:”RunAsPPL”=dword:00000001。

重新启动计算机。

使用组策略启用 LSA 保护的步骤

打开组策略管理控制台 (GPMC)。

创建一个新 GPO,该 GPO 在域级别链接,或者链接到你的计算机帐户所在的组织单位。你也可以选择已部署的 GPO。

右键单击该 GPO,然后单击“编辑”打开组策略管理编辑器。

依次展开“计算机配置”、“首选项”和“Windows设置”。

右键单击“注册表”,指向“新建”,然后单击“注册表项”。此时将出现“新建注册表属性”对话框。

在“配置单元”列表中单击“HKEY_LOCAL_MACHINE”。

在“注册表项路径”列表中浏览到“SYSTEM\CurrentControlSet\Control\Lsa”。

在“值名称”框中键入 RunAsPPL。

在“值类型”框中单击“REG_DWORD”。

在“值数据”框中键入 00000001。

单击“OK”。

Mimikatz绕过LSA 保护

RofeV_active-directory-skeleton-key-6.png