| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:详解Windows XP操作系统登录原理
只看楼主 加入收藏
kingarden
Rank: 2
等 级:论坛游民
威 望:1
帖 子:517
专家分:40
注 册:2004-12-8
收藏
 问题点数:0 回复次数:1 
详解Windows XP操作系统登录原理
平时我们在使用Windows XP时,总要先进行登录。Windows XP的登录验证机制比Windows 98严格很多,理解并掌握Windows XP的登录验证机制和原理对我们来说很重要,能增强对系统安全的认识,并能够有效预防、解决黑客和病毒的入侵。

  一、了解Windows XP的几种登录类型

  1.交互式登录

  交互式登录是我们平常登录时最常见的类型,就是用户通过相应的用户账号(User Account)和密码在本机进行登录。有些网友认为“交互式登录”就是“本地登录”,其实这是错误的。“交互式登录”还包括“域账号登录”,而“本地登录”仅限于“本地账号登录”。

  这里有必要提及的是,通过终端服务和远程桌面登录主机,可以看做“交互式登录”,其验证的原理是一样的。

  在交互式登录时,系统会首先检验登录的用户账号类型,是本地用户账号(Local User Account),还是域用户账号(Domain User Account),再采用相应的验证机制。因为不同的用户账号类型,其处理方法也不同。

  ◇本地用户账号

  采用本地用户账号登录,系统会通过存储在本机SAM数据库中的信息进行验证。所以也就是为什么Windows2000忘记Administrator密码时可以用删除SAM文件的方法来解决。不过对于Windows XP则不可以,可能是出于安全方面的考虑吧。用本地用户账号登录后,只能访问到具有访问权限的本地资源。(图1)
  

图1?
  ◇域用户账号
  采用域用户账号登录,系统则通过存储在域控制器的活动目录中的数据进行验证。如果该用户账号有效,则登录后可以访问到整个域中具有访问权限的资源。

  小提示:如果计算机加入域以后,登录对话框就会显示“登录到:”项目,可以从中选择登录到域还是登录到本机。

  2.网络登录

  如果计算机加入到工作组或域,当要访问其他计算机的资源时,就需要“网络登录”了。如图2,当要登录名称为Heelen的主机时,输入该主机的用户名称和密码后进行验证。这里需要提醒的是,输入的用户账号必须是对方主机上的,而非自己主机上的用户账号。因为进行网络登录时,用户账号的有效性是由受访主机控制的。
  

图2
  3.服务登录
  服务登录是一种特殊的登录方式。平时,系统启动服务和程序时,都是先以某些用户账号进行登录后运行的,这些用户账号可以是域用户账号、本地用户账号或SYSTEM账号。采用不同的用户账号登录,其对系统的访问、控制权限也不同,而且,用本地用户账号登录,只能访问到具有访问权限的本地资源,不能访问到其他计算机上的资源,这点和“交互式登录”类似。

  从图3的任务管理器中可以看到,系统的进程所使用的账号是不同的。当系统启动时,一些基与Win32的服务会被预先登录到系统上,从而实现对系统的访问和控制。运行Services.msc,可以设置这些服务。由于系统服务有着举足轻重的地位,一般都以SYSTEM账号登录,所以对系统有绝对的控制权限,因此很多病毒和木马也争着加入这个贵族体系中。除了SYSTEM,有些服务还以Local Service和Network Service这两个账号登录。而在系统初始化后,用户运行的一切程序都是以用户本身账号登录的。
  

