CN109391602B - 一种僵尸主机检测方法 - Google Patents

一种僵尸主机检测方法 Download PDF

Info

Publication number
CN109391602B
CN109391602B CN201710684018.1A CN201710684018A CN109391602B CN 109391602 B CN109391602 B CN 109391602B CN 201710684018 A CN201710684018 A CN 201710684018A CN 109391602 B CN109391602 B CN 109391602B
Authority
CN
China
Prior art keywords
domain name
botnet
layer
data
legal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710684018.1A
Other languages
English (en)
Other versions
CN109391602A (zh
Inventor
曲武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jinjingyunhua Technology Co ltd
Original Assignee
Beijing Jinjingyunhua Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jinjingyunhua Technology Co ltd filed Critical Beijing Jinjingyunhua Technology Co ltd
Priority to CN201710684018.1A priority Critical patent/CN109391602B/zh
Publication of CN109391602A publication Critical patent/CN109391602A/zh
Application granted granted Critical
Publication of CN109391602B publication Critical patent/CN109391602B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/144Detection or countermeasures against botnets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提出一种僵尸主机检测方法,包括:捕获域名系统DNS流量,从所述DNS流量中提取被动DNS数据,并获取主机从DNS服务器查询域名的DNS协议元数据;对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据;对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的所述目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果;在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器。本发明对于僵尸网络C&C通信的DGA域名具有优异的检测能力,资源使用率低、快速、准确率高、误报率低、跨平台检测等特点。

Description

一种僵尸主机检测方法
技术领域
本发明涉及计算机网络安全技术领域,具体涉及一种僵尸主机检测方法。
背景技术
当前,僵尸网络已经成为互联网最大的安全威胁之一,来自它们的攻击时常发生,并且在全世界互联网内蔓延,攻击种类多样,例如分布式拒绝服务攻击、端口扫描、发送垃圾邮件、点击欺诈、在线身份窃取、植入广告、网络钓鱼、加密勒索、非法利用用户主机资源挖矿等等。由于巨大的经济利益,对于僵尸网络技术的优化和变种发展更为迅速,这也导致僵尸网络的检测和防卫更为困难。无论是现在还是将来,僵尸网络的研究都是网络安全领域重要的研究方向。
在僵尸网络的拓扑中,僵尸网络通过僵尸程序控制大量主机,并通过一个或若干个命令控制服务器(Command and Control Servers,C&C Server)组成网络。同传统恶意代码形态相比,僵尸网络的攻击实现依赖攻击者和受害主机之间的信息交互,即攻击者需要告知僵尸主机命令,僵尸主机才可发起相应的攻击,命令的下发通过C&C Server实现,这是僵尸网络构建的核心,也是攻防双方博弈的关键点。
在早期中心结构的僵尸网络中,僵尸主机通常采用轮询的方法访问硬编码的C&CServer域名或IP(Internet Protocol,网络互连协议)地址来访问命令控制服务器,获取攻击者命令,由于硬编码的域名或IP固定且数量有限,防御人员通过逆向掌握该部分内容后可对该域名进行有效的屏蔽,阻断其命令控制途径,使其失去控制源并逐渐消亡。该种缺陷称之为中心节点失效。
为了解决上述问题,攻击者使用Fast-Flux(快速通量)技术来对抗防御人员的阻断,僵尸主机访问的C&C Server域名不再是静态硬编码,而是根据一定算法动态生成的、变化的域名,命令控制服务器和僵尸主机之间通信的域名动态变化,防御人员难以检测。而且,Fast-Flux和DDNS(Dynamic Domain Name Server,动态域名服务器)行为很相似,但是变化速度更快,想要跟踪并定位僵尸软件背后的操作者将会更加困难。
相关技术已经在Fast-Flux域名检测领域做了大量的工作,主要是基于DGA(Domain generation algorithms,域名生成算法)的域名的特征,例如长度、随机熵、n-gram(汉语语言模型)、分词(拼音和英文)、元音字母比例等,然后利用机器学习算法中的监督学习算法训练分类器。这些工作的主要区别在于描述Fast-Flux域名的行为特征个数和分类算法细节。传统方法的优点在于能够在一定程度上对僵尸网络家族生成的DGA域名进行准确的检测,但准确性过度依赖特征工程,需要复杂的特征选择、主分量分析和大量的测试才能够选取有效的特征。更为深层次的特征,特别是人类难以理解的有效特征无法提取。这导致机器学习训练的分类器良莠不齐,很难达到产品级的应用,误报率和漏报率都难以保证。而且,在检测过程中,传统机器学习技术需要提取域名特征,时间代价较大。同时,基于机器学习技术生成的多分类模型过大,分类良好的模型通常都几百兆,对于低配置的设备难以应用。
鉴于此,现有技术有待改进和提高。
发明内容
本发明提供一种僵尸主机检测方法,实现快速、准确检测僵尸主机。
为了实现上述发明目的,本发明采取的技术方案如下:
一种僵尸主机检测方法,包括:
捕获域名系统DNS流量,从所述DNS流量中提取被动DNS数据,并获取主机从DNS服务器查询域名的DNS协议元数据;
对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据;
对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的所述目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果;
在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器。
优选地,预设检测模型为:
通过迭代深度学习获得的分类模型,用于僵尸受控主机检测和/或命令控制服务器检测和/或僵尸恶意代码家族检测。
优选地,所述方法之前还包括:
获取训练数据,所述训练数据包括僵尸网络家族域名集合和合法域名集合;
建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数;
对于所述僵尸网络家族域名集合和合法域名集合进行编码;
利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型;
建立学习检测模型,并对分类模型进行交叉验证评估,获取预设检测模型。
优选地,获取训练数据包括:
通过对僵尸网络样本库的样本进行家族分类,获取各僵尸网络家族的样本集合;
对各僵尸网络家族的样本进行逆向,获取DGA域名生成算法;
对于无法逆向的僵尸网络恶意代码样本,使用沙箱捕获用于命令控制C&C通讯的DGA域名;
使用分布式爬虫获取DGA域名和僵尸网络家族的标注;
基于生成式对抗网络GAN,利用沙箱获取的DGA域名和爬取的DGA域名训练C&C通信域名生成模型;
通过所述C&C通信域名生成模型生成僵尸网络恶意代码家族域名;
获取合法域名集合。
优选地,建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数包括:
从自然语言处理领域的深度学习模型中,通过预测试选择域名分析的学习网络模型;
设置所述学习网络模型的网络结构参数和训练权重;
构造所述学习网络模型的输入层,设置输入层参数;
构造所述学习网络模型的嵌入层,设置嵌入层参数;
构造所述学习网络模型的卷积层,所述卷基层设置卷积滤波器集合,所述卷积滤波器集合用于获取僵尸网络C&C通信的DGA特征;
构造所述学习网络模型的递归神经元网络层,设置递归神经元网络层参数;
构造所述学习网络模型的丢弃层,设置丢弃层参数;
构造所述学习网络模型的密集全连接层,设置全连接层参数;
构造所述学习网络模型的输出层,设置输出层参数。
优选地,对于所述僵尸网络家族域名集合和合法域名集合进行编码包括:
用随机数初始化所述学习网络模型的递归神经元网络层所有的参数/权重;
在所述学习网络模型的输入层,读取合法域名列表和多个僵尸网络家族列表,获取所述僵尸网络家族和合法域名的域名信息和标注信息;
在所述学习网络模型的嵌入层,对于所述僵尸网络家族域名和合法域名,根据域名集合最大长度l_max,以及域名集合中出现的字符集合Z进行编码。
优选地,利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型包括:
将递归神经元网络层将嵌入层的输出张量作为输入,该所述递归神经元网络层选择使用门限机制,通过防止梯度消失原则使得递归神经元网络层具有学习长程依赖;
对于密集全连接层,使用激励函数作为输出层的多层感知机,所述全连接层用嵌入层和递归神经元网络层的输出的特征进行分类;
对于输出层,输出待检测域名被判定为僵尸网络家族C&C通信和合法域名的概率,通过编码映射方法和排序方法,获取检测结果。
优选地,对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据包括:
对于被动DNS数据使用白名单过滤合法域名及所述合法域名的被动DNS数据;
使用黑名单过滤已知僵尸网络域名及已知僵尸网络域名的被动DNS数据,输出C&C通信事件;
使用域名特征过滤合法域名及所述合法域名的被动DNS数据;
使用域名过滤算法过滤掉合法域名及所述合法域名的被动DNS数据;
提取过滤后剩余的被动DNS数据的域名,以进行僵尸网络检测。
优选地,对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的待检测目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果包括:
分析待检测目标域名被动DNS数据,获取待检测目标域名,对域名进行编码;
利用预设检测模型对编码后的待检测目标域名进行检测,输出该域名属于僵尸网络家族域名或合法域名的概率;
利用最高概率的检测结果对于所述待检测目标域名被动DNS数据进行标注。
优选地,在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器包括:
对于指定的时间窗口,获取标注后的被动DNS数据集;
利用关联算法,检测僵尸网络受控主机;
利用关联算法,检测僵尸网络命令控制服务器;
根据C&C威胁事件,通过与防火墙联动进行阻断。
本发明和现有技术相比,具有如下有益效果:
本发明的技术方案,将僵尸网络家族用于C&C通信的DGA域名进行编码,然后利用深度学习模型对DGA域名进行家族判定。从而,解决了传统机器学习技术特征提取和选择困难、模型过大、检测性能低等问题。同时,本发明对于僵尸网络C&C通信的DGA域名具有优异的检测能力,资源使用率低、快速、准确率高、误报率低、跨平台检测等特点。而且,在确认僵尸受控主机的同时,也能够检测僵尸网络命令控制服务器和僵尸网络家族分类。
附图说明
图1为本发明实施例的僵尸主机检测方法的流程图;
图2为本发明实施例的僵尸主机检测装置的结构示意图;
图3为实施例1的基于Fast-Flux技术的僵尸网络结构示意图;
图4为实施例1的僵尸主机检测的过程流程图;
图5为实施例1的僵尸主机检测方法的GAN模块自动编码框架图;
图6为实施例1的基于GRU的深度学习网络模型图;
图7为实施例1的设置网络结构参数和训练参数的流程图;
图8为实施例1的提取Passive DNS数据的流程图;
图9为实施例1的利用Bot_CA算法检测僵尸网络受控主机和僵尸网络控制服务器的流程图。
具体实施方式
为使本发明的发明目的、技术方案和有益效果更加清楚明了,下面结合附图对本发明的实施例进行说明,需要说明的是,在不冲突的情况下,本申请中的实施例和实施例中的特征可以相互任意组合。
如图1所示,本发明实施例提供一种僵尸主机检测方法,包括:
S1、捕获域名系统DNS流量,从所述DNS流量中提取被动DNS数据,并获取主机从DNS服务器查询域名的DNS协议元数据;
S2、对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据;
S3、对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的所述目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果;
S4、在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器。
本发明实施例中用户使用的主机,可以为受控主机和非受控主机(主机一切正常,并没有感染病毒),命令控制服务器是黑客或僵尸网络控制者使用的主机。其中,目标域名是待检测数据中的一个字段。
S1捕获域名系统DNS流量,从所述DNS流量中提取被动DNS数据可以包括:
获取网络实时流量;
通过协议识别获取DNS实时流量,过滤其他协议流量;
提取被动DNS数据(Passive DNS数据)。
本发明实施例能够从DNS流量中提取域名进行检测,分析出僵尸网络受控主机和命令控制服务器,进而可以有效的对僵尸网络的传播和恶意行为进行阻断。
其中,预设检测模型包括模型文件和权重文件,通过迭代深度学习获得的分类模型,用于僵尸受控主机检测和/或命令控制服务器检测和/或僵尸恶意代码家族检测。
本发明实施例中的预设检测模型可以通过最多nb_epoch次迭代深度学习获得最优的分类模型。
步骤S1之前还包括:
S01、获取训练数据,所述训练数据包括僵尸网络家族域名集合和合法域名集合;
S02、建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数;
S03、对于所述僵尸网络家族域名集合和合法域名集合进行编码;
S04、利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型;
S05、建立学习检测模型,并对分类模型进行交叉验证评估,获取预设检测模型。
其中,S01获取训练数据包括:
通过对僵尸网络样本库的样本进行家族分类,获取各僵尸网络家族的样本集合;
对各僵尸网络家族的样本进行逆向,获取DGA域名生成算法;
对于无法逆向的僵尸网络恶意代码样本,使用沙箱捕获用于命令控制C&C通讯的DGA域名;
使用分布式爬虫获取DGA域名和僵尸网络家族的标注;
基于生成式对抗网络GAN,利用沙箱获取的DGA域名和爬取的DGA域名训练C&C通信域名生成模型;
通过所述C&C通信域名生成模型生成僵尸网络恶意代码家族域名;
获取合法域名集合。
本发明实施例中僵尸网络家族域名集合主要有两个来源:其一,逆向僵尸网络恶意代码,获取C&C通讯算法,即DGA算法,利用DGA算法生成用于该家族通讯的域名。其二,基于公开爬取的域名和僵尸网络恶意代码在沙箱运行提供的C&C通讯域名集合,利用生成式对抗网络(Generative adversarial networks,GAN)训练僵尸网络家族C&C通讯域名的生成模型,利用该模型生成用于该家族通讯的DGA域名。合法域名集合可以使用Alex-1M域名数据集合或其他域名管护权威机构提供的合法域名集合。
本发明实施例为了学习僵尸网络恶意代码C&C通信的DGA域名潜在分布,基于生成式对抗网络(Generative adversarial networks,GAN),利用沙箱获取的DGA域名和爬取的DGA域名训练C&C通讯域名生成模型。进而,该模型能够像DGA域名生成算法一样自动生成指定僵尸网络恶意代码家族域名。
S02建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数包括:
从自然语言处理领域的深度学习模型中,通过预测试选择域名分析的学习网络模型;
设置所述学习网络模型的网络结构参数和训练权重;
构造所述学习网络模型的输入层,设置输入层参数;
构造所述学习网络模型的嵌入层,设置嵌入层参数;
构造所述学习网络模型的卷积层,所述卷基层设置卷积滤波器集合,所述卷积滤波器集合用于获取僵尸网络C&C通信的DGA特征;
构造所述学习网络模型的递归神经元网络层,设置递归神经元网络层参数;
构造所述学习网络模型的丢弃层,设置丢弃层参数;
构造所述学习网络模型的密集全连接层,设置全连接层参数;
构造所述学习网络模型的输出层,设置输出层参数。
本发明实施例可以从自然语言处理领域的常见深度学习模型中,例如RNNs(Recurrent Neural NetworkUnits),LSTMs(Long Short-Term MemoryUnits)与GRUs(Gated Recurrent Units),通过预测试选择最适合域名分析的模型。然后,建立最优模型,并设置网络结构参数和训练权重。
输入层的输入为多个文本文件,包括Alex-1M合法域名列表文件和多个僵尸网络家族C&C通信DGA域名列表文件;
嵌入层将正整数(下标)转换为具有固定大小的向量,如[[4],[20]]→[[0.25,0.1],[0.6,-0.2]]。嵌入层的输入为张量Rd×l-max,其中l_max为域名集合最大长度,默认值为63。d为输出维度,默认值为128;
递归神经元网络层,可以选用不同的递归神经元网络层例,如SimpleRNN、GRU和LSTM,输出维度为128;
为输入数据施加丢弃层。丢弃层将在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,丢弃层用于防止过拟合,取值为0~1之间的浮点数。控制输入线性变换的神经元断开比例默认为0.3;
全连接层参数,所实现的运算是output=activation(dot(input,kernel)+bias)。其中,activation是逐元素计算的激活函数,dot表示内积,kernel是本层的权值矩阵,bias为偏置向量,在本层,使用激励函数Softmax作为输出层的多层感知机(Multi-Layer Perceptron,MLP),将上一层的每一个神经元和下一层的每一个神经元相互连接。全连接层的输出概率之和为1,这是由激励函数Softmax保证的。激励函数Softmax把任意实值的向量转变成元素取值0-1且和为1的向量。输出维度与分类数相关,即僵尸网络家族数和合法域名。默认输出维度为43,42个僵尸网络家族和1个合法域名集合;
输出层输出结果为待检测数据中的目标域名被判定为僵尸网络家族C&C通信和合法域名的概率。
本发明实施例选用多层网络的分类效果在一定程度上优于单层网络。
S03对于所述僵尸网络家族域名集合和合法域名集合进行编码包括:
用随机数初始化所述学习网络模型的递归神经元网络层所有的参数/权重;
在所述学习网络模型的输入层,读取合法域名列表和多个僵尸网络家族列表,获取所述僵尸网络家族和合法域名的域名信息和标注信息;
在所述学习网络模型的嵌入层,对于所述僵尸网络家族域名和合法域名,根据集合域名最大长度l_max,以及域名集合中出现的字符集合Z进行编码。
本发明实施例还可以在初始化之后将域名转为小写,移除顶级域名获取二级域名。字符集合Z包括:小写字母、数字、句点、连接号和下划线。根据l_max和Z进行编码目的是将域名转换为具有固定大小的向量,域名集合变为输出张量。
S04利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型包括:
将递归神经元网络层将嵌入层的输出张量作为输入,该所述递归神经元网络层选择使用门限机制,通过防止梯度消失原则使得递归神经元网络层具有学习长程依赖;
对于密集全连接层,使用激励函数作为输出层的多层感知机,所述全连接层用嵌入层和递归神经元网络层的输出的特征进行分类;
对于输出层,输出待检测域名被判定为僵尸网络家族C&C通信和合法域名的概率,通过编码映射方法和排序方法,获取检测结果。
对于丢弃层,由于训练数据集相对较小,合理设置丢弃层参数有利于防止过拟合。在实际训练中,丢弃参数=0.3使得训练结果最优。同时,丢弃层的放置位置可以选择RNN→输出或输入→RNN的位置,效果相比更为理想;RNN(Recurrent Neural Networks,循环神经网络)。在深度学习领域,GRU和LSTM都是RNN的一种。
对于密集全连接层,使用了softmax激励函数作为输出层的多层感知机(Multi-Layer Perceptron),嵌入层和递归神经元网络层的输出代表了输入的高级特征,全连接层的目的就是用这些特征进行分类,类别基于训练集。对于僵尸网络恶意代码家族C&C通信模式,默认有42种可能的类别,额外还有1种合法域名类别,即43种。除了分类以外,加入全连接层也是学习特征之间非线性组合的有效办法。全连接层的输出概率之和为1,这是由激励函数Softmax保证的。Softmax函数把任意实值的向量转变成元素取之0~1且和为1的向量;
对于输出层,输出待检测域名被判定为僵尸网络家族C&C通信和合法域名的概率,然后通过编码映射方法和排序方法,获取最终的检测结果,即僵尸网络家族名称或合法域名。
S05建立学习检测模型,并对分类模型进行交叉验证评估,获取预设检测模型包括:
经过迭代,输出目标分类模型;并保存训练完的预设检测模型。
S2对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据包括:
对于被动DNS数据使用白名单过滤合法域名及所述合法域名的被动DNS数据;
使用黑名单过滤已知僵尸网络域名及已知僵尸网络域名的被动DNS数据,输出C&C通信事件;
使用域名特征过滤合法域名及所述合法域名的被动DNS数据;
使用域名过滤算法过滤掉合法域名及所述合法域名的被动DNS数据;
提取过滤后剩余的被动DNS数据的域名,以进行僵尸网络检测。
对于DNS协议实时流量,根据会话进行处理,提取的Passive DNS数据,格式描述如下:“timestamp||dns-client||dns-server||RR class||Query||Query Type||Answer||TTL||Count”,“timestamp”为时间戳,“dns-client”为用户主机IP地址(客户端),“dns-server”为DNS服务器IP地址(服务器端),“RR class”为资源记录类型,“Query”为查询域名,“Query Type”为查询类型,“Answer”为域名解析的IP地址或空,“TTL”为生存周期,“Count”为查询次数;
本发明实施例对于提取的Passive DNS数据,采用过滤机制,使用黑白名单过滤、特征过滤、算法过滤等方式过滤掉合法域名和已知C&C域名,以及相关Passive DNS数据,余下的Passive DNS数据将用于僵尸主机检测,其中,白名单包括但不局限于以下域名数据集:Alex-1M域名数据集,从国家域名注册机构获取的合法域名数据集等,,黑名单包括但不局限于以下域名数据集:DGA域名生成算法生成的C&C域名数据集、沙箱捕获的C&C域名数据集,从公开的、交换或购买的威胁情报机构获取的C&C域名数据集等。域名特征包括但不局限于以下特征:域名长度、域名组成、顶级域名类别等;域名过滤算法包括但不局限于以下算法:域名随机熵、域名局部流行度等。
S3对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的所述目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果包括:
分析待检测目标域名被动DNS数据,获取待检测目标域名,对域名进行编码;
利用预设检测模型对编码后的待检测目标域名进行检测,输出该域名属于僵尸网络家族域名或合法域名的概率;
利用最高概率的检测结果对于所述待检测目标域名被动DNS数据进行标注。
S4在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器包括:
对于指定的时间窗口,获取标注后的被动DNS数据集;
利用关联算法,检测僵尸网络受控主机;
利用关联算法,检测僵尸网络命令控制服务器;
根据C&C威胁事件,通过与防火墙联动进行阻断。
本发明实施例中指定的时间窗口,默认以天为单位。
所述的基于生成式对抗网络GAN可以利用较小的僵尸网络家族C&C通信DGA域名集合就能够学习到样本数据的分布特征,生成与训练样本相似的新数据。
所述僵尸网络样本库包含业内大部分僵尸网络样本,包括Windows系统的PE文件、Linux系统的ELF文件和Android系统的APK文件。所述僵尸网络用于C&C通信的域名集合已经使用多种技术进行标注。所述的合法域名集合已经使用多种技术进行确认。
所述的僵尸网络受控主机检测,检测模式支持多类操作系统部署,包括Windows系统、Linux系统、Android系统等,支持多类操作系统受控主机检测。
所述的检测过程仅需要不断提供新的僵尸网络家族C&C通信的DGA域名集合,通过深度学习过程,无需人工干预就能够完成学习、检测和升级功能。
本发明实施例提供的僵尸主机检测方法,引入了深度学习技术、自然语言理解技术、生成对抗网络技术和关联分析技术,极大的提高了僵尸网络C&C通信的检测性能和准确率;通过自学习过程,极大的减少了安全专家的人工干预过程,降低了系统维护和升级的代价;通过使用生成对抗网络技术,解决了僵尸网络C&C通信DGA域名训练数据不足的问题,从而实现了对这些僵尸网络家族的训练和检测;本发明实施例提供的僵尸主机检测方法,通过分析DNS流量,能够实现对于不同Fast-Flux类的僵尸网络家族进行检测和标注,进而发现受控的僵尸主机和僵尸网络控制服务器。基于此,本发明实施例能够有效的阻止僵尸网络利用DGA域名进行C&C通信,进而阻止受控僵尸主机接受恶意的指令实施不良的网络行为。本发明能够通过深度学习方法对基于Fast-Flux技术的僵尸网络家族进行分类,当前支持42个僵尸网络家族的检测。但是,通过对训练集合的调整,本发明将不局限于检测这些家族。
如图2所示,本发明实施例还提供一种僵尸主机检测装置,包括:
流量模块,设置为捕获域名系统DNS流量,从所述DNS流量中提取被动DNS数据,并获取主机从DNS服务器查询域名的DNS协议元数据;
过滤模块,设置为对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据;
检测模块,设置为对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的所述目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果;
确定模块,设置为在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器。
优选地,所述的检测装置还包括:
建模模块,设置为获取训练数据,所述训练数据包括僵尸网络家族域名集合和合法域名集合;
建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数;
对于所述僵尸网络家族域名集合和合法域名集合进行编码;
利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型;
建立学习检测模型,并对分类模型进行交叉验证评估,获取预设检测模型。
优选地,所述建模模块获取训练数据包括:
通过对僵尸网络样本库的样本进行家族分类,获取各僵尸网络家族的样本集合;
对各僵尸网络家族的样本进行逆向,获取DGA域名生成算法;
对于无法逆向的僵尸网络恶意代码样本,使用沙箱捕获用于命令控制C&C通讯的DGA域名;
使用分布式爬虫获取DGA域名和僵尸网络家族的标注;
基于生成式对抗网络GAN,利用沙箱获取的DGA域名和爬取的DGA域名训练C&C通信域名生成模型;
通过所述C&C通信域名生成模型生成僵尸网络恶意代码家族域名;
获取合法域名集合。
优选地,所述建模模块建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数包括:
从自然语言处理领域的深度学习模型中,通过预测试选择域名分析的学习网络模型;
设置所述学习网络模型的网络结构参数和训练权重;
构造所述学习网络模型的输入层,设置输入层参数;
构造所述学习网络模型的嵌入层,设置嵌入层参数;
构造所述学习网络模型的卷积层,所述卷基层设置卷积滤波器集合,所述卷积滤波器集合用于获取僵尸网络C&C通信的DGA特征;
构造所述学习网络模型的递归神经元网络层,设置递归神经元网络层参数;
构造所述学习网络模型的丢弃层,设置丢弃层参数;
构造所述学习网络模型的密集全连接层,设置全连接层参数;
构造所述学习网络模型的输出层,设置输出层参数。
优选地,所述建模模块对于所述僵尸网络家族域名集合和合法域名集合进行编码包括:
用随机数初始化所述学习网络模型的递归神经元网络层所有的参数/权重;
在所述学习网络模型的输入层,读取合法域名列表和多个僵尸网络家族列表,获取所述僵尸网络家族和合法域名的域名信息和标注信息;
在所述学习网络模型的嵌入层,对于所述僵尸网络家族域名和合法域名,根据域名集合最大长度l_max,以及域名集合中出现的字符集合Z进行编码。
优选地,所述建模模块利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型包括:
将递归神经元网络层将嵌入层的输出张量作为输入,该所述递归神经元网络层选择使用门限机制,通过防止梯度消失原则使得递归神经元网络层具有学习长程依赖;
对于密集全连接层,使用激励函数作为输出层的多层感知机,所述全连接层用嵌入层和递归神经元网络层的输出的特征进行分类;
对于输出层,输出待检测域名被判定为僵尸网络家族C&C通信和合法域名的概率,通过编码映射方法和排序方法,获取检测结果。
优选地,所述建模块建立学习检测模型,并对分类模型进行交叉验证评估,获取预设检测模型包括:
经过迭代,输出目标分类模型;并保存训练完的预设检测模型。
优选地,所述过滤模块对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据包括:
对于被动DNS数据使用白名单过滤合法域名及所述合法域名的被动DNS数据;
使用黑名单过滤已知僵尸网络域名及已知僵尸网络域名的被动DNS数据,输出C&C通信事件;
使用域名特征过滤合法域名及所述合法域名的被动DNS数据;
使用域名过滤算法过滤掉合法域名及所述合法域名的被动DNS数据;
提取过滤后剩余的被动DNS数据的域名,以进行僵尸网络检测。
优选地,检测模块对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的待检测目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果包括:
分析待检测目标域名被动DNS数据,获取待检测目标域名,对域名进行编码;
利用预设检测模型对编码后的待检测目标域名进行检测,输出该域名属于僵尸网络家族域名或合法域名的概率;
利用最高概率的检测结果对于所述待检测目标域名被动DNS数据进行标注。
优选地,所述确定模块在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器包括:
对于指定的时间窗口,获取标注后的被动DNS数据集;
利用关联算法,检测僵尸网络受控主机;
利用关联算法,检测僵尸网络命令控制服务器;
根据C&C威胁事件,通过与防火墙联动进行阻断。
实施例一
图3是本发明实施例提供的基于Fast-Flux技术的僵尸网络结构示意图。如图3所示,正常网络通信和Fast-Flux僵尸网络通信区别是比较明显的,Fast-Flux僵尸网络又可以进一步分为Single-Flux僵尸网络和Double-Flux僵尸网络两类。
对于正常网络通信,客户端向web服务器发起请求,web服务器返回请求内容;
对于Single-Flux僵尸网络,客户端要解析域名地址http://flux.example.com。首先,查询顶级域名DNS解析服务器“.com”,收到一个推荐的递归权威服务器“ns.example.com”。然后,客户端查询权威DNS服务器获取域名的真实IP地址。最后,客户端与该IP地址进行直接通信。而对于一般的DNS查询,在较长的时间范围内,IP地址是不变的,即DNS记录TTL设置通常较长。而Single-Flux僵尸网络,通常在一个网络中包含多个受控主机进行登记和注销网络域名地址,并且通过DNS A地址记录为单一网络域名生成一个可变的目标地址列表。Single-Flux技术的DNS记录TTL设置通常较短,以保证记录不会被缓冲,并保证网络地址能够快速变更而避免被记录。
对于Double-Flux僵尸网络,客户端要解析域名地址“http://flux.example.com”。首先,查询顶级域名DNS解析服务器“.com”,收到一个推荐的递归权威服务器“ns.example.com”。然后,客户端查询权威DNS服务器获取域名的真实IP地址。然而,权威DNS服务器也是Double-Flux僵尸网络中的一部分,它的IP地址也是周期变化的。当客户端查询权威DNS服务器获取域名“http://flux.example.com”的IP地址时,权威DNS服务器会转发查询请求给Double-Flux僵尸控制服务器获取必要的信息返给客户端。最后,客户端会通过IP地址与目标主机进行直接通信,目标主机也是Double-Flux僵尸网络中的一个受控主机,即该主机的IP地址也是周期变化的。
简言之,Double-Flux与Single-Flux技术相似,但更为复杂,除了不断变化DNS A记录以外,对于DNS NS记录也不断变化。在不考虑DNS缓存的情况下,虽然用户查询DNS所得到的结果是一样的,但Single-Flux技术查询名称服务器的IP是固定的,而Double-Flux技术查询名称服务器(受控主机)的IP是不断变化的。因此,Double-Flux技术使得名称服务器仅仅表现Proxy功能,用于流量导向,这些受控主机并不具备DNS服务器功能,而实际的DNS响应记录则在攻击者控制的Botmaster主机上。如果Double-Flux的一个受控主机被发现,以上实现确保僵尸网络具备一个保护层和生存能力。在使用Double-Flux技术的架构中,由于受控主机在DNS网络中仅作为代理,将这些受控主机隐藏在一个代理网络中,有助于保护控制节点。通过添加多个代理,大大提高了僵尸网络的生存率。
结合图4说明本发明实施例的基于深度学习的僵尸主机检测的过程:
步骤S100,训练数据获取,该步骤可以结合图7进行解释;
具体地,在步骤S100中,训练数据包括僵尸网络家族域名集合和合法域名集合;
僵尸网络家族域名集合主要有两个来源:
来源一:首先,通过对僵尸网络样本库的样本进行家族分类,获取各家族的样本集合;其次,对各家族的样本进行逆向,分析其C&C通讯机制;最后,根据C&C通讯机制的分析结果,提取DGA域名生成算法;
来源二,首先,对于难以逆向的僵尸网络恶意代码样本,使用沙箱进行流量捕获,获取用于C&C通讯的DGA域名。对于样本缺失或沙箱失效的僵尸网络程序,使用分布式爬虫爬取其C&C通讯的域名情报,至少包括C&C通讯域名、家族等信息;其次,基于有限规模的C&C通讯域名及家族集合,利用生成式对抗网络(Generative adversarial networks,GAN)训练僵尸网络家族C&C通讯域名的生成模型,利用该模型生成用于该家族通讯的DGA域名集合。通过使用GAN生成模型,相应家族的DGA通讯域名能够大量生成;
具体地,在步骤S100中,对于通过沙箱获取的C&C通信DGA域名和爬取的DGA域名情报,由于规模较小,会导致训练数据不平衡,在深度学习过程中进而导致过拟合问题。为解决该问题,利用生成式对抗网络GAN训练僵尸网络家族C&C通讯域名的生成模型,利用该模型生成用于该家族通讯的DGA域名集合,进而补充该家族训练数据集。
具体地,图5为本发明实施例提供的基于深度学习的僵尸主机检测方法的GAN模块自动编码框架,如图5所示,根据本发明实施例的GAN模块自动编码框架包括编码器和解码器两个模块。编码器用于将输入的域名转换为低维域名嵌入(特征),解码器用于根据低维域名嵌入(特征)产生与输入域名高度相似的新域名。
对于编码器,获取训练集合的最长域名记为l_max。获取训练集合中出现的字符集合为Z,包括小写字母、数字、句点、连接号和下划线。编码器包含输入层、嵌入层、卷积层、最大池化层、高速网络层和GRU层:
对于输入层,域名预处理,包括白名单过滤、大写转小写、提取二级域名等预处理操作;
对于嵌入层,学习一种线性映射Z→Rd,将每个域名中的合法字符映射为维度为d的向量。为了完全复制原始域名的特点并使得模型具备较小的尺寸和较快的训练速度,d可以设置的较小。在实际测试环境中,︱Z︱=39,则d=6。域名最大长度为63个字节,故实际需要63×6=378位能够描述一个任意给予的域名。通过补位获得嵌入层的输出为63×6+6=384,即384个神经元。
对于卷积层,在嵌入层的下面,卷积滤波器集合被用来获取僵尸网络C&C通信的DGA特征,可以为n-gram特征滤波器,包括2-gram、3-gram、4-gram、5-gram,具体滤波器的类型和个数可以根据情况进行指定。例如在卷积层,滤波器(也可以成为“核”或“特征探测器”)的个数设定为64,滤波器矩阵的大小分别为16×1、24×1、32×1、40×1等,借此分析不同的特征。
对于最大池化层,该层的目的是降低每个特征映射的维度,保留最重要的信息。最大池化层通过窗口(块)大小和步幅尺寸对卷积层的输出进行处理,评估特征出现的频度、位置及其他特性。
对于高速网络层,一种可学习的门限机制,在此机制下,域名特征信息流没有衰减的通过一些网络层,适用于随机梯度下降法。在实际环境中,当深度为10的时候,高速网络层的结果并不理想,但20层以及以后,结果显而易见,远远好于一般的网络。组装最大池化层的输出结果,传给高速网络层,各个特征的权重通过时间步长进行共享。
对于GRU层,GRU(Gated Recurrent Unit:门限循环单元)是一种LSTM单元的简化版本,拥有更少的参数。和LSTM细胞一样,它使用门限机制,通过防止梯度消失问题(vanishing gradient problem)让循环神经网络可以有效学习长程依赖(long-rangedependency)。GRU包含一个复位和更新门,它们可以根据当前时间步骤的新值决定旧记忆中哪些部分需要保留或更新。GRU层接收高速网络层的域名累积特征输出,处理后输出低维域名嵌入(特征)。
对于解码器,可以简单理解为编码器的反向过程,用于根据将低维域名嵌入(特征)产生与输入域名高度相似的新域名。解码器与编码器较大的差异是使用全连接层代替了嵌入层,用来实现带权重的多项式回归计算。由于全连接层使用了Softmax激活函数,对于每个时间步长,解码器的输出都会被表示为一个依据域名字符集合的多项式分布,从而抽样产生于输入域名强相关的新域名。
合法域名集合可以使用Alex-1M域名数据集合以及其他域名管理权威结构提供的合法域名集合;
步骤S200,建立基于双向门限递归单元(Bidirectional Gated Recurrent Unit,BiGRU)的深度学习网络模型,并设置网络结构参数和训练参数,该步骤可以结合图6和图7进行解释;
GRU(Gated Recurrent Unit:门限循环单元)是一种LSTM单元的简化版本,拥有更少的参数。和LSTM细胞(LSTM cell)一样,它使用门限机制,通过防止梯度消失问题(vanishing gradient problem)让循环神经网络可以有效学习长程依赖(long-rangedependency)。GRU包含一个复位和更新门,它们可以根据当前时间步骤的新值决定旧记忆中哪些部分需要保留或更新;
虽然从左往右的单向门限递归单元能够充分利用历史信息,解决长距离依赖关系问题,但是并没有考虑当前字符右边的历史信息。以域名“killasymmetric.com”为例,如果从左往右扫描域名,按照最长前缀匹配原则,二级域名的歧义性将很有可能导致生成错误的切分“killas/ymmetric”,导致被误判为随机生成的域名。如果从右向左扫描该域名,按照最长前缀匹配原则,二级则可能生成正确的切分“kill/asymmetric”。因此,充分利用双向上下文对于消解切分歧义具有重要的意义。因此,本发明实施例通过引入双向门限递归单元(Bidirectional Gated Recurrent Unit,BiGRU)来对域名的双向上下文信息进行建模;
具体地,在步骤S200中,本发明实施例包含以下子过程:
构造输入层,设置输入层参数。输入层的输入为多个文本文件,包括合法域名列表文件和多个僵尸网络家族列表文件;
构造嵌入层,设置嵌入层参数。嵌入层将正整数(下标)转换为具有固定大小的向量,如[[4],[20]]→[[0.25,0.1],[0.6,-0.2]]。嵌入层的输入为张量Rd×l-max,其中l_max为训练集合中的最长域名的长度,默认值为63。d为输出维度,默认值为128;
构造卷积层,在嵌入层的下面,卷积滤波器集合被用来获取僵尸网络C&C通信的DGA特征,例如,n-gram特征滤波器,包括2-gram、3-gram、4-gram、5-gram,具体滤波器的类型和个数可以根据情况进行指定和添加。例如在卷积层,滤波器(也可以成为“核”或“特征探测器”)的个数设定为64,滤波器矩阵的大小分别为16×1、24×1、32×1、40×1等,借此分析不同的特征。
构造最大池化层,其目的是降低每个特征映射的维度,保留最重要的信息。最大池化层,通过窗口(块)大小和步幅尺寸对卷积层的输出进行处理,评估特征出现的频度、位置及其他特性。
构造双向GRU门限递归层,设置GRU门限递归层参数。输出维度为128;
构造Dropout层,设置Dropout层参数。为输入数据施加Dropout。Dropout将在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,Dropout层用于防止过拟合,取值为0~1之间的浮点数。控制输入线性变换的神经元断开比例默认为0.3;
构造Dense全连接层,设置全连接层参数,所实现的运算是output=activation(dot(input,kernel)+bias)。其中,activation是逐元素计算的激活函数,dot表示内积,kernel是本层的权值矩阵,bias为偏置向量。在本层,使用Softmax激励函数作为输出层的多层感知机,将上一层的每一个神经元和下一层的每一个神经元相互连接。全连接层的输出概率之和为1,这是由激励函数Softmax保证的。Softmax函数把任意实值的向量转变成元素取值0-1且和为1的向量。输出维度与分类数相关,即僵尸网络家族数和合法域名。默认输出维度为43,42个僵尸网络家族和1个合法域名集合;
构造输出层,设置输出层参数。输出结果为待检测域名被判定为僵尸网络家族C&C通信和合法域名的概率。
步骤S300,训练过程,对训练域名集合进行预处理,利用处理后的数据对深度学习网络模型进行训练,该步骤可以结合图5进行解释;
具体地,在步骤S300中,本发明实施例包含以下子过程:
随机数初始化所有的滤波器和参数/权重;
在输入层,读取合法域名列表文件和多个僵尸网络家族文件,获取域名信息和相应的标注信息;
训练数据预处理过程,域名转为小写,并移除顶级域名获取二级域名;
获取训练集合的最长域名记为l_max。获取训练集合中出现的字符集合为Z,包括小写字母、数字、句点、连接号和下划线;
在嵌入层,对于给定的域名,根据l_max和Z进行编码。将域名转换为具有固定大小的向量,域名集合变为输出张量;
在BiGRU层,学习网络将训练文件夹中的僵尸网络家族C&C通信的DGA域名编码张量作为输入,即嵌入层的输出张量作为输入,执行前向步骤,并计算每个僵尸网络家族C&C通信的DGA域名对应输出概率。该层使用双向门限GRU机制,通过防止梯度消失问题让递归神经元网络可以有效学习长程双向依赖;
在Dropout层,由于训练数据集相对较小,合理设置Dropout层参数有利于防止过拟合。在实际训练中,Dropout=0.3使得训练结果最优。同时,Dropout层的放置位置可以选择GRU→输出或输入→GRU的位置,效果相比更为理想;
在Dense全连接层,使用了softmax激励函数作为输出层的多层感知机(Multi-Layer Perceptron),嵌入层和GRU层的输出代表了输入的高级特征,全连接层的目的就是用这些特征进行分类,类别基于训练集。对于僵尸网络恶意代码家族C&C通信模式,有42种可能的类别,额外还有1种合法域名,即Cn=43。除了分类以外,加入全连接层也是学习特征之间非线性组合的有效办法。全连接层的输出概率之和为1,这是由激励函数Softmax保证的。Softmax函数把任意实值的向量转变成元素取之0~1且和为1的向量;
计算输出层的总误差(43类别之和)。反向传播算法计算误差相对于所有权重的梯度,并用梯度下降法更新所有的滤波器的权重和参数值,以使输出误差最小化。权重的调整程度与其对总误差的贡献成正比;
对于输出层,输出待检测域名被判定为僵尸网络家族C&C通信和合法域名的概率,然后通过编码映射方法和排序方法,获取最终的检测结果,即僵尸网络家族名称或合法域名;
使用训练文件夹中的僵尸网络家族C&C通信的DGA域名重复使用步骤2~步骤4进行处理。
经过最多nb_epoch次迭代,输出最优的分类模型;
保存训练完的网络模型,包括模型文件和权重文件。
步骤S400,捕获DNS流量,提取Passive DNS数据,该步骤可以结合图8进行解释;
具体地,在步骤S400中,本发明实施例包含以下子过程:
利用Intel DPDK驱动、PF_RING驱动或Netmap驱动获取高速网络实时流量。其中,Intel DPDK驱动仅适用于使用Intel芯片的网卡,其他两种驱动兼容几乎所有主流网卡;
通过协议识别模块过滤其他协议流量,保留DNS协议实时流量,并进行协议解析;
对于解析后的会话进行处理,提取Passive DNS数据,具体格式描述如下:“timestamp||dns-client||dns-server||RR class||Query||Query Type||Answer||TTL||Count”,“timestamp”为时间戳,“dns-client”为用户主机IP地址(客户端),“dns-server”为DNS服务器IP地址(服务器端),“RR class”为资源记录类型,“Query”为查询域名,“QueryType”为查询类型,“Answer”为域名解析的IP地址或空,“TTL”为生存周期,“Count”为查询次数;
输出Passive DNS数据到过滤模块;
步骤S500,从上一个模块获取Passive DNS数据,采用过滤机制,过滤掉无需模型检测的数据,该步骤可以结合图8进行解释;
具体地,在步骤S500中,本发明实施例包含以下子过程:
实时获取Passive DNS数据;
使用白名单过滤合法域名及相关Passive DNS数据,白名单包括但不局限于以下域名数据集:Alex-1M域名数据集,从国家域名注册机构获取的合法域名数据集,从国际域名注册机构获取的合法域名数据集等;
使用黑名单过滤已知僵尸网络域名,黑名单包括但不局限于以下域名数据集:DGA域名生成算法生成的C&C域名数据集、沙箱捕获的C&C域名数据集,从公开的、交换或购买的威胁情报获取的C&C域名数据集等。对于命中黑名单的域名,相应的对本条Passive DNS数据进行标注,对于标注后的Passive DNS数据,存储到文件或数据库中;
使用域名特征过滤合法域名及相关Passive DNS数据,该特征包括但不局限于以下特征:域名长度、域名组成、顶级域名类别、元音和辅音的比例等;
使用域名过滤算法过滤掉合法域名及相关Passive DNS数据,域名过滤算法包括但不局限于以下算法:域名随机熵、域名局部流行度等;
域名随机熵,定义如下:
如果在一个域名S中存在一个字符集合E={E1,E2……En},每个字符出现的概率分布P={p1,p2……pn},则每个字符本身的信息量可表示为Ii=-log2pi。域名随机熵是整个域名S的平均信息量,其计算方法可表示如下:
Figure BDA0001376218860000251
域名局部流行度,定义如下:在确定的组织网络环境下(不包括IDC机房网络),单位时间内,超过指定不同IP数访问目标域名的次数。形式化描述如下,时间窗口定义为Tw,目标域名为S,不同IP数为Nip。例如,在Tw范围内,访问目标域名S的Nip大于10,则认为该目标域名局部流行度超出阈值,该目标域名为合法域名;
对过滤后的Passive DNS数据进行实时处理,获取域名并进行处理。之后,将处理后的域名送入检测模块进行僵尸网络检测。域名处理包括但不局限与以下过程,非法域名过滤(包括过长域名、非法使用字符等)、二级域名提取、大写转小写等。
步骤S600,检测过程,对输入的待检测域名进行编码,利用检测模型对域名编码进行僵尸网络家族检测;
具体地,在步骤S600中,本发明实施例包含以下子过程:
首先,检测模块引导BiGRU模型和权重HDF5文件到内存;
获取步骤S500输出的待检测目标域名,对域名进行编码。编码过程描述如下:根据域名集合最大长度l_max,以及域名集合中出现的字符集合Z,包括小写字母、数字、句点、连接号和下划线。对于给定的域名,根据l_max和Z进行编码。将域名转换为具有固定大小的向量;
利用检测模型对域名编码进行僵尸网络家族检测,输出该域名属于僵尸网络恶意代码家族和合法域名的概率列表;
选择最高概率的检测结果对本条Passive DNS数据进行标注;
对于标注后的Passive DNS数据,存储到文件或数据库中;
步骤S700,通过关联算法,在指定的时间窗口内,利用Bot_CA算法检测僵尸网络受控主机和僵尸网络控制服务器,该步骤可以结合图9进行解释;
具体地,在步骤S600中,本发明实施例包含以下子过程:
对于指定的时间窗口,通常以天为单位,获取标注后的Passive DNS数据集;
利用Bot_CA关联算法,检测僵尸网络受控主机;
利用Bot_CA关联算法,检测僵尸网络控制服务器;
建立C&C威胁事件和疑似C&C威胁事件,包括受控主机、控制服务器和C&C通信行为等信息,并将该事件存储到文件或数据库;
对于C&C威胁事件,通过与防火墙联动进行阻断。对于疑似C&C威胁事件,需要用户进行确认;
具体地,对于Bot_CA关联算法,本发明实施例包含以下子过程:
获取标注后的Passive DNS数据集合;
对于指定时间窗口T,分别根据源IP和解析IP(Passive DNS中的Answer字段)进行分组,并添加cnt字段,用于标识同一个IP出现的个数;
对于源IP,分组结果获得疑似僵尸网络受控主机列表。对于解析IP,分组结果获得疑似僵尸网络控制服务器列表;
对于疑似僵尸网络受控主机列表,根据cnt字段的值进行过滤。若cnt大于指定阈值ced,标记源IP为受控主机。否则,标记源IP为疑似受控主机;
对于疑似僵尸网络控制服务器列表,根据cnt字段的值进行过滤。若cnt大于指定阈值ctl,标记解析IP为控制服务器。否则,标记解析IP为疑似控制服务器;
建立C&C威胁事件和疑似C&C威胁事件,包括受控主机、控制服务器和C&C通信行为等信息;
将事件存储到文件或数据库中。
当选用的DGA域名训练集覆盖足够多的Fast-Flux僵尸网络家族C&C通信模式,以及合法域名训练集覆盖足够多的合法域名,训练完毕的深度学习模型能够区分恶意C&C通信和正常的网络通信,能够对僵尸网络C&C通信进行准确的僵尸网络家族检测。而且,本发明的实施例能够通过对网络DNS流量的分析实现对僵尸网络受控主机和控制服务器进行检测,同时能够根据C&C通信的特征标注僵尸网络家族;
综上所述,本发明涉及一种基于深度学习技术的僵尸主机检测方法,本方法的核心是基于僵尸网络通过Fast-Flux技术利用DNS隐藏攻击的来源,攻击者可以将多个IP地址的集合链接到多个特定的域名,并将新的地址从DNS记录中换入换出,规避检测。利用深度学习中的递归神经元网络或其变种对僵尸网络的C&C通信模式进行学习,进而通过通信模式识别获得僵尸主机检测能力,同时获得了僵尸网络家族和僵尸网络控制服务器的检测能力。本发明在一定程度上解决了传统机器学习技术特征提取和选择困难、模型过大、检测性能慢等问题。同时,本发明对于僵尸网络C&C通信的DGA域名具有优异的检测能力,系统资源使用率低、快速、准确率高、误报率低、跨平台检测等特点。而且,在确认僵尸受控主机的同时,也能够检测僵尸网络控制服务器和僵尸网络家族分类。
虽然本发明所揭示的实施方式如上,但其内容只是为了便于理解本发明的技术方案而采用的实施方式,并非用于限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭示的核心技术方案的前提下,可以在实施的形式和细节上做任何修改与变化,但本发明所限定的保护范围,仍须以所附的权利要求书限定的范围为准。

Claims (7)

1.一种僵尸主机检测方法,其特征在于,包括:
捕获域名系统DNS流量,从所述DNS流量中提取被动DNS数据,并获取主机从DNS服务器查询域名的DNS协议元数据;
对于提取的被动DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据;
对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的所述目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果;
在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器;
所述方法之前还包括:
获取训练数据,所述训练数据包括僵尸网络家族域名集合和合法域名集合;
建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数;
对于所述僵尸网络家族域名集合和合法域名集合进行编码;
利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型;
并对所述学习网络模型进行交叉验证评估,获取预设检测模型;
其中,建立学习网络模型,并设置所述学习网络模型的网络结构参数和训练参数包括:
从自然语言处理领域的深度学习模型中,通过预测试选择域名分析的学习网络模型;
设置所述学习网络模型的网络结构参数和训练权重;
构造所述学习网络模型的输入层,设置输入层参数;
构造所述学习网络模型的嵌入层,设置嵌入层参数;
构造所述学习网络模型的卷积层,所述卷积层设置卷积滤波器集合,所述卷积滤波器集合用于获取僵尸网络C&C通信的DGA特征;
构造所述学习网络模型的递归神经元网络层,设置递归神经元网络层参数;
构造所述学习网络模型的丢弃层,设置丢弃层参数;
构造所述学习网络模型的密集全连接层,设置全连接层参数;
构造所述学习网络模型的输出层,设置输出层参数;
所述对于所述僵尸网络家族域名集合和合法域名集合进行编码包括:
用随机数初始化所述学习网络模型的递归神经元网络层所有的参数/权重;
在所述学习网络模型的输入层,读取合法域名列表和多个僵尸网络家族列表,获取所述僵尸网络家族和合法域名的域名信息和标注信息;
在所述学习网络模型的嵌入层,对于所述僵尸网络家族域名和合法域名,根据域名集合最大长度l_max,以及域名集合中出现的字符集合Z进行编码;
所述对所述待检测数据中的目标域名进行编码包括:根据域名集合最大长度,以及域名集合中出现的字符集合对所述待检测数据中的目标域名进行编码,将所述目标域名转换为具有固定大小的向量。
2.如权利要求1所述的检测方法,其特征在于:预设检测模型为:
通过迭代深度学习获得的分类模型,用于僵尸受控主机检测和/或命令控制服务器检测和/或僵尸恶意代码家族检测。
3.如权利要求1所述的检测方法,其特征在于:获取训练数据包括:
通过对僵尸网络样本库的样本进行家族分类,获取各僵尸网络家族的样本集合;
对各僵尸网络家族的样本进行逆向,获取DGA域名生成算法;
对于无法逆向的僵尸网络恶意代码样本,使用沙箱捕获用于命令控制C&C通讯的DGA域名;
使用分布式爬虫获取DGA域名和僵尸网络家族的标注;
基于生成式对抗网络GAN,利用沙箱获取的DGA域名和爬取的DGA域名训练C&C通信域名生成模型;
通过所述C&C通信域名生成模型生成僵尸网络恶意代码家族域名;
获取合法域名集合。
4.如权利要求1所述的检测方法,其特征在于:利用编码后的所述僵尸网络家族域名集合和合法域名集合训练学习网络模型包括:
将递归神经元网络层将嵌入层的输出张量作为输入,该所述递归神经元网络层选择使用门限机制,通过防止梯度消失原则使得递归神经元网络层具有学习长程依赖;
对于密集全连接层,使用激励函数作为输出层的多层感知机,所述全连接层用嵌入层和递归神经元网络层的输出的特征进行分类;
对于输出层,输出待检测域名被判定为僵尸网络家族C&C通信和合法域名的概率,通过编码映射方法和排序方法,获取检测结果。
5.如权利要求1所述的检测方法,其特征在于:对于提取的被动 DNS数据,过滤掉合法域名及所述合法域名的被动DNS数据;将过滤后剩余的被动DNS数据作为僵尸主机待检测数据包括:
对于被动 DNS数据使用白名单过滤合法域名及所述合法域名的被动DNS数据;
使用黑名单过滤已知僵尸网络域名及已知僵尸网络域名的被动 DNS数据,输出C&C通信事件;
使用域名特征过滤合法域名及所述合法域名的被动DNS数据;
使用域名过滤算法过滤掉合法域名及所述合法域名的被动 DNS数据;
提取过滤后剩余的被动DNS数据的域名,以进行僵尸网络检测。
6.如权利要求1所述的检测方法,其特征在于:对所述待检测数据中的目标域名进行编码,利用预设检测模型对编码后的待检测目标域名进行检测,输出最高概率的僵尸网络家族名称作为所述目标域名的分类结果包括:
分析待检测目标域名被动DNS数据,获取待检测目标域名,对域名进行编码;
利用预设检测模型对编码后的待检测目标域名进行检测,输出该域名属于僵尸网络家族域名或合法域名的概率;
利用最高概率的检测结果对于所述待检测目标域名被动DNS数据进行标注。
7.如权利要求6所述的检测方法,其特征在于:在指定的时间窗口内,通过僵尸网络家族的域名检测僵尸网络受控主机和僵尸网络命令控制服务器包括:
对于指定的时间窗口,获取标注后的被动DNS数据集;
利用关联算法,检测僵尸网络受控主机;
利用关联算法,检测僵尸网络命令控制服务器;
根据C&C威胁事件,通过与防火墙联动进行阻断。
CN201710684018.1A 2017-08-11 2017-08-11 一种僵尸主机检测方法 Active CN109391602B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710684018.1A CN109391602B (zh) 2017-08-11 2017-08-11 一种僵尸主机检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710684018.1A CN109391602B (zh) 2017-08-11 2017-08-11 一种僵尸主机检测方法

Publications (2)

Publication Number Publication Date
CN109391602A CN109391602A (zh) 2019-02-26
CN109391602B true CN109391602B (zh) 2021-04-09

Family

ID=65414377

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710684018.1A Active CN109391602B (zh) 2017-08-11 2017-08-11 一种僵尸主机检测方法

Country Status (1)

Country Link
CN (1) CN109391602B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109951472A (zh) * 2019-03-13 2019-06-28 武汉智美互联科技有限公司 一种基于cnn深度学习的dga域名检测方法
CN109977118A (zh) * 2019-03-21 2019-07-05 东南大学 一种基于词嵌入技术和lstm的异常域名检测方法
CN110277173A (zh) * 2019-05-21 2019-09-24 湖南大学 基于Smi2Vec的BiGRU药物毒性预测系统及预测方法
CN110266647B (zh) * 2019-05-22 2021-09-14 北京金睛云华科技有限公司 一种命令和控制通信检测方法及系统
CN110210226A (zh) * 2019-06-06 2019-09-06 深信服科技股份有限公司 一种恶意文件检测方法、系统、设备及计算机存储介质
CN110381089A (zh) * 2019-08-23 2019-10-25 南京邮电大学 基于深度学习对恶意域名检测防护方法
CN110958251A (zh) * 2019-12-04 2020-04-03 中电福富信息科技有限公司 一种基于实时流处理检测失陷主机并回溯的方法及装置
CN111125700B (zh) * 2019-12-11 2023-02-07 中山大学 一种基于主机关联性的dga家族分类方法
CN111209497B (zh) * 2020-01-05 2022-03-04 西安电子科技大学 基于GAN和Char-CNN的DGA域名检测方法
CN111224994A (zh) * 2020-01-15 2020-06-02 南京邮电大学 一种基于特征选择的僵尸网络检测方法
CN111371806B (zh) * 2020-03-18 2021-05-25 北京邮电大学 一种Web攻击检测方法及装置
CN111628970B (zh) * 2020-04-24 2021-10-15 中国科学院计算技术研究所 一种dga型僵尸网络的检测方法、介质和电子设备
CN111641663B (zh) * 2020-07-06 2022-08-12 奇安信科技集团股份有限公司 一种安全检测方法和装置
CN112019651B (zh) * 2020-08-26 2021-11-23 重庆理工大学 利用深度残差网络和字符级滑动窗口的dga域名检测方法
CN112261169B (zh) * 2020-10-16 2022-02-22 重庆理工大学 利用胶囊网络和k-means的DGA域名Botnet识别判断方法
CN112333185B (zh) * 2020-11-02 2023-01-17 北京金睛云华科技有限公司 一种基于dns解析的域名阴影检测方法和装置
CN112839029B (zh) * 2020-12-22 2023-02-17 河南省信息咨询设计研究有限公司 一种僵尸网络活跃度的分析方法与系统
CN112866023B (zh) * 2021-01-13 2023-04-07 恒安嘉新(北京)科技股份公司 网络检测、模型训练方法、装置、设备及存储介质
CN112926647B (zh) * 2021-02-23 2023-10-17 亚信科技(成都)有限公司 模型训练方法、域名检测方法及装置
CN113179260B (zh) * 2021-04-21 2022-09-23 国家计算机网络与信息安全管理中心河北分中心 僵尸网络的检测方法、装置、设备及介质
CN113347210B (zh) * 2021-08-03 2021-10-29 北京观成科技有限公司 一种dns隧道检测方法、装置及电子设备
CN114172707B (zh) * 2021-11-29 2024-04-26 北京恒安嘉新安全技术有限公司 Fast-Flux僵尸网络检测方法、装置、设备及存储介质
CN115022282B (zh) * 2022-06-06 2023-07-21 天津大学 一种新型域名生成模型建立及应用
CN115051861B (zh) * 2022-06-17 2024-01-23 北京天融信网络安全技术有限公司 一种域名检测的方法、装置、系统及介质
CN115150165B (zh) * 2022-06-30 2024-03-15 北京天融信网络安全技术有限公司 一种流量识别方法及装置
CN115277170B (zh) * 2022-07-25 2023-09-12 南京未来网络产业创新有限公司 一种僵尸网络与cdn网络的主动分类方法及系统
TWI827203B (zh) * 2022-08-18 2023-12-21 中華電信股份有限公司 容器之惡意檔案的驗證系統和驗證方法
CN116032604A (zh) * 2022-12-28 2023-04-28 广州大学 一种基于长短期记忆网络的物联网僵尸设备检测方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120073000A (ko) * 2010-12-24 2012-07-04 한국인터넷진흥원 봇넷 탐지 정보의 분석 시스템 및 방법
US8682812B1 (en) * 2010-12-23 2014-03-25 Narus, Inc. Machine learning based botnet detection using real-time extracted traffic features
CN105897714A (zh) * 2016-04-11 2016-08-24 天津大学 基于dns流量特征的僵尸网络检测方法
CN106060067A (zh) * 2016-06-29 2016-10-26 上海交通大学 基于Passive DNS迭代聚类的恶意域名检测方法
CN106294815A (zh) * 2016-08-16 2017-01-04 晶赞广告(上海)有限公司 一种url的聚类方法及装置
CN106650799A (zh) * 2016-12-08 2017-05-10 重庆邮电大学 一种电子证据分类提取方法及系统
CN106713312A (zh) * 2016-12-21 2017-05-24 深圳市深信服电子科技有限公司 检测非法域名的方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8682812B1 (en) * 2010-12-23 2014-03-25 Narus, Inc. Machine learning based botnet detection using real-time extracted traffic features
KR20120073000A (ko) * 2010-12-24 2012-07-04 한국인터넷진흥원 봇넷 탐지 정보의 분석 시스템 및 방법
CN105897714A (zh) * 2016-04-11 2016-08-24 天津大学 基于dns流量特征的僵尸网络检测方法
CN106060067A (zh) * 2016-06-29 2016-10-26 上海交通大学 基于Passive DNS迭代聚类的恶意域名检测方法
CN106294815A (zh) * 2016-08-16 2017-01-04 晶赞广告(上海)有限公司 一种url的聚类方法及装置
CN106650799A (zh) * 2016-12-08 2017-05-10 重庆邮电大学 一种电子证据分类提取方法及系统
CN106713312A (zh) * 2016-12-21 2017-05-24 深圳市深信服电子科技有限公司 检测非法域名的方法及装置

Also Published As

Publication number Publication date
CN109391602A (zh) 2019-02-26

Similar Documents

Publication Publication Date Title
CN109391602B (zh) 一种僵尸主机检测方法
CN109450842B (zh) 一种基于神经网络的网络恶意行为识别方法
Shibahara et al. Efficient dynamic malware analysis based on network behavior using deep learning
US11909722B2 (en) Detecting homographs of domain names
US20180063163A1 (en) Learning indicators of compromise with hierarchical models
CN112910929B (zh) 基于异质图表示学习的恶意域名检测方法及装置
CN109450845B (zh) 一种基于深度神经网络的算法生成恶意域名检测方法
CN112866023B (zh) 网络检测、模型训练方法、装置、设备及存储介质
Zhao et al. A review of computer vision methods in network security
KR102093275B1 (ko) 악성코드 감염 유도정보 판별 시스템, 프로그램이 기록된 저장매체 및 방법
CN111600919B (zh) 智能网络应用防护系统模型的构建方法和装置
CN111698260B (zh) 一种基于报文分析的dns劫持检测方法及系统
Alissa et al. Botnet attack detection in iot using machine learning
CN110557382A (zh) 一种利用域名共现关系的恶意域名检测方法及系统
CN110830490B (zh) 基于带对抗训练深度网络的恶意域名检测方法及系统
CN112492059A (zh) Dga域名检测模型训练方法、dga域名检测方法、装置及存储介质
CN109977118A (zh) 一种基于词嵌入技术和lstm的异常域名检测方法
CN113905016A (zh) 一种dga域名检测方法、检测装置及计算机存储介质
CN110855716B (zh) 一种面向仿冒域名的自适应安全威胁分析方法及系统
CN112507336A (zh) 基于代码特征和流量行为的服务端恶意程序检测方法
CN113965393B (zh) 一种基于复杂网络和图神经网络的僵尸网络检测方法
US20230344868A1 (en) Webpage phishing auto-detection
CN116886400A (zh) 一种恶意域名检测方法、系统及介质
EP4024252A1 (en) A system and method for identifying exploited cves using honeypots
CN117892102B (zh) 基于主动学习的入侵行为检测方法、系统、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant