자격 증명이 있는 자사 서비스 주체

High

설명

자사 서비스 주체(엔터프라이즈 애플리케이션)는 Microsoft에 속하는 애플리케이션(애플리케이션 등록)에서 비롯됩니다. 이들 대부분은 Microsoft Entra ID에 중요한 권한이 있으며 보안 검토 중에 이를 간과하기 쉽습니다. 따라서 공격자가 여기에 자격 증명을 추가하여 그 권한에서 몰래 사용 이득을 취하게 됩니다.

이 기술은 권한 상승​은 물론 지속성​ 기능도 제공합니다. 애플리케이션 관리자 역할을 가진 주체는 더 높은 권한을 갖는 자격 증명을 비롯한 여러 자격증명을 애플리케이션에 추가할 수 있기 때문입니다.

자사 서비스 주체에는 일부 드문 사례를 제외하고 자격 증명이 없어야 합니다.(권장 사항 참조).

APT29 위협 그룹이 2020년 12월에 SolarWinds에 대해 감행한 "Solorigate"라는 악명높은 공격에 이 방식을 사용했습니다. 자세한 내용은 MicrosoftMandiant가 문서화했습니다.

솔루션

관찰된 자격 증명의 적법성을 평가​하는 것부터 시작합니다. 이러한 자격 증명이 다음 서비스 주체 중 하나와 연결된 경우 해당 자격 증명은 정상으로 간주해도 됩니다: Exchange Online/Skype for Business/AAD Password Protection Proxy.

자격 증명이 정상이 아니라고 의심되는 다른 사례의 경우:

  • 공격임을 나타낼 수 있으므로 포렌식 조사​를 수행합니다. 목표는 공격으로 의심되는 공격을 확인하고 누가 언제 수행한 작업인지 확인하며 잠재적 침해 정도를 파악하는 것입니다.
  • 이들 항목이 언제 추가되었는지와 사용되고 있거나 사용된 적이 있는지 알아보려면 감사 로그를 검토​합니다.
  • 만료된 자격 증명도 확인해야 합니다. 더 이상 사용할 수 없는 것이더라도 위협 행위자가 이전에 사용했을 수도 있기 때문입니다.

애플리케이션에 연결된 자격 증명과 달리, 서비스 주체 자격 증명은 Azure 포털을 사용해 목록으로 표시할 수 없습니다. Microsoft Graph PowerShellGet-MgServicePrincipal cmdlet을 사용해 서비스 주체 자격 증명 나열:

  • 키 자격 증명의 경우: Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property keyCredentials | select -ExpandProperty keyCredentials
  • 비밀번호 자격 증명의 경우: Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property passwordCredentials | select -ExpandProperty passwordCredentials

이러한 자격 증명을 삭제하려면 다음을 사용:

  • 키 자격 증명의 경우: 정상적인 방법은 Remove-MgServicePrincipalKey를 사용하는 것이지만, 이렇게 하려면 프라이빗 키에 액세스하는 데 필요한 "소유 증거"가 필요한데 이 조건에 부합할 수 없을 때도 있습니다. 그런 경우, 우선 $keycredentials = (Get-MgServicePrincipal -ServicePrincipalId <objectid>).KeyCredentials를 사용해 키 자격 증명 배열을 확보하고, $keycredentials에서 원치 않는 항목을 제거한 다음, 마지막으로 Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials $keycredentials를 사용해 이 새 배열을 적용하는 방식으로 우회할 수 있습니다. 모두 지우려면 간단하게 Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials @()를 사용하면 됩니다.
  • 비밀번호 자격 증명의 경우: Remove-MgServicePrincipalPassword(앞서와 같은 문제가 없음)

아니면, 이제 사용 중지된 AzureAD PowerShell Module을 사용하는 방법도 있습니다.

  • 키 자격 증명의 경우: Get-AzureADServicePrincipalKeyCredentialRemove-AzureADServicePrincipalKeyCredential
  • 비밀번호 자격 증명의 경우: Get-AzureADServicePrincipalPasswordCredentialRemove-AzureADServicePrincipalPasswordCredential

지표 세부 정보

이름: 자격 증명이 있는 자사 서비스 주체

코드명: FIRST-PARTY-SERVICE-PRINCIPAL-WITH-CREDENTIALS

심각도: High

MITRE ATT&CK 정보:

기술: T1098.001

More: Azure AD privilege escalation - Taking over default application permissions as Application Admin