
Active Directory Aufklärung und Ausnutzung für Red Teams über die Active Directory Web Services (ADWS).
Active Directory-Erkundung und -Ausnutzung für Red Teams über die Active Directory Web Services (ADWS).
SharpADWS ist ein Tool zur Active Directory-Erkundung und -Ausnutzung für Red Teams, das Active Directory-Daten über das Active Directory Web Services (ADWS)-Protokoll sammelt und modifiziert.
Normalerweise erfolgt die Aufzählung oder Manipulation von Active Directory über das LDAP-Protokoll. SharpADWS kann Active Directory-Daten extrahieren oder modifizieren, ohne direkt mit dem LDAP-Server zu kommunizieren. Unter ADWS werden LDAP-Abfragen in eine Reihe von SOAP-Nachrichten verpackt und dann über einen verschlüsselten NET TCP-Binding-Kanal an den ADWS-Server gesendet. Der ADWS-Server entpackt die LDAP-Abfrage dann lokal und leitet sie an den LDAP-Server weiter, der auf demselben Domänencontroller läuft.
Active Directory Web Services (ADWS) wird automatisch aktiviert, wenn Active Directory Domain Services (ADDS) installiert werden, was SharpADWS in allen Domänenumgebungen universell einsetzbar macht.
Einer der Hauptvorteile der Verwendung von ADWS für die LDAP-Post-Exploitation besteht darin, dass es relativ unbekannt ist und da der LDAP-Verkehr nicht über das Netzwerk gesendet wird, von üblichen Überwachungstools nicht leicht erkannt wird. ADWS führt einen völlig anderen Dienst als LDAP aus, ist auf TCP-Port 9389 verfügbar und verwendet das SOAP-Protokoll als Schnittstelle.
Bei der Recherche zu ADWS ist uns aufgefallen, dass die eigentliche Ausführung der LDAP-Abfrage, da es sich um einen SOAP-Webdienst handelt, lokal auf dem Domänencontroller erfolgt. Dies hat eine Reihe interessanter Nebeneffekte, die sich als vorteilhaft erweisen. Beispielsweise kann bei der Analyse von LDAP-Abfragen auf einem Domänencontroller auffallen, dass die Abfragen aus 127.0.0.1-Logs stammen, was in vielen Fällen ignoriert wird.
Ein sekundärer Vorteil ist, dass die Aktivität nicht in DeviceEvents unter dem Aktionstyp LDAPSearch angezeigt wird, was bedeutet, dass nur sehr wenige Telemetriedaten verfügbar sind.
SharpADWS implementiert die Protokolle MS-ADDM, MS-WSTIM und MS-WSDS. Sie können den Quellcode dieses Projekts verwenden, um die folgenden Operationen auf Active Directory Web Services einfach zu implementieren:
Das Befehlszeilenargument -h kann verwendet werden, um die folgende Verwendungsinformation anzuzeigen:```cmd
C:\Users\Marcus>SharpADWS.exe -h
SharpADWS 1.0.0-beta - Copyright (c) 2024 WHOAMI (whoamianony.top)
-h Display this help screen
Connection options: -d Specify domain for enumeration -u Username to use for ADWS Connection -p Password to use for ADWS Connection
Supported methods: Cache Dump all objectSids to cache file for Acl methods Acl Enumerate and analyze DACLs for specified objects, specifically Users, Computers, Groups, Domains, DomainControllers and GPOs DCSync Enumerate all DCSync-capable accounts and can set DCSync backdoors DontReqPreAuth Enumerates all accounts that do not require kerberos preauthentication, and can enable this option for accounts Kerberoastable Enumerates all Kerberoastable accounts, and can write SPNs for accounts AddComputer Add a machine account within the scope of ms-DS-MachineAccountQuota for RBCD attack RBCD Read, write and remove msDS-AllowedToActOnBehalfOfOtherIdentity attributes for Resource-Based Constrained Delegation attack Certify Enumerate all ADCS data like Certify.exe, and can write template attributes Whisker List, add and remove msDS-KeyCredentialLink attribute like Whisker.exe for ShadowCredentials attack FindDelegation Enumerate all delegation relationships for the target domain
Acl options: -dn RFC 2253 DN to base search from -scope Set your Scope, support Base (Default), Onelevel, Subtree -trustee The sAMAccountName of a security principal to check for its effective permissions -right Filter DACL for a specific AD rights -rid Specify a rid value and filter out DACL that security principal's rid is greater than it -user Enumerate DACL for all user objects -computer Enumerate DACL for all computer objects -group Enumerate DACL for all group objects -domain Enumerate DACL for all domain objects -domaincontroller Enumerate DACL for all domain controller objects -gpo Enumerate DACL for all gpo objects
DCSync options: -action [{list, write}] Action to operate on DCSync method list List all accounts with DCSync permissions write Escalate accounts with DCSync permissions -target Specify the sAMAccountName of the account
DontReqPreAuth options: -action [{list, write}] Action to operate on DontReqPreAuth method list List all accounts that do not require kerberos preauthentication write Enable do not require kerberos preauthentication for an account -target Specify the sAMAccountName of the account
Kerberoastable options: -action [{list, write}] Action to operate on Kerberoastable method list List all kerberoastable accounts write Write SPNs for an account to kerberoast -target Specify the sAMAccountName of the account
AddComputer options: -computer-name Name of computer to add, without '$' suffix -computer-pass Password to set for the computer
RBCD options: -action [{read,write,remove}] Action to operate on RBCD method read Read the msDS-AllowedToActOnBehalfOfOtherIdentity attribute of the account write Write the msDS-AllowedToActOnBehalfOfOtherIdentity attribute of the account remove Remove the msDS-AllowedToActOnBehalfOfOtherIdentity attribute value of the account added by the write action