Einführung von BloodHound 4.3 – Holen Sie sich öfter Global Admin

Apr 19 2023
Entdecken Sie neue Angriffspfade, die Microsoft Graph und sieben neue Azure Resource Manager-Objekte durchlaufen. Testen Sie BloodHound zum ersten Mal? Hier sind einige nützliche Ressourcen: Grüße an die folgenden Leute für ihre materiellen Beiträge zu dieser Version: Vielen Dank an Hugo Vincent für seinen AzureHound-Beitrag, der die Aufzählung der App-Rollenzuweisung hinzufügt und die MS Graph-Angriffspfadfunktion aktiviert.

Entdecken Sie neue Angriffspfade, die Microsoft Graph und sieben neue Azure Resource Manager-Objekte durchlaufen.

Testen Sie BloodHound zum ersten Mal? Hier sind einige nützliche Ressourcen:

  • Holen Sie sich die neueste Version von BloodHound auf GitHub
  • Lesen Sie unsere offizielle Dokumentation
  • Komm und häng mit uns im BloodHound Slack ab

Grüße an die folgenden Leute für ihre materiellen Beiträge zu dieser Veröffentlichung:

Vielen Dank an Hugo Vincent für seinen AzureHound-Beitrag , der die Aufzählung der App-Rollenzuweisung hinzufügt, wodurch die MS Graph-Angriffspfadfunktion aktiviert wird. Vielen Dank auch an Hugo für seine BloodHound-PR zur Implementierung dieser Funktion – wir haben uns für eine andere Implementierung für die GUI- und Datenbankstruktur entschieden, möchten Hugo jedoch als Co-Autor für BloodHound 4.3 anerkennen.

Vielen Dank an Cristian M für seine AzureHound PR und BloodHound PR zur Bereitstellung von Unterstützung für Angriffspfade, die Automatisierungskonten, Logik-Apps, Web-Apps und Funktions-Apps durchlaufen. Cristians PRs fügen auch Unterstützung für Speicherkonten hinzu, die wir in ein zukünftiges Update aufnehmen werden. Wir möchten Cristian M als Co-Autor von BloodHound 4.3 erwähnen.

Vielen Dank an Simon Décosse für seine beiden Beiträge zu dieser Version: ein BloodHound-PR, das AZResetPassword-Kanten genauer macht, und ein weiteres BloodHound-PR und das entsprechende SharpHoundCommon-PR für die Einführung von Angriffspfaden, die Standalone Managed Service Accounts (SMSAs) durchqueren. Die SMSA-Arbeit hat es nicht ganz rechtzeitig zur Veröffentlichung von BloodHound 4.3 geschafft, wird aber in einem schnellen Follow-up eingeführt. Wir möchten Simon Décosse als Co-Autor von BloodHound 4.3 erwähnen.

Neue Funktionen in BloodHound 4.3

Microsoft Graph-Angriffspfade

MS Graph-App-Rollen werden häufig von Drittanbieteranwendungen verwendet, um verschiedene Aufgaben in Azure Active Directory auszuführen, z. B. das Verwalten von Benutzergruppenmitgliedschaften, das Erstellen von Dienstprinzipalen und das Verwalten von Azure AD-Administratorrollenzuweisungen. Trotz ihrer Leistungsfähigkeit können MS Graph-App-Rollen für Administratoren eine Herausforderung darstellen, um effektiv zu auditieren.

BloodHound 4.3 macht es einfach, Angriffspfade zu finden, die missbräuchliche MS Graph-App-Rollenzuweisungen durchqueren, indem nicht nur die App-Rollenzuweisungen selbst, sondern auch die relevanten Ergebnisse dieser Konfigurationen modelliert werden.

Wenn beispielsweise einem Dienstprinzipal die App-Rolle „ServicePrincipalEndpoint.ReadWrite.All“ gewährt wird, erhält er die Möglichkeit, allen anderen Dienstprinzipalen im Mandanten neue Besitzer hinzuzufügen. BloodHound 4.3 modelliert dieses Ergebnis, indem nachbearbeitete Kanten mit der Bezeichnung AZMGAddOwner erstellt werden, die mit jedem Dienstprinzipal verknüpft sind. Dies vereinfacht den Prozess der Erkennung von Angriffspfaden, da Sie nicht mehr jede App-Rollenzuweisung manuell nachverfolgen und sich an ihre Bedeutung erinnern müssen.

