WritePublicInformation
Summary
Forestall ACL Alias
WritePublicInformation
AD Alias
Write Public-Information
Affected Object Types
Users, Computers, Managed Service Accounts
Exploitation Certainty
Likely
AD Property Set
Public-Information
AD Right
WriteProperty
AD Permission Guid
e48d0154-bcf8-11d1-8702-00c04fb96050
Description
The WritePublicInformation permission allows an account to modify attributes in the Active Directory Public-Information property set. A property set groups multiple attributes under one Access Control Entry, so a single ACE can grant write access to several related fields.
This property set includes servicePrincipalName. Because of this, WritePublicInformation can allow the permission holder to add, update, or remove SPNs on the affected object.
Risk
When WritePublicInformation allows modification of servicePrincipalName, it can be abused like the WriteSPN edge. An attacker can add a controlled SPN to the target account, request a Kerberos service ticket for that SPN, extract the encrypted ticket, and attempt to crack the target account password offline.
This is commonly referred to as targeted Kerberoasting. The impact depends on the target account and password strength. If the affected object is a privileged user, service account, or computer account with meaningful access, successful cracking can lead to privilege escalation and lateral movement.
Identification
PowerShell
Active Directory Module
Using the ActiveDirectory PowerShell module, you can enumerate WritePublicInformation entries.
1. Find-WritePublicInformation function
2. Scan all supported domain principals
3. Scan a specific account
4. Using SearchBase to limit the searching scope
.NET Directory Services
By leveraging PowerShell's built-in .NET DirectoryServices namespace, you can enumerate WritePublicInformation entries without relying on external modules.
1. Find-WritePublicInformationSimple function
2. Scan all supported domain principals
3. Scan a specific account
Active Directory Users and Computers
1. Open Active Directory Users and Computers on your Windows server, and activate the Advanced Features option.
2. Right-click the affected object.
3. Select Properties from the context menu.
4. In the Properties window, navigate to the Security tab.
5. Click the Advanced button to open the Advanced Security Settings dialog.
6. Select the relevant Access Control Entry (ACE).
7. Click Edit to modify the selected ACE.
8. In the permissions list, locate and check the Write Public Information option.
9. Click OK and Apply to save changes.

Exploitation
The WritePublicInformation permission grants control over servicePrincipalName through the Public-Information property set. The abuse flow is the same as WriteSPN.
Windows
An attacker can add an SPN to the target account.
Example:
The same change can also be made with PowerView.
Example:
After the SPN is added, the attacker can request a service ticket and attempt to crack it offline.
Linux
On Linux, targeted Kerberoasting can be performed with targetedKerberoast.py.
Example:
For more exploitation detail, see the WriteSPN edge documentation.
Mitigation
Access Control Entries identified as dangerous should be removed by following the steps below.
1. Open Active Directory Users and Computers, and activate the Advanced Features option.
2. Double-click the affected object and open the Security tab.
3. Click the Advanced button and open the dangerous Access Control Entry.
4. Remove the Write Public Information permission.
5. Click OK and Apply to save changes.

Review whether any principal still needs write access to the Public-Information property set on the affected object. If the operational need is only to manage non-sensitive profile attributes, avoid granting a broad property set permission when a narrower attribute-level permission is sufficient.
Detection
Changes to servicePrincipalName and changes to object security descriptors can be detected by auditing directory service modifications. Ensure Audit Directory Service Changes and Audit Directory Service Access are enabled on Domain Controllers. Look for the following events:
5136
A directory service object was modified.
AttributeLDAPDisplayName should equal servicePrincipalName or nTSecurityDescriptor.
https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-5136
4662
An operation was performed on an object.
AccessMask, Properties, and ObjectType for WriteProperty activity.
https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4662
4769
A Kerberos service ticket was requested.
TargetUserName and ServiceName for newly added SPNs.
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4769
References
Last updated
Was this helpful?