基于随机森林的dga域名检测方法
【技术领域】
[0001] 本发明设及一种基于随机森林的DGA域名检测方法,属于网络安全领域。
【背景技术】
[0002] 恶意域名指传播蠕虫、病毒和特洛伊木马或是进行诈骗、色情内容传播等不法行 为的网站域名。随着Domain-Flux Jast-Flux技术越来越广泛的被黑客采用,网络攻击更加 隐蔽,恶意追踪更加困难,安全隐患更加长久。其中,由域名生成算法(Domain Generation Algorithm, DGA)生成到的域名被广泛应用于僵尸网络(Botnet)。在大量被僵尸程序所感染 的主机(Bot)构成的网络中,攻击者(BotMaster)可W通过控制服务器操控Bot发起各种类 型的网络攻击,如分布式拒绝服务(孤oS)、垃圾邮件(Spare)、网络钓鱼(Phishing)、点击欺 诈(Click Rraud)W及窃取敏感信息(Information Hieft)等。
[0003] 目前,各种恶意域名检测算法主要分为W下两类:
[0004] (1)基于构造特征的方法。现有专利包括:基于域名构造特征的挂马网页检测方法 (专利号为201110146967.7)、仿冒域名检测方法及设备(专利号为201210104110.3)。
[0005] (2)基于访问行为的方法。现有的专利包括:异常域名检测方法及系统(专利号为 200910237594.7)、非法域名识别方法及装置(专利号为201110382578.4)、一种Domain Flux僵尸网络域名检测(专利号为201210475596.1)。
[0006] 上述两类方法存在着如下局限性:1、基于构造特征的方法中,现有的两种专利均 从相似性度量出发,通过计算样本对得到阔值,确定待检测域名是否属于假冒域名或者未 知挂马网站。上述方法使用了较为简单的相似性度量方法,考虑的特征较为单一,设定阔值 受训练样本影响,漏报或误报率较高,方法泛化性教差。2、基于访问行为的方法大多基于一 个假设:恶意域名和合法域名表现出来的访问行为有着根本的差异。其基本流程是从域名 服务器获取DNS记录,然后解析运些DNS数据,再根据各种方法对数据进行分析。运是一种在 线的方法,需要在DNS服务器部署相关的服务,在线获取运些记录和数据的成本较高。
【发明内容】
[0007] 为了解决上述技术问题,本发明提供了一种基于随机森林的DGA域名检测方法。 [000引为了达到上述目的,本发明所采用的技术方案是:
[0009] 基于随机森林的DGA域名检测方法,包括W下步骤,
[0010] 步骤一,构建知识库,包括构建黑白名单样本库和单词词典;
[0011] 步骤二,设定域名特征模板,将黑白名单中的域名作为训练集,过滤掉噪音,训练 并离线保存随机森林算法模型;
[001。所述域名特征模板可根据训练反馈进行修改;
[0013] 步骤=,获取待检测域名,加载最优随机森林算法模型,将待检测域名作为输入, 得到预测结果。
[0014] 黑名单为通过开源渠道获取的恶意域名,白名单为通过开源渠道获取的合法域 名,单词词典由英文单词和字母组合构成。
[0015] 所述特征模板中的特征包括域名长度、域名信息赌、域名语音性、域名中元音字符 数、域名中数字字符数、域名中重复字母数、域名中连续数字字符数、域名中非元音连续字 符数、域名中N元语言模型在白名单中得分W及域名中N元语言模型在单词词典中得分。
[0016] 计算域名信息赌的公式为,
[001引其中,H为域名信息赌,Pi为每个字母P在域名中出现的频率,n表示域名中不重复 的字符数;
[0019] 所述域名语音性通过马尔卡夫链预测,具体过程为,
[0020] Al)读取训练集合,得到转移矩阵;
[0021] A2)读取正例样本和反例样本,将样本作为马尔卡夫链模型输入,得到预测的概率 值,根据正例样本的概率值和反例样本的概率值确定语音性阔值;
[0022] 所述正例样本为具有可读性/语言性的合法域名;所述反例样本为不可读/不具有 语言性的域名;
[0023] A3)将域名作为输入,根据语音性阔值判断该域名是否具有语音性;
[0024] 所述域名中元音字符数主要统计域名中包含的元音字母V'、V'、"i"、V'、V'的 字符数;
[00巧]所述域名中数字字符数主要统计域名中包含的"0"、"r、"2"、"3"、"4"、"5"、"护、 "7"、"《'、%'的字符数;
[0026] 域名中N元语言模型在白名单中得分计算过程,
[0027] BI)训练白名单中N元语言模型;
[0028] 统计白名单中所有N元对及其频率,将统计结果W矩阵形式保存;其中,矩阵的行 是白名单域名索引,矩阵的列是所有白名单包含的N元对索引;
[0029] B2)计算待检测域名在N元语言模型中的得分;
[0030] 将域名中出现的N元对与训练得到的矩阵中的N元对频率进行相乘后累加,具体公 式为,
[0032] 其中,S为域名中N元语言模型在白名单中得分,M为存储的矩阵,k为行索引总数, r/为列索引总数也表示域名在矩阵M中第j个N元对出现的频率;
[0033] 域名中N元语言模型在单词词典中得分计算过程与域名中N元语言模型在白名单 中得分计算过程相同,仅是将白名单替换成单词词典。
[0034] 所述噪音为对应特征值与域名类别不相符的域名。
[0035] 所述域名为去除TLD和前缀字符的主体部分。
[0036] 随机森林算法实现过程为,
[0037] Cl)样本选择;
[0038] 假设每轮从原始训练集中通过有放回抽样的方式抽取m个样例,得到一个大小为m 的训练集,共进行Q轮的抽取,则每轮抽取的训练集分别为Tl, T2,…,Tq;
[0039] C2)决策树生成;
[0040] 假如特征空间共有E个特征,则在每一轮生成决策树的过程中,从E个特征中随机 选择其中的e个特征,组成一个新的特征集,e<E,通过使用新的特征集来生成决策树,Q轮中 共生成Q个决策树,Q个决策树之间是相互独立;
[0041] C3)模型预测;
[0042] 对于分类问题,使用所有的决策树投票来确定最终分类结果。
[0043] 本发明所达到的有益效果:本发明不依赖在线获取DNS数据,不仅可W单独、快速 完成DGA域名检测,也可W为其他恶意域名检测方法提供预测;此外,该方法基于随机森林 算法,在噪音干扰上具有明显的优势,使用资源少,运行效率高,泛化性能好。
【附图说明】
[0044] 图1为本发明的流程图。
[0045] 图2为随机森林的构建过程。
【具体实施方式】
[0046] 下面结合附图对本发明作进一步描述。W下实施例仅用于更加清楚地说明本发明 的技术方案,而不能W此来限制本发明的保护范围。
[0047] 如图1所示,基于随机森林的DGA域名检测方法,包括W下步骤:
[0048] 步骤一,构建知识库,包括构建黑白名单样本库和单词词典。
[0049] 黑名单为通过开源渠道获取的恶意域名,比如:安全联盟网站曝光台公布的恶意 网址、金山网盾公布的恶意网址数据库、Malware Domain List、Malware Domains、 F*hishTank、hpHosts和CyberCrime Tracker恶意域名列表。
[0050] 白名单为通过开源渠道获取的合法域名,比如Alexa网站排名、中文站长之家等获 取的合法域名。
[0051] 单词词典由英文单词和字母组合构成。
[0052] 步骤二,设定域名特征模板,将黑白名单中的域名作为训练集,过滤掉噪音,训练 并离线保存随机森林算法模型;域名特征模板可根据训练反馈进行修改。
[0053] 域名为去除化0(Top-Level Domain)和前缀字符的主体部分,例如:domain = "WWW. baidu. com",其TLD为".com",去除"WWW."前缀和TLD之后,域名主体为baidu。
[0054] 特征模板中的特征包括域名长度、域名信息赌、域名语音性、域名中元音字符数、 域名中数字字符数、域名中重复字母数、域名中连续数字字符数、域名中非元音连续字符 数、域名中N元语言模型在白名单中得分W及域名中N元语言模型在单词词典中得分。
[0055] 计算域名信息赌的公式为,
[0057]其中,H为域名信息赌,Pi为每个字母P在域名中出现的频率,n表示域名中不重复 的字符数;
[005引域名语音性通过马尔卡夫链预测。马尔可夫链(Markov Chain),描述了一种状态 序列,其每个状态值取决于前面有限个状态。马尔可夫链是具有马尔可夫性质的随机变量 的一个数列。运些变量的范围,即它们所有可能取值的集合,被称为"状态空间",下列公式 中Xz的值则是在时间Z的状态。如果Xz+1对于过去状态的条件概率分布仅是Xz的一个函数, 则:
[0059] P(Xz+i = x I Xl = Xl,X2 = X2,---,Xz = Xz) =P(Xz+i = x I Xz = Xz)
[0060] 其中X为过程中的某个状态。
[0061] -个含有Z个状态的一阶过程有Z2个状态转移。每一个转移的概率叫做状态转移 概率(State IYansition Probability),就是从一个状态转移到另一个状态的概率。运所 有的Z2个概率可W用一个状态转移矩阵来表示,其表示形式如下:
[0063] qt表示所处时刻为t的一个状态;
[0064] 对该矩阵有如下约束:
[0067] 通过马尔卡夫链进行域名语音性预测的具体过程为,
[0068] Al)读取训练集合,得到转移矩阵。
[0069] 为了便于简化马尔卡夫链模型,提高运行效率,转移矩阵中的元素只考虑了26个 英文字母大小写、数字和常见的符号。同时