《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 一种混合式僵尸主机检测算法的设计与实现
一种混合式僵尸主机检测算法的设计与实现
来源:微型机与应用2010年第16期
周振吉,吴礼发,梁其川,李华波
(解放军理工大学 指挥自动化学院,江苏 南京210007)
摘要: 为了进一步提高检测的精确性,在研究僵尸主机的行为特点以及僵尸网络命令与控制信道的特性后,提出了一种基于终端系统行为和网络行为的混合式僵尸主机检测算法,并对现有的僵尸网络行为稳定性衡量方法进行了改进。在此基础上,设计实现了一个僵尸主机检测原型系统——BotScout。评估结果表明了算法的有效性。
Abstract:
Key words :

摘  要: 为了进一步提高检测的精确性,在研究僵尸主机的行为特点以及僵尸网络命令与控制信道的特性后,提出了一种基于终端系统行为网络行为的混合式僵尸主机检测算法,并对现有的僵尸网络行为稳定性衡量方法进行了改进。在此基础上,设计实现了一个僵尸主机检测原型系统——BotScout。评估结果表明了算法的有效性。
关键词: 系统行为;网络行为;僵尸网络;僵尸主机

    近年来,僵尸网络已经成为互联网稳定和安全的最大威胁,国内外安全界对此给予了高度关注。僵尸网络(Botnet)是僵尸主人(BotMaster)通过命令与控制信道(C&C)控制的具有协同性的恶意计算机群,其中被控制的计算机称为僵尸主机(Zombie),僵尸主人用来控制僵尸主机的计算机程序称为僵尸程序(Bot)。通过这个计算机群,僵尸主人可以实现覆盖面更广、强度更高、更难被检测的恶意行为,例如分布式拒绝攻击(DDoS)、发送垃圾邮件(Spam)、窃取敏感信息等。
    僵尸网络具有以下3个主要特性[1]:(1)“恶意性”,即僵尸主机主要开展DDoS、Spam、下载延伸其他恶意代码等一系列恶意行为;(2)“可控性”,即僵尸主机通过C&C信道接收僵尸主人的命令后执行相应的恶意行为;(3)“协同性”,即同一个僵尸网络中的僵尸主机联合同步执行僵尸主人的命令。
    目前,针对最早出现的IRC僵尸网络的检测技术取得了比较理想的效果[2]。但是近几年来,P2P和HTTP类型的僵尸网络日益盛行,而P2P协议多样性和HTTP协议普及性的特点,使得传统的僵尸网络检测技术面临巨大的挑战。本文从终端层面出发,提出了一种基于主机系统行为和网络行为的混合式检测算法,该算法可以有效检测出IRC、P2P和HTTP类型的僵尸主机。
1 相关研究
    目前,大多数僵尸网络检测技术主要是从僵尸网络的网络流量特性入手。
    GU G等人[1,3]提出了基于网络特征的僵尸网络检测方法,实现了原型系统BotSniffer和BotMiner。将被监视的网络内部每台主机的通信行为和网络恶意活动进行分类,找出具有相似或相关通信和网络恶意行为的主机。如果被监控的内部网络有较多的主机而其中只有少数几台(即使一台)感染了僵尸程序,这种方法就失去了检测的意义。
    KANG J等人[4]提出了一种多图累加和(Multi-chart CUSUM)检测P2P僵尸网络的方法。认为主机产生的网络流量是一个复杂的随机模型,发生任何异常都会给这个模型带来明显的变化。而一台主机被感染P2P僵尸程序后,会表现出明显的异常网络流。作者用多图累加和模型描述网络异常,并采用动态阈值自适应技术提高检测的精确性。
    NOH S等人[5]提出了一种使用多定相流模型(Multi-Phased Flow Model)检测P2P僵尸网络的方法,对P2P僵尸程序与其他节点通信的多种流量特征进行了分析,然后用相似度进行判断和检测。该方法充分利用了P2P僵尸网络的网络流异常实施检测,但是对其他类型僵尸网络检测效果不好,专用性太强。
    WANG B等人[6]利用P2P僵尸网络控制流的稳定性对僵尸主机进行检测。他们从P2P僵尸网络的控制流中选取一个变量,该变量在整个时间段的值都稳定在某一个水平,而且上下波动的幅度不大。这种方法的误报率和漏报率比较高。
    除了僵尸网络的网络行为特性外,LIU L等人[7]从僵尸程序执行特征出发,提出了一个检测原型系统BotTracer。由于没有考虑僵尸程序的网络控制流特性,误报率比较大。而HOLZ T等人[8]采用蜜网蜜罐技术,但是这类方法依赖于蜜网和蜜罐的分布,无法有效地检测出全部活跃的僵尸网络。
