페더레이션 서명 인증서 불일치

HIGH

설명

Microsoft Entra 테넌트는 외부 도메인과 페더레이션하여 다른 도메인과의 트러스트를 설정해 인증과 권한 부여에 이용할 수 있습니다. 조직에서는 페더레이션을 사용해 Active Directory 사용자에 대한 인증을 조직의 온프레미스 Active Directory Federation Services (AD FS)에 위임합니다. (참고: 여기에서 외부 도메인은 Active Directory "도메인"이 아닙니다.) 하지만, 악성 행위자가 Microsoft Entra ID에서 상승된 권한을 얻으면 이 페더레이션 방식을 악용해 백도어를 만들 수 있습니다.​ 즉 자체 설정을 사용해 적법한 페더레이션 구성에 자체 악성 보조 토큰 서명 인증서를 추가하는 것입니다. 이 공격으로 인해 다음과 같은 작업이 가능하게 됩니다.

  • 가장​: 악성 보조 토큰 서명 인증서로 토큰을 생성하여 공격자가 Microsoft Entra 사용자의 비밀번호를 알거나 재설정하지 않고도 해당 사용자 자격으로 인증하도록 허용합니다. 여기에는 "클라우드 전용" 사용자(하이브리드 아님)와 외부 사용자가 포함됩니다. 이 경우 MFA를 적용한 경우에도 Microsoft Entra ID, Microsoft 365(O365)는 물론 Microsoft Entra ID를 ID 공급자(SSO)로 사용하는 기타 애플리케이션을 공격할 수 있게 됩니다(아래 참조).
  • 권한 상승​: 공격자가 임의의 사용자, 특히 권한 있는 Microsoft Entra 사용자로 가장할 수 있습니다.
  • 다단계 인증 우회​: 페더레이션 인증을 사용하면 신뢰할 수 있는 외부 도메인이 MFA를 적용하는 역할을 맡게 됩니다. 그러면 악성 보조 토큰 서명 인증서가 스푸핑한 인증이 MFA를 사용했다고 거짓으로 주장할 수 있고, Microsoft Entra ID가 이 주장을 신뢰하여 MFA를 다시 요청하지 않게 됩니다. 이렇게 하면 MFA 보호가 적용되었어도 공격자가 모든 사용자를 가장할 수 있습니다.
  • 지속성​: 악성 보조 토큰 서명 인증서를 기존 페더레이션 도메인에 추가하는 것은 일종의 은폐 기법입니다. 이 방법을 통해 Microsoft Entra 테넌트를 침해하여 높은 권한을 도용한 공격자가 나중에 액세스 권한을 다시 얻을 수 있습니다.

이 위험 노출 지표는 기본 및 보조 토큰 서명 인증서(있는 경우)의 주체 또는 발급자 특성이 불일치하는지 탐지합니다​. 이러한 항목이 불일치하면 보조 토큰 서명 인증서가 불법이고 악성일 가능성이 있다는 뜻일 수 있습니다.

관련 위험 노출 지표 "알려진 페더레이션 도메인 백도어"도 참조하십시오.

침해된 페더레이션 도메인에서 공격 대상인 Microsoft Entra ID로 인증 증거를 전송하는 데 사용되는 페더레이션 프로토콜은 WS-Federation 또는 SAML일 수 있습니다. SAML을 사용하는 경우, 공격이 "Golden SAML" 공격과 비슷한 형태이며 다음과 같은 중요한 차이점이 있습니다.

  • 기존 페더레이션의 정상적인 SAML 서명 키를 도용하지 않고 공격자가 자체적인 키를 사용해 자신의 보조 서명 인증서를 주입합니다.
  • 공격자가 위조한 토큰을 특정 서비스가 아닌 페더레이션 서비스에 제시하여 여러 시스템에 대한 무단 액세스를 얻으려고 합니다.

microsoft.directory/domains/allProperties/allTasksmicrosoft.directory/domains/federation/update 권한이 관리자에게 페더레이션 도메인을 수정할 능력을 부여합니다. 2023년 11월 기준으로, 잠재적인 사용자 지정 역할 외에 이 권한이 있는 기본 제공 Microsoft Entra 역할은 다음과 같습니다.

APT29 위협 그룹이 2020년 12월에 SolarWinds를 상대로 감행한 악명높은 "Solorigate" 공격이 이 방식을 악용했습니다. 자세한 내용은 MicrosoftMandiant에서 문서화했습니다. 이 기법은 "Azure AD 및 Office 365 ID 페더레이션의 보안 취약성", "Azure AD에 대한 백도어 만드는 방법 - 1부: ID 페더레이션", "Azure Active Directory ID 페더레이션 심층 탐구"와 같은 여러 문서에도 설명되어 있습니다.

