异常流量分析方法——发现-定位-管控
作者:易隐者 发布于:2012-11-8 21:50 Thursday 分类:网络分析
我们在实际工作环境中遇到各种影响网络系统和业务正常运行的异常流量的概率远远高于遇到疑难故障的概率,在我的博客里已经将疑难杂症的分析方法和思路做了非常深入的阐述(大家可参考《疑难故障分析常规流程和思路》、《疑难网络故障的分析方法和原理之关联分析法》、《疑难网络故障的分析方法和原理之对比分析法》等文),并且我为此撰写了大量的疑难故障的实际分析和解决的案例,我在《疑难故障分析常规流程和思路》一文中,仅仅简单的提到“全局捕包确认异常类型和源头”等寥寥数字,这并不是我疏忽,而是当这些异常流量足以对网络和业务应用产生较为严重影响的时候,其在流量的特性上往往具有较为明显的特征,因此站在网络分析技术的角度,我认为针对这些异常流量的分析是一件非常简单的事情,只要通过简单几个分析步骤和流程,即可快速的定位。
但是这些看似简单的方法和流程,对于一些不了解网络分析技术或网络分析初学者来说,却是一件令人头疼的事情,我曾在工作中数次遇到朋友问我:为什么不把这些最常遇到的异常流量问题的分析方法和思路,简单明了的写出来,以助初学者快速入手呢?
我想的确有道理,把这些东西写出来,让更多的朋友能够利用我写的分析方法和思路解决实际工作过程中遇到的问题,岂不是一件快事?但是考虑到高彦刚老师在其《实用网络流量分析技术》一书中,已经对蠕虫、P2P、环路、ARP病毒等常见异常流量的分析案例做了专业的介绍,在此我将不再将高老师已经做过的、非常优秀的事情再做一遍,我主要将异常流量分析的方法和思路总结为一个简单易懂的、通用的分析流程。据此流程,你可以快速的分析定位大部分的异常流量。
该方法并不局限于任何一款具体的网络分析产品和工具,只要你熟练掌握某一种网络分析工具(wireshark、omnipeek、科来或其他),都可以按照这个分析方法,快速的分析定位大部分的异常流量。
什么是异常流量
严格的来讲,正常业务流量之外的流量,都应该归类为异常流量的范畴。但是,除了在工业控制系统等生产网络环境中,可以这样定义异常流量之外,其他的办公网络环境如此严格的定义异常流量都是不合适的。因为在普通的办公网环境下很难保证网内交互的都是业务流量。
在办公网络环境下,办公端系统的应用和管理是非常丰富和复杂的,我们难以做到让每个办公终端在固定的时间内只运行某些固定的业务系统,相反,这些办公终端会根据不同的使用者特性和个人偏好,在不同的时段运行的大量的应用进程,这些进程中可能包含正常的办公应用的进程,也可能包含大量依托于互联网的非业务应用进程,甚至可能包含使用者自己都不知道的第三方插件、木马、病毒等进程。因此,我们还需要定义一个应用更为广泛的狭义上的异常流量。
狭义范畴上的异常流量主要指:病毒、蠕虫、木马、垃圾应用(P2P下载/在线视频/在线游戏等)、攻击(各种DOS攻击流量)等影响网络和业务正常运行的流量。
如此一来,我们便明确了我们需要分析的对象了,如果你是一个初学者,这样是不是感觉更具体一点?是不是有种找到靶心的感觉,哈哈。话不多说,还是跟我一起来开启这趟分析之旅吧。
异常流量分析方法和思路
按照我个人的经验,我将异常流量的分析方法归纳为三大步骤和五个过程,分别为
发现-定位-管控三大步骤和Whether-Who-What -Where-How五个过程。如下图所示:
发现-定位-管控三大步骤
Whether-Who-What -Where-How五个过程
发现-定位-管控三大步骤:
定位(Location):通过分析定位出异常流量的根源、类型、运作模式以及具体的主机位置,为下一步的管控提供全面的信息。
管控(Control):利用现有资源,及时实现对异常流量的管理和控制,消除异常流量对网络和业务正常运转的影响。
Whether-Who-What -Where-How五个过程:
Whether:通过分析,大致判断网络内部是否存在异常流量?
Who:若存在异常流量,异常流量都与谁有关?
What:异常流量是什么类型的?异常流量的运作机制怎样?
Where:异常流量相关的主机都在什么位置?
How:如何实现对异常流量的及时管理和控制?
这三大步骤和五个具体分析过程是相互关联的。下面我们将这三大步骤和五个具体分析过程关联起来进行阐述。
1 发现- Whether
第一个步骤主要是用于在网络运行的过程中及时发现是否存在异常流量,对应于五大分析过程中的Whether,如下图所示:
在这个具体分析过程中,主要根据能够反映出全局运行情况的各个核心参数数值,大致判断是否存在异常流量。
如果各个核心参数数值都处于正常的水平,则说明网络目前处于正常状态,网络内部不存在异常流量。如果某一个或几个核心参数数值与正常水平值出现较大的偏离,则说明网络内部很可能存在异常流量。
这里所谓的正常水平主要是相对于网络正常运行情况下的基线数值(关于基线,如果有初学的兄弟姐妹不够了解,我以后再花时间写一篇,在此不做过多阐述)来说的。
在这个过程中,判断依据来自于核心参数数值,我们在进行分析之前,必须要明确都有哪些主要的核心参数可以作为分析判断的依据。我们日常工作中用到较多的能够反映网络运行情况的核心参数主要有以下几个:
总流量:指在捕包的时间段内,捕获到的所有数据报文流量之和
一般而言,全局总流量对分析是否存在异常意义不是非常大,因此较少用到,但是在分析单个主机时,总流量却是一个非常重要的衡量参数。
平均每秒流量:是指在抓包时间段内,单位时间内的平均流量大小
平均每秒流量的一般计算方法:平均每秒流量=总流量/捕包时间,平均每秒流量是反应网络运行是否正常的非常重要的参数,正常网络中的平均流量一般不会上下浮动很大,特别是较长时间段内的平均每秒流量数值,但是如果网络内部存在大流量的攻击或P2P等大流量的下载等异常流量时,其数值会比正常时大很多。
平均利用率:单位时间内通过该链路的数据流量大小
如果是针对单链路的流量进行捕包分析的话,那么我们就可以根据平均每秒流量大小计算链路平均利用率大小。它是衡量链路使用情况的一个非常关键的指标,它反应的是链路平均状态下的使用情况。
数据包个数:在捕包时间段内捕获的数据包总数
这个跟总流量的意义一样,看全局的意义不是非常大,较少使用,但是看单主机的数据包总数对分析异常流量很有帮助。
平均每秒包数:指单位时间内捕获的数据包个数
一般的算法是:平均每秒包数=总数据包数/捕包时间,这个参数跟平均每秒流量一样,对于我们分析是否存在异常有着非常重要的帮助,因为大部分的异常流量都会产生非常多的数据包数,我们通过平均每秒包数这个参数数值,可以快速发现这种发包的异常。
数据包大小分布:不同包大小的区间分布情况
我们主要看64字节左右的小包和1500字节左右的大包分布情况,一般情况下,这两种包的分布比例应该都是较小的,如果小包分布比例或大包分布比例过大,我们都需要注意是否存在异常,小包过多,可能存在扫描、攻击行为,大包过多可能存在消耗带宽资源的大包DOS攻击行为。
平均包长:所抓取的报文的平均长度
正常情况下,网络内的平均包长都会在500-700字节左右,但是大部分的攻击行为(病毒、蠕虫、扫描等)发送的都是64-72字节的小包,如果网络内存在各种异常,其发送大量的小包,那么平均包长也会非常小,如100字节左右。
TCP会话数:捕包时间段内,共捕获到的TCP会话个数
如果是正常的业务应用,其TCP会话个数数值不会非常大,但是如果网络内存在大量基于TCP的扫描探测行为,如病毒蠕虫爆发、SYN Flood攻击等,其TCP会话的数值会变得非常的大,一般冲击波病毒爆发,单台主机一般在1秒内会发送2000多个TCP扫描报文,在很短的时间内将会产生海量的TCP会话数。
UDP会话数:捕包时间段内,共捕获到的UDP会话个数
正常的业务环境中,UDP应用非常少,UDP会话的个数也就很小,如果网络内部UDP会话数很大,比较常见的情况是较多的P2P下载和基于UDP的蠕虫爆发。
IP地址个数:抓包期间共出现的IP地址个数
内部IP地址的个数基本上都是固定的,即使IP地址的统计包含互联网的IP地址,IP地址个数数值也不会出现非常大的情况,但是当网络内部存在伪造IP进行攻击或来自于互联网的伪造地址攻击时,这个参数数值将会非常之大。
MAC地址个数:抓包期间,共出现的MAC地址个数
一个MAC地址对应一个网卡,内部主机个数是固定的,因此在捕包时,MAC地址的个数基本上变化不大,但是当网络内部存在伪造MAC的异常情况时,这个数值会远远超出正常时的水平。
这些核心参数的数值都是通过对采集到的数据包进行统计和计算得到的,一般的网络分析工具都会针对数个核心参数数值进行统计和计算,并将其显示出来。如Wireshark可以通过Sunmary显示平均每秒流量、平均每秒包数、平均包长等参数数值,如下图所示:
Wireshark还可以通过“Endpoints”统计功能查看IP地址个数、MAC地址个数等。
Omnipeek通过统计摘要功能,可以显示总流量、总包数、平均利用率、IP地址数、MAC地址数、TCP会话数等核心参数数值,如下图所示:
科来则在“概要”功能视图中,可以查看总流量、数据包总数、平均包长、IP地址个数、MAC地址个数、TCP会话个数、UDP会话个数等核心参数数值,如下图所示:
根据不同的网络分析工具的特性,大家可以根据其能够提供的几个核心参数数值来大致判断是否存在异常,如果有参数数值出现异常,那么我们就进入下一个分析步骤——定位。
2 定位-Who-What-Where
第二个步骤的主要工作就是通过进一步的分析,定位异常流量相关的主机、异常流量的类型、运作机制以及异常流量相关主机的具体位置,这个步骤主要跟Who-What-Where三个过程相关,如下图所示:
在发现异常情况之后,我们首先要做的是定位出跟异常流量有关的主机。
WHO——哪些主机(IP、MAC)与异常流量有关
在网络分析工具中,我们根据某些全局参数数值的异常判断出异常流量的存在,接下来我们要做的就是在主机统计中,针对这些参数进行排序,举例来说,如果异常是通过“数据包个数”或“平均每秒包数”参数发现的,那么我们主要根据IP地址MAC地址的统计计算的“数据包个数”参数进行排序,找出交互数据包个数排名靠前的几个主机,做进一步的分析和确认,并最终定位出相关的主机IP和MAC。
在wireshark中,我们主要通过“Endpoints”视图来查看各个MAC地址/IP地址对应的参数统计情况,如下图所示:
在Ominipeek中,我们则通过“统计-节点”视图,查看针对MAC地址/IP地址的流量、数据包数、IP会话、TCP会话、UDP会话等核心参数的统计计算情况,如下图所示:
在科来网络分析系统中,主要通过“物理端点”和“IP端点”视图,查看针对MAC地址和IP地址的相关参数数值的排序,如下图所示:
WHAT异常流量是什么类型的(大流量、大数据包个数、)
定位出跟异常流量有关的具体主机之后(IP/MAC),我们针对这些主机的交互保报文做进一步的分析,主要关注行为特征、报文结构和发包频率三个方面。
1,行为特征:
目的端口
是否固定?是否顺序递增?是否是高端端口?是否是80/135/445/1434等常用端口?
源IP
源IP是否固定?是否是伪造的?
源MAC
源MAC地址是否是真实的,主要针对伪造MAC的攻击
目的主机
目的主机是否是随机的?是否是顺序递增的?
TCP/UDP会话个数
TCP/UDP会话的数量是否巨大
单个TCP/UDP会话的交互行为
我们可以分析单个TCP/UDP会话的交互的行为,如下图所示:
分析单个TCP/UDP会话的交互的行为可以帮助我们定位异常流量的类型,如TCP扫描,SYN Flood、HTTP Get Flood等各种攻击行为。
TCP/UDP会话的流量特征
多个TCP/UDP会话之间产生的流量特征是否一致?如下图所示:
众多TCP/UDP会话的流量特征都是一致的,如上图中所示的数据包个数一致,都是发送的报文,都是66字节等等,这些特性基本可以判断为异常流量。
2,报文结构
我们可以通过网络分析工具的数据包解码功能,查看异常流量相关主机报文的具体解码结构,如下图所示:
通过数据包解码的分析,我们可以进一步的确认异常流量相关主机交互的报文类型,如SYN报文、RST报文、ICMP报文、分片报文、UDP下载报文、恶意攻击的填充报文等。
3,发包频率
在单位时间内的发包速度,如果一台主机在1秒内发送了3万个数据包,那么不管这是什么具体的报文,这样的发包频率明显是异常的,而且会给整个网络带来较大的影响。发包频率主要通过网络分析工具的“相对时间”和“时间差”来判断和分析,如下图所示:
在37秒的时间内共发送了118000多个报文,平均每秒3200多个报文,这样的发包速度对性能较差的网络设备来说,很可能导致全网缓慢。
通过行为特征、报文结构和发包频率三个方面的分析,我们基本上可以判断出异常流量的运作机制、类型以及可能对网络和业务带来的影响程度。
WHERE具体主机的位置(外部、内部?)
根据收发包的情况和主机IP,确定异常的流量来自于内部(办公网内部、服务器区域内部、数据中心内部)还是外部(互联网、三方接入、专线接入、广域网接入等),来自外部的异常流量绝大部分都是恶意攻击的流量,例如DDOS/DOS/扫描等,来自内部的异常流量一般为内部感染病毒、蠕虫爆发、P2P等。如果来自于内部,则根据IP/MAC信息,结合中间设备(路由器、防火墙、交换机等)的ARP表、MAC表,确认异常主机的具体物理位置。如果IP地址是伪造的,则根据MAC地址逐步定位,如果MAC地址是伪造的,根据交换机上的MAC地址表我们能够找出真实发包主机在交换机上接入的对应端口。
交换机路由器等查看ARP表、MAC表的命令一般都很简单,如思科交换机一般通过show arp命令来查看设备的ARP表,通过show mac-address-table命令来查看设备的MAC地址表,有些品牌的产品则通过show fdb来查看MAC表,如果在实际工作中涉及到具体品牌型号的产品,请大家自行参考相关手册,查阅相关显示ARP表和MAC表的命令,在此不做过多的赘述。
发现、定位异常流量只是中间过程,不是最终目的。最终目的是为了将异常流量进行及时合理的管理和控制,不要影响到网络和业务的稳定运行。前面的分析为下一步的控制和管理提供充分的依据和信息,正可谓“万事具备,只欠东风”,接下来让我们完成我们应该做的吧——管控。
3 管控-How
发现异常流量之后,经过分析和定位,我们已经清晰的了解了异常流量产生的源头、类型、运作机制和位置,但是我们根本的目的是对这些已然存在的异常流量进行快速合理的管理和控制,从而保障网络和业务的正常稳定运行。最后一步管理和控制,那么,我们如何管控?
管理控制的方式:隔离和控制
在管理和控制之前,我们首先需要做好前期的各种准备工作,为了清晰完整的说明对异常流量的管控过程,我对其步骤做一个简单的总结:
1, 明确现有资源
在现有的网络环境下,首先需要明确各个主要的管理和控制的设备资源,主要的设备有交换机、路由器、防火墙、IPS、流控、网管产品、桌面管理等。
2, 明确现有资源的主要功能特性
在现有网络环境的各种设备资源,其不同的功能特性以及实现的方式和实现的效果,如防火墙可以实现较为严格的访问控制功能,流量控制设备可以实现较为精确的流量控制效果等。
3, 结合我们分析的异常流量的相关信息,制定管理和控制的策略
异常流量主要分为两类,一类是来自外部的异常流量,主要是攻击类的流量,另一类是来自网络内部的,包括病毒、蠕虫、扫描、P2P等,针对这两类异常流量我们需要区分对待。
来自外部的攻击,其异常流量来自于我们不可控的部分,因此我们无法从源头上根除这种类型的异常流量,我们能做的就是,尽可能利用现有资源对其进行过滤和控制,从而尽量减少其对我们的网络和业务带来影响,比较常用的管理控制措施主要包括:
(1)利用IPS/防火墙/路由器ACL过滤来自外部的异常流量;
(2)利用防火墙/流控限制来自外部的异常流量的相关连接,减少影响;
(3)利用专业的抗DOS设备对异常流量进行清洗;
(4)通过运营商,对来自外部的异常流量进行控制;
(5)针对恶意攻击难以控制,带来较大损失的,可以报网警处理;
另外一种情况是,异常流量来自于我们可控的网络内部,我们在充分掌握异常流量源头(IP/MAC)、类型(病毒、蠕虫、攻击、扫描、P2P)、运作机制(端口、行为特征、目的主机等)、物理位置(使用者、对应设备接口等)等详尽信息之后,我们可以选择
(1)直接找到具体主机,拔网线,让其从网络中完全物理隔离;
(2)如果交换机可网管,我们可以手工shutdown异常主机的接口,或通过网管产品shutdow相关物理接口,从而使异常主机与网络隔离;
(3)可以使用交换机、路由器的ACL,针对异常流量的源IP、目的端口、目的IP制定过滤策略,将异常流量控制在较小范围之内;
(4)在网络边界防火墙/IPS上制定访问控制策略,过滤异常流量;
(5)利用防火墙/流量控制设备/上网行为管理设备进行限连接、限流量等策略实现对异常流量(P2P)的控制;
(6)通过桌面管理系统对异常流量主机中的发包进程进行控制;
标签: 交换机 TCP wireshark omnipeek 防火墙 IPS 科来 中间设备 UDP 抓包 DOS 攻击 行为特征 发包频率 异常流量 蠕虫 木马 P2P 扫描 TCP会话 UDP会话 平均包长 平均每秒包数 利用率
版权所有:《蚂蚁网-多维人生,三实而立!》 => 《异常流量分析方法——发现-定位-管控》
本文地址:http://www.vants.org/?post=185
除非注明,文章均为 《蚂蚁网-多维人生,三实而立!》 原创,欢迎转载!转载请注明本文地址,谢谢。
日历
最新日志
链接
分类
最新碎语
- 如果一个人想要做一件真正忠于自己内心的事情,那么往往只能一个人独自去做"——理查德·耶茨
2019-06-25 21:34
- 日后我们知道,真正的人生道路是由内心决定的。不论我们的道路看上去如此曲折、如此荒谬地背离我们的愿望,它终归还是把我们引到我们看不见的目的地。(茨威格《昨日世界》)
2019-03-16 21:27
- 如果你渴望得到某样东西,你得让它自由,如果它回到你身边,它就是属于你的,如果它不会回来,你就从未拥有过它。——大仲马《基督山伯爵》
2018-10-09 22:07
- 人生有两大悲剧:一个是没有得到你心爱的东西;另一个是得到了你心爱的东西。人生有两大快乐:一个是没有得到你心爱的东西,于是可以寻求和创造;另一个是得到了你心爱的东西,于是可以去品味和体验。——弗洛伊德
2018-09-25 18:06
- 一个人越有思想,发现有个性的人就越多。普通人是看不出人与人之间的差别的——布莱兹·帕斯卡尔
2018-08-30 18:44
存档
- 2020年11月(2)
- 2018年1月(1)
- 2017年12月(1)
- 2017年11月(6)
- 2017年6月(1)
- 2017年5月(1)
- 2017年4月(1)
- 2017年3月(1)
- 2016年11月(1)
- 2016年4月(1)
- 2015年7月(2)
- 2015年6月(1)
- 2015年5月(5)
- 2014年12月(1)
- 2014年11月(1)
- 2014年10月(1)
- 2014年8月(1)
- 2014年7月(1)
- 2014年6月(1)
- 2014年5月(1)
- 2014年4月(3)
- 2014年2月(2)
- 2014年1月(2)
- 2013年12月(1)
- 2013年11月(1)
- 2013年10月(2)
- 2013年9月(1)
- 2013年8月(1)
- 2013年7月(3)
- 2013年6月(2)
- 2013年5月(1)
- 2013年4月(3)
- 2013年3月(1)
- 2013年2月(2)
- 2013年1月(2)
- 2012年12月(11)
- 2012年11月(12)
- 2012年10月(12)
- 2012年9月(26)
- 2012年8月(29)
- 2012年7月(18)
- 2012年6月(2)
- 2012年5月(25)
- 2012年4月(16)
- 2012年3月(13)
- 2012年2月(6)
发表评论: