基于netflow的网络攻击分析与检测

基于netflow的网络攻击分析与检测


前言

前些年Code Red、SQL Slammer、冲击波、振荡波等蠕虫病毒相继爆发,日益频繁的DOS攻击与DDOS也让用户大为光火,这些攻击不但对用户主机造成影响,而且对网络的正常运行也构成了严重的危害,会大量占用网络带宽或网络设备系统资源。这些网络行为上都有某些共同特征,我们可以利用NetFlow的信息筛选出这些数据包,从而快速发现问题。

典型网络攻击特征分析

1.CodeRed病毒分析

例1:CodeRed的Flow特征是destination port=80,、packets=3、size=144bytes。虽然在Internet上,符合上述特性的正常行为是存在的(如使用ICQ),但是一般正常使用的主机不会在连续几段时间内发出大量的这些报文。
因此监测CodeRed 可采用的方法是:取几个不同时间段,例如每段时间5分钟,如果每个时间段内符合特征的Flow大于上限值,则可以判断为Code Red。

2.Nimda病毒分析

例2:感染了Nimda病毒的主机会向外部地址(往往是TCP 80端口)发起大量连接,Nimda的Flow特征是每个Flow代表一次连接destination port=80的行为,如果普通的客户机在一段时间内(例如5分钟)Flow数量过大,那么很有可能遭受病毒感染或者有其他针对HTTP的攻击行为。
因此监测Nimda可采用的策略是:取几个不同时间段,每段时间5分钟,如果每个时间段内符合特征的Flow超过上限值,则可以判断为Nimda病毒或其他攻击行为。另外,如果Apache Http Server感染了Slapper Worm的话,也会产生大量的Http报文。

3.震荡波病毒分析

例3:震荡波(Worm.Sasser)的特征是一个IP同时向随机生成的多个IP发起445端口的TCP连接。因此检测条件是:相同源IP,大量不同目的IP,目的端口为445,当符合的Flow达到上限值时,则可以认定是振荡波病毒。

4.SQL-Server病毒分析

例4:几年前臭名昭著的微软SQL-Server漏洞造成了很大的影响,它的特征是目的端口为1433的TCP流。表13-2是根据此条件筛选出的NetFlow统计数据,可以得知IP地址66.190.144.166正在对某网段进行SQL漏洞扫描。SQL-Server病毒报文如下表所示。

基于netflow的网络攻击分析与检测_第1张图片

5.DOS攻击分析

DOS攻击使用非正常的数据流量攻击网络设备或其接入的服务器,致使网络设备或服务器的性能下降,或占用网络带宽,影响其他相关用户流量的正常通信,最终可能导致网络服务不可用。例如DOS可以利用TCP协议的缺陷,通过SYN打开半开的TCP连接,占用系统资源,使合法用户被排斥而不能建立正常的TCP连接。以下为一个典型的DoS SYN攻击的NetFlow数据实例,该案例中多个伪造的源IP同时向一个目的IP发起TCP SYN攻击。

下面截取一段DOS攻击的netflow报文。

111..68.35|202..*.80|Others|64851|3|2|10000|10000|6|1|40|1
105..93.91|202..*.80|Others|64851|3|2|5557|5928|6|1|40|1
158..25.208|202..*.80|Others|64851|3|2|3330|10000|6|1|40|1

6.DDOS攻击分析

日常工作中发现,除了遇到DOS 以外还有许多攻击属于DDOS攻击,只不过攻击类别不同,有些为Ping Death(死亡之Ping),另一些则为SYN Flooding(SYN洪水)。而且DDOS攻击基本上都造会成这样一种结果:服务器无法处理源源不断如潮水般涌来的请求,从而造成响应迟缓,直至系统资源耗尽而宕机。DDOS攻击的共同点是来源广泛,针对一台主机,大量数据包。

6.1Ping Death

了解计算机网络知识的人都知道Ping命令常常用来检查网络是否畅通,可是这个命令也能给Windows系统带来严重的后果,那就是Ping入侵即ICMP攻击。方法是由攻击者故意发送大于65535字节的ip数据包给对方,操作系统收到一个特大号的ip包时候,它们不知道该做什么,服务器会被冻结、宕机或重新启动。
因此检测ICMP攻击就可以根据下面的条件:在连续的几个时间段,假设每个时间段为5分钟,各个时间段内ICMP报文大于5000。符合这个条件的,可以认为受到了ICMP攻击。
下面是ICMP流的NetFlow实例。

Alt text

6.2SYN Flooding

SYN Flooding攻击是针对TCP协议三次握手环节发起的攻击。该攻击以多个随机的源主机地址向目的路由器发送SYN包,而在收到目的路由器的SYN ACK后并不回应,这样,目的路由器就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务,甚至导致路由器崩溃.服务器要等待超时(Time Out)才能断开已分配的资源。
因此检测SYN flooding的条件是:在连续的几个时间段,假设每个时间段为5分钟,产生大量flag=2的数据包,正常连接不会产生这么多flag=2的数据包,所以可以设置阈值为5000。超过这个数值就认为服务器受到SYN flooding攻击。如果主机发出flag=2的数据包数量超过1000,则可以认为主机在发起攻击。以下是SYN特征的NetFlow实例。

Alt Text

结束

网络安全一直是一个备受关注的话题,而网络行为分析更是维护网络安全的重要一环。netflow收集到的flow报文可以很好的帮助我们对这些网络异常进行检测和分析,从而建立各种模型用来检测常见的网络攻击维护网络安全。
最后,欢迎大家一起学习讨论!

你可能感兴趣的:(网络安全)