文档章节

实战利用WireShark对Telnet协议进行抓包分析

Micooz
 Micooz
发布于 2014/07/14 13:23
字数 2169
阅读 1113
收藏 53
点赞 1
评论 3

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

一. 准备工作

虚拟机Virtual Box(Telnet服务端)

--安装Windows XP SP3操作系统

------开启了Telnet服务

------添加了一个账户用于远程登录,用户名和密码都是micooz

宿主机Windows 8.1 Pro(Telnet客户端)

--安装了分析工具Wireshark1.11.2

--安装了Telnet客户端程序

PS:虚拟机网卡选用桥接模式

二.操作流程

  1. 开启虚拟机和Wireshark

  2. 查看XP获得的ip地址,这里是192.168.199.134;网卡MAC地址:08:00:27:a0:9f:f8

    宿主机IP地址是192.168.199.154;网卡MAC地址:00:26:4d:a1:59:de

  3. 客户端主机启动cmd键入命令

    telnet 192.168.199.134 回车

  4. 显示是否发送密码

    回车

  5. 显示login:

    键入micooz回车

  6. 显示password:

    键入micooz回车

  7. 进入telnet客户端主界面命令行

  8. 键入net user回车

  9. 显示结果

  10. 关闭cmd

  11. 结束

三.开始分析

①建立连接(TCP三次握手)

步骤3执行后,telnet客户端开始工作,首先是与虚拟机中的服务端程序建立TCP连接,从抓取的数据包来看,首先关于本次分析的数据包是典型的TCP三次握手,如图所示:

由于是我第一次搞网络协议分析,就TCP的三次握手过程也做一个分析吧.

主机(192.168.199.154)发送一个连接请求到虚拟机(192.168.199.134),第一个TCP包的格式如图所示:


以太网v2头 ipv4报文 TCP报文

其中以太网v2头是由数据链路层加上去的:

1-6bytes是目的地址,也即虚拟机的网卡MAC,

7-12bytes是源地址,也即宿主机MAC.

13-14(0x0800)是上层协议,这里是IP

第二段是ipv4的报文,网际协议IP是工作在网络层,也就是数据链路层的上层,上图数据区选中部分就是ipv4数据,其格式为:

可以非常清楚的看到那些教科书上讲到的IPv4报文格式在实际中式如何表现出来的.

值得注意的是,IPv4报文中的源地址和目的地址是ip地址,版本号TCP是6,标志字段是010就是禁止下层分段,且是完整的报文

第三段是TCP报文,从上面两个可以知道,这个TCP包被层层包装,经过下面一层就相应的包装一层,第三段是经过传输层的数

据,TCP报文的格式为:

和书本上讲的格式基本一致,这里说明了TCP的源端口52456也就是宿主机建立连接开出来的端口,目的端口23显然是

telnet服务默认端口.

Sequence number同步序号4bytes,这里是0xa1 21 e2 42,但这里显示的是相对值0.

Acknowledgment number确认序号4bytes,为0,因为还是第一个握手包.

Header Length头长度32字节,滑动窗口大小8192字节(8MB),校验和,紧急指针为0.

Options选项12字节,其中包含最大传输单元MTU默认是1460bytes.

再来看看第二个TCP数据包,它是一个来自虚拟机的应答,按照三次握手的原则,这个数据包中TCP报文确认序号应该等于上

一个请求包中的同步序号+1,我们来看一下是不是:

Pack1. Seq = 0xa1 21 e2 42 Ack = 0x00 00 00 00

Pack2. Seq = 0x97 0f 37 11 Ack = 0xa1 21 e2 43

看下图更清楚

显然如TCP规定的那样工作. Flags字段中也显示出两个包的标志位.第一个是SYN,第二个是SYN,ACK.

那么显然第三个包应该这样工作:

Pack1. Seq = 0xa1 21 e2 42 [Ack = 0x00 00 00 00]

Pack2. Seq = 0x97 0f 37 11 Ack = 0xa1 21 e2 43

Pack3. [Seq = 0xa1 21 e2 43] Ack = 0x97 0f 37 12 

主机收到Pack2,取出其中Seq+1赋给Ack,然后给虚拟机做出应答. Pack1中的Ack和Pack3中的Seq在一次完整的三次

握手中似乎没起到什么作用,如果发生丢失可能会起作用吧,这里没条件去测试.

那么,虽然还没正式进入Telnet的核心,但是TCP三次握手的流程基本清晰了.下面小结一下:


1.TCP连接的建立通过三次握手完成.

2.TCP连接建立从传输层出发,TCP报文包装一个IP报头后形成一个IPv4报文经过网络层,然后再包装一个以太网帧头形成一个Ethernet帧通过数据链路层.

3.传输层的TCP报文含有Port端口地址; 网络层的IP报文中含有IP地址; 数据链路层中Ethernet帧含有MAC地址.可见层层

地址的不同之处,以及服务对象的不同之处.

4.三次握手规则就不再阐述了.


②身份确认

TCP连接建立后,主机和虚拟机相互交换一些信息,包括服务端的配置信息,主机的应答,是否需要登录等等,并且间断使用TCP

包保持连接.

当双方信息得到确认后,虚拟机发送欢迎信息(Welcome to Microsoft Telnet Service \r\n),主机做出应答

,随后又发送(\n\rlogin:),主机做出应答,然后同步一次,主机在CMD发生中断,接收用户输入,虚拟机等待用户输入.

主机输入一个字符就发送一个Telnet报文,然后远程返回一个应答,之后主机发送一个TCP报文.

