Windows强制完整性检查机制深度解析

版权申诉
0 下载量 73 浏览量 更新于2024-08-06 收藏 678KB DOC 举报
"这篇文档是Windows原理深入学习系列的一部分,专注于强制完整性检查的探讨。作者在文中通过逆向分析Win10_x64_20H2系统,详细阐述了强制完整性控制(Mandatory Integrity Control, MIC)在权限检查中的实现机制。文档首先介绍了ObpGrantAccess函数的角色,然后逐步解析了权限判断、安全访问控制列表(SACL)的检查,以及相对地址的处理。接下来,文章详细讨论了如何从访问控制条目(ACE)中提取完整性等级信息,并调用SepCopyTokenIntegrity函数来获取当前令牌的完整性等级。最后,通过比较这两个完整性等级,完成了对访问对象的完整性检查。文档同时也提到了RtlEqualSid函数在比较安全性标识符(Sid)中的作用,以及SeAccessCheck函数在完整性信息来源中的角色。" 在Windows操作系统中,强制完整性控制是一种重要的安全特性,用于确保不同安全级别的对象只能被相应级别的进程访问。在本文档中,作者深入到系统内部,通过逆向工程展示了在Win10_x64_20H2环境下,当进程尝试访问一个对象时,系统如何执行强制完整性检查。这个过程包括了权限的初步判断、SACL中的ACE分析,以及Sid的比较。ObpGrantAccess函数是这个流程的关键,它负责执行访问控制决策。 SepCopyTokenIntegrity函数是分析的重点,它用于从令牌中提取完整性等级索引,进而确定进程的完整性级别。这个函数与UserAndGroups结构交互,获取与当前进程相关的完整性等级Sid。之后,这个Sid与目标对象的SACL中提取的完整性等级Sid进行比较,以决定是否允许访问。RtlEqualSid函数在这里起到了关键的比较作用,它判断两个Sid是否相等,从而确定两个完整性等级是否匹配。 通过对SeAccessCheck函数传递参数的追踪,作者揭示了SACL信息来源于被访问对象,进一步巩固了理解。整个分析过程展示了Windows权限管理的复杂性以及系统如何保护资源的安全。 这篇文档对于理解Windows系统的安全性机制,特别是强制完整性控制的实现,提供了宝贵的洞察。它适合于对操作系统内核、逆向工程和安全感兴趣的读者,特别是那些希望深入了解Windows安全性的专业人士。