Detection rules › Kusto
XbowNewAssetDiscovered
Alerts when a new asset is registered in XBOW for the first time. This is detected by matching assets whose CreatedAt timestamp falls within the current query window, indicating the asset was newly added rather than updated. This helps track shadow IT, new deployments, and any unexpected expansion of the external attack surface.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Reconnaissance | T1595 Active Scanning |
Rule body kusto
id: e4c6a8b2-9d7f-4285-a1e3-6b9c2e4f1a85
name: XbowNewAssetDiscovered
description: |
Alerts when a new asset is registered in XBOW for the first time. This is detected by
matching assets whose CreatedAt timestamp falls within the current query window,
indicating the asset was newly added rather than updated. This helps track shadow IT,
new deployments, and any unexpected expansion of the external attack surface.
severity: Medium
status: Available
requiredDataConnectors:
- connectorId: XbowSecurityConnector
dataTypes:
- XbowAssets_CL
queryFrequency: 30m
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 0
tactics:
- Reconnaissance
- Discovery
relevantTechniques:
- T1595
query: |
XbowAssets_CL
| where TimeGenerated > ago(1h)
// Only match assets created within the query window (new, not updated)
| where todatetime(CreatedAt) > ago(1h)
| summarize arg_max(TimeGenerated, *) by AssetId
| project
TimeGenerated,
AssetId,
AssetName,
StartUrl,
Lifecycle,
Sku,
OrganizationId,
CreatedAt,
UpdatedAt,
AssetReachableState,
AssetReachableMessage
eventGroupingSettings:
aggregationKind: AlertPerResult
alertDetailsOverride:
alertDisplayNameFormat: 'XBOW New Asset: {{AssetName}}'
alertDescriptionFormat: 'New asset registered in XBOW: {{AssetName}} ({{StartUrl}}). Reachability: {{AssetReachableState}}'
customDetails:
AssetID: AssetId
AssetName: AssetName
StartUrl: StartUrl
Lifecycle: Lifecycle
Sku: Sku
OrganizationID: OrganizationId
CreatedAt: CreatedAt
AssetReachableState: AssetReachableState
incidentConfiguration:
createIncident: true
groupingConfiguration:
enabled: true
reopenClosedIncident: false
lookbackDuration: 6h
matchingMethod: Selected
groupByCustomDetails:
- AssetID
entityMappings:
- entityType: URL
fieldMappings:
- identifier: Url
columnName: StartUrl
version: 1.0.1
kind: Scheduled
Stages and Predicates
Stage 1: source
XbowAssets_CL
Stage 2: where
| where TimeGenerated > ago(1h)
Stage 3: where
| where todatetime(CreatedAt) > ago(1h)
Stage 4: summarize
| summarize arg_max(TimeGenerated, *) by AssetId
Stage 5: project
| project
TimeGenerated,
AssetId,
AssetName,
StartUrl,
Lifecycle,
Sku,
OrganizationId,
CreatedAt,
UpdatedAt,
AssetReachableState,
AssetReachableMessage
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 |
|---|---|
AssetId | project |
AssetName | project |
AssetReachableMessage | project |
AssetReachableState | project |
CreatedAt | project |
Lifecycle | project |
OrganizationId | project |
Sku | project |
StartUrl | project |
TimeGenerated | project |
UpdatedAt | project |