三个一组:Telnet Telnet TCP

当然最后还有一个回车符\r\n也要产生三个数据包.

回车符发送之后,远端立即回送一个\n\rpassword:要求输入密码.

密码输入过程略有不同,一个字符产生两个包,一个是Telnet,一个是TCP.密码明文传输.


③命令执行和响应

完成密码输入后,服务端验证成功后发送一个Telnet报文询问是否Do Terminal Type开始执行命令行,主机客户端回应Will Terminal Type,将要执行,然后双方发送Suboption End消息,之后服务端放送欢迎消息,如图:

那么之后就可以开始输入命令了,我输入的是net user\r\n

和之前输入用户名的传输方法基本一样.两个Telnet一个TCP同步.

完成输入后回车,服务端执行命令并作出回应:

可以看到Administrator Guest HelpAssistant等字样,说明正确返回了执行结果.


关闭CMD窗口时,产生了4个TCP包,第一个TCP包设置标志位FIN告知本次通信结束,服务端回应一个TCP,

表示做好准备关闭连接,随后又发送一个TCP包设置FIN告知客户端要准备断开连接并断开,客户端应答一个表示已断开.通信结束.

这是典型的关闭TCP连接的过程.

总结:

Telnet服务是建立在TCP基础之上的,保证数据的准确性.

建立连接后,每键入一个字符就要发送和应答,产生至少2个数据包,开销很大.

传统的Telnet由于密码明文传输的问题,帐号和密码等敏感资料容易会被窃听,因此很多服务器都会封锁Telnet服务,改

用更安全的SSH.


PS:本文是博主第一次尝试使用Wireshark进行网络协议分析,今后可能还会分析互联网其它一些协议,计算机网络

也是闲来无事自学的,本身非计算机专业,所以文中难免有专业术语或者概念性错误,还请批评指正!谢谢.

© 著作权归作者所有

共有 人打赏支持
Micooz
粉丝 41
博文 33
码字总数 51094
作品 1
其它
其他
加载中

评论(3)

诸葛靓仔
诸葛靓仔
语文好差
梁欢
梁欢
g
gm100861
很详细,顶一下。
浅谈使用tcpdump、wireshark对Android应用程序进行抓包并分析

本文主要介绍如何使用tcpdump和wireshark对Android应用程序进行抓包并分析,需要说明的是在抓包之前,你的Android设备必须root过了,另外你的电脑必须有Android SDK环境。 下载并安装tcpdump...

科技创造 ⋅ 2014/09/24 ⋅ 0

tcpdump抓包命令及结果分析

tcpdump抓包分析详解 tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看...

jalyzjs ⋅ 05/15 ⋅ 0

Wireshark和TcpDump抓包分析心得

1. Wireshark与tcpdump介绍 ?Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话,我直接用tcpdump了,因为我工作环境中...

糖糖豆豆 ⋅ 2014/10/28 ⋅ 0

手机数据抓包入门教程

手机数据抓包入门教程 试读地址:http://pan.baidu.com/s/1hqf9N9a 介绍:本教程从专业的角度讲解手机抓包的各种方式,同时也对常见的UDP、TCP通信模式详细讲解。最后针对HTTP协议类应用,本...

大学霸 ⋅ 2015/04/16 ⋅ 1

PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and Defense with Python》一书,为了解决很...

zting科技 ⋅ 2017/01/11 ⋅ 0

基于Web方式的数据包捕获实践

基于Web方式的数据包捕获实践 抓包是运维的必备技能,很多网络故障需要靠抓包来解决,如常见的ARP欺骗和广播风暴。另外还有一些网线或光纤接触不好的故障,不抓包也很难分析出来,例如两个公司...

李晨光 ⋅ 2016/03/22 ⋅ 0

基于Web方式的数据包捕获实践

基于Web方式的数据包捕获实践 实验环境:下文基于 OSSIM 4.15.2 平台得出实验结论。 抓包是运维的必备技能,很多网络故障需要靠抓包来解决,如常见的ARP欺骗和广播风暴。另外还有一些网线或光...

OSSIM ⋅ 2016/03/22 ⋅ 0

wireshark怎么抓包、wireshark抓包详细图文教程

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。 为了安全考虑,wir...

Marvin_Chen ⋅ 2016/07/04 ⋅ 0

当tcpdump遇到Wireshark

当tcpdump遇到Wireshark,会撞出什么火花呢? Wireshark is a network packet analyzer(网络报文分析器),用于解决网络问题,安全问题,调试协议。运行于window PC下可将报文可视化和流量统计...

robot_test_boy ⋅ 2017/12/30 ⋅ 0

渗透测试实战

软件测试有很多种,如黑盒测试,功能测试等。 今天介绍渗透测试。 渗透测试一般在黑客中运用,黑客当然不是骇客(cracker),是有区别的。 渗透测试可以说是黑客攻击的一种,通常的黑客攻击包...

crossmix ⋅ 2015/12/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 4分钟前 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 26分钟前 ⋅ 0

用户登录信息-钉子效果(基于jquery2.0)

本js效果使用jquery2.0,清晰的分解用户登录信息的(钉子效果),该效果直接用在作者网站(www.phpkhbd.com)上。 里面的难点有:定时器,延时。 大致效果如下: 一开始: 鼠标放上去的时候:...

宁哥实战课堂 ⋅ 27分钟前 ⋅ 0

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 38分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 43分钟前 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 48分钟前 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 49分钟前 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 50分钟前 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 今天 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部