
Reconnaissance et exploitation d'Active Directory pour les Red Teams via les services web Active Directory (ADWS).
Reconnaissance et exploitation d'Active Directory pour les Red Teams via les services Web Active Directory (ADWS).
SharpADWS est un outil de reconnaissance et d'exploitation d'Active Directory pour les Red Teams qui collecte et modifie les données d'Active Directory via le protocole Active Directory Web Services (ADWS).
Généralement, l'énumération ou la manipulation d'Active Directory se fait via le protocole LDAP. SharpADWS a la capacité d'extraire ou de modifier les données Active Directory sans communiquer directement avec le serveur LDAP. Sous ADWS, les requêtes LDAP sont encapsulées dans une série de messages SOAP puis envoyées au serveur ADWS via un canal chiffré NET TCP Binding. Le serveur ADWS décompresse ensuite la requête LDAP localement et la transmet au serveur LDAP exécuté sur le même contrôleur de domaine.
Active Directory Web Services (ADWS) est automatiquement activé lorsque les services de domaine Active Directory (ADDS) sont installés, ce qui rend SharpADWS universel dans tous les environnements de domaine.
L'un des principaux avantages de l'utilisation d'ADWS pour la post-exploitation LDAP est qu'il est relativement méconnu, et comme le trafic LDAP n'est pas envoyé sur le réseau, il n'est pas facilement détecté par les outils de surveillance courants. ADWS exécute un service complètement différent de LDAP, est disponible sur le port TCP 9389 et utilise le protocole SOAP comme interface.
Lors de la recherche sur ADWS, nous avons remarqué que comme il s'agit d'un service Web SOAP, l'exécution réelle de la requête LDAP se fait localement sur le contrôleur de domaine. Cela fournit un certain nombre d'effets secondaires intéressants qui s'avèrent bénéfiques. Par exemple, lors de l'analyse des requêtes LDAP sur un contrôleur de domaine, vous pouvez remarquer que les requêtes proviennent des logs 127.0.0.1, qui seront ignorés dans de nombreux cas.
Un avantage secondaire est que cette activité n'apparaît pas dans DeviceEvents sous le type d'action LDAPSearch, ce qui signifie que très peu de données de télémétrie sont disponibles.
SharpADWS implémente les protocoles MS-ADDM, MS-WSTIM et MS-WSDS. Vous pouvez utiliser le code source de ce projet pour facilement implémenter les opérations suivantes sur Active Directory Web Services :
L'argument de ligne de commande -h peut être utilisé pour afficher les informations d'utilisation suivantes :```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