从 Admin 权限切换到 System 权限

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

0x00 前言

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

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

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

学习链接:

https://blog.xpnsec.com/becoming-system/

0x01 简介

本文将要介绍以下内容:

· 通过创建服务获得 System 权限的方法

· 利用 MSIExec 获得 System 权限的方法

· 利用 token 复制获得 System 权限的方法

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

1、通过 sc 命令实现

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

该方法在 XP 系统可以使用

Win7 下使用时控制台提示:

警告 : 服务 TestService1 被配置为交互式服务,其支持正受到抨击。该服务可能无法正常起作用。

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

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

如下图

4、Meterpreter
参考 Meterpreter 的方法:

· 创建 system 权限的服务,提供一个命名管道

· 创建进程,连接到该命名管道

可供参考的代码:

https://github.com/xpn/getsystem-offline

需要 getsystem-offline.exe 和 getsystem_service.exe

测试如下图

注:
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,细节上做了部分修改,代码如下:

calc.exe invalid vbs to fail install

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

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

虽然报错,但不影响文件的生成和功能的执行
也就是说,完整编译命令如下:

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 AUTHORITYSYSTEM” cmd.exe

下载地址:

https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip

2、Invoke-TokenManipulation.ps1

Invoke-TokenManipulation -CreateProcess “cmd.exe” -Username “nt authoritysystem”

下载地址:

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

你可能感兴趣的:(系统,系统权限)