这是[信安成长计划]的第23篇文章
0x00 目录
0x01 介绍
0x02 逆向分析 Win10_x64_20H2
0x03 WinDBG
0x04 参考文章
过去,我一直认为SACL仅仅是用于审计的,但在深入分析时发现,SACL还具有其他功能。
0x01 介绍
根据资料显示,权限检查是在ObpGrantAccess函数中完成的。
在之前的文章中,我们了解到在进行权限检查时,首先会进行完整性等级的检查,然后再检查ACL。然而,在跟踪函数后,发现了在这些检查之前,还存在其他检测行为,即先进行信任等级的检查。
在进行取值时,值是从SACL中获取的,这也改变了我们之前认为SACL仅用于审计的观点。
0x02 逆向分析 Win10_x64_20H2
进入函数后,首先获取TrustLabel的ACE。
通过向上追溯,可以发现传入的参数是SecurityDescriptor类型的。
根据微软文档可知,这是被访问者的安全描述符。
接着是对Control的判断,与之前文章中DACL的相对位置或绝对位置是一样的情况,详细内容可以参考《Windows原理深入学习系列-访问控制列表-关于安全描述符的补充》。
然后调用RtlFindAceByType通过类型来寻找我们想要的ACE,这里要找的是SYSTEM_PROCESS_TRU
ST_LABEL_ACE_TYPE,具体操作这里就不详述了,之前已经分析过如何获取ACE,如何判断ACE类型等,详细内容可以参考《Windows原理深入学习系列-访问控制列表》。
找到后,还会进行一次判断,如果有效就直接返回,也就是找到了。
如果没有找到,从一开始就不跳转,直接返回零。
接下来回到主函数,如果没有找到就直接退出,这里假设已经找到了。
这里面还会涉及到一些其他的操作,暂时先不考虑这些内容,所以后面的一些跳转就省略不看了,这些操作也都是成对的,刚开始有申请,退出时有释放。
接下来会获取当前安全主体的上下文,用来与目标的安全等级进行对比,这里取出了Token,但有PrimaryToken和ClientToken之分。
根据后面的逻辑分析,如果没有ClientToken,就会直接用PrimaryToken进行比较,如果有的话,会先进行ClientToken比较,当PrimaryToken的TrustLevelSid大于ClientToken后,才会再进行PrimaryToken与目标等级的对比,否则就会使用ClientToken与目标等级进行对比。
但ClientToken是什么呢?猜测可能与Impersonation有关。
因为对于Token的描述就是有这两种。
秀脸FacePlay
一款集成AI换脸、照片跳舞等多种AI特效玩法的App
124
查看详情
在一些函数调用中,ClientToken也被描述为模拟的客户端的Token,这里就假设是这样的用处了,如果不是,请大佬们帮忙指出。
在进行对比时,有另外一个函数来进行,它会将两个SID都传入,然后进行对比,而对比的结果是通过r8来接收的。
在这个函数中,对比逻辑主要就是有TrustLabel的大于没有TrustLabel,PP保护的大于PPL,Signer也是高值大于低值。
然后再来看判断完以后的情况,先看返回值,确定函数执行成功了,然后再看返回值,因为是从r8回来的,所以这里看的就是var38。
如果不为零,就说明当前的Trust的等级高于目标的,然后将arg30置-1。
否则的话,将目标ACE的AccessMask的第24位置1,通过微软文档可以得知,不管成功与否,当前的访问都是会被审计的。
0x03 WinDBG
可以通过WinDBG来观察到已经被保护的System Token,先得到安全描述符。
然后交给WinDBG来进行解析。
0x04 参考文章
1.https://www.php.cn/link/f0e74f09295841e202946abdc1829518
2.https://www.php.cn/link/4c3c33b9115db0a66cd40a5465974ed6
3.https://www.php.cn/link/2910d1ad8c41edfda403263d973b0ae1
4.https://www.php.cn/link/fd5323cdf77a30f8ccc4f468be401563
5.https://www.php.cn/link/6b542509805b2618d880d79d813a51e9
6.https://www.php.cn/link/a11bda17f8522e39a9bcf3cad3794341
7.https://www.php.cn/link/9e04a739ebd144fa784a334e6365bdc1
8.https://www.php.cn/link/c933697660243185652bf51a75f9001a
9.https://www.php.cn/link/648e9e6a126696bd6f0eaf62b2b222b0
10.https://www.php.cn/link/ef7db75e56ef7972af70c3900d2174fa
11.https://www.php.cn/link/4c3c33b9115db0a66cd40a5465974ed60
12.https://www.php.cn/link/4c3c33b9115db0a66cd40a5465974ed61
以上就是Windows原理深入学习系列-信任等级检查的详细内容,更多请关注其它相关文章!
# git
# access
# win10
# 如果没有
# 都是
# 这是
# 错误代码
# 就会
# 是有
# windows
# 是从
# 网站推广短语大全
# 宁夏网站建设大概收费
# 现代营销推广特点
# 长沙网站有哪些推广
# seo痛点
# 梅州网站优化服务
# 微软
# 还会
# 就不
# 辽宁海外营销推广
# 龙华网站建设方法
# 黄石品牌网站优化哪里好
# 泰州新网站如何优化推广
相关栏目:
【
企业资讯168 】
【
行业动态50218 】
【
媒体报道120512 】
相关推荐:
命令控制台如何执行sql文件
折叠屏手机哪个卖得最好
交管12123协议头不完整是什么原因
学typescript需要多久
如何卸载typescript
2025年哪个局域网聊天软件好用
新装固态硬盘如何安装
如何winpe cmd命令
typescript中文怎么读
如何安装m.2固态硬盘
hive中datediff函数怎么用 Hive中DATEDIFF函数的使用指南
怎么打印数组j*a
夸克是什么用途
如何查询固态硬盘寿命
8英寸等于多少厘米
8800日元等于多少人民币
为什么要出折叠屏手机
主板如何禁用固态硬盘
征信信用不好如何恢复 征信信用不好如何恢复指南
linux命令如何换行
gs是什么意思
meet是什么意思
j*a如何运行curl命令行
苹果16都有哪些型号
硬件如何执行命令
1tb等于多少mb
对应市盈率是30X是什么意思
新网站如何填写域名解析
单片机怎么进行排序操作
vivo手机爱奇艺怎么投屏到电视操作步骤
make命令如何使用
如何看固态硬盘型号
咋免费领取爱奇艺会员 如何免费领取爱奇艺会员步骤
春运抢票需要抢几天
如何选购ssd固态硬盘
阿里云盘扩容是什么_扩容阿里云盘方法是什么教程
交管12123协议头不完整怎么解决
台机如何安装固态硬盘
市盈率tt的扣非是什么意思
企业征信不好如何恢复 企业征信不好怎么恢复步骤
美食音乐每日推荐怎么写
如何安装固态硬盘win10
苹果16有哪些变化尺寸
新找到ao3镜像网站链接入口
python 如何执行linux命令
type-c接口接地是什么意思
如何在一串数字前面去掉四位数的命令
如何在命令行写j*a程序
j*a数组怎么保存类
苹果16系统有哪些改变


