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

0x00 目录

0x01 介绍

0x02 替换 Token

0x03 编辑 ACL

0x04 修改 Privileges

0x05 参考文章

继续纠正网上文章中那些奇怪的情况和问题

0x01 介绍

虽然主题是 Windows 内核提权,但实际上还是对之前文章的一个总结,这篇文章中所用到的东西全都是前几篇文章所提到的知识点,所有的操作都是之前文章中所讲述过的,以下所有的实验都是在 Win10_x64_20H2 上进行的。

0x02 替换 Token

主要原理就是将 System 进程的 Token 替换到我们当前进程的 Token 中

先新起一个 cmd,可以看到当前是普通用户

根据之前的方法找到 Token 位置所存储的值

让 Windbg 自己来解析一下是这样子的

之后以同样的方法取到 System 进程的 Token 位置的内容

可以看到 User 是 S-1-5-18,代表了当前就是 System 账户

然后进行 Token 的替换

再回来执行一下 whoami 可以看到权限已经是 System 权限了

0x03 编辑 ACL

在之前分析 ACL 的时候,我们提到过,如果安全描述符中没有 DACL,即 DACL 为 NULL,Windows 会允许任何用户的完全访问权限。

如果我们对 winlogon 进程的 ACL 进行修改,这样我们就可以用任意进程对其进行注入了,然后派生出来一个 System 权限的进程

首先查看 winlogon 进程的安全描述符

注意这里使用的结构是 _SECURITY_DESCRIPTOR_RELATIVE,而不是 _SECURITY_DESCRIPTOR

然后对其进行修改

可以发现,已经没有了 ACL 的验证,任何人都拥有所有权

然后来尝试注入一下,但是发现并没有成功

这是因为进程的完整性等级检查所导致的,接下来我们对我们自己的 Token 进行修改

在 TOKEN 当中有一个值 MandatoryPolicy,在微软文档中可以看到解释

我们当前的值是 3,然后将其改为 0

然后再次来进行注入,成功了,权限是 System

再插句题外话,在网上找到的资料都是直接干掉了安全描述符,将整个安全描述符都置 NULL 了,说是在低版本的时候还可以,在高版本 Windows 增加了判断的验证,直接修改的话会蓝屏。

这里他们选择直接抹安全描述符的操作我没有理解,按照微软文档所描述的,这些操作是对 DACL 有效的,为什么要直接干安全描述符呢?

所以,一定要自己查资料自己实践,一定要自己查资料自己实践,一定要自己查资料自己实践。

为了能够实现提权操作,就有了第二种方案,直接对 ACE 进行修改,对于查找等各种细节,我们在前面也分析过了,这里直接来进行操作

接下来对其进行修改

这样 SID 就从原来的 S-1-5-18 变成了 S-1-5-11

可以看到已经发生了变化

然后对当前进程的 Token 进行修改

接着再来进行注入,可以发现已经是 System 权限了

0x04 修改 Privileges

其实这个操作在上一篇文章中也已经用到过了

先取出来 System 的 Privileges

再取出我们当前的 cmd 进程的 Privileges

然后将 System 的权限位都直接替换到我们的上面

在修改完成后可以看到权限都已经有了

可以看到有 SeDebugPrivilege 的权限,所以就跟上一篇文章中所提到的是一样的了,可以来注入 winlogon 进程来获得 System 权限

0x05 参考文章

1.https://mp.weixin.qq.com/s/s_3fQYe9rHLYaOuXUqJCgg

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

3.https://docs.microsoft.com/en-us/windows/win32/secauthz/access-control-lists

