For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Write Public Information permission

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.

Remove Write Public Information permission

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:

Event ID
Description
Fields/Attributes
References

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?