图3?
  从上面讲到的原理不难看出,为什么很多电脑文章告诉一般用户,平时使用计算机时要以Users组的用户登录,因为即使运行了病毒、木马程序,由于受到登录用户账号相应的权限限制,最多也只能破坏属于用户本身的资源,而对维护系统安全和稳定性的重要信息无破坏性。
  4.批处理登录

  批处理登录一般用户很少用到,通常被执行批处理操作的程序所使用。在执行批处理登录时,所用账号要具有批处理工作的权利,否则不能进行登录。

  平常我们接触最多的是“交互式登录”,所以下面笔者将为大家详细讲解“交互式登录”的原理。

  二、交互式登录,系统用了哪些组件

  1.Winlogon.exe

  Winlogon.exe是“交互式登录”时最重要的组件,它是一个安全进程,负责如下工作:

  ◇加载其他登录组件。

  ◇提供同安全相关的用户操作图形界面,以便用户能进行登录或注销等相关操作。

  ◇根据需要,同GINA发送必要信息。

  2.GINA

  GINA的全称为“Graphical Identification and Authentication”--图形化识别和验证。它是几个动态数据库文件,被Winlogon.exe所调用,为其提供能够对用户身份进行识别和验证的函数,并将用户的账号和密码反馈给Winlogon.exe。在登录过程中,“欢迎屏幕”和“登录对话框”就是GINA显示的。

  一些主题设置软件,例如StyleXP,可以指定Winlogon.exe加载商家自己开发的GINA,从而提供不同的Windows XP的登录界面。由于这个可修改性,现在出现了盗取账号和密码的木马。

  一种是针对“欢迎屏幕”登录方式的木马,它模拟了Windows XP的欢迎界面。当用户输入密码后,就被木马程序所获取,而用户却全然不知。所以建议大家不要以欢迎屏幕来登录,且要设置“安全登录”。

  另一种是针对登录对话框的GINA木马,其原理是在登录时加载,以盗取用户的账号和密码,然后把这些信息保存到%systemroot%\system32下的WinEggDrop.dat中。该木马会屏蔽系统以“欢迎屏幕”方式登录和“用户切换”功能,也会屏蔽“Ctrl-Alt-Delete”的安全登录提示。

  用户也不用太担心被安装了GINA木马,笔者在这里提供解决方案给大家参考:

  ◇正所谓“解铃还需系铃人”,要查看自己电脑是否安装过GINA木马,可以下载一个GINA木马程序,然后运行InstGina -view,可以查看系统中GinaDLL键值是否被安装过DLL,主要用来查看系统是否被人安装了Gina木马作为登录所用。如果不幸被安装了GINA木马,可以运行InstGina -Remove来卸载它。

  3.LSA服务

  LSA的全称为“Local Security Authority”--本地安全授权,Windows系统中一个相当重要的服务,所有安全认证相关的处理都要通过这个服务。它从Winlogon.exe中获取用户的账号和密码,然后经过密钥机制处理,并和存储在账号数据库中的密钥进行对比,如果对比的结果匹配,LSA就认为用户的身份有效,允许用户登录计算机。如果对比的结果不匹配,LSA就认为用户的身份无效。这时用户就无法登录计算机。

  怎么看这三个字母有些眼熟?对了,这个就是和前阵子闹得沸沸扬扬的“震荡波” 扯上关系的服务。“震荡波”蠕虫就是利用LSA远程缓冲区溢出漏洞而获得系统最高权限SYSTEM来攻击电脑的。解决的方法网上很多资料,这里就不多讲了。

  4.SAM数据库

  SAM的全称为“Security Account Manager”--安全账号管理器,是一个被保护的子系统,它通过存储在计算机注册表中的安全账号来管理用户和用户组的信息。我们可以把SAM看成一个账号数据库。对于没有加入到域的计算机来说,它存储在本地,而对于加入到域的计算机,它存储在域控制器上。

  如果用户试图登录本机,那么系统会使用存储在本机上的SAM数据库中的账号信息同用户提供的信息进行比较;如果用户试图登录到域,那么系统会使用存储在域控制器中上的SAM数据库中的账号信息同用户提供的信息进行比较。

  5.Net Logon服务

  Net Logon服务主要和NTLM(NT LAN Manager,Windows NT 4.0 的默认验证协议)协同使用,用户验证Windows NT域控制器上的SAM数据库上的信息同用户提供的信息是否匹配。NTLM协议主要用于实现同Windows NT的兼容性而保留的。

  6.KDC服务

  KDC(Kerberos Key Distribution Center--Kerberos密钥发布中心)服务主要同Kerberos认证协议协同使用,用于在整个活动目录范围内对用户的登录进行验证。如果你确保整个域中没有Windows NT计算机,可以只使用Kerberos协议,以确保最大的安全性。该服务要在Active Directory服务启动后才能启用。

  7.Active Directory服务

  如果计算机加入到Windows 2000或Windows 2003域中,则需启动该服务以对Active Directory(活动目录)功能的支持。

  三、登录前后,Winlogon到底干了什么

  如果用户设置了“安全登录”,在Winlogon初始化时,会在系统中注册一个SAS (Secure Attention Sequence--安全警告序列)。SAS是一组组合键,默认情况下为Ctrl-Alt-Delete。它的作用是确保用户交互式登录时输入的信息被系统所接受,而不会被其他程序所获取。所以说,使用“安全登录”进行登录,可以确保用户的账号和密码不会被黑客盗取。要启用“安全登录”的功能,可以运行“Control userpasswords2”命令,打开“用户账户”对话框,选择“高级”。(如图4)选中“要求用户按Ctrl-Alt-Delete”选项后确定即可。以后,在每次登录对话框出现前都有一个提示,要求用户按Ctrl-Alt-Delete组合键,目的是为了在登录时出现Windows XP的GINA登录对话框,因为只有系统本身的GINA才能截获这个组合键信息。而如前面讲到的GINA木马,会屏蔽掉“安全登录”的提示,所以如果“安全登录”的提示无故被屏蔽也是发现木马的一个前兆。“安全登录”功能早在Windows 2000时就被应用于保护系统安全性。
  

