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.
'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 =DtGroupCategory == "compliance""Low"DtGroupCategory == "suspicious""Medium""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.
| Field | Kind | Values |
|---|---|---|
dtProduct_s | 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 |
|---|---|
ActivityID | project-rename |
DtCGLegacy | project-rename |
DtCurrentGroup | project-rename |
DtGroupByActivity | project-rename |
DtGroupCategory | project-rename |
DtGroupPreviousGroups | project-rename |
DtGroupScore | project-rename |
DtGroupingID | project-rename |
DtIndentifier | project-rename |
DtLatitude | project-rename |
DtLongitude | project-rename |
DtNewEvent | project-rename |
DtSeverity | project-rename |
DtSrcDeviceName | project-rename |
DtSummary | project-rename |
DtSummaryFirstSentence | project-rename |
DtTime | project-rename |
DtURL | project-rename |
EventEndTime | project-rename |
EventStartTime | project-rename |
NetworkRuleName | project-rename |
SrcHostname | project-rename |
SrcIpAddr | project-rename |
ThreatCategory | project-rename |
ThreatRiskLevel | project-rename |
DtSentinelCategory | extend |
EventProduct | extend |
EventVendor | extend |