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)。
图1
2.利用Telnet服务
那么是不是启动了Telnet服务,黑客就可以利用Telnet服务连接到远程主机中去了呢?在命令行窗口中键入“telnet IP”命令,如telnet 192.168.0.3,这时命令行窗口会出现如图2所示的情况。
图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服务,假如黑客利用缓冲溢出或者其它方法拿到了用户的Cmd
[1] [2] 下一页