这是[信安成长计划]的第 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. eureka的简单介绍,eureka单节点版的实现?eureka的自我保护?eureka的AP性,和CP性?

    注意!!! 这是对上一篇博客 springcloud的延续,整个项目的搭建,来源与上一篇博客.一.什么是eureka? // eureka是一个注册中心,实现了dubbo中zookeeper的效果! ...

  2. Spring源码-IOC部分-Spring是如何解决Bean循环依赖的【6】

    实验环境:spring-framework-5.0.2.jdk8.gradle4.3.1 Spring源码-IOC部分-容器简介[1] Spring源码-IOC部分-容器初始化过程[2] Spring ...

  3. Python中列表操作函数append的浅拷贝问题

    L=int(input())#L位数N=int(input())#N进制row=[]list1=[]for i in range(1,N): row.append(1)list1.append(row ...

  4. 最大公因数与最小公倍数-gcd&lcm

    一.一些性质 \(gcd(a,b)=gcd(b,a)\) \(gcd(-a,b)=gcd(a,b)\) \(gcd(a,a)=|a|, gcd(a,0)=|a|\) \(gcd(a,1)=1\) \( ...

  5. 广播接收者案例_ip拨号器

    (1)定义一个类继承BroadCastReceiver public class OutGoingCallReceiver extends BroadcastReceiver { //当接收到外拨电话 ...

  6. [转]API性能测试基本性能指标及要求

    原文链接http://blog.csdn.net/strawbingo/article/details/46458959 指标的基本概念 1.事务(Transaction) 在web性能测试中,一个事 ...

  7. TreeMap或者HashMap中的entrySet()方法

    查看entrySet()源码 /** * Returns a {@link Set} view of the mappings contained in this map. * * <p> ...

  8. TCP的报文详细解读

    这张图好像挺有名的,其实一开始我看见的时候是一脸懵逼的,但是通过翻书(大学时代最害怕的计算机网络),查阅他人博客等等办法,最后终于有了一个系统的了解,当然,这里知识点多而杂,大家可以多看几遍,结合上面 ...

  9. windows server2012搭建邮箱服务器+客户端界面(hmailserver+afterlogic)+批量创建邮箱

    1.简介 由于需要较多邮箱,如果去注册需要很多的手机号码去验证,一个人不可能买一堆的手机号,所以自己搭建一个邮箱服务器可以大批量的创建自己的邮箱账号和收发邮件. 2.安装部署hmailserver 下 ...

  10. 框架3--backup结构(rsync复制指令)

    目录 框架3--备份结构(rsync复制指令) 一.3个复制指令 二.rsync介绍 三.rsync特性 四.rsync应用场景 4.1 全量备份 4.2 增量备份 五.rsync的传输方式(推+拉) ...