Cross-source coverage
T1098.001 / ATT&CK
Account Manipulation: Additional Cloud Credentials
55 rules across 7 sources.
From MITRE ATT&CK 19.2
Adversaries may add adversary-controlled credentials to a cloud account to maintain persistent access to victim accounts and instances within the environment.
For example, adversaries may add credentials for Service Principals and Applications in addition to existing legitimate credentials in Azure / Entra ID. These credentials include both x509 keys and passwords. With sufficient permissions, there are a variety of ways to add credentials including the Azure Portal, Azure command line interface, and Azure or Az PowerShell modules.
In infrastructure-as-a-service (IaaS) environments, after gaining access through Cloud Accounts, adversaries may generate or import their own SSH keys using either the CreateKeyPair or ImportKeyPair API in AWS or the gcloud compute os-login ssh-keys add command in GCP. This allows persistent access to instances within the cloud environment without further usage of the compromised cloud accounts.
Adversaries may also use the CreateAccessKey API in AWS or the gcloud iam service-accounts keys create command in GCP to add access keys to an account. Alternatively, they may use the CreateLoginProfile API in AWS to add a password that can be used to log into the AWS Management Console for Cloud Service Dashboard. If the target account has different permissions from the requesting account, the adversary may also be able to escalate their privileges in the environment (i.e. Cloud Accounts). For example, in Entra ID environments, an adversary with the Application Administrator role can add a new set of credentials to their application's service principal. In doing so the adversary would be able to access the service principal’s roles and permissions, which may be different from those of the Application Administrator.
In AWS environments, adversaries with the appropriate permissions may also use the sts:GetFederationToken API call to create a temporary set of credentials to Forge Web Credentials tied to the permissions of the original user account. These temporary credentials may remain valid for the duration of their lifetime even if the original account’s API credentials are deactivated.
In Entra ID environments with the app password feature enabled, adversaries may be able to add an app password to a user account. As app passwords are intended to be used with legacy devices that do not support multi-factor authentication (MFA), adding an app password can allow an adversary to bypass MFA requirements. Additionally, app passwords may remain valid even if the user’s primary password is reset.
- Tactics
- Persistence · Privilege Escalation
- Platforms
- IaaS · Identity Provider · SaaS
- Telemetry
-
azure:auditAWS:CloudTrailgcp:auditm365:unified
How MITRE says to detect it DET0531
Detection Strategy for Additional Cloud Credentials in IaaS/IdP/SaaS
Identity Provider Analytic 1469
Addition of credentials (keys, app passwords, x.509 certs) to existing cloud accounts, service principals, or OAuth apps via portal or API by non-standard identities or IP ranges.
azure:auditAdd service principal credentials, app password added, app role assignment
IaaS Analytic 1470
Cloud API usage to create/import SSH keys or generate new access keys (CreateAccessKey, ImportKeyPair, CreateLoginProfile) from non-console access or unusual principals.
AWS:CloudTrailCreateAccessKey, ImportKeyPair, CreateLoginProfile, CreateKeyPairgcp:auditiam.serviceAccounts.keys.create, os-login.sshPublicKeys.add
SaaS Analytic 1471
Credential-related configuration changes in productivity apps, such as API key creation in Google Workspace, app tokens in Slack, or user-level OAuth credentials in M365.
gcp:auditAPI Key Created, OAuth Client Registeredm365:unifiedSet-Mailbox, Set-AppPassword, Add-MailboxPermission
elastic/detection-rules
21 rules| Detection | Severity | Format |
|---|---|---|
| Application Added to Google Workspace Domain | High | Elastic TOML |
| AWS First Occurrence of STS GetFederationToken Request by User | High | Elastic TOML |
| AWS IAM Credentials Added to a Bedrock API Key Phantom User | High | Elastic TOML |
| AWS IAM Login Profile Added for Root | High | Elastic TOML |
| AWS IAM SAML Provider Created | High | Elastic TOML |
| AWS IAM User Created Access Keys For Another User | High | Elastic TOML |
| AWS Sensitive IAM Operations Performed via CloudShell | High | Elastic TOML |
| Entra ID Domain Federation Configuration Change | High | Elastic TOML |
| Entra ID Federated Identity Credential Issuer Modified | High | Elastic TOML |
| Entra ID Service Principal Federated Credential Authentication by Unusual Client | High | Elastic TOML |
+ 11 more from elastic/detection-rules → showing the 10 highest-severity
panther-labs/panther-analysis
12 rules| Detection | Severity | Format |
|---|---|---|
| AWS User Takeover Via Password Reset | High | Panther Python |
| Anthropic Admin API Key Created | Medium | Panther Python |
| Anthropic Admin API Key Deleted | Medium | Panther Python |
| Anthropic Service Key Created | Medium | Panther Python |
| Anthropic Service Key Revoked | Medium | Panther Python |
| A Teleport Role was modified or created | Medium | Panther Python |
| AWS Privilege Escalation Via User Compromise | Medium | Panther Python |
| Azure Service Principal Credentials Added | Medium | Panther Python |
| Crowdstrike API Key Created | Medium | Panther Python |
| Crowdstrike User Password Changed | Medium | Panther Python |
+ 2 more from panther-labs/panther-analysis → showing the 10 highest-severity
Azure/Azure-Sentinel
7 rules| Detection | Severity | Format |
|---|---|---|
| Federated identity credential added to Entra ID service principal | Undefined | KQL |
| Guest account initiating privileged Entra ID operation | Undefined | KQL |
| New owner added to Entra ID service principal | Undefined | KQL |
| Service principal credential added by user granted privileged role in last 24 hours | Undefined | KQL |
| Service principal credential addition by non-historical actor | Undefined | KQL |
| Service principal credential addition followed by immediate sign-in | Undefined | KQL |
| Service principal or application credential addition by a rarely observed actor | Undefined | KQL |
chronicle/detection-rules
6 rules| Detection | Severity | Format |
|---|---|---|
| github_personal_access_token_created_from_tor_ip_address | High | YARA-L |
| github_repository_deploy_key_created_or_modified | High | YARA-L |
| entra_id_secret_added_to_app | Medium | YARA-L |
| google_cloud_service_account_key_created_or_uploaded | Medium | YARA-L |
| o365_ADPowerShell_app_login_subsequent_activity | Medium | YARA-L |
| o365_entra_id_client_secret_add_update_delete_in_app | Medium | YARA-L |
Wazuh Core Ruleset
4 rules| Detection | Severity | Format |
|---|---|---|
| Possible IAM Role backdooring: IAM role granted from an external account. | High | Wazuh XML |
| Office 365: Added user | Medium | Wazuh XML |
| GCP identity and access management (IAM) custom role created. | Low | Wazuh XML |
| GCP new key is created for a service account. | Low | Wazuh XML |
SigmaHQ/sigma
3 rules| Detection | Severity | Format |
|---|---|---|
| Added Credentials to Existing Application | High | Sigma |
| Github Outside Collaborator Detected | Medium | Sigma |
| Okta Identity Provider Created | Medium | Sigma |
splunk/security_content
2 rules| Detection | Severity | Format |
|---|---|---|
| Azure AD Service Principal New Client Credentials | Undefined | SPL |
| O365 Service Principal New Client Credentials | Undefined | SPL |