分析文献:Boosting the scalability of botnet detection using adaptive traffic sampling

仅为自己看, 语句不通,思路混乱,还请见谅。

-------------------------------------------------------------------------------------------------------

论文时间:2011年
核心思想:提高有效数据的采样率和分析效率
难点:如何检测其效果


摘要:
  1. 许多基于网络的检测系统需要DPI方法(深度检测),但是由于计算量大,不能处理大型企业或者ISP网络的大体积流量。
  2. 因此本文提出了方法来解决以上问题,目的在于:efficiently and effectively 鉴定一小部分疑似bots的主机。
  3. 这些疑似主机的流量将会被送入DPI-based botnet检测系统来进行细粒度的检测和精确检测。
  4. 方法:新型自适应的包采样算法;可扩展的时空流关联方法。
  5. 效果:显著减少进行深DPI检测的流的大小,提高当前botnet检测系统的可测量性
  6. 实现:proof-of-concept版本
  7. 评价环境:真实合法和botnet相关网络流量
  8. 效果:promising 

介绍:
  1. Botnets can be instructed to commit various malicious activites, such as...
  2. through which the malicious activities can be coordinated.
  3. 文献分析:
  • bothunter使用payload-based匿名检测器以及一个基于签名的检测engine;
  • botsniffer和rishi需要解析irc通信内容
  • TAMD检测payload来计算内容相似度
  • botminer的A-plane(行为平台)监控二进制下载和远程溢出检测,需要DPI检测。虽然其C-plane(通信平台)不需要DPI,它仍然承受着部署在高速网络中时的扩展性问题。
     虽然以上系统都表现出很好的效果,但是DPI的高代价,使其不能部署在没有硬件支持的情况下部署在高速网络。即使有特殊硬件支持,许多提出的技术由于相对高计算代价算法仍然不能追的上流量(keep up with)。Load-balancing(分布式流量和计算到多处理器单元)是一个可行解决方案。然而:部署这些系统用load-balancing方式需要特殊设计,需要对当前检测算法进行显著改进。我们是怎么做的呢:
我们提出了一种新的包采样算法和可扩展时空关联方法 鉴定一小部分疑似bots的主机。

采样技术发展:

网络流分析需要比DPI少很多的资源。但是,收集精确的网络流信息在告诉网络中是一项很大的挑战,由于我们不能处理所有包。为了解决这个问题:包采样技术被广泛应用。举例来说:uniform采样以及其变量periodic采样是最常用的采样方法,它们可能被用来使网络操作者重构大概网络流信息。然后,限制:它们能重构关于大流(large flow:带有大量报文的流)的精确信息,如流媒体流,但是对于中小流却不能准确模拟。
为了解决这个问题:
新算法提出,有:FlexSample是一个可编程的框架,允许网络使用者设定采样率,来增加特点亚种群的流量。
不过:不同的botnet实现可能会带来C&C通信流的不同(如流大小),通过设定条件使用FlexSample来对大范围的Botnet C&Cs 采样还是一个较大的挑战。
比如,http C&C就很小,相比较而言,IRC 通信就intrinsically大。
为了此问题:
我们介绍了一种新型的自适应采样方法。本采样方法是botnet-aware,通过botnets的固有特征:group similarity来驱动的。
这一特征表现为:bots属于同一botnet会采用同样的C&C同样模式。
我们还提出了一种时空关联度方法来鉴别主机间存在的长时间的相似通信。 that is: 我们试图鉴定一个网络中的主机持续共享相似通信行为(一个相对长的时间)。主要基于以下观察:
botnets基于非法经济利益驱使,botmaster为了获得最大利益,会长时间让通信存在,直到被法律强制解除)。

文献分析:
一种区别P2P bots和P2P 文件共享应用的论文。
Are your hosts trading or plotting? telling p2p file-sharing and bots apart.
作者在这里说道:它们都只能检测一种,而我的系统是两种都可以的。
还有一些基于特定攻击信息:
使用DNSBL来鉴定bots通过spam。
RB-Seeker来检测重定向botnets基于spam和网络流信息。
比较这些方法,我们主要使用报文头信息以及网络流信息。因此可以更大范围部署。
一些方法使用相关性方法,bothunter利用IDS事件与预定义的bot窗口模型来进行关联分析。
botsniffer leverages the homogenieity of messages and activities to identify botnet C&Cs.
TAMD检测bots通过对拥有共同外部目标的流量进行聚类。
BotMiner是一个结构和协议独立的检测系统使用聚类技术。

它们都不能再高速网络中使用,我们却可以。

采样方法进展:
近来的关于小流的采样方法:
sketch guided sampling--using online estimates of flow size for adaptive data collection.
accurate and efficient traffic monitoring using adaptive non-linear sampling method. (Infocom)

