这是[信安成长计划]的第 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原理深入学习系列-特权的更多相关文章

  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原理深入学习系列-Windows内核提权

    这是[信安成长计划]的第 22 篇文章 0x00 目录 0x01 介绍 0x02 替换 Token 0x03 编辑 ACL 0x04 修改 Privileges 0x05 参考文章 继续纠正网上文章中 ...

  7. Git 之Windows环境下学习系列

    Git .SVN .TFS   相同点 不同点 Git     版本控制 优点: 分布式版本控制.无需联网就能版本提交 开源 缺点 入门学习难度高 SVN   优点: 集中式版本控制. 个人开源 缺点 ...

  8. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  9. 转:深入Java集合学习系列:HashSet的实现原理

    0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特 ...

随机推荐

  1. flask学习1

    总结 Flask Web 框架 轻量 websocket 全双工通讯 socket TCP 通讯 MongoDB 数据库 文件型数据库 {} 没有限制 和 约束 Mui + HTML5 Plus 调用 ...

  2. 《Effective TypeScript》条款22 - 类型收缩

    本文主要记录书中关于TypeScript类型收缩的内容 本文主要内容如下 类型收缩的一些方法 条件判断 抛错误 instanceof 和 in 属性检查 "标签联合"或" ...

  3. vivo 评论中台的流量及数据隔离实践

    一.背景 vivo评论中台通过提供评论发表.点赞.举报.自定义评论排序等通用能力,帮助前台业务快速搭建评论功能并提供评论运营能力,避免了前台业务的重复建设和数据孤岛问题.目前已有vivo短视频.viv ...

  4. Java 变量的声明及初始化

    格式: 数据类型 变量名字1 , 变量名字2 ,--变量名字n ; 案例: int i 声明了一个整形的变量. double d 声明了一个double数据类型的变量 float  f 声明了一个fl ...

  5. 取消a标签的默认行动(跳转到href)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. js 对象的深克隆

    前端笔试或者面试的时候,很喜欢问的一个问题就是对象的深度克隆,或者说是对象的深度复制.其实这个问题说容易很容易,但是要说全面也挺不易. 要弄明白对象的克隆,首先要明白js中对象的组成.在js中一切实例 ...

  7. 蟒蛇书学习笔记——Chapter 09 Section 01 创建和使用类

    9.1 创建和使用类 9.1.1 创建Dog类   根据Dog类创建的每个实例都将存储名字和年龄,我们赋予了每条小狗蹲下(sit( ))和打滚(roll_over( ))的能力: class Dog: ...

  8. apt安装zabbix

    下面介绍基于ubuntu18.04,使用apt在ubuntu安装zabbix 4.0.x版本.规划在10.0.0.101主机安装zabbix server,在10.0.0.104安装提供msyql服务 ...

  9. ajax请求egg用nginx转发跨域问题

    火狐浏览器报的 谷歌浏览器报的 前提: npm i egg-cors --save config 文件下的pulgin.js 已经添加 //启用跨域支持 exports.cors = { enable ...

  10. 06 前端之Bootstrap框架

    目录 前端之Bootstrap框架 一.简介 二.引入方式 本地引入(最完整的) CDN引入 三.布局容器 四.栅格系统 五.列偏移 六.表格与表单 6.1表格 6.2表单form 七.按钮 预定义样 ...