Detection rules › Kusto
Vectra AI Detect - New Campaign Detected
'Identifies when a new Campaign has been detected. This occurs when multiple Detections accross different Hosts are suspected to be part of the same Attack Campaign.'
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Lateral Movement | T1021 Remote Services |
| Command & Control | T1071 Application Layer Protocol |
Rule body kusto
id: a34d0338-eda0-42b5-8b93-32aae0d7a501
name: Vectra AI Detect - New Campaign Detected
description: |
'Identifies when a new Campaign has been detected. This occurs when multiple Detections accross different Hosts are suspected to be part of the same Attack Campaign.'
severity: Medium
status: Available
requiredDataConnectors:
- connectorId: CefAma
dataTypes:
- CommonSecurityLog
queryFrequency: 5m
queryPeriod: 5m
triggerOperator: gt
triggerThreshold: 0
tactics:
- LateralMovement
- CommandAndControl
relevantTechniques:
- T1021
- T1071
query: |
CommonSecurityLog
| where DeviceVendor == "Vectra Networks"
| where DeviceProduct == "X Series"
| where DeviceEventClassID contains "campaign"
| where DeviceAction == "START"
| extend reason = coalesce(
column_ifexists("Reason", ""),
extract("reason=(.+?)($|;)", 1, AdditionalExtensions),
""
)
| project-rename vectra_URL = DeviceCustomString4
| sort by TimeGenerated
entityMappings:
- entityType: DNS
fieldMappings:
- identifier: DomainName
columnName: Activity
alertDetailsOverride:
alertDisplayNameFormat: Vectra AI - New Campaign Detected
alertDescriptionFormat: |
A new campaign named {{Activity}} has been detected (reason is {{reason}})
alertDynamicProperties:
- alertProperty: AlertLink
value: vectra_URL
- alertProperty: ProductName
value: DeviceProduct
- alertProperty: ProviderName
value: DeviceVendor
incidentConfiguration:
createIncident: true
groupingConfiguration:
enabled: true
reopenClosedIncident: true
lookbackDuration: 7d
matchingMethod: AllEntities
customDetails:
CampaignName: Activity
CampaignReason: reason
CampaignSourceHost: SourceHostName
version: 1.2.3
kind: Scheduled
Stages and Predicates
Stage 1: source
CommonSecurityLog
Stage 2: where
| where DeviceVendor == "Vectra Networks"
Stage 3: where
| where DeviceProduct == "X Series"
Stage 4: where
| where DeviceEventClassID contains "campaign"
Stage 5: where
| where DeviceAction == "START"
Stage 6: extend
| extend reason = coalesce(
column_ifexists("Reason", ""),
extract("reason=(.+?)($|;)", 1, AdditionalExtensions),
""
)
Stage 7: project-rename
| project-rename vectra_URL = DeviceCustomString4
Stage 8: sort
| sort by TimeGenerated
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.
| Field | Kind | Values |
|---|---|---|
DeviceAction | eq |
|
DeviceEventClassID | contains |
|
DeviceProduct | eq |
|
DeviceVendor | eq |
|
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.
| Field | Source |
|---|---|
reason | extend |
vectra_URL | project-rename |