Detection rules › Kusto

BitSight - diligence risk category detected

Status
available
Severity
medium
Time window
1d
Source
github.com/Azure/Azure-Sentinel

'Rule helps to detect whenever there is a diligence risk category found in BitSight.'

MITRE ATT&CK coverage

Rule body

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 =
ifSeverity <= 6.9 and Severity >= 4.0"Low"
elifSeverity <= 8.9 and Severity >= 7.0"Medium"
elifSeverity <= 10.0 and Severity >= 9.0"High"
else"Informational"

Stage 6: project

| project FirstSeen, CompanyName, Severity, RiskCategory, TemporaryId, RiskVector

Indicators

These rows show field, operator, and value matches.

Output fields

These fields are emitted when the rule matches.

FieldSource
CompanyNameproject
FirstSeenproject
RiskCategoryproject
RiskVectorproject
Severityproject
TemporaryIdproject