BloodHound modelliert die effektiven Ergebnisse von MS Graph-App-Rollenzuweisungen

Weitere Angriffspfade in Azure Resource Manager

Microsoft fügt Azure Resource Manager kontinuierlich neue Dienste hinzu, und wir bemühen uns, Schritt zu halten, indem wir Missbrauchsgrundelemente in der gesamten AzureRM-Landschaft untersuchen. BloodHound 4.3 unterstützt jetzt sieben zusätzliche AzureRM-Dienste, darunter:

  1. Automatisierungskonten
  2. Containerregistrierungen
  3. Kubernetes Service Managed Cluster
  4. Funktions-Apps*
  5. Logik-Apps
  6. VM-Skalierungsgruppen
  7. Web-Apps*

Diese sieben Dienste werden häufig in Kundenumgebungen verwendet, und obwohl AzureRM-Rollen im Vergleich zu AzureAD-Rollen im Allgemeinen einfacher zu prüfen sind, stoßen wir häufig auf Angriffspfade, die auch diese Dienste durchlaufen.

Wie funktionieren diese Angriffspfade? Ich bin froh, dass du gefragt hast! Lass uns reden über:

Mehr Managed Identity-Angriffspfade

Die sieben oben erwähnten AzureRM-Dienste haben ein gemeinsames Merkmal: Sie alle unterstützen verwaltete Identitätszuweisungen.

Als Verteidiger schätze ich Managed Identities. Sie beseitigen die Notwendigkeit für Rechenressourcen zum Speichern oder Abrufen von Anmeldeinformationen, indem sie eine privilegierte Identität mit bestimmten Ressourcen verknüpfen. Die Ressource kann sich als ihr zugeordneter Dienstprinzipal authentifizieren, da Azure die verwaltete Identitätszuweisung zwischen den beiden Objekten validiert.

Als Angreifer finde ich Managed Identities jedoch noch attraktiver. Die Konfiguration und Mechanik einer verwalteten Identitätszuweisung bietet eine zuverlässige Datenerfassung und Missbrauchsgrundelemente. Mit bestimmten Berechtigungen kann man JSON Web Tokens (JWTs) aus Azure-Ressourcen extrahieren und ihre mit Managed Identity verknüpften Dienstprinzipale imitieren.

Der Angriffspfad für verwaltete Identitäten verbindet Abonnementressourcen wieder mit AzureAD-Mandanten

Abschluss

Wir freuen uns, diese Version herauszubringen. Dies ist eine riesige Veröffentlichung und der Höhepunkt mehrerer Monate harter Arbeit vieler Leute, darunter nicht nur Leute innerhalb des BloodHound Enterprise-Teams, sondern auch mehrere Leute in der BloodHound-Benutzergemeinschaft.

Wir arbeiten weiterhin hart daran, mehr Angriffspfade in das Produkt einzuführen, einschließlich Angriffspfade, die durch ADCS ermöglicht werden, und Angriffspfade, die durch lokale/Cloud-Hybridkonfigurationen ermöglicht werden. Bleiben Sie dran.

Nachfolgend finden Sie die vollständigen Details aller neuen Knoten und Kanten, die in dieser Version hinzugefügt wurden

Neue Knoten

AZAutomationAccount

Automation Accounts sind einer von mehreren Diensten, die unter das Dach von „Azure Automation“ fallen. Azure-Administratoren können Automation-Konten verwenden, um eine Vielzahl von Geschäftsvorgängen zu automatisieren, z. B. das Erstellen und Konfigurieren virtueller Computer in Azure.

Automatisierungskonten bieten verschiedene Prozesse zur Prozessautomatisierung, aber im Kern all dieser Dienste stehen sogenannte Runbooks.

Lesen Sie in diesem Blogbeitrag mehr darüber, wie Angreifer Automation-Konten missbrauchen:

https://medium.com/p/82667d17187a

AZContainerRegistry

Azure Container Registry (ACR) ist Microsofts Implementierung der Distribution Spec der Open Container Initiative (OCI), die selbst auf dem ursprünglichen Docker Registry-Protokoll basiert. Im Klartext: ACR speichert und verwaltet Container-Images für Sie. ACR stellt diese Images bereit und macht sie für die lokale Ausführung, auf einem Remotesystem oder als Azure Container Instance verfügbar. Sie können sich ACR als etwas Analoges zu Ihrer eigenen Docker-Registrierung vorstellen.

