LiveActive security incident?Get immediate response
MITRE ATT&CK® Technique

T1574.012: COR_PROFILER

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 profilers are designed to monitor, troubleshoot, and debug managed code executed by the .NET CLR.[1][2]

The COR_PROFILER environment variable can be set at various scopes (system, user, or process) resulting in different levels of influence. System and user-wide environment variable scopes are specified in the Registry, where a Component Object Model (COM) object can be registered as a profiler DLL. A process scope COR_PROFILER can also be created in-memory without modifying the Registry. Starting with .NET Framework 4, the profiling DLL does not need to be registered as long as the location of the DLL is specified in the COR_PROFILER_PATH environment variable.[2]

Adversaries may abuse COR_PROFILER to establish persistence that executes a malicious DLL in the context of all .NET processes every time the CLR is invoked. The COR_PROFILER can also be used to elevate privileges (ex: Bypass User Account Control) if the victim .NET process executes at a higher permission level, as well as to hook and impair defenses provided by .NET processes.[3][4][5][6][7]

EnterpriseT1574.012Sub-techniqueObject v2.0Modified
Glexia's Take · Automated analysis

Security context for executives and security teams

Automation confidenceHigh

COR_PROFILER abuse matters because a Windows .NET feature intended for profiling and debugging can be turned into an execution hijack point. If an attacker can set profiler-related environment variables or supporting registry/COM configuration, a DLL may load whenever .NET CLR processes start, creating persistence, stealthy execution, or execution in a higher-privileged .NET process context.

Executive priority

Treat this as a Windows endpoint and identity-control validation issue, not only a malware signature problem. Leaders should ask whether privileged accounts can modify relevant environment-variable or registry locations, whether application control limits unapproved DLL execution, and whether SOC telemetry can show profiler configuration changes and unexpected DLL loads in .NET processes. This is also useful audit evidence for least privilege, registry permission governance, and execution-prevention control maturity.

Technical view

For SOC, detection engineering, and IR teams, validate coverage around Windows systems that run .NET Framework applications. ATT&CK provides no official detection text for this sub-technique, but relationship context includes DET0479 for detecting hijack execution flow using Windows COR_PROFILER. Practical validation should focus on changes to system/user COR_PROFILER-related environment variables, registry-backed environment settings, COM profiler registration, COR_PROFILER_PATH usage, and unexpected unmanaged DLL loads into .NET CLR processes. Because process-scoped COR_PROFILER can exist in memory without registry modification, registry monitoring alone is insufficient.

Likely telemetry

  • Windows registry modification events for user-wide and system-wide environment variables and COM profiler-related configuration
  • Process creation telemetry that includes command line, parent process, integrity context, and environment variables where available
  • Module/DLL load telemetry for .NET CLR processes, especially unmanaged profiler DLLs loaded from unusual paths
  • File creation or modification telemetry for DLLs referenced by COR_PROFILER_PATH or profiler registration
  • Account and privilege-change evidence relevant to users or processes able to modify registry/environment settings

Detection direction

  • Use DET0479 as the ATT&CK-linked detection strategy reference, then test it against local Windows and .NET telemetry sources.
  • Alert on new or modified COR_PROFILER and COR_PROFILER_PATH values at system, user, or process scope where observable.
  • Correlate profiler configuration with subsequent .NET process starts and DLL loads; the useful signal is often the combination of configuration change plus unexpected module load.
  • Baseline legitimate developer, monitoring, troubleshooting, or profiling tools to reduce false positives; COR_PROFILER is a legitimate .NET Framework feature.
  • Do not rely only on registry auditing because ATT&CK notes process-scoped COR_PROFILER can be created in memory without registry changes.

Mitigation priorities

  • Prioritize User Account Management: enforce least privilege so ordinary users and service accounts cannot broadly modify sensitive environment-variable or registry locations.
  • Restrict registry permissions on keys used for system/user environment variables and COM-related profiler registration so only authorized administrators or management tooling can change them.
  • Use execution prevention controls to limit unauthorized DLL execution, especially profiler DLLs from untrusted or user-writable paths.
  • Maintain an approved inventory of legitimate .NET profilers and troubleshooting tools so defenders can distinguish expected engineering activity from suspicious persistence.
  • Include COR_PROFILER checks in Windows endpoint hardening, incident response triage, and compliance evidence for privileged access, registry control, and application control.
Additional notes and limits

ATT&CK classifies this as a Windows sub-technique under Hijack Execution Flow with stealth and execution tactics. Relationship context states Blue Mockingbird and DarkTortilla use this technique, and mitigations M1018, M1024, and M1038 apply. These relationships support defensive prioritization, but they do not by themselves prove current activity in any specific environment.

