Az - Federation
기본 정보
문서에서:**연맹(Federation)**은 신뢰를 확립한 도메인들의 모음입니다. 신뢰 수준은 다양할 수 있지만 일반적으로 인증을 포함하며 거의 항상 인가를 포함합니다. 전형적인 연맹은 공유 액세스를 위해 신뢰를 확립한 여러 조직을 포함할 수 있습니다.
온프레미스 환경을 Azure AD와 연맹하고 이 연맹을 인증 및 권한 부여에 사용할 수 있습니다. 이 로그인 방법은 모든 사용자 인증이 온프레미스에서 발생함을 보장합니다. 이 방법을 사용하면 관리자가 더 엄격한 수준의 액세스 제어를 구현할 수 있습니다. AD FS 및 PingFederate와의 연맹이 가능합니다.
기본적으로 연맹에서 모든 인증은 온프레미스 환경에서 발생하며 사용자는 신뢰하는 모든 환경에서 SSO를 경험합니다. 따라서 사용자는 온프레미 자격 증명을 사용하여 클라우드 응용 프로그램에 액세스할 수 있습니다.
**보안 주장 표시 언어(SAML)**은 제공자 간에 모든 인증 및 권한 부여 정보를 교환하는 데 사용됩니다.
어떤 연맹 설정에서는 세 가지 당사자가 있습니다:
사용자 또는 클라이언트
신원 제공자(IdP)
서비스 제공자(SP)
(이미지 출처: https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
먼저 사용자가 응용 프로그램(서비스 제공자 또는 SP, 예: AWS 콘솔 또는 vSphere 웹 클라이언트)에 액세스합니다. 특정 구현에 따라 클라이언트를 직접 IdP(신원 제공자)로 이동시켜 이 단계를 생략할 수 있습니다.
그런 다음 SP는 사용자 인증을 위해 적절한 IdP(예: AD FS, Okta)를 식별합니다. 그런 다음 SP는 SAML(Security Assertion Markup Language) AuthnRequest를 작성하고 클라이언트를 선택한 IdP로 다시 라우팅합니다.
IdP가 사용자를 인증합니다. 인증 후 IdP는 SAMLResponse를 작성하고 사용자를 통해 SP로 전달합니다.
마지막으로 SP는 SAMLResponse를 평가합니다. IdP와의 신뢰 관계를 나타내는 성공적인 유효성 검사가 있으면 사용자에게 액세스 권한이 부여됩니다. 이로써 로그인 프로세스가 완료되어 사용자가 서비스를 활용할 수 있게 됩니다.
SAML 인증 및 일반적인 공격에 대해 자세히 알아보려면:
Pivoting
AD FS는 주장 기반 신원 모델입니다.
"..주장은 사용자에 대해 만들어진 주장(예: 이름, 신원, 그룹)으로, 인터넷 어디에서든 주장 기반 애플리케이션에 액세스 권한을 부여하는 데 주로 사용됩니다."
사용자의 주장은 SAML 토큰 내에 작성되고 IdP에 의해 기밀성을 제공하기 위해 서명됩니다.
사용자는 ImmutableID에 의해 식별됩니다. 이는 전역적으로 고유하며 Azure AD에 저장됩니다.
ImmutableID는 사용자의 GUID에서 파생될 수 있습니다.
Golden SAML 공격:
ADFS에서 SAML Response는 토큰 서명 인증서에 의해 서명됩니다.
인증서가 Compromise되면 Azure AD에 동기화된 모든 사용자로 인증할 수 있습니다!
PTA 남용과 마찬가지로 사용자의 비밀번호 변경이나 MFA는 영향을 미치지 않습니다. 왜냐하면 인증 응답을 위조하기 때문입니다.
인증서는 DA 권한으로 AD FS 서버에서 추출한 다음 인터넷에 연결된 장치에서 사용할 수 있습니다.
Golden SAML
**신원 제공자(IdP)**가 사용자 로그인을 승인하기 위해 SAMLResponse를 생성하는 과정이 중요합니다. IdP의 특정 구현에 따라 응답은 IdP의 개인 키를 사용하여 서명 또는 암호화될 수 있습니다. 이 절차는 SP가 SAMLResponse의 신뢰성을 확인하여 신뢰할 수 있는 IdP에서 발급되었음을 보장합니다.
이는 골든 티켓 공격과 유사하며, 사용자의 신원과 권한을 인증하는 키(KRBTGT의 경우 골든 티켓, 골든 SAML의 경우 토큰 서명 개인 키)를 조작하여 인증 객체(TGT 또는 SAMLResponse)를 위조할 수 있습니다. 이를 통해 어떤 사용자든 흉내를 내어 SP에 무단 액세스할 수 있습니다.
골든 SAML은 다음과 같은 이점을 제공합니다:
원격으로 생성될 수 있으며 해당 도메인이나 연맹의 일부가 되어야 할 필요가 없습니다.
**이중 인증(2FA)**이 활성화된 상태에서도 효과적입니다.
토큰 서명 개인 키가 자동으로 갱신되지 않습니다.
사용자의 비밀번호를 변경해도 이미 생성된 SAML을 무효화하지 않습니다.
AWS + AD FS + Golden SAML
Active Directory Federation Services (AD FS)는 신뢰하는 비즈니스 파트너(연맹) 간에 신원 정보를 안전하게 교환하는 데 도움이 되는 Microsoft 서비스입니다. 이는 도메인 서비스가 연맹 내에서 다른 서비스 제공자와 사용자 신원을 공유할 수 있도록 합니다.
AWS가 연맹 내의 침해된 도메인을 신뢰하는 경우, 이 취약점을 활용하여 AWS 환경에서 어떤 권한이든 획득할 수 있습니다. 이 공격에는 SAML 객체에 서명하는 데 사용된 개인 키가 필요하며, 이는 골든 티켓 공격에서 KRBTGT가 필요한 것과 유사합니다. AD FS 사용자 계정에 액세스하면 이 개인 키를 얻을 수 있습니다.
골든 SAML 공격을 실행하기 위한 요구 사항은 다음과 같습니다:
토큰 서명 개인 키
IdP 공개 인증서
IdP 이름
역할 이름(가정할 역할)
도메인\사용자 이름
AWS에서의 역할 세션 이름
Amazon 계정 ID
굵게 표시된 항목만 필수입니다. 나머지는 원하는 대로 작성할 수 있습니다.
개인 키를 획들하기 위해서는 AD FS 사용자 계정에 액세스해야 합니다. 거기서 mimikatz와 같은 도구를 사용하여 개인 키를 개인 저장소에서 내보낼 수 있습니다. 다른 필요한 정보를 수집하기 위해 Microsoft.Adfs.Powershell 스냅인을 사용하여 다음과 같이 로그인된 상태로 ADFS 사용자로 로그인해야 합니다:
모든 정보를 갖고 있으면 shimit를 사용하여 피해자로 위장할 수 있는 유효한 SAMLResponse를 잊을 수 있습니다:**
온프레미스 -> 클라우드
클라우드 전용 사용자의 ImmutableID를 생성하고 그들을 표절하는 것도 가능합니다.
참고 자료
最終更新