热门标签 | 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


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • JavaScript中属性节点的类型及应用
    本文深入探讨了JavaScript中属性节点的不同类型及其在实际开发中的应用,帮助开发者更好地理解和处理HTML元素的属性。通过具体的案例和代码示例,我们将详细解析如何操作这些属性节点。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
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社区 版权所有