Windows原理深入学习系列-强制完整性检查
这是[信安成长计划]的第 24 篇文章
0x00 目录
0x01 介绍
0x02 逆向分析 Win10_x64_20H2
0x03 总结
0x04 参考文章
最近因为一些事情,拖更了三个周,大家见谅啊,后面还会开始一些其他的系列内容,还等着大家来捧场了。
现在我们接着之前的进度,继续完成 Windows 原理的学习。
在刚开始的时候,我们介绍了强制完整性控制的机制,这次就来看一下在实际的权限检查当中是如何进行的。
0x01 介绍
这次也还是接着上一次的 ObpGrantAccess 函数往后分析了,根据名字也很容易能够判断出这里的作用

不清楚为什么从 ObpGrantAccess 分析的,可以去看一下上一篇文章的介绍部分
0x02 逆向分析 Win10_x64_20H2
在进入函数以后,就是一堆保存堆栈、赋值等等操作

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

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

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

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

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

紧接着就是我们非常熟悉的函数 SepCopyTokenIntegrity,这个在刚开始分析强制完整性控制的时候有分析过
它的主要操作就是根据 Token 中的 IntegrityLevelIndex,从 UserAndGroups 当中得到当前的完整性等级

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

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

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

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

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

这样也就基本完成了对完整性信息的检测,对于 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原理深入学习系列-强制完整性检查的更多相关文章
- Windows原理深入学习系列-强制完整性控制
欢迎关注微信公众号:[信安成长计划] 0x00 目录 0x01 介绍 0x02 完整性等级 0x03 文件读取测试 0x04 进程注入测试 0x05 原理分析 Win10_x64_20H2 0x06 ...
- Windows原理深入学习系列-信任等级检查
这是[信安成长计划]的第 23 篇文章 0x00 目录 0x01 介绍 0x02 逆向分析 Win10_x64_20H2 0x03 WinDBG 0x04 参考文章 在之前的时候,一直以为 SACL ...
- Windows原理深入学习系列-访问控制列表
这是[信安成长计划]的第 19 篇文章 0x00 目录 0x01 介绍 0x02 DACL 0x03 创建DACL 0x04 文件读取测试 0x05 进程注入测试 0x06 原理分析 Win10_x6 ...
- Windows原理深入学习系列-访问控制列表-关于安全描述符的补充
这是[信安成长计划]的第 20 篇文章 0x00 目录 0x01 安全描述符的结构 0x02 两个结构的不同点 0x03 真正的查询方案 0x04 参考文章 0x01 安全描述符的结构 在上一篇文章中 ...
- Windows原理深入学习系列-特权
这是[信安成长计划]的第 21 篇文章 0x00 目录 0x01 介绍 0x02 结构分析 0x03 进程注入测试 0x04 参考文章 0x01 介绍 在 Token 当中还存在一个特别重要的内容-- ...
- Windows原理深入学习系列-Windows内核提权
这是[信安成长计划]的第 22 篇文章 0x00 目录 0x01 介绍 0x02 替换 Token 0x03 编辑 ACL 0x04 修改 Privileges 0x05 参考文章 继续纠正网上文章中 ...
- Git 之Windows环境下学习系列
Git .SVN .TFS 相同点 不同点 Git 版本控制 优点: 分布式版本控制.无需联网就能版本提交 开源 缺点 入门学习难度高 SVN 优点: 集中式版本控制. 个人开源 缺点 ...
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- 转:深入Java集合学习系列:HashSet的实现原理
0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特 ...
随机推荐
- 阿里一面,说说你对Mysql死锁的理解
又到了金三银四的时候,大家都按耐不住内心的躁动,我在这里给大家分享下之前面试中遇到的一个知识点(死锁问题),如有不足,欢迎大佬们指点指点. 1.什么是死锁? 死锁指的是在两个或两个以上不同的进程或线程 ...
- TiDB 5.0认证指南之PCTA PCTP
1. TiDB简介 TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analyt ...
- VUE常见问题
VUE常见问题 对于MVVM的理解 MVVM 是 Model-View-ViewModel 的缩写 Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑 View 代表UI 组件, ...
- Kafka03--Kafka消费者使用方式
前言 与生产者客户端一样,消费者端也由最初的scala版本过渡到现在的Java版本. 正常的消费者逻辑需要以下4个步骤: KafkaConsumer的客户端参数配置和对应实例: 订阅主题 拉取消息并消 ...
- JSP是什么?有什么特点?
JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.在Servlet当中开发嵌入html的脚本,会非常的繁琐.JSP支持在h ...
- 什么是 Swagger?你用 Spring Boot 实现了它吗?
Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱.Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现.它使文档 ...
- String常用方法解析
package com.javaBase.string; import java.util.Locale; /** * 〈一句话功能简述〉; * 〈String类中常用的方法整理〉 * * @auth ...
- 在 java 中守护线程和本地线程区别?
java 中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(bool on):true 则把该线程 ...
- 说出 5 个 JDK 1.8 引入的新特性?
Java 8 在 Java 历史上是一个开创新的版本,下面 JDK 8 中 5 个主要的特性: Lambda 表达式,允许像对象一样传递匿名函数 Stream API,充分利用现代多核 CPU,可以写 ...
- Django中间件 (middleware)
中间件是处理django的请求和响应的框架级别的钩子,本质是一个类(直白一点中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作) 由于其影响的是全局,所以需要谨慎使用,使用不当会影响性 ...