现象描述:
启动了telnet,用telnet   本机IP,提示  
  “您将要发送密码信息到   Internet   区域中的远程计算机。这可能不安全。是否还要发送(y/n)”输入y则可登录到本机的C:下  
  但用网络中的其他机器登录这台打开了telnet的2000机器,则出现  
  “Server   allows   NTLM   authentication   only  
    Server   has   closed   connection”  
  即使用unset   NTLM关闭验证密码也不行;  
  我需要验证用户的telnet,象linux中,telnet   ip后提示:  
  login:  
  password:  
  都ok了则登录;   
 
问题分析: 
  提到了telnet就不能不提NTLM,我想这也是让入侵者最为头痛的一件事,哪怕你获得了管理员帐号和密码,想简单通过NTLM也并非易事,况且win2000中的telnet默认仅以NTLM方式验证身份,这就让我们不得不关注NTLM这个东东,那么什么是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上的帐户是xinxin,密码是1234,你扫到B的管理员帐号是Administrator,密码是5678,当你想Telnet到B时,NTLM将自动以当前用户的帐号和密码作为登录的凭据来进行上面的7项操作,即用xinxin和1234,而并非用你扫到的Administrator和5678,且这些都是自动完成的,根本不给你插手的机会,因此你的登录操作将失败。  
   
  由于Telnet服务器对NTLM的使用有3个选项,所以当你Telnet远地机器时,会显示下面情况中的一种:  
   
  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:  
   
  \\为0时不使用NTML身份验证,直接输入用户名和密码,比如你可以输入扫到的Administrator和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  
  Telnet   Server   Build   5.00.99201.1  
  login:  
  password:  
   
  \\先尝试   NTLM   身份验证,如果失败,再使用用户名和密码,其实这种方式对于我们来说,与上一种方式没什么区别  
   
   
  3)身份验证选项=2时    
  =====================================  
  NTLM   Authentication   failed   due   to   insufficient   credentials.   Please   login   withclear   text   username   and   password  
  Server   allows   NTLM   authentication   only  
  Server   has   closed   connection  
  遗失对主机的连接。  
  C:\>  
   
  \\仔细看看上面的显示,根本没有给你输入用户名和密码的机会,直接断开连接,扫到了密码也是白扫  
   
  所以对于入侵者来说,NTLM是横在我们面前的一座大山,必须要除掉它,一般我们有如下几种方法:  
   
  1通过修改远程注册表更改telnet服务器配置,将验证方式从2改为1或0;  
  2使用NTLM.exe,上传后直接运行,可将telnet服务器验证方式从2改为1;  
  3在本地建立扫描到的用户,以此用户身份开启telnet客户机并进行远程登录;  
  4使用软件,比如opentelnet.exe(需要管理员权限且开启IPC管道)  
  5使用脚本,如RTCS,(需要管理员权限但不依赖IPC管道)  
   
  基本上是以上的5种,其中后两种是我们比较常用的开telnet的手法,而且使用方法十分简单,命令如下:  
   
  OpenTelnet.exe   \\server   username   password   NTLMAuthor   telnetport  
  OpenTelnet.exe   \\服务器地址   管理员用户名   密码   验证方式(填0或1)   telnet端口  
   
  cscript   RTCS.vbe   targetIP   username   password   NTLMAuthor   telnetport  
  cscript   RTCS.vbe   <目标IP>   <管理员用户名>   <密码>   <验证方式>   <tlnet端口>  
posted on 2008-01-10 14:56  利刃  阅读(1593)  评论(0编辑  收藏  举报