APP下载

基于DNS查询行为的Bot检测

2015-04-14李晓利汤光明

计算机工程与应用 2015年1期
关键词:僵尸IP地址进程

李晓利 ,汤光明 ,初 晓

1.信息工程大学,郑州 450004

2.中国人民解放军63895部队

1 引言

作为攻击者手中最有效的通用网络攻击平台,僵尸网络[1-2]已成为互联网安全的最大威胁之一。它是攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络[3]。僵尸程序[4-5](Bot)作为运行在僵尸主机上的恶意程序,通过命令与控制信道接收控制者的各种指令,是恶意行为的最终执行者。因此,及早并有效地检测出主机中感染的Bot,是僵尸网络对抗中的关键环节。

传统的基于特征码的检测方法能够快速检测出流行的Bot,但却无法发现智能变种或新型Bot,基于行为分析的检测方法弥补了此缺陷[6]。Stinson等人[7]认为从网络中接收的数据是“被污染的数据”,若一个程序把这些数据作为系统调用的参数,则其具有被外部/远程控制的行为,据此提出通过监控Win32库函数的执行来检测Bot行为,并设计实现了BotSwat检测系统,由于该方法在库调用级监控被污染数据的传播,因此若Bot对网络数据进行带外加密就可逃避该系统的检测。Liu等人[8]指出一个典型的Bot在发作时表现出3种不变的特征:自启动;建立命令与控制信道;执行本地或远程的攻击;基于此设计实现了利用虚拟机技术检测这3种特征的系统-BotTracer,实验结果表明系统能够成功检测出所给的几种Bot,但前提是虚拟机不能被Bot检测到。Wurzinger等人[9]研究发现,Bot在收到攻击者的命令后会以一种特定的方式作出响应,提出使用基于特征码和基于异常的方法分别从Bot的命令接收和响应行为两个方面来构建检测模型。该系统具有较低的误报率,但存在信道加密及行为模式改变影响检测效果的问题。Al-hammadi等人[10]提出了一个通过关联分析主机中进程的多种行为来实现检测Bot的算法,算法的输入为目标不可达数、失败连接数等特定行为特征以及特定API函数调用。实验结果表明,该方法能够检测到Bot主机,也可根据进程对特定API函数的调用频率检测出Bot程序,但文中并没有给出合适的判断阈值,而且只能检测P2P Bot。

为了及早发现主机中感染的Bot,并实现检测过程的轻量化且不受加密技术的影响,本文在对Bot的内在特征进行分析的基础上,提出一种综合Bot自动运行特点和DNS查询行为(正向DNS查询和反向DNS查询)特征的检测方法。

2 基于DNS查询的Bot检测框架

通过对近年来流行僵尸网络的研究,本文关注Bot的两种本质特征:(1)Bot为自动运行的程序,不需要人类行为的驱使。(2)无论是采用何种协议结构,Bot通过域名系统查询相应的C&C僵尸网络服务器地址并连接通信,是Botnet的核心[11],即Bot高度依赖于DNS以获得灵活的命令和控制,这是最基本的行为。因此,本文基于Bot的自运行行为与DNS查询行为提出一个两阶段检测框架,如图1所示。

图1 Bot检测框架

(1)自动连接检测。分析进程活动与用户操作之间的关联,并记录与DNS查询相关的进程,在此基础上进行人-机-网(用户-进程-网络)交互关系分析,过滤掉大部分良性进程,将焦点放在一些与DNS服务器自动联系的可疑进程上。

(2)DNS反应行为分析检测阶段。基于Bot和其他进程对DNS查询应答的反应行为的差异构建Bot-DNS反应检测模型,监控第一阶段锁定的可疑进程的DNS反应行为,使用Bot-DNS反应检测模型计算被检进程的可疑度,进而判断出是否为僵尸程序。

3 自动连接检测

由于主机中大部分进程是良性的,故直接对所有进程进行详细地实时监控与分析会增加检测的耗费。自动连接检测的作用是对主机中活动的进程进行粗粒度分析,初步过滤掉大部分良性进程。

无论任何类型的僵尸网络都依赖于DNS查询来获得控制服务器的IP地址,因此涉及DNS查询的网络连接是僵尸程序与外部网络连接的重要组成部分,故可以分析此类网络连接是否由用户发起来判断相关进程的“名誉”。如果DNS查询的网络连接由真实的用户发起,则系统必然接收到用户通过输入设备传递给前台进程的指令信息,由于键盘和鼠标是用户与计算机交互的主要物理输入设备,因而本文将两者引发的事件与DNS查询连接结合来判断进程是否具有自动连接行为。

通过对多种Bot行为的观察,得到僵尸主机中DNS查询及与其相关的键盘/鼠标事件的发生情况如图2所示。时间区域A、C中的DNS查询由用户发起,区域B中是Bot产生的DNS查询。因此,若与某进程相关的DNS查询发生的时刻处于键盘/鼠标事件发生时刻附近的某一时间域内,则可认为该DNS查询由用户交互产生,也即进程不具有自动连接行为。

图2 键鼠事件与DNS查询发生情况示意图

