第8卷第2期 智能系统学报 Vol.8 No.2 2013年4月 CAAI Transactions on Intelligent Systems Apr.2013 D0I:10.3969/i.issn.16734785.201210055 网络出版t地址:htp://www.cnki.net/kcma/detail/23.1538.TP.20130409.1436.002.html 基于神经网络的僵尸网络检测 蒋鸿玲,邵秀丽 (南开大学信息技术科学学院,天津300071) 摘要:目前主流的僵尸网络检测方法主要利用网络流量分析技术,这往往需要数据包的内部信息,或者依赖于外 部系统提供的信息或僵尸主机的恶意行为,并且大多数方法不能自动存储僵尸网络的流量特征,不具有联想记忆功 能.为此提出了一种基于BP神经网络的僵尸网络检测方法,通过大量的僵尸网络和正常流量样本训练BP神经网络 分类器,使其学会辨认僵尸网络的流量,自动记忆僵尸流量特征,从而有效检测出被感染的主机.该神经网络分类器 以主机对为分析对象,提取2个主机间通信的流量特征,将主机对的特征向量作为输入,有效地区分出正常主机和 僵尸主机.实验表明,该方法的检测率达到99%,误报率在1%以下,具有良好的性能, 关键词:僵尸网络;BP神经网络:特征向量:网络流量:检测算法 中图分类号:TP393文献标志码:A文章编号:16734785(2013)02011306 Botnet detection algorithm based on neural network JIANG Hongling,SHAO Xiuli (College of Information Technical Science,Nankai University,Tianjin 300071,China) Abstract:The most current botnet detection algorithm are typically based on network traffic analyzing technologies that usually need packet payload.The botnet detection algorithm also relies on information obtained by external sys- tems or malicious behaviors of bots that do not automatically store the features of botnet traffic and do not have the ability of associative memory.As a result,this paper proposes a botnet detection algorithm based on BP neural net- work which trains the BP neural network classifier through a lot of botnet and normal traffic samples and allows it to learn how to identify botnet traffic and automatically remember the features of botnet traffic and therefore,detect the infected hosts effectively.The neural network classifier takes the host-pairs as analysis objects,extracts the traffic features of communications between two hosts and takes the feature vectors of host-pairs as input,thus,effectively distinguishing the normal hosts and bots.The experimental results show that the detection rate of our algorithm can achieve to 99%and the false positive rate is below 1%and the algorithm has a good performance. Keywords:botnet;BP neural network;feature vector;network traffic;detection algorithm 近年来,僵尸网络的快速发展使因特网面临严 目前主流的僵尸网络检测方法是通过分析网络 重的安全威胁.僵尸网络是攻击者(botmaster)通过流量来检测.文献[3]通过呢称检测IRC僵尸网络; 传播僵尸程序控制大量主机,通过命令与控制信道 文献[4]通过PageRank算法计算主机级别,再根据 (command and control,.C&C)与僵尸主机通信并发 已知的僵尸网络信息进行检测;文献[5]通过网络 布命令[山.攻击者利用僵尸网络可发起多种攻击, 通信图识别P2P网络,再利用外部系统提供的信息 如分布式拒绝服务攻击、垃圾邮件、信息窃取等2]. 区分合法P2P网络与2P僵尸网络;文献[6-7]通 过识别僵尸主机的恶意行为检测僵尸网络.这些僵 收稿日期:2012-10-26.网络出版日期:20130409 尸网络检测方法或者需要数据包的内部信息,无法 基金项目:国家科技支撑计划基金资助项目(2012BAF12B00);天津 检测加密的僵尸网络;或者依赖外部系统提供信息, 市重点基金资助项目(11 jezdje28100). 通信作者:邵秀丽.E-mail:shaoxl@nankai.edu.cm. 不能独立进行检测;或者依赖僵尸主机的恶意行为
·114 智能系统学报 第8卷 在僵尸主机不发起攻击时,不能有效检测出僵尸网 他僵尸网络流量特征,本文提取主机对的特征包括: 络.大多数现有的检测方法无法自动学习僵尸的网 1)通信次数,即TCP流个数; 络流量特征,检测系统无法自动进行检测学习,没有 2)前后2次通信的时间间隔的平均值; 联想记忆功能,因此本文提出基于神经网络的僵尸 3)前后2次通信的时间间隔变化的平均值; 网络检测方法,用大量的样本训练神经网络分类器, 4)TCP流的字节数平均值; 然后用训练好的神经网络分类器模型检测僵尸网 5)TCP流的数据包个数平均值; 络.本文的检测方法的优点是:1)神经网络的输入 6)TCP流的持续时间平均值, 数据只需要数据包头部信息,不需要数据包的内部 提取出这些特征后,每个主机对即可用1个六 信息,可以检测加密的僵尸网络;2)基于神经网络 维的特征向量表示,特征向量的每一维表示主机对 的检测系统不依赖外部系统提供僵尸网络的信息, 的一个特征. 能独立完成检测;3)神经网络分类器关注僵尸主机 2基于神经网络的僵尸网络检测模型 的控制命令流量,不依赖僵尸网络的恶意行为,在僵 尸主机处于“发呆”状态下仍能检测出僵尸网络;4) 首先用大量样本训练神经网络分类器,然后用 训练好的神经网络分类器能自动记忆僵尸网络的流 训练好的神经网络分类器检测僵尸网络.图1为基 量特征,当新的流量达到,能快速得出检测结果 于神经网络的僵尸网络检测模型. 僵尸网络流量的特征分析 Internet 要通过网络流量检测僵尸网络,首先要明确僵 尸网络流量的特征.僵尸主机既有恶意攻击行为也 训练数据集 网络流量捕获 测试数据到 有C&C通信[61.僵尸主机不会持续不断地进行恶意 攻击,在Botmaster给僵尸主机发布命令前,僵尸主 流的形成 分类器设计 流的形成 机保持“发呆”状态,不发起任何攻击「8).此外,僵尸 主机对 神经网络 主机的攻击往往很隐蔽,很难通过网络流量检测出 特征提取 分类器训练 主机对特征提取 来9],相比之下,C&C通信存在于僵尸网络的整个 特征值预处理 神经网辂 特征值预处理 分类器 生命周期中,因此本文通过识别僵尸网络的C&C流 量进行检测 僵尸网铬检测 为了有效识别出僵尸网络的C&C通信,首先确 定最能区分出僵尸网络的C&C通信流量和正常流 检测结果 量的特征.被僵尸网络感染的用户并不知道自己已 图1基于神经网络的僵尸网络检测模型 被感染,仍然进行正常的网络活动,同时僵尸程序偷 Fig.1 Botnet detection model based on neural network 偷在后台执行,因此僵尸主机既有正常的流量也有 基于神经网络的僵尸检测过程如下: 僵尸网络流量.如果以被测网络的主机作为分析对 1)捕获网络流量.主要获取被测网络内部主机 象,僵尸网络流量的特征会被大量正常流量覆盖,因 和外部主机通信的数据包.2)形成流.2个主机间的 此本文将被测网络内部主机和外部主机作为一个主 次通信会形成一个流,因此将原始数据包转换为 机对,以主机对作为分析对象,这样可以有效分离出 流.3)提取主机对的特征.主机对是指2个互相通 与内部主机通信的合法主机和僵尸主机, 信的主机,即被测网络内部主机及与其通信的外部 为提取僵尸网络主机对的特征,首先分析僵尸网 主机.本文的神经网络检测模型以主机对作为分析 络的主机对和正常主机对的区别.僵尸主机为了获取 对象,是为了分离出与内部被感染主机通信的合法 命令或者更新,需要频繁/周期性地连接C&C服务器 主机和僵尸主机.4)特征值预处理.对提取的主机 或者其他僵尸主机01川.与正常流量相比,僵尸主机 对特征进行预处理,通过归一化操作使各个特征值 间的C&C通信一般字节数较小,并且持续时间较短 的取值在同一范围内.5)分类器设计.根据特征向 而主机对的一次通信会形成一个流,因此主机对的通 量设计神经网络分类器各层神经元的个数.6)神经 信特征可通过分析主机对间流的特征提取出来.由于 网络分类器训练.利用具有类标签的训练数据集对 僵尸网络通常采用TCP协议通信,因此本文只分析 神经网络进行训练,得到训练好的神经网络分类器, TCP流,并提取主机对的TCP流的特征,而不考虑其 7)僵尸网络检测.利用训练好的神经网络分类器检
第2期 蒋鸿玲,等:基于神经网络的僵尸网络检测 ·115 测测试数据集中的僵尸网络,得到检测结果 中按照时间排序,每组从第1个数据包开始扫描,找 其中,1)~4)是数据准备及预处理;5)~6)是 出TCP3次握手包作为TCP流的开始,TCP4次握 神经网络分类器的形成;7)是利用训练好的分类器 手包或者RST包作为TCP流的结束,从开始到结束 检测僵尸网络. 的所有数据包组成一个TCP流.记录每个TCP流, 2.1数据准备及预处理 包括如下属性:本地P地址、本地端口号、远程P 为了得到检测性能好的神经网络分类器,首先 地址、远程端口号、流的开始时间、流的结束时间、流 要准备训练数据并进行预处理.训练数据要能体现 中数据包个数和流的字节数, 出僵尸网络流量的特征,区分出正常流量和僵尸网 2.1.3特征提取及预处理 络流量.训练数据准备及预处理包括3个过程,首先 根据第1节所述,以主机对为分析对象,提取主 是网络流量捕获,然后是流的形成,最后是主机对特 机对通信的流的特征,每个主机对有6个特征,这 征的提取和预处理。 样,即可用下维向量表示一个主机对. 2.1.1网络流量捕获 为了提高僵尸网络的检测率,在训练神经网络 网络流量捕获主要抓取被测网络内部主机与外 分类器前,需要对特征值进行预处理.2.1.2中提取 部主机通信的数据包.图2为网络流量捕获图.本文 出的主机对的各个特征值的取值范围差别很大,如 通过交换机端口镜像技术采集真实网络环境中的流 果直接用提取出的特征向量作为神经网络输入,则 量.流量采集器运行tcpdump工具捕获被测网络内 训练的效果会受取值较大的特征值所影响,因此要 主机访问Internet的流量,由于僵尸网络通常采用 对特征值归一化处理.归一化操作将所有特征值映 TCP协议通信,因此只采集TCP协议的数据包,每 射到相同的范围内,能有效提高神经网络分类器的 个小时新建一个pcap文件存储数据包.数据解析器 分类性能.本文采用z-score方法进行规范化: 将采集的原始数据解析为文本文件,导入数据库中, x'=书一x (1) 真实网络环境中的流量都标记为非僵尸网络流量, 0 僵尸网络流量通过模拟产生,并导入到数据库中,同 式中:x是某一特征的值,x和σ,是该特征的平均值 时标记为僵尸网络流量. 和标准差. 图3为特征值预处理的结果,前2列是主机对的 P地址,即内部主机和远程主机的P地址,第3~8 注人模拟potne流量 Internet 列为主机对的特征值,最后一列是类标签,0表示非 僵尸主机对,1表示僵尸主机对.从图3可以看出,预 孩心交换村机 数据库 处理后所有特征值的取值都在同一个范围内 流量采华器 校园网 数据解析器 .n 11. 图2网络流量捕获结构 0213001619 3.g9.T17 Fig.2 Architecture of traffic capture 2.1.2流的形成 主机间的一次TCP通信会形成一个TCP流,因 此首先将捕获的原始TCP数据包转化为TCP流.具 (a)预处理前 有相同五元组(本地P地址、本地端口号、远程P 地址、远程端口号、协议)的数据包集合构成一个 11.1197.-000 0 211..010.-0016 0满 流,同时满足前后相邻的2个数据包的时间间隔小 于阈值Tm(实验中T。=60s).其中本地P地址和 本地端口号是被测网络内主机的P地址和端口号, 远程P地址和远程端口号是被测网络外的主机的 (b》预处理后 P地址和端口号。 图3数据预处理结果 一个TCP流通常以3次握手(SYN,SYN-ACK, Fig.3 The results of data preprocessing ACK)开始,4次握手(FIN,ACK,FN,ACK)或者 2.2神经网络分类器结构的设计 RST包结束.因此首先按照五元组对数据包分组,组 首先设计神经网络层次结构,主要是隐层的层
116 智能系统学报 第8卷 数,然后设计各层神经元个数,包括输入层、隐层、输 f(x)=1/(1+e) (3) 出层的神经元个数,最后是神经网络的激活函数. 2.3神经网络分类器的训练流程 本文的神经网络分类器采用单隐层结构,因为 神经网络分类器设计完成后,即可利用训练数 如果隐层较多,神经网络的训练会比较慢,尤其数据 据对神经网络进行训练.BP神经网络的训练过程是 量比较大时,单隐层有较快的训练速度,且不会对网 不断迭代的过程,其训练算法流程图如图5所示. 络精度影响很大.考虑到网络流量一般较大,本文的 神经网络模型采用单隐层。 开始 本文的单隐层BP神经网络模型结构如图4所 示.对应主机对的特征向量是六维的,因此输入层设 初始化参数 置了六个神经元,分别是:1)TCP流个数flowCount; 州主机对的特征 给输入节点赋值 2)前后2个TCP流的时间间隔的平均值avgInter- val;3)时间间隔变化的平均值avgItvChange;4)TCP 根据是否是僵尸网络计算 神经网路的期望输出 流的字节数平均值avgByte:5)TCP流的数据包个数 平均值avgPktCount;:6)TCP流的持续时间平均值 计算各层输 avgDuration. 计算误差E (x) fx) 反向计算误差信号 TCP流个数+● 时间间隔平均值,。 调整权值 时间问隔变化的平均值+● 非隔尸网络 字节数平均值 腐尸网络 训练次数加1 数据包个数平均值● 持续时间平均值·。 误差满足 要求或达到最大 N E=0 输入层隐层输出层 训练次数」 图4单隐层BP神经网络模型结构 Y Fig.4 Model structure of BP neural network with a 结束 hidden layer 图5BP神经网络分类器训练算法流程 隐层神经元个数根据式(2)可取3~12的值,实 Fig.5 Flow chart of BP neural network training algo- 验中对不同隐层神经元个数进行测试,选取最优值. rithm 式(2)为文献[12]指出的最佳隐层神经元个数,其 具体步骤如下: 中,k为隐层神经元个数,m为输入层神经元个数,n 1)初始化神经网络所需的各个参数.参数包括 为输出层神经元个数,α为1~10的常数: 输入层到隐层的权值和偏置、隐层到输出层的权值 k m +n a. (2) 和偏置、权值和偏置的初始值是[-0.05,0.05]的 输出层的神经元个数设置为2.第1个输出神 随机值.另外,还需要设置神经网络的期望误差和最 经元用于表示非僵尸主机对,第2个输出神经元用 大训练次数.本文设置的期望误差是0.001,最大循 于表示僵尸主机对.如果是僵尸网络主机对,则第1 环次数是1000,即在1000次循环内,误差小于等 个神经元的输出为0,第2个神经元输出为1;如果 于0.001,则BP神经网络分类器训练结束,否则循 环1000次后结束. 不是僵尸网络主机对,则第1个神经元输出为1,第 2)从训练样本中选1组主机对,给神经网络的 2个神经元输出为0.实际训练过程中,输出神经元 输人节点赋值为主机对的6个特征. 的取值是[0,1].训练时,若第1个神经元的值大于 3)计算神经网络的期望输出,如果是僵尸网络 第2个,则将第1个神经元取值置为1,将第2个神 主机对,则输出层的第1个节点赋值为0,第2个节 经元取值置为0,并标记为非僵尸网络主机对.若第 点赋值为1,如果不是僵尸网络主机对,则输出层的 1个神经元的值小于第2个,则将第1个神经元取 第1个节点赋值为1,第2个节点赋值为0. 值置为0,将第2个神经元取值置为1,并标记为僵 4)计算出输人层到隐层再到输出层各节点的 尸网络主机对. 输出. BP神经网络的激活函数采用S型函数,如式(3):
第2期 蒋鸿玲,等:基于神经网络的僵尸网络检测 ·117· 5)计算误差E. 望误差越大,训练循环次数越小.因此期望误差大只 6)反向计算误差信号 需较少次数的循环误差即可达到期望值,可提高神 7)调整神经网络的权值和偏置, 经网络训练效率.但是期望误差大,神经网络分类器 8)重复2)~7),直到达到期望误差或者达到最 的精度就下降,因此要取一个合理的值,使神经网络 大训练次数为止. 分类器的精度和训练次数达到平衡,从图7可以看 训练结束后,BP神经网络分类器已形成,即可 出,期望误差为0.002时效果较好. 用训练好的分类器检测僵尸网络, 10 3实验及结果分析 本文实验数据采集了天津某高校校园网内的网 络流量,通过核心交换机端口镜像捕获网络流量,选 择其中一个端口,被测子网内主机约200台,白天的 0 4 n67897010 网络流量为150~200MB/s.实验中采用了2011年 期望误差 4月6日的网络流量,共24h.真实网络环境中的流 图7期望误差不同时的训练循环次数 量作为背景流量,将其解析后导入数据库中,并注入 Fig.7 The training times for different expected error 模拟的僵尸网络流量.随机选取背景流量中若干台 为了验证神经网络分类器检测僵尸网络的性 主机,替换僵尸主机的P地址为这些主机的P地 能,本文用测试数据对神经网络分类器进行测试,测 址,使这些主机既有正常流量也有僵尸网络流量,更 试数据包含类标签,即是否是僵尸网络主机对.本文 符合真实场景.本文模拟的僵尸网络流量特征符合 采用检测率(detection rate,DR)和误报率(false posi-- 现有大部分僵尸网络流量特征,因而本文研究这类 tive rate,FPR)2个指标对神经网络分类器的性能进 僵尸网络,其他类型的僵尸网络不在本文研究范围 行评估.检测率为僵尸主机被正确检测出来的概率: 内.实验用C#编写程序,用SQL Server2000数据库 TP DR =TP +FN (4) 存储解析后的网络流量数据。 为了确定最佳隐层神经元个数,做了如下实验。 式中:TP表示正确检测出的僵尸主机个数,N表示 分别将隐层神经元个数设置为3~12的不同值,观 未被检测出的僵尸主机个数.误报率为合法主机被 察训练误差和训练次数的变化情况.实验中期望误 错误地检测为僵尸主机的概率,如式(5) 差为0.001,隐层神经元个数取不同值时神经网络 FP 训练误差都相同,因此只观察训练次数的变化.图6 FPR =FP +TN (5) 式中:P为被错误地检测为僵尸主机的合法主机个 是不同隐层神经元个数的训练循环次数,从图中可 数,TN为正确检测出的合法主机个数 以看出训练循环次数随着隐层神经元个数增加而增 验证时首先以测试数据作为神经网络的输入, 大,在误差相同情况下,训练次数越少越好,因此隐 判断神经网络的检测结果和真实结果是否相同,然 层神经元个数为3时效果最佳,后续的实验中都将 隐层神经元个数设为3, 后分别统计TP、FN、P和TN的值,最后根据式(4) 和(5)计算检测率和误报率.图8为期望误差不同 7.010 时算法的检测率和误报率.从图8(a)可以看出,期 藏6.5引 望误差为0.001到0.009时,检测率都为100%,当 期望误差为0.01时,检测率下降到99.4%. 4.5 4 56789101112 隐层神经元个数 图6不同隐层神经元个数的训练循环次数 9.96 Fig.6 The training times for different number of hid. den layer neuron 9.94 345678910 10- 图7是期望误差取不同值时的训练循环次数, 期待误差 实验数据取3次实验的平均值.从图中可以看出,期 (a)DR
118 智能系统学报 第8卷 ,×10 nets,Cambridge,USA,2007:1-12. [4]FRANCOIS J,WANG S,STATE R,et al.BotTrack: tracking botnets using NetFlow and PageRank[M]//Lec- ture Notes in Computer Science.Valencia,Spain,2011: 1-14. [5]NAGARAJA S,MITTAL P,HONG C,et al.BotGrep: 好 finding P2P bots with structured graph analysis[C]//Pro- ceedings of the 19th USENIX Conference on Security. Washington,DC,USA,2010:1-16. [6]GU G,PERDISCI R,ZHANG J,et al.BotMiner:cluste- 234367896101 ring analysis of network traffic for protocol-and structure-in- 期待误差 dependent botnet detection[C]//Proceedings of the 17th (b)FPR Conference on Security Symposium.San Jose,USA,2008: 139-154. 图8期望误差不同时的检测率和误报率 Fig.8 DR and FPR for different expected errors [7]GU G,PORRAS P,YEGNESWARAN V,et al.BotHunt- er:detecting malware infection through IDSdriven dialog 从图8(b)可以看出,随着期望误差的增大,误 correlation[C]//Proceedings of the 16th USENIX Security 报率呈上升趋势,期望误差为0.01时误报率稍微降 Symposium.Boston,USA,2007:167-182. 低但检测率也降低。 [8]PRASAD K,REDDY A,KARTHIK M.Flooding attacks to 综上所述,期望误差为0.001时检测率和误报 internet threat monitors ITM )modeling and counter measures using botnet and honeypots[J].International 率都达到最佳水平.从实验中也可以看出本文算法 Journal of Computer Science and Information Technology, 的检测率达到99%,误报率在1%以下,具有较好的 2011,3(6):159-172. 检测性能 [9]ZHANG J,PERDISCI R,LEE W,et al.Detecting stealthy P2P Botnets using statistical traffic fingerprints[C]//Pro 4结束语 ceedings of IEEE/IFIP 41st Intemational Conference on De- pendable Systems and Networks.Hong Kong,China,2011: 本文提出了一种基于BP神经网络的僵尸网络 121132 检测方法.该方法以主机对作为分析对象,提取主机 [10]方滨兴,崔翔,王威.僵尸网络综述[J].计算机研究与 对之间通信的流量特征,然后将预处理后的特征作 发展,2011,48(8):1315-1331. 为神经网络的输入,训练BP神经网络分类器,用训 FANG binxing,CUI Xiang,WANG Wei.Survey of bot- nets [J].Journal of Computer Research and Development, 练好的分类器进行僵尸网络检测.通过实验确定了 2011,48(8):1315-1331. 最佳的BP神经网络隐层神经元个数和期望误差, [11]WANG P,WU L,ASLAM B,et al.A systematic study on 实验表明,该方法有较高的检测率和较低的误报率, peer-to-peer botnets[C]//Proceedings on Computer Commu- 具有良好的性能, nications and Networks.San Francisco,USA,2009:1-8. [12]飞思科技产品研发中心.神经网络理论与MATLAB7实 参考文献: 现[M].北京:电子工业出版社,2005:1108. 作者简介: [1]金鑫,李润恒,甘亮,等.基于通信特征曲线动态时间弯 蒋鸿玲,女,1986年生,博士研究 曲距离的IRC僵尸网同源判别方法[J].计算机研究 生,主要研究方向为网络安全与云计算 与发展,2012,49(3):481490. 等,发表学术论文7篇. JIN Xin,LI Runheng,GAN Liang,et al.IRC botnets'ho- mology identifying method based on dynamic time warping distance of communication feature curves[J].Journal of Computer Research and Development,2012,49(3):481- 490. [2]江健,诸葛建伟,段海新,等.僵尸网络机理与防御技术 邵秀丽,女,1963年生,教授,博士 [J].软件学报,2012,23(1):8296. 生导师,主要研究方向为云计算与软件 JIANG Jian,ZHUGE Jianwei,DUAN Haixin,et al.Re- 工程等,发表学术论文80余篇. search on botnet mechanisms and defenses[].Joumal of Software,2012,23(1):82-96.. [3]GOEBEL J,HOLZ T.Rishi:identify bot contaminated hosts by ire nickname evaluation[C]//Proceedings of USE NIX First Workshop on Hot Topics in Understanding Bot-