The official ATT&CK object does not provide detection text, so detection guidance is derived from the technique description, external references listed by ATT&CK, and the DET0479 relationship. Local validation is required to know whether process environment variables, module loads, registry changes, and application-control decisions are actually collected and retained.

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Official MITRE ATT&CK definition

COR_PROFILER

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 profilers are designed to monitor, troubleshoot, and debug managed code executed by the .NET CLR.[1][2]

The COR_PROFILER environment variable can be set at various scopes (system, user, or process) resulting in different levels of influence. System and user-wide environment variable scopes are specified in the Registry, where a Component Object Model (COM) object can be registered as a profiler DLL. A process scope COR_PROFILER can also be created in-memory without modifying the Registry. Starting with .NET Framework 4, the profiling DLL does not need to be registered as long as the location of the DLL is specified in the COR_PROFILER_PATH environment variable.[2]

Adversaries may abuse COR_PROFILER to establish persistence that executes a malicious DLL in the context of all .NET processes every time the CLR is invoked. The COR_PROFILER can also be used to elevate privileges (ex: Bypass User Account Control) if the victim .NET process executes at a higher permission level, as well as to hook and impair defenses provided by .NET processes.[3][4][5][6][7]

View the same entry on attack.mitre.org (MITRE-hosted reference; in-page links above use the Glexia ATT&CK library.)

Glexia analysis

How security teams should use this page

Treat this object as behavior context, not an attribution claim. Validate the related groups, software, data sources, and mitigations against official ATT&CK relationships and your own telemetry before making control-coverage decisions.

ATT&CK relationship table

Related techniques

This mirrors the MITRE pattern of making group, software, campaign, and technique relationships scannable. Relationship notes come from mirrored ATT&CK relationship text when available.

1 rows
DomainIDNameRelationship / procedure
EnterpriseT1574Hijack Execution FlowThis object subtechnique of Hijack Execution Flow.
Associated objects

Groups, software, and campaigns

GroupEnterprise

G0108: Blue Mockingbird

Blue Mockingbird is a cluster of observed activity involving Monero cryptocurrency-mining payloads in dynamic-link library (DLL) form on Windows systems. The earliest observed Blue Mockingbird tools were created in December 2019.[1]

Relationship explorer

All related ATT&CK context

Mitigations

Mitigation direction

Change history

Object version and sync metadata

The fields below describe the current mirrored snapshot. When Glexia retains multiple ATT&CK source imports, you can open the table to compare the same object across releases (hashes and MITRE timestamps). For MITRE’s own release notes and roadmap, see ATT&CK resources — Updates.

ATT&CK release
19.1
Object version
2.0
Created
Modified
Raw hash
6f37870bdfb94f57...
Imported snapshots across ATT&CK releases(1)
ReleaseBundle importedObject versionModifiedStatusRaw hash
19.12.0Current bundle6f37870bdfb9…
Raw source

Mirrored ATT&CK source object

The raw object is retained through the mirrored ATT&CK source bundle and object hash. The raw endpoint returns the exact object from the mirrored bundle when available.

Source references

External references and citations

