T1552-006-windows-基于GPP凭证获取
来自ATT&CK的描述
攻击者可能会尝试在组策略首选项(GPP)中查找不安全的凭据。GPP是允许管理员使用嵌入式凭据创建域策略的工具。这些策略允许管理员设置本地帐户。
这些组策略存储在域控制器上的SYSVOL中。这意味着任何域用户都可以查看SYSVOL共享并解密密码(使用已公开的AES密钥)。
以下工具和脚本可用于从组策略首选项XML文件收集和解密密码文件:
Metasploit的后期开发模块:
post/windows/gather/credentials/gpp
Get-GPPPassword
gpprefdecrypt.py
在SYSVOL共享上,攻击者可以使用以下命令来枚举潜在的GPP XML文件:dir /s * .xml
组策略首选项(GPP)
组策略首选项(GPP)是允许管理员使用嵌入式凭据创建域策略的工具。除其他外,这些策略允许管理员设置本地帐户。
这些组策略存储在域控制器上的SYSVOL中,这意味着任何域用户都可以查看SYSVOL共享并解密密码AES私钥已在线泄露。
SYSVOL 是在域中全域共享的,所有认证域用户都有读权限。SYSVOL 包含登录脚本、组策略数据,以及域控需要访问的其他域里面的数据(SYSVOL 中的数据自动被所有域控所共享)所有的组策略都存储在这个位置:
\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\
测试案例
最简单的方法就是不需要任何黑客工具,攻击者需要打开文件浏览的窗口并且在查找域文件共享目录中的 XML 文件。通常这些文件会包含凭据:roups.xml、scheduledtasks.xml、Services.xml。
任何经过身份验证的用户 (任何域中用户或者受信任域中的用户) 都可以查看 SYSVOL 中的包含 AES 加密密码的 XML 文件。
攻击者可以通过访问此 XML 文件,使用 AES 私钥来解密 GPP 密码
可以使用以下工具和脚本从组策略首选项XML文件中收集和解密密码文件:
- Get-GPPPassword
- gpprefdecrypt.py
- ......
注意:在SYSVOL共享上,以下命令可用于枚举潜在的XML文件dir / s * .xml
findstr /S /I cpassword \\0day.org\sysvol\0day.org\policies\*.xml
对于通过组策略首选项完成的设置,数据存储在SYSVOL文件夹中的XML文件中。对于某些设置,需要用户凭据,例如:
- 映射驱动器(Drives.xml)
- 创建本地用户(unattend.xml)
- 数据源(DataSources.xml)
- 打印机配置(Printers.xml)
- 创建/更新服务(Services.xml)
- 计划任务(ScheduledTasks.xml)
- 更改本地管理员密码
- 组策略首选项(Groups.xml)
可以使用关键字搜索在SYSVOL文件夹中搜索这些XML文件。可以使用键值“ cpassword ” 搜索XML文件中的密码。
检测日志
windows 安全日志
测试复现
组策略首选项允许管理员在Active Directory域中的服务器和工作站上创建和管理本地帐户。攻击者可以轻松找到并获取由组策略首选项管理的管理帐户凭据的加密密码,然后使用Microsoft发布的AES密钥对其进行解密。
以下是攻击的工作方式的摘要:
- 攻击者利用PowerShell或PowerSploit的Get-GPPPassword命令等其他工具,在域控制器的SYSVOL共享上找到包含AES加密的本地帐户密码的组策略XML文件。
- 攻击者结合Microsoft发布的AES密钥,对密码进行解密,以明文形式显示管理帐户密码。
由于SYSVOL共享对经过身份验证的用户开放,因此组织内的任何人都可以读取此处存储的文件。因此,任何用户帐户都可以查找和解密这些文件,并可以访问管理员帐户的纯文本密码。
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Windows\system32>findstr /S /I cpassword \\0day.org\sysvol\0day.org\policies\
*.xml
\\0day.org\sysvol\0day.org\policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machi
ne\Preferences\Groups\Groups.xml:<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D
24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="tester" image
="0" changed="2019-05-20 06:34:56" uid="{47664872-E0C4-4476-A963-9F34564042B1}">
<Properties action="C" fullName="" description="" cpassword="WzC8r0KH+edYsh0heQv
AVwcNxtSvX1efu9MU+z5e37E" changeLogon="0" noChange="0" neverExpires="1" acctDisa
bled="0" userName="tester"/></User>
\\0day.org\sysvol\0day.org\policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machi
ne\Preferences\Groups\Groups.xml: <User clsid="{DF5F1855-51E5-4d24-8B1A-D9
BDE98BA1D1}" name="klionsec" image="0" changed="2019-05-20 06:35:29" uid="{FBA27
650-BF8A-4EA4-A308-91540384B7E2}"><Properties action="C" fullName="" description
="" cpassword="tlKQrm9IwkVCQX65tWY+KZ1iBu7tbjQ/2vCOFU3Kkiw" changeLogon="0" noCh
ange="0" neverExpires="1" acctDisabled="0" userName="klionsec"/></User>
测试留痕
暂无
检测规则/思路
sigma规则
title: 基于GPP凭证获取findstr查找sysvol内潜在的XML文件(发起攻击机)
description: windows server 2008 模拟测试结果
references: https://adsecurity.org/?p=2288
tags: T1552-006
status: experimental
author: 12306Bro
logsource:
product: windows
service: security
detection:
selection1:
EventID: 4688 # 进程创建
NewProcessname: 'C:\Windows\System32\findstr.exe'
selection2:
EventID: 5156
Direction: '出站' #方向为出站
DestinationPort: 445 #目标端口为445
selection3:
EventID: 4689 #进程关闭
Processname: 'C:\Windows\System32\findstr.exe'
timeframe: last 30s
condition: all of them
level: medium
——————————————————————————————————————————————————————————————————————————
title: 基于GPP凭证获取findstr查找sysvol内潜在的XML文件(主域控服务器)
description: windows server 2008 模拟测试结果
references: https://adsecurity.org/?p=2288
tags: T1552-006
status: experimental
author: 12306Bro
logsource:
product: windows
service: security
detection:
selection1:
EventID: 5156 #Windows 筛选平台已允许连接。
Direction: '入站' #方向为入站
SourcePort: 445 #源端口为445
selection2:
EventID: 4672 #为新登录分配了特殊权限。
selection3:
EventID: 4624 #已成功登录帐户。
LogonType: 3 #登陆类型为3
LogonProcess: 'Kerberos' #登陆进程为kerberos 详细身份验证信息
AuthenticationPackage: 'Kerberos' #身份验证数据包Kerberos 详细身份验证信息
selection4:
EventID: 5140 #已访问网络共享对象。
Objecttype: 'File' #网络信息>对象类型
ShareName: '\\*\SYSVOL' #共享信息>共享名:\\*\SYSVOL
Sharedpath: '\??\C:\Windows\SYSVOL\sysvol' #共享路径
selection5:
EventID: 5145 #已检查网络共享对象是否可以授予客户端所需的访问权限。
Objecttype: 'File' #网络信息>对象类型
ShareName: '\\*\SYSVOL' #共享信息>共享名:\\*\SYSVOL
Shared path: '\??\C:\Windows\SYSVOL\sysvol' #共享路径
timeframe: last 30s
condition: all of them
level: medium
建议
关联分析思路:在主域控上提取到的源IP地址,就是疑似发起攻击的主机地址。5145、5140日志会进行记录。在疑似发起攻击的主机上查看5156事件
注意:主域控服务器上5156中记录的目标地址即为疑似发起攻击的主机地址;疑似发起攻击的主机中5156记录的目标地址即是主域控服务器。可在主域控上进行检测频繁发起5156事件。
缓解措施
通过组策略首选项缓解明文密码提取威胁的第一步是了解环境中是否存在这种情况。Microsoft在其安全公告中提供了有关此漏洞的脚本,可以利用该脚本,并且还设计了软件解决方案来查找可以使用此方法窃取的密码实例。
一旦确定了潜在的漏洞,建议找到其他方法来启用先前通过组策略首选项进行的任务或过程。例如,Microsoft的本地管理员密码解决方案(LAPS)是一种潜在的解决方案,用于提供对系统的管理访问权限,而不是通过组策略首选项提供登录脚本。
参考推荐
MITRE-ATT&CK-T1552-006
https://attack.mitre.org/techniques/T1552/006/
[翻译 + 实践] 几种获取域管理员权限的方式
https://attacker.cc/index.php/archives/10/
域安全篇:寻找SYSVOL里的密码和攻击GPP(组策略偏好)
https://www.freebuf.com/vuls/92016.html
利用域凭据:解密GPP中的管理员密码
https://www.cnblogs.com/index-htm/p/5412496.html
在SYSVOL中查找密码并利用组策略首选项