00:07
大家好,今天呢,我们开始进入结果学习分析啊这个章节。那首先我们先来了解一下我们,嗯,在互联网领域里面经常用到的这些协议。那我们在大学的教科书上曾经学过啊,OSI的一个七层网络模型,这是一个非常理想的,就是设计的非常完善的一个啊网络模型,它是分了这样一个物理层,数据链路层,网络层,传输层,绘画层,表示层,应用层这样的一个七层的这样一个模型,但是因为历史原因啊,TCP这个协议。啊,它成为了整个互联网的一个底层协议。而TCBIP协议在设计之初呢,并没有按照这个严格的七层模型,它是按照四层模型来进行设计的,也就是分成了网络接口层、网呃,网络层,传输层和应用层。那么网络接口层呢,负责我们嗯,对底层啊这种物理接口的一个通讯,网络层呢,负责网络之间的数据包的一个传递,传输层用来决定与目标服务器之间要建立什么样的一个连接方法,那么根据呃是否建立链接分成T和U。
01:16
那先建立握手协议,进行通讯的是TCP协议,那直接发送包的是up的这个协议。那么基于这两个协议之上,针对具体的一个应用层应用领域啊,它又有各自的一个协议站,比如说负责域名解析的是DNS负责,呃,这种网站呢,是超文本的一个传输协议HTP。那还有一些像文件的传输协议,邮件的发送协议啊,每个领域都有自己的一些专属的协议。那这个呢,就是我们互联网上比较嗯常用的大家常见到的这些网络的一个协议,而我们在测试过程中会遇到的一些类似于像double,类似于像啊谷歌的proTo B,那么这些协议呢,本质上也是属于TC pip协议这个技术站的,只不过是工作于。
02:11
好,那么了解了我们这些常见的协议之后,接下来我们来看一下如何去分析这些协议。只要分析的清楚这些协议,将来呢,我们去构造数据啊,去分析服务器之间是怎么通讯的,那么就有一个很好的一个基础,有这个基础,将来我们设计用例,构建各种各种各样的一个用例,我们就有个很好的很好的一个参考。我们先看一下协议分析的主流的一些工具。嗯,我们把它分成两两大类,第一个是属于网络监听这个模式的。那么利用啊网在网络层进监听来抓到所有的数据包,并且进行分析的工具啊,主要是T与y Sha。嗯。这个协议呢,它很容易的帮我们去抓到所有的BIP的一个数据包啊,是一个非常强大的一个工具。但是呢,他在分析高层协议的时候,比如像分析HB协议的内部细节的时候,他也不是特别的方便,所以只是适合分析一些偏底层的一些协议,我们会使用这个组合。
03:12
而到了高层。比如像。嗯,HTB协议,那么我们更多的会使用代理工具来去进行分析,那么代理工具有哪些呢?嗯,比如说像chairs,像mitm proxy,其他的比较知名的,大家在Windows上用的比较多的是非了啊,以及阿里的and proxy,那么整体上给大家推荐是手工测试的话,你就使用就可以了,这是一个最强大的一个代理工具。如果你是个黑客,或者说是一个白帽子这种安全测试工程师,那么你可以使用像这类的这个很强大的一个工具。如果说你是个测试开发工程师啊,我们想编写一些比如说用例,呃,接口测试用例自动生成啊,自动来完成接口的一些字段的啊,自动的这种变异的一个测试。
04:00
啊,以及我们需要对它很便捷的做一些mark。呃,类似于这类的操作,你可以使用mitm pro,它可以让你能够定制出来更强大的一些代理Mo以及fast这样的一些测试工具,叫MIT pro。一旦我们分析好的协议啊,那自然也需要进行相关的测试,那么针对这些协议呢,发包的工具那有也有几个比较知名的,如果是网络层啊,网络层我们信用的相对来说比较少,但是呢,也有一个很不错的工具叫ne cat,简称NC,这是一个俗称呢,黑客界的一个叫网络君道,网络瑞士近道啊,是不很牛的一个工具,那对于QA来说,通常很少用到NC这种。底层的TCB建立连接的一个工具。而对于测试工程师来说,我们用的最多的其实是克命令和postman这两个工具。其中克命力。是一个很便捷的,呃,这种命令行的一个工具,那很多的网络协议工具啊,都对客命令提供了一个支持,可以一键转成客命令,而posts曼呢,也是一个啊,目前在测试圈使用的比较广漫一个工具,它是一个图形化的工具,当然也有一个完整的生态,可以做相关的各种各样的结构测试的一个工具。
05:19
这是目前比较知名的测试车,比较知名的两个,嗯,协议的一个发送工具。那接下来我们来看一下,如果说我要去分析协议,我们从对吧,我们从一个底层开始起步,我们先从TCBMP啊开始。啊,开始去了解一下怎么去分析这些数据包。那TCP啊,是个Linux啊,这个非常经典的一个工具啊,那么它这个用法呢,我在右侧的截图也给大家提啊,做一个简单的展示,你它本身呢,运行是需要一个速度权限的,就是需要root权限,因为监听网络体网络层的这个数据报是一个比较敏感的一个权限,那么通常它是需要有root权限,所以说我们需要加。
06:04
然后你可以给他一些对应的主机,他就可以帮你去监听那么所有啊发送的这些数据包。啊,这是tdp的一个一个用法,那么它常见的一参数,比如说杠X把抓到的数据包啊,以16进制进行展示啊。杠W,嗯,把抓到的数据把它保存到文件里面,那TC本身的命令哈,它是支持一个很非常灵活的一个表表达式的啊,这个表达式非常强大,我们经常用到的,比如说你可以在它的一个。啊,参数里面去输入一下IP协议还是TCP协议对吧,然后呢,可以过滤处根据主机名进行过滤,根据端口根据过滤,也可以根据来源和目的地来进行过滤,它也支持非常灵活的and or这种逻辑表达式,所以说这个表达式很强大的。这是一个tmp的一个命令,接下来我们再看与T配合的另外一个工具叫。
07:04
We Sha呢,它既可以在你的桌面端监控你的数据,你的数据包的一个发送,同时呢,它还可以分析TC所产生的这个日志文件。它本身的一个UI设计也非常的好,几可以把数据包的很多细节都非都会分析的非常的那个透彻。嗯,所以说这个Y加T是整个互联网里面是一个很强大的一个组合。那通常的情况下,我们的应用场景,我们会在比如说我们会在手机上通过TC去行抓包,抓到的数据包保存到文件,然后再导到外Sha里面来进行相关的一个分析。好,那么接下来呢,我们给大家举一个场景,我们以啊抓取访问百度的这个数据包为例啊,告诉大家怎么去使用这两个场景,首先呢,我们先使用solo啊T这样一个host啊3W点百度点com这样一个网址杠,W呢是把数据传到我们的,呃,一个写到数据文件。
08:08
接着呢,为了模拟一次比较干净的网络发送,我们使用客这个命令,客命令呢,可以直接发起一个HP的请求,呃,这个呢相对来说比较干净,大家可以很好的看到这个中间的一个数据的一个传输过程。我一旦上面的命令开始运行,接下来你开一个窗口,就可以输入客命令来完成对百度的一个访问。发问完成之后呢,其实你就可以停止TCP dump这个命令了,停止完成之后呢,用wi Sha打开TCP dump这个我们刚才保所保存下来的一个日志文件。那接下来呢,我给大家看一下这两个命令的一个用法。比如说我们先通过这个命令来去抓数据包,他邀请你输入一个用户名和密码。
09:07
嗯。OK,可以吗,继续。首先就是我们需要搜输入你的用户名啊,输入你的密码,然后就开始处于一个监听模式,它是开始监控百度这个数据包。嗯,接着呢,我们在另外一个窗口发起一次请求。比如客。他就会开始去访问百度,访问百度之后呢,我们在这用CTRLC去结束这个命令,它总共提示你会抓到了297个包,抓完这个包之后呢,整个协议啊,就已经被存到了像这个日志下面,所以说我们接下来就可以使用y Sha直接对它做分析,那么这个呢,就是y Sha那抓到了一我们呃访问百度的一个过程。就是我拿了一个之前的日志来给大家去看看一下,首先我们看一下整个流程啊。
10:01
这个流程是我的客户端程序,那首先它有原IP,我的IP是200,就是我的局域网的IP,我还有一个端口与远程服务器之间进行链接,百度现在这次访问的百度的一个地址是这样一个IP地址,访问的是他的巴黎端口。那这是第一次啊,数据包的一个网络发送,在发送过程中啊,其实它的数据包细节大家可以在这个地方看到。啊,每一层比如IP协议啊,TCP协议。每一层都有一个协议啊。那比如说TC pip的协议细节,他会把每一个字段都给你拆解出来,让你了解整个的发送过程。好,那么。嗯,上面呢,也是一个IP协议,IP协议的一个细节也可以在这里面看到。好,那么了解了这个,呃,这个数据包怎么去观看之后呢,我们看一下它里面关键的一些标记,其中这儿呢,有个叫TCP协议的一个标记。我们可以在这个地方也可以看到。
11:03
比如说是在那个。它有一个flags。这是TCB协议啊,比较经典的一个描述自己状态状态的一个字段,这里面呢,把常见的TC bib的这个,这些flag全都给你展示出来了,比如说sinin po SK等各种各样的这个。这个状态位,这个标记位啊,都可以可以看到这个字段,它通过一个字段就可以表示常见的这些状态。那当我们第一次去访问百度的时候,首先是我们的客户端啊,首先建立发起了一个数据包,发送了远程的服务器。说他这个,他带一个关键的标记位叫S。那SVN这个标记位,你可以看到这个状态为它是设置唯一的表示,这是个syn包,那他发给服务器表明我要准备建立一个链接了啊,这时候呢,服务器你可以到服服务器呢。
12:00
返回了一个数据包给我的客户端,他带了一个标记,就是SN加上一个SK。所以说你打开这个数据包,你可以注意到SN这个标记为被设置为一,同时AK这个物标记为也设设置为一。那么第三个数据包是什么呢?我的客户端OK,我收到了服务器给我的一个S端在SK的一个响应,接着呢,我的客户端再发给一个服务器ack,就是确认我我这边也已经OK了,那么这个数据包完整的握手过程就已经建立。所以呢,这个通常呢,也称前三步啊,称之为是STB协议的一个三次握手协议。那么到了第四步就开始完成一个基本的握手之后,OK,接下来他们之间才开始真正的去传输他的网络的数据包,所以从这里面就可以看到啊,我们能够抓到它的一些像HTP这个协议的一个数据包的一个内容。这是一次网络请求。接着服务器又返回了一堆的HTP的一个response响应,你可以看到里面大多数都是文本,以及一个成功的一个状态,好,这就是数据的一个传输。
13:09
那到了最后,我的网,我的数据传输完成之后,我怎么进行结束呢?这儿又有一个机制叫四次挥手。四字回首是什么意思呢?我们看一下前面。当所有的数据包传递完成的时候,其实客户端这个时候收到自己想要的包,数据包之后呢,它会给服务器发送一个状态叫标记位,就是嗯,Fin这个标记位是置个一,同时呢,Ack这个标记位是置一,表示说我的传输也已经完成了,可以结束了。那么服务器呢,收到了请请求之后呢,他会先回复给你一个AK,就是我确认我已经知道了,你要结束这个链接的一个请求,服务器呢,接在还未再给客户端再发一条消息说我确认现在已经可以接受,可以接受了。那这个时候呢,客户端OK才开始。再发一个数据包,就是确认OK,我已经收到你的消息,我现在开真正开始结束,所以称整个过程呢,我们也称之为啊,是一个叫四次挥手的一个过程。
14:09
那。这个过程呢,嗯,我们死记硬背各种概念肯定是理解不透彻的,所以我说,所以说呢,我建议你就像我一样啊,执行一下相关的命令,把对应的数据包抓出来,去看一下相关的几个数据包啊,你就可以很清楚了。那整个三次握手对吧,一与四次挥手的过程,我通过啊这样一个图给大家截了出来,好给大家去看一下啊,前三次数据包就是SNSNSK加上SK。这样做成了一次三次的握手,四次挥手呢是由客户端,嗯,都是由客户端首先发起创建一个加ICK这样的一个包,然后呢,服务器会回复确认,回复确认之后呢,服务会再次去发一个in加SK,就是我确认我已经处理好收尾工作,你可以接受了。
15:04
那这个时候呢,我的客户端收到了这个请求,OK,他发了一个给服务器发一个确认,OK,我已经收到,我现在要正式结束啊,整个通讯协议就已经可以终止。那么三四握手以四挥手也是很多面试官特别喜欢考察的一个。特别考特别喜欢的一个考题,那所以说对这个状态,我建议你啊,能够去理解啊,去理解一下,然后有一个实战,好深入的去掌握其中的这个知识。嗯,好,那我们本节课的内容就到这结束,咱们下节课呢开始讲,嗯,更深入的怎么去分析代理的这些知识点。
我来说两句