站内搜索
广告
浅析Win 2000中的NTLM安全策略
作者:    来源:    点击:    日期:2007-7-15 2:21:50   

  在中小型网络中,很多用户选择Windows 2000作为网络OS,利用其简单的配置和用户熟悉的图形界面提供Internet服务,Telnet便是其提供的服务之一。Telnet最基本应用就是 用于Internet的远程登录,共享远程系统中的资源。它可以使用户坐在已上网的电脑键盘前通过网络进入的另一台已上网的电脑,并负责把用户输入的每个 字符传递给主机,再将主机输出的每个信息回显在屏幕上。这种连通可以发生在同一房间里面的电脑或是在世界各范围内已上网的电脑。Telnet服务与其他网 络应用一样属于客户机/服务器模型,一旦连通后,客户机可以享有服务器所提供的一切服务。

  Windows 2000 默认安装了 Telnet 服务,但是并没有默认启动。通过“开始”“网络工具”“服务”(或运行tlntsvr.exe程序)就可启动该服务。在客户端单击“开始”按钮,在弹出的菜单中选择“运行”命令,然后输入以下命令建立连接:

  telnet[Remote-system][Port-number]

  这时候会在屏幕上显示:

  正常情况下,服务启动后,键入该命令后应该是远程计算机回送Login和Password信息,提示用户输入用户名和口令。在Linux网络操作系统下就是这样:

telnet porky.math.ukans.edu
Trying 129.237.128.11...
Connected to porky.math.ukans.edu.
Escape character is '^]'.
SunOS UNIX(porky)
login:wl
password:xxxxxx

  可是仔细看看上面的显示,根本没有给你输入用户名和密码的机会,直接断开连接,这是什么原因呢?原来是 win2000中的telnet的一种验证身份方式所致:即Windows NT LAN Manager (NTLM)。早期的SMB协议在网络上明文传输口令,后来出现了"LAN Manager Challenge/Response"验证机制,简称LM,它十分简单以至很容易被破解,微软随后提出了WindowsNT挑战/响应验证机制,即NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。NTLM工作流程是这样的:

  1、客户端首先在本地加密当前用户的密码成为密码散列
   2、客户端向服务器发送自己的帐号,这个帐号是没有经过加密的,明文直接传输
   3、服务器产生一个16位的随机数字发送给客户端,作为一个 challenge(挑战)
   4、客户端再用加密后的密码散列来加密这个 challenge ,然后把这个返回给服务器。作为 response(响应)
   5、服务器把用户名、给客户端的challenge 、客户端返回的 response 这三个东西,发送域控制器
   6、域控制器用这个用户名在 SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密 challenge。
   7、域控制器比较两次加密的 challenge ,如果一样,那么认证成功。

  从上面的过程我们可以看出,NTLM是以当前用户的身份向Telnet服务器发送登录请求的,而不是用你自己的帐户和密码登录,显然,你的登录将会失败。举个例子来说,你家的机器名为A(本地机器),你登录的机器名为B(远地机器),你在A上的帐户是ABC,密码是1234,你在B上的帐号是 XYZ,密码是5678,当你想Telnet到B时,NTLM将自动以当前用户的帐号和密码作为登录的凭据来进行上面的7项操作,即用ABC和1234,而并非用你要登录帐号XYZ和5678,且这些都是自动完成的,根本不给你动手的机会,因此你的登录操作将失败。

  NTLM身份验证选项有三个值。默认是2。可以有下面这些值:

  0: 不使用 NTLM 身份验证。
   1: 先尝试 NTLM 身份验证,如果失败,再使用用户名和密码。
   2: 只使用 NTLM 身份验证。

  Telnet服务器使用NTLM的有3选项之一时,客户机会显示下面情况中的一种:

  1)身份验证选项=0时

Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:

  NTLM身份验证选项为0时不使用NTML身份验证,直接输入用户名和密码,比如你可以输入自己的登录帐号密码XYZ和5678。

   2)身份验证选项=1时

NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service

浅析Win 2000中的NTLM安全策略 评论