检测的具体实现如下:一方面,挂钩与键盘/鼠标事件相关的系统消息,监视系统中的键盘/鼠标事件;另一方面,挂钩与DNS查询连接相关的系统调用,记录所有产生DNS查询的进程,查询发生的时间、进程运行状态。在此基础上,得到进行自动连接的3个指标:

(1)时间差T=TKM-TDNS,其中TDNS为进程发起一个DNS查询的时刻,TKM为TDNS时刻之前最近一次键盘/鼠标事件的时间。

(2)键盘/鼠标事件的来源S,当事件来自于真实的物理设备时S=true,反之S=false。

(3)该进程是否在前台运行F,F=yes表示进程在前台运行,F=no表示在后台运行。

如果T≤Tt(Tt为判断阈值),且S=true,F=yes,则该进程与用户产生了交互;否则,为具有自动连接行为的可疑进程。

4 DNS反应行为分析

定义1进程的DNS反应行为:指的是进程进行DNS查询活动以及对查询结果的反应事件构成的事件序列,其中反应事件指的是使用DNS查询中涉及的IP地址尝试建立连接的行为及结果。

Bot在整个生命周期中,会多次尝试加入僵尸网络,该过程主要分为3个步骤:(1)获取其他Bot节点或中心服务器的IP地址:一些IP地址或域名信息被硬编码在Bot中,或由Bot通过指定方式动态生成,Bot通过使用这些内部产生的信息来获取网络中活跃的Bot主机节点或中心服务器的IP地址;(2)尝试与已获取的IP地址进行连接;(3)加入僵尸网络并获取指令。在该过程中,DNS反应行为发生在前两步,且DNS查询起到了关键作用。

DNS查询的作用主要表现为3点:

(1)对内部获取的域名的正向DNS查询能够得到一个由许多可能活跃的IP地址构成的集合。

(2)一次成功的反向DNS查询能使Bot确信所查询的IP地址是活跃的,且可得到一些新的域名用于以后的DNS查询,从而得到更多活跃的IP地址。

(3)如果Bot对某个内部得到域名的正向DNS查询成功,它可能会对返回的IP地址进行反向DNS查询,若反向DNS查询成功,则可更加确定IP地址的活跃性。

根据对进程DNS反应行为的定义,如果用A、B、C(三者取值均为0或1)分别代表DNS查询的类型、结果和连接建立的情况,用ABC序列组合表示DNS反应行为事件序列,则有8种不同的组合。由于正向DNS查询失败时无法获取到IP地址,也就不涉及连接的问题,因此不存在序列010和011,其余6种序列的具体描述如表1所示。

表1 DNS反应行为序列与描述

对这6种情况进行初步分析发现,S1和S3属于正常情况的行为序列,其他4种情况为可疑的行为。在虚拟的实验环境中分别运行多个Bot样本和良性程序各1小时,统计这4种情况下的DNS反应行为如表2所示。

表2 Bot样本和良性程序的DNS反应行为统计

由表2的结果可以得到如下结论:

(1)良性程序只表现出了S2序列的DNS反应行为,同时Bot程序也表现出这种反应行为。分析表现出此种行为的良性程序,发现造成连接失败的原因是由于其所访问的对象已关闭或临时不在线,因此本文认为该序列模式虽然属于异常行为,但不能作为检测Bot的指标。

(2)S4、S5、S6序列的DNS反应行为在Bot样本中有不同程度的体现,特别是S6,每一种Bot样本都至少包含一次这样的DNS反应行为,尤以Waledac为最多。经过分析可知,Waledac是一种P2P Bot,在其内部硬编码了大约30个节点的IP地址,而且该Bot还使用了fast-flux技术[12]以逃避被追踪,因此它在各种行为序列下拥有的实例个数都比较多。

基于上述观察,本文以进程是否表现出S4、S5、S6序列的DNS反应行为来识别Bot程序:分别对每一种行为序列赋予权重,根据被检测进程的各项指标情况计算加权分值,由分值的大小判断进程是否为Bot。

定义2设某段时间内进程P在3种序列下的DNS反应行为的实例数分别为r1、r2、r3(当ri>0(i=1,2,3)时,S(ri)=1;否则S(ri)=0),三种行为序列的权值分别为a、b、c(0≤a、b、c≤1,a+b+c=1),g为该进程的疑似函数,则进程P的可疑度为g(P)=aS(r1)+bS(r2)+cS(r3)。

根据定义2,假设Tg为可疑度的阈值,于是有:若g(P)>Tg,则进程P为Bot;否则,P为良性程序。

5 实验与分析

5.1 实验环境与数据收集

(1)Bot程序数据收集。使用VMWare构建虚拟环境来运行Bot实例,收集相关信息测试本文方法的检测率。该环境由3个虚拟机组成,分别代表被感染主机、控制端和一个监控机,均安装Windows XP SP3操作系统及一些基本的应用程序,如Firefox浏览器等。用于测试的Bot共有8种,它们的名称、命令和控制协议如表3所示(“其他”代表Bot使用了自己的协议)。

表3 Bot实例信息

