https://mrt4ntr4.github.io/Exploit-Guard-P1/
总结
本文主要探讨了逆向工程Windows Defender Exploit Guard中的堆栈枢轴保护机制,并通过静态和动态分析PayloadRestrictions.dll
来揭示其防止用户模式进程中漏洞利用的方法。
摘要
本文由苏拉杰·马洛特拉撰写,发布于2025年2月28日,主要探讨了Windows Defender Exploit Guard(以前称为EMET)的内部结构和堆栈枢轴保护机制。作者受到@StephenSims的启发,认为分析Exploit Guard是理解各种漏洞利用缓解措施的绝佳练习。文章首先介绍了堆栈枢轴的概念,即一种用于漏洞利用的技术,可以重定向堆栈指针以获取执行控制权。接着,作者描述了测试环境为Windows 11 23H2版本,并使用了一个演示应用程序来简化调试过程。
文章详细介绍了Exploit Guard的实施保护措施,包括启用Stack Pivot Protection和“验证图像依赖完整性”。通过WinDbg分析,作者发现PayloadRestrictions.dll
是应用进程保护的主要DLL,它在启用保护时被加载。文章还揭示了verifier.dll
如何加载PayloadRestrictions.dll
,以及当NtGlobalFlags中的特定标志未启用时,如何加载此DLL。
作者进一步分析了PayloadRestrictions.dll
中的MitLibInitialize
函数,并讨论了ProcessMitigationPolicy的查询过程。同时,文章介绍了全局变量的初始化,包括g_MitLibState
和g_MitLibRandomSeed
,后者使用了_KUSER_SHARED_DATA
结构中的成员来计算随机种子。
文章还探讨了LdrRegisterDllNotification
的使用,它注册了一个DLL通知钩子,以便在加载新DLL时能够调用MitLibDllNotification
。作者列举了三个主要的DLL,它们的函数被保护,并讨论了如何确定这些关键函数,以及如何使用Microsoft Detours进行钩子。
最后,作者详细说明了堆栈指针验证的过程,以及如何应用Stack Pivot保护策略。文章提到,MitLibHooksDispatcher
函数在检测到堆栈枢轴时会调用MitLibNotifyStackPivotViolation
。最后,作者表示将在下一篇博文中探讨其他强大的缓解措施,如EAF和IAF。
观点
- 逆向分析Windows Defender Exploit Guard是了解漏洞利用缓解措施的绝佳练习。
- 堆栈枢轴是一种用于漏洞利用的技术,可以通过重定向堆栈指针来获取执行控制权。
- 测试环境为Windows 11 23H2版本,使用演示应用程序可以简化调试过程。
PayloadRestrictions.dll
是应用进程保护的主要DLL,它在启用保护时被加载。
verifier.dll
负责加载PayloadRestrictions.dll
,且当NtGlobalFlags中的特定标志未启用时,它会加载此DLL。
MitLibInitialize
函数在PayloadRestrictions.dll
中起着关键作用,它初始化了全局变量和关键函数的保护。
- ProcessMitigationPolicy的查询过程揭示了应用于当前进程的保护策略。
- 全局变量
g_MitLibState
和g_MitLibRandomSeed
的初始化过程中使用了_KUSER_SHARED_DATA
结构中的成员。
LdrRegisterDllNotification
用于注册DLL通知钩子,以便在加载新DLL时能够调用MitLibDllNotification
。
- 文章列举了三个主要的DLL,其函数被保护,并讨论了如何确定这些关键函数。
- 使用Microsoft Detours进行关键函数的钩子,以应用缓解措施。
- 堆栈指针验证是通过
MitLibHooksDispatcher
函数实现的,它在检测到堆栈枢轴时会调用MitLibNotifyStackPivotViolation
。
- 作者计划在下一篇博文中探讨其他缓解措施,如EAF和IAF。
-