T1574.012: COR_PROFILER
摘要
攻击者可能利用 COR_PROFILER 环境变量劫持加载 .NET CLR 的程序的执行流程。COR_PROFILER 是一项 .NET Framework 功能,允许开发者指定一个非托管(或 .NET 外部)的剖析 DLL,将其加载到每个加载公共语言运行时(CLR)的 .NET 进程中。这些剖析器旨在监控、排查和调试由 .NET CLR 执行的托管代码。(Citation: Microsoft Profiling Mar 2017)(Citation: Microsoft COR_PROFILER Feb 2013) COR_PROFILER 环境变量可以在各种作用域(系统、用户或进程)设置,从而产生不同级别的影响。系统范围和用户范围的环境变量作用域在注册表中指定,其中 [组件对象模型](https://attack.mitre.org/techniques/T1559/001)(COM)对象可以注册为剖析器 DLL。进程作用域的 COR_PROFILER 也可以在不修改注册表的情况下在内存中创建。从 .NET Framework 4 开始,只要在 COR_PROFILER_PATH 环境变量中指定了 DLL 的位置,剖析 DLL 就无需注册。(Citation: Microsoft COR_PROFILER Feb 2013) 攻击者可能滥用 COR_PROFILER 建立持久化,在每次调用 CLR 时于所有 .NET 进程的上下文中执行恶意 DLL。如果受害者 .NET 进程在更高权限级别执行,COR_PROFILER 还可用于提升权限(例如[绕过用户账户控制](https://attack.mitre.org/techniques/T1548/002)),以及挂钩和破坏 .NET 进程提供的防御。(Citation: RedCanary Mockingbird May 2020)(Citation: Red Canary COR_PROFILER May 2020)(Citation: Almond COR_PROFILER Apr 2019)(Citation: GitHub OmerYa Invisi-Shell)(Citation: subTee .NET Profilers May 2017)
来源归属
来源:MITRE ATT&CK · 置信度:high
平台
- Windows
战术
Stealth
参考来源
- https://attack.mitre.org/techniques/T1574/012
- https://offsec.almond.consulting/UAC-bypass-dotnet.html
- https://redcanary.com/blog/cor_profiler-for-persistence/
- https://redcanary.com/blog/blue-mockingbird-cryptominer/
- https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/ee471451(v=vs.100)
- https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/profiling-overview
- https://web.archive.org/web/20170720041203/http://subt0x10.blogspot.com/2017/05/subvert-clr-process-listing-with-net.html
- https://github.com/OmerYa/Invisi-Shell