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

2022/3/12 7:14:56

本文主要是介绍Windows原理深入学习系列-特权,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

0x00 目录

0x01 介绍

0x02 结构分析

0x03 进程注入测试

0x04 参考文章

0x01 介绍

在 Token 当中还存在一个特别重要的内容——Privileges,它也是权限检查中的一个,当用户去执行一些特权操作的时候,会检查这个位置,看是否有执行的权限。

通过滥用一些特权指令,可以达到权限提升等目的,最常见的一个特权就是 SeDebugPrivilege,除此之外,还有很多的特权

图片

这些权限都可以通过 AdjustTokenPrivileges 来提升权限,代码可以参考微软给的例子

https://docs.microsoft.com/en-us/windows/win32/secauthz/enabling-and-disabling-privileges-in-c--

可以在命令行中查看当前所拥有的特权

图片

其中 SeChangeNotifyPrivilege 是默认会启用的一个特权,即使是 Low 完整性等级的也会有这个特权

图片

0x02 结构分析

可以在 Windbg 当中查看到一下,就用刚刚启动的 cmd-low.exe 来进行

查看它的 TOKEN 结构

图片

可以看到在 0x40 的位置就是 Privileges,继续看它的结构

图片

这三个值的每一位都代表着一个权限,我们重点要看的是 Present 和 Enabled,Present 决定了哪些位是当前可以用,Enabled 则决定了是否启用

可以看到当前是有五个权限位的,在根据上面的 Enabled 可以知道,只有一个权限位是打开的

图片

那这每一位到底代表着什么特权,我没有在微软的文档中找到描述,但是在 Windbg 中找到了另外的方案

我们使用 !token 命令让 Windbg 自己解析一下,可以看到有五个权限位,并且只有一个是启用的,数位数也刚好与上面所解析到的一致

图片

既然通过这样的方法可以知道位置和对应的权限,那么就可以通过全部启用,然后再让 Windbg 来进行解析,就可以得到所有的权限位了

图片

然后就可以看到所有的权限位和对应的权限了

图片

在查资料的时候,还发现了一个情况,在 AdjustTokenPrivileges 的时候,会进行额外的检查,所能启用的权限与进程的完整性挂钩了

图片

文章我贴到最后的参考链接当中

0x03 进程注入测试

在正常情况下,我们当前作为低完整性等级是不能够注入高完整性等级的进程的,在之前的文章中也已经测试过了

图片

在 OpenProcess 的时候就直接出问题了,这是符合我们的预期的

图片

但是在 OpenProcess 当中还有这样的一句话,如果给了 SeDebugPrivilege 权限,那么就会直接授予

图片

这里为了方便起见,直接使用 Windbg 来进行修改

图片

可以看到确实启用了

图片

然后再进行注入,可以发现成功了

图片

如果将其注入到 winlogon 进程当中,再创建一个 cmd,因为继承关系,我们也就拥有了 system 权限

图片

0x04 参考文章

1.https://docs.microsoft.com/en-us/windows/win32/secbp/changing-privileges-in-a-token

2.https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants

3.https://docs.microsoft.com/en-us/windows/win32/secauthz/enabling-and-disabling-privileges-in-c--

4.https://docs.microsoft.com/en-us/windows/win32/secauthz/privileges

5.https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/privilege-escalation-abusing-tokens

6.https://github.com/gtworek/Priv2Admin

7.http://showlinkroom.me/2020/05/02/Windows-Via-C-C-note-4-2/

8.https://paper.seebug.org/1743/

9.https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess



这篇关于Windows原理深入学习系列-特权的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程