Az - Arc vulnerable GPO Deploy Script
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Identifizierung der Probleme
Azure Arc ermöglicht die Integration neuer interner Server (verbundene Domänenserver) in Azure Arc mithilfe der Group Policy Object-Methode. Um dies zu erleichtern, stellt Microsoft ein Bereitstellungstoolkit zur Verfügung, das für den Start des Onboarding-Verfahrens erforderlich ist. Im ArcEnableServerGroupPolicy.zip-Datei finden sich die folgenden Skripte: DeployGPO.ps1, EnableAzureArc.ps1 und AzureArcDeployment.psm1.
Beim Ausführen des DeployGPO.ps1-Skripts werden die folgenden Aktionen ausgeführt:
Erstellt die Azure Arc Servers Onboarding GPO innerhalb der lokalen Domäne.
Kopiert das EnableAzureArc.ps1 Onboarding-Skript in den vorgesehenen Netzwerkfreigabe, die für den Onboarding-Prozess erstellt wurde und auch das Windows-Installationspaket enthält.
Beim Ausführen dieses Skripts müssen Systemadministratoren zwei Hauptparameter angeben: ServicePrincipalId und ServicePrincipalClientSecret. Darüber hinaus sind weitere Parameter wie die Domäne, der FQDN des Servers, der die Freigabe hostet, und der Freigabename erforderlich. Weitere Details wie die Mandanten-ID, die Ressourcengruppe und andere notwendige Informationen müssen ebenfalls dem Skript bereitgestellt werden.
Ein verschlüsseltes Geheimnis wird im AzureArcDeploy-Verzeichnis auf der angegebenen Freigabe unter Verwendung der DPAPI-NG-Verschlüsselung generiert. Das verschlüsselte Geheimnis wird in einer Datei mit dem Namen encryptedServicePrincipalSecret gespeichert. Beweise dafür finden sich im DeployGPO.ps1-Skript, wo die Verschlüsselung durch den Aufruf von ProtectBase64 mit $descriptor und $ServicePrincipalSecret als Eingaben erfolgt. Der Descriptor besteht aus den SID der Domain Computer und der Domain Controller-Gruppe, wodurch sichergestellt wird, dass das ServicePrincipalSecret nur von den Sicherheitsgruppen der Domain Controller und Domain Computer entschlüsselt werden kann, wie in den Kommentaren des Skripts vermerkt.
Exploit
Wir haben die folgenden Bedingungen:
Wir haben erfolgreich das interne Netzwerk durchdrungen.
Wir haben die Fähigkeit, ein Computer-Konto innerhalb von Active Directory zu erstellen oder die Kontrolle darüber zu übernehmen.
Wir haben einen Netzwerkfreigabe entdeckt, die das AzureArcDeploy-Verzeichnis enthält.
Es gibt mehrere Methoden, um ein Maschinenkonto in einer AD-Umgebung zu erhalten. Eine der häufigsten ist die Ausnutzung des Maschinenkonto-Quotas. Eine andere Methode besteht darin, ein Maschinenkonto durch verwundbare ACLs oder verschiedene andere Fehlkonfigurationen zu kompromittieren.
Sobald ein Maschinenkonto erlangt wurde, ist es möglich, sich mit diesem Konto zu authentifizieren. Wir können entweder den Befehl runas.exe mit dem netonly-Flag verwenden oder Pass-the-Ticket mit Rubeus.exe nutzen.
Indem wir das TGT für unser Computer-Konto im Speicher haben, können wir das folgende Skript verwenden, um das Geheimnis des Dienstprinzipals zu entschlüsseln.
Alternativ können wir SecretManagement.DpapiNG verwenden.
An diesem Punkt können wir die verbleibenden Informationen sammeln, die benötigt werden, um eine Verbindung zu Azure herzustellen, aus der ArcInfo.json-Datei, die im selben Netzwerkfreigabe wie die Datei encryptedServicePrincipalSecret gespeichert ist. Diese Datei enthält Details wie: TenantId, servicePrincipalClientId, ResourceGroup und mehr. Mit diesen Informationen können wir Azure CLI verwenden, um uns als der kompromittierte Dienstprinzipal zu authentifizieren.
References
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated