组策略提权
概述
SYSVOL是活动目录里面的一个用于存储公共文件服务副本的共享文件夹,在域中的所有域控制器之间进行复制。SYSVOL文件夹是在安装活动目录时自动创建的,主要用来存放登录脚本、组策略数据及其他域控制器需要的域信息等。SYSVOL在所有经过身份验证的域用户或者域信任用户具有读权限的活动目录的域范围内共享。整个SYSVOL目录在所有的域控制器中是自动同步和共享的,所有的域策略均存放在
C:\Windows\SYSVOL\DOMAIN\Policies
目录中。
在一般的域环境中,所有机器都是脚本化部署的,数据量通常很大。网络管理员往往会使用域策略进行统一的配置和管理。大多数组织在创建域环境后,会要求加入域的计算机使用域用户密码进行登录验证。尽管如此,安全问题依旧还是存在。通过组策略统一修改的密码,虽然强度有所提高,但所有机器的本地管理员密码都是相同的。攻击者一旦获得一台机器的本地管理员密码,就相当于获得了整个域中所有机器的本地管理员密码。
常见的组策略首选项(GPP)
- 映射驱动器(Drives.xml)
- 创建本地用户
- 数据源(DataSources.xml)
- 打印机配置(Printers.xml)
- 创建/更新服务(Services.xml)
- 计划任务(ScheduledTasks.xml)
批量修改域中机器本地管理员密码
我们在组策略编辑器中打开计算机配置界面,新建一个组策略,更新本地计算机中用户的组策略首选项密码
将Domain Computer组添加到验证组策略对象列表中,将新建的组策略应用到域中所有的非域控制器中
然后手动更新组策略的更新信息
获取组策略的凭据
管理员在域中新建一个组策略后,操作系统会自动在SYSVOL共享目录中生成一个XML文件,该文件中保存了该组策略更新后的密码。该密码使用了AES-256加密算法,安全性比较高。但是微软在网站上公布过这个算法的私钥,任何域用户和域信任的用户均可对该共享目标进行访问,任何用户都可以访问保存在XML文件中的密码并将其解密,从而控制域中所有使用该账户/密码的本地管理员计算机。
手动查找cpassword
浏览SYSVOL文件夹,获取相关文件
可以看到,cpassword使用AES-256算法加密的,加密后用户名”gpp”的密文为
"Hd/xxCN9bFRTj8C2az+0t3el0u3Dn68pZ1Sd4IHmbPw"
。接着我们使用python脚本进行解密
python Gpprefdecrypt.py Hd/xxCN9bFRTj8C2az+0t3el0u3Dn68pZ1Sd4IHmbPw
使用powershell获取cpassword
这是
PowerSploit
框架上的
Get-GPPPassword.ps1
脚本
使用Metasploit查找cpassword
在MSF中,我们使用
post/windows/gather/credentials/gpp
模块进行自动查找,但是我们事先得先获取到一个session
use post/windows/gather/credentials/gpp
show options
set session 2
使用Empire查找cpassword
其他组策略首选项
- Services\Services.xml
- ScheduledTasks\ScheduledTasks.xml
- Printers\Printers.xml
- Drives\Drives.xml
- DataSources\DataSources.xml