Language:
ファーストパーティサービスプリンシパル (エンタープライズアプリケーション) は、Microsoft に属するアプリケーション (アプリケーション登録) に由来しています。それらのほとんどは、セキュリティチェックの際に見過ごされがちな、Microsoft Entra ID の機密性の高いアクセス許可を持っています。そのため、攻撃者はサービスプリンシパルに認証情報を付加することで、その権限の恩恵を密かに受けることが可能です。
この手法を使うと永続的機能のほか権限昇格も得られます。これは、アプリケーション管理者ロールを持つプリンシパルが、高い権限のあるアプリケーションにも認証情報を付加できるためです。
ごく稀なケースを除いて、ファーストパーティサービスプリンシパルはいかなる資格情報も持つべきではありません (推奨事項を参照してください)。
APT29 脅威グループは、2020 年 12 月の「Solorigate」と呼ばれる SolarWinds に対する悪名高い攻撃でこの方法を悪用しました。この攻撃は、Microsoft と Mandiant によって記録されています。
検出された認証情報の正当性の評価から開始します。資格情報が次のサービスプリンシパルとのいずれかと関連している場合は、正当と見なすことができます: Exchange Online / Skype for Business / AAD Password Protection Proxy。
そのほかの場合で資格情報の正当性が疑われる場合:
アプリケーションに添付された資格情報とは異なり、サービスプリンシパルの資格情報を Azure ポータルを使って一覧表示することはできません。Microsoft Graph PowerShell の Get-MgServicePrincipal コマンドレットを使用し、サービスプリンシパルの認証情報をリストします。
Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property keyCredentials | select -ExpandProperty keyCredentials
Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property passwordCredentials | select -ExpandProperty passwordCredentials
これらの認証情報を削除するには、以下を使用します。
$keycredentials = (Get-MgServicePrincipal -ServicePrincipalId <objectid>).KeyCredentials
で鍵認証情報の配列を取得し、不要なものを $keycredentials
から削除して、最後にこの新しい配列を Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials $keycredentials
で適用することによって、これを迂回することができます。すべてをクリアするには、単に Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials @()
を使用します。または、現在非推奨の AzureAD PowerShell Module を使用します。
Get-AzureADServicePrincipalKeyCredential
および Remove-AzureADServicePrincipalKeyCredential
Get-AzureADServicePrincipalPasswordCredential
および Remove-AzureADServicePrincipalPasswordCredential
名前: 認証情報を持つファーストパーティサービスプリンシパル
コード名: FIRST-PARTY-SERVICE-PRINCIPAL-WITH-CREDENTIALS
深刻度: High
テクニック: T1098.001
More: Azure AD privilege escalation - Taking over default application permissions as Application Admin