언어:
자사 서비스 주체(엔터프라이즈 애플리케이션)는 Microsoft에 속하는 애플리케이션(애플리케이션 등록)에서 비롯됩니다. 이들 대부분은 Microsoft Entra ID에 중요한 권한이 있으며 보안 검토 중에 이를 간과하기 쉽습니다. 따라서 공격자가 여기에 자격 증명을 추가하여 그 권한에서 몰래 사용 이득을 취하게 됩니다.
이 기술은 권한 상승은 물론 지속성 기능도 제공합니다. 애플리케이션 관리자 역할을 가진 주체는 더 높은 권한을 갖는 자격 증명을 비롯한 여러 자격증명을 애플리케이션에 추가할 수 있기 때문입니다.
자사 서비스 주체에는 일부 드문 사례를 제외하고 자격 증명이 없어야 합니다.(권장 사항 참조). 또한 Microsoft에서는 보안이 강화된 Microsoft Entra 구성에서 "Microsoft 서비스 애플리케이션에 자격 증명을 구성하지 않는" 것을 권장합니다.
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
유형: Microsoft Entra ID Indicator of Exposure