Windows原理深入学习系列-Windows内核提权的更多相关文章

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

    这是[信安成长计划]的第 23 篇文章 0x00 目录 0x01 介绍 0x02 逆向分析 Win10_x64_20H2 0x03 WinDBG 0x04 参考文章 在之前的时候,一直以为 SACL ...

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

    这是[信安成长计划]的第 24 篇文章 0x00 目录 0x01 介绍 0x02 逆向分析 Win10_x64_20H2 0x03 总结 0x04 参考文章 最近因为一些事情,拖更了三个周,大家见谅啊 ...

  3. Windows原理深入学习系列-强制完整性控制

    欢迎关注微信公众号:[信安成长计划] 0x00 目录 0x01 介绍 0x02 完整性等级 0x03 文件读取测试 0x04 进程注入测试 0x05 原理分析 Win10_x64_20H2 0x06 ...

  4. Windows原理深入学习系列-访问控制列表

    这是[信安成长计划]的第 19 篇文章 0x00 目录 0x01 介绍 0x02 DACL 0x03 创建DACL 0x04 文件读取测试 0x05 进程注入测试 0x06 原理分析 Win10_x6 ...

  5. Windows原理深入学习系列-访问控制列表-关于安全描述符的补充

    这是[信安成长计划]的第 20 篇文章 0x00 目录 0x01 安全描述符的结构 0x02 两个结构的不同点 0x03 真正的查询方案 0x04 参考文章 0x01 安全描述符的结构 在上一篇文章中 ...

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

    这是[信安成长计划]的第 21 篇文章 0x00 目录 0x01 介绍 0x02 结构分析 0x03 进程注入测试 0x04 参考文章 0x01 介绍 在 Token 当中还存在一个特别重要的内容-- ...

  7. 2018-2019-2 20165215《网络对抗技术》Exp10 Final Windows本地内核提权+Exploit-Exercises Nebula学习与实践

    目录 PART ONE :Windows本地内核提权 漏洞概述 漏洞原理 漏洞复现 windbg调试本地内核 查看SSDT表和SSDTShadow表 查看窗口站结构体信息 利用Poc验证漏洞 漏洞利用 ...

  8. msf利用- windows内核提权漏洞

    windows内核提权漏洞 环境: Kali Linux(攻击机) 192.168.190.141 Windows2003SP2(靶机) 192.168.190.147 0x01寻找可利用的exp 实 ...

  9. 9.CVE-2016-5195(脏牛)内核提权漏洞分析

    漏洞描述: 漏洞编号:CVE-2016-5195 漏洞名称:脏牛(Dirty COW) 漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权 影响范围:Linux内核>=2 ...

随机推荐

  1. 腾讯QQ是用什么语言写的?

    腾讯QQ的开发分客户端软件和服务器端软件两部分. 客户端采用 Microsoft Visual C++开发:  服务器端软件采用Linux gcc开发 :  数据库采用MySql 数据库.  腾讯QQ ...

  2. LVS负载均衡群集部署——NAT模式

    LVS负载均衡群集部署--NAT模式 1.群集应用概述 2.NAT模式LVS负载均衡群集部署 1.群集应用概述: 存在的问题: 互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求 ...

  3. 使用Docker安装ElasticSearch和可视化界面Kibana【图文教学】

    一.前言 Elasticsearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的,并 ...

  4. 对已有的docker容器增加新的端口映射

    一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...

  5. Feign 动态URL 解决记录

    Feign中使用动态URL请求 (应当是spring-cloud-starter-openfeign,不知道和一般的feign有何差别) 在spring项目下,假设有这样个Feign的消费接口,原来写 ...

  6. 关于sys.path.append()

    当我们导入一个模块时:import  xxx,默认情况下python解析器会搜索当前目录.已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中: >>> import  ...

  7. Solution -「LOCAL」客星璀璨之夜

    \(\mathcal{Description}\)   OurOJ.   给定坐标轴上的 \(2n+1\) 个坐标 \(x_1,x_2,\cdots,x_{2n+1}\),其中偶数下标的位置是一个小球 ...

  8. 深入MySQL(一):MySQL的组织架构

    今天开始将自己所学过的MySQL的知识都尝试融会贯通,并且用写博客的方式记录分享下来. 今天讲的主题是MySQL的组织架构,对于学习一个中间件或者开源项目而言,我觉得最重要的便是先知晓其组织架构,以一 ...

  9. web开发 小方法2-字体设置

    font-size 字体大小 直接给  (任意px) 就可以 font-family:"微软雅黑";   这个里面可以给多个用空格区分 按照先后优先级使用 当没有第一个字体的时候会 ...

  10. 1. 堪比JMeter的.Net压测工具 - Crank 入门篇

    目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...