Detection rules › Kusto
Darktrace Model Breach
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 Alerts based on Darktrace Model Breaches, fetched every 5 minutes.'
Rule body kusto
id: a3c7b8ed-56a9-47b7-98e5-2555c16e17c9
name: Darktrace Model Breach
description: |
'This rule creates Microsoft Sentinel Alerts based on Darktrace Model Breaches, fetched every 5 minutes.'
severity: Medium
requiredDataConnectors:
- connectorId: DarktraceRESTConnector
dataTypes:
- darktrace_model_alerts_CL
queryFrequency: 5m
queryPeriod: 5m
triggerOperator: gt
triggerThreshold: 0
tactics: # tactics pulled dynamically
relevantTechniques:
query: |
darktrace_model_alerts_CL
| where dtProduct_s =="Policy Breach"
| project-rename EventSeverity=score_d, EventStartTime=breachTime_s, NetworkRuleName=modelName_s, NetworkRuleNumber=pid_d, ThreatId=threatID_d, ThreatCategory=dtProduct_s, SrcIpAddr=SourceIP, SrcHostname=hostname_s, SrcMacAddr=sourceMac_s, SrcPortNumber=sourcePort_s, DstIpAddr=destIP_s, DstPortNumber=destPort_s, DstHostname=destHost_s, DstMacAddr=destMac_s, DtCompliance=compliance_b, DtClientSensor=cSensor_b, DtDescription=description_s, DtAntigena=antigena_b, DtDeviceID=deviceId_d, DtSubnetID=sid_d, DtTags=tags_s, DtMitreTechniques=mitreTechniques_s, DtMessage=Message, DtUUID=uuid_g, DtBreachURL=breachUrl_s, DtSrcTypeLabel=typeLabel_s, DtTriggeredComponents=triggeredComponents_s, DtDetails=details_s, DtLongitude=longitude_d, DtLatitude=latitude_d, DtCategory=Category
| extend EventCount=1, EventType="NetworkSession", EventSchema="NetworkSession", EventSchemaVersion="0.2.2", EventResult="Success", DvcAction = "Allow", EventVendor = "Darktrace", EventProduct = "Darktrace DETECT", EventEndTime=EventStartTime, ThreatName=NetworkRuleName, ThreatRiskLevel=EventSeverity
| extend DtSentinelCategory = case(DtCategory == "Suspicious", "Medium",
DtCategory == "Critical", "High",
"Informational")
eventGroupingSettings:
aggregationKind: AlertPerResult
entityMappings:
- entityType: Host
fieldMappings:
- identifier: HostName
columnName: SrcHostname
- entityType: Host
fieldMappings:
- identifier: HostName
columnName: DstHostname
- entityType: IP
fieldMappings:
- identifier: Address
columnName: SrcIpAddr
- entityType: IP
fieldMappings:
- identifier: Address
columnName: DstIpAddr
customDetails:
SrcMacAddr: SrcMacAddr
EventSeverity: EventSeverity
EventStartTime: EventStartTime
NetworkRuleName: NetworkRuleName
NetworkRuleNumber: NetworkRuleNumber
ThreatId: ThreatId
DtSentinelCategory: DtSentinelCategory
SrcPortNumber: SrcPortNumber
DstPortNumber: DstPortNumber
DstMacAddr: DstMacAddr
DtCompliance: DtCompliance
DtDescription: DtDescription
DtCategory: DtCategory
DtDeviceID: DtDeviceID
# These are described here - this is why we're leaving tactics and techniques above empty
alertDetailsOverride:
# model breach name here
alertDisplayNameFormat: 'Darktrace: {{ThreatRiskLevel}} - {{NetworkRuleName}}' # Up to 256 chars and 3 placeholders
alertDescriptionFormat: '{{DtMessage}}' # Up to 5000 chars and 3 placeholders
# MITRE tactic
alertTacticsColumnName: # leave empty
alertSeverityColumnName: # leave empty
alertDynamicProperties:
- alertProperty: AlertLink
value: DtBreachURL
- 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 =="Policy Breach"
Stage 3: project-rename
| project-rename EventSeverity=score_d, EventStartTime=breachTime_s, NetworkRuleName=modelName_s, NetworkRuleNumber=pid_d, ThreatId=threatID_d, ThreatCategory=dtProduct_s, SrcIpAddr=SourceIP, SrcHostname=hostname_s, SrcMacAddr=sourceMac_s, SrcPortNumber=sourcePort_s, DstIpAddr=destIP_s, DstPortNumber=destPort_s, DstHostname=destHost_s, DstMacAddr=destMac_s, DtCompliance=compliance_b, DtClientSensor=cSensor_b, DtDescription=description_s, DtAntigena=antigena_b, DtDeviceID=deviceId_d, DtSubnetID=sid_d, DtTags=tags_s, DtMitreTechniques=mitreTechniques_s, DtMessage=Message, DtUUID=uuid_g, DtBreachURL=breachUrl_s, DtSrcTypeLabel=typeLabel_s, DtTriggeredComponents=triggeredComponents_s, DtDetails=details_s, DtLongitude=longitude_d, DtLatitude=latitude_d, DtCategory=Category
Stage 4: extend
| extend EventCount=1, EventType="NetworkSession", EventSchema="NetworkSession", EventSchemaVersion="0.2.2", EventResult="Success", DvcAction = "Allow", EventVendor = "Darktrace", EventProduct = "Darktrace DETECT", EventEndTime=EventStartTime, ThreatName=NetworkRuleName, ThreatRiskLevel=EventSeverity
Stage 5: extend
| extend DtSentinelCategory = case(DtCategory == "Suspicious", "Medium",
DtCategory == "Critical", "High",
"Informational")
DtSentinelCategory =DtCategory == "Suspicious""Medium"DtCategory == "Critical""High""Informational"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 |
|---|---|
DstHostname | project-rename |
DstIpAddr | project-rename |
DstMacAddr | project-rename |
DstPortNumber | project-rename |
DtAntigena | project-rename |
DtBreachURL | project-rename |
DtCategory | project-rename |
DtClientSensor | project-rename |
DtCompliance | project-rename |
DtDescription | project-rename |
DtDetails | project-rename |
DtDeviceID | project-rename |
DtLatitude | project-rename |
DtLongitude | project-rename |
DtMessage | project-rename |
DtMitreTechniques | project-rename |
DtSrcTypeLabel | project-rename |
DtSubnetID | project-rename |
DtTags | project-rename |
DtTriggeredComponents | project-rename |
DtUUID | project-rename |
EventSeverity | project-rename |
EventStartTime | project-rename |
NetworkRuleName | project-rename |
NetworkRuleNumber | project-rename |
SrcHostname | project-rename |
SrcIpAddr | project-rename |
SrcMacAddr | project-rename |
SrcPortNumber | project-rename |
ThreatCategory | project-rename |
ThreatId | project-rename |
DvcAction | extend |
EventCount | extend |
EventEndTime | extend |
EventProduct | extend |
EventResult | extend |
EventSchema | extend |
EventSchemaVersion | extend |
EventType | extend |
EventVendor | extend |
ThreatName | extend |
ThreatRiskLevel | extend |
DtSentinelCategory | extend |