Windows原理深入学习系列-Windows内核提权
这是[信安成长计划]的第 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内核提权的更多相关文章
- Windows原理深入学习系列-信任等级检查
这是[信安成长计划]的第 23 篇文章 0x00 目录 0x01 介绍 0x02 逆向分析 Win10_x64_20H2 0x03 WinDBG 0x04 参考文章 在之前的时候,一直以为 SACL ...
- Windows原理深入学习系列-强制完整性检查
这是[信安成长计划]的第 24 篇文章 0x00 目录 0x01 介绍 0x02 逆向分析 Win10_x64_20H2 0x03 总结 0x04 参考文章 最近因为一些事情,拖更了三个周,大家见谅啊 ...
- Windows原理深入学习系列-强制完整性控制
欢迎关注微信公众号:[信安成长计划] 0x00 目录 0x01 介绍 0x02 完整性等级 0x03 文件读取测试 0x04 进程注入测试 0x05 原理分析 Win10_x64_20H2 0x06 ...
- 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 当中还存在一个特别重要的内容-- ...
- 2018-2019-2 20165215《网络对抗技术》Exp10 Final Windows本地内核提权+Exploit-Exercises Nebula学习与实践
目录 PART ONE :Windows本地内核提权 漏洞概述 漏洞原理 漏洞复现 windbg调试本地内核 查看SSDT表和SSDTShadow表 查看窗口站结构体信息 利用Poc验证漏洞 漏洞利用 ...
- msf利用- windows内核提权漏洞
windows内核提权漏洞 环境: Kali Linux(攻击机) 192.168.190.141 Windows2003SP2(靶机) 192.168.190.147 0x01寻找可利用的exp 实 ...
- 9.CVE-2016-5195(脏牛)内核提权漏洞分析
漏洞描述: 漏洞编号:CVE-2016-5195 漏洞名称:脏牛(Dirty COW) 漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权 影响范围:Linux内核>=2 ...
随机推荐
- SendMessage 键值
转载请注明来源:https://www.cnblogs.com/hookjc/ SendMessage(hWnd,WM_SETFOCUS,0,0); SendMessage(hWnd,WM_ACTIV ...
- CentOS 7 下编译安装 4.14 内核
文章目录 rpm升级 编译升级 升级前 下载安装包 编译内核 更新启动引导 修改默认启动内核 重启之后验证 rpm升级 # rpm的方式升级内核 1.载入内核公钥 [root@localhost ~] ...
- 深入分析CVE-2021-4034及漏洞复现
正向shell总结 一.winrm,http.sys(端口复用) 介绍 winrm WinRM全称是Windows Remote Management,是微软服务器硬件管理功能的一部分,能够对本地或远 ...
- Spring源码之BeanFactoryPostProcessor(后置处理器)
Spring源码之BeanFactoryPostProcessor(后置处理器). 有点水平的Spring开发人员想必都知道BeanFactoryPostProcessor也就是常说的后置管理器,这是 ...
- “百度杯”CTF比赛 九月场 类型:Web 题目名称:SQLi ---不需要逗号的注入技巧
今天在i春秋做题的时候遇到了一道非常好的题目,于是在参考了wp的基础上自己复现了一遍,算作一种技巧的学习与收藏吧. 题目i春秋连接:https://www.ichunqiu.com/battalion ...
- 4款BI工具功能大对比,这款BI工具你不能错过!
在这个信息爆炸式增长的时代,挖掘数据的潜在价值显得尤为重要.越来越多的人将目光聚集于商业智能领域--BI(Business Intelligence),通过数据分析软件对来自不同的数据源进行统一的处理 ...
- Zabbix 5.0:服务端进程总结
Blog:博客园 个人 参考:<深入理解Zabbix监控系统>.<Zabbix用户手册> Zabbix服务端进程被分为不同的种类,每一种进程负责相应的任务,包括收集原始监控数据 ...
- Linux添加永久路由的方法
通常我们使用route add -net添加临时路由.当系统重启,临时路由将丢失,重新配置路由带来了不必要的麻烦.可通过固化临时路由为永久路由的方法解决该问题. static-routes文件为路由固 ...
- iOS动态库和静态库的运用
概念认识 什么是库 库是共享程序代码的方式,库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.在开发过程中,一些核心技术或者常用框架,出于安全性和稳定性的考虑,不想被外界知道,所以会把 ...
- Qt:QSqlDatabase
0.说明 QSqlDatabase类处理与数据库连接相关的操作.一个QSqlDatabase实例就代表了一个连接,连接时要提供访问数据库的driver,driver继承自QSqlDriver. 通过静 ...