宿州航科中等专业学校 安徽省教育网 | 宿州市教体局 | 保全世纪 | 汉源科技 |

招生专栏
联系我们
招生老师:
招生老师:
招生老师:
招生老师:
招生老师:
0557-5121966
当前位置: 主页 > 教育教学 > 教学资源 >
 课程编写
类别 内容
实验课题名称 安全登陆
实验目的与要求 1.  掌握windows 2000/NT的登陆及身份认证过程。
2.  理解SID,访问令牌,SAM的含义
3.  掌握查看用户SID的方法
4.  掌握创建一个具有管理员权限的隐藏账户的方法
实验环境 VPC1(虚拟PC) 操作系统类型:windows 2003,网络接口:本地连接
VPC1 连接要求 PC 网络接口,本地连接与实验网络直连
软件描述 1、学生机要求安装java环境
2、vpc安装Windows 2003
实验环境描述 1、 学生机与实验室网络直连;
2、 VPC1与实验室网络直连;
3、 学生机与VPC1物理链路连通;
 
预备知识 1.  登录及身份认证过程
Windows 2000必须确定自己是否在与合法的安全主体(即合法的用户)打交道,这是通过认证实现的,其中最简单的例子就是用户的登录及身份认证过程。一个成功的windows登录过程要经过以下4个步骤。
 
windows登录以及身份认证过程
1. 用户按Ctrl+Alt+Del组合键,引起硬件中断,被系统捕获,这样使操作系统激活winLogon进程(这是一个登录进程)。WinLogon进程通过调用标识与鉴别DLL,将登录窗口(帐号名和口令登录提示符)展示在用户面前,要求用户输入一个用户名和口令。
2. WinLogon将用户和口令传递给本地安全认证(Local Security Authority,LSA)
3. LSA查询安全帐号管理器(Security Account Manager,SAM)数据库,以确定用户名和口令是否属于授权的系统用户。如果用户名和密码合法,SAM把该用户的SID以及该用户所属的所有组的SID返回给LSA。LSA使用这些信息创建一个访问令牌(Access Token),每当用户请求访问一个受保护资源时,LSA就会将访问令牌显示出来以代替用户的“标记”。
4. WinLogon进程传送访问令牌到Win32模块,同时发出一个请求,以便为用户建立登录进程。登录进程建立用户环境,包括启动Desktop Explorer和现实背景等。
2.  SID
SID(Security Identifiers,安全标识符)用于在系统中唯一标识对象,在对象创建时由系统分配,包括域的SID或RID(Relative Identifier,相对标识符)。原理上如果帐户无限制增加的时候,会产生同样的SID,但是通常情况下SID是唯一的。这种唯一性是由创建时的计算机名,系统时间,进程所消耗CPU的时间三要素共同确保的。
Windows 系统中的内部进程将引用帐户的SID而不是帐户的用户名或组名。如果创建一个帐户,再删除该帐户,那么即使再添加一个相同名称的帐户,这个新帐户也不会继承原帐户的权限,权利与组的关系,因为它们具有不同的SID,但是重命名一个帐户,既将该帐户改名,由于SID并没有改变,因此其账户的属性,权限设置与组关系都不会影响。
3.  SAM
SAM(Security Account Manager,安全账号管理器)是控制和维护安全账号管理数据库,既SAM数据库的安全组件。该数据库包含所有账户和组的账号信息,包括密码HASH,账户的SID等。安全账号管理器提供用户登录认证,负责对用户输入的信息与SAM数据库的信息对比,并为用户赋予一个SID。
SAM数据库位于注册表HKLM\SAM\SAM下,受到ACL保护,可以使用regedt.exe打开注册表编辑器,通过设置适当权限来查看SAM中的内容。SAM数据库在磁盘上就保存在%systemroot%system32\config目录下的sam文件中,在这个目录下还包括一个security文件,是安全数据库的内容,两者密切相关。
4.  访问令牌
用户通过验证后,登录进程会给用户一个访问令牌(Access Token),该令牌相当于用户访问系统资源的凭证,它包括用户和这个用户属于的所有组的SID。当用户试图访问系统资源时,将访问令牌提供给windows,然后windows检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,windows将会分配给用户适当的访问权限。
访问令牌是用户在通过验证的时候有登录进程所提供的,所以改变用户的权限需要注销后重新登录,重新获取访问令牌。
 
