Microsoft Teams bietet standardmäßig die Möglichkeit externe Nutzer mit einem Microsoft Account, der nicht dem eigenen Microsoft Azure Tenant angehört, als Gäste in ein Team zu integrieren. Diese Gäste haben zwar eingeschränkte Rechte, können aber dennoch in den Standardeinstellungen vom Azure Tenant auf Informationen zugreifen, die normalerweise nicht für sie bestimmt sein sollten. Im hier beschriebenen Finding haben Gäste die Möglichkeit über die Azure-PowerShell sämtliche Accounts und Gruppen innerhalb des Azure Tenant zu enumerieren. Dies kann auch durch ein Skript automatisiert werden.
Für die Enumerierung wird eine PowerShell mit dem Modul AzureAD (Azure Active Directory PowerShell for Graph) benötigt. Der PowerShell Befehl für die Modulinstallation hierfür ist „Install-Module AzureAD“. Beachte dabei, dass die PowerShell mit administrativen Rechten ausgeführt werden muss.
Microsoft Docs: https://docs.microsoft.com/en-us/powershell/azure/active-directory/overview?view=azureadps-2.0
Hinweis: Das Vorgängermodul von AzureAD ist „MSOnline PowerShell“ und das Nachfolgemodul ist/wird „Microsoft Graph PowerShell“. In unseren Test verwenden wir noch das Modul AzureAD, da wir mit diesem keine Einschränkungen feststellen konnten.
Soll die Enumerierung nun auch automatisiert durchgeführt werden, kann unter anderem das Modul DCToolbox von Daniel Chronlund dazu verwendet werden. Die Installation führen wir mit dem PowerShell Befehl „Install-Module DCToolbox“ aus.
GitHub: https://github.com/DanielChronlund/DCToolbox
Da es sich bei DCToolbox um kein offizielles Paket für PowerShell handelt, muss, je nach Ausführungsrichtlinienbereich, die Nutzung in der Folge durch den Befehl „Set-ExecutionPolicy Bypass -Force“ erlaubt werden. Nach Ausführung des Skriptes kann der Ausführungsrichtliniebereich mit „Set-ExecutionPolicy Default“ wieder zurückgesetzt werden.
Damit eine Enumeration über einen Gastzugang möglich ist, wird die Tenant-ID des zu enumerierenden Azure benötigt. Diese kann wie folgt herausgefunden werden;
1. In der Browserversion von Microsoft Teams, in welchem der Gastzugang besteht, ist die Tenant-ID Teil der aufgerufenen URL.
3. Oder über die Website: https://www.whatismytenantid.com
Ein Freund, der kennt einen Freund, der kennt einen Freund, …
Die Theorie dahinter ist recht simpel, wenn auch anfangs etwas verwirrend. Über PowerShell enumeriert der Gast-Benutzer zuerst einen Azure Benutzer des Teams, in welchem er sich befindet. Danach fragt er die Gruppenzugehörigkeiten des Azure Benutzers an. In diesen Gruppen wiederum kann er ebenfalls die Benutzer enumerieren und mit diesen Benutzern neue Gruppen und damit auch wieder neue Benutzer. Durch dieses Vorgehen können große Teile, im schlimmsten Fall sogar das gesamte Azure Active Directory enumeriert werden.
In der Praxis sieht das wie folgt aus:
1. Zuerst muss sich über PowerShell mit dem installierten AzureAD Modul in der Gast Azure Tenant eingeloggt werden. Dafür wird der Befehl …
Connect-AzureAD -TenantId TENANT-ID
… verwendet
2. Nach erfolgreichem Login kann die Enumerierung schon beginnen. Dafür wird zuerst ein Benutzer des Azure Tenant mit …
Get-AzureADUser -ObjectId AZURE-BENUTZER-EMAIL
… angefragt.
Proof of Concept: Eine direkte Enumerierung der Azure Benutzer ist standardmäßig für Gäste verboten.
4. Daraufhin werden die Benutzer der einzelnen Gruppen mit …
Get-AzureADGroupMember -All:$true -ObjectId OBJECT-ID-GRUPPE
… enumeriert.
5. und dann beginnt das Ganze von vorne.
Im Administrationsbereich des Azure Tenant unter: https://portal.azure.com/#blade/Microsoft_AAD_IAM/AllowlistPolicyBlade muss die Einstellung „Der Gastbenutzerzugriff ist auf Eigenschaften und Mitgliedschaften eigener Verzeichnisobjekte beschränkt (restriktivste Einstellung)“ ausgewählt werden. Hierdurch erhalten Gäste keinen Zugriff mehr auf Informationen zu weiteren Nutzern und Gruppen im Tenant.
In den meisten Fällen ist es empfehlenswert, den Zugriff von Gastkonten auf den Tenant über die Azure-PowerShell komplett zu unterbinden. Dies kann über eine Konfiguration des „Conditional Access“ erreicht werden. Hierzu wird eine Azure AD Premium P1-Lizenz oder höher benötigt. Wie im Screenshot dargestellt können über „Conditional Access“ Policies erstellt werden, die bestimmten Nutzergruppen den Zugriff auf Apps erlauben oder verweigern (über White- oder Blacklist-Verfahren).
Bei der Behebung des Findings kann auch darüber gesprochen werden, ob der Zugriff auf die Azure-PowerShell auch für Azure AD Benutzer eingeschränkt werden sollte, da jeder Benutzer auch standardmäßig die Berechtigung für die Enumeration besitzt. Ist dies der Fall, sollte auch der Zugriff auf das Azure AD Administrationsportal für Nicht-Administratoren gesperrt werden. Die Umsetzung erfolgt über die Auswahl „Ja“ in der Einstellung „Zugreifen auf das Azure AD-Verwaltungsportal“.
Wir verwenden Cookies, und Google reCAPTCHA, das Google Fonts lädt und mit Google-Servern kommuniziert. Durch die weitere Nutzung unserer Website stimmen Sie der Verwendung von Cookies und unserer Datenschutzerklärung zu.