zoukankan      html  css  js  c++  java
  • 第二次实验报告:使用Packet Tracer分析应用层协议

     0.个人信息

      班级:计算1811

      姓名:罗廷杨

      学号:201821121013

    1.实验目的

    熟练使用Packet Tracer工具。分析抓到的应用层协议数据包,深入理解应用层协议,包括语法、语义、时序。

    2.实验内容

    使用Packet Tracer,正确配置网络参数,抓取应用层协议的数据包并分析,协议包含DNS、FTP, DHCP, stmp, pop3。步骤包含:

    • 建立网络拓扑结构
    • 配置参数
    • 抓包
    • 分析数据包

    3.实验报告

    网络拓扑结构

     分析:该拓扑结构表示客户端终端和服务器端之间的请求和应答。

    3.1 DNS

    3.1.1 配置参数

    客户端参数配置:

     DNS服务器参数配置:

     3.1.2 建立连接

    3.1.3 抓包并分析抓到的数据包

    抓包

     

     

     

     

     

     

     

    分析抓到的数据包:

       域名解析总体可分为两大步骤,第一个步骤是本机向本地域名服务器发出一个DNS请求报文,报文里携带需要查询的域名;第二个步骤是本地域名服务器向本机回应一个DNS响应报文,里面包含域名对应的IP地址。从上面对tingyang.luo进行域名解析的报文中可明显看出这两大步骤。注意:第二大步骤中采用的是迭代查询,其实是包含了很多小步骤的,详情见下面的流程分析。 

    其具体的流程可描述如下:

    1. 主机先向本地域名服务器进行递归查询
    2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
    3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器 的IP地址
    4. 本地域名服务器向顶级域名服务器进行查询
    5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
    6. 本地域名服务器向权限服务器进行查询
    7. 权限服务器 告诉本地域名服务器所查询的主机的IP地址
    8. 本地域名服务器最后把查询结果告诉 主机

    其中有两个概念递归查询和迭代查询,其实在整个描述的过程中已经体现的很明显,这里再说明一下:

    • 递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
    • 迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它是以客户机的身份去各个服务器查询

      DNS报文格式

     

      头部

      1. 会话标识(2字节):是DNS报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应。

      2. 标志(2字节):

      

       

      3. 数量字段(总共8字节):Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四个区域的数目。Questions表示查询问题区域节的数量,Answers表示回答区域的数量,Authoritative namesversers表示授权区域的数量,Additional recoreds表示附加区域的数量

      正文

      1. Queries区域

       

       1.1 查询名:长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名(如果是反向查询,则为IP,反向查询即由IP地址反查域名),一般的格式如下图所示。

       1.2 类型查询:

      

      1.3 查询类:通常为1,表明是Internet数据

      2. 资源记录(RR)区域(包括回答区域,授权区域和附加区域)

       

       该区域有三个,但格式都是一样的。这三个区域分别是:回答区域,授权区域和附加区域

      2.1. 域名(2字节或不定长):它的格式和Queries区域的查询名字字段是一样的。有一点不同就是,当报文中域名重复出现的时候,该字段使用2个字节的偏移指针来表示。比如,在资源记录中,域名通常是查询问题部分的域名的重复,因此用2字节的指针来表示,具体格式是最前面的两个高位是 11,用于识别指针。其余的14位从DNS报文的开始处计数(从0开始),指出该报文中的相应字节数。一个典型的例子,C00C(1100000000001100,12正好是头部的长度,其正好指向Queries区域的查询名字字段)。

      2.2 查询类型:表明资源纪录的类型,见1.2节的查询类型表格所示 

      2.3 查询类:对于Internet信息,总是IN

      2.4 生存时间(TTL):以秒为单位,表示的是资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间,它同时也可以表明该资源记录的稳定程度,极为稳定的信息会被分配一个很大的值(比如86400,这是一天的秒数)。

      2.5. 资源数据:该字段是一个可变长字段,表示按照查询段的要求返回的相关资源记录的数据。可以是Address(表明查询报文想要的回应是一个IP地址)或者CNAME(表明查询报文想要的回应是一个规范主机名)等。

    3.1.4 通过该实验产生新的疑问及解答 

    疑问:

    DNS域名解析系统中缓存的工作机制是怎么样的?

    解答:

    为了增加访问效率,计算机有域名缓存机制,当访问过某个网站并得到其IP后,会将其域名和IP缓存下来,下一次访问的时候,就不需要再请求域名服务器获取IP,直接使用缓存中的IP,提高了响应的速度。当然缓存是有有效时间的,当过了有效时间后,再次请求网站,还是需要先请求域名解析。

    疑问:

    访问的IP已变化了,仍然使用缓存中的IP来访问,导致访问失败,要怎么解决?

    解答:

    可以手动清除DNS缓存或者禁止DNS缓存机制。

    ipconfig/displaydns   -查看被缓存的域名解析       

    ipconfig/flushdns       -清空DNS缓存

    3.2 FTP

    3.2.1 参数配置:

     3.2.2 建立链接

     

     3.2.3 抓包并分析抓到的包

    抓包:

     

     

     

     分析抓到的包:

      FTP使用客户端-服务器模型,一个FTP服务器进程可以为多个客户进程提供服务。FTP服务器有两大部分组成:一个主进程,负责接受新的请求;还有若干从属进程,负责处理单个请求。主进程工作步骤

    • 打开熟知端口,使客户进程能够连接上
    • 等待客户进程发送连接请求
    • 启动从属进程处理客户进程发送的连接请求,从属进程处理完请求后结束,从属进程在运行期间可能根据需要可创建其他一些子进程
    • 回到等待状态,继续接受其他客户进程发起的请求,主进程与从属进程的处理是并发进行的

      FTP工作实况:

      

       FTP控制连接在整个会话期间都保持打开,只用来发送连接/传送请求。当客户进程向服务器发送连接请求时,寻找连接服务器进程的熟知端口21,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口20与客户进程所提供的端口号码建立数据传送连接,FTP使用了2个不同的端口号,所以数据连接和控制连接不会混乱。

      FTP的工作模式:

      FTP有两种工作模式,分别是主动模式(PORT)和被动模式(PASV)两种模式,这两种模式是按照FTP服务器的“角度”来说的,更通俗一点说就是:在传输数据时,如果是服务器主动连接客户端,那就是主动模式;如果是客户端主动连接服务器,那就是被动模式。

      FTP响应码:

       

    3.2.4通过该实验产生新的疑问及解答

     疑问:

    FTP服务器端如果有防火墙,那么要使用什么FTP模式进行数据连接?

    解答:

    FTP服务器端如果有防火墙,需要在防火墙开21和20端口,使用主动模式进行数据连接。

    3.3 DHCP

    3.3.1 参数配置

     3.3.2 建立连接

     

     3.3.3 抓包并分析抓到的包

    抓包:

     

     

     

     

     

     分析抓到的包:

       DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。DHCP 协议是基于UDP层(这也就是说在snort检测过程中,只能看UDP的包)之上的应用,DHCP使用UDP携带报文,UDP封装在IP数据包中发送。以下是DHCP报文格式

    DHCP报文格式:

    OP:若是client送给server的封包,设为1,反向为2;

    Htype:硬件类别,ethernet为1;

    Hlen:硬件长度,ethernet为6;

    Hops:若数据包需经过router传送,每站加1,若在同一网内,为0;

    Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;

    Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;

    Flags:从0-15bits,最左1bit为1时表示server将以广播方式传送封包给 client,其余尚未使用;

    Ciaddr:用户IP地址;

    Yiaddr:客户IP地址;

    Siaddr:用于bootstrap过程中的IP地址;

    Giaddr:转发代理(网关)IP地址;

    Chaddr:client的硬件地址;

    Sname:可选server的名称,以0x00结尾;

    File:启动文件名;

    Options:,厂商标识,可选的参数字段

    报文类型:

    1. DHCPDISCOVER(0x01),此为Client开始DHCP过程的第一个报文

    2. DHCPOFFER(0x02),此为Server对DHCPDISCOVER报文的响应

    3. DHCPREQUEST(0x03),此报文是Client开始DHCP过程中对server的DHCPOFFER报文的回应,或者是Client续延IP地址租期时发出的报文

    4. DHCPDECLINE(0x04),当Client发现Server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知Server禁止使用IP地址

    5. DHCPACK(0x05),Server对Client的DHCPREQUEST报文的确认响应报文,Client收到此报文后,才真正获得了IP地址和相关的配置信息。

    6. DHCPNAK(0x06),Server对Client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。

    7. DHCPRELEASE(0x07),Client主动释放server分配给它的IP地址的报文,当Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。

    8. DHCPINFORM(0x08),Client已经获得了IP地址,发送此报文,只是为了从DHCP SERVER处获取其他的一些网络配置信息,如route ip,DNS Ip等,这种报文的应用非常少见。

    如:运行IPCONFIG/RELEASE后,PC会发出释放IP的报文,DHCP Message Type是7,他的作用是主动释放server分配给它的IP地址的报文,Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。

    如果一台客户机未从该DHCP服务器获取过地址,或者它获得的地址已过期,那么它将需要经过全部四个步骤才能得到一个IP地址。

    3.3.4 通过该实验产生新的疑问及解答

    疑问:

    DHCP分配的地址是永久性的吗?

    解答:

    一台DHCP工作在网路上面﹐它会监听网路的DHCP请求﹐并与客户端搓商TCP/IP的设定环境。它提供两种IP定位方式:1.  自动分配:其情形是,一旦DHCP客户端第一次成功的从DHCP伺服器端租用到IP位址之后﹐就永远使用这个位址。2.  动态分配:当DHCP第一次从DHCP伺服器端租用到IP位址之后﹐并非永久的使用该位址﹐只要租约到期﹐客户端就得释放(release)这个IP位址﹐以给其它工作站使用。当然﹐客户端可以比其它主机更优先的延续(renew)租约﹐或是租用其它的IP位址。所以,是否为永久性地址与客户使用的IP定位方式有关。

    3.4 smtp和pop3

    3.4.1 参数配置

     

     3.4.2 建立连接

    发邮件:

     

     收邮件:

     

     

     3.4.3 抓包并分析抓到的包

    抓包:

    P0----->Server0:

     

     

     

     

    Server0----->P0:

     

    分析抓到的包:

     1. SMTP协议

            SMTP协议 服务器的熟知端口号为25 ,与之前总结过的telnet协议和FTP协议类似的地方是,SMTP协议的客户端和服务器端都是通过命令和响应的形式进行交互 ,即SMTP客户通过命令向SMTP服务器发送操作请求,而服务器则通过3位的数字对响应的请求作出响应。SMTP规定了14条命令和21中应答信息,每条命令有4个字母组成,而每一种应答一般只有一行信息,有一个3位数字的代码开始,后面附上很简单的附加说明。

           邮件传送主要包括3个阶段: 建立连接 、 邮件传送 和 终止连接 。

           建立连接阶段:

           (1).当SMTP客户端每隔一定时间对邮件缓存扫描一次,如发现有邮件,就使用SMTP的熟知端口号25与接收方的邮件服务器的SMTP服务器建立TCP连接。

           (2).接收方SMTP服务器发出“220 Service ready"告诉客户端它已经准备好接收邮件。若服务器未就绪,它就发送代码421(服务器不可用)。

           (3).客户发送HELO报文,并使用它的域名地址标志自己。目的是:用来把客户的域名通知服务器,值得注意的是, 在TCP的连接建立阶段,发送方和接收方都是通过它们的IP地址来告诉对方的 。(HELO报文是最初的,用户名和密码都不加密。现在改为EHLO,用户名和密码都进行base64编码发送)

           (4).服务器响应代码250(请求命令完成)或根据情况的其他一些代码。

          报文传送阶段:

           在SMTP客户与服务器之间建立连接后,发件人就可以与一个或多个收件人交换单个的报文了。若收件人超过一个,则下面步骤3和步骤4将重复进行。

            (1).客户发送MAIL FROM报文介绍报文的发送者。它包括发送人的邮件地址(邮箱名和域名,如house@qq)。这个步骤是必要的:因为可以给服务器在返回差错或报文时的返回邮件地址 。

            (2).服务器响应代码250(请求命令完成)或其他适当的代码。

            (3).客户发送RCPT(收件人)报文,包括收件人的邮件地址,RCPT命令的作用是 : 先弄清接收方系统是否已经准备好接收邮件的准备,然后才发送邮件,这样做视为了避免浪费通信资源,不至于发送了很长的邮件以后才知道是因地址错误 。

            (4).服务器响应代码250或其他适当的代码。

            (5).客户发送DATA报文对报文的传送进行初始化,DATA命令表示要开始传送邮件的内容了。

            (6).服务器响应代码"354 Start mail input: end with <CRLF>.<CRLF>"或其他适当的报文(如421 服务器不可用,500 命令无法识别)。

            (7).客户用连续的行发送报文的内容。每一行的行结束时输入 <CRLF>.<CRLF> ,即回车换行.回车换行,表示邮件内容结束。

            (8).服务器响应代码(250 请求命令完成)或其他适当的代码。

            值得注意的是:虽然SMTP使用TCP连接试图使邮件的传送可靠,但它并不能保证不丢失邮件。也就是说,使用SMTP传送邮件只能说可以可靠地传送接收方的邮件服务器,在往后的情况就不知道了。接收方的邮件服务器也许会出故障,使收到的服务器全部丢失(在收件人读取信件之前)。

            终止连接

            在报文传送成功后,客户就终止连接。包括如下步骤:

            (1).客户发送QUIT命令。

            (2).服务器响应221(服务关闭)或其他代码。

            在连接终止阶段后,TCP连接必须关闭。

    2.POP协议

            POP协议, Post office Protocal 。邮件交付的第一阶段和第二阶段使用SMTP,而第三阶段则使用邮件读取协议。SMTP是一个push协议,而第三阶段则使用pull协议,包括POP和IMAP协议,POP主要使用POP3,而IMAP协议则主要使用IMAP4 。

            POP3采用C/S的工作方式。在接收邮件的用户PC机中的用户代理UA必须运行POP3的客户程序,而在收件人所连接的ISP的邮件服务器中则运行POP的服务器程序。POP服务器只有在用户输入鉴别信息(用户名+密码)后,才允许对方对邮箱进行读取 。

            POP3有 两种工作方式 :删除方式和保存方式。删除方式 就在每一次读取邮件后就把邮箱中的这个邮件删除, 保存方式 就是在读取邮件后仍然在邮箱中保存这个邮件,该方式是通过对之前的POP3工作方式(即删除)的缺点进行弥补,对功能进行扩充。

    3.4.4 通过该实验产生新的疑问及解答

     疑问:

    要搭建能够在Internet上使用的邮件服务器需要满足什么条件?

    解答:

    1.在Internet上注册了域名,且有MX记录。

    2.邮件服务器有公网IP地址,或端口映射到邮件服务器(SMTP TCP  25端口)。

    3.5 Telnet

    拓扑图

    分析:在主机上远程连接交换机。

    3.5.1 参数配置

    设置主机IP

    配置交换机

    1. 配置VLAN 1 的IP地址

    Switch>enable

    Switch#configure terminal

    Switch(config)#interface vlan 1

    Switch(config-if)#ip address 192.168.10.1  255.255.255.0

    查看已设置的IP:

    Switch(config)#^Z     (Ctrl+Z组合键)

    Switch#show running-config

    (vlan 1 目前处于关闭状态)

    IP配置完成

    2. 开启vlan 1

    Switch(config)#interface vlan 1

    Switch(config-if)#no shutdown

    Switch(config)#^Z

    Switch#show interfaces vlan 1

    3. 配置交换机本地登录的口令

    Switch#configure terminal

    Switch(config)#enable password luo(明文密码)

    注:取消密码可用no enable password

    检查:

    Switch#show running-config

    4. 开启交换机远程登录及验证

    Switch#configure terminal

    Switch(config)#line vty 0

    Switch(config-line)#password luo (Telnet密码为luo)

    Switch(config-line)#login local

    (login是开启远程登录密码验证,login local不但要求TELNET密码,还要求提供用户名)

    5. 添加可远程登录交换机的用户

    Switch(config-line)#exit

    Switch(config)#username tingyang password luo

    Switch(config-line)#exit

    Switch#show running-config

    3.5.2 建立连接

    在主机P0上:

     

    Ping交换机

    Ping通了。

    Telent+交换机IP后依次输入用户名、密码、本地登录密码即可远程配置交换机

     

     3.5.3 抓包并分析抓到的包

    抓包

     

     

     分析抓到的包

    Telnet工作流程:

    1.客户端首先在本地加密当前用户的密码成为密码散列
    2.客户端服务器发送自己的帐号,这个帐号是没有经过加密的,明文直接传输
    3.服务器产生一个16位的随机数字发送客户端,作为一个 challenge(查问口令;盘问)
    4.客户端再用加密后的密码散列来加密这个 challenge ,然后把这个返回给服务器。作为 response(响应)
    5.服务器把用户名、给客户端的challenge 、客户端返回的 response 这三个东西,发送域控制器
    6.域控制器用这个用户名在 SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密 challenge。
    7.域控制器比较两次加密的 challenge ,如果一样,那么认证成功。
    从上面的过程我们可以看出,NTLM是以当前用户的身份向Telnet服务器发送登录请求的,而不是用你扫到的对方管理员的帐户和密码登录,显然,你的登录将会失败。举个例子来说,你家的机器名为A(本地机器),你入侵的机器名为B(远地机器),你在A上的帐户是xinxin,密码是1234,你扫到B的管理员帐号是Administrator,密码是5678,当你想Telnet到B时,NTLM将自动以当前用户的帐号和密码作为登录的凭据来进行上面的7项操作,即用xinxin和1234,而并非用你扫到的Administrator和5678,且这些都是自动完成的,根本不给你插手的机会,因此你的登录操作将失败。

    常用的TELNET选项协商如下:

    • WILL (option code) 251 指示希望开始执行,或者确认现在正在操作指示的选项。
    • WON'T (option code) 252 指出拒绝执行或继续招待所指示的选项。
    • DO (option code) 253 指出要求对方执行,或者确认希望对方执行指示的选项。
    • DON'T (option code) 254 指出要求对方停止执行,或者确诊要求对方停止执行指示的选项。

    对于接收方和发送方有以下几种组合:

    TELNET 选项协商的六种情况

    Telnet选项代码:

    3.5.4 通过该实验产生新的疑问及解答

    疑问:

    域名无法解析,输入命令:telnet www.baidu.com后出现下列问题,如何解决?

    [moiaopr@CNSZ443239 ~]$ telnet www.baidu.com
    Trying 14.215.177.38...
    telnet: connect to address 14.215.177.38: Connection timed out
    Trying 14.215.177.37...
    telnet: connect to address 14.215.177.37: Connection timed out
    [moiaopr@CNSZ443239 ~]$ 

    解答:
    处理这种情况方法:
    1. 确认域名是否正确
    2. 确认本机的域名解析有关的设置是否正确(/etc/resolv.conf中nameserver的设置是否正确,如果没有,可以使用nameserver 8.8.8.8)
    3. 确认防火墙是否放开了UDP53端口的访问(DNS使用UDP协议,端口53,使用iptables-save查看)。

    参考资料:

    [1] https://blog.csdn.net/tianxuhong/article/details/74922454

    [2] https://www.cnblogs.com/luoxn28/p/5585458.html

    [3] https://blog.csdn.net/one_in_one/article/details/51684551

    [4] https://blog.csdn.net/qq_41745698/article/details/83210807

    [5] https://blog.csdn.net/u011981018/article/details/50931361

  • 相关阅读:
    java 面向对象(六):类结构 方法(三) java的值传递机制
    java 面向对象(五):类结构 方法(二) 关键字:return;方法的重载;可变个数形参的方法
    java 面向对象(四):类结构 方法(一)
    java 面向对象(三):类结构 属性
    java 面向对象(二):JVM内存结构
    java 面向对象(一):类与对象
    java 基本语法(十三) 数组(六)数组的常见异常
    java 基本语法(十二) 数组(五)Arrays工具类的使用
    java 基本语法(十一) 数组(四)数组的常见算法
    java 基本语法(十) 数组(三) 二维数组
  • 原文地址:https://www.cnblogs.com/lty1661489001/p/11552597.html
Copyright © 2011-2022 走看看