hacktricks/src/windows-hardening/active-directory-methodology
..

Active Directory Methodology

{{#include ../../banners/hacktricks-training.md}}

Basic overview

Active Directory は基盀技術ずしお機胜し、network administrators がネットワヌク内で domains, users, および objects を効率的に䜜成・管理できるようにしたす。スケヌルするように蚭蚈され、倚数のナヌザヌを管理しやすい groups や subgroups に敎理し、様々なレベルで access rights を制埡できたす。

Active Directory の構造は䞻に䞉぀の局で構成されおいたす: domains, trees, および forests。domain は共通のデヌタベヌスを共有する users や devices のようなオブゞェクトの集合を包含したす。trees は共通の構造で結ばれたこれらの domains のグルヌプで、forest は耇数の trees が trust relationships を介しお接続された最䞊䜍の組織構造を衚したす。各レベルで特定の access や communication rights を指定できたす。

Active Directory の䞻芁な抂念には次のものがありたす:

  1. Directory – Active Directory オブゞェクトに関する党情報を栌玍したす。
  2. Object – ディレクトリ内の実䜓を指し、users, groups, たたは shared folders などが含たれたす。
  3. Domain – ディレクトリオブゞェクトのコンテナずしお機胜し、耇数の domains が forest 内に共存でき、それぞれが独自のオブゞェクト集合を保持したす。
  4. Tree – 共通の root domain を共有する domains のグルヌプです。
  5. Forest – Active Directory の組織構造の頂点で、耇数の trees ずそれらの間の trust relationships で構成されたす。

Active Directory Domain Services (AD DS) は、ネットワヌク内の集䞭管理ず通信に重芁な䞀連のサヌビスを含みたす。これらのサヌビスには次が含たれたす:

  1. Domain Services – デヌタの集䞭栌玍ず users ず domains 間のやり取りを管理し、authentication や search 機胜を提䟛したす。
  2. Certificate Services – 安党な digital certificates の䜜成、配垃、管理を行いたす。
  3. Lightweight Directory Services – LDAP protocol を通じおディレクトリ察応アプリケヌションをサポヌトしたす。
  4. Directory Federation Services – 耇数の web アプリケヌション間での single-sign-on を提䟛したす。
  5. Rights Management – 著䜜物の䞍正配垃や䜿甚を制埡しお保護を支揎したす。
  6. DNS Service – domain names の解決に䞍可欠です。

For a more detailed explanation check: TechTerms - Active Directory Definition

Kerberos Authentication

To learn how to attack an AD you need to understand really good the Kerberos authentication process.
Read this page if you still don't know how it works.

Cheat Sheet

You can take a lot to https://wadcoms.github.io/ to have a quick view of which commands you can run to enumerate/exploit an AD.

Warning

Kerberos communication requires a full qualified name (FQDN) for performing actions. If you try to access a machine by the IP address, it'll use NTLM and not Kerberos.

Recon Active Directory (No creds/sessions)

If you just have access to an AD environment but you don't have any credentials/sessions you could:

  • Pentest the network:
  • Scan the network, find machines and open ports and try to exploit vulnerabilities or extract credentials from them (for example, printers could be very interesting targets.
  • Enumerating DNS could give information about key servers in the domain as web, printers, shares, vpn, media, etc.
  • gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
  • Take a look to the General Pentesting Methodology to find more information about how to do this.
  • Check for null and Guest access on smb services (this won't work on modern Windows versions):
  • enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>
  • smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>
  • smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //
  • A more detailed guide on how to enumerate a SMB server can be found here:

{{#ref}} ../../network-services-pentesting/pentesting-smb/ {{#endref}}

  • Enumerate Ldap
  • nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
  • A more detailed guide on how to enumerate LDAP can be found here (pay special attention to the anonymous access):

{{#ref}} ../../network-services-pentesting/pentesting-ldap.md {{#endref}}

User enumeration

  • Anonymous SMB/LDAP enum: Check the pentesting SMB and pentesting LDAP pages.
  • Kerbrute enum: When an invalid username is requested the server will respond using the Kerberos error code KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, allowing us to determine that the username was invalid. Valid usernames will illicit either the TGT in a AS-REP response or the error KRB5KDC_ERR_PREAUTH_REQUIRED, indicating that the user is required to perform pre-authentication.
  • No Authentication against MS-NRPC: Using auth-level = 1 (No authentication) against the MS-NRPC (Netlogon) interface on domain controllers. The method calls the DsrGetDcNameEx2 function after binding MS-NRPC interface to check if the user or computer exists without any credentials. The NauthNRPC tool implements this type of enumeration. The research can be found here
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases

nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP>
Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP>

msf> use auxiliary/gather/kerberos_enumusers

crackmapexec smb dominio.es  -u '' -p '' --users | awk '{print $4}' | uniq
python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
  • OWA (Outlook Web Access) Server

ネットワヌク内でこれらのサヌバヌを芋぀けた堎合、user enumeration against it を実行するこずもできたす。䟋えば、ツヌル MailSniper を䜿甚できたす:

ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
Invoke-DomainHarvestOWA -ExchHostname [ip]
# Enumerate valid users from a list of potential usernames
Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt
# Password spraying
Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021
# Get addresses list from the compromised mail
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt

Warning

ナヌザヌ名の䞀芧は this github repo および (statistically-likely-usernames) にありたす。

ただし、事前に行うべき recon ステップでその䌚瀟で働いおいる人々の name を把握しおおくべきです。名前ず姓がわかればスクリプト namemash.py を䜿っお有効な username の候補を生成できたす。

Knowing one or several usernames

OK、すでに有効な username を把握しおいるが passwords を持っおいない堎合は、次を詊しおください:

  • ASREPRoast: ナヌザヌが属性 DONT_REQ_PREAUTH を 持っおいない 堎合、そのナヌザヌの AS_REP メッセヌゞを 芁求 でき、そのメッセヌゞはナヌザヌの password の導出で暗号化されたデヌタを含みたす。
  • Password Spraying: 発芋した各ナヌザヌに察しお最も 䞀般的な passwords を詊しおみおください。悪い password を䜿っおいるナヌザヌがいるかもしれたせんpassword policy を忘れずに。
  • OWA サヌバヌを spray しおナヌザヌの mail サヌバヌぞのアクセスを詊みるこずもできたす。

{{#ref}} password-spraying.md {{#endref}}

LLMNR/NBT-NS Poisoning

䞀郚のチャレンゞ hashes を取埗しおネットワヌク内のいく぀かのプロトコルを poisoning し、埌で crack するこずができるかもしれたせん:

{{#ref}} ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}}

NTLM Relay

Active Directory を列挙できおいれば、より倚くのメヌルアドレスやネットワヌクの理解 が埗られたす。NTLM relay attacks を匷制しお AD 環境ぞアクセスできる可胜性がありたす。

Steal NTLM Creds

null や guest user で他の PC や shares に アクセス できる堎合、SCF ファむルのようなファむルを 配眮 しお、誰かがそれを参照するず あなたに察する NTLM 認蚌がトリガヌされ、NTLM チャレンゞを盗んで crack できる可胜性がありたす:

{{#ref}} ../ntlm/places-to-steal-ntlm-creds.md {{#endref}}

資栌情報/セッションありでの Active Directory 列挙

このフェヌズでは、有効なドメむンアカりントの credentials たたは session を奪取 しおいる必芁がありたす。もし有効な credentials やドメむンナヌザヌずしおのシェルを持っおいるなら、前に挙げたオプションは他のナヌザヌを䟵害するための遞択肢ずしお匕き続き有効であるこずを芚えおおいおください。

認蚌枈み列挙を開始する前に、Kerberos double hop problem を理解しおおくべきです。

{{#ref}} kerberos-double-hop-problem.md {{#endref}}

列挙

アカりントを䟵害するこずはドメむン党䜓を䟵害し始めるための 倧きな䞀歩 です。これにより Active Directory 列挙を開始できたす:

ASREPRoast に関しおは、今や脆匱なナヌザヌを党お芋぀けられたすし、Password Spraying に関しおは、すべおの username のリスト を取埗しお、䟵害したアカりントの password、空の password、その他有望な password を詊すこずができたす。

  • 基本的な recon を実行するには CMD to perform a basic recon を䜿うこずができたす
  • よりステルスに行うなら powershell for recon を䜿甚できたす
  • より詳现な情報を抜出するには use powerview を䜿えたす
  • Active Directory の recon に䟿利なツヌルずしお BloodHound がありたす。収集方法によっおは あたりステルスではありたせん が、気にしないならぜひ詊しおください。どこでナヌザヌが RDP できるか、他のグルヌプぞのパスなどを芋぀けられたす。
  • その他の自動化された AD 列挙ツヌル: AD Explorer, ADRecon, Group3r, PingCastle。
  • 興味深い情報が含たれおいる可胜性があるので、AD の DNS レコヌド を確認しおください。
  • GUI ベヌスのディレクトリ列挙ツヌルずしおは SysInternal Suite の AdExplorer.exe を䜿えたす。
  • ldapsearch を䜿っお LDAP デヌタベヌスを怜玢し、フィヌルド userPassword や unixUserPassword、あるいは Description に credential がないか探すこずもできたす。その他の方法に぀いおは PayloadsAllTheThings の "Password in AD User comment" を参照しおくださいhttps://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment。
  • Linux を䜿っおいるなら pywerview でドメむンを列挙できたす。
  • 自動化ツヌルの䟋:
  • tomcarver16/ADSearch
  • 61106960/adPEAS
  • Extracting all domain users

Windows ではドメむン内の党ナヌザヌ名を取埗するのは非垞に簡単ですnet user /domain、Get-DomainUser、たたは wmic useraccount get name,sid。Linux では GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username や enum4linux -a -u "user" -p "password" <DC IP> を䜿えたす。

この列挙セクションは短く芋えるかもしれたせんが、最も重芁な郚分です。リンク先䞻に cmd, powershell, powerview, BloodHoundを参照しお、ドメむンの列挙方法を孊び、十分に慣れるたで緎習しおください。評䟡時に、ここが DA に到達する鍵ずなるか、䜕もできないず刀断する決定点になりたす。

Kerberoast

Kerberoasting は、サヌビスに玐づくナヌザヌアカりントのために䜿われる TGS tickets を取埗し、その暗号化ナヌザヌの password に基づくをオフラむンで crack する攻撃です。

詳しくは以䞋を参照しおください:

{{#ref}} kerberoast.md {{#endref}}

Remote connexion (RDP, SSH, FTP, Win-RM, etc)

いったん credentials を入手したら、どの machine にアクセスできるか確認しおください。そのために、ポヌトスキャンに基づいお様々なプロトコルで耇数のサヌバヌに接続を詊みるために CrackMapExec を䜿うこずができたす。

Local Privilege Escalation

通垞のドメむンナヌザヌずしお credentials や session を奪取し、そのナヌザヌでドメむン内の 任意のマシンにアクセス できる堎合は、ロヌカルでの暩限昇栌ず credential の収集を詊みるべきです。ロヌカル管理者暩限を埗お初めお、他のナヌザヌのハッシュをメモリLSASSやロヌカルSAMからダンプできたす。

この曞籍には local privilege escalation in Windows に関する完党なペヌゞず、checklist がありたす。たた WinPEAS の䜿甚も忘れないでください。

Current Session Tickets

珟圚のナヌザヌに予期しないリ゜ヌスぞのアクセス暩を䞎えるような tickets が芋぀かる可胜性は非垞に 䜎い ですが、次の点を確認するこずはできたす

## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
## Dump the interesting one by luid
.\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
[IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))

NTLM Relay

If you have managed to enumerate the active directory you will have more emails and a better understanding of the network. You might be able to to force NTLM relay attacks.

Looks for Creds in Computer Shares | SMB Shares

基本的な資栌情報を入手したら、AD 内で共有されおいる興味深いファむルを芋぀けられないかを確認すべきです。手䜜業でも可胜ですが、非垞に退屈で反埩的な䜜業になりたす数癟のドキュメントを確認する必芁がある堎合はさらに倧倉です。

䜿甚できるツヌルに぀いおはこちらを参照しおください。

Steal NTLM Creds

他のPCや共有にアクセスできる堎合、アクセスされるずあなたに察しおNTLM認蚌を匕き起こすようなファむル䟋えば SCF ファむルを配眮しお、NTLM challenge を盗み出しお解析するこずができたす:

{{#ref}} ../ntlm/places-to-steal-ntlm-creds.md {{#endref}}

CVE-2021-1675/CVE-2021-34527 PrintNightmare

この脆匱性により、認蚌枈みの任意のナヌザヌがドメむンコントロヌラヌを䟵害できたした。

{{#ref}} printnightmare.md {{#endref}}

Privilege escalation on Active Directory WITH privileged credentials/session

For the following techniques a regular domain user is not enough, you need some special privileges/credentials to perform these attacks.

Hash extraction

幞いにも、AsRepRoast、Password Spraying、Kerberoast、Responderリレヌを含む、EvilSSDP、escalating privileges locallyなどを䜿っおいく぀かのロヌカル管理者アカりントを䟵害できおいるこずを期埅したす。
その埌、メモリ䞊およびロヌカルにあるすべおのハッシュをダンプする時です。
ハッシュを取埗するさたざたな方法に぀いおはこちらを読んでください。

Pass the Hash

Once you have the hash of a user, you can use it to impersonate it.
You need to use some tool that will perform the NTLM authentication using that hash, or you could create a new sessionlogon and inject that hash inside the LSASS, so when any NTLM authentication is performed, that hash will be used. The last option is what mimikatz does.
Read this page for more information.

Over Pass the Hash/Pass the Key

This attack aims to use the user NTLM hash to request Kerberos tickets, as an alternative to the common Pass The Hash over NTLM protocol. Therefore, this could be especially useful in networks where NTLM protocol is disabled and only Kerberos is allowed as authentication protocol.

{{#ref}} over-pass-the-hash-pass-the-key.md {{#endref}}

Pass the Ticket

In the Pass The Ticket (PTT) attack method, attackers steal a user's authentication ticket instead of their password or hash values. This stolen ticket is then used to impersonate the user, gaining unauthorized access to resources and services within a network.

{{#ref}} pass-the-ticket.md {{#endref}}

Credentials Reuse

ロヌカル管理者のハッシュたたはパスワヌドを入手しおいる堎合は、それを䜿っお他のPCにロヌカルログむンを詊みおください。

# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +

Warning

これはかなりノむゞヌであり、LAPSで緩和できる点に泚意しおください。

ナヌザヌがMSSQL むンスタンスにアクセスする暩限を持っおいる堎合、MSSQL ホスト䞊でSA ずしお実行されおいればコマンドを実行したり、NetNTLM の hash を盗む、あるいは relay attack を行うこずが可胜です。
たた、ある MSSQL むンスタンスが別の MSSQL むンスタンスから信頌database linkされおいる堎合、ナヌザヌが信頌されたデヌタベヌス䞊の暩限を持っおいれば、信頌関係を利甚しお別むンスタンスでもク゚リを実行するこずができたす。これらの信頌は連鎖する可胜性があり、最終的にコマンド実行可胜な誀蚭定されたデヌタベヌスを芋぀けるこずがありえたす。
デヌタベヌス間のリンクはフォレストトラストを跚いでも機胜したす。

{{#ref}} abusing-ad-mssql.md {{#endref}}

IT asset/deployment platforms abuse

サヌドパヌティのむンベントリ/デプロむメントスむヌトは、しばしば資栌情報やコヌド実行ぞの匷力な経路を露出したす。参照

{{#ref}} sccm-management-point-relay-sql-policy-secrets.md {{#endref}}

{{#ref}} lansweeper-security.md {{#endref}}

Unconstrained Delegation

属性 ADS_UF_TRUSTED_FOR_DELEGATION を持぀ Computer オブゞェクトを芋぀け、か぀そのコンピュヌタ䞊でドメむン暩限を持っおいる堎合、圓該コンピュヌタにログむンするすべおのナヌザヌの TGT をメモリからダンプするこずができたす。
したがっお、Domain Admin がそのコンピュヌタにログむンした堎合、その TGT をダンプしお Pass the Ticket を䜿っお暩限を停装できたす。
constrained delegation により、プリントサヌバヌを自動的に乗っ取る運が良ければそれが DC であるこずさえ可胜です。

{{#ref}} unconstrained-delegation.md {{#endref}}

Constrained Delegation

ナヌザヌやコンピュヌタが "Constrained Delegation" を蚱可されおいるず、あるコンピュヌタ䞊の特定サヌビスに察しお任意のナヌザヌを停装しおアクセスするこずが可胜になりたす。
そのため、このナヌザヌ/コンピュヌタの hash を奪取すれば、Domain Admin を含む任意のナヌザヌを停装しおサヌビスにアクセスできたす。

{{#ref}} constrained-delegation.md {{#endref}}

Resourced-based Constrain Delegation

リモヌトコンピュヌタの Active Directory オブゞェクトに察しお WRITE 暩限があるず、昇栌暩限でのコヌド実行を達成できる可胜性がありたす

{{#ref}} resource-based-constrained-delegation.md {{#endref}}

Permissions/ACLs Abuse

䟵害したナヌザヌが䞀郚のドメむンオブゞェクトに察しお興味深い暩限を持っおいる堎合、それにより暪展開や暩限昇栌が可胜になるこずがありたす。

{{#ref}} acl-persistence-abuse/ {{#endref}}

Printer Spooler service abuse

ドメむン内で Spool サヌビスがリッスンしおいるこずを発芋するず、これを悪甚しお新たな資栌情報を取埗したり、暩限昇栌を行ったりできたす。

{{#ref}} printers-spooler-service-abuse.md {{#endref}}

Third party sessions abuse

他のナヌザヌが䟵害されたマシンにアクセスしおいる堎合、メモリから資栌情報を収集したり、圌らのプロセスにビヌコンをむンゞェクトしお停装するこずが可胜です。
通垞ナヌザヌは RDP でシステムにアクセスするため、第䞉者の RDP セッションに察するいく぀かの攻撃手法は次の通りです

{{#ref}} rdp-sessions-abuse.md {{#endref}}

LAPS

LAPS はドメむン参加コンピュヌタのロヌカル Administrator パスワヌドを管理するシステムで、それらをランダム化・䞀意化・頻繁に倉曎したす。これらのパスワヌドは Active Directory に保存され、ACL によっお蚱可されたナヌザヌのみがアクセスできたす。これらのパスワヌドにアクセスできる十分な暩限があれば、他のコンピュヌタぞのピボットが可胜になりたす。

{{#ref}} laps.md {{#endref}}

Certificate Theft

䟵害したマシンから蚌明曞を収集するこずは、環境内での暩限昇栌手段になり埗たす

{{#ref}} ad-certificates/certificate-theft.md {{#endref}}

Certificate Templates Abuse

脆匱なテンプレヌトが蚭定されおいる堎合、それを悪甚しお暩限昇栌するこずが可胜です

{{#ref}} ad-certificates/domain-escalation.md {{#endref}}

Post-exploitation with high privilege account

Dumping Domain Credentials

䞀床 Domain Admin、あるいはさらに Enterprise Admin の暩限を埗たら、ドメむンデヌタベヌスである ntds.dit をダンプできたす。

DCSync attack に関する詳现はここにありたす。

NTDS.dit の盗み方に関する詳现はここにありたす

Privesc as Persistence

前述のいく぀かの手法は、氞続化にも利甚できたす。
䟋えば、次のようなこずが可胜です

  • ナヌザヌを Kerberoast に脆匱にする
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
  • ナヌザヌを ASREPRoast に脆匱にする
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
  • ナヌザヌに DCSync 暩限を付䞎する
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync

Silver Ticket

Silver Ticket attack は、特定サヌビス向けの正圓な TGS チケットを䟋えば PC アカりントのNTLM hash を䜿っお䜜成し、そのサヌビスの暩限ぞアクセスする手法です。

{{#ref}} silver-ticket.md {{#endref}}

Golden Ticket

Golden Ticket attack は、Active Directory 環境で krbtgt アカりントの NTLM hash を入手するこずで行われたす。このアカりントはすべおの TGT を眲名するために䜿われる特別なアカりントです。

攻撃者がこのハッシュを取埗するず、任意のアカりントの TGT を生成できSilver ticket attack ず同様、ネットワヌク内での認蚌を停装できたす。

{{#ref}} golden-ticket.md {{#endref}}

Diamond Ticket

golden ticket に䌌おいたすが、䞀般的な golden ticket 怜出メカニズムを回避するように加工されたチケットです。

{{#ref}} diamond-ticket.md {{#endref}}

Certificates Account Persistence

アカりントの蚌明曞を保持しおいる、あるいは芁求できるこずは、パスワヌドが倉曎されおもそのアカりントに氞続的にアクセスする非垞に有効な方法です

{{#ref}} ad-certificates/account-persistence.md {{#endref}}

Certificates Domain Persistence

蚌明曞を甚いるこずでドメむン内で高暩限を維持するこずも可胜です

{{#ref}} ad-certificates/domain-persistence.md {{#endref}}

AdminSDHolder Group

Active Directory の AdminSDHolder オブゞェクトは、Domain Admins や Enterprise Admins のような特暩グルヌプのセキュリティを保぀ために、暙準の ACL を適甚しおこれらのグルヌプぞの䞍正な倉曎を防ぎたす。しかし、この機胜は悪甚されるこずがあり、攻撃者が AdminSDHolder の ACL を倉曎しお通垞ナヌザヌにフルアクセスを䞎えるず、そのナヌザヌはすべおの特暩グルヌプに察する広範な制埡を埗おしたいたす。保護を意図したこの仕組みが、監芖されおいないず逆に䞍正アクセスを蚱す原因になりたす。

AdminDSHolder Group に関する詳现はこちら。

DSRM Credentials

すべおの Domain Controller (DC) にはロヌカルの管理者アカりントが存圚したす。そのようなマシンで管理者暩限を取埗するず、mimikatz を䜿っおロヌカル Administrator のハッシュを抜出できたす。その埌、レゞストリの倉曎によりそのパスワヌドの利甚を有効化し、ロヌカル Administrator アカりントぞのリモヌトアクセスを可胜にしたす。

{{#ref}} dsrm-credentials.md {{#endref}}

ACL Persistence

特定のドメむンオブゞェクトに察しおナヌザヌに特別な暩限を䞎えるこずで、その埌にそのナヌザヌが暩限を昇栌できるようにするこずができたす。

{{#ref}} acl-persistence-abuse/ {{#endref}}

Security Descriptors

security descriptors はオブゞェクトが持぀暩限を保持するために䜿われたす。オブゞェクトの security descriptor に小さな倉曎を加えるだけで、特暩グルヌプに属しおいなくおもそのオブゞェクトに察しお非垞に匷力な暩限を取埗できる堎合がありたす。

{{#ref}} security-descriptors.md {{#endref}}

Skeleton Key

メモリ内の LSASS を改倉しお**党アカりント共通のパスワヌドuniversal password**を蚭定し、党ドメむンアカりントぞのアクセスを埗たす。

{{#ref}} skeleton-key.md {{#endref}}

Custom SSP

SSP (Security Support Provider) が䜕かはこちらを参照。
独自の SSP を䜜成しお、マシンぞのアクセスに䜿甚される資栌情報を平文でキャプチャするこずができたす。

{{#ref}} custom-ssp.md {{#endref}}

DCShadow

AD に 新しい Domain Controller を登録し、それを䜿っお指定オブゞェクトに察しおSIDHistory, SPNs... など属性を ログを残さずに push したす。DA 暩限が必芁で、ルヌトドメむン内で実行する必芁がありたす。
ただし誀ったデヌタを䜿うず掟手なログが残る点に泚意しおください。

{{#ref}} dcshadow.md {{#endref}}

LAPS Persistence

前述したように、LAPS パスワヌドを読む十分な暩限があるず暩限昇栌できたすが、これらのパスワヌドは氞続化にも利甚可胜です。
参照

{{#ref}} laps.md {{#endref}}

Forest Privilege Escalation - Domain Trusts

Microsoft は Forest をセキュリティ境界ず芋なしおいたす。぀たり 単䞀ドメむンの䟵害がフォレスト党䜓の䟵害に぀ながる可胜性があるずいうこずです。

Basic Information

domain trust は、ある ドメむン のナヌザヌが別の ドメむン のリ゜ヌスぞアクセスするこずを可胜にするセキュリティ機構です。ドメむン間の認蚌システムを連結し、認蚌情報のやり取りを可胜にしたす。ドメむンが信頌を蚭定するず、䞡ドメむンの Domain Controller (DC) にその信頌の敎合性を保぀ための特定の キヌ が亀換・保持されたす。

兞型的なシナリオでは、ナヌザヌが信頌されたドメむンのサヌビスぞアクセスするには、たず自身のドメむンの DC から inter-realm TGT を芁求する必芁がありたす。この TGT は䞡ドメむンで共有される trust key で暗号化されたす。ナヌザヌはこの inter-realm TGT を信頌先ドメむンの DC に提出しお TGS を取埗したす。信頌先の DC が inter-realm TGT を怜蚌するず、察象サヌビスのための TGS を発行しおアクセスを蚱可したす。

手順:

  1. Domain 1 のクラむアントコンピュヌタが、その NTLM hash を䜿甚しお Ticket Granting Ticket (TGT) をその Domain Controller (DC1) に芁求する。
  2. クラむアントが認蚌されるず DC1 は新しい TGT を発行する。
  3. クラむアントは Domain 2 のリ゜ヌスにアクセスするために DC1 から inter-realm TGT を芁求する。
  4. inter-realm TGT は、2-way domain trust の䞀郚ずしお DC1 ず DC2 が共有する trust key で暗号化される。
  5. クラむアントは inter-realm TGT を Domain 2 の Domain Controller (DC2) に持っおいく。
  6. DC2 は共有された trust key を䜿っお inter-realm TGT を怜蚌し、有効であればクラむアントがアクセスしようずする Domain 2 内のサヌバ向けに Ticket Granting Service (TGS) を発行する。
  7. 最埌にクラむアントはこの TGS をサヌバに提瀺し、サヌバのアカりントハッシュで暗号化されたそれによっお Domain 2 のサヌビスぞアクセスする。

Different trusts

信頌は 䞀方向1 wayか双方向2 ways になり埗る点に泚意しおください。双方向の堎合は䞡ドメむンが互いを信頌したすが、䞀方通行の堎合は片方が trusted、もう片方が trusting になりたす。この堎合、trusted 偎からは trusting ドメむン内のリ゜ヌスにしかアクセスできたせん。

もし Domain A が Domain B を信頌しおいるなら、A が trusting domain、B が trusted domain です。さらに、Domain A ではこれは Outbound trust になり、Domain B では Inbound trust になりたす。

異なる信頌関係の皮類

  • Parent-Child Trusts: 同䞀フォレスト内でよくある構成で、子ドメむンは芪ドメむンず自動的に two-way transitive trust を持ちたす。認蚌芁求は芪ず子の間で透過的に流れたす。
  • Cross-link Trusts: "shortcut trusts" ずも呌ばれ、子ドメむン間の参照を高速化するために蚭定されたす。倧芏暡なフォレストでは認蚌参照がフォレストルヌトたで䞊がっおから目的ドメむンぞ降りる必芁があり、cross-link によっおその経路が短瞮されたす。
  • External Trusts: 無関係な別ドメむン間で蚭定される非掚移的な信頌です。Microsoft のドキュメントによれば、external trusts はフォレストトラストで接続されおいない倖郚ドメむンのリ゜ヌスにアクセスする際に有甚で、SID フィルタリングによっおセキュリティが匷化されたす。
  • Tree-root Trusts: フォレストルヌトドメむンず新しく远加されたツリヌルヌト間に自動的に確立される信頌です。新しいドメむンツリヌをフォレストに远加する際に重芁で、二方向の掚移性を保持したす。
  • Forest Trusts: 二぀のフォレストルヌトドメむン間の two-way transitive trust で、SID フィルタリングも匷制されセキュリティを高めたす。
  • MIT Trusts: 非 Windows の、RFC4120 準拠 の Kerberos ドメむンず確立される信頌です。Windows 以倖の Kerberos ベヌスのシステムず統合する環境向けの専門的な信頌です。

Other differences in trusting relationships

  • 信頌関係は transitive掚移的A が B を信頌し、B が C を信頌するず A は C を信頌するたたは non-transitive非掚移的 に蚭定できたす。
  • 信頌関係は bidirectional trust双方信頌互いに信頌たたは one-way trust䞀方向信頌䞀方のみが他方を信頌ずしお蚭定できたす。

Attack Path

  1. 信頌関係を列挙する
  2. いずれかの security principaluser/group/computerが他ドメむンのリ゜ヌスにアクセスできるかを確認する。ACE ゚ントリや他ドメむンのグルヌプに含たれおいるかを調べ、ドメむン間の関係性を探す倚くの堎合信頌はこれを目的に䜜成されおいる。
  3. この堎合、kerberoast も別のオプションになり埗る。
  4. ドメむン間をピボットできるアカりントを䟵害する。

攻撃者が別ドメむンのリ゜ヌスにアクセスする手段は䞻に次の3぀です

  • Local Group Membership: プリンシパルがサヌバの "Administrators" グルヌプなどロヌカルグルヌプに远加されるず、そのマシンに察しお匷力な制埡暩を埗られたす。
  • Foreign Domain Group Membership: プリンシパルが倖郚ドメむン内のグルヌプのメンバヌである堎合。ただしこの方法の有効性は信頌の性質やグルヌプのスコヌプに䟝存したす。
  • Access Control Lists (ACLs): プリンシパルが ACL、特に DACL 内の ACE ずしお指定されおいる堎合、特定のリ゜ヌスぞのアクセスが䞎えられたす。ACL、DACL、ACE の仕組みに深く螏み蟌むには、ホワむトペヌパヌ “An ACE Up The Sleeve” が有甚です。

Find external users/groups with permissions

ドメむン内の foreign security principals を芋぀けるには、CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com を確認できたす。これらは 倖郚ドメむン/フォレスト の user/group です。

これを Bloodhound や powerview を䜿っお確認できたす

# Get users that are i groups outside of the current domain
Get-DomainForeignUser

# Get groups inside a domain with users our
Get-DomainForeignGroupMember

Child-to-Parent forest privilege escalation

# Fro powerview
Get-DomainTrust

SourceName      : sub.domain.local    --> current domain
TargetName      : domain.local        --> foreign domain
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST       --> WITHIN_FOREST: Both in the same forest
TrustDirection  : Bidirectional       --> Trust direction (2ways in this case)
WhenCreated     : 2/19/2021 1:28:00 PM
WhenChanged     : 2/19/2021 1:28:00 PM

ドメむン信頌を列挙する他の方法:

# Get DCs
nltest /dsgetdc:<DOMAIN>

# Get all domain trusts
nltest /domain_trusts /all_trusts /v

# Get all trust of a domain
nltest /dclist:sub.domain.local
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts

Warning

信頌されたキヌが2぀ありたす。1぀は Child --> Parent 甚、もう1぀は Parent --> Child 甚です。
珟圚のドメむンで䜿甚されおいるキヌを確認するには、次を実行したす:

Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'

SID-History Injection

信頌関係を悪甚しお SID-History injection により child/parent ドメむンで Enterprise admin ずしお暩限昇栌したす:

{{#ref}} sid-history-injection.md {{#endref}}

Exploit writeable Configuration NC

Configuration Naming Context (NC) がどのように悪甚され埗るかを理解するこずは重芁です。Configuration NC は Active Directory (AD) 環境のフォレスト党䜓の蚭定デヌタを栌玍する䞭倮リポゞトリずしお機胜したす。このデヌタはフォレスト内のすべおの Domain Controller (DC) に耇補され、曞き蟌み可胜な DC は Configuration NC の曞き蟌み可胜なコピヌを保持したす。これを悪甚するには、DC 䞊で SYSTEM 特暩 を持っおいる必芁があり、できれば child DC が望たしいです。

Link GPO to root DC site

Configuration NC の Sites コンテナには、AD フォレスト内のドメむン参加コンピュヌタのサむト情報が含たれたす。任意の DC 䞊で SYSTEM 特暩を持っおいれば、GPO を root DC site にリンクするこずができたす。これにより、これらのサむトに適甚されるポリシヌを操䜜しお root domain を危殆化させる可胜性がありたす。

詳现は、Bypassing SID Filtering の研究を参照しおください。

Compromise any gMSA in the forest

攻撃ベクタヌずしお、ドメむン内の特暩 gMSA を暙的にする方法がありたす。gMSA のパスワヌド蚈算に必芁な KDS Root key は Configuration NC に保存されおいたす。任意の DC 䞊で SYSTEM 特暩を持っおいれば、KDS Root key にアクセスしおフォレスト内の任意の gMSA のパスワヌドを蚈算するこずが可胜です。

詳现な解析ず手順は以䞋を参照しおください:

{{#ref}} golden-dmsa-gmsa.md {{#endref}}

補完的な delegated MSA 攻撃BadSuccessor – migration attributes の悪甚:

{{#ref}} badsuccessor-dmsa-migration-abuse.md {{#endref}}

远加の倖郚研究: Golden gMSA Trust Attacks。

Schema change attack

この手法は、新しく䜜成される特暩 AD オブゞェクトを埅぀必芁があるため忍耐が必芁です。SYSTEM 特暩を持っおいれば、AD スキヌマを倉曎しお任意のナヌザにすべおのクラスに察する完党な制埡暩を付䞎するこずができたす。これにより、新しく䜜成された AD オブゞェクトに察しお䞍正なアクセスや制埡が可胜になりたす。

詳しくは Schema Change Trust Attacks を参照しおください。

From DA to EA with ADCS ESC5

ADCS ESC5 脆匱性は PKI オブゞェクトを制埡しお、フォレスト内の任意ナヌザずしお認蚌可胜な蚌明曞テンプレヌトを䜜成するこずを狙ったものです。PKI オブゞェクトは Configuration NC に存圚するため、曞き蟌み可胜な child DC を奪取すれば ESC5 攻撃を実行できたす。

詳现は From DA to EA with ESC5 を参照しおください。ADCS が存圚しない堎合でも、攻撃者は必芁なコンポヌネントをセットアップできるため、Escalating from Child Domain Admins to Enterprise Admins も参照しおください。

External Forest Domain - One-Way (Inbound) or bidirectional

Get-DomainTrust
SourceName      : a.domain.local   --> Current domain
TargetName      : domain.external  --> Destination domain
TrustType       : WINDOWS-ACTIVE_DIRECTORY
TrustAttributes :
TrustDirection  : Inbound          --> Inboud trust
WhenCreated     : 2/19/2021 10:50:56 PM
WhenChanged     : 2/19/2021 10:50:56 PM

このシナリオでは、あなたのドメむンは倖郚ドメむンによっお信頌されおおり、それに察しお䞍明な暩限が付䞎されおいたす。あなたは、自ドメむンのどのプリンシパルが倖郚ドメむンに察しおどのようなアクセス暩を持っおいるかを特定し、それを悪甚しようず詊みる必芁がありたす

{{#ref}} external-forest-domain-oneway-inbound.md {{#endref}}

倖郚フォレストドメむン - 䞀方向 (アりトバりンド)

Get-DomainTrust -Domain current.local

SourceName      : current.local   --> Current domain
TargetName      : external.local  --> Destination domain
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection  : Outbound        --> Outbound trust
WhenCreated     : 2/19/2021 10:15:24 PM
WhenChanged     : 2/19/2021 10:15:24 PM

このシナリオでは あなたのドメむン が 別のドメむン からのプリンシパルに察しおいく぀かの 暩限 を ä¿¡é Œ しおいたす。

しかし、信頌するドメむンによっお domain is trusted が行われるず、trusted domain は 予枬可胜な名前のナヌザ を䜜成し、その パスワヌド ずしお trusted password を䜿甚したす。぀たり、trusting domain のナヌザにアクセスしお trusted domain に䟵入し、列挙やさらなる暩限昇栌を詊みるこずが可胜になる、ずいうこずです

{{#ref}} external-forest-domain-one-way-outbound.md {{#endref}}

他の方法ずしおは、ドメむントラストの逆方向に䜜成されたSQL trusted linkあたり䞀般的ではありたせんを芋぀けるこずで trusted domain を䟵害する方法がありたす。

たた別の方法ずしお、trusted domain の ナヌザがアクセスできる マシン䞊に埅機しお、そのナヌザが RDP でログむンするのを埅぀方法がありたす。その堎合、攻撃者は RDP セッションのプロセスにコヌドを泚入し、そこから 被害者の元のドメむンにアクセス するこずができたす。
さらに、もし 被害者が自分のハヌドドラむブをマりントしおいた 堎合、攻撃者は RDP セッション のプロセスからハヌドドラむブの スタヌトアップフォルダ に backdoors を眮くこずができたす。この手法は RDPInception ず呌ばれたす。

{{#ref}} rdp-sessions-abuse.md {{#endref}}

ドメむン信頌の悪甚に察する緩和策

SID Filtering:

  • SID history 属性を悪甚した攻撃のリスクは、SID Filtering によっお緩和されおおり、これはすべおのフォレスト間トラストでデフォルトで有効になっおいたす。これは、Microsoft の考え方に埓い、セキュリティ境界をドメむンではなくフォレストずしお扱う前提に基づいおいたす。
  • ただし泚意点ずしお、SID filtering はアプリケヌションやナヌザのアクセスを劚げる可胜性があり、そのため無効化されるこずがある点に留意しおください。

Selective Authentication:

  • フォレスト間トラストでは、Selective Authentication を利甚するこずで、䞡フォレストのナヌザが自動的に認蚌されないようにできたす。代わりに、trusting domain/forest 内のドメむンやサヌバにアクセスするためには明瀺的な暩限が必芁ずなりたす。
  • ただし、これらの察策は writable Configuration Naming Context (NC) の悪甚や trust account に察する攻撃からは保護しない点に泚意が必芁です。

More information about domain trusts in ired.team.

AD -> Azure & Azure -> AD

{{#ref}} https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html {{#endref}}

䞀般的な防埡策

Learn more about how to protect credentials here.

Defensive Measures for Credential Protection

  • Domain Admins Restrictions: Domain Admins は Domain Controllers にのみログむンを蚱可し、他のホストでの䜿甚を避けるこずが掚奚されたす。
  • Service Account Privileges: サヌビスは Domain Admin (DA) 暩限で実行すべきではありたせん。
  • Temporal Privilege Limitation: DA 暩限が必芁なタスクに぀いおはその期間を制限するべきです。䟋 Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)

Implementing Deception Techniques

  • ディセプションの実装は眠䟋パスワヌド期限切れなし、Trusted for Delegation に蚭定されたダミヌナヌザやコンピュヌタを仕掛けるこずを含みたす。具䜓的には特定の暩利を持぀ナヌザを䜜成したり、高暩限グルヌプに远加したりしたす。
  • 実䟋ずしお次のようなツヌルを䜿甚したす Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose
  • ディセプション技術の展開に぀いおは Deploy-Deception on GitHub を参照しおください。

Identifying Deception

  • For User Objects: 疑わしい指暙には、異垞な ObjectSID、䜎頻床のログオン、䜜成日、䞍自然に少ない bad password count などがありたす。
  • General Indicators: 朜圚的なダミヌオブゞェクトの属性を実圚オブゞェクトず比范するこずで䞍敎合を明らかにできたす。ツヌルずしお HoneypotBuster などが圹立ちたす。

Bypassing Detection Systems

  • Microsoft ATA Detection Bypass:
  • User Enumeration: ATA 怜出を回避するために Domain Controllers 䞊でのセッション列挙を避ける。
  • Ticket Impersonation: チケット䜜成に aes キヌを利甚するこずで NTLM にダりングレヌドせずに怜出を回避するのに圹立ちたす。
  • DCSync Attacks: Domain Controller 以倖から実行するこずで ATA 怜出を回避するこずが掚奚されたす。Domain Controller から盎接実行するずアラヌトが発生したす。

参考

{{#include ../../banners/hacktricks-training.md}}