如何将nt authority\system身份切换至指定其他用户?
以下是几种实用的切换方式,可根据场景选择:
1. 使用系统自带runas命令
这是最基础的方式,适用于知晓目标用户明文密码的场景:
# 本地用户格式 runas /user:目标用户名 "cmd.exe" # 域用户格式(域名\用户名) runas /user:域名\目标用户名 "cmd.exe"
执行命令后会弹出密码输入窗口,输入目标用户密码即可打开该用户权限的命令行窗口,在新窗口执行whoami即可确认身份切换成功。
2. 使用psexec工具
若持有目标用户的明文密码或NTLM哈希,可直接用psexec启动目标用户权限的进程(无需交互式输入密码):
# 使用明文密码 psexec -u 目标用户名 -p 明文密码 -i cmd.exe # 使用NTLM哈希(LM哈希为空时用::代替,格式为::NTLM哈希值) psexec -u 目标用户名 -p ::NTLM哈希值 -i cmd.exe
参数-i用于让进程与当前桌面交互,多会话环境(如远程桌面)下可指定会话ID(用query session查看当前会话ID):
psexec -i 2 -u 目标用户名 -p 密码 cmd.exe
3. PowerShell脚本调用API
通过PowerShell调用Windows原生API创建指定用户进程,适合自动化场景:
$username = "目标用户名" # 替换为目标用户的明文密码 $password = ConvertTo-SecureString "目标用户密码" -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($username, $password) # 启动新的cmd窗口(去掉-NoNewWindow会打开独立新窗口) Start-Process cmd.exe -Credential $cred -NoNewWindow -Wait
执行脚本后,当前PowerShell会话会切换为目标用户权限,或打开新的目标用户权限窗口。
注意事项
- 确保目标用户拥有本地登录权限(域用户需额外配置该权限);
- 受限环境中优先尝试
runas命令,部分工具可能被安全策略拦截。
内容的提问来源于stack exchange,提问作者phuc van huu
相关产品推荐
相关产品推荐