但是它们的采样率依赖Zipfian nature of Internet(Inter-as traffic patterns and their implications), 它们很难达到预定义的目标采样速率。
FlexSamle根据预定条件来采样,可以用来在保持目标采样率下捕获中小流量。但是很难为botnet环境制定一个预定条件。

因此存在的算法还是不能有效解决botnet采样的问题。本文将根据botnet的固有特征来提出采样算法,尽可能的采集到botnet相关报文,在一个制定的采样率下。


系统结构:


下面分析各个模块:

Flow-Capture:
监控高速网络边缘的流量从而积累网络流信息,我们要分清楚流量和流的区别和联系。

看看 wikipedia上关于 traffic flow ( computer networking的解释)


In  packet switching  networks,  traffic flow packet flow  or  network flow  is a sequence of  packets  from a source  computer  to a destination, which may be another host, a multicast  group, or a  broadcast  domain.  RFC 2722  defines traffic flow as "an artificial logical equivalent to a call or connection." [1]   RFC 3697  defines traffic flow as "a sequence of packets sent from a particular source to a particular unicast, anycast, or multicast destination that the source desires to label as a flow. A flow could consist of all packets in a specific transport connection or a media stream. However, a flow is not necessarily 1:1 mapped to a transport connection." [2]  Flow is also defined in  RFC 3917  "a set of IP packets passing an observation point in the network during a certain time interval." [3]
也就是说流的概念其实是一个逻辑概念,有以下解释:
  • an artificial logical equivalent to a call or connection 也就是说逻辑上等同于一个call或者连接;
  • a sequence of packets sent from a particular source to a particular unicast, anycast, or multicast destination that the source desires to label as a flow. A flow could consist of all packets in a specific transport connection or a media stream. However, a flow is not necessarily 1:1 mapped to a transport connection. 此定义中流指代 一系列报文从一个特定源发送到一个特定的多播、单播、任意播的目标,被定义为流。流应该包含此指定传输连接中的报文或者媒体流。然后流并非1:1和传输连接映射。(至于原因,还没有解释)
  • a set of IP packets passing an observation point in the network during a certain time interval, 这种解释认为流是一组网络中(在一个特点观察点后经历一定时间间隔)的IP报文。
TCP/IP流可以被唯一的确定通过以下因素在一个特定时间间隔内:
  • 源和目标地址
  • 源和目标端口
  • Layer 4协议(TCP/UDP/ICMP)
  • 对于UDP和ICMP流,有以下观点:在一定时间段内,报文拥有相同目标地址/端口,就被认为是一个流。由于UDP是单向的,它就只有一个流,而ICMP是双向的,因此有两个流。
  • 对于TCP流,TCP连接建立时要进行三次握手,创建两个流。一个从A到B,一个从B到A。
    1. . (A) --> [SYN] ------>(B)  2. . (A) <-- [SYN/ACK] <--(B)  3. . (A) --> [ACK] ------>(B)
    

    The two TCP flows end with a four-way handshake or a time-out.

      1. . (A) --> ACK/FIN ---->(B)  2. . (A) <-- ACK <--------(B)  3. . (A) <-- ACK/FIN <----(B)  4. . (A) --> ACK -------->(B)
    
  • 其他协 议也可能组成流, 如HTTP流就是一种,不过它是被TCP/IP携带,创建一个流当连接建立和关闭时。
  • Applied to Internet routers, a flow may be a host-to-host communication path, or a socket-to-socket communication identified by a unique combination of source and destination addresses and port numbers, together with transport protocol (for example, UDP or TCP). In the TCP case, a flow may be a virtual circuit, also known as a virtual connection or a byte stream.


Flow-Capture分为两部分:Packet-Sampling and Flow-Assembler.
其中Packet-Sampling是一个Botnet-aware采样算法。给定一个全局目标采样率(SRtarget), 它采集和Botnet C&C通信相关的报文并发送它们到Flow-Assembler, 伴随着相应的即时采样概率。
Flow-Assembler重建流信息,组装采样的报文到raw-flows. 

Flow-Correlation模块将Flow-Assembler输出的楼分组到C-flows。A C-flow是一个BotMiner里面介绍过的抽象概念,用来表示Bots可能的C&C通信模式。每一个C-flow都代表一种主机到远程服务通过一定时期监控到通信模式。Flow-Correlation应用一种可扩展的聚类算法到C-flows来鉴别主机显示相似通信行为到外部机器(监控网外),这一步和Botminer中的C-plane分析是相似的,但是也有两个不同:【1】我们使用了一宗更有效地流聚类过程,比起Botminer,我们可以处理大流量的高速网络。第二,不想Botminer,我们的Flow-Correlation模块执行 cross-epoch关联来鉴别hosts是否具备持续相似通信模式。talltale sign 报警的标示。
每一对主机持续显示相似通信行为会被标记为可以主机,并被发送到Fine-Grained Detector来进行下一步分析。

Fine-Graind Detector会集中监控那些可以Flow-Correlation提供的报文,这样可以减少botnet检测过程的代价。