2 算法设计
    通过分析大量僵尸程序样本与综合现有文献[9-11]得知:僵尸程序在系统行为和网络行为方面与正常程序都有比较明显的区别,而这些区别可以作为僵尸程序检测的依据。
    僵尸程序为了自启动和执行恶意行为(包括键盘记录、密码盗取、网络嗅探、私密后门安装、间谍软件和rootkit等),必须调用特定的系统函数。例如网络下载命令会从终端向外发起连接,向目标请求数据,并且在本地终端上面创建新文件。所有这些动作(网络连接、发送、接收、文件创建)都通过调用系统函数来实现,而诸如下载地址这样的控制信息是从网络中接收到的。正常的网络应用程序虽然也接收网络数据,但是一般不会从接收到的数据中提取参数来调用这些特殊的系统函数[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)污染传播监控模块。为检测僵尸程序“可控性”,算法对接收到的网络数据进行监控。网络数据监控发生在网络接收时,这些接收到的数据称为脏数据,算法持续跟踪脏数据:当脏数据写入新的内存空间时,跟踪写入过程,把新的内存区的数据标识为脏数据,并将其加入到脏数据链表中。监控污染的传播相当重要,否则会发生漏报。本模块主要监控内存拷贝函数(如memcpy),这也是污染传播的主要途径。其实,还有一些函数也会起到污染传播的作用,例如把某个内存内容转化为数值的函数(如atoi)、大小端转化函数(如htonl、htons),还有一些加密、解密、压缩、解压缩的函数等;并且许多内存拷贝函数是inline或者静态链接在文件中的,在原型系统BotScout中暂不考虑这些函数,这也是下一步重点工作之一。
    (3)网络行为监控模块。如何有效地分离控制流和行为流是这个模块的一个难点。僵尸程序启动后自动与C&C信道建立连接,因此标记起始建立的网络连接为控制流,并在整个进程检测周期中对相同协议的网络连接进行统计,分析其稳定性;僵尸主机本质上是控制流驱动行为流,因此如果一个新的网络连接建立过程中地址绑定参数使用了控制流接收到的数据,则标记这个新连接为行为流,并对内容进行分析,检查是否符合DDoS、Spam、Scan等恶意行为特征。
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] GU G F,PERDISCI R,ZHANG J J,et al.BotMiner:clustering analysis of network traffic for protocol-and structureindependent botnet detection[C].In Proc.of USENIX Security’08,July 2008.
[2] 王威,方滨兴,崔翔.基于终端行为特征的IRC僵尸网络检测[J].计算机学报,2009,32(10):1980-1988.
[3] GU G,ZHANG J,LEE W.BotSniffer:detecting Botnet command and control channels in network traffic[C].In Proc.of  the 15th Annual Network and Distributed System Security  Symposium(NDSS’08),2008.
[4] KANG J,ZHANG J,LI Q,et al.Detecting new P2P Botnet  with multi-chart CUSUM[C].In 2009 International Conference on Networks Security,Wirelsss Communications and Trusted Computing.2009.
[5] NOH S,OH J,LEE J,et al.Detecting P2P Botnets using a multi-phased flow model[C].In Third International Conference on Digital Society.2009.
[6] WANG B,LI Z,TU H,et al.Measuring Peer-to-Peer Botnets using control flow stability[C].In 2009 International Conference on Availability,Reliability and Security.2009.
[7] LIU L,CHEN S,YAN G,et al.BotTracer:execution-based bot-like malware detection[C].In 11th International Conference on Information Security(ISC 2008).2008.
[8] HOLZ T,STEINER M,DAHL F,et al.Mesaurments and mitigation of Peer-to-Peer-based Botnets:a case study of  storm worm[C].In Proc.of USENIX LEET’08,April 2008.
[9] NAZARIO J.Botnet tracking:tools,techniques,and lessons learned[C].In Black Hat,2007.
[10] ZHUGE J W,HAN X H,ZHOU Y L,et al.Research and development of Botnets[J].Journal of Software,2008,19(1):152-165.
[11] GRIZZARD J B,SHARMA V,NUNNERY C.Peer-to-Peer botnets:overview and case study[C].In Proc.of the 1st Workshop on Hot Topics in Understanding Botnets(HotBots 2007).Boston,2007.
[12] YIN H,SONG D,EGELE M,et al.Panorama:capturing system-wide information flow malware detection and analysis[C].In ACM Conference on Computer and Communication Security(CCS),2007.
[13] STINSON E,MITCHELL J C.Characterizing bots’ remote control behavior[C].In Lecture Notes in Computer Science,Volume 4579.Springer Berlin/Heidelberg,2007.

此内容为AET网站原创,未经授权禁止转载。