僵尸网络研究系列文章之二 设计自动识别系统

僵尸网络研究系列文章之二 设计自动识别系统
僵尸网络(Botnet)研究的常规研究方法中,第一种是使用蜜网技术研究。该方法从僵尸程序(bot)入手研究Botnet的特征,这种方法利用了Botnet的可传播性,通过蜜罐手段获得用于传播扩散的bot程序样本,然后逆向分析这些样本,从而获得这些bot程序中所包含的连接Botnet服务器所需要的属性值,这样就可以深入地跟踪Botnet,获得Botnet的情况。
这种方法的优点是能够有效地捕获比较活跃的Botnet,并且准确率比较高,同时,由于可以获得程序中包含的一些特征值,可以对Botnet进行更深层的研究。但这种方法对于不再传播的Botnet是无法捕获的。
第二种方法是基于网络流量的研究。这种方法是将Botnet的行为特征通过流量变化反应出来,然后通过统计这些特征流量来判断Botnet的存在。这种研究方法能够通过对网关流量的分析来判断Botnet存在的可能性,但Botnet的流量往往会淹没在海量的网关流量中,很难被有效地区分出来。 原因如下:  
第一,Botnet是一种恶意行为,拥有这些Botnet的人极不愿意让其他人登录到他的服务器中去,同时也为了防止其他黑客夺取其Botnet,他会有意地隐藏服务器的基本信息,如连入的用户数、可见的用户数、服务器内所建立的频道等,这些信息本来是需要公布给聊天者的,现在却被攻击者有意隐藏了。
第二,由于加入到Botnet服务器中的所谓用户nickname是由bot程序生成,所以这些bot的nickname应符合一定的生成算法,也就带有了某些规律,如IP地址表示法(就是将被感染了bot程序的主机的IP地址所在国的三位缩写放在开头,然后在后面加入指定长度的随机数字,如USA|8028032,CHA|8920340)和系统表示法(将被感染bot程序的主机的系统作为开始的字母如xp、2000等,然后再在后面加上指定长度的随机数字,如xp|8034,2000|80956)。这些命名的特征可以从得到的bot源码中发现并总结出来。这些用户的nickname的规律性和正常的IRC Server中的用户nickname的随意性是不相同的。图1就是截取的两个带有命名规律的Botnet的用户nickname集。
第三,由于Botnet中的感染bot程序的主机是在不知情的情况下被控制的,所以在没有Botnet控制者指令的条件下是不会有所行为的,所以他们的行为也会不同于正常的IRC Server中的聊天者的行为,更形象地讲他们的行为更像一个个僵尸。
由于以上原因,在IRC协议的Botnet服务器中,存在着可以提取的有别于正常IRC服务器的特征属性,通过统计和使用一定的模式识别算法,最后可以将这些特征属性构成用来判断服务器性质的判断条件。
系统设计
通过上面的分析可以看到,要获取这些信息,需要有可以自动登录的IRC客户端程序,同时要有一个比较合理的识别算法以便提高使用这些信息作为判断标准的准确率。本着这样的设计思路,这里给出Botnet自动识别系统。
本系统分为四个模块,分别为数据收集模块、样本集建立模块、规则集模块以及检测模块。
数据收集模块
根据目前Botnet存在的情况,针对IRC Botnet进行研究,在网络中搜集bot恶意样本分析报告,从而得到有关Botnet的服务器地址信息,以及登录指定频道的信息,将所需要的服务器地址信息、登录口令、登录频道名称、登录频道所需密码以及nickname的命名规则提取出来存入到数据库中供采集异常样本时使用。另一方面将网络中正常的IRC服务器的地址信息也提取出来,供采集正常的样本时使用。
样本集建立模块
将异常和正常的数据集中的登录信息作为输入,登录到相关的IRC服务器中,获取指定的服务器信息,存入到后台数据库形成异常样本库和正常样本库。
规则集模块
使用贝叶斯算法对样本集中的异常样本和正常样本进行统计,得到各个属性在Botnet判断中所占比例,这样就形成了可用于判断的规则库。随着样本数的不断增加,不断地修正各属性的概率和判断阈值,这样就可以逐渐提高判断的准确性。同时要不断总结可用来判断的新属性,扩展规则集。
检测模块
在CERNET网关中提取使用IRC协议默认的通信端口6667的相关信息,得到存在于CERNET中的IRC服务器地址或与CERNET主机建立联系的服务器地址,然后登录到这些IRC服务器中,通过同样的特征采集方法得到能够用来判断的服务器特征,再通过检测器,比对与规则集中的条件相符的属性,采用复合概率的方法计算出符合条件的各规则的总的概率,与规定的概率阈值进行比较,得出判断结论。根据得到的结果再存入不同的样本集中,这样就可以不断地增加样本。
系统的实现
在系统模型的各个设计模块中,采集样本和统计判断概率是关键部分,所以主要介绍这两部分的实现。
僵尸程序客户端模拟
采集Botnet样本。实现方法是编写一个模拟的IRC客户端程序,能够应答各种IRC协议的指令,并且将登录服务器后回馈的各种信息选择出来填写到后台数据库中保存,这样就可以得到后续所需要的判断属性。在采集过程中尽可能多地保留各种信息。因为在获得Botnet样本时,有些信息是被控制者有意修改和掩盖的,所以往往会有某些属性扰乱我们的判断,只有尽可能多地比对各种属性才能有比较准确的判断。
僵尸网络判定流程
统计判断概率部分是采用贝叶斯算法和复合概率的方法来实现的。首先要统计出某个属性在Botnet样本中的出现概率,然后再统计出这个属性在正常IRC Server样本中出现的概率,根据贝叶斯公式得到出现该属性时服务器为Botnet服务器的概率。依次将所有能够采集到的属性都进行这样的统计计算,就形成了一个判断条件列表。每一个需要判断的服务器都先相应地进行属性采集,然后对照这个判断列表,利用复合概率的计算方法得到最终的概率。
具体实现是这样的。
P(ti|A1) i=1,2,3,4,5,6为该服务器为Botnet服务器的事件发生时,即已知为Botnet服务器时存在ti属性的概率,计算方法为(A1是Botnet服务器这个事件的发生):
P(ti|A1)=存在ti的Botnet服务器数/总的Botnet服务器数;
P(ti|A2) i=1,2,3,4,5,6 为该服务器不是Botnet服务器的事件发生时,即已知该服务器为正常IRC服务器时存在ti属性的概率,计算方法为(A2为不是Botnet服务器的事件发生时):
P(ti|A2)=存在ti属性的正常样本的服务器数/总的正常服务器数;
根据贝叶斯公式:
P(A1|ti)= P(ti|A1)*P(A1)/[P(ti|A1)*P(A1)+P(ti|A2)*P(A2)]
假定先验概率P(A1)=P(A2)=50%,这样就可以计算出P(A1|ti),就形成了判断列表。当给定一个服务器地址后,根据获取的属性特征,得到可判断的概率,公式为:
P(A|t)=P1*P2*P3….*Pn/P1*P2*P3…Pn+(1-P1)(1-P2)(1-P3)*…(1-Pn)
其中Pi=P(A1|ti)。
系统优缺点分析
系统具备如下优点。
第一,从网关数据出发,直接找到用于Botnet控制的核心服务器。在一个网关中有着大量的基于IRC协议的通信信息,可以为我们提供很好的IRC Server地址,通过上面的识别判断方法可以对这些Server地址进行过滤,将Botnet Server从这些信息中挑选出来。
第二,判断方法明确简单,误报率低。这些用来判断的属性都是从真正的在网络中存在的Botnet样本中挑选出来的,所以比较直接明了,可以很快将具有这些属性的Server与普通的IRC Server区分开来。
第三,具有可扩展性,可以不断地通过添加用来判断的属性和样本数量,不断提高判断的准确性。随着对IRC协议的深入分析,以及对Botnet特征的全面理解,可以加强判断的条件,使系统由可判断有较明显差别的Botnet Server到细致地区分有较小差别的Botnet。
但是,系统还存在如下局限性。
第一,漏报率比较高。Botnet服务器按照生成的形式粗略地分为两类:一类是依托大的IRC Servers,在这样的服务器上建立恶意频道,以便形成可控的Botnet。这种Botnet的优势是规模庞大,攻击力强,同时还可以节省自身的资源,但被发现的几率也比较大,而且一旦被发现,Botnet就会被IRC Server的系统管理员所控制,损失严重。另外一类Botnet是独自建立的IRC Server,由黑客自己控制,这种Botnet规模虽然小,但容易控制,随时可以隐藏自身,并且有着很好的可迁移性。
对于第一类Botnet,本系统目前存在较大误差,还需要获得Botnet更详细的登录信息,做进一步的判断,才能够得出更好的识别效果。
第二,该系统的检测对象是针对IRC协议的Botnet,也可以扩展到基于这种集中控制的Botnet。但是对于目前已经存在的基于P2P结构的Botnet,由于不存在核心控制的服务器,无法利用本识别系统进行判别。
任何一种检测方法都不是万能的,比较有效的方法是将几种各有所长的方法集中起来,形成一个整体,这样才能够最大限度地提高判断的准确性。我们下一步的工作就是着重解决对依托合法的IRC Server建立的Botnet的判断,同时研究逐渐发展起来的基于P2P结构的Botnet,找到行之有效的判断方法。

你可能感兴趣的:(职场,休闲,僵尸网络研究系列文章之二,设计自动识别系统)