Cross-source coverage
T1528 / ATT&CK
Steal Application Access Token
82 rules · 81 families across 7 sources.
1 deprecated hidden · include
From MITRE ATT&CK 19.2
Adversaries can steal application access tokens as a means of acquiring credentials to access remote systems and resources.
Application access tokens are used to make authorized API requests on behalf of a user or service and are commonly used as a way to access resources in cloud and container-based applications and software-as-a-service (SaaS). Adversaries who steal account API tokens in cloud and containerized environments may be able to access data and perform actions with the permissions of these accounts, which can lead to privilege escalation and further compromise of the environment.
For example, in Kubernetes environments, processes running inside a container may communicate with the Kubernetes API server using service account tokens. If a container is compromised, an adversary may be able to steal the container’s token and thereby gain access to Kubernetes API commands.
Similarly, instances within continuous-development / continuous-integration (CI/CD) pipelines will often use API tokens to authenticate to other services for testing and deployment. If these pipelines are compromised, adversaries may be able to steal these tokens and leverage their privileges.
In Azure, an adversary who compromises a resource with an attached Managed Identity, such as an Azure VM, can request short-lived tokens through the Azure Instance Metadata Service (IMDS). These tokens can then facilitate unauthorized actions or further access to other Azure services, bypassing typical credential-based authentication.
Token theft can also occur through social engineering, in which case user action may be required to grant access. OAuth is one commonly implemented framework that issues tokens to users for access to systems. An application desiring access to cloud-based services or protected APIs can gain entry using OAuth 2.0 through a variety of authorization protocols. An example commonly-used sequence is Microsoft's Authorization Code Grant flow. An OAuth access token enables a third-party application to interact with resources containing user data in the ways requested by the application without obtaining user credentials.
Adversaries can leverage OAuth authorization by constructing a malicious application designed to be granted access to resources with the target user's OAuth token. The adversary will need to complete registration of their application with the authorization server, for example Microsoft Identity Platform using Azure Portal, the Visual Studio IDE, the command-line interface, PowerShell, or REST API calls. Then, they can send a Spearphishing Link to the target user to entice them to grant access to the application. Once the OAuth access token is granted, the application can gain potentially long-term access to features of the user account through Application Access Token.
Application access tokens may function within a limited lifetime, limiting how long an adversary can utilize the stolen token. However, in some cases, adversaries can also steal application refresh tokens, allowing them to obtain new access tokens without prompting the user.
- Tactics
- Credential Access
- Platforms
- Containers · IaaS · Identity Provider · Office Suite · SaaS
- Telemetry
-
kubernetes:auditAWS:CloudTrailazure:auditm365:unifiedsaas:googleworkspacesaas:slack
How MITRE says to detect it DET0515
Detection Strategy for T1528 - Steal Application Access Token
Containers Analytic 1423
Access and retrieval of container service account tokens followed by unauthorized API requests using those tokens to interact with the Kubernetes API server or internal services.
kubernetes:auditGET or LIST requests to /var/run/secrets/kubernetes.io/serviceaccount/ followed by access to the Kubernetes API server
IaaS Analytic 1424
Token retrieval from instance metadata endpoints such as AWS IMDS or Azure IMDS, followed by API usage using the obtained token from non-standard applications.
AWS:CloudTrailGetInstanceIdentityDocument or IMDSv2 token requestsAWS:CloudTrailUse of temporary credentials issued from IMDS access
Identity Provider Analytic 1425
Unusual OAuth app registration followed by user-granted OAuth tokens and subsequent high-privilege resource access via those tokens.
azure:auditApp registrations or consent grants by abnormal users or at unusual times
Office Suite Analytic 1426
Use of OAuth tokens by third-party apps to access user mail, calendar, or SharePoint resources where the token was granted recently or via spearphishing.
m365:unifiedApp-only or delegated access patterns where client_id != known enterprise apps
SaaS Analytic 1427
Programmatic access to user content via stolen access tokens in platforms like Slack, GitHub, Google Workspace — especially from new IPs, apps, or excessive resource access.
saas:googleworkspaceAccess via OAuth credentials with unusual scopes or from anomalous IPssaas:slackOAuth token use by unknown app client_id accessing private channels or files
elastic/detection-rules
30 rules| Detection | Severity | Format |
|---|---|---|
| Entra ID AiTM Phishing-Kit Chain Detected | High | Elastic TOML |
| Entra ID Concurrent Sign-in with Suspicious Properties | High | Elastic TOML |
| Entra ID Kali365 Default User-Agent Detected | High | Elastic TOML |
| Entra ID OAuth Application Redirect URI Modified | High | Elastic TOML |
| Entra ID OAuth Device Code Flow with Concurrent Sign-ins | High | Elastic TOML |
| Entra ID OAuth Device Code Sign-in to Azure AD Graph Enumeration | High | Elastic TOML |
| Entra ID OAuth Flow by Microsoft Authentication Broker to Device Registration Service (DRS) | High | Elastic TOML |
| Google Workspace Impossible Travel Login | High | Elastic TOML |
| Kubernetes and Cloud Credential Path Access via Process Arguments | High | Elastic TOML |
| M365 Identity OAuth Flow by First-Party Microsoft App from Multiple IPs | High | Elastic TOML |
+ 20 more from elastic/detection-rules → showing the 10 highest-severity
SigmaHQ/sigma
14 rules| Detection | Severity | Format |
|---|---|---|
| HackTool - Koh Default Named Pipe | Critical | Sigma |
| Anomalous Token | High | Sigma |
| Anonymous IP Address | High | Sigma |
| App Granted Microsoft Permissions | High | Sigma |
| Application URI Configuration Changes | High | Sigma |
| Delegated Permissions Granted For All Users | High | Sigma |
| Primary Refresh Token Access Attempt | High | Sigma |
| Renamed BrowserCore.EXE Execution | High | Sigma |
| Suspicious Teams Application Related ObjectAcess Event | High | Sigma |
| End User Consent Blocked | Medium | Sigma |
+ 4 more from SigmaHQ/sigma → showing the 10 highest-severity
Azure/Azure-Sentinel
11 rules| Detection | Severity | Format |
|---|---|---|
| Trust Monitor Event | Medium | KQL |
| Admin consent granted to application | Undefined | KQL |
| Application registration or update with external redirect URI | Undefined | KQL |
| Device code authentication from unseen autonomous system | Undefined | KQL |
| High-privilege application role assigned to service principal | Undefined | KQL |
| New service principal granted admin consent within one hour of creation | Undefined | KQL |
| OAuth application consent to high-risk permission scope | Undefined | KQL |
| OAuth application redirect URI modified | Undefined | KQL |
| OAuth consent to high-risk permission by a new or rarely seen application | Undefined | KQL |
| Service principal credential addition followed by immediate sign-in | Undefined | KQL |
+ 1 more from Azure/Azure-Sentinel → showing the 10 highest-severity
panther-labs/panther-analysis
10 rules| Detection | Severity | Format |
|---|---|---|
| Auth0 Refresh Token Reused | High | Panther Python |
| Kubernetes System Principal Accessed from Non-Cloud Public IP | High | Panther Python |
| Okta AD Agent Token Abuse - Behavioral | High | Panther Python |
| Zendesk API Token Created | High | Panther Python |
| AppOmni Alert Passthrough | Medium | Panther Python |
| Azure VS Code OAuth Phishing | Medium | Panther Python |
| Okta AD Agent Authentication Anomaly - Z-Score Detection | Medium | Panther Python |
| Salesforce OAuth Credential Abuse Detection | Medium | Panther Python |
| Salesforce Third-Party Integration Monitoring | Medium | Panther Python |
| Okta API Key Created | Informational | Panther Python |
splunk/security_content
9 rules| Detection | Severity | Format |
|---|---|---|
| Azure AD Device Code Authentication | Undefined | SPL |
| Azure AD OAuth Application Consent Granted By User | Undefined | SPL |
| Azure AD User Consent Blocked for Risky Application | Undefined | SPL |
| Azure AD User Consent Denied for OAuth Application | Undefined | SPL |
| O365 File Permissioned Application Consent Granted by User | Undefined | SPL |
| O365 Mail Permissioned Application Consent Granted by User | Undefined | SPL |
| O365 User Consent Blocked for Risky Application | Undefined | SPL |
| O365 User Consent Denied for OAuth Application | Undefined | SPL |
| Windows Cloud Sensitive File Read Access By Uncommon Process | Undefined | SPL |
socfortress/Wazuh-Rules
6 rules| Detection | Severity | Format |
|---|---|---|
| operation. · office_365.LogonError = DeviceAuthenticationFailed | Low | Wazuh XML |
| operation. · office_365.LogonError = FlowTokenExpired | Low | Wazuh XML |
| operation. · office_365.LogonError = FreshTokenNeeded | Low | Wazuh XML |
| operation. · office_365.LogonError = InvalidGrantDeviceNotFound | Low | Wazuh XML |
| operation. · office_365.Operation = GenerateDataflowSasToken | Low | Wazuh XML |
| operation. · office_365.Operation = Update StsRefreshTokenValidFrom Timestamp. | Low | Wazuh XML |
elastic/protections-artifacts
2 rules · 1 family| Detection | Severity | Format |
|---|---|---|
| Potential Cloud Credential Harvesting via Bun 2 variants | Undefined | Elastic TOML |
| Potential Cloud Credential Harvesting via Bun 2 variants | Undefined | Elastic TOML |