Unsecured Credentials: Group Policy Preferences

Adversaries may attempt to find unsecured credentials in Group Policy Preferences (GPP). GPP are tools that allow administrators to create domain policies with embedded credentials. These policies allow administrators to set local accounts.[1]

These group policies are stored in SYSVOL on a domain controller. This means that any domain user can view the SYSVOL share and decrypt the password (using the AES key that has been made public).[2]

The following tools and scripts can be used to gather and decrypt the password file from Group Policy Preference XML files:

  • Metasploit’s post exploitation module: post/windows/gather/credentials/gpp
  • Get-GPPPassword[3]
  • gpprefdecrypt.py

On the SYSVOL share, adversaries may use the following command to enumerate potential GPP XML files: dir /s * .xml

ID: T1552.006
Sub-technique of:  T1552
Platforms: Windows
Permissions Required: User
Version: 1.0
Created: 11 February 2020
Last Modified: 17 June 2020

Procedure Examples

ID Name Description
G0064 APT33

APT33 has used a variety of publicly available tools like Gpppassword to gather credentials.[4][5]

S0194 PowerSploit

PowerSploit contains a collection of Exfiltration modules that can harvest credentials from Group Policy Preferences.[6][7]

S0692 SILENTTRINITY

SILENTTRINITY has a module that can extract cached GPP passwords.[8]

Mitigations

ID Mitigation Description
M1015 Active Directory Configuration

Remove vulnerable Group Policy Preferences.[9]

M1047 Audit

Search SYSVOL for any existing GGPs that may contain credentials and remove them.[10]

M1051 Update Software

Apply patch KB2962486 which prevents credentials from being stored in GPPs.[10][11]

Detection

ID Data Source Data Component
DS0017 Command Command Execution
DS0022 File File Access

Monitor for attempts to access SYSVOL that involve searching for XML files.

Deploy a new XML file with permissions set to Everyone:Deny and monitor for Access Denied errors.[10]

References