Detection rules › Kusto
BitSight - diligence risk category detected
'Rule helps to detect whenever there is a diligence risk category found in BitSight.'
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Reconnaissance | T1595.002 Active Scanning: Vulnerability Scanning |
| Execution | T1203 Exploitation for Client Execution |
Rule body kusto
id: 161ed3ac-b242-4b13-8c6b-58716e5e9972
name: BitSight - diligence risk category detected
description: |
'Rule helps to detect whenever there is a diligence risk category found in BitSight.'
severity: Medium
status: Available
requiredDataConnectors:
- connectorId: BitSight
dataTypes:
- BitSightFindingsData
queryFrequency: 1d
queryPeriod: 24h
triggerOperator: GreaterThan
triggerThreshold: 0
tactics:
- Execution
- Reconnaissance
relevantTechniques:
- T1203
- T1595.002
query: |
let timeframe = 24h;
BitSightFindingsData
| where ingestion_time() > ago(timeframe)
| where RiskCategory == "Diligence"
| extend Severity = toreal(Severity)
| extend Severity = case( Severity <= 6.9 and Severity >= 4.0, "Low",
Severity <= 8.9 and Severity >= 7.0, "Medium",
Severity <= 10.0 and Severity >= 9.0, "High",
"Informational")
| project FirstSeen, CompanyName, Severity, RiskCategory, TemporaryId, RiskVector
incidentConfiguration:
createIncident: false
eventGroupingSettings:
aggregationKind: AlertPerResult
alertDetailsOverride:
alertDisplayNameFormat: 'BitSight: Alert for {{RiskVector}} in {{CompanyName}} from BitSight'
alertDescriptionFormat: 'Alert is generated for {{CompanyName}}.\n\nRisk Vector: {{RiskVector}}\nTemporaryId: {{TemporaryId}}\nRisk Category: Diligence'
alertSeverityColumnName: Severity
entityMappings:
- entityType: Malware
fieldMappings:
- identifier: Name
columnName: RiskVector
- identifier: Category
columnName: RiskCategory
version: 1.0.2
kind: Scheduled
Stages and Predicates
Parameters
let timeframe = 24h;
Stage 1: source
BitSightFindingsData
Stage 2: where
| where ingestion_time() > ago(timeframe)
Stage 3: where
| where RiskCategory == "Diligence"
Stage 4: extend
| extend Severity = toreal(Severity)
Stage 5: extend
| extend Severity = case( Severity <= 6.9 and Severity >= 4.0, "Low",
Severity <= 8.9 and Severity >= 7.0, "Medium",
Severity <= 10.0 and Severity >= 9.0, "High",
"Informational")
Severity =Severity <= 6.9 and Severity >= 4.0"Low"Severity <= 8.9 and Severity >= 7.0"Medium"Severity <= 10.0 and Severity >= 9.0"High""Informational"Stage 6: project
| project FirstSeen, CompanyName, Severity, RiskCategory, TemporaryId, RiskVector
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 |
|---|---|---|
RiskCategory | 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 |
|---|---|
CompanyName | project |
FirstSeen | project |
RiskCategory | project |
RiskVector | project |
Severity | project |
TemporaryId | project |