介绍
sysvol是一个文件夹,在新建域控的时候会被自动创建,默认目录在c:windowssysvol,它是一个共享文件夹,用来存储域上的一些公共文件。sysvol会在域控之间进行复制,保证每台域控的sysvol是同步的。
而利用sysvol攻击域控,实际上就是查找sysvol中存储的账号密码,当域管在做一些组策略配置时,会进行身份验证,域管身份验证通过后,会把账号密码存放在sysvol中,而sysvol是域中的共享,所有域控中的机器都可以访问,意味着所有普通用户都可以通过sysvol去找域管信息,存在安全隐患。
但这个sysvol对系统有要求,如果是2003的系统,那么域管账号密码会直接以明文形式存在,之后的像2008,变成了密文,加密是aes256应该,但密钥进行了公开,所以可以利用脚本直接解密,针对这个问题,微软发了相关的补丁,补丁号是KB2962486,打了这个补丁,域管再进行组策略设置,就不需要输入账号密码了,这里测试了2012,不打补丁还是有这个隐患,但再往后2016及之后,就默认不可以了。
所以针对2012及之前的服务器,没有打补丁的情况下,可以利用。
前提
前提是要得到一台域中机器的域用户,或者是域中机器的system权限,和域控通信,才能获取sysvol内容,然后再利用去sysvol中找有没有域管账号和密码。
环境
这里测试下,以windows2012为例,首先我们以域管的身份去做些组策略设置,比如我要对域内本地管理员设置密码:
工具-打开组策略管理,如下图:
在域上右键新建组策略:
名字随便填一个:
在新建的策略上右键选择编辑,打开组策略管理编辑器:
用户配置-首选项-控制面板设置-本地用户和组-新建本地用户:
比如我进行创建,用户是内置的administrator,这里操作什么不重要,只要有身份确认或者输入密码的操作,就会被记录到sysvol:
组策略保存后,域内的机器在重启或者重新登录的情况下就会把新策略更新过来,或者是手动用gpupdate /force命令进行更新。
测试
上面是2012的环境,域管只要输入密码就会在sysvol中有记录,不过是加密的,可以在新建的用户上右键-所有任务-显示xml中查看:
xml内容如下,cpassword就是刚才域管输的密码:
xml所处的位置在sysvol下的以域名为名的文件夹中,打开后有一个policies策略文件夹,下面存放的都是设置策略的相关信息:
至于哪个id对应的哪个策略,可以在策略的详细信息中查看:
知道id后,可以进入该文件夹下的user下的preferences下的groups中,里面就是对应的xml文件。
除了新建用户更新用户涉及到域管输入账号密码外,像计划任务也会要求进行身份验证,如下图:
类似的还有像数据源、打印机等等。
解密
获取加密的cpassword后,需要进行解密才能得到明文,解密有相关的脚本,这里直接使用powersploit下的get-gpppassword就可以,地址如下:
https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-GPPPassword.ps1
它会列出sysvol下所有xml的相关密码:
完。
原文始发于微信公众号(aFa攻防实验室):SYSVOL攻击域控
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论