本文的主要贡献就是设计:Flow-Capture和Flow-Correlation模块 以及检测框架。存在的DPI-based botnet Detectors可以被稍微修改或者不修改的加入我们的细粒度分析模块。 我们开发一个细粒度检测器从Botminer和BotSniffer,并放入我们的模块。具体的来解释这个细粒度检测器,它分为两部分:【1】类似Botminer中的A-plane,用来根据攻击特征(扫描端口、exploits或者二进制内容),产生的相似恶意行为。【2】BotSniffer的IRC检测模块。这样从Flow-Correlation输出的IP对,同时被这两部分进一部识别,在第一个模块中,如果这ip对也满足相似恶意行为(还有一个Correlation模块来做这个事情),加上本身已经是持续相似行为,则判定为Bots;对第二部分,如果满足BotMiner的IRC检测模块特征,也直接判定为Bots。


通俗的讲:作者就是在以往BotMiner检测和Botsinffer检测的方法前做了一种过滤,这个过滤要讲过两大模块: Flow-Capture以及 Flow-Correlation,这两部分最终将得到具有相似通信行为的IP对,而且是持续了一定周期的。其内部过程中采用了新的采样方法和新的聚类方法。


下文我们就来细看它的每一部分是怎么处理的:

4 Flow Capture:
  • 使用了一种新颖的自适应的采样算法,称之为 B-sampling. 基于bots固有特征:组相似,来引导采样过程。给定一个预定义的目标采样率, B-Sampling自适应的调整不同IPs分类的即时采样率。比如:那些享有相同通信模式的IPs就享有优先权,在保证全局采样率和目标采样率STtarget相接近的前提下。
  • 目标采样率通常有监控设备的进程容量和监控网络流量速度来决定。比如,监控设备容量为Cap_device bps, 而网络速度为 Cap_networks bps, 则目标采样率为:SR_target=Cap_device/Cap_network.
先分析第一部分:

4.1 Packet Sampling

如图2所示,PSampling包含4部分:
  • Counting-Sketch: 记录从SrcIP到DstIP包的数目,每过一定时间T, 包采样算法转移 Counting-Sketch到SID,并重置Countinig-Sketch为0,开始下一个interval. 每一个interval的结尾,都会触发SID和PSPC来鉴定IP地址是否有同步行为,并且重新计算每一类IPs的即时采样概率(也就是说在每一个interval里面,同一组IPs的采样概率不变,但是不同interval间,BSampling是不同的)。
  • Sampling-Sketch:此模块获取每一个报文的即时采样概率,并且决定此报文是否会被采样。
  • Synchronized IPs Detector (SID)
  • Priority-based Sampling Probabiity Calculation (PSPC)

更进一步详细的来说这四部分:

4.1.1 
【1】 Counting-Sketch:(CS)

是一个表,按照 (SrcIP/DstIP)的hash来建立索引的,表中的每一条目被定义为track-flow, 包含3个变量:SrcIP、 DstIP、计数器 cnt. 对于Tcp报文,entry保持 SYN/SYNACK标志。每到一个报文,SrcIP和DstIP都会被记录,计数器加1. 

需要注意的事:
  • Counting-Sketch只处理 从内部网络到外部网络的报文,这样的设计 简化系统实现,只监控物理链路上的外出流量。 进一步,减少了访问此表的 时间和内存消耗。
  • 每隔15分钟,Counting-Sketch都会充值为0. 
【2】 Sampling Sketch: (SS)
每一个SS表中的条目记录一 category/set of IPs, 并且有一个包计数器关联到这些IPs,还有一个采样概率和优先度。每来到一个包,SS根据SrcIP和DstIP记录判断包的分类,然后寻找与此类相适应的即时采样概率(pi), 然后以Pi的概率来采集此包。(这个具体是怎么做的呢?),之后,采样的包和采样概率被送往 Flow-Assembler.


分析了这两部分以后,我就开始着手编程实现这两部分。
具体要解决的问题有:
  • 这个hash值如何计算;
  • 怎么分类,有哪些。
  • 采样概率是如何落实的?如何根据采样概率来采集数据报文,如何根据SrcIP和DstIp来判断分类
4.1.2 Synchronized IPs Detector  (SID)同步的

SID 标示两种主机同步行为。
  • Syn-servers: 外部网络主机,它的客户端拥有相似网络行为;
检测Syn-servers动机:集中式Botnets的C&C服务器行为,集中式Botnets的Bots是同步的,并且存在相似网络行为;
[ 合法服务器,特别是通用的,它们的客户端行为往往彼此不同,由于不同的用户习惯 ].
  • Syn-clients: 内部网络主机,享有相似网络行为到多目标主机。
检测Syn-clients动机:P2P bots通常主动查询它们的同类来保持overlay P2P网络 for Botnet C&Cs. 这种行为会导致多种相似的连接到多节点Bots。

为了检测syn-cervers 和 syn-clients,我们介绍:homo-server 和 similar-client。

[homo当前缀表示同类的。]

  • homo-server: 我们统计Counting-Sketch表,基于每个DstIP。 如果一个DstIP拥有至少2个SrcIPs, 我们计算track-flow流size的变化。我们对所有满足条件爱你的DstIP对应的流差异进行排序,并获得中间值 Vmedium。对于一个DstIP,如果变量 Vi<Vmedium, 我们就认为其为homo-server。否则,我们认为此服务器为non-home-server, 如果它含有至少两个SrcIPs。
  • Similar-Clients: 预定义R=10;bins数组;每个Bin中bi表示bin中trackflow的平均大小。对于一个长度为L的流,如果|L-bi.center|<=R, 我们将跟track-flow插入bi,并且更新bi(其实就是聚类的一种变换,将大小相近的放在一起)。否则,我们建立一个新bin,并且插入对应的流到其中。在每个bin中,如果我们找到一对SrcIPs,并且每个含有C>=10个流,(连接C个不同的DstIPs),我们就称此对SrcIPs为similar-clients.
在辨识syn-clients中,我们一般的[currently]丢弃长度小于10的TCP和UDP报文,来防止通用网络服务(DNS.etc)以及类扫描行为带来的误报情况。(potential false positives)。

在辨识Homo-servers时,我们忽视长度为1的TCP报文或者只含有SYN ACK标志的报文,A TCP track-flow如果size为1标志这是一个不成功的连接;SYN ACK标志TCP报文从外部发出,通常不是botnet的C&C连接情况。Bots通常会连接外部网络for two reasones:First:广泛部署的Firewall/NAT会阻止连接从外部发起;研究者表明40%的storm藏在firewall or NAT中。Second:动态IPs使得C&C servers精确初始化连接到Bots使用动态Ips非常困难。

对于每个时间间隔T,我们判断Homo-server和Syn-clients。但是我们需要多个间隔才能判断syn-server和syn-client. 我们一直在Sampling Sketch中采样每个syn-server和syn-client for T_rec (T_rec=E/2, E is one epoch of 12 hours). 算法在Algorithm1中描述。
  • TH_syn-server/client是鉴定Syn-server/client的分数的上限;=4
  • TH_down是下限;=-10
  • Step_up/down是step of increase/decrease分数;[up=1, down=0.2]
  • Record: IP和 time stamp的数据结构;
  • Arr:根据hosts索引的Scores数组;
  • t_cur:当前报文的time stamp;
  • T_Arr=E/2;
  • 如果一个Arr中的记录在T-Arr期间没有更新,我们就将其清除出Arr。

Algorithm 1: Indentify Synchronized Hosts

Input:Counting Sketch, Set_d,  t_cur.
Output: Set_d: Records for syn-clients/servers
Begin:
  1. 对于每一个Set_d中的Record R:如果 t_cur-R.timestamp超过期限,那么就从Setd中删除R。
  2. 对于Counting Sketch中的每一个DstIP dhi:
    a) 如果dhi是homo-server,那么:Arr.get(dhi).scores+=Step_up, 如果此时这个dhi总分>=TH_syn-server,那么就加到setd中。并分数置为上限值。
    b) 如果dhi不是homo-server, 分数减去Step_down,如果小于下限,就等于下限。
  3. 对于Counting Sketch中的每一个SrcIP shi:
    a) 如果dhi是Similar-client,那么:Arr.get(shi).scores+=Step_up, 如果此时这个dhi总分>=TH_syn-client,那么就加到setd中。并分数置为上限值。
    b) 否则,分数减去Step_down,如果小于下限,就等于下限。
  4. 返回Setd.
4.1.3 Sampling Probability Calculation

我们对每一类IPs动态计算采样概率,两个目的:
  1. 获得syn-clients和syn-servers相关的尽可能多的报文;
  2. 使真实采样概率接近目标采样概率。
文章:【2:Fast monitoring of the traffic subpopulation】提出了方法来解决目标2:分配常量采样概率到不同类别。然而,这种框架需要针对不同类进行预算 pre-configured budgets。不合适的分配预算会影响采样概率。例如:对同步化的Ips给予不足够的预算将导致与Botnet相关的报文的损失,而过量的分配又会造成资源浪费。

为了充分利用资源来捕获数据包,我们设计了采样算法: Priority-based Sampling Probability Calculation
此算法原则:在一个预定义的采样概率下,我们使用提供的资源来捕获尽可能多的报文(针对第一优先类别)。余下的资源会被用去捕获尽可能多的下一等级优先种类。这种的过程会持续到没有资源或者没有分类。见算法2:
  1. P_t是预定义的目标采样概率;
  2. {f1,f2, f3,...,fn} is the fraction (分数,比例) of packets in each category where Priority1>priority2>.... {p1, p2, ..., pn} 是一组针对不同优先级的及时采样概率。
  3. budget是可提供的budget。
下面的公式告诉budget分配怎么帮助采样部分来保持目标采样率。
  • 假设一共有K个报文,目标采样率为Pt。
  • Given n categories,假设i类对应的报文数量比例为fi,我们给予其资源bi,我们可以计算得到,类i的采样概率为:Pt (bi/fi). 这个是怎么计算的呢? 类i的采样概率就等于实际采集到的类i的报文和实际i类报文数, 实际采集到的报文总数为:K*Pt,因为给与类i的资源为bi,所以实际采集到的类i的报文数位:K*pt*Bi, 而i类报文总数实际应为K*fi, 所以类i的采样概率为:K*pt*bi/(K*fi)= Pt*bi/fi.  或者可以简单的解释为:老子本来的份额是fi,但是你只给了bi,所以此类的采样率就应该是目标采样率Pt*(bi/fi);
  • 得到了每类采样数目,就可以得到全体采样数目:Q=
  • 解释:只要Bi之和为1,总采样率就会得到目标采样率Kt。由于fi不能提前精确获取,我们通过WMA(平均移动重量)基于前期观察值(在当前和之前的间隔中),动态获取,并为这两个区间分配权重w1=0.2, w2=0.8. (我们当前设计)。
  • 系统可以动态分配优先级到syn-servers/clients. 与这两类相关联的报文越少者,优先级越高。目的:使用足够的资源来建立精确的流(那些需要很少资源的)。
  • 实践过程中,操作可以修改优先级或者引入跟多的类,基于现有知识,比如:那些发送去确认bots同伙的报文)。余下的IPs会被标记为优先度3.
  • 作者在前文其实,只建立了三个类别。Syn-servers, syn-clients, and rest. 
Algorithm 2:

Input: Pt, f1, f2, ..., fn
Output: p1, p2, p3
Begin: 
  1. 首先设budget为1;
  2. n类中,每一类:
    a) 如果fi==0或者分配<=0, 那么pi=0; 
    b) 否则,pi=budget*Pt/fi; 如果>1,就=1。然后budget中减去相应部分:pi*fi/pt。
  3. 循环。
  4. 解释:其实很简单的原理,就是优先级高的,都利用现有资源尽可能的采集。余下资源交给下面。
  5. 原文:


4.2 Flow Assembler

The Flow Assembler 组装采样报文来产生:
  • 按SrcIP、SrcPort、DstIP、DstPort、Proto的五元组来将采样的报文组装成raw flows;
  • 怎么判断流方向:
    a) TCP流中,如果两次握手报文在,则很容易判断;
    b) 否则,其他的TCP流就当做从内部发起。保证那些的确是内部发起的流得到正确判断。
  • 输出流,当 1)TCP FIN/RST flag标志观察到;2)10分钟内没有新的报文到达;
  • 对于一个流:记录以下信息:time_start; time_end; size_actual (packets observed); byte_actual (of bytes observed); and Size_est;
  • Size_est是通过当前报文结合采样概率得到的,如果一个流中有n个报文,每隔报文的采样概率为Pi, 那么size_est=sum(1/pi). size_actual=n; byte_actual=sum(bi), bi是每一个报文的bytes size。
5 Flow Correlation

Flow-Correlation用来鉴定主机:是否持续相似通信模式。
  • 通过评价细粒度检测器和监控网络,我们能得到细粒度检测器能够承受的主机数目比例。例如,如果我们假定流量被平均分配到主机(在此监控网络),细粒度检测器的能力表示为Cap_detector bps, 网络速度为:Cap_network bps,指定 Per_exp=Cap_detector/Cap_network. 
  • Flow-Correlatio组件鉴定一组主机(至多为PerExp)享有相似通信模式 and show persistence. 
5.1 Flow Aggregation

  • 我们使用C-flow来表示从主 机到远程主机和端口的通信模式。
  • 我们定义C-flow作为一组raw-flows 享有共同五元组(在一个Epoch E中,=12hours),表示为:c={f1,f2,...,fn}. 
  • 为了得到c-flow,我 们过滤满足以下两个条件的raw flows
    a) raw flow从外部发起的;
    b) raw flow只有一个方向。表明是不成功的连接。

  • 我们表示C-flow,使用以下10个特征:
    特征1:  means and variances of fph (每小时的流个数)
    3: ppf (每个流中包个数)
    4: bpp: (每个报文的bytes数)
    5: pps: (每秒中的报文个数) ... 以上5个定义与BotMiner类似。
    6,7,8:我们使用Size_Est来计算ppf和pps,(byte_actual/size_actual)用来计算bbp。 
    9: fph_max:每小时中最大流个数;
    10: time_m:  两个连续流的中间值。
5.2 Cross-Epoch Correlation

  • 给定Per_exp,Cross-epoch鉴定成对的IPs ,享有相似通信模式。在N个epochs中至少有M个满足。(N>=M)
  • 我们获得C-flows集G 在多个epochs, 并且每个C-flow有一个epoch flag。
  • 在对C-flows聚类后,我们得到一个簇组{g1,g2,...,gn}, 每个gi表示一组流享有相同通信模式;
  • (G=g1 U g2 U g3 U ... gn).
  • 对于gi中的C-flows,我们进一步对它们进行聚类,到不同的组,表示为: {Ci1,Ci2, CiN} , and gi=Ci1 U Ci2 U ...U CiN, 通过它们的 epoch-tags. 例如,Cij表示j epochs中相似的C-flows. ( Spatial-similarity) . 
  • 对于每个gi, 如果一组SrcIps共享至少M个组中,代表它们持续共享至少M个epochs. 我们就标记此对SrcIPs为Suspicious.       



分析,可以看出:
  • 一个组gi有多个cj,cj中的j表示不同epoch。
  • 每个cj中又有多个流,享有相似行为模式。
  • 如果cj中涉及到的源ip对,在N个epoch中有至少M个同时出现,则认为两者有问题。
我们标示检测出IPs的比例为Per. 上图给出一个关联实例。
以下为翻译:
  • A/B/C/D就是与ha,hb,hc,hd主机相对应,远程主机和端口of ABCD在多个epoches不必要相同。

  • 例如:A表示<hA, h remote, port_remote>. 一些相似的C-flows流(ha,hb,hc,hd)被一起聚类到gi中。通过调查与每个c-flow相关联的epoch-tag., 我们将这些c-flows聚类到三组(c1,c2,c3), 就像图3左边标示的那样。右边表示Ha和Hb享有3个共同组,表明他们在3个epochs中享有相似通信模式。如果M<=3, 那么这两者就会被标记为可疑。

  • 备注:一个gi中,其实很简单,就是讲所有c-flows不分区间,先根据特点进行聚类。然后再根据其区间标签,划分为多个子组。需要知道的,上面之所以不同组都有A,B是因为A,B与时间无关系,只是源IP对应的。
为了聚类,我们使用聚类算法。BotMiner使用两级聚类框架(X-means 和 Hierarchical) ,但是不能处理大数据量的C-flows. 如图7所示。

为了有效率地处理C-flows,我们使用了一种可扩展的聚类算法 Birch 【24】
[An efficient data clustering method for very large databases.]

假定一个确定值“diameter',birch可以快速discover clusters of c-flows within such distance. 第二步,cross-epoch关联可以检测可以IPs基于聚类结果。我们重复这两步,通过增加diameter的值。

当可疑IPs比例Per到达期望比例Per_exp,或者循环50轮,过程结束。


6 Evaluation

我们实现一个原型系统,并且使用真实世界的网络流量和不同的Botnets来检测。
  • 结果显示Flow-Capture可以获取一个非常高的采样率(在对Botnet相关的报文采样方面),比之预定义的采样率。
  • 我们比较B-Sampling和FlexSampling,实验结果指示B-Sampling胜过FlexSample,在考虑Botnet报文采样率和检测速度of Flow_correlation. Cross-epoch Correlation可以有效和高效地( effectively and efficiently)地鉴定bots(假设有一定小比例的恶意主机)。
  • The fine-grained 检测器可以获取高检测率和低误报率,通过只检测小比例的可以主机。
6.1 实验建立和数据收集

我们在学校骨干网络上安装了监视器(200Mbps~300Mbps 在白天)来收集数据。
  • 流量覆盖不同的应用系统,我们相信这样的力量会提供很好的足迹来评价我们的系统;
  • 数据集采集了TCP和UDP头,共3.5天。其中全数据包1.5hours in Table1. 
  • 我们去除了(for dynamic IPs)分配给无线连接的B/16子网, 这个频繁变化,不能在多个epochs中准确地代表相同的hosts。
  • 我观察到了1460不同IP addresses在3.5天中。
  • 我们也收集到1.5小时的踪迹 with full payload.
