T1550.001

Application Access Token

Adversaries may use stolen application access tokens to bypass the typical authentication process and access restricted accounts, information, or services. Application access tokens are used to make authorized API requests on behalf of a user or service and are commonly used to access resources in cloud and SaaS environments. Stolen OAuth tokens can grant long-term access to resources — including email, files, and cloud infrastructure — without requiring the original user credentials. Token-based API access bypasses MFA controls entirely and may persist even after password resets, since token validity is independent of the user's password. Adversaries exploit this in Microsoft 365 environments via OAuth phishing (APT28, HAFNIUM), in AWS via STS federation token generation, and in Kubernetes via stolen service account tokens (Peirates).

Microsoft Sentinel / Defender
kusto
let TimeWindow = 24h;
let SuspiciousUserAgents = dynamic([
    "python-requests", "curl/", "wget/", "Go-http-client",
    "okhttp/", "node-fetch", "axios/", "PostmanRuntime", "libcurl",
    "ruby", "aiohttp", "httpx", "java/"
]);
let SensitiveResources = dynamic([
    "Microsoft Graph", "Office 365 Exchange Online", "SharePoint Online",
    "Microsoft Teams", "OneDrive", "Azure Key Vault",
    "Windows Azure Service Management API"
]);
// Detect suspicious non-interactive (token-based) sign-ins bypassing MFA
AADNonInteractiveUserSignInLogs
| where TimeGenerated > ago(TimeWindow)
| where ResultType == 0
| where AuthenticationRequirement =~ "singleFactorAuthentication"
| where ConditionalAccessStatus in~ ("notApplied", "disabled", "notEnabled")
| extend
    HasSuspiciousAgent = UserAgent has_any (SuspiciousUserAgents),
    AccessedSensitiveResource = ResourceDisplayName has_any (SensitiveResources)
| where HasSuspiciousAgent or AccessedSensitiveResource
| summarize
    TokenUseCount = count(),
    UniqueResources = dcount(ResourceDisplayName),
    UniqueApps = dcount(AppDisplayName),
    UniqueIPs = dcount(IPAddress),
    Resources = make_set(ResourceDisplayName, 10),
    Apps = make_set(AppDisplayName, 5),
    SourceIPs = make_set(IPAddress, 5),
    UserAgents = make_set(UserAgent, 3),
    Countries = make_set(tostring(LocationDetails.countryOrRegion), 5)
  by UserPrincipalName, bin(TimeGenerated, 1h)
| where TokenUseCount > 10 or UniqueResources >= 3 or UniqueIPs >= 2
| extend RiskIndicator = case(
    UniqueIPs >= 3, "Token used from 3+ distinct IPs — likely shared or stolen token",
    UniqueResources >= 5, "Token accessing 5+ resources — automated enumeration pattern",
    TokenUseCount > 50, "High-frequency API access — scripted tool or automation",
    "Suspicious single-factor token-based authentication to sensitive resource"
  )
| project TimeGenerated, UserPrincipalName, TokenUseCount, UniqueResources, UniqueApps,
          UniqueIPs, Resources, Apps, SourceIPs, UserAgents, Countries, RiskIndicator
| sort by TokenUseCount desc
high severity medium confidence

Data Sources

Azure Active Directory: Non-Interactive Sign-in Logs Microsoft Sentinel: AADNonInteractiveUserSignInLogs Microsoft Entra ID: Sign-in Logs

Required Tables

AADNonInteractiveUserSignInLogs

False Positives

  • Legitimate service accounts and automation scripts that use OAuth tokens for scheduled integrations, ETL pipelines, or Power Automate flows accessing Microsoft Graph
  • CI/CD pipelines using service principals with delegated user permissions to deploy code, publish packages, or access Azure DevOps resources
  • Monitoring tools and SIEM connectors (Defender for Cloud Apps, Entra ID Protection, third-party SIEM add-ons) that repeatedly authenticate to Microsoft Graph for log collection at high volume
  • Third-party SaaS applications with broad OAuth permissions legitimately granted by IT administrators — e.g., backup solutions, email security gateways, eDiscovery tools

Unlock Pro Content

Get the full detection package for T1550.001 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections