Stealth
T1480 — Execution Guardrails
Adversaries may use execution guardrails to constrain execution or actions based on adversary supplied and environment specific conditions that are expected to be present on the target. Guardrails ensure that a payload only executes against an intended target and reduces collateral damage from an adversary’s campaign...
Investigate Execution Guardrails activity in the context of Stealth: confirm scope, affected host/identity, and whether it matches expected administrative behaviour before deciding this is benign.
Platforms
ESXi, Linux, macOS, Windows
Priority / status
low / draft
Evidence to collect
- Host or resource affected
- Account or identity involved
- Timestamp of the activity
- Related process, file, or network artifact
- Any preceding or follow-on alerts
D3-NTA · detect
Network Traffic Analysis
Monitor for Network Traffic Analysis indicators relevant to this technique.
Tooling: Sentinel, Defender for Endpoint
| ATT&CK Technique | D3FEND Technique | Practical SOC Action | Tooling |
|---|---|---|---|
| T1480 Execution Guardrails | Network Traffic Analysis | Monitor for Network Traffic Analysis indicators relevant to this technique. | Sentinel, Defender for Endpoint |
T1480 Execution Guardrails → D3FEND → SOC action
Investigation steps — Microsoft
- Review Defender for Endpoint / Defender XDR alerts and timeline for the affected host or identity.
- Check Sentinel analytics rules and incidents correlated with this technique.
- Review Entra ID sign-in and audit logs if the technique involves an identity or cloud resource.
Investigation steps — generic
- Confirm whether the observed execution guardrails activity matches expected administrative or application behaviour.
- Identify the host, account, or resource where the activity occurred and its business criticality.
- Check for related alerts before and after this activity to reconstruct the broader intrusion timeline.
- Real detection reference: "Power Platform - DLP policy updated or removed" -- Identifies changes to DLP policy, specifically policies which are updated or removed.
Response actions
| Action | Risk | Automation safe | Approval required |
|---|---|---|---|
| Contain the affected host or account | Medium | No | Yes |
| Collect and preserve evidence | Low | Yes | No |
KQL
1b2e6172-85c5-417a-90c3-7cc80cb787f5 — Power Platform - DLP policy updated or removed
let create_policy_ignore_time_window = 10m;
let query_frequency = 1h;
let dlp_policy_events = PowerPlatformAdminActivity
| where TimeGenerated >= ago(query_frequency)
| where EventOriginalType == "GovernanceApiPolicyOperation"
| where PropertyCollection has_any ("DeleteDlpPolicy", "UpdateDlpPolicy", "CreateDlpPolicy")
| mv-expand PropertyCollection
| extend
Name = tostring(PropertyCollection.Name),
Value = tostring(PropertyCollection.Value)
| summarize Properties = make_bag(bag_pack(Name, Value))
by
TimeGenerated,
EventOriginalUid
| extend
PolicyName = tostring(Properties['powerplatform.analytics.resource.display_name']),
EventType = tostring(Properties['powerplatform.analytics.resource.tenant.governance.api_policy.operation_name']),
ActorName = tostring(Properties['enduser.principal_name']),
PolicyId = tostring(Properties['powerplatform.analytics.resource.id']),
AdditionalInfo = Properties['powerplatform.analytics.resource.tenant.governance.api_policy.additional_resources'];
let delete_events = dlp_policy_events
| where EventType == "DeleteDlpPolicy";
let update_events = dlp_policy_events
| where EventType == "UpdateDlpPolicy";
let create_events = dlp_policy_events
| where EventType == "CreateDlpPolicy"
| extend ignore_time = TimeGenerated + create_policy_ignore_time_window;
union
delete_events,
(update_events
| join kind=leftouter (
create_events
| project-away TimeGenerated
)
on PolicyId
| where isempty(ignore_time) or TimeGenerated > ignore_time
| project-away ignore_time)
| where TimeGenerated >= ago(query_frequency)
| extend
AccountName = tostring(split(ActorName, "@")[0]),
UPNSuffix = tostring(split(ActorName, "@")[1])
| project
TimeGenerated,
ActorName,
EventType,
PolicyName,
PolicyId,
AccountName,
UPNSuffix,
AdditionalInfo Escalation criteria
- Execution Guardrails activity observed on a privileged account or critical system.
- Activity follows or precedes other suspicious behaviour in the same investigation.
- Automated triage cannot confidently rule out malicious intent.
False positive considerations
- Legitimate administrative or maintenance activity matching this pattern.
- Approved security testing or red team exercise.
- Known benign software producing similar telemetry.
# T1480 - Execution Guardrails
## SOC Recommendation
Investigate Execution Guardrails activity in the context of Stealth: confirm scope, affected host/identity, and whether it matches expected administrative behaviour before deciding this is benign.
## D3FEND Mappings
| D3FEND Technique | Relationship | Practical SOC Action |
|---|---|---|
| Network Traffic Analysis | Detect | Monitor for Network Traffic Analysis indicators relevant to this technique. |
## Investigation Steps
1. Review Defender for Endpoint / Defender XDR alerts and timeline for the affected host or identity.
2. Check Sentinel analytics rules and incidents correlated with this technique.
3. Review Entra ID sign-in and audit logs if the technique involves an identity or cloud resource.
## Evidence to Collect
- Host or resource affected
- Account or identity involved
- Timestamp of the activity
- Related process, file, or network artifact
- Any preceding or follow-on alerts
## Response Actions
| Action | Risk | Automation Safe | Approval Required |
|---|---|---|---|
| Contain the affected host or account | Medium | No | Yes |
| Collect and preserve evidence | Low | Yes | No |
## KQL
```kql
let create_policy_ignore_time_window = 10m;
let query_frequency = 1h;
let dlp_policy_events = PowerPlatformAdminActivity
| where TimeGenerated >= ago(query_frequency)
| where EventOriginalType == "GovernanceApiPolicyOperation"
| where PropertyCollection has_any ("DeleteDlpPolicy", "UpdateDlpPolicy", "CreateDlpPolicy")
| mv-expand PropertyCollection
| extend
Name = tostring(PropertyCollection.Name),
Value = tostring(PropertyCollection.Value)
| summarize Properties = make_bag(bag_pack(Name, Value))
by
TimeGenerated,
EventOriginalUid
| extend
PolicyName = tostring(Properties['powerplatform.analytics.resource.display_name']),
EventType = tostring(Properties['powerplatform.analytics.resource.tenant.governance.api_policy.operation_name']),
ActorName = tostring(Properties['enduser.principal_name']),
PolicyId = tostring(Properties['powerplatform.analytics.resource.id']),
AdditionalInfo = Properties['powerplatform.analytics.resource.tenant.governance.api_policy.additional_resources'];
let delete_events = dlp_policy_events
| where EventType == "DeleteDlpPolicy";
let update_events = dlp_policy_events
| where EventType == "UpdateDlpPolicy";
let create_events = dlp_policy_events
| where EventType == "CreateDlpPolicy"
| extend ignore_time = TimeGenerated + create_policy_ignore_time_window;
union
delete_events,
(update_events
| join kind=leftouter (
create_events
| project-away TimeGenerated
)
on PolicyId
| where isempty(ignore_time) or TimeGenerated > ignore_time
| project-away ignore_time)
| where TimeGenerated >= ago(query_frequency)
| extend
AccountName = tostring(split(ActorName, "@")[0]),
UPNSuffix = tostring(split(ActorName, "@")[1])
| project
TimeGenerated,
ActorName,
EventType,
PolicyName,
PolicyId,
AccountName,
UPNSuffix,
AdditionalInfo
```
## Escalation Criteria
- Execution Guardrails activity observed on a privileged account or critical system.
- Activity follows or precedes other suspicious behaviour in the same investigation.
- Automated triage cannot confidently rule out malicious intent.
## False Positive Considerations
- Legitimate administrative or maintenance activity matching this pattern.
- Approved security testing or red team exercise.
- Known benign software producing similar telemetry.
Generated by SOC Response Atlas by Basyrix.
Want to push this directly to Confluence? Upgrade to Basyrix Pro.
- /api/techniques/T1480.json
- /api/recommendations/T1480.json
- /api/d3fend/T1480.json
- /api/mappings/T1480.json
- /api/confluence/T1480.md
Example curl:
curl https://atlas.basyrix.com/api/recommendations/T1480.json Response:
{
"technique_id": "T1480",
"name": "Execution Guardrails",
"priority": "low",
"status": "draft",
"version": "0.1.0",
"last_reviewed": "2026-07-23",
"generated_by": "SOC Response Atlas by Basyrix",
"tactics": [
"Stealth"
],
"platforms": [
"ESXi",
"Linux",
"macOS",
"Windows"
],
"summary": "Adversaries may use execution guardrails to constrain execution or actions based on adversary supplied and environment specific conditions that are expected to be present on the target. Guardrails ensure that a payload only executes against an intended target and reduces collateral damage from an adversary’s campaign...",
"soc_recommendation": "Investigate Execution Guardrails activity in the context of Stealth: confirm scope, affected host/identity, and whether it matches expected administrative behaviour before deciding this is benign.",
"d3fend_mappings": [
{
"id": "D3-NTA",
"name": "Network Traffic Analysis",
"relationship": "detect",
"practical_action": "Monitor for Network Traffic Analysis indicators relevant to this technique.",
"tooling": [
"Sentinel",
"Defender for Endpoint"
]
}
],
"investigation_steps": {
"microsoft": [
"Review Defender for Endpoint / Defender XDR alerts and timeline for the affected host or identity.",
"Check Sentinel analytics rules and incidents correlated with this technique.",
"Review Entra ID sign-in and audit logs if the technique involves an identity or cloud resource."
],
"generic": [
"Confirm whether the observed execution guardrails activity matches expected administrative or application behaviour.",
"Identify the host, account, or resource where the activity occurred and its business criticality.",
"Check for related alerts before and after this activity to reconstruct the broader intrusion timeline.",
"Real detection reference: \"Power Platform - DLP policy updated or removed\" -- Identifies changes to DLP policy, specifically policies which are updated or removed."
]
},
"evidence_to_collect": [
"Host or resource affected",
"Account or identity involved",
"Timestamp of the activity",
"Related process, file, or network artifact",
"Any preceding or follow-on alerts"
],
"response_actions": [
{
"name": "Contain the affected host or account",
"category": "Containment",
"risk": "Medium",
"automation_safe": false,
"approval_required": true,
"tool": "Defender for Endpoint / Entra ID",
"notes": "Requires approval -- confirm malicious intent before isolating a host or disabling an account."
},
{
"name": "Collect and preserve evidence",
"category": "Investigation",
"risk": "Low",
"automation_safe": true,
"approval_required": false,
"tool": "Defender for Endpoint",
"notes": "Safe -- read-only evidence collection."
}
],
"queries": {
"kql": [
{
"name": "1b2e6172-85c5-417a-90c3-7cc80cb787f5 — Power Platform - DLP policy updated or removed",
"description": "Identifies changes to DLP policy, specifically policies which are updated or removed. (Source: Microsoft's official Azure-Sentinel Detections (MIT licensed).)",
"query": "let create_policy_ignore_time_window = 10m;\nlet query_frequency = 1h;\nlet dlp_policy_events = PowerPlatformAdminActivity\n | where TimeGenerated >= ago(query_frequency)\n | where EventOriginalType == \"GovernanceApiPolicyOperation\"\n | where PropertyCollection has_any (\"DeleteDlpPolicy\", \"UpdateDlpPolicy\", \"CreateDlpPolicy\")\n | mv-expand PropertyCollection\n | extend\n Name = tostring(PropertyCollection.Name),\n Value = tostring(PropertyCollection.Value)\n | summarize Properties = make_bag(bag_pack(Name, Value))\n by\n TimeGenerated,\n EventOriginalUid\n | extend\n PolicyName = tostring(Properties['powerplatform.analytics.resource.display_name']),\n EventType = tostring(Properties['powerplatform.analytics.resource.tenant.governance.api_policy.operation_name']),\n ActorName = tostring(Properties['enduser.principal_name']),\n PolicyId = tostring(Properties['powerplatform.analytics.resource.id']),\n AdditionalInfo = Properties['powerplatform.analytics.resource.tenant.governance.api_policy.additional_resources'];\nlet delete_events = dlp_policy_events\n | where EventType == \"DeleteDlpPolicy\";\nlet update_events = dlp_policy_events\n | where EventType == \"UpdateDlpPolicy\";\nlet create_events = dlp_policy_events\n | where EventType == \"CreateDlpPolicy\"\n | extend ignore_time = TimeGenerated + create_policy_ignore_time_window;\nunion\n delete_events,\n (update_events\n | join kind=leftouter (\n create_events\n | project-away TimeGenerated\n )\n on PolicyId\n | where isempty(ignore_time) or TimeGenerated > ignore_time\n | project-away ignore_time)\n| where TimeGenerated >= ago(query_frequency)\n| extend\n AccountName = tostring(split(ActorName, \"@\")[0]),\n UPNSuffix = tostring(split(ActorName, \"@\")[1])\n| project\n TimeGenerated,\n ActorName,\n EventType,\n PolicyName,\n PolicyId,\n AccountName,\n UPNSuffix,\n AdditionalInfo"
}
],
"spl": [],
"esql": []
},
"automation": {
"safe": [
"Add recommendation as Sentinel incident comment.",
"Run enrichment queries.",
"Create ServiceNow SecOps task."
],
"approval_required": [
"Contain or disable the affected host/account.",
"Any change to production configuration."
]
},
"escalation_criteria": [
"Execution Guardrails activity observed on a privileged account or critical system.",
"Activity follows or precedes other suspicious behaviour in the same investigation.",
"Automated triage cannot confidently rule out malicious intent."
],
"false_positive_considerations": [
"Legitimate administrative or maintenance activity matching this pattern.",
"Approved security testing or red team exercise.",
"Known benign software producing similar telemetry."
],
"confluence": {
"title": "T1480 - Execution Guardrails Response Guidance",
"labels": [
"mitre",
"attack",
"d3fend",
"secops",
"basyrix"
],
"sections": [
"summary",
"d3fend_mappings",
"investigation_steps",
"response_actions",
"queries",
"automation",
"escalation_criteria",
"false_positive_considerations"
]
}
}