近年来,僵尸网络已经作为互联网稳定和安全的最大威胁,安全界对此予以了高度关注。僵尸网络 Botnet 是指采取一种或多种传播方式,将少量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所产生的一个可一对多控制的网络。 攻击者通过诸多方式传播僵尸程序感染互联网上的少量主机,而被感染的主机将借助一个控制信道接收攻击者的指令,组成一个僵尸网络。之所以用僵尸网络这个昵称,是为了更形象的让人们认识到这类危害的特性:众多的计算机在不知不觉中好似中国远古传说中的僵尸群一样被人剿灭和指挥着,成为被人借助的一种工具。
僵尸网络是一个可控制的网络,这个网路并不是指生物含义上具备拓扑结构的网络,它带有一定的分布性,随着bot程序的不断传播而不断有新位置的僵尸计算机添加到这个网络中来。僵尸病毒被人放到计算机时机器会滴滴的响上2秒;是采取了一定的恶意传播方式产生的,例如主动漏洞防御,邮件病毒等诸多病毒与蠕虫的传播方式僵尸主机的定义,都可以用来进行Botnet的传播,从这个含义上讲,恶意程序bot也是一种病毒或蠕虫。
目前,针对最早发生的IRC僵尸网络的测试技术获得了比较理想的效果。本文从终端层面出发,提出了一种基于主机平台行为和网络行为的混合式检测算法,该算法可以有效测试出IRC、P2P和HTTP类型的僵尸主机。
1 相关研究
僵尸网络是互联网上遭到黑客集中控制的一群计算机,往往被黑客用来发起的网路攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的很多计算机所储存的信息,譬如银行账户的密钥与社会安全号码等也都可被黑客随意“取用”。因此,不论是对网络安全运行还是用户数据安全的保护来说,僵尸网络都是极具威胁的弊端。僵尸网络的威胁也显然变成现今一个国际上十分关注的难题。然而,发现一个僵尸网络是比较困难的,因为黑客一般远程、隐蔽地控制分散在网路上的“僵尸主机”,这些主机的用户显然并不知情。因此,僵尸网络是现在互联网上黑客最青睐的作案工具。
GUG等人提出了基于网络特点的僵尸网络测试技巧,实现了原型平台BotSniffer和BotMiner。将被监控的网路内部每台主机的通讯行为和网络恶意活动进行分类,找出带有相同或相关通信和网络恶意行为的主机。如果被监控的外部网络有增多的主机而其中只有少数几台感染了僵尸程序,这种步骤就失去了评估的含义。
KANG J等人提出了一种多图累加和测试P2P僵尸网络的方式。认为主机形成的网络流量是一个复杂的随机模型,发生任何异常就会给这个建模带来显著的差异。而一台主机被感染P2P僵尸程序后,会表现出明显的异常网络流。
NOH S等人提出了一种使用多定相流建模测试P2P僵尸网络的步骤,对P2P僵尸程序与其他结点通信的多种流量特点进行了剖析,然后用相似度进行判定和检验。
WANG B等人运用P2P僵尸网络控制流的稳定性对僵尸主机进行监测。他们从P2P僵尸网络的控制流中选择一个变量,该变量在整个时间段的值都稳固在某一个水平,而且上下波幅的升幅不大。这种方法的误报率和漏报率比较高。
除了僵尸网络的网络行为特点外,LIU L等人从僵尸程序执行特性出发,提出了一个检测原型平台BotTracer。由于没有考虑僵尸程序的网络控制流特性,误报率比较大。但是这类技巧依赖于蜜网和蜜罐的分布,无法有效地检测出全部活跃的僵尸网络。
2 算法设计
僵尸程序为了自启动和执行恶意行为,必须读取特定的平台数组。例如网络下载命令会从终端向外发起连接,向目标请求数据,并且在本地终端上面建立新文件。所有很多动作(网络联结、发送、接收、文件建立)都借助读取系统变量来谋求,而譬如下载地址这样的控制信息是从网络中接收到的。正常的网络应用程序虽然也接收网络数据,但是一般不会从接收到的数据中提取参数来读取这些特殊的系统函数[12-13]。因此借助监控特定变量调用的参数来源,就可以判断出僵尸主机在终端平台上的恶意行为。
僵尸主机的网络流量按照种类可以分成两类:(1)行为流,指与僵尸主机恶意网络行为相关的流量(如DDoS、Spam、扫描(Scan)等形成的流量);(2)控制流,指与获取僵尸主人命令、维持C&C信道等相关的流量。通过研究发现,与C&C信道创建连接后,僵尸主机为了维持连接的活跃,一般会周期性地发送特定的轮询,这后面没有用户的干预,因而控制流表现出一定的稳定性,而正常的网络应用程序运行时,由于存在用户干预,一般不会表现出这样的稳定性,因此控制流的稳定性可以成为僵尸网络的一个重要判定依据。
本文在综合考量僵尸主机的平台行为和网络行为的基础上,提出了一种混合式僵尸主机测试算法。僵尸主机检查算法监控有网络通讯行为的进程,并判定其能否为僵尸进程,只要存在僵尸进程,则该终端为僵尸主机。僵尸进程监测算法主要结合程序自启动、控制流的稳定性、系统恶意行为和网络恶意行为4个指标来断定。僵尸进程监测算法如下所示:
输入:有网络通信行为的进程
输出:是否为僵尸进程
过程:
if系统恶意行为||网络恶意行为
if自启动&&控制流稳定
报警;
exit;
else
可能是下载者、木马等其他恶意代码;
end if
else
什么都不做;
end if
2.1 系统行为监控算法设计
根据里面的剖析,本节给出系统行为监控算法,算法中BotBehavior变量记录恶意行为数,X0是依照实践预定义的阀值。恶意行为累积超过一定的差值时,则标记为平台恶意特征。系统行为监控算法如下所示:
输入:Windows操作系统某一进程和该进程接收到的网络数据
输出:报警信息(也可无报警)
过程:
BotBehavior=0; //初始化时,僵尸行为数为0;
SelectAPI 1=AutoAPISet;//APISet是一些自启动行为应当调用的系统函数
SelectAPI 2=MalAPISet;//APISet是一些恶意行为应当调用的系统函数
X=X0; //给判断阈值赋初值
while进程为终结
捕获该进程的系统读取call;
if call 属于SelectAPI1
报警自启动
else if call 属于SelectAPI2
if call 的参数是接收自网络的数据
BotBehavior ++;
end if
end if
if BotBehavior>=X
报警系统恶意行为;
exit;
end if
end while
2.2 网络行为监控算法设计
控制流的稳定性是判别僵尸网络的一个重要依据。基于参考文献[6]中强调的稳定性思想,本节设计了一个改进的流量稳定性衡量方式。
2.2.2 稳定性检测算法
3 算法评估
以强调的混合式僵尸主机测试算法为基础,设计并推动了一个检测原型平台——BotScout。BotScout运行在Windows操作系统上,主要由变量调用监控组件、系统行为监控模块、污染传播监控模块和网络行为监控组件构成,总体构架如图1所示。
系统变量对监控组件的读取基于Microsoft Detours 2.1 Express设计,根据监控的功能,系统把拦截的Win32API函数分为系统行为变量、污染传播函数和网络行为函数三大类。
(1)系统行为监控组件。僵尸程序频繁把自己注入到其他进程中以躲避杀毒工具和防火墙的拦截,因此如果某个进程注入代码到其他的进程,则监控被注入进程的行为。僵尸程序为了谋求自启动必须更改特定的注册表项或者一些特定文件,而泄露系统的敏感信息也是借助访问特定的文件、注册表、键盘消息实现,监控这些变量的读取就可以看到此类恶意行为。
(2)污染传播监控组件。为评估僵尸程序“可控性”,算法对接收到的网络数据进行监控。网络数据监控出现在网络接收时,这些接收到的数据称为脏数据,算法持续追踪脏数据:当脏数据读取新的存储空间时,跟踪写入过程,把新的存储区的数据标志为脏数据,并将其加入到脏数据链表中。监控污染的传播相当重要僵尸主机的定义,否则会出现漏报。其实,还有一些函数也会起到污染传播的作用,例如把某个存储内容转换为数值的变量、大小端转化函数,还有一些加密、解密、压缩、解压缩的变量等;并且许多存储拷贝函数是inline或者静态链接在文件中的,在原型平台BotScout中暂不考量很多函数,这也有下一步重点工作之一。
(3)网络行为监控组件。如何有效地分离控制流和行为流是这个组件的一个难点。僵尸程序开启后手动与C&C信道创建连接,因此标记起始建立的网络联接为控制流,并在整个进程监测周期中对相同协议的网络连接进行统计,分析其稳定性;僵尸主机本质上是控制流驱动行为流,因此如若一个新的网络联接搭建过程中地址绑定参数使用了控制流接收到的数据,则标记这个新连接为行为流,并对内容进行剖析。
3.1 测试环境
由于僵尸网络范围比较广,在实际应用上将整个僵尸网络中的所有节点测试、追踪出来是不可能的,所以僵尸网络测试一般是评估出网络中的个别节点。本文的实验和监测环境为加装有检查平台的局域网,检测对象为局域网内部的主机节点。
BotScout运行在单台终端平台上,系统检测拓扑如图2所示。测试主机通过交换机连接在一起,经过边界路由、防火墙与互联网通信,所有流量控制在此测试环境内,不会对其他主机形成妨碍。
共有6台测试机,分别对应6个样本,每台运行120 min。这6台测试机的运行环境为Windows XP SP3,配置为2CPU Intel(R) Core(R) 2.0 GHz、2 GB内存,100 MB网卡。
3.2 测试结果
本试验选取了两类样本程序:(1)僵尸程序样本。实验选取了SDBot、AgoBot和SpamThru三种不同控制协议的僵尸程序;(2)正常网络应用程序样本。实验选取了经典的IRC聊天工具mIRC,热门的网页浏览器Internet Explorer和流行的P2P下载硬件eMule。对试验数据进行横向检测,结果如表1所示,僵尸程序样本都能在较短的时间内被监测出来,而正常网络应用程序在整个运行周期内都没有报警。
在充分研究僵尸主机的行为特征以及僵尸网络命令与控制信道的特点后,提出了一种综合平台行为与网络行为的混合式僵尸主机测试算法,并对现有的僵尸网络行为稳定性衡量方式进行了优化。基于该算法设计推动了一个僵尸主机测试原型平台BotScout,并对这个系统的功耗进行了检测。实验结果验证了算法的可行性、有效性和准确性。
[1].IRCdatasheet
来源:LIDY
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-120133-1.html
早安@TFBOYS-易烊千玺