漏洞简介

SYSVOL是活动目录里面的一个用于存储公共文件服务副本的共享文件夹,在域中的所有域控制器之间进行复制。
SYSVOL文件夹是在安装活动目录时自动创建的,主要用来存放登录脚本、组策略数据及其他域控制器需要的域信息等。
SYSVOL在所有经过身份验证的域用户或者域信任用户具有读权限的活动目录的域范围内共享。
整个SYSVOL目录在所有的域控制器中是自动同步和共享的,所有的域策略均存放在C:\Windows\SYSVOL\DOMAIN\Policies目录中。

目录

在一般的域环境中,所有机器都是脚本化部署的,数据量通常很大。
网络管理员往往会使用域策略进行统一的配置和管理。
大多数组织在创建域环境后,会要求加入域的计算机使用域用户密码进行登录验证。尽管如此,安全问题依旧还是存在。
通过组策略统一修改的密码,虽然强度有所提高,但所有机器的本地管理员密码都是相同的。
攻击者一旦获得一台机器的本地管理员密码,就相当于获得了整个域中所有机器的本地管理员密码。

漏洞环境搭建

使用win2012配置靶场环境,首先先配置好win2012域环境

搜索打开组策略管理
组策略对象右键新建
右键编辑新建好的组策略,在组策略编辑器中找到首选项控制面板设置,新建本地用户
微软在2014年为受影响系统修复了此漏洞,所以我们需要对此系统进行一些更改
使用 systeminfo | findstr KB 命令查看当前系统补丁

注意!在进行下面操作前请备好快照

删除补丁当中的 KB2928120 KB2961899 KB2919355

使用 wusa /uninstall /kb:(补丁编号) 来删除补丁

删除补丁
重启使修改生效(注意:重启后可能会导致VMtools失效)
将域中每个计算机的本地administrator用户更名为 admin,并且设置新的密码
点击确定后回到组策略管理页面,在安全筛选中选择添加
搜索domain
找到Domain Computers并选择完成添加
输入 gpupdate /force 命令更新策略

漏洞复现

管理员在域中新建一个组策略后,操作系统会自动在SYSVO共享目录中生成一个XML文件,该文件中保存了该组策略更新后的密码。
该密码使用AES-256加密算法,安全性还是比较高的。但是,2012年微软在官方网站上公布了该密码的私钥,导致保存在XML文件中的密码的安全性大大降低。
任何域用户和域信任的用户均可对该共享目录进行访问,这就意味着,任何用户都可以访问保存在XML文件中的密码并将其解密,从而控制域中所有使用该账号、密码的本地管理员计算机。
可通过在SYSVOL中搜索,可以找到Groups.xml文件。

找到详细信息中的唯一id
通过唯一id进入对应文件夹
进入 Machine/Preferences/Groups/ 目录下
双击打开Groups xml文档,此时就可以看见密码的密文

可使用msf的post/windows/gather/credentials/gpp模块进行密码解密

msf成功获取明文密码

漏洞防御

微软于2014年发布的补丁修复了此漏洞,所以在用于管理组策略的计算机上安装对应补丁,防止新的凭据被放置在组策略首选项里。此外需要对Everyone访问权限进行设置:
设置共享文件夹sysvol的访问权限
将包含组策略密码的xml文件从sysvol目录中删除
不要把密码放在所有域用户都能访问的文件中
如果需要更改域中机器的本地管理员密码,请使用LAPS(本地管理员密码解决方案)