Detect Additional Cloud Roles in IBM QRadar
An adversary may add additional roles or permissions to an adversary-controlled cloud account to maintain persistent access to a tenant. For example, adversaries may update IAM policies in cloud-based environments or add a new global administrator in Office 365 environments. With sufficient permissions, a compromised account can gain almost unlimited access to data and settings, including the ability to reset the passwords of other admins. This account modification may immediately follow account creation or other malicious account activity. Adversaries may also modify existing valid accounts that they have compromised, potentially leading to privilege escalation and lateral movement to additional accounts. In some cases, adversaries may add roles to adversary-controlled accounts outside the victim cloud tenant, allowing external accounts to perform actions inside the victim tenant. Threat groups such as Scattered Spider, LAPSUS$, and Storm-0501 have used this technique to gain persistent administrative access to cloud environments.
MITRE ATT&CK
- Tactic
- Persistence Privilege Escalation
- Technique
- T1098 Account Manipulation
- Sub-technique
- T1098.003 Additional Cloud Roles
- Canonical reference
- https://attack.mitre.org/techniques/T1098/003/
QRadar Detection Query
SELECT
DATEFORMAT(devicetime, 'yyyy-MM-dd HH:mm:ss') AS "Event Time",
LOGSOURCENAME(logsourceid) AS "Log Source",
LOGSOURCETYPENAME(devicetype) AS "Log Source Type",
username AS "Initiated By",
QIDNAME(qid) AS "Event Name",
sourceip AS "Source IP",
magnitude
FROM events
WHERE
LOGSOURCETYPENAME(devicetype) IN (
'Microsoft Azure Active Directory',
'Microsoft Office 365',
'Microsoft Azure'
)
AND (
LOWER(QIDNAME(qid)) LIKE '%add member to role%'
OR LOWER(QIDNAME(qid)) LIKE '%role assignment%'
OR LOWER(QIDNAME(qid)) LIKE '%elevate access%'
OR LOWER(QIDNAME(qid)) LIKE '%assign directory role%'
OR LOWER(UTF8(payload)) LIKE '%roleassignments/write%'
OR LOWER(UTF8(payload)) LIKE '%elevateaccess/action%'
OR LOWER(UTF8(payload)) LIKE '%roledefinitions/write%'
)
AND devicetime > NOW() - 86400000
ORDER BY magnitude DESC, devicetime DESC IBM QRadar AQL query detecting cloud role assignment events across Microsoft Azure Active Directory, Office 365, and Azure Activity log sources. Searches both normalized QIDNAME event classifications and raw UTF-8 payload for role assignment operations. Requires the Azure AD, O365, and Azure DSMs to be installed and configured with appropriate log source identifiers.
Data Sources
Required Tables
False Positives & Tuning
- Legitimate IT admin role assignments performed through approved IAM ticketing systems such as ServiceNow or Jira
- Automated Azure AD Governance access review campaigns that re-assign certified roles in bulk after review completion
- Service principal provisioning during enterprise application onboarding that generates roleAssignments/write events in Activity logs
- Break-glass emergency access account role grants during production incident response under change management approval
Other platforms for T1098.003
Testing Methodology
Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Assign Global Administrator Role to User via Azure AD PowerShell
Expected signal: Azure AD AuditLogs: OperationName 'Add member to role' with TargetResources containing the target UPN and RoleName 'Global Administrator'. InitiatedBy will show the executing account's UPN and IP address. Event appears in AuditLogs within 5-15 minutes. Unified Audit Log: RecordType 8, Operation 'Add member to role.' with similar details.
- Test 2Assign Azure Subscription Owner Role via Az PowerShell (RBAC Escalation)
Expected signal: AzureActivity log: OperationNameValue 'Microsoft.Authorization/roleAssignments/write' with ActivityStatusValue 'Success', Caller set to the executing account, ResourceId containing the subscription scope and roleAssignment GUID. Event appears in AzureActivity within 2-5 minutes.
- Test 3Use elevateAccess API to Gain User Access Administrator at Root Scope
Expected signal: AzureActivity log: OperationNameValue 'Microsoft.Authorization/elevateAccess/action' with ActivityStatusValue 'Success', Caller set to the Global Admin account. A second event 'Microsoft.Authorization/roleAssignments/write' at scope '/' will also appear as the role is auto-assigned.
- Test 4Add External Guest Account to Privileged Role via Microsoft Graph API
Expected signal: Azure AD AuditLogs: OperationName 'Add member to role' with TargetResources showing the guest account UPN (ending in #EXT# or external domain) and RoleName 'Security Administrator'. InitiatedBy shows the account that executed the Graph API call with its IP address. Graph API calls appear as 'Microsoft Graph' in the InitiatedBy.app field when authenticated via service principal.
References (14)
- https://attack.mitre.org/techniques/T1098/003/
- https://docs.microsoft.com/en-us/office365/admin/add-users/about-admin-roles?view=o365-worldwide
- https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html
- https://cloud.google.com/iam/docs/policies
- https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/
- https://expel.com/blog/incident-report-from-cli-to-console-chasing-an-attacker-in-aws/
- https://www.microsoft.com/security/blog/2022/03/22/dev-0537-criminal-actor-targeting-organizations-for-data-exfiltration-and-destruction/
- https://www.microsoft.com/security/blog/2023/10/25/octo-tempest-crosses-boundaries-to-facilitate-extortion-encryption-and-destruction/
- https://www.invictus-ir.com/news/the-curious-case-of-dangerdev-protonmail-me
- https://learn.microsoft.com/en-us/azure/active-directory/roles/security-planning
- https://learn.microsoft.com/en-us/azure/role-based-access-control/elevate-access-global-admin
- https://learn.microsoft.com/en-us/azure/active-directory/privileged-identity-management/pim-configure
- https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/activity-log
- https://learn.microsoft.com/en-us/microsoft-365/compliance/search-the-audit-log-in-security-and-compliance
Unlock Pro Content
Get the full detection package for T1098.003 including response playbook, investigation guide, and atomic red team tests.