查看: 1019|回复: 0

消除噪音:科来DPI基础应用之TCP和UDP篇

[复制链接]
发表于 2024-12-2 18:07:03 | 显示全部楼层 |阅读模式
  引言  

科来网络分析系统CSNAS(后文统称CSNAS)提供了深度数据包检测过滤器(即科来DPI)供网络分析师们应对各种不同的分析场景进行数据包过滤。因篇幅限制,上一篇我们《消除噪音 科来DPI不同会话视图的灵活应用》讲解了物理会话视图和IP会话视图,今天将继续为大家介绍科来DPI在TCP会话和UDP会话视图中的应用。

  •   CSNAS的TCP会话视图和UDP会话视图  

(1)TCP会话视图
TCP会话视图详细显示网络中TCP连接的通讯会话信息。对于每条TCP会话,都可统计其源地址、目标地址、会话总流量、会话收/发流量、会话收/发的数据包及这些数据包的大小等多种统计参数。在TCP会话子窗口中显示当前选定TCP连接的原始数据包信息、TCP数据流重组信息以及TCP会话时序图。在网络运维根因分析和网络安全研判时, TCP会话视图是网络分析师使用最频繁的视图之一(对TCP视图的界面及功能详细介绍,可参考:CSNAS帮助菜单->常规分析视图->TCP会话视图),如下图:


(2)UDP会话视图:
UDP会话视图详细显示网络中TCP连接的通讯会话信息。每条UDP会话,可以统计其源地址、目标地址、会话总流量、会话收/发流量、会话收/发的数据包及这些数据包的大小等信息。功能使用与TCP会话视图基本一致,不再累述,如下图:


  •   科来DPI在TCP会话视图和UDP会话视图中的应用  

1、TCP和UDP会话视图中的DPI规则语句
上篇文章中已经详细介绍过,本篇不再累述,一张图回顾足已,如下:


在不清楚端点视图中都支持哪些字段数据源的情况下,推荐大家还是先点击输入框旁的帮助图表,如下图:


和物理会话及IP会话不同的地方在于,TCP会话支持的统计字段很多,这里不再一一列举,仅将TCP会话特有的字段数据源列出如下表:
字段名
说明
session.actualsegmentationloss
实际的分段丢失数
session.averageacktime
平均应签时间
session.dstactualsegmentationloss
<-实际的分段丢失数
session.dstalias
<-别名2
session.dstaverageacktime
<-平均应签时间
session.dstduplicateack
<-重复ACK包数
session.dstendtime
<-最后发包时间
session.dstoutoforder
<-乱序包数
session.dstpossiblesegmentationloss
<-可能的分段丢失数
session.dstretransmission
<-重传包数
session.dstttl
<-TTL
session.duplicateack
重复ACK包数
session.filter
会话筛选器
session.maxacktime
传输层最大响应时间
session.outoforder
乱序包数
session.possiblesegmentationloss
可能的分段丢失数
session.retransmission
重传包数
session.srcactualsegmentationloss
实际的分段丢失数->
session.srcaverageacktime
平均应答时间->
session.srcduplicateack
重复ACK包数->
session.srcoutoforder
乱序包数->
session.srcpossibleseqmentationloss
可能的分段丢失数->
session.srcretransmission
重传包数->
session.srcttl
TTL->
session.ttl
TTL

说明:这里面很多字段和“交易分析”相关(交易的概念及字段原理本篇文章不讲解,部分字段的应用方式将在后文的应用举例中具体说明。要深入系统学习网络分析原理、分析方法思路,可报名参加科来CSNA网络分析认证培训)。CSNAS对TCP会话的交易统计如下图:


查看UDP会话的数据源字段方法和TCP相同,不再赘述。

2.应用举例

例1:找出存在大量重传的TCP会话。
过滤语句:session.retransmisson>50

说明:TCP是可靠的传输层协议,如果会话传输过程中产生丢包,会通过重传来保证数据包发送到对端。因此,我们可以通过监测会话中是否出现重传(丢包)来评估线路的通信质量。重传的次数根据网络环境的不同也会不通,我们在监测过程中阈值也会设定得不同。若监测的是无线网络或广域网,则存在重传的会话会很常见;若监测的是数据中心内部,则会话中出现少量重传也会影响业务的质量。

本例我们只作演示,重传阈值设定为50。过滤效果如下图:


注意:
除“重传”外,还有一个类似指标“分段丢失”。这里简单说一下它们的联系与区别:

(1)联系:“重传”与“分段丢失”都是和丢包相关的指标;

(2)区别:在端点1到端点2的方向,“重传”代表在抓包点之后有数据包丢失,而“分段丢失”代表在抓包点之前有数据包丢失。

例2:找出存在大量数据包乱序或大量重复ACK的TCP会话。
过滤语句:session.outoforder>3 || session.duplicateack>20

说明:TCP传输过程中,难免出现先发出的数据包后到达目的地,我们把未能按照发包顺序到达的情况称为乱序(out of order),如果主机端没能按预想的顺序收到数据包,就会发送和前面有一样ACK编号的ACK包去告诉对端,自己未收到想要的数据包(与前面进行正常确认时的数据包的ACK号会重复),我们称这种ACK包为重复ACK(duplicate ack)。发生乱序和产生重复ACK并不说明有丢包发生(参考RFC793中TCP快速重传机制),但也能一定程度反应出网络的通信质量。特别需要说明,抓包位置往往是在网络路径中间,因此,乱序的次数和重复ACK的次数(如抓包点后再发生乱序)是不同的。所以我们在设置过滤条件的阈值时,需要根据抓包点位置和具体网络环境来作具体设置,本例设置的阈值只作演示用。

过滤效果如下图:


例3:找出只存在保活包的长连接会话。
过滤语句:session.duration> 5m && session.bytes<1m && session.packets<100

说明:若主机感染未知木马,偷偷和攻击者产生会话连接,在攻击者没产生任何操作的情况下,为使会话不自动中断,会持续发送保活包让会话保持连接状态。此时,我们可以根据这种会话的特征来进行过滤:

(1)长连接:攻击者不会轻易断开连接,会话时长往往会比正常的业务会话时间更长(这里仅作演示,设置为5分钟,可根据实际情况设置为更长时间);

(2)会话中没有任何操作,只有心跳包队会话产生保活,因此会话产生的数据量很小(这里仅作演示,设置为产生数据小于1m);

(3)心跳包一般15-50秒发送一个,我们可以大概算出一个心跳包的数值区间(过滤出的会话中,如果存在数据包间隔时间固定,且数据包负载不为0,则能确定为是心跳包。这里仅作演示,设置为数据包数小于100);

把以上三个条件合在一起,来过滤满足条件的会话,过滤效果如下图:

本例过滤可进一步添加条件,如保活包携带payload数据,避免与因重复尝试连接或多次超时重传造成的长连接特征相似。过滤语句变为:
session.duration>5m && session.bytes<1m && session.packets<100 && session.payloadlength>0

过滤结果如下:


根据场景不同,过滤条件可作灵活修改,这里就留给读者去自由发挥了。

注意:本例中的过滤语句,会话持续时间和会话字节数都指定了单位,若不指点单位,默认时间单位为秒,数据单位为字节。

例4:找出服务器主动外联的TCP会话。
过滤语句:session.dstlocation !='本地' && session.srclocation = '本地'

过滤效果如下图:

设想场景为境外IP盗取本地服务器资料,可添加条件:服务器外发数据>服务器接收数据,过滤条件如下:
session.dstlocation !='本地' && session.srclocation = '本地' && dstbytes<srcbytes

过滤效果如下:


注意:此处节点1为我们监控的本地服务器。dstbytes为外网IP发送的字节数(即服务器接收的字节数),而srcbytes为服务器发送的字节数。服务器发送数据>服务器接收数据,就是srcbytes>dstbytes。

本例还可以继续增加过滤条件,如会话持续时间,会话字节数等,留给读者思考。

例5:想要查看SSDP的会话流,如何过滤?
分析:SSDP全称简单服务发现协议(Simple Service Discovery Protocol)是建立在UDP上的一种应用层协议,是构成通用即插即用(UPnP)技术的核心协议之一。现在要查看它的会话流,只需要在UDP会话视图中,将SSDP协议的会话过滤出来即可,科来CSNAS支持解析UDP会话流。

过滤语句:session.protocol=ssdp

这里用SSDP举例有2个目的:

1.   CSNAS的UDP会话同样可以显示“数据流”;
2.   大家有没有发现SSDP协议数据流和HTTP很像?它的请求行同样会有“GET”或“POST”.因此,如果我们在数据包视图中想要过滤出请求方式为“GET”或“POST”的HTTP包,可加上过滤条件“protocol!=ssdp”;

例6:找出疑似SQL蠕虫的UDP会话。
分析:SQL和UDP相关的端口号为1434,如果存在蠕虫会话,常有的会话特征为:存在流量突发,短时间内有大量会话,并且每个会话大小都很小,只有1-2个包,每个会话会有相同的某种特征值。

前面“存在流量突发,短时间内有大量会话”通过IP端点和IP会话视图更容易观察,这里仅从UDP视图中入手,分析“每个会话大小都很小,只有1-2个包,每个会话会有相同的某种特征值”。

过滤语句:session.port=1434 && session.packets<=2
过滤效果如下图:


从过滤结果看,满足蠕虫的会话特征。进一步查看UDP会话的内容,发现基本每个会话都有如下特征:

在搜索引擎中就直接提示为SQL蠕虫病毒,如下:


以上为DPI在技术交流版的TCP视图和UCP视图应用举例,在CSNAS商业版中DPI还有2个特别的功能:session.file和session.payload,可以查找流中是否存在文件传输和针对流的内容查找相应会话。

  结语  
本文介绍了科来DPI在TCP会话视图和UDP会话视图中的应用,让网络分析师的分析技能更加丰富了。下篇文章我们将带来科来DPI在日志视图中的应用,敬请期待!


免费易用的流量分析工具下载
扫码关注公众号
更多网络分析技术、技巧、干货分享


- End -

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表