SOP-43: Azure PIM Elevation Response

·

Azure Privileged Identity Management (PIM) provides just-in-time access to privileged roles. A PIM activation alert fires when an eligible user activates a high-privilege role (Global Administrator, User Administrator, Security Administrator). Suspicious indicators include activation outside business hours, self-approval where the policy should require manager approval, and Global Administrator activation without a business justification matching an open ticket.

PIM activations are logged in Entra ID Audit Logs under the PrivilegedIdentityManagement category and in AzureActivity under role assignment operations.

☰ Table of Contents

01 Background 02 Identification 03 Containment 04 Eradication 05 Escalation
🛠

01 — BACKGROUND

TECHNIQUE OVERVIEW
01
Azure PIM Architecture & Abuse Patterns
T1078.004 / T1548

PIM requires eligible users to explicitly activate a role before they have permissions. Role activation typically requires MFA, a business justification, and optionally manager approval. Attackers who compromise an account with PIM eligibility can activate high-privilege roles to gain access to critical resources. Self-approval abuse occurs when PIM policies are misconfigured to allow self-approval without a second approver for critical roles.

FieldValue
MITRE TechniqueT1078.004 — Cloud Accounts, T1548 — Abuse Elevation Control Mechanism
Log SourcesAuditLogs (Entra ID), AzureActivity
Operation NamesAdd member to role (PIM activation), Eligible member added/removed
High-Risk RolesGlobal Administrator, Privileged Role Administrator, User Administrator, Security Administrator
Detection PriorityHIGH — all Global Admin PIM activations require SOC review
🔍

02 — IDENTIFICATION

2 INDICATORS
▶ Investigation Workflow
I1
PIM Activation Pattern Analysis
T1078.004
WHY CHECK

Entra ID Audit Logs capture every PIM role activation with the activating user, the role name, the justification text submitted, and whether approval was required. Outside-hours activations (weekends, nights) of Global Administrator or Privileged Role Administrator warrant immediate verification with the account owner.

📍 Portal Navigation — Entra ID Audit Logs
entra.microsoft.com Identity Governance Privileged Identity Management → Audit history
  • 1Navigate to Entra ID → Identity Governance → Privileged Identity Management → Azure AD roles → Audit history.
  • 2Filter by Activity: Add member to role (PIM activation) and time range Last 24 hours.
  • 3Review Initiated by (activating user), Target (role name), and Reason (justification submitted). Absent or generic justifications are suspicious.
  • 4Note the activation timestamp — convert to the user's local timezone. Activations at 2–4 AM local time are high-risk indicators.
  • 5Run the KQL below to cross-correlate the PIM activation with subsequent actions performed during the elevated session (next 8 hours).
IndicatorMeaningAction
Global Admin + no ticketHighest risk PIM role activated without matching change ticketESCALATE NOW
Outside hours (10PM-6AM)Activation during non-business hours — possible compromised accountContact user immediately
Self-approval on critical rolePIM policy misconfigured — no second approver requiredFix policy + investigate
Unusual location/IPActivation from country not previously used by this accountESCALATE
DETECTS: PIM role activations from AuditLogs — returns all PIM activations in the last 24 hours with user, role, justification, and IP address for triage.
KQL — Microsoft Sentinel (AuditLogs — PIM Activations)
AuditLogs | where TimeGenerated > ago(24h) | where Category == "RoleManagement" | where OperationName has "Add member to role" and LoggedByService == "PIM" | extend ActivatedRole = tostring(TargetResources[0].displayName) | extend ActivatingUser = tostring(InitiatedBy.user.userPrincipalName) | extend ActivatingIP = tostring(InitiatedBy.user.ipAddress) | project TimeGenerated, ActivatingUser, ActivatingIP, ActivatedRole, Result, AdditionalDetails | order by TimeGenerated desc
DETECTS: PIM role activations in Splunk from Entra ID audit events — identifies privileged role elevations and flags Global Administrator activations for review.
SPL — Splunk
index=* sourcetype=azure:aad:audit Category=RoleManagement operationName="Add member to role" loggedByService=PIM | stats count as activations, values(targetDisplayName) as roles, values(src_ip) as ips by initiatedByUser | sort -activations
I2
Post-Activation Actions During Elevated Session
T1548
WHY CHECK

The key risk is not the PIM activation itself but what the user did while elevated. An attacker who activates Global Administrator may create a backdoor account, add a new Global Admin, disable MFA for existing accounts, or read/export sensitive directory data. These post-activation actions are logged in AuditLogs and AzureActivity.