(2)良性程序数据收集。分别在6台真实主机上(确保主机中无Bot)收集各检测阶段所需的进程活动和DNS行为信息,时间为3天。它们由不同工作、不同层次的用户使用,数据主要来自于工作日的工作时段。最终收集到526个进程的信息,形成数据集D。使用该数据集来测试本文方法的假阳性率。

5.2 检测结果与分析

(1)自动连接检测

为了测试第一阶段的检测效果,将Bot实例安装在虚拟机中,不进行任何干预。一段时间后,检测到所有的Bot均向远程服务器发送连接请求,这些查询请求都被捕获到,经过分析判断(根据前期实验与分析,本文中Tt的取值为20 ms),发现所有Bot都具有自动连接行为。结果表明,该阶段的检测能够发现所有Bot的自动DNS查询行为,既可以在第一时间锁定可疑进程,缩小系统检测范围,又没有漏报的发生,提高了系统的检测效率和效果。

(2)DNS反应行为分析检测

为测试第二阶段的检测效果,在虚拟机上分别运行各Bot样本,时间为1 h,采集网络流量中各Bot实例的DNS反应行为信息进行处理,得到各Bot实例的可疑度如表4所示(可疑度的计算中,参数a、b、c分别取0.2、0.3、0.5)。

表4 Bot实例可疑度计算结果

实验结果表明,所有的Bot均进行了S6序列的DNS反应行为,而且大部分Bot除了具有此种反应行为之外,还不同程度地表现出S4、S5序列的DNS反应行为。本文中可疑阈值Tg取0.45,所有的Bot实例均被检测出。

(3)假阳性率测试分析

为评估检测方法的假阳性率,对采集到的集合D中的526个进程信息进行测试。经过第一阶段的过滤,锁定了24个具有自动连接行为的进程,然而第二阶段的检测显示这些进程不是Bot,出现这种情况的原因是一些良性程序开启了自动更新等功能,它们会在用户不干预的情况下主动地与外界网络联系。实验结果说明,该方法具有较低的假阳性率,且达到了检测过程轻量化的效果。

6 结束语

本文提出了一种基于自运行特性和DNS查询特征的Bot检测方法,能够轻量、有效地检测出主机中的活跃Bot,具有较低的假阳性率,且可以突破僵尸网络所采用不同协议结构的限制。为尽早阻止Bot对主机的破坏及传播,本文重点关注了其生命周期中加入僵尸网络的阶段,而没有考虑Bot在主机中的各种恶意行为和网络流量特征。因此,下一步研究的方向是对Bot的全生命周期进行监测,提出适用范围更广且检测准确度更高的检测方案。

[1]王天佐,王怀发,刘波,等.僵尸网络中的关键问题[J].计算机学报,2012,35(6):1192-1208.

[2]方滨兴,崔翔,王威.僵尸网络综述[J].计算机研究与发展,2011,48(8):1315-1331.

[3]诸葛建伟,韩心慧,周勇林,等.僵尸网络研究[J].软件学报,2008,19(3):702-715.

[4]Binsalleeh H,Ormerod T,Boukhtouta A,et al.On the analysis of the Zeus Botnet crimeware toolkit[C]//Proc of the 8th Annual International Conference on Privacy,Security and Trust,2010:31-38.

[5]Sinha P,Boukhtouta A,Belarde V H,et al.Insights from the analysis of the Mariposa Botnet[C]//Proc of the 5th International Conference on Risks and Security of Internet Systems,2010:1-9.

[6]Kolbitsch C,Comparetti P M,Kruegel C,et al.Effective and efficientmalware detection atthe end host[C]//Proc of 18th USENIX Security Symposium,2009:1-16.

[7]Stison E,Mitchell J C.Characterizing Bots remote control behavior[C]//Proc of the 4th Int Conf on Detection of Intrusions and Malware,and Vulnerability Assessment,2007:89-108.

[8]Liu Lei,Chen Songqing,Yan Guanhua,et al.BotTracer:execution-based Bot-like malware detection[C]//Proc of the 11th Information Security Conference,Taipei,China,2008:97-113.

[9]Wruzinger P,Bilge L,Holz T,et al.Automatically generating models for Botnet detection[C]//Proc of the 14th European Symposium on Research in Computer Security,2009:232-249.

[10]Al-Hammadi Y,Aichelin U.Behavioural correlation for detecting P2P Bots[C]//Proc of the 2nd International Conference on Future Networks(ICFN 2010),Sanya,Hainan,China,2010:323-327.

[11]袁春阳,李青山,王永建.基于行为与域名查询关联的僵尸网络聚类联动监测[J].计算机应用研究,2012,29(3):1084-1087.

[12]江健,诸葛建伟,段海新,等.僵尸网络机理与防御技术[J].软件学报,2012,23(1):82-96.

猜你喜欢

僵尸IP地址进程
笔记本电脑“僵尸”
铁路远动系统几种组网方式IP地址的申请和设置
债券市场对外开放的进程与展望
你愿意当吸血鬼还是僵尸?
IP地址切换器(IPCFG)
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
App已死?80%的僵尸应用带来的困惑
“僵尸肉”横行谁之过
社会进程中的新闻学探寻