Windows原理深入学习系列-强制完整性检查

admin 2022年4月12日19:09:58评论49 views字数 1661阅读5分32秒阅读模式

这是[信安成长计划]的第 24 篇文章


0x00 目录

0x01 介绍

0x02 逆向分析 Win10_x64_20H2

0x03 总结

0x04 参考文章


最近因为一些事情,拖更了三个周,大家见谅啊,后面还会开始一些其他的系列内容,还等着大家来捧场了。


现在我们接着之前的进度,继续完成 Windows 原理的学习。


在刚开始的时候,我们介绍了强制完整性控制的机制,这次就来看一下在实际的权限检查当中是如何进行的。


0x01 介绍

这次也还是接着上一次的 ObpGrantAccess 函数往后分析了,根据名字也很容易能够判断出这里的作用


Windows原理深入学习系列-强制完整性检查


不清楚为什么从 ObpGrantAccess 分析的,可以去看一下上一篇文章的介绍部分


0x02 逆向分析 Win10_x64_20H2

在进入函数以后,就是一堆保存堆栈、赋值等等操作


Windows原理深入学习系列-强制完整性检查


紧接着会有一些权限的判断,这些也暂时不是现在的关键


Windows原理深入学习系列-强制完整性检查


接着判断 SACL 中是否有有效内容,获取前的最后的判断


Windows原理深入学习系列-强制完整性检查


然后就是我们非常熟悉的内容了是否是相对地址,忘记这块内容的可以参考之前关于访问控制列表的文章


Windows原理深入学习系列-强制完整性检查


获取到完整性等级相关的 ACE


Windows原理深入学习系列-强制完整性检查


接着就从 ACE 当中获取到需要的内容


Windows原理深入学习系列-强制完整性检查


紧接着就是我们非常熟悉的函数 SepCopyTokenIntegrity,这个在刚开始分析强制完整性控制的时候有分析过


它的主要操作就是根据 Token 中的 IntegrityLevelIndex,从 UserAndGroups 当中得到当前的完整性等级


Windows原理深入学习系列-强制完整性检查


然后就是最关键的比较了,对两个 Sid 进行比较


Windows原理深入学习系列-强制完整性检查


根据分析可以知道 r12 就是通过 SepCopyTokenIntegrity 从当前的 Token 中取出的完整性等级信息


Windows原理深入学习系列-强制完整性检查


另一个 rbp,就是从 SACL 当中取出来的完整性等级


Windows原理深入学习系列-强制完整性检查


r12 的来源就是当前上下文的 Token 信息


Windows原理深入学习系列-强制完整性检查


而 SACL 的来源并不在当前,一直往前追,可以看到它是从 SeAccessCheck 的 rcx 当中来的,根据描述也能明白这个是被访问对象的信息


Windows原理深入学习系列-强制完整性检查


这样也就基本完成了对完整性信息的检测,对于 RtlEqualSid 函数,之前也进行过分析,这里也就不再提及了



0x03 总结

在之前我也一直有一个疑问,我刚开始是通过 SepCopyTokenIntegrity 来得到进程的完整性等级的,但是为什么网上有很多的资料都说完整性等级是存储在 SACL 当中的。


从这里也就可以得知,两个取出来的都是完整性等级信息,不过它们所代表的情况是不一样的。


在进行权限验证的时候,会通过 SepCopyTokenIntegrity 取出当前的完整性等级,然后从目标对象的 SACL 当中获得目标的完整性等级,然后进行相应的判断和验证。


0x04 参考文章

1.https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-token_mandatory_policy

2.https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-seaccesscheck

3.https://docs.microsoft.com/zh-cn/windows-hardware/drivers/ddi/ntifs/ns-ntifs-_security_descriptor

4.https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/security-descriptor-control

5.https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header


-----文章到此结束,欢迎加微信探讨-----

Windows原理深入学习系列-强制完整性检查


往 期 文 章


1. Windows原理深入学习系列-信任等级检查

2. Windows原理深入学习系列-Windows内核提权

3. Windows原理深入学习系列-特权

更多文章 戳此查看


原文始发于微信公众号(信安成长计划):Windows原理深入学习系列-强制完整性检查

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月12日19:09:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows原理深入学习系列-强制完整性检查http://cn-sec.com/archives/900393.html

发表评论

匿名网友 填写信息