`
aijezdm915
  • 浏览: 404110 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Telnet服务攻防新手上路

阅读更多

因为使用Telnet服务进行远程控制更加隐蔽,对系统的资源消耗也非常小,所以对于网络安全来讲Telnet服务是一个非常危险的服务。

 Telnet服务是最早的远程访问服务。它是在网络发展的早期,所有的操作系统还基于命令模式控制时,为了解决用户远程维护主机、远程办公等用户需求而特意开发的一个服务,被一直沿用到现在。

  当终端服务这个基于图形界面访问的服务推出之后,现在已经很少有人利用Telnet服务进行远程访问和远程办公了。但是Telnet服务却摇身一变成为了黑客的最爱。据统计,被黑客利用得最多的一个系统服务,就是Telnet服务。

  黑客为什么不喜欢使用同样基于远程访问,并且更加方便直观的终端服务,而偏爱Telnet服务呢?难道因为黑客就喜欢在黑乎乎的命令窗口中操作吗?NO,当然不是这样。因为使用Telnet服务进行远程控制更加隐蔽,对系统的资源消耗也非常小,并且只需要一个命令即可开启和关闭它。所以对于网络安全来讲Telnet服务是一个非常危险的服务。

  Telnet服务使用Telnet协议传输,在系统中使用的默认端口为TCP23端口。由于Telnet协议是集成在TCP/IP协议中的,所以我们无法使用删除协议的办法来禁止Telnet服务。在我们讲防御Telnet服务之前,首先来看看黑客是如何利用Telnet服务的(笔者系统为Windows2000)。

  攻 利用Telnet服务入侵

  1.开启Telnet服务

  要想利用系统当中的Telnet服务必须先开启Telnet服务,因为在默认情况下Telnet服务是被系统所禁止的。所以当黑客使用缓冲溢出,IPC等方法拿到远程主机的Shell之后,必须开启Telnet服务。

  在命令行方式下开启Telnet服务的方法非常简单,只要在命令行当中键入“net start telnet”命令,即可开启系统中的Telnet服务。这是黑客使用得最多的一种开启Telnet服务的手法(图1)。


  2.利用Telnet服务

  那么是不是启动了Telnet服务,黑客就可以利用Telnet服务连接到远程主机中去了呢?在命令行窗口中键入“telnet IP”命令,如telnet 192.168.0.3,这时命令行窗口会出现如图2所示的情况。


  在这个窗口中,无论用户选择“Y”还是“N”都会出现“失去了跟主机的连接”提示。

  这是因为用户没有通过远程主机的NTLM验证。正是利用NTLM这个基于WorkGroup网络当中的身份验证协议,使得黑客不能轻易地利用到Telnet服务,这时即使黑客知道了Telnet服务器的管理员用户名和密码,他仍然通不过NTLM验证,这无疑给系统带给了一定的安全性。

 3.突破NTLM验证

  既然入侵者无法通过NTLM验证,那么Telnet服务就安全了?其实黑客有非常多的方法可以突破NTLM验证。

  比如黑客知道了Telnet服务器上的一个管理员组的用户名和密码(如用户名为xiewei,密码为12345),那么黑客可以在自己的系统中建立一个用户名和密码与之相同的管理员组用户。然后按住“Shift”键不放,找到“开始→程序→附件”中的“命令提示符”,右击“命令提示符”选项,可以在右键菜单中看到一个“运行方式”选项,打开它就可以看到一个选择用户打开程序的选项,勾上“下列用户”,黑客就可以在选项中填入刚刚建立的与Telnet服务器上等同的管理员组用户(图3), 确定之后在打开的命令行窗口中,连接Telnet服务器,就可以非常顺利地通过NTLM验证。


图3

  这只是突破NTLM验证方法中的一种,黑客如果拿到了远程系统的CmdShell,可以上传一些第三方的工具,如Ntlm.exe,然后执行这一工具也可以删除NTLM验证。

  在系统中用户其实也可以手动地更改NTLM验证的设置,在“Telnet服务管理器”中就提供了修改NTLM验证的选项。用户可以在“程序→控制面板→管理工具”中找到“Telnet服务管理”选项,单击就可以打开。或者用在命令行窗口下键入“tlntadmn.exe”也可以打开“Telnet服务管理器”。用户可以看到“Telnet服务管理器”是以命令行的方式出现的。选择当中的选项3“显示 / 更改注册表设置” (图4),用户可以看到会出现一个选项的列表,总共有八个选项。


图4

  大家可以发现,选项7是针对NTLM验证的,它的默认值是“2”,其中还有两个值可以选择,分别是“0”和“1”。“0”的意思是不使用 NTLM 身份验证;“1”则表示先尝试 NTLM 身份验证,如果失败,再使用用户名和密码;“2”的意思是只使用 NTLM 身份验证。

  如果把NTLM的值改为“0”或者“1”,在Telnet连接的时候,我们都可以顺利地通过NTLM验证。所以接下来的步骤,选择列表中的“(7)NTML”,并且选择“Y”更改默认值,最后把NTLM验证的值改为“0”或者“1”即可(图5)。从图5中可以看到“Telnet服务管理器”提示,只有当Telnet服务重新启动之后配置才能够生效。用户可以在命令行窗口下键入“net stop telnet”和“net start telnet”即可重新启动Telnet服务。


图5

  接下来远程用户就可以使用“telnet IP”连接到Telnet服务器上了,虽然没有了NTLM验证的限制,但是访问用户必须键入Telnet服务器的管理员组用户名和密码方能访问到。当访问到时,用户就可以执行Windows SHELL命令来管理远程主机了。

 防 全面封锁Telnet服务

  知道了黑客利用Telnet服务的手法,那么针对Telnet服务的防御办法自然也就有了。根据黑客利用Telnet服务的思路,笔者总结了防御Telnet服务四种方法。

  1.管理好用户的密码

  最简单的方法,管理好本机系统当中的用户名和密码,如果用户名和密码无法被黑客取得,那么黑客将很难利用到Telnet服务。

  2.修改服务端口

  从前面的内容中大家可以了解到Telnet服务使用的是系统的23端口,如果我们修改了Telnet服务的默认端口,无疑隐藏了Telnet服务的入口点,给系统带来了一定的安全保障。修改方法非常简单,首先打开“Telnet服务管理器”,同样选择当中的选项3“显示 / 更改注册表设置”,打开Telnet服务管理列表,选择当中的选项8“TelnetPort”,选择“Y”更改Telnet服务的默认端口23,把Telnet服务的端口改为1024或1024以上的端口,确定即可。接着重新启动Telnet服务,配置即可生效。以后用户只要键入“telnet IP 1024”即可访问到Telnet服务器。

  3.禁用Telnet服务

  大家知道要想使用Telnet服务必须开启Telnet服务,假如黑客利用缓冲溢出或者其它方法拿到了用户的CmdShell,那么他只要在中CmdShell下键入“net start telnet”即可启动Telnet服务,并且可以利用Telnet服务作为用户系统中的后门使用。有什么办法才能够阻止黑客开启Telnet服务呢?其实办法非常简单,禁用Telnet服务即可实现。用户打开“控制面板→管理工具→服务”在当中找到Telnet服务选项,双击就可以进入“Telnet服务属性”对话框,在“启动类型”中选择“已禁用”,单击“确定”按钮即可。

  4.终极Telnet服务防御

  禁用服务并不是防御Telnet服务的终极办法,针对这一限制,黑客专门有一些第三方工具,只要拿到了远程主机的CmdShell,他只须上传该工具到远程主机并运行它就可以突破禁用服务这一限制,开启Telnet服务。

  所以针对这个问题,笔者最后给大家介绍一种最完美的防御方法。

  首先打开“Telnet服务管理器”,同样选择选项3“显示 / 更改注册表设置”,进入Telnet服务管理列表,大家可以看到其中的选项4“DefaultShell”,前面我们已经介绍过这个选项的具体含义,“显示Telnet服务所对应的程序。默认值是: %Systemroot%\System32\Cmd.exe /q /k”,这个含义的具体意思是什么呢?为什么当我们通过Telnet验证的时候能够取得远程主机的命令控制权限呢?

  因为我们可以看到Telnet服务对应的默认程序是“%Systemroot%\System32\Cmd.exe /q /k”也就是系统根目录WinNT(或Windows)下System32目录下的Cmd.exe,我们都知道Cmd.exe是系统中的命令行窗口,那么当远程用户通过了Telnet验证的话,远程系统就会把自己的Cmd.exe调给远程用户使用,这就是为什么使用Telnet能够拿到远程主机命令控制权限的最根本原因。

  讲到这里似乎防御方法也出来了,其实思路很简单,我们把Telnet服务所对应的默认程序改为一个未知的程序,这样即使黑客知道了远程主机的管理员用户和密码,突破了NTLM验证对方仍然无法拿到对主机的命令控制权,因为Telnet服务对应的默认程序已经不再是Cmd.exe。有了好思路我们就来具体使用这个方法。

  选择Telnet服务管理列表中的选项4“DefaultShell”,就会提示我们是否更改Telnet服务的默认设置,选择“Y”,并且把Telnet服务对应的默认程序改为一个未知的文件,如:%SystemRoot%\system32\xiewei.exe,我的系统中根目录下根本不存在xiewei.exe文件,设置好之后重新启动服务。

  设置好之后,我们来看一下它的效果。假如现在黑客知道这台系统的管理员用户Administrator,密码为12345,并且这台系统开启了Telnet服务,NTLM验证也被突破,那么使用 “Telnet IP”连接到这台系统,这时会提示键入远程系统的用户名和密码,证明已经通过了NTLM验证,在正确地输入用户名密码之后,系统仍然提示“失去了跟主机的连接”。

  通过对这种方法,用户可以全面禁止系统中的Telnet服务。

分享到:
评论

相关推荐

    linux开启telnet服务

    Linux 开启 Telnet 服务 Linux 操作系统提供了多种服务,包括文件传输、远程登录、电子邮件等。Telnet 服务是一种远程登录服务,允许用户从远程主机登录到 Linux 服务器。下面将详细介绍如何开启 Linux 的 Telnet ...

    telnet服务win10可用

    标题中的“telnet服务win10可用”表明我们讨论的主题是关于在Windows 10操作系统上启用和使用Telnet服务。通常,Windows 10默认并未启用这项服务,因为出于安全考虑,它在较新的系统版本中被逐渐淘汰。然而,对于...

    linux_telnet服务的开启

    本文将详细讲解Linux_telnet服务的开启步骤,包括安装telnet软件包、启动telnet服务、测试telnet服务、设置telnet端口、telnet服务限制、telnet root用户的登入等内容。 一、安装telnet软件包 在Linux操作系统中,...

    如何开启Linux telnet服务.docx

    "Linux telnet服务开启指南" 通过本文,你将了解如何在Linux系统中开启telnet服务。telnet服务是一种远程登录服务,但由于其明文传输安全性极低,Linux系统默认是不开启telnet server服务的。如果需要远程登录,...

    linux下开启telnet服务

    "Linux 下开启 Telnet 服务" Linux 下开启 Telnet 服务是一种常见的远程登录服务,允许用户从远程主机登录到 Linux 服务器上。Telnet 服务是一种基于 TCP/IP 协议的远程登录服务,它允许用户使用 Telnet 客户端软件...

    Linux系统安装telnet服务的方法

    Linux系统安装telnet服务的方法 Linux系统安装telnet服务是Linux系统管理中的一项重要任务。本文将详细介绍如何在Linux系统(以RHEL5为例)中安装和配置telnet服务。 一、安装telnet软件包 在安装telnet服务之前...

    redhat6开启telnet服务

    ### Red Hat 6 开启 Telnet 服务详细步骤与知识点解析 #### 一、环境准备与软件安装 在 Red Hat 6 中开启 Telnet 服务首先需要确保系统中已安装了必要的软件包,并且配置了适当的环境。以下为具体步骤: 1. **...

    基于Socket的Telnet服务设计与实现

    "基于Socket的Telnet服务设计与实现" 一、Telnet协议概述 Telnet协议是TCP协议族中的一员,是Internet远程登录服务的标准协议。远程登录是指用户使用Telnet命令,使自己的计算机成为远程主机的一个仿真终端的过程...

    Arm-Linux下使用的ftp服务和telnet服务1

    本主题将深入探讨如何在Arm-Linux环境下搭建和使用FTP(File Transfer Protocol)和TELNET服务,这两个服务都是远程访问和文件传输的基础工具。 FTP服务允许用户通过网络在不同的计算机之间上传和下载文件,而...

    redhat6.5安装telnet服务

    在这个环境中,有时我们需要安装并配置一些远程访问服务,例如telnet服务,以便进行远程管理或者调试。本文将详细阐述在RHEL 6.5上安装telnet服务的过程,以及相关知识点。 首先,telnet是一种基于TCP协议的远程...

    Linux操作系统下Telnet的设置方法

    测试 Telnet 服务可以使用 telnet 命令,例如 telnet ip 或 telnet hostname。如果配置正确,系统将提示输入远程机器的用户名和密码。 四、设置 Telnet 端口 Telnet 服务默认使用的端口号是 23,可以通过编辑 /etc...

    Linux网络编程-用C自己编写一个telnet服务器

    用下列命令编译程序: gcc -Wall telnet-server -o telnetd 启动telnet服务: ./telnetd --daemon #以root用户身份在23端口(即telnet默认端口服务) 或 ./telnetd -P 7838 #以非root用户身份

    java 实现telnet服务器执行脚本

    在与网络服务进行交互时,异常处理非常重要。网络问题、服务器错误或权限问题都可能导致执行失败,因此应该在代码中包含适当的异常捕获和处理逻辑。 #### 8. 主函数示例 最后,主函数提供了一个示例,展示了如何...

    telnet服务器

    3. 调整启动类型:为确保服务在每次启动时自动运行,可以右键单击“Telnet Server”服务,选择“属性”,然后在“常规”选项卡中将启动类型设为“自动”。 **安全考虑:** 尽管Telnet提供了便利,但其通信过程是...

    CentOS7 telnet服务离线安装.zip

    在Linux系统中,CentOS 7是一个广泛应用的操作系统版本,其默认情况下为了安全考虑并未预装telnet服务。然而,在某些场景下,如远程管理或测试网络连接时,telnet服务可能仍然是必要的。本教程将详细讲解如何在...

    linux telnet服务安装包

    64位Linux telnet服务rpm安装包 telnet-server-0.17-47.el6.x86_64.rpm

    C++ 多线程TELNET服务程序

    在这个"**C++多线程TELNET服务程序**"中,我们将深入探讨如何利用C++实现一个基于TCP/IP协议的多线程TELNET服务器。 **1. TELNET协议** TELNET是一种远程终端协议,它允许用户通过网络连接到远程主机,就像是直接坐...

Global site tag (gtag.js) - Google Analytics