Detection rules › Sigma

Potential Registry Persistence Attempt Via Windows Telemetry

Status
test
Severity
high
Log source
category registry_set, product windows
Author
Lednyov Alexey, oscd.community, Sreeman
Source
github.com/SigmaHQ/sigma

Detects potential persistence behavior using the windows telemetry registry key. Windows telemetry makes use of the binary CompatTelRunner.exe to run a variety of commands and perform the actual telemetry collections. This binary was created to be easily extensible, and to that end, it relies on the registry to instruct on which commands to run. The problem is, it will run any arbitrary command without restriction of location or type.

MITRE ATT&CK coverage

Telemetry coverage

Rule body

title: Potential Registry Persistence Attempt Via Windows Telemetry
id: 73a883d0-0348-4be4-a8d8-51031c2564f8
related:
    - id: 4e8d5fd3-c959-441f-a941-f73d0cdcdca5
      type: obsolete
status: test
description: |
    Detects potential persistence behavior using the windows telemetry registry key.
    Windows telemetry makes use of the binary CompatTelRunner.exe to run a variety of commands and perform the actual telemetry collections.
    This binary was created to be easily extensible, and to that end, it relies on the registry to instruct on which commands to run.
    The problem is, it will run any arbitrary command without restriction of location or type.
references:
    - https://www.trustedsec.com/blog/abusing-windows-telemetry-for-persistence/
author: Lednyov Alexey, oscd.community, Sreeman
date: 2020-10-16
modified: 2023-08-17
tags:
    - attack.privilege-escalation
    - attack.execution
    - attack.persistence
    - attack.t1053.005
logsource:
    category: registry_set
    product: windows
    definition: 'Requirements: Sysmon config that monitors \SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController subkey of the HKLM hives'
detection:
    selection:
        TargetObject|contains: '\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\'
        TargetObject|endswith: '\Command'
        Details|contains:
            - '.bat'
            - '.bin'
            - '.cmd'
            - '.dat'
            - '.dll'
            - '.exe'
            - '.hta'
            - '.jar'
            - '.js'
            - '.msi'
            - '.ps'
            - '.sh'
            - '.vb'
    filter_main_generic:
        Details|contains:
            - '\system32\CompatTelRunner.exe'
            - '\system32\DeviceCensus.exe'
    condition: selection and not 1 of filter_main_*
falsepositives:
    - Unknown
level: high

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_main_*

Stage 1: selection

selection:
    TargetObject|contains: '\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\'
    TargetObject|endswith: '\Command'
    Details|contains:
        - '.bat'
        - '.bin'
        - '.cmd'
        - '.dat'
        - '.dll'
        - '.exe'
        - '.hta'
        - '.jar'
        - '.js'
        - '.msi'
        - '.ps'
        - '.sh'
        - '.vb'

Stage 2: not filter_main_generic

filter_main_generic:
    Details|contains:
        - '\system32\CompatTelRunner.exe'
        - '\system32\DeviceCensus.exe'

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
Detailsmatch\system32\CompatTelRunner.exeexcludes:Details field:"Details" value:"\system32\CompatTelRunner.exe"
Detailsmatch\system32\DeviceCensus.exeexcludes:Details field:"Details" value:"\system32\DeviceCensus.exe"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Detailsmatch
  • .bat corpus 3 (sigma 3)
  • .bin
  • .cmd
  • .dat
  • .dll corpus 5 (sigma 5)
  • .exe corpus 4 (sigma 3, splunk 1)
  • .hta corpus 2 (sigma 2)
  • .jar
  • .js
  • .msi
  • .ps
  • .sh
  • .vb
field:"Details" kind:match
TargetObjectends_with
  • \Command
field:"TargetObject" kind:ends_with value:"\Command"
TargetObjectmatch
  • \SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\
field:"TargetObject" kind:match value:"\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TelemetryController\"