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

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

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

本文作者:盆盆

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

技术难度:Level 300

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

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

术语概述

登录权利定义了用户帐户是否能够从键盘(控制台)、网络、远程桌面登录系统(仅限于Windows XP),或者是否能够作为服务和批处理作业登录系统,每种登录方法对应一对登录权利(拒绝登录和允许登录)。在默认情况,Windows XP/2000并没有给任何管理员组的成员帐户“显式”地分配登录权利,例如AdminPeter都是管理员帐户,Windows并没有给AdminPeter帐户分配任何登录权利,但是这两个帐户显然可以进行本地登录,这是因为Windows默认给Administrators组、Everyone组等帐户分配了相应的登录权利。

Windows XP一共有五对不同的登录权利(Windows 2000有四对登录权利),但是本文只讨论其中三对(六个)登录权利。代表这些登录权利的显示名称和字符常量如表1所示。

显示名称

字符常量

“拒绝”登录权利

拒绝本地登录

SeDenyInteractiveLogonRight

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

SeDenyNetworkLogonRight

通过终端服务拒绝登录(Win XP

SeRemoteInteractiveLogonRight

“允许”登录权利

在本地登录

SeInteractiveLogonRight

从网络访问此计算机

SeNetworkLogonRight

通过终端服务允许登录(Win XP

SeDenyRemoteInteractiveLogonRight

表1

提示 有关登录权利的更详细信息,可以到微软官方网站参考Windows XP Professional Resource Kit在线文档:

http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/Default.asp?url=/resources/documentation/Windows/XP/all/reskit/en-us/prnd_urs_wyxu.asp

实验步骤

和登录权利用户权利(包括和特权)有关的配置信息保存在HKLM\SECURITY注册表项里,对应%systemroot%\system32\config\security注册表配置单元文件。本部分将介绍如何利用实验分析六个登录权利所对应的注册表键值。

工具软件

本实验需要用到三个工具软件。借助Ntrights命令来更改某个帐户的登录权利设置,然后用Regmon工具来实时监测注册表的访问情况,以了解不同的登录权利所对应的注册表键值。

1Regmon(必须):实时监测注册表的访问情况

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

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

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

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

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

实验约定

如果没有做特别提示,本文所述的Windows XP一律指Windows XP Professional Service Pack 2,本文所述的Windows 2000一律是指Windows 2000 Professional Service Pack 4

为了方便描述,这里假设以Windows XP 计算机的管理员帐户Peter为例,通过赋予该帐户不同的登录权利,来了解注册表相应键值的对应变化。

注意事项

1)设置注册表权限

默认情况下,管理员组成员没有访问HKLM\SECURITY的权限,为了能够监测HKLM\SECURITY键值的变化,需要赋予管理员访问该注册表项的权限。

2)查看帐户的登录权利

实验分为六个步骤,每个步骤分别将一个登录权利赋予Peter帐户,然后查看相应的注册表键值变化。

为了确保各个步骤的实验结果不会互相干扰,每个步骤完成后需要将Peter帐户的登录权利恢复到默认设置。这里我们需要借助一个工具确认Peter帐户是否已经恢复到默认的登录权利设置。

遗憾的是,搜索了半天,也没有找到一个可以显示用户帐户的登录权利的命令行工具,whoami命令只能显示当前帐户的特权(Privilege),而不是登录权利。所以这里借助ShowPriv命令工具制作一个简陋的批处理文件ShowUserPriv.bat,来变相实现这个功能,该批处理的内容如下(请不要输入#号以后的注释):

ShowPriv SeDenyInteractiveLogonRight |find /i "%1" #查看是否具有拒绝本地登录的权利

ShowPriv SeDenyNetworkLogonRight |find /i "%1" #查看是否具有拒绝从网络访问这台计算机的权利

ShowPriv SeInteractiveLogonRight |find /i "%1" #查看是否具有在本地登录的权利

ShowPriv SeNetworkLogonRight |find /i "%1" #查看是否具有从网络访问此计算机的权利

要了解某个帐户的登录权利,直接将批处理文件拖曳到命令提示符下,然后在右侧加上要查询的帐户名称,例如可以是:

"C:\ShowUserPriv.bat" UserName

这里的UserName要用该帐户的名称代替,命令结果类似如下所示:

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:\> ShowUserPriv.bat peter

C:\>ShowPriv SeDenyInteractiveLogonRight | find /i "peter"

TESTXPP\peter

C:\>ShowPriv SeDenyNetworkLogonRight | find /i "peter"

C:\>ShowPriv SeInteractiveLogonRight | find /i "peter"

C:\>ShowPriv SeNetworkLogonRight | find /i "peter"

从命令结果中可以看出,Peter帐户当前具有“拒绝本地登录”的权利,这个批处理文件比较“弱智”,所以希望Script Guy们能够提供更好的脚本。

Peter帐户的默认登录权利应该是空,也就是说命令结果应该如下所示:

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:\> ShowUserPriv.bat peter

C:\>ShowPriv SeDenyInteractiveLogonRight | find /i "peter"

C:\>ShowPriv SeDenyNetworkLogonRight | find /i "peter"

C:\>ShowPriv SeInteractiveLogonRight | find /i "peter"

C:\>ShowPriv SeNetworkLogonRight | find /i "peter"

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

评论通知

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

订阅帖子评论使用 RSS

评论

2007年3月2日 19:49 by 深入研究Windows内部原理

# Windows Vista安全原理深入探索

在探索和学习Windows Vista的过程中,盆盆从《Windows Internals》一书中深受启发,本文虽然改写自盆盆以前的文章,但是绝非简单的改写,盆盆还特地加入了自己最新探索和学习到的一些知识,放在本专栏的开篇,就算是抛砖引玉吧。本文即将在《程序员》杂志上发表,谢绝转载。

说说您的看法?

(必填) 
必填 
(必填)