平常我们在使用WindowsXP时,总是要先进行登录。WindowsXP的登录验证机制和原理都要比Windows98严格并复杂得多,不会再出现按“取消”按钮就能进入系统的丑事(可以通过修改注册表来禁止)。理解并掌握WindowsXP的登录验证机制和原理对我们来说很重要,能增强对系统安全的认识,并能够有效预防、解决黑客和病毒的入侵。
一、了解WindowsXP的几种登录类型
1、交互式登录
交互式登录是我们平常最常见类型,就是用户通过相应的用户帐号(User Account)和密码在本机进行登录。有些网友认为“交互式登录”就是“本地登录”,其实这是错误的。“交互式登录”还包括“域帐号登录”,而“本地登录”仅限于“本地帐号登录”,详细讲解请参看下文。
这里有必要提及的是,通过终端服务和远程桌面登录主机,可以看作“交互式登录”,其验证的原理是一样的。
在交互式登录时,系统会首先检验登录的用户帐号类型,是本地用户帐号(Local User Account),还是域用户帐号(Domain User Account),再采用相应的验证机制。因为不用的用户帐号类型,其处理方法也不同。
◇ 本地用户帐号
采用本地用户帐号登录,系统会通过存储在本机SAM数据库中的信息进行验证。所以也就为什么Windows2000忘记Administrator密码时可以删除SAM文件的方法来解决。不过对于WindowsXP则不可以,可能是出于安全方面考虑吧。用本地用户帐号登录后,只能访问到具有访问权限的本地资源。(图1)
◇域用户帐号
采用域用户帐号登录,系统则通过存储在域控制器的活动目录中的数据进行验证。如果该用户帐号有效,则登录后可以访问到整个域中具有访问权限的资源。
小提示:如果计算机加入域以后,登录对话框就会显示“登录到:”项目,可以从中选择登录到域还是登录到本机。
2、网络登录
如果计算机加入到工作组或域,当要访问其他计算机的资源时,就需要“网络登录”了。如图2,当要登录名称为Heelen的主机时,输入该主机的用户名称和密码后进行验证。这里需要提醒的是,输入的用户帐号必须是对方主机上的,而非自己主机上的用户帐号。因为进行网络登录时,用户帐号的有效性是由受访主机进行的。
3、服务登录
服务登录是一种特殊的登录方式。平时,系统启动服务和程序时,都是先以某些用户帐号进行登录后运行的,这些用户帐号可以是域用户帐号、本地用户帐号或SYSTEM帐号。采用不同的用户帐号登录,其对系统的访问、控制权限也不同,而且,用本地用户帐号登录,只能访问到具有访问权限的本地资源,不能访问到其他计算机上的资源,这点和“交互式登录”类似。
从图3的任务管理器中可以看到,系统的进程所使用的帐号是不同的。当系统启动时,一些基与Win32的服务会被预先登录到系统上,从而实现对系统的访问和控制。运行services.msc,可以设置这些服务。正是系统服务有着举足轻重的地位,它们一般都以SYSTEM帐号登录的,对系统有绝对的控制权限,所以很多病毒和木马也争着加入这个贵族中。除了SYSTEM,有些服务还以Local Service和Network Service这两个帐号登录。而在系统初始化后,用户运行的一切程序都是以用户本身帐号登录的。
从上面讲到的原理不难看出,为什么很多电脑文章告诉一般用户,平时使用计算机时要以Users组的用户登录,因为即使运行了病毒、木马程序,由于受到登录用户帐号相应的权限限制,最多也只能破坏属于用户本身的资源,而对维护系统安全和稳定性的重要信息无破坏性。
4、批处理登录
批处理登录一般用户很少用到,通常被执行批处理操作的程序所使用。在执行批处理登录时,所用帐号要具有批处理工作的权利,否则不能进行登录。
平常我们接触最多的是“交互式登录”,所以下面笔者讲为大家详细讲解“交互式登录”的原理。
二、交互式登录,系统用了哪些组件
1、winlogon.exe
winlogon.exe是“交互式登录”时最重要的组件,它是一个安全进程,负责如下工作:
◇加载其他登录组件。
◇提供同安全相关的用户操作图形界面,以便用户能进行登录或注销等相关操作。
◇根据需要,同GINA发送必要信息。
2、GINA
GINA的全称为“Graphical Identification and Authentication”――图形化识别和验证。它是几个动态数据库文件,被winlogon.exe所调用,为其提供能够对用户身份进行识别和验证的函数,并将用户的帐号和密码反馈给winlogon.exe。在登录过程中,“欢迎屏幕”和“登录对话框”就是GINA显示的。
一些主题设置软件,例如StyleXP,可以指定winlogon.exe加载商家自己开发的GINA,从而提供不同的WindowsXP的登录界面。由于这个可修改性,现在出现了盗取帐号和密码的木马。
一种是针对“欢迎屏幕”登录方式的木马,它模拟了WindowsXP的欢迎界面。当用户输入密码后,就被木马程序所获取,而用户却全然不知。所以建议大家不要以欢迎屏幕来登录,且要设置“安全登录”。
另一种是针对登录对话框的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服务
如果计算机加入到Windows2000或Windows2003域中,则需启动该服务以对Active Directory(活动目录)功能的支持。
三、登录前后,winlogon到底干了什么
如果用户设置了“安全登录”,在winlogon初始化时,会在系统中注册一个SAS (Secure Attention Sequence――安全警告序列)。SAS是一组组合键,默认情况下为Ctrl-Alt-Delete。它的作用是确保用户交互式登录时输入的信息被系统所接受,而不会被其他程序所获取。所以说,使用“安全登录”进行登录,可以确保用户的帐号和密码不会被黑客盗取。要启用“安全登录”的功能,可以运行“control userpasswords2”命令,打开“用户帐户”对话框,选择“高级”。(如图4)选中“要求用户按Ctrl-Alt-Delete”选项后确定即可。以后,在每次登录对话框出现前都有一个提示,要求用户按Ctrl-Alt-Delete组合键,目的是为了在登录时出现WindowsXP的GINA登录对话框,因为只有系统本身的GINA才能截获这个组合键信息。而如前面讲到的GINA木马,会屏蔽掉“安全登录”的提示,所以如果“安全登录”的提示无故被屏蔽也是发现木马的一个前兆。“安全登录”功能早在Windows2000时就被应用于保护系统安全性。
在winlogon注册了SAS后,就调用GINA生成3个