MITRE external references are preserved separately from Glexia analysis so citations remain traceable to their original source records.

  1. [1]
    Microsoft Profiling Mar 2017

    Microsoft. (2017, March 30). Profiling Overview. Retrieved June 24, 2020.

    Open source URL
  2. [2]
    Microsoft COR_PROFILER Feb 2013

    Microsoft. (2013, February 4). Registry-Free Profiler Startup and Attach. Retrieved June 24, 2020.

    Open source URL
  3. [3]
    RedCanary Mockingbird May 2020

    Lambert, T. (2020, May 7). Introducing Blue Mockingbird. Retrieved May 26, 2020.

    Open source URL
  4. [4]
    Red Canary COR_PROFILER May 2020

    Brown, J. (2020, May 7). Detecting COR_PROFILER manipulation for persistence. Retrieved June 24, 2020.

    Open source URL
  5. [5]
    Almond COR_PROFILER Apr 2019

    Almond. (2019, April 30). UAC bypass via elevated .NET applications. Retrieved June 24, 2020.

    Open source URL
  6. [6]
    GitHub OmerYa Invisi-Shell

    Yair, O. (2019, August 19). Invisi-Shell. Retrieved June 24, 2020.

    Open source URL
  7. [7]
    subTee .NET Profilers May 2017

    Smith, C. (2017, May 18). Subvert CLR Process Listing With .NET Profilers. Retrieved June 24, 2020.

    Open source URL
  8. [8]
    Secureworks DarkTortilla Aug 2022

    Secureworks Counter Threat Unit Research Team. (2022, August 17). DarkTortilla Malware Analysis. Retrieved November 3, 2022.

    Open source URL
  9. [9]
    Beechey 2010

    Beechey, J. (2010, December). Application Whitelisting: Panacea or Propaganda?. Retrieved November 18, 2014.

  10. [10]
    Windows Commands JPCERT

    Tomonaga, S. (2016, January 26). Windows Commands Abused by Attackers. Retrieved February 2, 2016.

    Open source URL
  11. [11]
    NSA MS AppLocker

    NSA Information Assurance Directorate. (2014, August). Application Whitelisting Using Microsoft AppLocker. Retrieved March 31, 2016.

    Open source URL
  12. [12]
    Almond COR_PROFILER Apr 2019

    Almond. (2019, April 30). UAC bypass via elevated .NET applications. Retrieved June 24, 2020.

    Open source URL
  13. [13]
    Almond COR_PROFILER Apr 2019

    Almond. (2019, April 30). UAC bypass via elevated .NET applications. Retrieved June 24, 2020.

    Open source URL
  14. [14]
    GitHub OmerYa Invisi-Shell

    Yair, O. (2019, August 19). Invisi-Shell. Retrieved June 24, 2020.

    Open source URL
  15. [15]
    GitHub OmerYa Invisi-Shell

    Yair, O. (2019, August 19). Invisi-Shell. Retrieved June 24, 2020.

    Open source URL
  16. [16]
    Microsoft COR_PROFILER Feb 2013

    Microsoft. (2013, February 4). Registry-Free Profiler Startup and Attach. Retrieved June 24, 2020.

    Open source URL
  17. [17]
    Microsoft COR_PROFILER Feb 2013

    Microsoft. (2013, February 4). Registry-Free Profiler Startup and Attach. Retrieved June 24, 2020.

    Open source URL
  18. [18]
    Microsoft Profiling Mar 2017

    Microsoft. (2017, March 30). Profiling Overview. Retrieved June 24, 2020.

    Open source URL
  19. [19]
    Microsoft Profiling Mar 2017

    Microsoft. (2017, March 30). Profiling Overview. Retrieved June 24, 2020.

    Open source URL
  20. [20]
    Red Canary COR_PROFILER May 2020

    Brown, J. (2020, May 7). Detecting COR_PROFILER manipulation for persistence. Retrieved June 24, 2020.

    Open source URL
  21. [21]
    Red Canary COR_PROFILER May 2020

    Brown, J. (2020, May 7). Detecting COR_PROFILER manipulation for persistence. Retrieved June 24, 2020.

    Open source URL
  22. [22]
    RedCanary Mockingbird May 2020

    Lambert, T. (2020, May 7). Introducing Blue Mockingbird. Retrieved May 26, 2020.

    Open source URL
  23. [23]
    RedCanary Mockingbird May 2020

    Lambert, T. (2020, May 7). Introducing Blue Mockingbird. Retrieved May 26, 2020.

    Open source URL
  24. [24]
    mitre-attackT1574.012
    Open source URL
  25. [25]
    mitre-attackT1574.012
    Open source URL
  26. [26]
    mitre-attackT1574.012
    Open source URL
  27. [27]
    subTee .NET Profilers May 2017

    Smith, C. (2017, May 18). Subvert CLR Process Listing With .NET Profilers. Retrieved June 24, 2020.

    Open source URL
  28. [28]
    subTee .NET Profilers May 2017

    Smith, C. (2017, May 18). Subvert CLR Process Listing With .NET Profilers. Retrieved June 24, 2020.

    Open source URL
  29. [29]
    RedCanary Mockingbird May 2020

    Lambert, T. (2020, May 7). Introducing Blue Mockingbird. Retrieved May 26, 2020.

    Open source URL
  30. [30]
    RedCanary Mockingbird May 2020

    Lambert, T. (2020, May 7). Introducing Blue Mockingbird. Retrieved May 26, 2020.

    Open source URL
  31. [31]
    Secureworks DarkTortilla Aug 2022

    Secureworks Counter Threat Unit Research Team. (2022, August 17). DarkTortilla Malware Analysis. Retrieved November 3, 2022.

    Open source URL
  32. [32]
    Beechey 2010

    Beechey, J. (2010, December). Application Whitelisting: Panacea or Propaganda?. Retrieved November 18, 2014.

  33. [33]
    NSA MS AppLocker

    NSA Information Assurance Directorate. (2014, August). Application Whitelisting Using Microsoft AppLocker. Retrieved March 31, 2016.

    Open source URL
  34. [34]
    Windows Commands JPCERT

    Tomonaga, S. (2016, January 26). Windows Commands Abused by Attackers. Retrieved February 2, 2016.

    Open source URL
Source and licensing

Source: MITRE ATT&CK®. © 2026 The MITRE Corporation. This work is reproduced and distributed with the permission of The MITRE Corporation. MITRE ATT&CK and ATT&CK are registered trademarks of The MITRE Corporation. Glexia is not affiliated with or endorsed by MITRE.