为何PSExec无需SeDebugPrivilege即可以SYSTEM权限启动进程?
SYSTEM权限进程提权相关问题解答
一、PSExec的提权逻辑
PSExec完全没用到SeDebugPrivilege那套令牌窃取的方法,它的核心玩法是创建临时系统服务:
- 当你执行
psexec -s <目标程序>这类命令时,PSExec会在目标机器上悄悄创建一个临时Windows服务,这个服务默认是以SYSTEM身份运行的 - 等服务启动后,它会调用你指定的程序,程序直接继承服务的SYSTEM权限
- 程序跑起来之后,PSExec会自动删掉这个临时服务
正因为走的是服务创建的路子,所以哪怕你的管理员账户被移除了SeDebugPrivilege,只要还能创建服务(管理员默认有这个权限),照样能用PSExec启动SYSTEM级别的进程。
二、不用SeDebugPrivilege的SYSTEM提权方法
除了PSExec的服务法,还有这些靠谱的方法:
1. 用任务计划程序
- 新建一个任务,在「安全选项」里选「不管用户是否登录都要运行」,然后把运行身份改成「SYSTEM」
- 可以设置任务立即执行,启动的程序就会拿到SYSTEM权限
2. 手动用sc命令建服务
直接用系统自带的sc命令创建服务,比如:
sc create TempSysSvc binPath= "C:\你要运行的程序路径.exe" obj= "LocalSystem" sc start TempSysSvc
程序启动后,记得删掉临时服务:sc delete TempSysSvc
3. 利用系统特殊机制(版本依赖)
比如早期Windows里的at命令(现在被任务计划取代了),可以直接以SYSTEM身份执行命令;还有部分旧系统的组件漏洞,能让低权限用户触发SYSTEM进程,但这类方法大多只在特定未打补丁的系统上有效。
三、两种提权思路的区别
用SeDebugPrivilege的常规方法,本质是偷现有SYSTEM进程的令牌来冒充,所以必须先有这个权限并启用;而服务、任务计划这类方法,是让系统直接以SYSTEM身份从零启动新进程,根本不需要碰令牌窃取,自然绕开了SeDebugPrivilege的限制。
内容的提问来源于stack exchange,提问作者user3365407
相关产品推荐
相关产品推荐

