COR_PROFILER
对手可能利用COR_PROFILER环境变量劫持加载.NET CLR的程序的执行流。COR_PROFILER是一个.NET框架功能,允许开发人员指定一个非托管(或.NET外部)分析DLL加载到每个加载公共语言运行时(CLR)的.NET进程中。这些分析器旨在监视、排除故障和调试由.NET CLR执行的托管代码。(引用: Microsoft Profiling Mar 2017)(引用: Microsoft COR_PROFILER Feb 2013) COR_PROFILER环境变量可以在各种范围内设置(系统、用户或进程),导致不同级别的影响。系统和用户范围的环境变量范围在注册表中指定,其中可以将组件对象模型(COM)对象注册为分析DLL。还可以在内存中创建进程范围的COR_PROFILER,而无需修改注册表。从.NET框架4开始,只要在COR_PROFILER_PATH环境变量中指定DLL的位置,就不需要注册分析DLL。(引用: Microsoft COR_PROFILER Feb 2013) 对手可能滥用COR_PROFILER建立持久性,每次调用CLR时在所有.NET进程的上下文中执行恶意DLL。如果受害者.NET进程以更高权限级别执行,COR_PROFILER还可以用于提升权限(例如绕过用户帐户控制),以及挂钩和削弱防御由.NET进程提供。(引用: RedCanary Mockingbird May 2020)(引用: Red Canary COR_PROFILER May 2020)(引用: Almond COR_PROFILER Apr 2019)(引用: GitHub OmerYa Invisi-Shell)(引用: subTee .NET Profilers May 2017)