Lesen Sie in diesem Blogbeitrag mehr darüber, wie Angreifer Container Registrys missbrauchen:

https://medium.com/p/1f407bfaa465

AZFunctionApp

Funktionen sind einer von mehreren Diensten, die unter das Dach von „Azure Automation“ fallen. Azure-Administratoren können Funktionen mit einer Vielzahl von Sprachen (C#, Java, PowerShell usw.) erstellen und diese Funktionen dann bei Bedarf in Azure ausführen. Funktionen werden mithilfe von Funktions-Apps in Azure gehostet und gruppiert.

Lesen Sie in diesem Blogbeitrag mehr darüber, wie Angreifer Function Apps missbrauchen:

https://medium.com/p/300065251cbe

AZLogicApp

Logik-Apps sind ein weiterer Azure-Dienst, der unter das allgemeine Dach von „Azure Automation“ fällt. Administratoren können Logic Apps verwenden, um sogenannte „Workflows“ zu erstellen. Workflows bestehen aus Auslösern und Aktionen, die als Ergebnis dieser Auslöser ausgeführt werden.

Lesen Sie in diesem Blogbeitrag mehr darüber, wie Angreifer Logic Apps missbrauchen:

https://medium.com/p/52b29354fc54

AZManagedCluster

Azure Kubernetes Service Managed Clusters bieten Azure-Administratoren eine einfache Möglichkeit zum Erstellen und Verwalten von Kubernetes-Clustern.

Lesen Sie in diesem Blogbeitrag, wie Angreifer AKS Managed Clusters missbrauchen:

https://www.netspi.com/blog/technical/cloud-penetration-testing/extract-credentials-from-azure-kubernetes-service/

AZVMScaleSet

Azure Virtual Machine Scale Sets werden von AKS-verwalteten Clustern zum Hoch- und Herunterfahren von Computeknoten verwendet. Sie können auch von Administratoren verwendet werden, um virtuelle Computer außerhalb des AKS-Anwendungsfalls hochzufahren und zu verwalten.

Lesen Sie in diesem Blogbeitrag, wie Angreifer Virtual Machine Scale Sets missbrauchen:

https://www.netspi.com/blog/technical/cloud-penetration-testing/extract-credentials-from-azure-kubernetes-service/

AZWebApp

Azure App Service ist ein Platform-as-a-Service-Produkt, das verspricht, die Bereitstellung, das Hosting, die Verfügbarkeit und die Sicherheit von Webanwendungen zu verbessern. Von Azure App Service gehostete Web-Apps sind in Azure App Service-Plänen organisiert, bei denen es sich um virtuelle Computer handelt, auf denen alle Web-Apps in diesem Plan ausgeführt werden.

Lesen Sie in diesem Blogbeitrag mehr darüber, wie Angreifer Web Apps missbrauchen:

https://medium.com/p/c3adefccff95

Neue Kanten

AZMGrantRole

Diese Kante entsteht bei der Nachbearbeitung. Es wird für alle AzureAD-Administratorrollen erstellt, wenn ein Dienstprinzipal die folgende MS Graph-App-Rollenzuweisung hat:

  • RoleManagement.ReadWrite.Directory

AZMGGrantAppRoles

Diese Kante entsteht bei der Nachbearbeitung. Es wird für AzureAD-Mandantenobjekte erstellt, wenn ein Dienstprinzipal über eine der folgenden MS Graph-App-Rollenzuweisungen verfügt:

  • RoleManagement.ReadWrite.Directory
  • AppRoleAssignment.ReadWrite.All

AZMGAddSecret

Diese Kante entsteht bei der Nachbearbeitung. Es wird für alle Azure-App-Registrierungen und Dienstprinzipale erstellt, wenn ein Dienstprinzipal eine der folgenden MS Graph-App-Rollen hat:

  • RoleManagement.ReadWrite.Directory
  • Application.ReadWrite.All

AZMGAddOwner

Diese Kante entsteht bei der Nachbearbeitung. Es wird für alle App-Registrierungen und Dienstprinzipale innerhalb desselben Mandanten erstellt, wenn ein Dienstprinzipal die folgende MS Graph-App-Rolle hat:

  • Application.ReadWrite.All
  • ServicePrincipalEndpoint.ReadWrite.All
  • Directory.ReadWrite.All
  • Group.ReadWrite.All
  • RoleManagement.ReadWrite.Directory

AZMGAddMember

Diese Kante entsteht bei der Nachbearbeitung. Es wird für nicht rollenzuweisbare Azure AD-Sicherheitsgruppen erstellt, wenn ein Dienstprinzipal über eine der folgenden MS Graph-App-Rollenzuweisungen verfügt:

  • Directory.ReadWrite.All
  • Group.ReadWrite.All
  • GroupMember.ReadWrite.All
  • RoleManagement.ReadWrite.Directory

AZAddOwner

Diese Kante entsteht bei der Nachbearbeitung. Es wird für alle App-Registrierungen und Dienstprinzipale innerhalb desselben Mandanten erstellt, wenn ein Azure-Prinzipal eine der folgenden Azure Active Directory-Rollen hat:

  • Administrator für hybride Identitäten
  • Partner-Tier1-Support
  • Partner-Tier2-Support
  • Verzeichnissynchronisierungskonten

AZAutomationContributor

Die Rolle „Azure Automation-Mitwirkender“ gewährt vollständige Kontrolle über das Azure Automation-Zielkonto. Dazu gehört die Möglichkeit, beliebige Befehle auf dem Automation-Konto auszuführen.

AZKeyVaultKVContributor

Die Rolle „Key Vault-Mitwirkender“ gewährt vollständige Kontrolle über den Ziel-Key Vault. Dazu gehört die Möglichkeit, alle im Schlüsseltresor gespeicherten Geheimnisse zu lesen.

AZLogicAppContributor

Die Rolle „Logik-Mitwirkender“ gewährt vollständige Kontrolle über die Ziel-Logik-App. Dazu gehört die Möglichkeit, beliebige Befehle in der Logik-App auszuführen.

AZWebsiteContributor

Die Rolle „Website-Mitwirkender“ gewährt vollständige Kontrolle über die Zielfunktions-App oder Web-App. Die vollständige Kontrolle über einen dieser Ressourcentypen ermöglicht die Ausführung willkürlicher Befehle für die Zielressource.

AZAKSBeitragender

Die Rolle „Azure Kubernetes Service Contributor“ gewährt vollständige Kontrolle über den Ziel-Azure Kubernetes Service Managed Cluster. Dazu gehört die Möglichkeit, Administratoranmeldeinformationen für den Cluster remote abzurufen sowie beliebige Befehle auf Rechenknoten auszuführen, die dem AKS-verwalteten Cluster zugeordnet sind.

AZNodeResourceGroup

Dieser Edge wird erstellt, um von Azure Kubernetes Service verwaltete Cluster mit den VM-Skalierungsgruppen zu verknüpfen, die sie zum Ausführen von Befehlen verwenden.

Die vom System zugewiesene Identität für den AKS-Cluster hat die Rolle „Mitwirkender“ für die Zielressourcengruppe und ihre untergeordneten VM-Skalierungsgruppen.

AZMGRoleManagement_ReadWrite_Directory

Dieser Edge wird für den Microsoft Graph-Dienstprinzipal erstellt, wenn einem Dienstprinzipal der RoleManagement.ReadWrite.Directory-Edge gewährt wurde. Sie können diesen Rand verwenden, um zu prüfen, welchen Dienstprinzipalen die App-Rolle gewährt wurde; Dieser Rand ist jedoch nicht missbrauchbar und wird nicht in Angriffspfaden angezeigt.

Diese Kante wird während der Nachbearbeitung analysiert, um das effektive Ergebnis der App-Rollenzuweisung zu modellieren, die darin besteht, die oben erwähnten nachverarbeiteten „AZMG_____“-Kanten zu erstellen. Diese Kanten WERDEN bei der Pfadfindung angezeigt.

AZMGApplication_ReadWrite_All

Dieser Rand wird für den Microsoft Graph-Dienstprinzipal erstellt, wenn einem Dienstprinzipal der Application.ReadWrite.All-Rand gewährt wurde. Sie können diesen Rand verwenden, um zu prüfen, welchen Dienstprinzipalen die App-Rolle gewährt wurde; Dieser Rand ist jedoch nicht missbrauchbar und wird nicht in Angriffspfaden angezeigt.

Diese Kante wird während der Nachbearbeitung analysiert, um das effektive Ergebnis der App-Rollenzuweisung zu modellieren, die darin besteht, die oben erwähnten nachverarbeiteten „AZMG_____“-Kanten zu erstellen. Diese Kanten WERDEN bei der Pfadfindung angezeigt.

AZMGAppRoleAssignment_ReadWrite_All

Dieser Edge wird für den Microsoft Graph-Dienstprinzipal erstellt, wenn einem Dienstprinzipal der AppRoleAssignment.ReadWrite.All-Edge gewährt wurde. Sie können diesen Rand verwenden, um zu prüfen, welchen Dienstprinzipalen die App-Rolle gewährt wurde; Dieser Rand ist jedoch nicht missbrauchbar und wird nicht in Angriffspfaden angezeigt.

Diese Kante wird während der Nachbearbeitung analysiert, um das effektive Ergebnis der App-Rollenzuweisung zu modellieren, die darin besteht, die oben erwähnten nachverarbeiteten „AZMG_____“-Kanten zu erstellen. Diese Kanten WERDEN bei der Pfadfindung angezeigt.

AZMGDirectory_ReadWrite_All

Dieser Edge wird für den Microsoft Graph-Dienstprinzipal erstellt, wenn einem Dienstprinzipal der Edge „Directory.ReadWrite.All“ gewährt wurde. Sie können diesen Rand verwenden, um zu prüfen, welchen Dienstprinzipalen die App-Rolle gewährt wurde; Dieser Rand ist jedoch nicht missbrauchbar und wird nicht in Angriffspfaden angezeigt.

Diese Kante wird während der Nachbearbeitung analysiert, um das effektive Ergebnis der App-Rollenzuweisung zu modellieren, die darin besteht, die oben erwähnten nachverarbeiteten „AZMG_____“-Kanten zu erstellen. Diese Kanten WERDEN bei der Pfadfindung angezeigt.

AZMGGroup_ReadWrite_All

Dieser Edge wird für den Microsoft Graph-Dienstprinzipal erstellt, wenn einem Dienstprinzipal der Group.ReadWrite.All-Edge gewährt wurde. Sie können diesen Rand verwenden, um zu prüfen, welchen Dienstprinzipalen die App-Rolle gewährt wurde; Dieser Rand ist jedoch nicht missbrauchbar und wird nicht in Angriffspfaden angezeigt.

Diese Kante wird während der Nachbearbeitung analysiert, um das effektive Ergebnis der App-Rollenzuweisung zu modellieren, die darin besteht, die oben erwähnten nachverarbeiteten „AZMG_____“-Kanten zu erstellen. Diese Kanten WERDEN bei der Pfadfindung angezeigt.

AZMGGroupMember_ReadWrite_All

Dieser Edge wird für den Microsoft Graph-Dienstprinzipal erstellt, wenn einem Dienstprinzipal der GroupMember.ReadWrite.All-Edge gewährt wurde. Sie können diesen Rand verwenden, um zu prüfen, welchen Dienstprinzipalen die App-Rolle gewährt wurde; Dieser Rand ist jedoch nicht missbrauchbar und wird nicht in Angriffspfaden angezeigt.

Diese Kante wird während der Nachbearbeitung analysiert, um das effektive Ergebnis der App-Rollenzuweisung zu modellieren, die darin besteht, die oben erwähnten nachverarbeiteten „AZMG_____“-Kanten zu erstellen. Diese Kanten WERDEN bei der Pfadfindung angezeigt.

AZMGServicePrincipalEndpoint_ReadWrite_All

Dieser Edge wird für den Microsoft Graph-Dienstprinzipal erstellt, wenn einem Dienstprinzipal der ServicePrincipalEndpoint.ReadWrite.All-Edge gewährt wurde. Sie können diesen Rand verwenden, um zu prüfen, welchen Dienstprinzipalen die App-Rolle gewährt wurde; Dieser Rand ist jedoch nicht missbrauchbar und wird nicht in Angriffspfaden angezeigt.

Diese Kante wird während der Nachbearbeitung analysiert, um das effektive Ergebnis der App-Rollenzuweisung zu modellieren, die darin besteht, die oben erwähnten nachverarbeiteten „AZMG_____“-Kanten zu erstellen. Diese Kanten WERDEN bei der Pfadfindung angezeigt.

Vielen Dank an Jonas Bülow Knudsen, Justin Kohler und Stephen Hinck für die Durchsicht dieses Blogbeitrags