Back
Idd4e5f6a7-b8c9-40d1-e2f3-a4b5c6d7e8f9
RulenameCopilot - Plugin Tampering (Enable and Disable Within 5 Minutes)
DescriptionDetects when a user enables and disables Copilot plugins within a 5-minute window. This behavior often indicates probing for security controls or living-off-Copilot techniques.

This rule identifies discovery and defense evasion activities where users rapidly toggle plugin states, potentially testing security boundaries.
SeverityMedium
TacticsDiscovery
DefenseEvasion
TechniquesT1087
T1562
Required data connectorsMicrosoftCopilot
KindScheduled
Query frequency5m
Query period5m
Trigger threshold0
Trigger operatorgt
Source Urihttps://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Microsoft%20Copilot/Analytic%20Rules/CopilotPluginTampering.yaml
Version1.0.0
Arm templated4e5f6a7-b8c9-40d1-e2f3-a4b5c6d7e8f9.json
Deploy To Azure
CopilotActivity
| where RecordType in ("EnableCopilotPlugin","DisableCopilotPlugin")
| summarize
    Actions = make_set(RecordType),
    FirstSeen = min(TimeGenerated),
    LastSeen = max(TimeGenerated)
  by ActorName, SrcIpAddr
| where Actions has "EnableCopilotPlugin" and Actions has "DisableCopilotPlugin"
| where LastSeen - FirstSeen < 5m
| extend AccountCustomEntity = ActorName, IPCustomEntity = SrcIpAddr
version: 1.0.0
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Microsoft%20Copilot/Analytic%20Rules/CopilotPluginTampering.yaml
triggerThreshold: 0
requiredDataConnectors:
- dataTypes:
  - CopilotActivity
  connectorId: MicrosoftCopilot
tactics:
- Discovery
- DefenseEvasion
relevantTechniques:
- T1087
- T1562
kind: Scheduled
entityMappings:
- fieldMappings:
  - identifier: FullName
    columnName: AccountCustomEntity
  entityType: Account
- fieldMappings:
  - identifier: Address
    columnName: IPCustomEntity
  entityType: IP
description: |
  'Detects when a user enables and disables Copilot plugins within a 5-minute window. This behavior often indicates probing for security controls or living-off-Copilot techniques.
  This rule identifies discovery and defense evasion activities where users rapidly toggle plugin states, potentially testing security boundaries.'
triggerOperator: gt
status: Available
queryFrequency: 5m
id: d4e5f6a7-b8c9-40d1-e2f3-a4b5c6d7e8f9
name: Copilot - Plugin Tampering (Enable and Disable Within 5 Minutes)
severity: Medium
query: |
  CopilotActivity
  | where RecordType in ("EnableCopilotPlugin","DisableCopilotPlugin")
  | summarize
      Actions = make_set(RecordType),
      FirstSeen = min(TimeGenerated),
      LastSeen = max(TimeGenerated)
    by ActorName, SrcIpAddr
  | where Actions has "EnableCopilotPlugin" and Actions has "DisableCopilotPlugin"
  | where LastSeen - FirstSeen < 5m
  | extend AccountCustomEntity = ActorName, IPCustomEntity = SrcIpAddr
queryPeriod: 5m
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspace": {
      "type": "String"
    }
  },
  "resources": [
    {
      "apiVersion": "2024-01-01-preview",
      "id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/d4e5f6a7-b8c9-40d1-e2f3-a4b5c6d7e8f9')]",
      "kind": "Scheduled",
      "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/d4e5f6a7-b8c9-40d1-e2f3-a4b5c6d7e8f9')]",
      "properties": {
        "alertRuleTemplateName": "d4e5f6a7-b8c9-40d1-e2f3-a4b5c6d7e8f9",
        "customDetails": null,
        "description": "'Detects when a user enables and disables Copilot plugins within a 5-minute window. This behavior often indicates probing for security controls or living-off-Copilot techniques.\nThis rule identifies discovery and defense evasion activities where users rapidly toggle plugin states, potentially testing security boundaries.'\n",
        "displayName": "Copilot - Plugin Tampering (Enable and Disable Within 5 Minutes)",
        "enabled": true,
        "entityMappings": [
          {
            "entityType": "Account",
            "fieldMappings": [
              {
                "columnName": "AccountCustomEntity",
                "identifier": "FullName"
              }
            ]
          },
          {
            "entityType": "IP",
            "fieldMappings": [
              {
                "columnName": "IPCustomEntity",
                "identifier": "Address"
              }
            ]
          }
        ],
        "OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Microsoft%20Copilot/Analytic%20Rules/CopilotPluginTampering.yaml",
        "query": "CopilotActivity\n| where RecordType in (\"EnableCopilotPlugin\",\"DisableCopilotPlugin\")\n| summarize\n    Actions = make_set(RecordType),\n    FirstSeen = min(TimeGenerated),\n    LastSeen = max(TimeGenerated)\n  by ActorName, SrcIpAddr\n| where Actions has \"EnableCopilotPlugin\" and Actions has \"DisableCopilotPlugin\"\n| where LastSeen - FirstSeen < 5m\n| extend AccountCustomEntity = ActorName, IPCustomEntity = SrcIpAddr\n",
        "queryFrequency": "PT5M",
        "queryPeriod": "PT5M",
        "severity": "Medium",
        "status": "Available",
        "subTechniques": [],
        "suppressionDuration": "PT1H",
        "suppressionEnabled": false,
        "tactics": [
          "DefenseEvasion",
          "Discovery"
        ],
        "techniques": [
          "T1087",
          "T1562"
        ],
        "templateVersion": "1.0.0",
        "triggerOperator": "GreaterThan",
        "triggerThreshold": 0
      },
      "type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
    }
  ]
}