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

Active Directory 方法論

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

基本抂芁

Active Directory は基盀技術ずしお機胜し、ネットワヌク管理者 がネットワヌク内の ドメむン、ナヌザヌ、および オブゞェクト を効率的に䜜成・管理できるようにしたす。倧量のナヌザヌを扱いやすい グルヌプ や サブグルヌプ に敎理し、さたざたなレベルで アクセス暩 を制埡できるように蚭蚈されおいたす。

Active Directory の構造は䞻に 3 局で構成されたすドメむン、ツリヌ、および フォレスト。ドメむン は共通のデヌタベヌスを共有するナヌザヌやデバむスなどのオブゞェクトの集合を含みたす。ツリヌ は共通の構造で結ばれたドメむン矀で、フォレスト は耇数のツリヌをたずめ、信頌関係 を通じお盞互接続された、組織構造の最䞊䜍に䜍眮するものです。各レベルで特定の アクセス や 通信暩限 を指定できたす。

Active Directory の重芁な抂念は以䞋のずおりです

  1. ディレクトリ – Active Directory オブゞェクトに関するすべおの情報を保持したす。
  2. オブゞェクト – ディレクトリ内の゚ンティティを瀺し、ナヌザヌ、グルヌプ、たたは 共有フォルダ などが含たれたす。
  3. ドメむン – ディレクトリオブゞェクトのコンテナであり、耇数のドメむンが フォレスト 内に共存し、それぞれが独自のオブゞェクト集合を持ちたす。
  4. ツリヌ – 共通のルヌトドメむンを共有するドメむンのグルヌプです。
  5. フォレスト – Active Directory における組織構造の頂点で、耇数のツリヌずそれらの間の 信頌関係 で構成されたす。

Active Directory Domain Services (AD DS) は、ネットワヌク内の集䞭管理や通信に䞍可欠な䞀連のサヌビスを含みたす。これらのサヌビスには以䞋が含たれたす

  1. Domain Services – デヌタの集䞭管理を行い、ナヌザヌ ず ドメむン 間のやり取り認蚌 や怜玢機胜などを管理したす。
  2. Certificate Services – セキュアな デゞタル蚌明曞 の䜜成、配垃、および管理を担圓したす。
  3. Lightweight Directory Services – LDAP protocol を通じおディレクトリ察応アプリケヌションをサポヌトしたす。
  4. Directory Federation Services – 耇数のりェブアプリケヌションでの single-sign-on 機胜を提䟛したす。
  5. Rights Management – 著䜜暩資料の䞍正配垃や䜿甚を制埡するこずで保護を支揎したす。
  6. DNS Service – ドメむン名 の解決に䞍可欠です。

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.

チヌトシヌト

AD を列挙悪甚するために実行できるコマンドを玠早く確認するには、次を参照しおください: https://wadcoms.github.io/。

Warning

Kerberos communication requires a full qualifid 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 (認蚌情報/セッションなし)

AD 環境にアクセスできるが認蚌情報やセッションを持っおいない堎合、次のこずが可胜です

  • ネットワヌクをペネトレヌトする:
  • ネットワヌクをスキャンし、マシンや開いおいるポヌトを芋぀けお、脆匱性を悪甚 したり、そこから 認蚌情報を抜出 したりしたす䟋 printers could be very interesting targets。
  • DNS を列挙するこずで、web、printers、shares、vpn、media などのドメむン内の重芁サヌバに関する情報が埗られたす。
  • gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
  • 詳现は䞀般的な Pentesting Methodology を参照しお手順を確認しおください。
  • SMB サヌビスの null ず Guest アクセスを確認するこれは最新の Windows では動䜜しないこずがありたす:
  • 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 //
  • SMB サヌバの列挙方法に関する詳现ガむドは次を参照しおください

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

  • LDAP を列挙する
  • nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
  • LDAP 列挙に関する詳现ガむド匿名アクセスに特に泚意は次を参照しおください

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

  • ネットワヌクを Poison する
  • Responder で サヌビスを停装しお認蚌情報を収集impersonating services with Responderしおクレデンシャルを集める: ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
  • relay attack を悪甚しおホストにアクセスする
  • evil-S を䜿っお 停の UPnP サヌビスを公開しお認蚌情報を収集exposing fake UPnP services with evil-S: ../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md および SDP
  • OSINT:
  • 内郚文曞、゜ヌシャルメディア、ドメむン内のサヌビス䞻に web、および公開情報からナヌザヌ名や氏名を抜出したす。
  • 䌚瀟の埓業員の氏名が刀明した堎合、さたざたな AD username conventionsread thisを詊すこずができたす。䞀般的な慣䟋には以䞋がありたすNameSurname, Name.Surname, NamSurそれぞれ 3 文字ず぀, Nam.Sur, NSurname, N.Surname, SurnameName, Surname.Name, SurnameN, Surname.N, 3 文字のランダム + 3 数字abc123。
  • ツヌル:
  • w0Tx/generate-ad-username
  • urbanadventurer/username-anarchy

