组策略相关
本地组策略和域内组策略
-
Server Manager 的组策略管理工具:主要用来管理本地内的组策略
-
更专业的组策略管理工具GPMC:可以管理多个域
-
组策略分作主机策略和用户策略,machine和users目录; 脚本类型和非脚本类型, script目录
域服务器如何存储组策略
存储在服务器中,\domain\sysvol\policies
,以明文方式存储为xml、ini、inf等文件。对域内所有用户开放读权限。
组策略更新
- 客户端每90分钟主动获取一次组策略,检查组策略是否发生变更
- 客户端使用
gpupdate /force
强制立即检查组策略;参数可以分为主机和用户,gpupdate /force /target:computer
组策略的下发与获取
组策略的查询原理:
LDAP
检索所有的组策略,哪些是属于自己的,服务器决定需要返回哪些策略(版本号是决定的重要因素)
过程:
- Kerberos协议认证
- LDAP协议去查询
- SMB协议去获取并下发
组策略中的口令明文
某些场景下,需要批量给域内主机改口令、添加共享磁盘等,因此会编写一些脚本去做,比如VB脚本,而执行上述某些功能(VB脚本中的操作)是需要域管理员的口令,为了以脚本形式批量操作,会把口令明文直接放在脚本中。
在2008、12、16等,已经不存在这种明文形式了,因为系统管理方式发生变化。
组策略中的口令密文
微软收购"PolicyMaker",在Win 2008中发布了GPP(Group Policy Preferences)。对于某些仍然需要用户凭证的场景,例如下列,GPP实现会在xml等文件中留下口令经AES加密过后的密文。
- 映射驱动(Drivers.xml)
- 创建本地用户
- 数据源(DataSources.xml)
- 创建/更新服务(Services.xml)
- 计划任务(ScheduledTasks.xml)
- 更改Administrator密码
- 打印机配置(Printers.xml)
最关键的是,经研究发现,其所使用的AES加密密钥是固定不变的,即所有涉及这些场景口令的加密密钥都是一样的:
因此,本地所存放的密文等同于明文。
PowerSploit中提供GET-GPPPassword
模块去获取组策略中的口令:
2008上仍然有效,由于存在这样的问题,微软在2012、2016已经取消GPP这种方式。
组策略攻击客户端
背景
当域内某**客户端开启防火墙,或者关闭Server服务(445端口)**后,攻击者则无法直接进入域内某客户端。这时候可尝试通过组策略攻击客户端。
组策略更新
-
当一个客户端登录进域后,它会查询自己所在组是否有组策略更新,如果有更新就会执行更新内容,比如执行脚本等。
-
使用
gpupdate
命令强行主动更新组策略
利用
因此在拿到域控制权后,而无法直接进入域内客户端情况下,可以更改目标客户端用户的组策略,以实现:用户登录时,下载恶意文件并执行,以取得控制权。
思考:为啥不直接改策略把445开启?是因为445开启相关的组策略不是启动更新,必须强制更新?