实验内容 1.  演示如何查看管理员用户的SID号。
2.  演示如何创建一个新的普通用户,并通过查看该用户的SID号来分析管理员帐号与普通帐号的区别。
3.  通过如何通过注册表操作来创建一个具有管理员权限的隐藏帐号。
实验步骤 l  点击windows2003的“打开控制台”,这样我们进入到了windows2003登录页面。输入密码123456,即可进入到实验环境页面。
 
1.查看管理员用户的SID
可以使用whoami这样的工具(包含在windows 2000 Resource Kit中)来查看与登录会话相关的SID。具体做法是:
(1)   在桌面上单击“开始” – “运行”命令,在弹出的“运行”对话框中输入cmd,然后单击“确定”按钮,会打开命令提示符窗口。
(2)   在闪烁的光标处输入whoami/?命令,查看命令的所有功能。
(3)   输入whoami/user命令,可查看用户的SID。
 
查看管理员用户的 SID
输入whoami/user命令后,可以查看到用户名为administrator的用户的SID为S-1-5-21-1886953275-3886242891-283490650-500。从此可以看到SID带有前缀S,它的各个部分之间用连字符隔3开。第一个数字(本实验中的1)是修订版本号;第二个数字是标识符颁发机构代码(对windows 2003来说总是5);然后是4个子颁发机构代码(本例中是21和后续的3个长数字串)和一个相对标识符(Eelative IdenTifier,RID,本实验中是500)。SID中的一部分是各系统或域唯一具有的,而另一部分(RID)是跨所有系统和域共享的。当然安装windows 2003时,本地计算机会颁发一个随机的SID。类似的当创建一个windows 2003 域时,它也被指定一个唯一的SID。于是对任何的windows 2003计算机或域来说,子颁发机构代码总是唯一的(除非故意修改或复制,例如某些底层的磁盘复制技术)。RID对所有的计算机或域来说都是一个常数。例如,带有RID 500的SID总是代表本地计算机的真正administrator帐户,RID 501是Guest帐户。
2.  查看新建用户的SID
(1) 在命令提示符窗口的闪烁标处输入net user tuser/add命令,添加用户名为Tuser的新用户。
 
添加用户tuser
(2) 用户新建成功后,注销管理员用户,以tuser用户的身份重新登录windows。
(3) 重新打开命令行窗口,在命令提示符窗口的闪烁光标处再次输入whoami /user命令,可以看到用户名和用户SID都改变了。用户名tuser(用户名的大小写无关)。由此可以看出用户tuser的RID与administrator的RID不同。在域中,从1000开始的RID代表用户帐户。
 
 查看用户tuser的SID
(例如,本实验中RID是该域中创建的第9位用户),windows 2000(或者使用适当工具的恶意黑客)总是将具有RID 500的帐户识别为管理员。
3.  创建一个具有管理员权限的隐藏账户
在前面的预备知识中已经大致介绍了SAM和SID的相关知识,利用这些知识我们来创建一个具有管理员权限的隐藏账户,必要时将对SAM数据库做进一步阐述。
1. 打开注册表
(1) 注销tuser用户,以用户administrator的身份重新登录windows操作系统。
(2) 在桌面上单击“开始”-“运行”命令,在弹出的对话框中输入regedit命令,然后单击“确定按钮”,打开注册表。
给出完全控制权限:
 
 
2、重新打开一次regedit,然后在HKLM\SAM\SAM\domains\account\下找到用户administrator和tuser,所示
 
注册表编辑器窗口
        SAM数据库位于注册表HKLM\SAM\SAM下,受到ACL保护,它在磁盘上保存在”%systemroot%system32\config\”目录下的sam文件中。在\Domains\中的为域(或本机)中的SAM内容,其下有两个分支“Account”和”Builtin”,其中\Domains\Account是用户帐号内容:
l  \Domains\Account\User下是各帐号的信息,其下的子键机是各个帐号的SID相对标识符。比如000001F4是管理员RID
l  \Domains\Account\Names\下是用户帐号名,每个帐号名只有一个默认的子项,项中类型不是一般的注册表数据类型,而是指向标志这个帐号的SID相对标识符,比如其下的administrator,类型为0x1f4,于是\Dinaubs\Account\Users中的000001F4就对应帐户名Administrator的内容,再例如本实验中的tuser,类型为0x3f2,于是\Domains\Account\User中的000003F2就对应着帐户名administrator的内容,次类推。
 值得注意的地方是:默认情况下管理员无法直接访问SAM数据库,要查看它使用RegEdt32修改SAM访问权限,或者使用psu,wsu启动system权限的regedit。因此本实验中的SAM也必须赋予完全控制权限。具体操作过程是:在注册表编辑器窗口中右键单击SAM文件夹下的SAM子文件夹,在弹出的跨界菜单中选择“权限”命令,在弹出的”SAM权限”对话框中,选择Administrator用户,在它的权限列表中,选中“完全控制”的“允许”复选框。
 
 为SAM赋予完全控制权限
2.复制F项
  上一小节中提到:\Domains\Account\User下存放着各种帐号的信息,其中每个帐号下面有两个子项,F项和V项。
         项目V中保存的是帐户的基本资料,用户名,用户全名(full name),所属组,描述,密码hash,注释,是否可以更改密码,帐户启用,密码设置时间等。
         项目F中保存的是一些登录记录,比如上次登录时间,错误登录次数等,还有一个重要的地方就是这个帐号的SID相对标识符。
  因此,要创建一个具有管理员权限的隐藏账户,就必须复制Administrator用户的F项内容到某一帐户。具体做法是:选中User文件夹下000001F4子文件夹(上一小节已经说明,这个子文件夹对应于Names文件夹下的tuser子文件夹)的F项中。
 
 
 复制F项中的内容
 
再次查看用户tuser的SID
3.查看修改后用户tuser的SID
注销Administrator用户,以用户tuser的身份重新登录windows操作系统。重复2中的操作,查看用户tuser的SID,所示。用户tuser的SID发生了变化,它的RID由1010变成了500,具有了管理员权限,至此用户tuser与管理员用户Administrator的SID变得完全一样了。
 
导出注册表的tuser子
 
 
4.  将tuser的注册表导出,在图形界面下删除tuser,然后倒入注册表
再次注销tuser用户,以用户administrator的身份重新登录windows操作系统。在桌面上单击“开始” – “运行”命令,在弹出的对话框中输入regedit命令,然后单击“确定”按钮,打开注册表。在HKLM/SAM/SAM/domains/account/下找到用户tuser用户,分别将它在Names下的子文件夹tuser和所对应的在user下的子文件夹000003F2导出,暂存到“我的文档”中,命名为1.reg和2.reg,具体操作(以tuser字文件夹为例)。
 
导出注册表中的tuser子文件夹
   回到“桌面”,右键单击“我的电脑”,在弹出的快捷菜单中选择“管理”命令,在“计算机管理”窗口中单击“本地用户和组”目录下的“用户”字文件夹,在右边窗口的用户列表中右击tuser用户,在弹出的快捷菜单中选择“删除”命令。
 
删除tuser用户
再次打开注册表后,会发现\Domains\Account\Name\下的子文件夹Tuser和所对应的在\Domains\Account\User下的子文件夹000003F2不可访问。
打开“我的文档”,将导出的注册表文件1.reg和2.reg双击导入注册表。再次打开注册表后,会发现\Domains\Account\Names下的子文件夹tuser和所对应的在\Domainsl\Account\User下的子文件夹000003F2可以访问。
 
在注册表中重新导入tuser用户的相应子文件夹
再次回到“桌面”,右键单击“我的电脑” – “管理” – “本地用户和组” – “用户”,却找不到用户tuser,至此一个隐藏的具有管理员权限的帐户就已经建立了。
 
 具有管理员权限的帐户就已经建立了
至此,可以看出,本实验之所以可以克隆一个具有管理员权限的用户,是因为SID的相对标识符RID在注册表中的一个帐号中出现了两遍,一个是在子键000001F4中,另一个地方就是键中F项的内容里面,从48到51的四个字节:F4010000,这实际上是一个long类型变量,也就是000001F4。当一个标识出现在两个地方的时候就将发生同步问题。显然,微软犯了这个毛病,两个变量本应该统一标识一个用户帐号,但是微软把两个变量分别发挥各自的作用,却没有同步统一起来,windows登录时,将从SAM中获得相对标识符,而这个相对标识符的位置是F值中的F4010000,但是,帐户信息查询却是使用SAM中Names子键的内容。
   需要指出的是,SAM HACK是非常有危险性的。不能正确的修改会将系统的安全数据管理器破坏,造成系统启动问题。