我们收集了7个不同botnets的踪迹,包含IRC-, HTTP-,和P2P-based botnets, 像table2中描述似的。
  • Bot-IRC-A和Bot-HTTP-A被收集,通过运行bot 实例,(”TR/Agent.1199508.A“ 和  “Swizzor.gen.c") 在多个主机和honeypot中。
  • Bot-IRC-B和Bot-HTTP-B/C产生通过 Rubot [13], 一个botnet评价框架;
    [13]=Framework for botnet emulation and analysis. PhD thesis. 

  • Bot-HTTP-B,bots周期性的每隔十分钟连接C&C一次。

  • 在Bot-HTTP-C,bots连接C&C servers通过一个更稳健的方式,通过增加一个随机时间间隔(0,10min)。

  • Both of them 产生扫描攻击,当收到 scan command。

  • Bots in Bot-IRC-A 发送报文更频繁到C&C servers 在IRC session, 导致更大的C&C flows,比之Bot-IRC-B. 

  • 我们收集两种P2P-based botnets, storm 和 waledac。 通过运行二进制在控制环境。

  • 我们把3.5天Botnet产生的traces按照第一个报文的时间戳进行排序,并混入校园网的流量中。并随即选择客户端Client IPs来覆盖这些流量。

  • 我们选择12个小时为一个epoch,就共有7个epoch。
  • 过滤器covers包含 major local DNS, email servers. 以及 IP ranges of the 公共服务网络 ( Microsoft, Google, Yahoo, sun等),公共内容分发网络, AKAMAI. 它们的IP 范围一般不会当做Botnet C&C是, 以及IPs of top 10000 alexa 区域 (Corresponding to 12230 IPs) . 
    corresponding: 相配的;相当的,相应的。
6.2 Evaluation of Sampling Algorithm 评价采样算法


  • 我们评价采样算法:使用混合traces,通过不同的目标采样率(0.01,0.025,0.05,0.075,and 0.1) .
  • 我们比较B-sampling和FlexSample, 一个state_of_the_art采样算法,可以为了不同目的,配置不同条件。
  • FlexSample使用一个特定的条件 (Figure10 in FlexSample),来捕获botnet packets通过分配大量budget来采集相关”servers with high indegree of samll flows“。 

  • 然而,由于受感染的机器在现实中可能很少,因此”high fan-in" 特征不能hold,并且可能miss the botnet packets.
  • 像附件A中的Table 8所示,这种条件导致非常低的采样率到 botnet packets in our traces.
  • 因此,我们修改条件,并且只使用流大小相关条件for FlexSample.
  • 我们使用FlexSampling,使用条件如Table 7 with (size<=20, budget=0.95)

  • 这就意味着FlexSample使用95%的资源来捕获流大小小于20的报文。
Table3 显示了全局采样率以及在mixed dataset上采集于botnet-related报文的采样率,使用了 B-sampling和FlexSampling。


  • 第一列(SR_T)报告了预定义的目标采样率。
  • 第二列(SR_actual,B) 和 第三列(SR_actual, Flex) 报告了实际全局采样率,通过BS采样和FlexSample采样。
    结果显示了两种方法都能很接近实际采样率。
  • 后面的列也是给出了两种采样算法下针对不同botnet的报文的采样率。
  • 可以观察到,Flex采样不给力,原因:流大小和server indegree不是botnets的本质特点,不同的botnets在这些特征上可以变换很大。
  • 另外,B-S采样在采集IRC,HTTP方面要比P2P强,因为:跟Syn-Server的报文更少,按照前文的原则,它的优先度反而最大,因此都被采样了,而P2P-botnet相关的Syn-client报文范围采样要少了点。
  • 假定目标采样率SRt=0.05,我们给出了实验结果(BS采样效果)在Appendix A:
6.3 评价 [流相关] Evaluation of Flow Correlation

  • 背景: M=3, N=7 m=[N/2]
  • datection rate of bots (/23) and percentage of noises (/1460)
  • 结果:


显示了:
  • Per_exp>=5%时,基本上的Bots都能被鉴定;
  • 即使Per_exp=2%,3%,一半多的也能被捕获;
  • 我们比较了不同采样率下Flow-Correlation的检测率:(table 10.)
    表格中前面部分为使用BS采样,后面为FlowSample采样下,进行Cross-epoch Correlation下的结果。
  • 图4显示了不同采样率下针对各种bots平均检测率。
  • 图5,6显示了PerExp=0.01, 0.05下检测率,也显示了 使用B-Sampling能获得更高检测率。
  • 图7给出了(4G内存、双核CPU) 下,使用当前聚类算法,比较 BotMiner中的C-flows算法,时间消耗。
  • 【Birch:最大循环50次】

  • 图7显示了BotMiner中采用的C-plane聚类显示出了指数级增长(范围限制)
  • cross-epoch关联显示了线性模型,线性回归模型 t=0.0035x
  • 图8显示了不同M下使用B-sampling进行Flow-Correlation的平均检测率。显示了Cross-epoch的效率。
  • 当没有跨Epoch时,(M=1), 许多合法的IPs显示了强烈的相似性(比之bots)在一个single epoch.因此,给定的PerExp,50%的bots会missed。
  • 但是Cross-epoch关联有效消除合法IPs,(合法IPs显示了强烈的相似性,但是不能持续显示相似模式)。
    比如:M=2时,就基本上检测所有bots。结果对M=3/4/5不敏感,都显示了相似的检测率。
  • 观察来看,N/2 is a good value for M.

6.4 Botnet Detecton Botnet检测

细粒度的botnet的Detector检测了可疑IPs。使用1.5hr trace mixed with botnet traces, 我们评价了检测率和性能。

  • 通过分析IRC信息的相似性,“IRC Message Correlation"组件在我们的检测器中检测了 Bot-IRC-A/B。
    其他Bots被Correlation组件检测。
  • 比如,Bot-HTTP-B/C 触发警告当扫描当地网络;
  • Bot-HTTP-A bots触发当其更新请求;
  • Storm / Waledac 触发警告当期 discover peers.
  • 这些bots被检测,通过关联那些IPs的行为(哪些IPs呢?就是Flow-Correlation得到的可疑关联IPs)
  • 表5显示了检测率和误报率,对于不同的目标检测率和Per_exps.

 Table 11的表格显示了细粒度检测器需要检测报文比例:

  • 显示了:更多组合的SRt和Per_exp在我们的framework下可疑减少流量volume,by more then 90%,但是仍能保持高检测率和低误报率。
  • 比如SRt=0.01 和 Per_exp=0.05, 细粒度的检测器可以检测所有bots with false positive of 0. (0 误报率),只需要聚集1.7%比例报文。
  • 表6给出了性 能比较,包含了性能和处理时间,在两种情况下:
    1) 检测器直接应用;
    2) 检测器应用于Flow-Correlation 和 BS采样(PerExp=0.05, M=3) ,通过使用Flow-Correlation, 细粒度检测器可以减少95%时间来处理 off-line traces, 显示了在realtime下可能减少大量工作负载。


