是否有Windows的SU版本


32

有没有办法(以管理员身份或以管理员组成员身份登录时)伪装成非特权用户?特别是在AD环境中。

例如,在Unix世界中,我可以(以root用户身份)执行以下操作:

# whoami
root
# su johnsmith
johnsmith> whoami
johnsmith
johnsmith> exit
# exit

我需要测试/配置用户帐户中的某些内容,并且我不想知道他们的密码或重置密码。

编辑:
runas不会削减。理想情况下,我的整个桌面将成为用户的桌面,而不仅仅是在cmd窗口中。


很好奇,但是为什么需要以用户身份登录?我通常只需要执行此操作即可配置电子邮件。但是,我发现大多数时候我可以通过组策略/脚本/等来配置所有内容。
代顿·布朗

Answers:


20

我敢肯定,没有该用户的凭据,就无法以其他用户身份运行该用户。这是一项不可抵赖的措施。有人不能说:“我没做”,因为他们要么做了,要么有人凭证书。第二,他们必须给对方凭据。

通常,当我以另一个用户身份登录时,我需要做的事情是使用远程协助从本质上将RDP插入会话,并让他们授予我控制权。然后,他们在看的时候我会做任何事情(大概是这样)。

使用GPO /脚本通常可以完成其他任何操作。


8
我相信这是正确的。而且,恕我直言,这是对UNIX世界的安全性改进。我喜欢这样的想法,即使没有管理员也无法成为我的管理员。
tomjedrz

3
管理员可以通过重置其密码来接管另一个用户。然后他们可以以您的身份登录。但是,如果执行此操作,则会发现证据。首先,用户密码已更改,以便他们知道。其次,将有审核日志(假设已启用审核)。
Erik Funkenbusch 09年

3
通常,这也是我的操作方式。但是,有一点我说“如果我是鲍勃,对鲍勃来说这样做会容易得多”,但是鲍勃一个小时前就回家了。
BIBD

1
就“不可否认”而言,让我首先重置其密码并不会阻止我以另一用户的身份进行恶意/愚蠢的行为。这只是意味着我必须做更多的工作来掩盖谁负责。
BIBD

9
我了解他们正在尝试做什么。我只是认为它比实际的安全性更安全。
BIBD,2009年

17

我注意到很多其他人提到了runas命令的变体以及您需要如何知道用户密码,这事实,但是我认为没有人安静地回答了这个问题。“想要整个桌面将成为用户的角色,而不仅仅是在cmd窗口中”。这是我的处理方式:

注意:为了避免混淆,我将第一个命令提示符称为CP1。

在您的管理员帐户下,打开“命令提示符”

对于本地帐户

runas /profile /user:computernamehere\username cmd

对于帐户

runas /profile /user:domainname\username cmd

我喜欢的方式

runas /profile /user:username@domainname cmd

注意:将打开一个新的命令提示符(CP2),这是您尝试登录的用户。

打开CP1,然后键入:

taskkill /f /IM explorer.exe

打开CP2,然后键入:

explorer.exe

如果计算机以前从未登录过,则可能会为用户创建配置文件,具体取决于计算机。您可以稍后通过保持打开命令提示符窗口以供以后使用来节省麻烦。

完成工作后,只需相反地做同样的事情即可。

在CP2中输入:

taskkill /f /IM explorer.exe

打开CP1,然后键入:

explorer.exe

您现在应该回到原始管理员帐户。您可以通过点击Windows键并查找当前用户面板来进行快速检查。

希望这会有所帮助。


3
那是一些深奥的魔力。
mskfisher 2015年

@mskfisher哈哈,如果您认为自己很疯狂,应该看看我该怎么做才能弄清楚如何在运行错误的wmic命令后杀死已锁定的psexec会话。...在第二个命令提示符下使用psservices在第一个命令提示符下跟踪psexec的进程ID 之后,指向远程计算机的pskill !
Michael H

好了,四年后,让我想起了这个问题以及何时有时间进行测试。哇!
BIBD

在Windows 10上,使用runas提示输入用户密码。
TheAmigo

7

Windows中没有内置的机制可以做到这一点。可以做到,但是您将必须编写一些文件来完成您想要的事情,并且您可能不得不混用未记录的API。

grawity是这里的发布者之一,可以通过调用CreateProcessAsUser()来实现,但是您首先需要使用未记录的本机API zwCreateToken创建令牌。如果您杀死了Explorer并使用CreateProcessAsUser()启动了一个新的Explorer实例,我相当确定您会想要的。

Microsoft并没有使您想做的事情变得容易,因为这不是他们希望您使用NT的方式。如果您需要以用户身份登录以解决他们的问题,那么在大多数情况下,您会以次佳的方式进行操作。

您可以在不登录的情况下更改用户的注册表(通过附加其注册表配置单元并以这种方式进行操作)。您可以更改用户配置文件中的文件,而无需以用户身份登录。如果您需要“以用户身份”“设置电子邮件”或其他此类活动,则应编写脚本或利用内置功能(组策略管理模板,首选项等)来替您完成工作。

如果必须这样做,请查看Code Project上的RunAsEx。该代码应该使您对需要做的事情有一个很好的了解。我没有尝试过该程序,但是看起来它正在以正确的方式处理所有事情。


5

您可以在Windows XP和更高版本上使用以下命令:

RunAs.exe

命令行选项在此处可用。

如果不知道用户密码,这将无法工作。我不相信Windows中有一种方法可以在没有密码的情况下在用户帐户下运行,这是因为安全标识符是如何加载的。


3
我相信RunAs程序仍然需要您知道用户的密码,而我认为原始问题不知道
Kevin Kuphal

你是正确的...我已经忘记了这一点。
Doug Luxem

2

(仅凭猜测。)如果您的帐户具有SeCreateTokenPrivilege,则可以编写一个小程序来使用CreateProcessAsUser()或类似功能创建一个流程...(但默认情况下,甚至管理员也没有特权。)


2

尽管我对本站点上提到的某些sudo解决方案没有经验,但我还是强烈建议由出色的Aaron Margosis开始的nonadmin。当您推出有限的用户时,这是一个巨大的帮助。我主要跳了一些东西,因为其他人都说要使用Runas。但是,我认为这些Windows所谓的sudo中的大多数或全部都与海拔高度有关,而不是充当没有密码的其他用户。


0

http://live.sysinternals.com上的Process Explorer procexp.exe 以受限用户身份运行(在文件菜单上),它使您可以使用当前的凭据运行程序,但将ACL简化为正常用户(非管理员)用户。不是您真正想要的,但是适合测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.