TELNET密碼嗅探

来源:互联网 发布:linux 内核编译安装 编辑:程序博客网 时间:2024/06/05 10:13

TELNET密碼嗅探

       这几天,闲来无聊,研究了数据包嗅探的文章,数据包是TCP/IP通信协议的数据单元,英文叫做Packet。当然,局域网传输的以太网的帧(Frame)也是一种数据单元,其实,从OSI七层模型中可以看出,TCP/IP协议工作在第三层(网络层)、第四层(传输层),帧是工作在第二层(数据链路层),上一层的内容由下一层的内容来传输,所以在局域网中,是包含在里的。下面我们来分析最简单的一种数据包嗅探---telnet密码嗅探。

       telnet应该大家都很熟悉啦,在每个windows平台都会有这个工具的(有些平台如vista默认没有安装,可以在添加windows组件中安装),严格来说,telnet是一种典型的客户端/服务器模型,就像我们的ftp一样。同时telnet是一种协议,它是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议。应用telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。在默认情况下,因为开启telnet的风险性,一般计算机都会禁用telnet服务。以我本机为例,可以通过“计算机管理-服务-Telnet服务”的图形界面开启,当然也可以利用命令行来开启(我想这种是很多hacker所喜欢的吧),分别如下图:

       

 

 1

  GUI下更改Telnet服务启动类型为手动,然后启动服务。

 

 2 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

说明:

       net start tlntsvr―――开启telnet服务(服务启动类型必须是手动或自动),图中被禁用,启动失败。

       Sc config tlntsvr start= demand―――更改服务启动类型为手动(注意=后面有空格);

       Sc start tlntsvr―――开启telnet服务,跟第一个命令功能一样。

 

好了,现在这台电脑就可以作为telnet服务器进行测试了,然后我通过另外一个电脑进行登陆telnet测试,在测试过程中打开sniffer进行嗅探,当然sniffer也要进行简单配置(我也只是个sniffer fresher):

       客户机IP172.16.8.229

       服务器IP172.16.8.114

       设置sniffer过滤器,定义源和目标地址,以及数据包大小128字节(这个数值可能需要进行测试来调整,当然我的这个数值并不是非常恰当,但已经可以看到需要的信息),如图:

 

3

 

 

 

4

 

       开始进行测试:

       首先,打开sniffer进行监听,然后到客户机进行telnet登陆测试。

 

5

6

7

 

 

出现这个界面的原因是因为telnet使用了NTLM验证机制,关于ntlm有必要简单介绍下:

       NTLM工作流程是这样的

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

2.  客户端向服务器发送自己的帐号,这个帐号是没有经过加密的,明文直接传输

3.服务器产生一个16位的随机数字发送给客户端,作为一个 challenge(挑战)

4.客户端再用加密后的密码散列来加密这个 challenge ,然后把这个返回给服务器。作为 response(响应)

5.服务器把用户名、给客户端的challenge 、客户端返回的 response 这三个东西,发送域控制器

6.域控制器用这个用户名在 SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密 challenge

7、域控制器比较两次加密的 challenge ,如果一样,那么认证成功。

NTLM身份验证选项可以有以下值:

0: 不使用 NTLM 身份验证。

1: 先尝试 NTLM 身份验证,如果失败,再使用用户名和密码。

2: 只使用 NTLM 身份验证。

相应的Telnet服务器对NTLM的使用有3个选项,会显示下面下面三种消息响应:

1)
身份验证选项=0
=====================================
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:

//
0时不使用NTML身份验证,直接输入用户名和密码



2)
身份验证选项=1
=====================================
NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:

//
先尝试 NTLM 身份验证,如果失败,再使用用户名和密码,其实这种方式对于我们来说,与上一种方式没什么区别



3)
身份验证选项=2
=====================================
NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password
Server allows NTLM authentication only
Server has closed connection
遗失对主机的连接。
C:/>

 

默认情况下,telnet服务器的NTLM验证选项值是2,所以即使有用户名密码也不给你登陆的机会,那就要相应的修改其值为01。修改方法:图形界面下是直接到组策略里,打开安全设置-本地策略-安全选项-网络安全:Lan Manager身份验证级别 属性,选择发送LM&NTLM响应;命令行底下可以使用tlntadmn config sec= –ntlm(=后面有空格)取消ntlm验证。

 

8

9

 

下面就可以正常登陆telnet服务器,输入用户名:user,密码:thisisatest。下面是登陆成功後的欢迎界面,现在的系统都没有那么多回显信息了(有些人,不知道telnet成功后能干什么,我可以很负责任的告诉你:所有能在windowsuser帐号做的事,在这里都可以,只不过这里所有的动作都是命令行的,就看你dos命令知道多少啦)。

 

 

 10

 登陆成功後回到sniffer界面,按停止并显示按钮,选择下面的标签的“解码”,会显示sniffer抓出的数据包以及相应的分析信息,我们来找所有telnet数据包,会得到很多有用的信息:

 

 

 

 11

 下面是114229的回显信息:“welcome to Microsoft telnet service

12 

看到login的提示了么,这就说明下面可能就是用户名输入了:

 

 

 

13 

开始捕捉用户名了,这里我们看到一个字符u(说明:telnet传输的用户名和密码都是以字符传送给操作系统的,所以它们可能会在相邻的几个数据包里,接着看。):

14

 

 

 

 

 15

 如果看到password的画面,就说明用户名已经结束了,用户名:user,同时,密码嗅探也开始了:

 

 

 

 16

这个已经很明显了吧,后面已经没有连续的字符,说明已经输入结束,密码是:thisisatest

 17

 

     至此,telnet的用户名和密码已经成功被我们嗅探出来了。可能有些人奇怪刚才用户名的字符每个都出现两次,而密码只有一次,其实原因很简单,因为用户名是有回显的(屏幕上显示),输入时sniffer捕捉到一次(172.16.8.229172.16.8.114),回显时sniffer又捕捉到一次(172.16.8.114172.16.8.229),而密码是不会回显的,所以只有一次。

结束语:

     从这一次完整的telnet嗅探测试我们可以看出telnet是多么的危险,是的,telnet是以明文在网络中传输,很容易被网络中的其他用户嗅探到敏感信息,所以大多数设备都是禁用telnet服务的(路由器和交换机类似的设备却例外)。对于路由器及交换机这类设备,也应尽量避免使用windowstelnet连接,替代的客户端可以是SSHSCRT之类工具(这些工具都带有很强大的加密功能),这是一种安全的做法。最后,说明下我的测试环境,客户机是我的电脑,服务器是VPC做的XP的虚拟机,所有的测试及相应的动作都在这两台电脑做的,远端的话(比如hacker)原理也是一样的,必要时借助一些工具。Sniffer我使用的是比较流行的高显嵩修改汉化的4.7破解版,关于sniffer学问高着呢,听说国外有专门的认证呢,当然,最近网上流行的科来网络分析系统(跟sniffer没啥两样,界面看着比较适合国人吧)也可以做,后者我有测试过结果完全相同。

 

 

原创粉丝点击