7 讨论 Discussion

怎么回答”我们的方法能够处理多高网速的网络呢?“、
我们考虑2个重要组件的性能, B-Sampling 和 Cross-epoch Correlation的性能。
  • B-Sampling试图用硬件实现,其中Counting-Sketch和Sampling-Sketch 用快速Memory ( SRAM),
    SID和PSPC用 slow memory ( DRAM); 系统可以周期性从SRAM到DRAM读取数据,来鉴定synchronized hosts和计算采样概率,然后写IPs sets到SRAM。其中Counting-Sketch,近来研究显示hash function可以实现10Gbps,通过硬件实现。文献【3】:Divide and concatenate: An architectural level optimization technique for universal haash function. 说明了B-Sampling可能的10GPS性能,通过硬件实现。假定期望的消耗2hr, 线性模型t=0.0035x (in seconds) 实现了2M C-flows.  就是说2个小时可以处理200万个c-flows.  如果我们假定c-flows数目和流量大小是成比例的,(我们文中200K的C-flows对应了200Mbps),那么2M的C-flows就能对应2Gbps。由于2Gbps比BS采样的10Gbps的可能性能要少。
  • 显示了:
  • 我们的方法可以使用2Gbps网络(校园骨干网络),并且可以部署在更快的网络上,随着期望的时间消耗增加。
Evasion: 
  • 由于我们的假设:持续coordinated C&C in a botnet, 所以如果 botmaster知道我们的算法,像攻击IDS一样,就能够实现evasion. 闪避。
  • bots可以有目的的运行它们的通信模式来减少目标采样概率或者逃避cross-epoch correlation. 比如:bots可以随机通信模式(如:per flow中报文数目)来evade syn-client/server detection。
  • 一个可能的解决:动态调整参数来鉴定syn-servers/clients for each round (eg:随机选择1/4, 3/4或者一半误差来鉴定syn-server), 选择R/C 从预定义的值/范围 来鉴定 syn-clients. ). 
  • 另外一个可能的解决:BS从其他系统吸收信息 ( B-sampling to incorporate information from other systems). (eg: 我们可以设置Ips类 in rouge networks 或者恶意 fast-flux networks,这些网络很可能与botnets相关,来采样更多相关相关报文). 
  • 在Cross-epoch关联,我们吸取更多检测特征。( eg: 使用包载荷信息 for some tight clusters to do light-weight content checking) to 使evasion更加困难。
  • 由于rams race的本性 in existing 入侵检测和 evasion practise, 我们研究更多的better和更多的鲁棒技术 as a defender). 
  • 比较不同的补偿检测技术 to make the evasion harder 是可能未来的方向。
  • 我们留下了更加深和扩展的研究来处理这些evasion attempts ,作为下一步工作。

8 总结:

本文结果特点:
  • 处理高速和高容量网络;【背景】
  • botnet-aware adaptive packet sampling algorithms || a scalable spatial-tampling technique.
  • 使用网络特征 of botnets C&Cs 来捕获更多的相关报文;
  • 并且adaptively tune the 采样概率来保持目标采样rate。
  • 流相关方法利用botnets的必要特征:with persistently similar communication patterns.
  • 基于 真实网络踪迹的评价,显示了我们提出方法 yields good performances.  yield: 生产;投降;
  • 采样算法可以捕获更多的botnet报文 ,比之预定义采样算法率。
  • outperforms胜过:state-of-the-art adaptive asmpling algorithms。
  • 基于采样报文,correlation 算法可以成功的和可扩展地 精确描述各种bots类型。
  • 这个方法帮助fine-grained botnet detectors 来集中inspecting packets of a smaller amount of suspicious traffic, 这样boost allowing them to operating on increasingly more hign-speed networks.





























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值