📍 Portal Navigation — Entra ID Audit Logs (Post-Activation)
entra.microsoft.com Identity Monitoring → Audit logs → filter by user
  • 1Navigate to Entra ID → Monitoring → Audit logs. Filter by the activating user and the time window of the PIM session (activation time to deactivation/expiry).
  • 2Look for high-risk operations: Add user, Reset user password, Add member to role (adding others to admin roles), Update user (disabling MFA), Add application.
  • 3Check AzureActivity for any Resource Group operations, Key Vault access, or Storage account operations during the elevated session.
  • 4Run the KQL below to list all audit events from the activating user during the elevated window.
  • 5If backdoor accounts or additional admin role assignments are found, these are definitive indicators of an attack — escalate immediately.
DETECTS: All Entra ID operations performed by the activating user during the PIM elevated session window — identifies backdoor account creation, role assignments, and MFA configuration changes made while elevated.
KQL — Microsoft Sentinel (AuditLogs — Post-Activation Actions)
let ActivatingUser = "USER_UPN"; let ActivationTime = datetime("ACTIVATION_TIMESTAMP"); let SessionWindow = 8h; AuditLogs | where TimeGenerated between (ActivationTime .. (ActivationTime + SessionWindow)) | where InitiatedBy has ActivatingUser | where OperationName in ( "Add user", "Reset user password", "Add member to role", "Update user", "Add application", "Update application", "Delete user", "Disable strong authentication") | project TimeGenerated, OperationName, Result, TargetResources, AdditionalDetails | order by TimeGenerated asc

PIM activation by a Privileged Role Administrator (not Global Admin) is equally dangerous — Privileged Role Administrators can grant Global Admin PIM eligibility to any account, including newly created ones. Always check for new PIM eligibility assignments during the elevated session.

🚫

03 — CONTAINMENT

IMMEDIATE ACTION
C1
Verdict & Escalation Decision
DECISION GATE
▶ Triage Verdict — Select One
CONFIRMED Post-activation backdoor account or additional role assignment found → Disable activating account, remove backdoor accounts, revoke all sessions, full IR
PARTIAL Outside-hours activation, user cannot be reached, no post-activation suspicious actions yet → Revoke PIM session now, block sign-in, await user confirmation
FALSE POSITIVE User confirms authorized activation (on-call incident response), actions match stated justification → Document, verify PIM policy requires approval for after-hours, close
C2
Revoke PIM Session & Disable Account
CONTAINMENT
  • 1Manually deactivate the PIM role: PIM → Azure AD roles → Active assignments → [User/Role] → Deactivate.
  • 2If the account is compromised: Entra ID → Users → [User] → Block sign-in and revoke all sessions.
  • 3Remove any backdoor accounts created during the session: Users → filter by creation date matching the session window → Delete.
  • 4Remove any role assignments added during the session that are not authorized.
  • 5Review and revert any PIM eligibility assignments added during the session.
🗑

04 — ERADICATION

CLEANUP
E1
PIM Policy Hardening
ERADICATION
  • 1Update PIM settings for Global Administrator and Privileged Role Administrator: require manager approval (not self-approval) and enforce MFA during activation.
  • 2Set activation maximum duration to 4 hours for highly privileged roles — shorter windows reduce the blast radius of a compromised activation.
  • 3Enable PIM alerts: PIM → Alerts — ensure "Roles are being activated too frequently" and "Roles don't require MFA" alerts are active.
  • 4Review all accounts with Global Admin PIM eligibility — remove eligibility from any account that does not have a documented business need.
  • 5Create a Sentinel analytics rule to alert on all Global Admin and Privileged Role Admin PIM activations for continuous SOC review.
Eradication Complete When
  • Compromised PIM session deactivated and account disabled
  • All backdoor accounts and unauthorized role assignments removed
  • PIM policy updated to require approval for critical roles
  • Global Admin eligibility list audited and trimmed
  • Sentinel alert rule created for future Global Admin activations
📢

05 — ESCALATION

ESCALATION PATHS
ES1
Escalation Matrix
ESCALATION
ConditionSeverityActionNotify
Backdoor account or Global Admin granted during sessionSEV1Full IR, disable all involved accounts, forensic auditSOC Lead → CISO → IT Security
Outside-hours activation, user unresponsiveSEV1Block account, revoke session, await user verificationSOC Lead → CISO → Manager
Self-approval on critical role, no ticketSEV2Verify with user, fix PIM policy, documentSOC Lead → IAM Team
Authorized after-hours incident responseINFOConfirm with on-call ticket, document, closeNone

Stay Threat-Ready

Follow CyberHawk Threat Intel for daily SOC analyst playbooks, detection engineering guides, and threat intelligence.

📺 YouTube 🎤 TikTok 🐦 X / Twitter 📡 Telegram
All SOPs Blog Web App (Free)
They can't exploit you if you are the Exploit.