欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

实验探索六大登录权利所对应的注册表键值(三)

本文是登录权利探秘系列的第三部分,其他两个部分位于:
第一部分:
http://blogs.itecn.net/ahpeng/archive/2005/06/27/346.aspx
第二部分:http://blogs.itecn.net/ahpeng/archive/2005/06/27/350.aspx

本文作者:盆盆

适用场合:Windows 2000/XP工作组环境

技术难度:Level 300

版权声明:保留所有权利(若需转载、或登载本文,请发电子邮件至pen.aihua AT gmail.com

内容导读:本文用实验分析帐户的登录权利(Logon Right)所对应的注册表键值,并根据实验结论利用远程注册表来帮助解决诸如“拒绝本地登录”等疑难杂症。

?

实验小结

从实验结果表2~表7中可以得出这样的结论:

1)当给一个帐户“显式”定义登录权利时,会在HKLM\SECURITY\Policy\Accounts下创建一个UserSID注册表项,UserSID是该帐户的SID,可以用Psgetsid等命令工具确定。

2)登录权利和该UserSID注册表项下的ActSysAc子键所确定(与其“Default”键值有关)。该键值的结构比较简单,由四个字节的16进制数组成。这六个登录权利和HKLM\SECURITY\Policy\Accounts\UserSID\ActSysAc子键的“Default”键值的数值数据之间的对应关系如表8所示。

显示名称

字符常量

ActSysAc下的“Default”键值

“拒绝”登录权利

拒绝本地登录

SeDenyInteractiveLogonRight

40 00 00 00

拒绝从网络访问这台计算机

SeDenyNetworkLogonRight

80 00 00 00

通过终端服务拒绝登录

SeDenyRemoteInteractiveLogonRight

00 08 00 00

“允许”登录权利

在本地登录

SeInteractiveLogonRight

01 00 00 00

从网络访问此计算机

SeNetworkLogonRight

02 00 00 00

通过终端服务允许登录

SeRemoteInteractiveLogonRight

00 04 00 00

8 登录权利和ActSysAc子键的对应关系

3)进一步的实验发现,如果同时给该帐户赋予多个登录权利,则会将应的数值数据进行简单累加。

举个例子,如果给Peter帐户同时赋予“拒绝本地登录”、“拒绝从网络访问这台计算机”这两个登录权利,则HKLM\SECURITY\Policy\Accounts\UserSID\ActSysAc子键的“Default”键值的数值数据就是“c0 00 00 00(等于40 00 00 00加上80 00 00 00)。?另一个例子,如果给Peter帐户同时赋予“拒绝从网络访问这台计算机”、“在本地登录”这两个登录权利,则HKLM\SECURITY\Policy\Accounts\UserSID\ActSysAc子键的“Default”键值的数值数据就是“81 00 00 0080 00 00 00加上01 00 00 00)。

(4)对于管理员成员帐户来说,只需删除HKLM\SECURITY\Policy\Accounts\UserSID注册表项,即可将其登录权利恢复到默认值。
对于所有帐户来说,如果确认拥有某个登录权利,现在需要要清除该登录权利,只需将“Default”键值的数值数据减去表8中的该权利所对应的数值即可。举个例子,某个帐户的“Default”键值的数值数据为“81 00 00 00”,则可以确认该帐户拥有“在本地登录”的权利,所以要清除“在本地登录”权利,只需将“81 00 00 00”减去该权利所对应的“01 00 00 00”即可(结果等于“80 00 00 00”)。

5)对于Windows 2000进行相同实验,结果类似(仅针对本文所讨论的六个登录权利)。

6)由于Windows XP默认给Administrators组帐户“显式”赋予“在本地登录”、“从网络访问此计算机”和“通过终端服务允许登录”这三个登录权利,所以默认情况下Administrators组帐户的对应注册表键值HKLM\SECURITY\Policy\Accounts\S-1-5-32-544\ActSysAc存在,其“Default”键值的数值数据为“03 04 00 00

实例应用

了解了登录权利和注册表键值的对应关系,可以用来进行一些很有趣、也很实用的操作。

工具软件

本部分需要涉及到以下三个工具软件:

1Ntrights(必须):设置帐户的登录权利,Windows 2003 Resource Kit Tools

http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd

2ShowPriv(可选):显示包含特定权利的用户帐户,Windows 2003 Resource Kit Tools

http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd

3Psgetsid(可选):了解用户帐户名称和SID的相互对应关系。

http://www.sysinternals.com/Utilities/Psgetsid.html

拒绝Administrators本地登录的权利(Windows XP Professional

Windows 2000不同,在Windows XP下,不能对Administrators组帐户设置“拒绝本地登录”的登录权利,也不能对所有的管理员帐户设置“拒绝本地登录”的登录权利。但是有时候我们可能需要禁止Administrators本地登录,例如这是一台公用的计算机,不希望有管理员可以进行本地登录(管理维护的时候,可以通过远程桌面进行),可以采用以下两种方法:

1)在命令提示符下运行以下命令,即可给Administrators组帐户赋予“拒绝本地登录”的登录权利:

Ntrights –u Administrators +r SeDenyInteractiveLogonRight

无需重启或者注销计算机,登录权利立即生效。

2)也可以直接修改注册表,打开注册表编辑器,定位到如下注册表分支:

HKLM\SECURITY\Policy\Accounts\S-1-5-32-544\ActSysAc

ActSysAc子键的“Default”键值的数值数据修改为“4* ** ** **”(*位的数值保持不变)。

重启或者注销计算机,登录权利即可生效。

Windows XP Home Edition指定登录权利

由于Windows XP Home Edition无法通过修改本地安全策略指定帐户的登录权利,但是我们照样可以达到目的。举两个例子。

1)假设要禁止Windows XP Home Edition的管理员帐户Peter本地登录,可以在命令提示符下运行以下命令:

Ntrights –u Peter +r SeDenyInteractiveLogonRight

注意 由于默认情况下管理员帐户没有“显式”分配登录权利,所以Peter帐户没有对应的UserSID注册表项,不能通过修改注册表来实现目的。

2)要给Administrators组帐户设置“拒绝本地登录”的的登录权利,和Windows XP Professional的方法完全一样,可以借助Ntrights命令或者修改注册表的方法来实现。

Administrators组帐户禁止本地登录,如何恢复?

如果不小心在Windows 2000/XP下设置禁止Administrators本地登录,恢复起来不外乎两类方法,一类是在本地计算机上进行操作,另一类是借助网络计算机进行操作。

为了方便描述,这里假设故障计算机的计算机名为Test

1.在本地计算机上进行操作

1)故障恢复控制台

进入故障恢复控制台,将“%systemroot%\repair\security”文件覆盖“%systemroot%\system32\config\security”文件。“%systemroot%\repair\security”是Windows 2000/XP初始安装时的注册表安全配置单元文件,可以将所有帐户的登录权利恢复到初始安装的状态。

2)替换secedit.sdb

登录权利的设置信息除了存放在注册表里之外,也存放在安全数据库%systemroot%\security\Database\secedit.sdb里,所以可以用一台正常计算机的secedit.sdb文件替换即可(可以借助Windows Me启动盘+NTFSDOS Pro软盘访问故障计算机,进行修复)。

2.借助网络计算机进行操作

要能够借助网络计算机进行修复,故障计算机最起码要满足以下条件:

防火墙正确配置

Windows XP帐户的密码非空(禁止空密码网络登录)

该帐户和所属的组都没有设置“拒绝从网络访问访问这台计算机”的登录权利

该帐户或者所属的组具有“允许从网络访问这台计算机”的登录权利

Remote Registry”服务必须已经启动(如果采用注册表恢复)

1)远程注册表修改键值

首先在命令提示符下运行以下命令:

net use \\RemoteComputerName\ipc$ Password /user: RemoteComputer\UserName

然后建立到故障计算机的空连接,以便客户端能够拿到远程故障计算机的帐户凭据。

远程连接注册表,获取HKEY_LOCAL_MACHINE\SECURITY权限

定位到以下注册表子键,确保将其“Default”键值的数值数据修改为“0* ** ** **”(*位的数值保持不变):

HKEY_LOCAL_MACHINE\SECURITY\Policy\Accounts\S-1-5-32-544\ActSysAc

重启Test计算机即可。

2)远程运行Ntrights命令

在命令提示符下运行以下命令:

Ntrights –m \\Test –u Administrators –r SeDenyInteractiveLogonRight

3)能否Telnet故障计算机,利用secedit命令导入安全模板等方法进行恢复?

不能,因为Telnet等同于本机登录,系统会提示拒绝登录。

Administrators组帐户同时禁止本地登录和网络登录,如何恢复?

由于Administrators组帐户禁止网络登录,这就阻断了通过网络计算机进行修复的可能性,所以必须借助本地恢复的方法。

1)进入故障恢复控制台,将“%systemroot%\repair\security”文件覆盖“%systemroot%\system32\config\security”文件。

2)也可以借助Windows Me启动盘+NTFSDOS Pro软盘访问故障计算机的启动分区,复制出其下的“%systemroot%\system32\config\security”文件,然后在一台正常的计算机上加载该security配置单元,进行修改以后,重新复制回原来的路径即可。

已发表 2005年6月27日 5:41 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2005年7月17日 20:59 by ahpeng

# re: 实验探索六大登录权利所对应的注册表键值(三)

请问大侠,覆盖是怎么完成?
2005年7月30日 10:44 by ahpeng

# re: 实验探索六大登录权利所对应的注册表键值(三)

进入故障恢复控制台后,用copy命令即可
2008年10月30日 8:51 by tanwlwl

# re: 实验探索六大登录权利所对应的注册表键值(三)

太强了

不过你的这个链接有点错误

本文是登录权利探秘系列的第三部分,其他两个部分位于:

第一部分:http://blogs.itecn.net/ahpeng/archive/2005/06/27/346.aspx

第二部分:http://blogs.itecn.net/ahpeng/archive/2005/06/27/350.aspx

2008年10月30日 8:51 by tanwlwl

# re: 实验探索六大登录权利所对应的注册表键值(三)

太强了

不过你的这个链接有点错误

本文是登录权利探秘系列的第三部分,其他两个部分位于:

第一部分:http://blogs.itecn.net/ahpeng/archive/2005/06/27/346.aspx

第二部分:http://blogs.itecn.net/ahpeng/archive/2005/06/27/350.aspx

说说您的看法?

(必填) 
必填 
(必填)