Detection rules › Kusto

Illumio Enforcement Change Analytic Rule

Status
available
Severity
medium
Time window
1h
Source
github.com/Azure/Azure-Sentinel

'Create Microsoft Sentinel Incident When Ven Changes Enforcement State from Full/Selective To Idle/Visibility state'

MITRE ATT&CK coverage

TacticTechniques
StealthT1562 Impair Defenses

Rule body kusto

id: 599fdc92-eb6d-4b54-8d79-2a3f740a846a
name: Illumio Enforcement Change Analytic Rule
description: |
  'Create Microsoft Sentinel Incident When Ven Changes Enforcement State from Full/Selective To Idle/Visibility state'
severity: Medium
status: Available
requiredDataConnectors: 
  - connectorId: IllumioSaaSDataConnector
    dataTypes:
      - Illumio_Auditable_Events_CL
  - connectorId: SyslogAma
    datatypes:
      - Syslog      
queryFrequency: 60m
queryPeriod: 60m
triggerOperator: gt
triggerThreshold: 0
tactics:
- DefenseEvasion
relevantTechniques:
- T1562
query: |
  let enf_state = dynamic(["full", "selective"]);
  let visibility_state = dynamic(["visibility_only", "idle"]);
  Illumio_Auditable_Events_CL
  | union IllumioSyslogAuditEvents
  | extend temp_resource_changes = parse_json(resource_changes)[0]
  | where event_type == 'workloads.update' 
  | extend old_mode = temp_resource_changes.changes.enforcement_mode.before,
          new_mode = temp_resource_changes.changes.enforcement_mode.after,
          workload_href = temp_resource_changes.resource.workload.href,
          workload_name = temp_resource_changes.resource.workload.hostname,
          ipaddress = action.src_ip
  | where new_mode in (visibility_state) and old_mode in (enf_state)
  | project-away temp_*
  | project old_mode, new_mode, workload_href, workload_name, TimeGenerated, created_by, ipaddress
eventGroupingSettings:
  aggregationKind: SingleAlert
entityMappings:
  - entityType: Host
    fieldMappings:
      - identifier: HostName
        columnName: workload_name  
  - entityType: Account
    fieldMappings:
      - identifier: Name
        columnName: created_by
  - entityType: IP
    fieldMappings:
      - identifier: Address
        columnName: ipaddress                  
alertDetailsOverride:
  alertDisplayNameFormat: | 
    Illumio Enforcement Change Incident for {{workload_name}}
  alertDescriptionFormat: | 
    Illumio Enforcement Change Incident for {{workload_name}} generated at {{TimeGenerated}}
version: 1.0.7
kind: Scheduled

Stages and Predicates

Parameters

let enf_state = dynamic(["full", "selective"]);
let visibility_state = dynamic(["visibility_only", "idle"]);

Stage 1: source

Illumio_Auditable_Events_CL

Stage 2: union

| union

Stage 3: source

IllumioSyslogAuditEvents

Stage 4: extend

| extend temp_resource_changes = parse_json(resource_changes)[0]

Stage 5: where

| where event_type == 'workloads.update'

Stage 6: extend

| extend old_mode = temp_resource_changes.changes.enforcement_mode.before,
        new_mode = temp_resource_changes.changes.enforcement_mode.after,
        workload_href = temp_resource_changes.resource.workload.href,
        workload_name = temp_resource_changes.resource.workload.hostname,
        ipaddress = action.src_ip

Stage 7: where

| where new_mode in (visibility_state) and old_mode in (enf_state)

Stage 8: project-away

| project-away temp_*

Stage 9: project

| project old_mode, new_mode, workload_href, workload_name, TimeGenerated, created_by, ipaddress

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
event_typeeq
  • workloads.update transforms: cased
new_modein
  • idle transforms: cased
  • visibility_only transforms: cased
old_modein
  • full transforms: cased
  • selective transforms: cased

Output fields

Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.

FieldSource
TimeGeneratedproject
created_byproject
ipaddressproject
new_modeproject
old_modeproject
workload_hrefproject
workload_nameproject