
Разведка Active Directory и эксплуатация для Red Teams через службы Active Directory Web Services (ADWS).
Разведка и эксплуатация Active Directory для красных команд через веб-службы Active Directory (ADWS).
SharpADWS — это инструмент разведки и эксплуатации Active Directory для красных команд, который собирает и изменяет данные Active Directory через протокол веб-служб Active Directory (ADWS).
Обычно перечисление или манипуляция Active Directory происходит через протокол LDAP. SharpADWS позволяет извлекать или изменять данные Active Directory без прямого взаимодействия с сервером LDAP. В рамках ADWS запросы LDAP упаковываются в серию сообщений SOAP, а затем отправляются на сервер ADWS по зашифрованному каналу NET TCP Binding. Затем сервер ADWS локально распаковывает запрос LDAP и пересылает его на сервер LDAP, работающий на том же контроллере домена.
Веб-службы Active Directory (ADWS) автоматически включаются при установке служб доменов Active Directory (ADDS), что делает SharpADWS универсальным для всех сред домена.
Одним из главных преимуществ использования ADWS для постэксплуатации LDAP является то, что этот механизм относительно неизвестен, и поскольку трафик LDAP не передается по сети, его трудно обнаружить обычными средствами мониторинга. ADWS работает как совершенно иная служба, отличная от LDAP, доступна на TCP-порту 9389 и использует протокол SOAP в качестве интерфейса.
В ходе исследования ADWS мы заметили, что, поскольку это веб-служба SOAP, фактическое выполнение запроса LDAP происходит локально на контроллере домена. Это даёт ряд интересных побочных эффектов, которые оказываются полезными. Например, при анализе запросов LDAP на контроллере домена можно заметить, что запросы исходят из журналов 127.0.0.1, которые во многих случаях будут проигнорированы.
Второстепенное преимущество заключается в том, что такая активность не отображается в DeviceEvents с типом действия LDAPSearch, что означает наличие очень малого количества телеметрических данных.
SharpADWS реализует протоколы MS-ADDM, MS-WSTIM и MS-WSDS; используя исходный код этого проекта, вы можете легко выполнять следующие операции с веб-службами Active Directory:
Аргумент командной строки -h можно использовать для отображения следующей информации об использовании:```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