hacktricks/windows-hardening/active-directory-methodology
2024-02-03 17:36:52 +00:00
..
acl-persistence-abuse Translated ['windows-hardening/active-directory-methodology/README.md', 2024-01-02 22:36:59 +00:00
ad-certificates Translated ['mobile-pentesting/android-app-pentesting/frida-tutorial/REA 2024-01-13 22:21:48 +00:00
abusing-ad-mssql.md Translated to Japanese 2023-07-07 23:42:27 +00:00
ad-certificates.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-03 00:54:19 +00:00
ad-dns-records.md Translated to Japanese 2023-07-07 23:42:27 +00:00
ad-information-in-printers.md Translated ['network-services-pentesting/1026-pentesting-rusersd.md', 'n 2024-01-12 08:20:35 +00:00
asreproast.md Translated ['generic-methodologies-and-resources/pentesting-wifi/README. 2024-02-02 13:22:44 +00:00
bloodhound.md Translated ['windows-hardening/active-directory-methodology/bloodhound.m 2024-01-03 10:50:45 +00:00
constrained-delegation.md Translated ['network-services-pentesting/1026-pentesting-rusersd.md', 'n 2024-01-12 08:20:35 +00:00
custom-ssp.md Translated ['network-services-pentesting/1026-pentesting-rusersd.md', 'n 2024-01-12 08:20:35 +00:00
dcshadow.md Translated ['network-services-pentesting/1026-pentesting-rusersd.md', 'n 2024-01-12 08:20:35 +00:00
dcsync.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-03 00:54:19 +00:00
diamond-ticket.md Translated ['network-services-pentesting/1026-pentesting-rusersd.md', 'n 2024-01-12 08:20:35 +00:00
dsrm-credentials.md Translated ['network-services-pentesting/1026-pentesting-rusersd.md', 'n 2024-01-12 08:20:35 +00:00
external-forest-domain-one-way-outbound.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-03 00:54:19 +00:00
external-forest-domain-oneway-inbound.md Translated to Japanese 2023-07-07 23:42:27 +00:00
golden-ticket.md Translated ['windows-hardening/active-directory-methodology/ad-certifica 2024-01-09 15:31:32 +00:00
kerberoast.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-03 00:54:19 +00:00
kerberos-authentication.md Translated to Japanese 2023-07-07 23:42:27 +00:00
kerberos-double-hop-problem.md Translated to Japanese 2023-07-07 23:42:27 +00:00
laps.md Translated ['windows-hardening/active-directory-methodology/laps.md'] to 2023-07-17 14:57:38 +00:00
over-pass-the-hash-pass-the-key.md Translated to Japanese 2023-07-07 23:42:27 +00:00
pass-the-ticket.md Translated ['windows-hardening/active-directory-methodology/README.md', 2024-01-02 22:36:59 +00:00
password-spraying.md Translated ['windows-hardening/active-directory-methodology/README.md', 2024-01-02 22:36:59 +00:00
printers-spooler-service-abuse.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-02-03 17:36:52 +00:00
printnightmare.md Translated to Japanese 2023-07-07 23:42:27 +00:00
privileged-groups-and-token-privileges.md Translated ['mobile-pentesting/android-app-pentesting/frida-tutorial/REA 2024-01-13 22:21:48 +00:00
rdp-sessions-abuse.md Translated ['windows-hardening/active-directory-methodology/ad-certifica 2024-01-09 15:31:32 +00:00
README.md Translated ['windows-hardening/active-directory-methodology/README.md', 2024-01-02 22:36:59 +00:00
resource-based-constrained-delegation.md Translated ['windows-hardening/active-directory-methodology/README.md', 2024-01-02 22:36:59 +00:00
security-descriptors.md Translated ['windows-hardening/active-directory-methodology/ad-certifica 2024-01-09 15:31:32 +00:00
sid-history-injection.md Translated to Japanese 2023-07-07 23:42:27 +00:00
silver-ticket.md Translated ['windows-hardening/active-directory-methodology/README.md', 2024-01-02 22:36:59 +00:00
skeleton-key.md Translated ['windows-hardening/active-directory-methodology/ad-certifica 2024-01-09 15:31:32 +00:00
unconstrained-delegation.md Translated to Japanese 2023-07-07 23:42:27 +00:00

Active Directory Methodology

AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

基本概要

Active Directoryは、ネットワーク管理者がドメイン、ユーザー、およびネットワーク内のオブジェクトを作成および管理することを可能にします。例えば、管理者はユーザーグループを作成し、サーバー上の特定のディレクトリへの特定のアクセス権を与えることができます。ネットワークが成長するにつれて、Active Directoryは多数のユーザーを論理的なグループとサブグループに編成し、各レベルでアクセス制御を提供する方法を提供します。

Active Directoryの構造には、1) ドメイン、2) ツリー、3) フォレストの3つの主要な階層が含まれています。同じデータベースを使用する複数のオブジェクトユーザーまたはデバイスは、単一のドメインにグループ化されることがあります。複数のドメインは、ツリーと呼ばれる単一のグループに組み合わせることができます。複数のツリーは、フォレストと呼ばれるコレクションにグループ化されることがあります。これらの各レベルには、特定のアクセス権と通信権限が割り当てられることがあります。

Active Directoryの主要な概念:

  1. ディレクトリ Active Directoryのオブジェクトに関するすべての情報を含む
  2. オブジェクト ディレクトリ内のほぼすべてのもの(ユーザー、グループ、共有フォルダーなど)を参照する
  3. ドメイン ディレクトリのオブジェクトはドメイン内に含まれる。"フォレスト"内には複数のドメインが存在し、それぞれに独自のオブジェクトコレクションがある。
  4. ツリー 同じルートを持つドメインのグループ。例: dom.local, email.dom.local, www.dom.local
  5. フォレスト フォレストは組織階層の最上位レベルであり、ツリーのグループで構成される。ツリーは信頼関係によって接続される。

Active Directoryはいくつかの異なるサービスを提供し、これらは"Active Directory Domain Services"、またはAD DSの傘下にあります。これらのサービスには以下が含まれます:

  1. ドメインサービス 中央集権的なデータを保存し、ユーザーとドメイン間の通信を管理する; ログイン認証と検索機能を含む
  2. 証明書サービス 安全な証明書を作成、配布、および管理する
  3. 軽量ディレクトリサービス 開放的な(LDAP)プロトコルを使用するディレクトリ対応アプリケーションをサポートする
  4. ディレクトリ連携サービス 単一セッションで複数のWebアプリケーションにユーザーを認証するシングルサインオン(SSO)を提供する
  5. 権利管理 著作権情報を保護し、デジタルコンテンツの不正使用と流通を防ぐ
  6. DNSサービス ドメイン名を解決するために使用される。

AD DSはWindows ServerWindows Server 10を含むに含まれており、クライアントシステムを管理するように設計されています。通常のバージョンのWindowsを実行しているシステムはAD DSの管理機能を持っていませんが、Active Directoryをサポートしています。これは、正しいログイン資格情報を持っているユーザーであれば、任意のWindowsコンピューターがWindowsワークグループに接続できることを意味します。
出典: https://techterms.com/definition/active_directory

Kerberos認証

ADを攻撃する方法を学ぶには、Kerberos認証プロセスを非常によく理解する必要があります。
まだその仕組みを知らない場合は、このページを読んでください。

チートシート

https://wadcoms.github.io/にアクセスして、ADを列挙/悪用するために実行できるコマンドのクイックビューを確認できます。

Recon Active Directory (No creds/sessions)

資格情報/セッションがない場合でも、AD環境にアクセスできる場合があります:

  • ネットワークのペネトレーションテスト:
  • ネットワークをスキャンし、マシンとオープンポートを見つけて、脆弱性を悪用するか、それらから資格情報を抽出する(例えば、プリンターは非常に興味深いターゲットになる可能性があります
  • DNSを列挙すると、ドメイン内の重要なサーバーWeb、プリンター、共有、VPN、メディアなどに関する情報が得られる可能性があります。
  • gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
  • これを行う方法についての詳細は、一般的なペネトレーションテスト方法論を参照してください。
  • 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サーバーを列挙する方法についての詳細なガイドはこちらです

{% content-ref url="../../network-services-pentesting/pentesting-smb.md" %} pentesting-smb.md {% endcontent-ref %}

  • Ldapを列挙する
  • nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
  • LDAPを列挙する方法についての詳細なガイドはこちらです匿名アクセスに特に注意してください

{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} pentesting-ldap.md {% endcontent-ref %}

ユーザー列挙

  • 匿名SMB/LDAP enum: ペネトレーションテスト SMBペネトレーションテスト LDAP のページをチェックしてください。
  • Kerbrute enum: 無効なユーザー名が要求された場合、サーバーは Kerberosエラー コード KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN を使用して応答し、ユーザー名が無効であることを判断できます。有効なユーザー名は、TGT in a AS-REP 応答またはエラー KRB5KDC_ERR_PREAUTH_REQUIRED を引き出し、ユーザーが事前認証を行う必要があることを示します。
./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
  • OWA (Outlook Web Access) サーバー

ネットワーク内でこれらのサーバーを見つけた場合、ユーザー列挙を実行することもできます。例えば、ツール 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

{% hint style="warning" %} このGitHubリポジトリでユーザー名のリストを見つけることができます。このgithubリポジトリ とこのリポジトリ (statistically-likely-usernames)。

しかし、このステップの前に実施したはずのリコンステップから、会社で働いている人々の名前を持っているべきです。名前と姓を使って、スクリプト namemash.py を使用して、有効な可能性のあるユーザー名を生成できます。 {% endhint %}

一つまたは複数のユーザー名を知っている

有効なユーザー名をすでに知っているが、パスワードはない場合は以下を試してみてください。

  • ASREPRoast: ユーザーが DONT_REQ_PREAUTH 属性を 持っていない 場合、そのユーザーの AS_REPメッセージを要求 でき、それにはユーザーのパスワードの派生によって暗号化されたデータが含まれます。
  • Password Spraying: 発見された各ユーザーで最も 一般的なパスワード を試してみましょう。もしかすると、何人かのユーザーが悪いパスワードを使用しているかもしれません(パスワードポリシーを念頭に置いてください!)。
  • OWAサーバーに対しても スプレー を行い、ユーザーのメールサーバーへのアクセスを試みることができます。

{% content-ref url="password-spraying.md" %} password-spraying.md {% endcontent-ref %}

LLMNR/NBT-NSポイズニング

ネットワークのプロトコルを ポイズニング することで、クラックするためのチャレンジ ハッシュ取得 することができるかもしれません。

{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}

NTMLリレー

アクティブディレクトリを列挙することができれば、より多くのメールアドレスとネットワークのより良い理解 を得ることができます。NTML リレー攻撃 を強制して、AD環境へのアクセスを得ることができるかもしれません。

NTLMクレデンシャルの盗難

nullまたはゲストユーザー で他のPCや共有に アクセス できる場合、SCFファイルのような ファイルを配置 して、何らかの方法でアクセスされた場合に NTML認証をトリガー し、クラックするための NTLMチャレンジ盗む ことができます。

{% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %} places-to-steal-ntlm-creds.md {% endcontent-ref %}

クレデンシャル/セッションを持つアクティブディレクトリの列挙

このフェーズでは、有効なドメインアカウントのクレデンシャルまたはセッションを 侵害している必要があります。有効なクレデンシャルを持っているか、ドメインユーザーとしてシェルを持っている場合、以前に提供されたオプションが他のユーザーを侵害するためのオプションであることを覚えておくべきです

認証された列挙を開始する前に、Kerberosダブルホップ問題 について知っておくべきです。

{% content-ref url="kerberos-double-hop-problem.md" %} kerberos-double-hop-problem.md {% endcontent-ref %}

列挙

アカウントを侵害することは、ドメイン全体を侵害するための大きなステップ です。なぜなら、アクティブディレクトリの列挙 を開始することができるからです。

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

  • 基本的なリコンを実行するために CMDを使用 することができます。
  • よりステルス性の高い powershellをリコンに使用 することもできます。
  • より詳細な情報を抽出するために powerviewを使用 することもできます。
  • アクティブディレクトリでのリコンには BloodHound という素晴らしいツールがあります。それは あまりステルス性がありません使用する収集方法によりますが、しかし、それが気にならない場合は、ぜひ試してみるべきです。RDPできるユーザーを見つけたり、他のグループへのパスを見つけたりすることができます。
  • 他の自動化されたAD列挙ツールには: AD Explorer, ADRecon, Group3r, PingCastle** があります。**
  • ADの DNSレコード には興味深い情報が含まれている可能性があります。
  • ディレクトリを列挙するために使用できる GUIツール には、SysInternal スイートの AdExplorer.exe があります。
  • ldapsearch を使用してLDAPデータベースを検索し、userPassword および unixUserPassword、または Description のフィールドでクレデンシャルを探すこともできます。他の方法については、PayloadsAllTheThingsのADユーザーコメントのパスワード を参照してください。
  • Linuxを使用している場合pywerview を使用してドメインを列挙することもできます。
  • 自動化されたツールとして以下も試してみることができます:
  • tomcarver16/ADSearch
  • 61106960/adPEAS
  • すべてのドメインユーザーの抽出

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チケットを収穫することです。これらのTGSチケットの一部は、ユーザーパスワードから派生したキーで 暗号化されています。その結果、そのクレデンシャルは オフラインでクラックされる可能性があります
詳細は以下で:

{% content-ref url="kerberoast.md" %} kerberoast.md {% endcontent-ref %}

リモート接続 (RDP, SSH, FTP, Win-RMなど)

いくつかのクレデンシャルを取得したら、任意の マシン にアクセスできるかどうかを確認できます。そのためには、ポートスキャンに応じて、CrackMapExec を使用して、さまざまなサーバーで異なるプロトコルで接続を試みることができます。

ローカル特権昇格

通常のドメインユーザーとしてのクレデンシャルまたはセッションを侵害し、このユーザーで ドメイン内の任意のマシンにアクセス できる場合は、ローカルで特権を昇格させ、クレデンシャルを略奪する方法を見つける べきです。これは、他のユーザーのハッシュをメモリLSASSおよびローカルSAMから ダンプするには、ローカル管理者権限が必要 だからです。

この本には Windowsでのローカル特権昇格 についての完全なページと チェックリスト があります。また、WinPEAS の使用を忘れないでください。

現在のセッションチケット

現在のユーザーに アクセス許可を与えるチケット が見つかることは非常に まれ ですが、確認することができます:

## 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>"))

NTMLリレー

アクティブディレクトリを列挙することに成功した場合、より多くのメールアドレスとネットワークの理解が深まります。NTMLのリレー攻撃を強制することができるかもしれません。

コンピュータ共有で資格情報を探す

基本的な資格情報を手に入れたら、AD内で共有されている興味深いファイルを探すべきです。手動で行うこともできますが、それは非常に退屈で繰り返しの作業です(特に、確認する必要がある数百のドキュメントが見つかった場合)。

このリンクをフォローして、使用できるツールについて学びましょう。

NTLM資格情報を盗む

他のPCや共有にアクセスできる場合、SCFファイルのようなファイルを配置して、何らかの方法でアクセスされた場合にあなたに対してNTML認証をトリガーし、NTLMチャレンジを盗むことができます:

{% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %} places-to-steal-ntlm-creds.md {% endcontent-ref %}

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

この脆弱性により、任意の認証済みユーザーがドメインコントローラーを侵害することができました。

{% content-ref url="printnightmare.md" %} printnightmare.md {% endcontent-ref %}

特権資格情報/セッションを持つActive Directoryでの権限昇格

以下の技術には、通常のドメインユーザーでは不十分で、これらの攻撃を実行するために特別な権限/資格情報が必要です。

ハッシュ抽出

AsRepRoastPassword SprayingKerberoastResponder(リレーを含む)、EvilSSDPローカルでの権限昇格を使用して、何らかのローカル管理者アカウントを侵害することに成功したことを願います。
次に、メモリとローカルにあるすべてのハッシュをダンプする時です。
ハッシュを取得するさまざまな方法については、このページを読んでください。

パス・ザ・ハッシュ

ユーザーのハッシュを手に入れたら、それを使用してなりすましを行うことができます。
NTLM認証をそのハッシュを使用して実行する何らかのツールを使用するか、新しいsessionlogonを作成してそのハッシュをLSASSに注入し、NTLM認証が実行されるときにそのハッシュが使用されるようにする必要があります。最後のオプションはmimikatzが行うことです。
詳細については、このページを読んでください。

Over Pass the Hash/Pass the Key

この攻撃は、ユーザーのNTLMハッシュを使用してKerberosチケットを要求することを目的としています。したがって、これは特にNTLMプロトコルが無効になっているネットワークで有用であり、認証プロトコルとしてKerberosのみが許可されている場合に特に有用です。

{% content-ref url="over-pass-the-hash-pass-the-key.md" %} over-pass-the-hash-pass-the-key.md {% endcontent-ref %}

パス・ザ・チケット

この攻撃はPass the Keyに似ていますが、ハッシュを使用してチケットを要求する代わりに、チケット自体が盗まれ、その所有者として認証に使用されます。

{% content-ref url="pass-the-ticket.md" %} pass-the-ticket.md {% endcontent-ref %}

資格情報の再利用

ローカル管理者ハッシュまたはパスワードを持っている場合、それを使用して他の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 +

{% hint style="warning" %} この方法はかなり騒々しいものであり、LAPSがこれを軽減するでしょう。 {% endhint %}

ユーザーがMSSQLインスタンスにアクセスする権限を持っている場合、MSSQLホストでコマンドを実行したり、NetNTLMのハッシュを盗んだり、さらにはリレー攻撃を行うことができるかもしれません。
また、異なるMSSQLインスタンスに信頼されているデータベースリンクされているMSSQLインスタンスがある場合、ユーザーが信頼されたデータベースに対する権限を持っていれば、信頼関係を利用して他のインスタンスでもクエリを実行することができます。これらの信頼は連鎖的になり、ユーザーはコマンドを実行できる誤設定されたデータベースを見つけるかもしれません。
データベース間のリンクは、フォレストトラストを越えても機能します。

{% content-ref url="abusing-ad-mssql.md" %} abusing-ad-mssql.md {% endcontent-ref %}

Unconstrained Delegation

ADS_UF_TRUSTED_FOR_DELEGATION属性を持つコンピュータオブジェクトを見つけ、そのコンピュータのドメイン権限を持っている場合、そのコンピュータにログインするすべてのユーザーのTGTをメモリからダンプすることができます。
したがって、ドメイン管理者がそのコンピュータにログインすると、そのTGTをダンプしてPass the Ticketを使用して彼を偽装することができます。
制約付き委任を利用すると、プリントサーバーを自動的に侵害することもできますできればDCになるでしょう

{% content-ref url="unconstrained-delegation.md" %} unconstrained-delegation.md {% endcontent-ref %}

Constrained Delegation

ユーザーやコンピュータが「制約付き委任」を許可されている場合、任意のユーザーになりすまして特定のコンピュータのサービスにアクセスすることができます。
その後、このユーザー/コンピュータのハッシュを侵害すると、任意のユーザー(ドメイン管理者でさえ)になりすまして一部のサービスにアクセスすることができます。

{% content-ref url="constrained-delegation.md" %} constrained-delegation.md {% endcontent-ref %}

Resource-based Constrained Delegation

そのコンピュータのADオブジェクトに書き込み権限を持っている場合、リモートコンピュータで特権を持つコード実行を獲得することが可能です。

{% content-ref url="resource-based-constrained-delegation.md" %} resource-based-constrained-delegation.md {% endcontent-ref %}

ACLs Abuse

侵害されたユーザーは、横移動や権限昇格を可能にするドメインオブジェクトに対する興味深い権限を持っているかもしれません。

{% content-ref url="acl-persistence-abuse/" %} acl-persistence-abuse {% endcontent-ref %}

Printer Spooler service abuse

ドメイン内でSpoolサービスがリスニングしているのを見つけることができれば、それを悪用して新しい資格情報を取得し、権限を昇格することができます。
Spoolerサービスの悪用方法についての詳細はこちら。

Third party sessions abuse

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

{% content-ref url="rdp-sessions-abuse.md" %} rdp-sessions-abuse.md {% endcontent-ref %}

LAPS

LAPSは、ドメインに参加しているコンピュータのローカル管理者パスワード(ランダム化され、ユニークで、定期的に変更される)を管理することを可能にします。これらのパスワードはActive Directoryに中央集中的に保存され、ACLを使用して承認されたユーザーに制限されます。これらのパスワードを読む十分な権限を持っていれば、他のコンピュータに移動することができます

{% content-ref url="laps.md" %} laps.md {% endcontent-ref %}

Certificate Theft

侵害されたマシンから証明書を収集することは、環境内で権限を昇格する方法の一つです:

{% content-ref url="ad-certificates/certificate-theft.md" %} certificate-theft.md {% endcontent-ref %}

Certificate Templates Abuse

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

{% content-ref url="ad-certificates/domain-escalation.md" %} domain-escalation.md {% endcontent-ref %}

高権限アカウントを使用した侵害後の活動

Dumping Domain Credentials

ドメイン管理者またはさらに良いエンタープライズ管理者の権限を得たら、ドメインデータベース_ntds.dit_をダンプすることができます。

DCSync攻撃に関する詳細情報はこちら

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攻撃は、サービスのNTLMハッシュ例えばPCアカウントハッシュを所有している場合に、そのサービスの有効なTGSを作成することに基づいています。これにより、カスタムTGSを偽造して任意のユーザーとしてそのサービスにアクセスすることが可能です(特権アクセスをコンピュータに)。

{% content-ref url="silver-ticket.md" %} silver-ticket.md {% endcontent-ref %}

Golden Ticket

krbtgt ADアカウントのNTLMハッシュを使用して、任意のユーザーとして有効なTGTを作成することができます。TGSの代わりにTGTを偽造する利点は、偽装したユーザーとしてドメイン内の任意のサービス(またはマシン)にアクセスできることです。

{% content-ref url="golden-ticket.md" %} golden-ticket.md {% endcontent-ref %}

Diamond Ticket

これらは、一般的なgolden tickets検出メカニズムを回避する方法で偽造されたgolden ticketsです。

{% content-ref url="diamond-ticket.md" %} diamond-ticket.md {% endcontent-ref %}

Certificates Account Persistence

アカウントの証明書を持っているか、それらをリクエストすることができると、ユーザーアカウントに永続的に留まることができます(たとえパスワードが変更されたとしても):

{% content-ref url="ad-certificates/account-persistence.md" %} account-persistence.md {% endcontent-ref %}

Certificates Domain Persistence

証明書を使用して、ドメイン内で高権限で永続的に留まることも可能です:

{% content-ref url="ad-certificates/domain-persistence.md" %} domain-persistence.md {% endcontent-ref %}

AdminSDHolder Group

AdminSDHolderオブジェクトのアクセス制御リストACLは、Active Directory内のすべての「保護されたグループ」とそのメンバーに権限をコピーするためのテンプレートとして使用されます。保護されたグループには、ドメイン管理者、管理者、エンタープライズ管理者、スキーマ管理者、バックアップオペレーター、krbtgtなどの特権グループが含まれます。
デフォルトでは、このグループのACLはすべての「保護されたグループ」内にコピーされます。これは、これらの重要なグループに意図的または偶発的な変更が加えられるのを防ぐためです。しかし、攻撃者がたとえば、通常のユーザーに完全な権限を与えることでグループAdminSDHolderのACLを変更すると、このユーザーは保護されたグループ内のすべてのグループに完全な権限を持つことになります1時間以内に
そして、誰かがこのユーザーをドメイン管理者例えばから削除しようとしても、1時間以内にユーザーはグループに戻ります。
AdminDSHolder Groupに関する詳細情報はこちら。

DSRM Credentials

DC内にはローカル管理者アカウントがあります。このマシンで管理者権限を持っている場合、mimikatzを使用してローカル管理者のハッシュをダンプすることができます。その後、レジストリを変更してこのパスワードをアクティブにし、このローカル管理者ユーザーにリモートアクセスできるようにします。

{% content-ref url="dsrm-credentials.md" %} dsrm-credentials.md {% endcontent-ref %}

ACL Persistence

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

{% content-ref url="acl-persistence-abuse/" %} acl-persistence-abuse {% endcontent-ref %}

Security Descriptors

セキュリティディスクリプターは、オブジェクトが他のオブジェクトに対して持つ権限を保存するために使用されます。オブジェクトのセキュリティディスクリプターをわずかに変更することができれば、特権グループのメンバーでなくてもそのオブジェクトに対して非常に興味深い権限を得ることができます。

{% content-ref url="security-descriptors.md" %} security-descriptors.md {% endcontent-ref %}

Skeleton Key

メモリ内のLSASSを変更して、ドメイン内の任意のアカウントで機能するマスターパスワードを作成します。

{% content-ref url="skeleton-key.md" %} skeleton-key.md {% endcontent-ref %}

Custom SSP

SSPセキュリティサポートプロバイダについてはこちらで学ぶ
自分自身のSSPを作成して、マシンにアクセスするために使用される資格情報をクリアテキストでキャプチャすることができます。\

{% content-ref url="custom-ssp.md" %} custom-ssp.md {% endcontent-ref %}

DCShadow

ADに新しいドメインコントローラーを登録し、それを使用して指定されたオブジェクトに対して属性SIDHistory、SPNなどログを残さずにプッシュします。これを行うにはDA権限が必要で、ルートドメイン内にいる必要があります。
間違ったデータを使用すると、非常に醜いログが表示されることに注意してください。

{% content-ref url="dcshadow.md" %} dcshadow.md {% endcontent-ref %}

LAPS Persistence

以前に、LAPSパスワードを読む十分な権限を持っている場合に権限を昇格する方法について

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

{% hint style="warning" %} 2つの信頼されたキーがあります。一つは Child --> Parent 用、もう一つは Parent --> Child 用です。
現在のドメインで使用されているキーを確認するには:

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

SID-History インジェクション

SID-History インジェクションを悪用して、信頼関係を乱用し、子/親ドメインのエンタープライズ管理者として権限を昇格させます:

{% content-ref url="sid-history-injection.md" %} sid-history-injection.md {% endcontent-ref %}

書き込み可能な Configuration NC の悪用

Configuration NC はフォレストの設定情報の主要なリポジトリであり、フォレスト内のすべての DC にレプリケートされます。さらに、フォレスト内のすべての書き込み可能な DC読み取り専用の DC は除く)は、書き込み可能な Configuration NC のコピーを保持しています。これを悪用するには、DC 上で SYSTEM として実行する必要があります。

以下に記載されている様々な方法でルートドメインを侵害することが可能です。

ルート DC サイトに GPO をリンクする

Configuration NC の Sites コンテナには、AD フォレストに参加しているコンピュータのすべてのサイトが含まれています。フォレスト内の任意の DC 上で SYSTEM として実行することにより、フォレストのルート DC のサイトを含むサイトに GPO をリンクし、これらを侵害することが可能です。

詳細はこちらで読むことができます Bypass SID filtering research

フォレスト内の任意の gMSA を侵害する

攻撃は、対象ドメイン内の特権を持つ gMSA に依存しています。

フォレスト内の gMSA のパスワードを計算するために使用される KDS Root キーは、Configuration NC に格納されています。フォレスト内の任意の DC 上で SYSTEM として実行することにより、KDS Root キーを読み取り、フォレスト内の任意の gMSA のパスワードを計算することができます。

詳細はこちらで読むことができます:Golden gMSA trust attack from child to parent

スキーマ変更攻撃

攻撃者は新しい特権 AD オブジェクトが作成されるのを待つ必要があります。

フォレスト内の任意の DC 上で SYSTEM として実行することにより、任意のユーザーに AD スキーマのすべてのクラスに対する完全な制御を付与することができます。その制御は、侵害されたプリンシパルに完全な制御を付与する ACE を任意の AD オブジェクトのデフォルトセキュリティ記述子に作成するために悪用される可能性があります。変更された AD オブジェクトタイプの新しいインスタンスは、この ACE を持つことになります。

詳細はこちらで読むことができます:Schema change trust attack from child to parent

ADCS ESC5 を使用して DA から EA へ

ADCS ESC5Vulnerable PKI Object Access Control攻撃は、PKI オブジェクトの制御を悪用して、フォレスト内の任意のユーザーとして認証するために悪用できる脆弱な証明書テンプレートを作成します。PKI オブジェクトはすべて Configuration NC に格納されているため、フォレスト内の任意の書き込み可能なDC を侵害した場合、ESC5 を実行することができます。

詳細はこちらで読むことができます:From DA to EA with ESC5

AD フォレストに ADCS がない場合、攻撃者はこちらに記載されているように必要なコンポーネントを作成することができます:Escalating from child domains admins to enterprise admins in 5 minutes by abusing AD CS, a follow up.

外部フォレストドメイン - 片方向(インバウンド)または双方向

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

このシナリオでは、あなたのドメインは信頼されています 外部のドメインによって、それに対して不特定の権限を与えられています。あなたはあなたのドメインのどのプリンシパルが外部ドメインにどのようなアクセス権を持っているかを見つけ出し、それを利用しようとする必要があります:

{% content-ref url="external-forest-domain-oneway-inbound.md" %} external-forest-domain-oneway-inbound.md {% endcontent-ref %}

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

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
このシナリオでは、**あなたのドメイン**が**異なるドメイン**からのプリンシパルにいくつかの**権限**を**信頼**しています。

しかし、**ドメインが信頼される**と、信頼しているドメインは**予測可能な名前**を持つユーザーを**作成**し、**信頼されたパスワードをパスワードとして使用**します。つまり、信頼しているドメインのユーザーが信頼されたドメインに**アクセス**して列挙し、さらに権限をエスカレートしようとすることが可能です:

{% content-ref url="external-forest-domain-one-way-outbound.md" %}
[external-forest-domain-one-way-outbound.md](external-forest-domain-one-way-outbound.md)
{% endcontent-ref %}

信頼されたドメインを侵害する別の方法は、ドメインの信頼の**逆方向**に作成された[**SQL信頼リンク**](abusing-ad-mssql.md#mssql-trusted-links)を見つけることです(これはあまり一般的ではありません)。

信頼されたドメインを侵害するもう一つの方法は、信頼されたドメインの**ユーザーがアクセスできる**マシンで待ち、**RDP**経由でログインするのを待つことです。その後、攻撃者はRDPセッションプロセスにコードを注入し、そこから**被害者の元のドメインにアクセス**することができます。\
さらに、**被害者がハードドライブをマウントした**場合、**RDPセッション**プロセスから攻撃者は**ハードドライブのスタートアップフォルダー**に**バックドア**を保存することができます。この技術は**RDPInception**と呼ばれています。

{% content-ref url="rdp-sessions-abuse.md" %}
[rdp-sessions-abuse.md](rdp-sessions-abuse.md)
{% endcontent-ref %}

### ドメイン信頼の悪用緩和

**SIDフィルタリング**

* フォレスト信頼を越えたSID履歴属性の悪用を防ぐ。
* すべてのインターフォレスト信頼でデフォルトで有効になっています。インターフォレスト信頼はデフォルトで安全と見なされていますMSはドメインではなくフォレストをセキュリティ境界と見なしています* しかし、SIDフィルタリングはアプリケーションとユーザーアクセスを壊す可能性があるため、しばしば無効にされます。
* 選択的認証
* インターフォレスト信頼で選択的認証が設定されている場合、信頼間のユーザーは自動的に認証されません。信頼しているドメイン/フォレスト内のドメインとサーバーへの個別のアクセスを与えるべきです。
* 書き込み可能なConfigration NCの悪用と信頼アカウント攻撃を防ぐことはできません。

[**ired.teamでドメイン信頼についての詳細情報。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)

## AD -> クラウド & クラウド -> AD

{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity" %}

## いくつかの一般的な防御

[**ここで資格情報を保護する方法についてもっと学ぶ。**](../stealing-credentials/credentials-protections.md)\
**技術の説明で各技術に対するいくつかの移行を見つけてください。**

* ドメイン管理者がドメインコントローラー以外のホストにログインすることを許可しない
* DA権限でサービスを実行しない
* ドメイン管理者権限が必要な場合は、時間を制限する:`Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`

### 欺瞞

* パスワードが期限切れにならない
* 委任のために信頼されている
* SPNを持つユーザー
* 説明の中のパスワード
* 高権限グループのメンバーであるユーザー
* 他のユーザー、グループ、またはコンテナに対するACL権限を持つユーザー
* コンピューターオブジェクト
* ...
* [https://github.com/samratashok/Deploy-Deception](https://github.com/samratashok/Deploy-Deception)
* `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`

## 欺瞞の特定方法

**ユーザーオブジェクトの場合:**

* ObjectSIDドメインと異なる
* lastLogon, lastlogontimestamp
* Logoncount非常に低い数は怪しい
* whenCreated
* Badpwdcount非常に低い数は怪しい

**一般的な方法:**

* いくつかのソリューションは、可能なすべての属性に情報を記入します。例えば、DCのような100%実際のコンピューターオブジェクトの属性とコンピューターオブジェクトの属性を比較します。または、RID 500デフォルトの管理者に対するユーザー。
* 何かがあまりにも良すぎる場合は確認する
* [https://github.com/JavelinNetworks/HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)

### Microsoft ATA検出のバイパス

#### ユーザー列挙

ATAはDCでセッションを列挙しようとするときにのみ文句を言うので、DCではなく他のホストでセッションを探さなければ、おそらく検出されません。

#### チケットのなりすまし作成Over pass the hash, golden ticket...

チケットを作成するときは、ATAがNTLMへの劣化として悪意のあるものと識別するので、**aes**キーも使用してください。

#### DCSync

ドメインコントローラーから実行しない場合、ATAに捕まります、ごめんなさい。

## その他のツール

* [ドメイン監査の自動化を行うPowershellスクリプト](https://github.com/phillips321/adaudit)
* [アクティブディレクトリを列挙するPythonスクリプト](https://github.com/ropnop/windapsearch)
* [アクティブディレクトリを列挙するPythonスクリプト](https://github.com/CroweCybersecurity/ad-ldap-enum)

## 参考文献

* [http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/](http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/)

<details>

<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>

HackTricksをサポートする他の方法

* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックしてください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**してください。
* **HackTricks**の[**githubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してハッキングのコツを共有してください。

</details>