图4?
  在Winlogon注册了SAS后,就调用GINA生成3个桌面系统,在用户需要的时候使用,它们分别为:
  ◇Winlogon桌面

  用户在进入登录界面时,就进入了Winlogon桌面。而我们看到的登录对话框,只是GINA负责显示的。

  如果用户取消以“欢迎屏幕”方式登录,在进入Windows XP中任何时候按下“Ctrl-Alt-Delete”,都会激活Winlogon桌面,并显示图5的“Windows安全”对话框(注意,Winlogon桌面并不等同对话框,对话框只是Winlogon调用其他程序来显示的)。
  

图5?
  ◇用户桌面
  用户桌面就是我们日常操作的桌面,它是系统最主要的桌面系统。用户需要提供正确的账号和密码,成功登录后才能显示“用户桌面”。而且,不同的用户,Winlogon会根据注册表中的信息和用户配置文件来初始化用户桌面。

  ◇屏幕保护桌面

  屏幕保护桌面就是屏幕保护,包括“系统屏幕保护”和“用户屏幕保护”。在启用了“系统屏幕保护”的前提下,用户未进行登录并且长时间无操作,系统就会进入“系统屏幕保护”;而对于“用户屏幕保护”来说,用户要登录后才能访问,不同的用户可以设置不同的“用户屏幕保护”。

  四、想登录,也要过GINA这一关

  在“交互式登录”过程中,Winlogon调用了GINA组文件,把用户提供的账号和密码传达给GINA,由GINA负责对账号和密码的有效性进行验证,然后把验证结果反馈给Winlogon程序。在与Winlogon.exe对话时,GINA会首先确定Winlogon.exe的当前状态,再根据不同状态来执行不同的验证工作。通常Winlogon.exe有三种状态:

  1.已登录状态

  顾名思义,用户在成功登录后,就进入了“已登录状态”。在此状态下,用户可以执行有控制权限的任何操作。

  2.已注销状态

  用户在已登录状态下,选择“注销”命令后,就进入了“已注销状态”,并显示Winlogon桌面,而由GINA负责显示登录对话框或欢迎屏幕。

  3.已锁定状态

  当用户按下“Win+L”键锁定计算机后,就进入了“已锁定状态”。在此状态下,GINA负责显示可供用户登录的对话框。此时用户有两种选择,一种是输入当前用户的密码返回“已登录状态”,另一种是输入管理员账号和密码,返回“已注销状态”,但原用户状态和未保存数据丢失。

  五、登录到本机的过程

  1.用户首先按Ctrl+Alt+Del组合键。

  2.Winlogon检测到用户按下SAS键,就调用GINA,由GINA显示登录对话框,以便用户输入账号和密码。

  3.用户输入账号和密码,确定后,GINA把信息发送给LSA进行验证。

  4.在用户登录到本机的情况下,LSA会调用Msv1_0.dll这个验证程序包,将用户信息处理后生成密钥,同SAM数据库中存储的密钥进行对比。

  5.如果对比后发现用户有效,SAM会将用户的SID(Security Identifier--安全标识),用户所属用户组的SID,和其他一些相关信息发送给LSA。

  6.LSA将收到的SID信息创建安全访问令牌,然后将令牌的句柄和登录信息发送给Winlogon.exe。

  7.Winlogon.exe对用户登录稍作处理后,完成整个登录过程。

  六、登录到域的过程

  登录到域的验证过程,对于不同的验证协议也有不同的验证方法。如果域控制器是Windows NT 4.0,那么使用的是NTLM验证协议,其验证过程和前面的“登录到本机的过程”差不多,区别就在于验证账号的工作不是在本地SAM数据库中进行,而是在域控制器中进行;而对于Windows 2000和Windows 2003域控制器来说,使用的一般为更安全可靠的Kerberos V5协议。通过这种协议登录到域,要向域控制器证明自己的域账号有效,用户需先申请允许请求该域的TGS(Ticket-Granting Service--票据授予服务)。获准之后,用户就会为所要登录的计算机申请一个会话票据,最后还需申请允许进入那台计算机的本地系统服务。

  其过程如下:

  1.用户首先按Ctrl+Alt+Del组合键。

  2.Winlogon检测到用户按下SAS键,就调用GINA,由GINA显示登录对话框,以便用户输入账号和密码。

  3.用户选择所要登录的域和填写账号与密码,确定后,GINA将用户输入的信息发送给LSA进行验证。

  4.在用户登录到本机的情况下,LSA将请求发送给Kerberos验证程序包。通过散列算法,根据用户信息生成一个密钥,并将密钥存储在证书缓存区中。

  5.Kerberos验证程序向KDC(Key Distribution Center--密钥分配中心)发送一个包含用户身份信息和验证预处理数据的验证服务请求,其中包含用户证书和散列算法加密时间的标记。

  6.KDC接收到数据后,利用自己的密钥对请求中的时间标记进行解密,通过解密的时间标记是否正确,就可以判断用户是否有效。
  7.如果用户有效,KDC将向用户发送一个TGT(Ticket-Granting Ticket--票据授予票据)。该TGT(AS_REP)将用户的密钥进行解密,其中包含会话密钥、该会话密钥指向的用户名称、该票据的最大生命期以及其他一些可能需要的数据和设置等。用户所申请的票据在KDC的密钥中被加密,并附着在AS_REP中。在TGT的授权数据部分包含用户账号的SID以及该用户所属的全局组和通用组的SID。注意,返回到LSA的SID包含用户的访问令牌。票据的最大生命期是由域策略决定的。如果票据在活动的会话中超过期限,用户就必须申请新的票据。

  8.当用户试图访问资源时,客户系统使用TGT从域控制器上的Kerberos TGS请求服务票据(TGS_REQ)。然后TGS将服务票据(TGS_REP)发送给客户。该服务票据是使用服务器的密钥进行加密的。同时,SID被Kerberos服务从TGT复制到所有的Kerberos服务包含的子序列服务票据中。   

  9.客户将票据直接提交到需要访问的网络服务上,通过服务票据就能证明用户的标识和针对该服务的权限,以及服务对应用户的标识。

  七、我要偷懒--设置自动登录

  为了安全起见,平时我们进入Windows XP时,都要输入账号和密码。而一般我们都是使用一个固定的账号登录的。面对每次烦琐的输入密码,有的朋友干脆设置为空密码或者类似“123”等弱口令,而这些账号也多数为管理员账号。殊不知黑客用一般的扫描工具,很容易就能扫描到一段IP段中所有弱口令的计算机。

  所以,还是建议大家要把密码尽量设置得复杂些。如果怕麻烦,可以设置自动登录,不过自动登录也是很不安全的。因为自动登录意味着能直接接触计算机的人都能进入系统;另一方面,账号和密码是明文保存在注册表中的,所以任何人,只要具有访问注册表的权限,都可以通过网络查看。因此如果要设置登录,最好不要设置为管理员账号,可以设置为USERS组的用户账号。设置自动登录的方法是:运行“Control userpasswords2”,在“用户账户”窗口中取消“要使用本机,用户必须输入用户名和密码”选项,确定后会出现一个对话框,输入要自动登录的账号和密码即可。注意,这里不对密码进行验证,用户要确保密码和账号的正确性。
搜索更多相关主题的帖子: 操作系统 详解 原理 Windows 登录 
2005-01-20 11:50
Kyo
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:4536
专家分:1
注 册:2004-12-27
收藏
得分:0 
顶!

2005-01-20 20:16
快速回复:详解Windows XP操作系统登录原理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023359 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved