热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows2000中启用TELNET服务时的NTLM验证配置

本文详细介绍了在Windows2000系统中启用TELNET服务时需要注意的NTLM配置问题,帮助用户解决常见的身份验证失败错误。

在网络管理工作中,启用 TELNET 登录服务是一个常见的任务。最近,我在一台 Windows 2000 服务器上启用了 TELNET 服务,并通过 NAT 主机映射到外网进行访问。然而,在尝试从外部网络登录时,遇到了以下错误提示:

NTLM 身份验证由于凭据不足而失败。请使用明文用户名和密码登录。

服务器仅允许 NTLM 身份验证。

服务器已关闭连接。

最初,我怀疑是 NAT 映射的问题,经过多次排查后,最终在网络上找到了相关资料并解决了问题。

Telnet 和 NTLM 密不可分,尤其是在安全方面。即使你获得了管理员账户和密码,想简单通过 NTLM 进行身份验证也并非易事。Windows 2000 的 Telnet 默认仅以 NTLM 方式验证身份,因此了解 NTLM 是至关重要的。

NTLM(NT LAN Manager)是一种用于 Windows 网络的身份验证协议。早期的 SMB 协议在网络上明文传输口令,后来出现了 LM(LAN Manager Challenge/Response)验证机制,它十分简单且容易被破解。微软随后提出了更安全的 Windows NT 挑战/响应验证机制,即 NTLM。现在已有更新的 NTLMv2 和 Kerberos 验证体系。

NTLM 的工作流程如下:

1. 客户端首先在本地加密当前用户的密码生成密码散列。

2. 客户端向服务器发送未加密的用户名。

3. 服务器生成一个 16 位随机数作为 challenge 发送给客户端。

4. 客户端用加密后的密码散列加密这个 challenge 并返回给服务器作为 response。

5. 服务器将用户名、challenge 和 response 发送到域控制器。

6. 域控制器用 SAM 密码管理库中的用户密码散列加密 challenge。

7. 域控制器比较两次加密的 challenge,如果一致则认证成功。

从上述过程可以看出,NTLM 使用当前用户的身份向 Telnet 服务器发送登录请求,而不是用你获取的管理员账户和密码。例如,如果你在本地机器 A 上的账户是 xinxin,密码是 1234,而你要入侵的远程机器 B 的管理员账户是 Administrator,密码是 5678,当你尝试 Telnet 到 B 时,NTLM 会自动使用 xinxin 和 1234 作为登录凭据,导致登录失败。

Telnet 服务器对 NTLM 的使用有三个选项:

1) 当身份验证选项为 0 时,不使用 NTLM 身份验证,直接输入用户名和密码。

2) 当身份验证选项为 1 时,先尝试 NTLM 身份验证,如果失败再使用用户名和密码。

3) 当身份验证选项为 2 时,仅允许 NTLM 身份验证,若失败则直接断开连接。

对于需要绕过 NTLM 验证的情况,可以采取以下几种方法:

1. 通过修改远程注册表更改 Telnet 服务器配置,将验证方式从 2 改为 1 或 0。

2. 使用 NTLM.exe 工具,上传后直接运行,可将 Telnet 服务器验证方式从 2 改为 1。

3. 在本地建立扫描到的用户,并以此用户身份开启 Telnet 客户端进行远程登录。

4. 使用软件如 OpenTelnet.exe(需要管理员权限且开启 IPC 管道)。

5. 使用脚本如 RTCS(需要管理员权限但不依赖 IPC 管道)。

这些方法中,最后两种较为常用,命令格式如下:

OpenTelnet.exe \server username password NTLMAuthor telnetport

cscript RTCS.vbe targetIP username password NTLMAuthor telnetport


推荐阅读
author-avatar
功民昌
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有