基于wireshark的telnet分析

2024-10-27 16:09:57

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

基于wireshark的telnet分析

3、其中以太网v2头是由数据链路层加上去的:1-6bytes是目的地址,也即虚拟机的网卡MAC,7-12bytes是源地址,也即宿主机MAC.13-14(0x0800)是上层协议,这里是IP第二段是ipv4的报文,网际协议IP是工作在网络层,也就是数据链路层的上层,上图数据区选中部分就是ipv4数据,其格式为:

基于wireshark的telnet分析

5、这里说明了TCP的源瞿搋村乇端口52456也就是宿主机建立连接开出来的端口,目的端口23显然是telnet服务默认端口.Acknowledgment number确认序号4bytes,为0,因为还是第一个握手包.Header Length头长度32字节,滑动窗口大小8192字节(8MB),校验和,紧急指针为0.Options选项12字节,其中包含最大传输单元MTU默认是1460bytes.第二个TCP数据包,它是一个来自虚拟机的应答,按照三次握手的原则,这个数据包中TCP报文确认序号应该等于上一个请求包中的同步序号+1Pack1. Seq = 0xa1 21 e2 42 Ack = 0x00 00 00 00Pack2. 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 43Pack3. [Seq = 0xa121 e2 43] Ack = 0x97 0f 37 12主机收到Pack2,取出其中Seq+1赋给Ack,然后给虚拟机做出应答.总之,建立连接的步骤如下:1.TCP连接的建立通过三次握手完成.2.TCP连接建立从传输层出发,TCP报文包装一个IP报头后形成一个IPv4报文经过网络层,然后再包装一个以太网帧头形成一个Ethernet帧通过数据链路层.3.传输层的TCP报文含有Port端口地址; 网络层的IP报文中含有IP地址; 数据链路层中Ethernet帧含有MAC地址.可见层层地址的不同之处,以及服务对象的不同之处.4.三次握手规则.2、身份确认TCP连接建立后,主机和虚拟机相互交换一些信息,包括服务端的配置信息,主机的应答,是否需要登录等等,并且间断使用TCP包保持连接.当双方信息得到确认后,虚拟机发送欢迎信息(Welcome to Microsoft Telnet Service \r\n),主机做出应答,随后又发送(\n\rlogin:),主机做出应答,然后同步一次,主机在CMD发生中断,接收用户输入,虚拟机等待用户输入.

基于wireshark的telnet分析

7、当然最后还有一个回车符\r\n也要产生三个数据包.回车符发送之后,远端立即回送一个\n\rpassword:要求输入密码.

基于wireshark的telnet分析

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

基于wireshark的telnet分析

11、和之前输入用户名的传输方法基本一样.两个Telnet一个TCP同步.完成输入后回车,服务端执行命令并作出回应:

基于wireshark的telnet分析
猜你喜欢