언어:
자사 서비스 주체(엔터프라이즈 애플리케이션)는 Microsoft에 속하는 애플리케이션(애플리케이션 등록)에서 비롯됩니다. 이들 대부분은 Microsoft Entra ID에 중요한 권한이 있으며 보안 검토 중에 이를 간과하기 쉽습니다. 따라서 공격자가 여기에 자격 증명을 추가하여 그 권한에서 몰래 사용 이득을 취하게 됩니다.
이 기술은 권한 상승은 물론 지속성 기능도 제공합니다. 애플리케이션 관리자 역할을 가진 주체는 더 높은 권한을 갖는 자격 증명을 비롯한 여러 자격증명을 애플리케이션에 추가할 수 있기 때문입니다.
자사 서비스 주체에는 일부 드문 사례를 제외하고 자격 증명이 없어야 합니다.(권장 사항 참조).
APT29 위협 그룹이 2020년 12월에 SolarWinds에 대해 감행한 "Solorigate"라는 악명높은 공격에 이 방식을 사용했습니다. 자세한 내용은 Microsoft 및 Mandiant가 문서화했습니다.
관찰된 자격 증명의 적법성을 평가하는 것부터 시작합니다. 이러한 자격 증명이 다음 서비스 주체 중 하나와 연결된 경우 해당 자격 증명은 정상으로 간주해도 됩니다: Exchange Online/Skype for Business/AAD Password Protection Proxy.
자격 증명이 정상이 아니라고 의심되는 다른 사례의 경우:
애플리케이션에 연결된 자격 증명과 달리, 서비스 주체 자격 증명은 Azure 포털을 사용해 목록으로 표시할 수 없습니다. Microsoft Graph PowerShell의 Get-MgServicePrincipal cmdlet을 사용해 서비스 주체 자격 증명 나열:
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