Langue :
Les principaux de service propriétaires/internes (applications d'entreprise) proviennent d'applications (inscription d'applications) qui appartiennent à Microsoft. La plupart d'entre eux disposent d'autorisations sensibles dans Microsoft Entra ID que vous négligez généralement lors des vérifications de sécurité. Des attaquants peuvent donc y ajouter des identifiants pour exploiter discrètement leurs privilèges.
Cette technique donne accès à des capacités de persistance et d'élévation des privilèges, car les principaux ayant le rôle d'Administrateur d'application peuvent ajouter des identifiants aux applications, y compris à celles qui ont des privilèges plus élevés.
Les principaux de service propriétaires (internes) ne doivent pas disposer d'identifiants, sauf dans de rares cas (voir les recommandations).
Le groupe de menace APT29 a exploité cette méthode lors de la fameuse attaque « Solorigate » de décembre 2020 contre SolarWinds, comme l'ont documenté Microsoft et Mandiant.
Commencez par évaluer la légitimité des identifiants observés. Vous pouvez considérer que ces identifiants sont légitimes s'ils sont associés à l'un des principaux de service suivants : Exchange Online / Skype for Business / AAD Password Protection Proxy.
Dans les autres cas où vous soupçonnez que les identifiants ne sont pas légitimes :
Vous ne pouvez pas établir la liste des identifiants des principaux de services en utilisant le portail Azure, contrairement aux identifiants liés aux applications. Utilisez la cmdlet Get-MgServicePrincipal de Microsoft Graph PowerShell pour lister les identifiants des principaux de services :
Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property keyCredentials | select -ExpandProperty keyCredentials
Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property passwordCredentials | select -ExpandProperty passwordCredentials
Pour supprimer ces identifiants, utilisez :
$keycredentials = (Get-MgServicePrincipal -ServicePrincipalId <objectid>).KeyCredentials
, puis en supprimant le ou les éléments indésirables de $keycredentials
et enfin, en appliquant ce nouveau tableau avec Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials $keycredentials
. Pour tout effacer, il suffit d'utiliser : Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials @()
.Vous pouvez également utiliser le module désormais obsolète AzureAD PowerShell Module:
Get-AzureADServicePrincipalKeyCredential
et Remove-AzureADServicePrincipalKeyCredential
Get-AzureADServicePrincipalPasswordCredential
et Remove-AzureADServicePrincipalPasswordCredential
Nom: Principal de service propriétaire (ou interne) avec identifiants
Nom de code: FIRST-PARTY-SERVICE-PRINCIPAL-WITH-CREDENTIALS
Niveau de gravité: High
Techniques: T1098.001
More: Azure AD privilege escalation - Taking over default application permissions as Application Admin