솔루션

이와 같은 조사 결과는 공격자의 잠재적인 백도어​일 가능성을 나타냅니다.

우선, 보조 토큰 서명 인증서를 살펴보되 기본 인증서와 일치하지 않는 것으로 보고된 특성이 있는지 특히 주의합니다​. 조직 내에서 이러한 특성이 적법한지 확인합니다. 이 보조 인증서를 포함하는 보고된 도메인의 페더레이션 구성에 적용된 수정 사항과 관련해 Entra ID 관리자에게 확인을 요청합니다.

보조 토큰 서명 인증서는 보통 만료가 임박한 기본 인증서를 회전하는 데 사용됩니다. 이 인증서가 보안 문제가 되는 상황은 인증서가 악성인 것이 명백하거나 관리자가 인지하지 못해서 악성일 가능성이 있는 경우​뿐입니다. 그러한 상황에서는 포렌식 분석을 통해 인시던트 대응 절차​를 시작하여 공격으로 의심되는 사례를 확인하고, 공격의 출처와 시간을 파악한 다음 가능한 침해 정도를 평가합니다.

Azure 포털에서 페더레이션 도메인의 목록을 확인하려면 "사용자 지정 도메인 이름" 블레이드로 이동해 "페더레이션" 열에서 체크 표시가 있는 항목을 찾아봅니다. 악성 도메인일 가능성이 있는 이름은 발견 사항에서 플래그가 지정된 것과 일치합니다. 다만, MS Graph API와는 달리 Azure 포털에서는 페더레이션의 기술적 세부 정보를 표시하지 않습니다.

MS Graph API의 PowerShell cmdlet을 사용하여 다음과 같이 Get-MgDomain을 통해 도메인을 나열하고 Get-MgDomainFederationConfiguration을 통해 도메인의 페더레이션 구성을 나열합니다.

Connect-MgGraph -Scopes "Domain.Read.All"
Get-MgDomain -All | Where-Object { $_.AuthenticationType -eq "Federated" } | ForEach-Object { $_​ ; Get-MgDomainFederationConfiguration -DomainId $_.Id }

포렌식 분석을 위해 증거를 저장​하고 나서는 악성 보조 토큰 서명 인증서를 제거하는 것이 좋습니다. Microsoft에서는 이 인증서를 페더레이션 구성에서 제거하는 직접적인 방식을 제공하지 않으므로, 도메인 페더레이션을 사용 중지하거나 영향을 받은 도메인을 완전히 제거하여 페더레이션 구성을 지운 다음에 다시 사용으로 설정하는 것이 가장 간편합니다. 다만 타이밍에 유의해야 합니다. 이 프로세스를 진행하는 동안 이 페더레이션 도메인에 의존하는 사용자가 인증할 수 없기 때문입니다. Microsoft Entra Connect를 사용하여 페더레이션을 구성한 경우, Microsoft Entra Connect를 사용하여 이 작업을 수행합니다. 수동으로 작업하는 경우, Update-MgDomainFederationConfiguration 및 처음에 재설정할 때 사용한 것과 같은 방식을 사용하십시오. Microsoft "AD FS 인증서의 긴급 회전" 수정 가이드를 따르면 됩니다.

해당 작업이 이루어졌는지 확인하려면 이 위험 노출 지표에서 보고한 발견 사항이 해결되었는지 확인하십시오. 또한, 공격자가 백도어와 같은 기타 지속성 메커니즘을 설정했을 수 있음을 예상하는 것이 중요합니다. 인시던트 대응 전문가의 도움을 받아 이러한 추가 위협이 있는지 파악하고 제거하십시오.

이런 유형의 공격은 Microsoft Entra ID의 정상적이고 합법적인 기능인 페더레이션을 악용합니다. 향후 공격을 방지하려면, 페더레이션 설정을 수정할 수 있는 관리자의 수를 제한해야 합니다. 공격자가 그러한 백도어를 만들려면 높은 권한이 있어야 하므로 이렇게 하면 사전 예방이 가능합니다. 취약성 설명에서 특정 권한 및 역할 목록을 확인하십시오.

지표 세부 정보

이름: 페더레이션 서명 인증서 불일치

코드명: FEDERATION-SIGNING-CERTIFICATES-MISMATCH

심각도: High

유형: Microsoft Entra ID Indicator of Exposure

MITRE ATT&CK 정보: