消除噪音 科来DPI不同会话视图的灵活应用

科来网络分析系统CSNAS(后文统称CSNAS)提供了深度数据包检测过滤器(后文统称科来DPI),供网络分析师们应对各种不同的分析场景进行数据包过滤。前面文章《精准过滤:科来DPI在IP端点视图的应用》等内容中,我们深入浅出地介绍了科来DPI的语法规则,并且讲解了科来DPI在数据包视图及IP端点视图中的应用举例,今天我们接着为大家介绍科来DPI在物理会话视图和IP会话视图中的应用。


CSNAS的会话视图  


(1)什么是会话?


会话是指网络中两个端点之间产生的数据流通信。会话统计视图主要显示网络中的会话信息,根据网络层次不同,又把会话视图分为了物理会话、IP会话、TCP会话、UDP会话等四种会话视图。每条会话信息均可以统计其源地址、目标地址、该会话收发的数据包及这些数据包的大小等信息。还可以通过查看下方子窗口中显示的当前选定会话的相关数据包,数据流和时序图等关键信息(物理会话视图不支持),这样可以更快更便捷的确定出当前网络中某个会话的通讯情况,如:会话开始的时间,使用的相关协议,以及此会话是否正常等信息。


(2)物理会话视图物理会话显示网络中物理地址之间会话的信息,可统计其源物理地址、目标物理地址、该连接收发的数据包及这些数据包的大小等信息。常用物理会话视图查看数据链路层统计信息及通信异常,如ARP扫描、ARP攻击登,物理会话视图如下图:


(3)IP会话视图:IP会话视图中,详细分析和显示网络中IP地址的通讯会话信息。对于每条IP地址会话,都统计了其源地址、目标地址、会话流量、会话收发的数据包等多种统计参数。并在下方的子窗口中显示当前选定IP地址关联的TCP及UDP会话,通过这些会话信息,我们可以快速了解当前网络中IP地址会话的情况。如下图:


科来DPI在会话视图中的应用  


1、会话视图中的科来DPI规则语句


物理会话、IP会话、TCP会话和UDP会话视图中的规则语句通用格式如下:


说明:


(1)在会话视图中,所有的规则语句都是以“session”开头(即规则语句的数据源固定为session),如图中绿色部分;


(2) “.”后面为字段数据源(IP端点视图中的统计参数),也是最关键的部分,指明需要过滤哪一种端点统计参数,如图中金黄色部分;


(3) 第二个“.”后是成员函数(成员函数是非必须的),如图中蓝色部分;相信大家也发现了,会话视图的规则语句和上一篇章介绍的端点视图中的规则语句非常相似,唯一区别是数据源部分由“endpoint”变为了“session”!为了降低记忆难度,在15.2.0版本中,无论是端点视图还是会话视图,“endpoint”和“session”都可以直接省略掉,直接用“字段数据源”或“字段数据源+成员函数”作为过滤语句,如下图:


在本篇文章后面的讲解中,还是以标准规则语句的形式来举例,大家在实际应用时可进行简写。


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

会弹出对话框如下:


直接进行点选想过滤的统计字段就行,下图是对字段数据源的说明:


从上图中可以看到:session“.”后面的字段数据源其实就是物理会话视图中统计指标的英文名称简写。在选择好具体的字段数据源后,就可以指定关系运算符进行赋值或运算,也可以在后面跟成员函数(如find()函数)。举例如下:


或者:具体支持过滤的统计字段如下表:

字段名说明
session.alias别名
session.bytes字节
session.dstalias<-别名2
session.dstbytes<-字节
session.dstendtime<-最后发包时间
session.dstep<-节点2
session.dstpackets<-数据包
session.dststarttime<-开始发包时间
session.duration持续时间
session.endtime最后发包时间
session.ep节点
session.filter会话筛选器
session.packets数据包
session.srcalias别名1->
session.srcbytes字节->
session.srcendtime最后发包时间->
session.srcep节点1->
session.srcpackets数据包->
session.srcstarttime开始发包时间->
session.starttime开始发包,时间


上面是物理会话视图的字段,IP会话视图的字段较多,如下表:

字段名说明
session.alias别名
session.bytes字节
session.device设备
session.dstalias<-别名2
session.dstbytes <-字节
session.dstdevice<-节点2设备
session.dstendtime<-最后发包时间
session.dstep<-节点2
session.dstip<-节点2 IP地址
session.dstlocation<-节点2地理位置
session.dstpackets<-数据包
session.dststarttime <-开始发包时间
session.duration持续时间
session.endtime最后发包时间
session.ep节点
session.filter会话筛选器
session.iplP地址
session.location地理位置
session.packets数据包
session.srcalias别名1->
session.srcbytes字节->
session.srcdevice节点1设备->
session.srcendtime最后发包时间->
session.srcep节点1->
session.srcip节点1IP地址->
session.srclocation节点1地理位置->
session.srcpackets数据包->
session.srcstarttime开始发包时间->
session.starttime开始发包时间
session.tcpcountTCP会话
session.udpcountUDP会话


除了字段“filter”(下文中举例讲解),其余字段都如“说明”中的表述,很好理解。如果记不住字段名没有关系,在科来DPI中输入session.后会自动进行字段联想,如下图:


记不住字段的英文意思也没关系,点击帮助按钮,里面都有中文说明。


2.应用举例


例1.为找到包含不正常ARP行为的会话,过滤出发送数据包>80,接收数据包<5的物理会话过滤语句:session.srcpackets > 80 && session.dstpackets < 5


说明:为了快速找出可能存在ARP扫描的会话(ARP协议原理在科来官网CSNAS下载页面中有详细介绍,此处不再赘述),可在物理会话中过滤发送数据包数远远大于接收数据包数的会话(ARP和二层MAC地址相关,只能在物理会话视图中查找)。过滤结果如下:


再通过双击过滤出的会话,可以进一步确定该会话是否存在问题,如下图:


如上图,并非我们想象的ARP扫描,是正常的NBNS会话,排除异常。


注意:物理会话里面是没有“协议”这个数据源字段的!因为一个物理会话可能包含了多种上层协议。若要实现本例的过滤,配合使用节点浏览器(官网培训页面有节点浏览器的使用介绍,这里不再赘述)是更好的选择,相当于先在节点浏览器上过滤出ARP协议的数据包,再在物理会话视图中进行会话的二次过滤。效果如下图:


例2.发现类似ARP请求风暴的会话


规则语句:session.duration>1m && session.srcpackets>100


说明:ARP请求风暴是指某主机每秒请求数据包数量超过正常ARP请求阈值,造成网络带宽阻塞,类似网络层和传输层的FLOOD类型的DOS。因此,我们把过滤条件设置为会话持续时间大于1分钟(session.duration>1m,如果不加单位,默认单位为秒),阈值根据实际情况进行设置(session.srcpackets>100),过滤后效果如下:


经过查看,MAC地址为00:0B:2F:00:AD:80的主机存在大量发送ARP包的行为,如下图:


同例1,若配合节点浏览器,分析效率会更好,此处留给读者自己实践。


例3.要监控指定主机的IP会话情况。


分析:要监控某指定主机的IP会话,可通过字段alias(别名)或ep(节点)进行过滤,它们的区别如下:


(1)alias,指别名,指某个IP的对应主机名(数据包中含有host信息或我们通过名字表对该主机进行的命名)。


举例如下:


上图中的节点1,它的别名为:okay-boomer-dc.okay-boomer.info,这是CSNAS系统通过DNS、NBNS、SMB、KERBEROS等协议中包含的信息进行自动识别并关联的。上图中的节点2,它的别名为:OA服务器,这是我们通过CSNAS的名字表功能,为10.11.11.217这台主机取的别名。因此,如果对节点1主机通过别名进行过滤,过滤语句应该为:session.alias=’okay-boomer-dc.okay-boomer.info’,效果如下:


对节点2主机通过别名进行过滤,过滤语句应该为:session.alias=’OA服务器’,效果如下:


注意:IP不是别名,如果直接赋值为IP是无法实现过滤的!即过滤语句写成:session.alias=’10.11.11.11-[okay-boomer-dc.okay-boomer.info]’或session.alias=’10.11.11.11’,过滤会是不会成功的,如下:


(2)ep,endpoint的缩写,指节点。指某个IP或IP+主机名(具体根据节点名称的显示格式决定),如果在视图菜单中设置显示IP为“只显示IP地址”,则ep的值为IP地址;若视图菜单中设置显示IP为“IP名字和地址”,则ep的值应为IP地址+主机名;如下图:


举例:节点显示格式为“IP名字和地址”,过滤效果如下:


若此时只用IP进行过滤,会不成功,如下:


若将视图设置的IP显示格式改为“仅显示IP地址”,则过滤成功:


为规避上面这种因视图设置的显示格式不同而导致的过滤不成功,可改用find()函数进行模糊查找,而不是用“=”去进行精准赋值。如:session.ep.find(’10.11.11.11’),效果如下图:


在本例场景中,无论是别名还是节点,我们都推荐使用find()来进行过滤,过滤语句如下:


通过别名:session.alias.find(’OA’)通过IP:session.ep.find(’10.11.11.11’)


例4.从IP会话中找出可能存在扫描的会话


分析:如果是从端点视图入手,可以直接对IP流量进行排序,现在从会话视图入手,不仅可以发现“扫描者”,还可以直观看到“被扫描者”。因不确定是哪一种扫描,所以,我们把短时间内存在大数量的TCP会话和UDP会话的都过滤出来。


规则语句:session.tcpcount>500 || session.udpcount>500


过滤效果如下:


在“IP会话”视图下方的子窗口中,能够看到更高层的传输层会话。本例中可以看到IP地址:192.168.6.122用固定端口46669和IP地址:192.168.6.1的知名端口建立了很多TCP会话,且每个会话都只有2个包(一个SYN包及一个RST包),这是典型的SYN扫描。


例5.想要查看2019年11月12日6点20分至22分这2分钟时间内,一共产生了多少IP会话。


分析:把初始发包时间为2019年11月12日6点20分至22分这段时间的所有会话过滤出来即可。注意,此处过滤语句有严格的时间格式:DT’YYYY-MM-DD TIME’。规则语句:session.dststarttime>=DT’2019-11-12 06:20:00′ && session.dststarttime<=DT’2019-11-12 06:22:00’过滤效果如下: 


结语  


本文介绍了科来科来DPI在物理会话视图和IP会话视图中的应用,让网络分析师的分析技能稳步提升。下篇文章我们继续为大家带来科来DPI在TCP会话视图、UDP会话视图中的应用,敬请期待!