这是[信安成长计划]的第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_TRUST_LABEL_ACE_TYPE,具体操作这里就不详述了,之前已经分析过如何获取ACE,如何判断ACE类型等,详细内容可以参考《Windows原理深入学习系列-访问控制列表》。
找到后,还会进行一次判断,如果有效就直接返回,也就是找到了。
如果没有找到,从一开始就不跳转,直接返回零。
接下来回到主函数,如果没有找到就直接退出,这里假设已经找到了。
这里面还会涉及到一些其他的操作,暂时先不考虑这些内容,所以后面的一些跳转就省略不看了,这些操作也都是成对的,刚开始有申请,退出时有释放。
接下来会获取当前安全主体的上下文,用来与目标的安全等级进行对比,这里取出了Token,但有PrimaryToken和ClientToken之分。
根据后面的逻辑分析,如果没有ClientToken,就会直接用PrimaryToken进行比较,如果有的话,会先进行ClientToken比较,当PrimaryToken的TrustLevelSid大于ClientToken后,才会再进行PrimaryToken与目标等级的对比,否则就会使用ClientToken与目标等级进行对比。
但ClientToken是什么呢?猜测可能与Impersonation有关。
因为对于Token的描述就是有这两种。
在一些函数调用中,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原理深入学习系列-信任等级检查的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号