前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >域安全篇:寻找SYSVOL里的密码和攻击GPP

域安全篇:寻找SYSVOL里的密码和攻击GPP

作者头像
FB客服
发布2018-02-07 14:53:38
2K0
发布2018-02-07 14:53:38
举报
文章被收录于专栏:FreeBufFreeBuf

在2015年的黑帽大会和DEFCON上,我曾谈过黑客会如何从域用户提权到域管理。

密码的难题

每台Windows主机有一个内置的Administrator账户以及相关联的密码。大多数组织机构为了安全,可能都会要求更改密码,虽然这种方法的效果并不尽如人意。标准的做法是利用组策略去批量设置工作站的本地Administrator密码。

但是这样又会出现另一个问题,那就是所有的电脑都会有相同的本地Administrator密码。也就是说,如果获取了一个系统的Administrator认证凭据,黑客就可以获取他们所有机器的管理权限。

SYSVOL

解决办法之一是为认证数据采取SYSVOL,SYSVOL是AD(活动目录)里面一个存储域公共文件服务器副本的共享文件夹,所有的认证用户都可以读取。SYSVOL包括登录脚本,组策略数据,以及其他域控所需要的域数据,这是因为SYSVOL能在所有域控里进行自动同步和共享。

所有的域组策略存储在:

\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\

SYSVOL里的认证

在windows电脑中,管理需要花心思去保证本地Administrator账户(RID 500)。传统的做法(除了购买安全产品),是使用一个自定义的脚本去更改本地Administrator的密码。这样就会出现一个问题,密码肯定会明文存储在SYSVOL的脚本里(比如vbs文件)。

比如黑客需要搜寻用来更改本地Administrator密码的VBS脚本,该vbs脚本在Microsoft TechNet gallery上,密码为可见的。这个脚本存在SYSVOL里,每个域用户都有读的权限,且该密码是每台电脑组策略应用的本地Administrator密码。

请不要用这个脚本修改本地Administrator密码。

组策略偏好GPP

在2006年,微软收购了桌面标准的“PolicyMaker”,并重新借此与win2008发布了GPP(组策略偏好)。其中GPP最有用的特性,是在某些场景存储和使用凭据,其中包括:

映射驱动(Drives.xml) 创建本地用户 数据源(DataSources.xml) 打印机配置(Printers.xml) 创建/更新服务(Services.xml) 计划任务(ScheduledTasks.xml) 更改本地Administrator密码

这对管理员非常有用,因为GPP提供了一个自动化机制,可以作为急需的解决方案(比如脚本)给他们。它提供了有效的方法,利用显式凭据结合组策略部署了计划任务,一次性批量更改了电脑的本地管理的密码,也许这就是最受欢迎的利用场景吧。

GPP中存储的凭据

然而现在有个问题,凭据数据应该怎样保护?

当管理创建了一个新的GPP时,SYSVOL里有一个XML文件提供了相关配置数据。如果里面提供了密码的话,那应该就是AES-256加密,看起来这加密似乎是够强力了。

然而除了在2012年前的某些点外,微软在MSDN上发布了AES的私钥,它可以用来解密这种密码。因为认证用户(所有域用户或者信任域里的用户)对SYSVOL拥有读权限。在域里的任何用户可以搜索SYSVOL共享中的带有cpassword字样的XML文件,里面包含了AES加密的密码。

攻击GPP

当黑客可以访问XML文件时,他能利用AES私钥解密GPP密码。PowerSploit函数Get-GPPPassword对GPP解密会很有帮助。下面的截图,则展示了一个简单的PowerShell函数解密GPP密码的命令(从上述的XML文件里找到的)。

据我所知,GPP凭据问题最早由Emilien Gauralt在他2012年1月的文章《Exploiting Windows 2008 Group Policy Preferences》提出。悲催的是,现在文章链接挂了,里面的内容也没了。在2012年5月,Chris Campbell又写了篇文章《GPP Password Retrieval with PowerShell》,并在里面提出了攻击该密码漏洞的第一段PowerShell代码。

并且Chris后来还更新了这段代码,将Get-GPPPassword加入PowerSploit。在2012年6月,Rewt dance写了一篇文《a GPP exploitation expanded reference》,而现在链接已经挂了,这里提供一下Google缓存。此外我还找到篇Alexandre Herzog在2012年4月写的文章《Exploit credentials stored in Windows Group Policy Preferences》。

我已经在文章里讨论过关于GPP凭据的问题和GPP补丁(KB2962486)。

让我们继续在SYSVOL里的组策略XML文件翻找管理凭据(包括域管理凭证),特别是在管理账户环境下运行的计划任务。

GPP凭证补丁(KB2962486)

2014年5月13日,微软发布了MS14-025的补丁KB2962486,即那个GPP导致的权限提升漏洞。这个补丁需要安装在所有使用了RSAT的系统上,防止管理将密码数据放进GPP里。

注意,现在的GPP文件还没有从SYSVOL里移除。

GPP利用检查

XML权限拒绝检查:

把新的xml文件放到SYSVOL里,设置拒绝Everyone。 审计访问拒绝错误 如果相关的GPO不存在,那就没有访问的合法原因。

GPP问题的缓解

在每台用于管理GPO的电脑上安装KB2962486补丁,这样会避免新的凭据放进GPP里。 删除现有的GPP里包含密码的xml文件。

微软本地Administrator密码解决方案(LAPS)

微软提供的最好的更改本地Administrator密码的方法,就是本地Administrator密码解决方案(LAPS)。

*参考来源:AD,FB小编dawner编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档