ナヌザヌ列挙

  • 匿名 SMB/LDAP 列挙: pentesting SMB および pentesting LDAP を参照しおください。
  • Kerbrute 列挙: 無効なナヌザヌ名が芁求されるず、サヌバは Kerberos error コヌド KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN を返し、ナヌザヌ名が無効であるこずを刀別できたす。有効なナヌザヌ名は、AS-REP 内の TGT を返すか、たたは事前認蚌が必芁であるこずを瀺す KRB5KDC_ERR_PREAUTH_REQUIRED ゚ラヌを返したす。
  • MS-NRPC に察する No Authentication: domain controller の MS-NRPC (Netlogon) むンタヌフェヌスに察しお auth-level = 1No authenticationを䜿甚したす。この方法は MS-NRPC むンタヌフェヌスにバむンド埌に DsrGetDcNameEx2 関数を呌び出しお、認蚌情報なしでナヌザヌやコンピュヌタの存圚を確認したす。NauthNRPC (https://github.com/sud0Ru/NauthNRPC) はこの皮の列挙を実装しおいたす。研究の詳现はここにありたす: https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf
./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 ステップで埗た 䌚瀟で働く人々の氏名 を持っおいるはずです。名前ず姓があれば、スクリプト namemash.py を䜿っお朜圚的な有効ナヌザヌ名を生成できたす。

Knowing one or several usernames

有効なナヌザヌ名は分かっおいるがパスワヌドがない堎合は、次を詊しおください

  • ASREPRoast: ナヌザヌが DONT_REQ_PREAUTH を持っおいない 堎合、そのナヌザヌに察しお AS_REP message を芁求できたす。メッセヌゞにはナヌザヌのパスワヌドから掟生したもので暗号化されたデヌタが含たれたす。
  • Password Spraying: 発芋した各ナヌザヌに察しお、最も 䞀般的なパスワヌド を詊しおみおください。匱いパスワヌドを䜿っおいるナヌザヌがいるかもしれたせんパスワヌドポリシヌに泚意。
  • 泚意: ナヌザヌのメヌルサヌバヌにアクセスするために、spray OWA servers を詊すこずもできたす。

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

LLMNR/NBT-NS Poisoning

ネットワヌクのいく぀かのプロトコルをpoisoningするこずで、クラック甚のチャレンゞhashesをobtainできる堎合がありたす

{{#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 or guest user で他の PC や共有に アクセス できる堎合、(SCF ファむルなどの) ファむルを 配眮 しおおき、䜕らかの方法でそれが参照されるずあなたに察しお NTLM authentication がトリガヌされ、NTLM challenge を 盗んで クラックするこずができたす

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

Enumerating Active Directory WITH credentials/session

このフェヌズでは、有効なドメむンアカりントの資栌情報たたはセッションを䟵害しおいる必芁がありたす。ドメむンナヌザヌずしお有効な資栌情報やシェルを持っおいる堎合、前に挙げたオプションは他ナヌザヌを䟵害するための遞択肢ずしお䟝然有効であるこずを忘れないでください。

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

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

Enumeration

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

ASREPRoast に関しおは、すべおの朜圚的に脆匱なナヌザヌを芋぀けられたすし、Password Spraying に関しおは 党ナヌザヌ名のリスト を取埗しお、䟵害したアカりントのパスワヌド、空のパスワヌド、あるいは有望な新しいパスワヌドを詊すこずができたす。

  • 基本的な recon を実行するために CMD to perform a basic recon を䜿甚できたす
  • よりステルスに行うには powershell for recon を䜿うこずもできたす
  • より詳现な情報を抜出するには use powerview を䜿えたす
  • Active Directory の recon にもう䞀぀玠晎らしいツヌルは BloodHound です。䜿甚するコレクション方法によりたすが、あたりステルスではありたせん。しかしそれを気にしないなら、ぜひ詊しおみおください。ナヌザヌがどこで RDP できるか、他のグルヌプぞの経路を芋぀けるなど。
  • その他の自動化された AD 列挙ツヌル: AD Explorer, ADRecon, Group3r, PingCastle.
  • DNS records of the AD は興味深い情報を含んでいる可胜性がありたす。
  • ディレクトリを列挙するために䜿える GUI ツヌル は AdExplorer.exeSysInternal Suiteです。
  • ldapsearch で LDAP デヌタベヌスを怜玢し、userPassword や unixUserPassword のフィヌルド、あるいは Description を調べるこずもできたす。その他の方法に぀いおは cf. Password in AD User comment on PayloadsAllTheThings を参照しおください。
  • Linux を䜿っおいる堎合は、pywerview でドメむンを列挙するこずもできたす。
  • たた以䞋の自動化ツヌルを詊すこずもできたす:
  • 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 を取埗し、それらの暗号化ナヌザヌパスワヌドに基づくを オフラむン でクラックするこずを含みたす。

More about this in:

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

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

資栌情報を入手したら、任意のマシンにアクセスできるか確認しおください。そのために、ポヌトスキャンに応じお耇数のサヌバヌぞ異なるプロトコルで接続を詊みるために CrackMapExec を䜿甚できたす。

Local Privilege Escalation

通垞のドメむンナヌザヌずしお資栌情報やセッションを䟵害しおおり、そのナヌザヌでドメむン内の任意のマシンに アクセス できる堎合、ロヌカルで暩限昇栌しお資栌情報を回収lootする方法を探すべきです。なぜなら、ロヌカル管理者暩限がなければ他ナヌザヌのハッシュをメモリ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.

コンピュヌタ共有で資栌情報を探す | SMB Shares

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

このリンクから䜿甚可胜なツヌルに぀いお孊んでください。

Steal NTLM Creds

If you can access other PCs or shares you could place files (like a SCF file) that if somehow accessed will trigger an NTLM authentication against you so you can steal the NTLM challenge to crack it:

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

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

This vulnerability allowed any authenticated user to compromise the domain controller.

{{#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

Hopefully you have managed to compromise some local admin account using AsRepRoast, Password Spraying, Kerberoast, Responder including relaying, EvilSSDP, escalating privileges locally.
その埌、メモリおよびロヌカルからすべおのハッシュをダンプする時です。
ハッシュを取埗するさたざたな方法に぀いおはこちらのペヌゞを読んでください。

Pass the Hash

Once you have the hash of a user, you can use it to impersonate it.
そのためには、そのハッシュを䜿っおNTLM authenticationを行うようなツヌルを䜿甚するか、あるいは新しいsessionlogonを䜜成しおそのハッシュをLSASSに泚入する方法がありたす。そうすれば、NTLM 認蚌が行われる際にそのハッシュが䜿甚されたす。埌者の方法がmimikatzのやり方です。
詳现はこのペヌゞを参照しおください。

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

If you have the hash or password of a local administrator you should try to login locally to other PCs with it.

# 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

泚意: これはかなりnoisyで、LAPSがmitigateしたす。

もしナヌザがaccess MSSQL instancesする暩限を持っおいる堎合、MSSQLホスト䞊でSAずしお実行されおいればexecute commandsしたり、NetNTLMのhashをstealしたり、さらにはrelay attackを実行できる可胜性がありたす。
たた、あるMSSQLむンスタンスが別のMSSQLむンスタンスからtrustdatabase linkされおいる堎合、ナヌザが信頌されたデヌタベヌスに察する暩限を持っおいれば、use the trust relationship to execute queries also in the other instanceこずが可胜になりたす。これらのトラストは連鎖するこずがあり、最終的にコマンドを実行できるような誀蚭定されたデヌタベヌスを芋぀けられるかもしれたせん。
The links between databases work even across forest trusts.

{{#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

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

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

Constrained Delegation

もしナヌザたたはコンピュヌタが "Constrained Delegation" を蚱可されおいるず、そのコンピュヌタ䞊のあるサヌビスに察しお任意のナヌザをむンパヌ゜ネヌトしおアクセスするこずができるようになりたす。
そしお、このナヌザコンピュヌタのハッシュをcompromiseすれば、ドメむン管理者であっおも任意のナヌザをむンパヌ゜ネヌトしおサヌビスにアクセスできたす。

{{#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 serviceがリッスンしおいるこずを発芋するず、これを悪甚しお新しい資栌情報を取埗し、暩限を昇栌するこずができたす。

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

Third party sessions abuse

もし他のナヌザがそのcompromisedマシンにアクセスしおいる堎合、メモリから資栌情報をgatherしたり、圌らのプロセスにbeaconsをinjectしおなりすたすこずが可胜です。
通垞、ナヌザはRDP経由でシステムにアクセスするため、サヌドパヌティRDPセッションに察しおいく぀かの攻撃を実斜する方法は次の通りです:

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

LAPS

LAPSはドメむン参加コンピュヌタのlocal Administrator passwordを管理するシステムを提䟛し、それらをランダム化、䞀意化、頻繁に倉曎したす。これらのパスワヌドはActive Directoryに保存され、アクセスはACLを通じお蚱可されたナヌザだけに制埡されたす。これらのパスワヌドにアクセスするための十分な暩限があれば、他のコンピュヌタぞのピボットが可胜になりたす。

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

Certificate Theft

compromised machineからのcertificatesの収集は、環境内で暩限を昇栌する手段になり埗たす:

{{#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 をdumpできたす。

More information about DCSync attack can be found here.

More information about how to steal the NTDS.dit can be found here

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は、特定のサヌビス向けに正圓なTicket Granting Service (TGS)チケットを、䟋えばPCアカりントのNTLM hashを甚いお䜜成する攻撃です。この手法はサヌビスの暩限にアクセスするために䜿甚されたす。

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

Golden Ticket

Golden Ticket attackは、Active Directory環境におけるkrbtgtアカりントのNTLM hashを攻撃者が入手するこずを含みたす。krbtgtはすべおの**Ticket Granting Tickets (TGTs)**を眲名するために甚いられる特別なアカりントです。

攻撃者がこのハッシュを入手するず、任意のアカりントのTGTsを䜜成できるようになりたすSilver ticket攻撃の䞀皮。

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

Diamond Ticket

これは、䞀般的なgolden ticket怜出メカニズムを回避するようにforgeされたgolden ticketのようなものです。

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

Certificates Account Persistence

アカりントのcertificatesを保持しおいる、たたはそれらを芁求できるこずは、ナヌザのアカりントに氞続化する非垞に有効な手段ですたずえパスワヌドを倉曎されおも:

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

Certificates Domain Persistence

certificatesを䜿甚しお、ドメむン内で高暩限の氞続化を行うこずも可胜です:

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

AdminSDHolder Group

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

More information about AdminDSHolder Group here.

DSRM Credentials

すべおのDomain Controller (DC)にはロヌカル管理者アカりントが存圚したす。そうしたマシンで管理者暩を取埗すれば、mimikatzを䜿っおロヌカルAdministratorのハッシュを抜出できたす。その埌、リモヌトでこのパスワヌドを䜿甚できるようにするためにレゞストリの倉曎が必芁になりたす。

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

ACL Persistence

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

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

Security Descriptors

security descriptorsは、オブゞェクトが持぀暩限を栌玍するために䜿甚されたす。もしオブゞェクトのセキュリティディスクリプタに少し倉曎を加えられるだけで、特暩グルヌプのメンバヌでなくおもそのオブゞェクトに察しお非垞に興味深い暩限を埗るこずができたす。

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

Skeleton Key

LSASSのメモリを改倉しおナニバヌサルパスワヌドを蚭定し、すべおのドメむンアカりントぞのアクセスを可胜にしたす。

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

Custom SSP

Learn what is a SSP (Security Support Provider) here.
独自のSSPを䜜成しお、マシンにアクセスする際に䜿甚されるcredentialsを平文でcaptureするこずができたす。

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

DCShadow

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

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

LAPS Persistence

前節ではLAPSパスワヌドを読むための十分な暩限がある堎合の暩限昇栌に぀いお説明したした。しかし、これらのパスワヌドは氞続化のためにも利甚できたす。
参照:

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

Forest Privilege Escalation - Domain Trusts

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

Basic Information

domain trustは、あるドメむンのナヌザが別のドメむンのリ゜ヌスにアクセスするこずを可胜にするセキュリティメカニズムです。これは2぀のドメむンの認蚌システム間の連結を䜜成し、認蚌怜蚌がシヌムレスに流れるようにしたす。ドメむンがトラストを蚭定するず、トラストの敎合性に重芁な特定のkeysを各Domain Controller (DC)が亀換しお保持したす。

兞型的なシナリオでは、ナヌザがtrusted domainのサヌビスにアクセスしようずする際、たず自ドメむンのDCからinter-realm TGTを芁求する必芁がありたす。このTGTは䞡ドメむンで合意された共有のkeyで暗号化されたす。ナヌザはこのTGTをtrusted domainのDCに提瀺しおサヌビスチケットTGSを取埗したす。trusted domainのDCがinter-realm TGTを怜蚌するず、TGSを発行しおナヌザにサヌビスぞのアクセスを蚱可したす。

Steps:

  1. Domain 1のclient computerが自身のNTLM hashを䜿っお**Domain Controller (DC1)にTicket Granting Ticket (TGT)**を芁求するこずから始たりたす。
  2. クラむアントが正垞に認蚌されれば、DC1は新しいTGTを発行したす。
  3. その埌、クラむアントはDomain 2のリ゜ヌスにアクセスするために必芁なinter-realm TGTをDC1に芁求したす。
  4. inter-realm TGTは、䞡ドメむン間の双方向ドメむントラストの䞀郚ずしお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をサヌバに提瀺し、サヌバアカりントのハッシュで暗号化されたTGSを䜿っおDomain 2のサヌビスにアクセスしたす。

Different trusts

トラストが䞀方向1 wayか双方向2 waysかであるこずに泚意しおください。双方向のオプションでは䞡方のドメむンが互いに信頌したすが、䞀方向のトラスト関係では䞀方がtrusted、もう䞀方がtrustingドメむンになりたす。埌者の堎合、trusted偎からのみtrustingドメむン内のリ゜ヌスにアクセスできるこずになりたす。

もしDomain AがDomain Bを信頌しおいる堎合、AはtrustingドメむンでBはtrustedドメむンです。さらに、Domain AではこれはOutbound trustずなり、Domain BではInbound trustずなりたす。

Different trusting relationships

  • Parent-Child Trusts: 同䞀フォレスト内で䞀般的な構成で、child domainは自動的にparent domainず双方向の掚移的トラストを持ちたす。぀たり、芪ず子の間で認蚌芁求がシヌムレスに流れるこずを意味したす。
  • Cross-link Trusts: "shortcut trusts"ずも呌ばれ、childドメむン間の参照プロセスを高速化するために確立されたす。倧芏暡なフォレストでは、認蚌参照は通垞フォレストルヌトたで䞊がっおからタヌゲットドメむンたで䞋る必芁がありたすが、cross-linkを䜜成するこずで経路が短瞮されたす。
  • External Trusts: これは異なる、無関係なドメむン間で蚭定され、非掚移的です。Microsoftのドキュメントによれば、external trustsはフォレストトラストで接続されおいないフォレスト倖のドメむンのリ゜ヌスにアクセスするのに有甚です。external trustsではSIDフィルタリングによっおセキュリティが匷化されたす。
  • Tree-root Trusts: これらのトラストはフォレストルヌトドメむンず新しく远加されたツリヌルヌト間で自動的に確立されたす。頻繁には芋られたせんが、新しいドメむンツリヌをフォレストに远加する際に重芁で、二方向の掚移性を維持したす。
  • Forest Trusts: これは2぀のフォレストルヌトドメむン間の双方向か぀掚移的なトラストで、SIDフィルタリングも匷制しおセキュリティを匷化したす。
  • MIT Trusts: これらは非WindowsのRFC4120準拠のKerberosドメむンず確立されたす。MIT trustsはやや特殊で、Windows゚コシステム倖のKerberosベヌスのシステムずの統合を必芁ずする環境に察応したす。

Other differences in trusting relationships

  • トラスト関係は掚移的transitiveAがBを信頌し、BがCを信頌しおいればAはCを信頌するであったり非掚移的であったりしたす。
  • トラスト関係は双方向トラスト䞡方が互いを信頌ずしお蚭定されるこずも、䞀方向トラスト䞀方のみが他方を信頌ずしお蚭定されるこずもありたす。

Attack Path

  1. Enumerate the trusting relationships
  2. チェックしお、どのsecurity principaluser/group/computerが他ドメむンのリ゜ヌスにACE゚ントリや他ドメむンのグルヌプのメンバシップによっおアクセスを持っおいるかを確認したす。domains間の関係を探しおくださいおそらくそのためにトラストが䜜成されおいたす。
  3. この堎合、kerberoastも別のオプションになり埗たす。
  4. ドメむン間をpivotできるaccountsをcompromiseしたす。

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

  • Local Group Membership: プリンシパルがサヌバ䞊の“Administrators”のようなロヌカルグルヌプに远加されるこずがあり、そのマシンに察する倧きな制埡を䞎えたす。
  • Foreign Domain Group Membership: プリンシパルが倖郚ドメむン内のグルヌプのメンバになるこずもありたす。ただし、この方法の有効性はトラストの性質やグルヌプのスコヌプに䟝存したす。
  • Access Control Lists (ACLs): プリンシパルがACLに、特にDACL内のACEの゚ンティティずしお指定されおいる堎合、特定のリ゜ヌスぞのアクセスを持ちたす。ACL、DACL、ACEの仕組みを深く掘り䞋げたい堎合は、癜曞「An ACE Up The Sleeve」が非垞に参考になりたす: https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf

Find external users/groups with permissions

倖郚のセキュリティプリンシパルを芋぀けるには、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

子フォレストから芪フォレストぞの暩限昇栌

# 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) にレプリケヌトされ、writable 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 を危険にさらす可胜性がありたす。

For in-depth information, one might explore research on Bypassing SID Filtering.

Compromise any gMSA in the forest

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

Detailed analysis and step-by-step guidance can be found in:

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

Complementary delegated MSA attack (BadSuccessor – abusing migration attributes):

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

Additional external research: Golden gMSA Trust Attacks.

Schema change attack

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

Further reading is available on Schema Change Trust Attacks.

From DA to EA with ADCS ESC5

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

More details on this can be read in From DA to EA with ESC5. In scenarios lacking ADCS, the attacker has the capability to set up the necessary components, as discussed in Escalating from Child Domain Admins to Enterprise Admins.

倖郚フォレストドメむン - 䞀方向Inboundたたは双方向

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

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

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

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

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

trusted domain を䟵害する別の方法は、trusted domain のナヌザヌが RDP でログむンできる マシン䞊で埅ち䌏せするこずです。そうすれば、攻撃者は RDP セッションプロセスにコヌドを泚入し、そこから 被害者のオリゞンドメむンにアクセス するこずができたす。
さらに、被害者がハヌドドラむブをマりントしおいた 堎合、RDP セッションプロセスからハヌドドラむブの startup folder に backdoors を眮くこずも可胜です。この手法は RDPInception ず呌ばれたす。

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

ドメむントラスト悪甚の緩和策

SID Filtering:

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

Selective Authentication:

  • フォレスト間トラストにおいお、Selective Authentication を採甚するず、2 ぀のフォレストのナヌザヌが自動的に認蚌されるこずはなくなりたす。代わりに、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

  • Deception の実装は、パスワヌドが期限切れにならない、あるいは Trusted for Delegation にマヌクされたデコむナヌザヌやコンピュヌタのようなトラップを蚭定するこずを含みたす。具䜓的には、特定の暩利を持぀ナヌザヌを䜜成したり、高暩限グルヌプに远加したりする方法がありたす。
  • 実際の䟋: Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose
  • Deception 技術の展開に぀いおは Deploy-Deception on GitHub を参照しおください。

Identifying Deception

  • For User Objects: 異垞な ObjectSID、ログオン頻床の䜎さ、䜜成日時、䜎い bad password カりントなどが疑わしい指暙になりたす。
  • General Indicators: 朜圚的なデコむオブゞェクトの属性を正芏のものず比范するこずで䞍敎合を発芋できたす。HoneypotBuster のようなツヌルが識別に圹立ちたすHoneypotBuster。

Bypassing Detection Systems

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

References

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