Az - Federation
Información Básica
Desde la documentación:Federación es una colección de dominios que han establecido confianza. El nivel de confianza puede variar, pero típicamente incluye autenticación y casi siempre incluye autorización. Una federación típica puede incluir un número de organizaciones que han establecido confianza para acceso compartido a un conjunto de recursos.
Puedes federar tu entorno local con Azure AD y utilizar esta federación para autenticación y autorización. Este método de inicio de sesión garantiza que toda la autenticación de usuario ocurra en el entorno local. Este método permite a los administradores implementar niveles más rigurosos de control de acceso. La federación con AD FS y PingFederate está disponible.
Básicamente, en la Federación, toda la autenticación ocurre en el entorno local y el usuario experimenta SSO en todos los entornos de confianza. Por lo tanto, los usuarios pueden acceder a aplicaciones en la nube utilizando sus credenciales locales.
Se utiliza el Lenguaje de Marcado de Afirmaciones de Seguridad (SAML) para intercambiar toda la información de autenticación y autorización entre los proveedores.
En cualquier configuración de federación hay tres partes:
Usuario o Cliente
Proveedor de Identidad (IdP)
Proveedor de Servicios (SP)
(Imágenes de https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
Inicialmente, una aplicación (Proveedor de Servicios o SP, como la consola de AWS o el cliente web de vSphere) es accedida por un usuario. Este paso podría ser omitido, llevando al cliente directamente al IdP (Proveedor de Identidad) dependiendo de la implementación específica.
Posteriormente, el SP identifica el IdP apropiado (por ejemplo, AD FS, Okta) para la autenticación del usuario. Luego crea una Solicitud de Autenticación SAML (Security Assertion Markup Language) y redirige al cliente al IdP elegido.
El IdP se hace cargo, autenticando al usuario. Después de la autenticación, se formula una Respuesta SAML por el IdP y se reenvía al SP a través del usuario.
Finalmente, el SP evalúa la Respuesta SAML. Si se valida con éxito, implicando una relación de confianza con el IdP, se concede acceso al usuario. Esto marca la finalización del proceso de inicio de sesión, permitiendo al usuario utilizar el servicio.
Si deseas aprender más sobre la autenticación SAML y los ataques comunes ve a:
Pivoteo
AD FS es un modelo de identidad basado en afirmaciones.
"..las afirmaciones son simplemente declaraciones (por ejemplo, nombre, identidad, grupo) hechas sobre usuarios, que se utilizan principalmente para autorizar el acceso a aplicaciones basadas en afirmaciones ubicadas en cualquier lugar de Internet."
Las afirmaciones para un usuario se escriben dentro de los tokens SAML y luego se firman para proporcionar confidencialidad por el IdP.
Un usuario es identificado por ImmutableID. Es globalmente único y se almacena en Azure AD.
El ImmutableID se almacena en local como ms-DS-ConsistencyGuid para el usuario y/o se puede derivar del GUID del usuario.
Ataque Golden SAML:
En ADFS, la Respuesta SAML está firmada por un certificado de firma de token.
¡Si el certificado se ve comprometido, es posible autenticarse en Azure AD como CUALQUIER usuario sincronizado con Azure AD!
Al igual que nuestro abuso de PTA, el cambio de contraseña para un usuario o MFA no tendrá ningún efecto porque estamos falsificando la respuesta de autenticación.
El certificado se puede extraer del servidor AD FS con privilegios de DA y luego se puede utilizar desde cualquier máquina conectada a Internet.
Golden SAML
El proceso donde un Proveedor de Identidad (IdP) produce una Respuesta SAML para autorizar el inicio de sesión del usuario es fundamental. Dependiendo de la implementación específica del IdP, la respuesta podría estar firmada o encriptada utilizando la clave privada del IdP. Este procedimiento permite al Proveedor de Servicios (SP) confirmar la autenticidad de la Respuesta SAML, asegurando que fue emitida por un IdP de confianza.
Se puede establecer un paralelo con el ataque de ticket dorado, donde la clave que autentica la identidad y permisos del usuario (KRBTGT para tickets dorados, clave privada de firma de token para Golden SAML) se puede manipular para falsificar un objeto de autenticación (TGT o Respuesta SAML). Esto permite la suplantación de cualquier usuario, otorgando acceso no autorizado al SP.
Los Golden SAML ofrecen ciertas ventajas:
Pueden ser creados de forma remota, sin necesidad de formar parte del dominio o federación en cuestión.
Siguen siendo efectivos incluso con la Autenticación de Dos Factores (2FA) habilitada.
La clave privada de firma de token no se renueva automáticamente.
Cambiar la contraseña de un usuario no invalida un SAML ya generado.
AWS + AD FS + Golden SAML
Active Directory Federation Services (AD FS) es un servicio de Microsoft que facilita el intercambio seguro de información de identidad entre socios comerciales de confianza (federación). Básicamente permite a un servicio de dominio compartir identidades de usuario con otros proveedores de servicios dentro de una federación.
Con AWS confiando en el dominio comprometido (en una federación), esta vulnerabilidad puede ser explotada para potencialmente adquirir cualquier permiso en el entorno de AWS. El ataque requiere la clave privada utilizada para firmar los objetos SAML, similar a necesitar el KRBTGT en un ataque de ticket dorado. El acceso a la cuenta de usuario de AD FS es suficiente para obtener esta clave privada.
Los requisitos para ejecutar un ataque Golden SAML incluyen:
Clave privada de firma de token
Certificado público del IdP
Nombre del IdP
Nombre del rol (rol a asumir)
Dominio\nombre de usuario
Nombre de sesión de rol en AWS
ID de cuenta de Amazon
Solo los elementos en negrita son obligatorios. Los demás se pueden completar según se desee.
Para adquirir la clave privada, es necesario acceder a la cuenta de usuario de AD FS. A partir de ahí, la clave privada se puede exportar desde el almacén personal utilizando herramientas como mimikatz. Para recopilar la otra información requerida, puedes utilizar el complemento Microsoft.Adfs.Powershell de la siguiente manera, asegurándote de estar conectado como el usuario de ADFS:
Con toda la información, es posible olvidar un SAMLResponse válido como el usuario que deseas suplantar usando shimit:
On-prem -> nube
También es posible crear el ImmutableID de usuarios solo en la nube e impersonarlos
Referencias
Última actualización