Forge Web Credentials: SAML Tokens

ID Name
T1606.001 Web Cookies
T1606.002 SAML Tokens

An adversary may forge SAML tokens with any permissions claims and lifetimes if they possess a valid SAML token-signing certificate.[1] The default lifetime of a SAML token is one hour, but the validity period can be specified in the NotOnOrAfter value of the conditions ... element in a token. This value can be changed using the AccessTokenLifetime in a LifetimeTokenPolicy.[2] Forged SAML tokens enable adversaries to authenticate across services that use SAML 2.0 as an SSO (single sign-on) mechanism.[3]

An adversary may utilize Private Keys to compromise an organization's token-signing certificate to create forged SAML tokens. If the adversary has sufficient permissions to establish a new federation trust with their own Active Directory Federation Services (AD FS) server, they may instead generate their own trusted token-signing certificate.[4] This differs from Steal Application Access Token and other similar behaviors in that the tokens are new and forged by the adversary, rather than stolen or intercepted from legitimate users.

An adversary may gain administrative Azure AD privileges if a SAML token is forged which claims to represent a highly privileged account. This may lead to Use Alternate Authentication Material, which may bypass multi-factor and other authentication protection mechanisms.[4]

ID: T1606.002
Sub-technique of:  T1606
Platforms: Azure AD, Google Workspace, IaaS, Office 365, SaaS, Windows
Contributors: Blake Strom, Microsoft 365 Defender; Jack Burns, HubSpot; Oleg Kolesnikov, Securonix
Version: 1.2
Created: 17 December 2020
Last Modified: 19 September 2023

Procedure Examples

ID Name Description
S0677 AADInternals

AADInternals can be used to create SAML tokens using the AD Federated Services token signing certificate.[5]

C0024 SolarWinds Compromise

During the SolarWinds Compromise, APT29 created tokens using compromised SAML signing certificates.[6][7]

Mitigations

ID Mitigation Description
M1015 Active Directory Configuration

For containing the impact of a previously forged SAML token, rotate the token-signing AD FS certificate in rapid succession twice, which will invalidate any tokens generated using the previous certificate.[8]

M1047 Audit

Enable advanced auditing on AD FS. Check the success and failure audit options in the AD FS Management snap-in. Enable Audit Application Generated events on the AD FS farm via Group Policy Object.[9]

M1026 Privileged Account Management

Restrict permissions and access to the AD FS server to only originate from privileged access workstations.[9]

M1018 User Account Management

Ensure that user accounts with administrative rights follow best practices, including use of privileged access workstations, Just in Time/Just Enough Administration (JIT/JEA), and strong authentication. Reduce the number of users that are members of highly privileged Directory Roles.[4]

Detection

ID Data Source Data Component Detects
DS0028 Logon Session Logon Session Creation

Monitor for logins using SAML tokens which do not have corresponding 4769 and 1200 events in the domain.[10] These logins may occur on any on-premises resources as well as from any cloud environment that trusts the certificate.[4]

Logon Session Metadata

Consider modifying SAML responses to include custom elements for each service provider. Monitor these custom elements in service provider access logs to detect any anomalous requests.[10]

DS0002 User Account User Account Authentication

Monitor for user authentication attempts, when requesting access tokens to services, that failed because of Conditional Access Policies (CAP). Some SAML tokens features, such as the location of a user, may not be as easy to claim.

DS0006 Web Credential Web Credential Creation

Monitor for creation of access tokens using SAML tokens which do not have corresponding 4769 and 1200 events in the domain.[10]

Web Credential Usage

Monitor for the use of access tokens to access services such as email that were created using SAML tokens which do not have corresponding 1202 events (i.e. "The Federation Service validated a new credential") in the domain.[10]

References