Detection rules › Kusto

Darktrace AI Analyst

This is a third-party alert feed, not a detection over modeled telemetry. The vendor product raised the finding; this rule forwards it into the SIEM. It is searchable for reference but is excluded from the detection-rule browse and the ATT&CK coverage matrix.

Severity
high
Time window
5m
Source
github.com/Azure/Azure-Sentinel

'This rule creates Microsoft Sentinel Incidents based on Darktrace AI Analyst Incidents, fetched every 5 minutes.'

Rule body kusto

id: ffa2977f-3077-4bba-b1bf-f3417699cbb0
name: Darktrace AI Analyst 
description: |
  'This rule creates Microsoft Sentinel Incidents based on Darktrace AI Analyst Incidents, fetched every 5 minutes.'
severity: High
requiredDataConnectors:
  - connectorId: DarktraceRESTConnector
    dataTypes:
      - darktrace_model_alerts_CL
queryFrequency: 5m
queryPeriod: 5m 
triggerOperator: gt
triggerThreshold: 0
tactics: [] # no tactics are ingested for AIA events at the moment 
relevantTechniques: []
query: |
  darktrace_model_alerts_CL 
  | where dtProduct_s =="AI Analyst"
  | project-rename  EventStartTime=startTime_s, EventEndTime = endTime_s, NetworkRuleName=title_s, DtCurrentGroup=externalId_g, ThreatCategory=dtProduct_s, ThreatRiskLevel=score_d, SrcHostname=hostname_s, SrcIpAddr=deviceIP_s, DtURL=url_s, DtSummary=summary_s, DtGroupScore=groupScore_d, DtGroupCategory=groupCategory_s, DtSrcDeviceName=bestDeviceName_s, DtIndentifier=identifier_s, ActivityID=activityId_s, DtGroupingID=groupingId_s, DtGroupByActivity=groupByActivity_b, DtSummaryFirstSentence=summaryFirstSentence_s, DtNewEvent=newEvent_b, DtCGLegacy=currentGroup_s, DtGroupPreviousGroups=groupPreviousGroups_s, DtTime=time_s, DtSeverity=Severity, DtLongitude=longitude_d, DtLatitude=latitude_d  
  | extend EventVendor = "Darktrace", EventProduct = "Darktrace DETECT", DtSentinelCategory=DtGroupCategory
  | extend DtSentinelCategory = case (DtGroupCategory == "compliance", "Low", 
                                      DtGroupCategory == "suspicious", "Medium",
                                      "High") //compliance -> low, suspcious -> medium, critical -> high
eventGroupingSettings:
  aggregationKind: AlertPerResult
entityMappings: 
 - entityType: Host
   fieldMappings:
    - identifier: HostName
      columnName: SrcHostname
 - entityType: IP
   fieldMappings:
    - identifier: Address
      columnName: SrcIpAddr
customDetails:
  EventStartTime: EventStartTime
  EventEndTime: EventEndTime
  NetworkRuleName: NetworkRuleName
  DtCurrentGroup: DtCurrentGroup
  ThreatRiskLevel: ThreatRiskLevel
  DtSummary: DtSummary
  DtGroupScore: DtGroupScore
  DtGroupCategory: DtGroupCategory
  DtSentinelCategory: DtSentinelCategory
  DtSrcDeviceName: DtSrcDeviceName
  DtNewEvent: DtNewEvent
  DtSeverity: DtSeverity
alertDetailsOverride: 
  alertDisplayNameFormat: 'Darktrace: {{ThreatRiskLevel}} - {{NetworkRuleName}}'
  alertDescriptionFormat: '{{DtSummary}}'
  alertTacticsColumnName: # leave empty
  alertSeverityColumnName: # leave empty 
  alertDynamicProperties:
    - alertProperty: AlertLink
      value: DtURL
    - alertProperty: ProviderName
      value: EventVendor
    - alertProperty: ProductName
      value: EventProduct
    - alertProperty: ProductComponentName
      value: ThreatCategory
    - alertProperty: Severity
      value: DtSentinelCategory
version: 1.1.0
kind: NRT               


Stages and Predicates

Stage 1: source

darktrace_model_alerts_CL

Stage 2: where

| where dtProduct_s =="AI Analyst"

Stage 3: project-rename

| project-rename  EventStartTime=startTime_s, EventEndTime = endTime_s, NetworkRuleName=title_s, DtCurrentGroup=externalId_g, ThreatCategory=dtProduct_s, ThreatRiskLevel=score_d, SrcHostname=hostname_s, SrcIpAddr=deviceIP_s, DtURL=url_s, DtSummary=summary_s, DtGroupScore=groupScore_d, DtGroupCategory=groupCategory_s, DtSrcDeviceName=bestDeviceName_s, DtIndentifier=identifier_s, ActivityID=activityId_s, DtGroupingID=groupingId_s, DtGroupByActivity=groupByActivity_b, DtSummaryFirstSentence=summaryFirstSentence_s, DtNewEvent=newEvent_b, DtCGLegacy=currentGroup_s, DtGroupPreviousGroups=groupPreviousGroups_s, DtTime=time_s, DtSeverity=Severity, DtLongitude=longitude_d, DtLatitude=latitude_d

Stage 4: extend

| extend EventVendor = "Darktrace", EventProduct = "Darktrace DETECT", DtSentinelCategory=DtGroupCategory

Stage 5: extend

| extend DtSentinelCategory = case (DtGroupCategory == "compliance", "Low", 
                                    DtGroupCategory == "suspicious", "Medium",
                                    "High")
DtSentinelCategory =
ifDtGroupCategory == "compliance""Low"
elifDtGroupCategory == "suspicious""Medium"
else"High"

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
dtProduct_seq
  • AI Analyst 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
ActivityIDproject-rename
DtCGLegacyproject-rename
DtCurrentGroupproject-rename
DtGroupByActivityproject-rename
DtGroupCategoryproject-rename
DtGroupPreviousGroupsproject-rename
DtGroupScoreproject-rename
DtGroupingIDproject-rename
DtIndentifierproject-rename
DtLatitudeproject-rename
DtLongitudeproject-rename
DtNewEventproject-rename
DtSeverityproject-rename
DtSrcDeviceNameproject-rename
DtSummaryproject-rename
DtSummaryFirstSentenceproject-rename
DtTimeproject-rename
DtURLproject-rename
EventEndTimeproject-rename
EventStartTimeproject-rename
NetworkRuleNameproject-rename
SrcHostnameproject-rename
SrcIpAddrproject-rename
ThreatCategoryproject-rename
ThreatRiskLevelproject-rename
DtSentinelCategoryextend
EventProductextend
EventVendorextend