Detection rules › Sigma

Registry-Free Process Scope COR_PROFILER

Severity
medium
Author
frack113
Source
upstream

Adversaries may leverage the COR_PROFILER environment variable to hijack the execution flow of programs that load the .NET CLR. The COR_PROFILER is a .NET Framework feature which allows developers to specify an unmanaged (or external of .NET) profiling DLL to be loaded into each .NET process that loads the Common Language Runtime (CLR). These profiliers are designed to monitor, troubleshoot, and debug managed code executed by the .NET CLR. (Citation: Microsoft Profiling Mar 2017) (Citation: Microsoft COR_PROFILER Feb 2013)

MITRE ATT&CK coverage

TacticTechniques
PersistenceT1574.012 Hijack Execution Flow: COR_PROFILER
Privilege EscalationT1574.012 Hijack Execution Flow: COR_PROFILER
Defense EvasionT1574.012 Hijack Execution Flow: COR_PROFILER

Event coverage

ProviderEvent IDTitle
PowerShell4104Creating Scriptblock text (MessageNumber of MessageTotal).

Stages and Predicates

Stage 1: selection

ScriptBlockText|contains: '$env:COR_ENABLE_PROFILING'
ScriptBlockText|contains: '$env:COR_PROFILER'
ScriptBlockText|contains: '$env:COR_PROFILER_PATH'

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
ScriptBlockTextmatch
  • $env:COR_ENABLE_PROFILING
  • $env:COR_PROFILER
  • $env:COR_PROFILER_PATH

Neighbors

Broader alternatives (more inclusive than this rule)

These rules match a superset of what this rule catches. They cover the same events plus more. Use them if you want wider coverage and can absorb more false positives.