Detection rules › Kusto

Antivirus Detected an Infected File

Status
available
Severity
high
Source
github.com/Azure/Azure-Sentinel

Monitors CTERA platform to detect files infected with viruses identified by the antivirus engine on Edge Filers.

MITRE ATT&CK coverage

Rule body kusto

id: 4f767afa-d666-4ed4-b453-a4f5ad35181b
name: Antivirus Detected an Infected File
description: 'Monitors CTERA platform to detect files infected with viruses identified by the antivirus engine on Edge Filers.'
severity: High
status: Available
kind: NRT
requiredDataConnectors:
  - connectorId: CTERA
    dataTypes:
      - Syslog
tactics:
  - Impact
relevantTechniques:
  - T1203
query: |
    Syslog
    | where SyslogMessage contains "found an infected file"
    | extend 
        EdgeFiler = extract("Edge filer (\\w+)", 1, SyslogMessage),
        DetectionTime = extract("found an infected file at ([^ ]+)", 1, SyslogMessage),
        Portal = extract("from portal: (\\w+)", 1, SyslogMessage),
        FilePath = extract("The file path is: ([^\\.]+)", 1, SyslogMessage),
        Virus = extract("The virus is: ([^\\.]+)", 1, SyslogMessage)
    | project TimeGenerated, EdgeFiler, DetectionTime, Portal, FilePath, Virus
suppressionDuration: PT5H
suppressionEnabled: false
incidentConfiguration:
  createIncident: true
  groupingConfiguration:
    enabled: false
    reopenClosedIncident: false
    lookbackDuration: PT5H
    matchingMethod: AllEntities
eventGroupingSettings:
  aggregationKind: SingleAlert
alertDetailsOverride:
  alertnameFormat: 'Antivirus Detected an Infected File'
  alertDescriptionFormat: Antivirus detected an infected file on {{EdgeFiler}} at {{DetectionTime}}.
customDetails:
  EdgeFiler: EdgeFiler
  Portal: Portal
  FilePath: FilePath
  Virus: Virus
entityMappings:
  - entityType: Host
    fieldMappings:
      - identifier: HostName
        columnName: EdgeFiler
version: 1.0.0

Stages and Predicates

Stage 1: source

Syslog

Stage 2: where

| where SyslogMessage contains "found an infected file"

Stage 3: extend

| extend 
    EdgeFiler = extract("Edge filer (\\w+)", 1, SyslogMessage),
    DetectionTime = extract("found an infected file at ([^ ]+)", 1, SyslogMessage),
    Portal = extract("from portal: (\\w+)", 1, SyslogMessage),
    FilePath = extract("The file path is: ([^\\.]+)", 1, SyslogMessage),
    Virus = extract("The virus is: ([^\\.]+)", 1, SyslogMessage)

Stage 4: project

| project TimeGenerated, EdgeFiler, DetectionTime, Portal, FilePath, Virus

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
SyslogMessagecontains
  • found an infected file

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
DetectionTimeproject
EdgeFilerproject
FilePathproject
Portalproject
TimeGeneratedproject
Virusproject