Back
Ide4c6a8b2-9d7f-4285-a1e3-6b9c2e4f1a85
RulenameXbowNewAssetDiscovered
DescriptionAlerts 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.
SeverityMedium
TacticsReconnaissance
Discovery
TechniquesT1595
Required data connectorsXbowSecurityConnector
KindScheduled
Query frequency30m
Query period1h
Trigger threshold0
Trigger operatorgt
Source Urihttps://github.com/Azure/Azure-Sentinel/blob/master/Solutions/XBOW/Analytic%20Rules/XbowNewAssetDiscovered.yaml
Version1.0.1
Arm templatee4c6a8b2-9d7f-4285-a1e3-6b9c2e4f1a85.json
Deploy To Azure
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
triggerThreshold: 0
incidentConfiguration:
  createIncident: true
  groupingConfiguration:
    reopenClosedIncident: false
    groupByCustomDetails:
    - AssetID
    matchingMethod: Selected
    enabled: true
    lookbackDuration: 6h
kind: Scheduled
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.
queryFrequency: 30m
triggerOperator: gt
relevantTechniques:
- T1595
entityMappings:
- fieldMappings:
  - identifier: Url
    columnName: StartUrl
  entityType: URL
id: e4c6a8b2-9d7f-4285-a1e3-6b9c2e4f1a85
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}}'
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/XBOW/Analytic%20Rules/XbowNewAssetDiscovered.yaml
version: 1.0.1
requiredDataConnectors:
- dataTypes:
  - XbowAssets_CL
  connectorId: XbowSecurityConnector
customDetails:
  StartUrl: StartUrl
  CreatedAt: CreatedAt
  Lifecycle: Lifecycle
  OrganizationID: OrganizationId
  Sku: Sku
  AssetName: AssetName
  AssetID: AssetId
  AssetReachableState: AssetReachableState
tactics:
- Reconnaissance
- Discovery
queryPeriod: 1h
severity: Medium
status: Available
name: XbowNewAssetDiscovered
{
  "$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/e4c6a8b2-9d7f-4285-a1e3-6b9c2e4f1a85')]",
      "kind": "Scheduled",
      "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/e4c6a8b2-9d7f-4285-a1e3-6b9c2e4f1a85')]",
      "properties": {
        "alertDetailsOverride": {
          "alertDescriptionFormat": "New asset registered in XBOW: {{AssetName}} ({{StartUrl}}). Reachability: {{AssetReachableState}}",
          "alertDisplayNameFormat": "XBOW New Asset: {{AssetName}}"
        },
        "alertRuleTemplateName": "e4c6a8b2-9d7f-4285-a1e3-6b9c2e4f1a85",
        "customDetails": {
          "AssetID": "AssetId",
          "AssetName": "AssetName",
          "AssetReachableState": "AssetReachableState",
          "CreatedAt": "CreatedAt",
          "Lifecycle": "Lifecycle",
          "OrganizationID": "OrganizationId",
          "Sku": "Sku",
          "StartUrl": "StartUrl"
        },
        "description": "Alerts when a new asset is registered in XBOW for the first time. This is detected by\nmatching assets whose CreatedAt timestamp falls within the current query window,\nindicating the asset was newly added rather than updated. This helps track shadow IT,\nnew deployments, and any unexpected expansion of the external attack surface.\n",
        "displayName": "XbowNewAssetDiscovered",
        "enabled": true,
        "entityMappings": [
          {
            "entityType": "URL",
            "fieldMappings": [
              {
                "columnName": "StartUrl",
                "identifier": "Url"
              }
            ]
          }
        ],
        "eventGroupingSettings": {
          "aggregationKind": "AlertPerResult"
        },
        "incidentConfiguration": {
          "createIncident": true,
          "groupingConfiguration": {
            "enabled": true,
            "groupByCustomDetails": [
              "AssetID"
            ],
            "lookbackDuration": "PT6H",
            "matchingMethod": "Selected",
            "reopenClosedIncident": false
          }
        },
        "OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/XBOW/Analytic%20Rules/XbowNewAssetDiscovered.yaml",
        "query": "XbowAssets_CL\n| where TimeGenerated > ago(1h)\n// Only match assets created within the query window (new, not updated)\n| where todatetime(CreatedAt) > ago(1h)\n| summarize arg_max(TimeGenerated, *) by AssetId\n| project\n    TimeGenerated,\n    AssetId,\n    AssetName,\n    StartUrl,\n    Lifecycle,\n    Sku,\n    OrganizationId,\n    CreatedAt,\n    UpdatedAt,\n    AssetReachableState,\n    AssetReachableMessage\n",
        "queryFrequency": "PT30M",
        "queryPeriod": "PT1H",
        "severity": "Medium",
        "status": "Available",
        "subTechniques": [],
        "suppressionDuration": "PT1H",
        "suppressionEnabled": false,
        "tactics": [
          "Discovery",
          "Reconnaissance"
        ],
        "techniques": [
          "T1595"
        ],
        "templateVersion": "1.0.1",
        "triggerOperator": "GreaterThan",
        "triggerThreshold": 0
      },
      "type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
    }
  ]
}