北京大学学报自然科学版   2016, Vol. 52 Issue(3): 396-402

文章信息

周昌令, 陈恺, 公绪晓, 陈萍, 马皓
ZHOU Changling, CHEN Kai, GONG Xuxiao, CHEN Ping, MA Hao
基于Passive DNS的速变域名检测
Detection of Fast-Flux Domains Based on Passive DNS Analysis
北京大学学报(自然科学版), 2016, 52(3): 396-402
Acta Scientiarum Naturalium Universitatis Pekinensis, 2016, 52(3): 396-402

文章历史

收稿日期: 2015-06-01
修回日期: 2015-07-07
网络出版日期: 2016-05-17
基于Passive DNS的速变域名检测
周昌令1,2,3, 陈恺1,2, 公绪晓1, 陈萍1, 马皓1     
1. 北京大学计算中心, 北京 100871;
2. 北京大学信息科学技术学院, 北京 100871;
3. 北京大学计算机研究所, 北京 100871
摘要: 利用Passive DNS采集校园网真实运行环境的域名访问记录, 从域名的多样性、时间性、增长性和相关性等方面构建18个特征集, 提出基于随机森林算法来识别速变域名的模型。交叉验证实验表明, 所构建的模型对域名分类的准确率超过90%。在所采集的数据集上, 所构建的模型比FluxBuster能更有效地识别速变域名。
关键词: Passive DNS     速变域名     随机森林算法     DGA     CDN    
Detection of Fast-Flux Domains Based on Passive DNS Analysis
ZHOU Changling1,2,3, CHEN Kai1,2, GONG Xuxiao1, CHEN Ping1, MA Hao1     
1. Computer Center of Peking University, Beijing 100871;
2. School of Electronics Engineering and Computer Science, Peking University, Beijing 100871;
3. Institute of Computer Science & Technology of Peking University, Beijing 100871
Corresponding author: ZHOU Changling, E-mail: zclfly@pku.edu.cn
Abstract: The authors use Passive DNS to log domain name query history of real campus network environment, and construct eighteen feature sets grouping by diversity, time, growth, and relevance, and then propose a model detect Fast-Flux Domains using random forest algorithm. The result shows that the proposed model can classify domains with accuracy over 90% by cross validation experiments. The model can detect Fast-Flux domains in the datasets used in this study more effectively compared with Fluxbuster.
Key words: Passive DNS     fast-flux domain     random forest algorithm     DGA     CDN    

目前, 速变服务网络(Fast-Flux Service Network, FFSN)[1]是一些恶意行为(如钓鱼网站、垃圾邮件、僵尸网络等)躲避打击的常见技术手段之一。其基本思想是利用大量被控制的主机提供中转服务, 隐藏背后的控制者。通过域名与IP对应关系的快速变化, 避免被IP黑名单隔离, 提高其服务的可用性。速变域名(Fast-Flux Domain)的特点是DNS应答记录的生命周期(TTL)很短, 应答通常返回的是不断变化的IP地址列表, 这些IP地址往往属于不同物理位置的不同运营商。由于内容分发网络(Content Delivery Network, CDN)以及循环DNS (Round-robin DNS)等技术的使用, 使得一些正常的网络服务也有类似的特点。

本文利用Passive DNS方法记录域名访问的信息, 从域名的多样性、时间性、增长性、相关性等角度构建18个特征集, 基于随机森林算法建立速变域名识别模型, 并在真实的网络环境中进行验证。与FluxBuster[2]的对比验证表明, 本文的识别模型表现出更好的识别效果。本文提供相关的代码和数据集下载

① 相关的代码地址: https://github.com/whodewho/FluxEnder

1 相关研究

Passive DNS技术是由Weimer[3]在2005年提出的一种方案, 用来解决DNS系统PTR[4]反向查询能力不足的问题。通过将现有DNS业务的流量进行镜像或分光处理, 解析出查询和响应的数据并存入数据库, 然后建立正向和反向的查询索引。在ISP或校园网络的递归DNS服务器前部署Passive DNS系统, 可以获得详细的DNS查询记录, 并且不影响现有DNS服务器的运行性能。

Honeynet项目组2007年对FFSN进行了系统的介绍[1], 推动了FFSN的研究热潮。Holz等[5]对FFSN开展了试验性研究, 对比分析FFSN和CDN域名的差别。Passerini等[6]提出根据域名注册时间、域名注册商、域名A记录和域名TTL值等来检测FFSN。Huang等[7]提出基于地理位置和地理分布来检测FFSN。汪洋[8]选取A记录数、IP分散度、TTL值和域名创建时间4个特征构成检测向量, 分别采用神经网络和SVM进行速变域名(Fast-Flux Domain)检测, 是国内较早进行的FFSN研究工作。

Antonakakis等[9]的Notos系统通过计算域名的信誉值来判断域名是否为恶意, 其模型引入的特征包括域名字符串分析、恶意域名历史记录等信息。Bilge等[10]提出EXPOSURE系统, 利用域名的时间特征、IP分布、TTL以及域名字符串特征等构建15个特征集。Perdisci等[2]提出FluxBuster系统, 将域名的IP变迁情况引入特征集, 共9组13个特征, 采用聚类算法来识别速变域名。

2 特征选取

为了发现速变域名在DNS响应上的特征, 本文在取得校园网实际运行的DNS数据后, 在FluxBuster和EXPOSURE等系统的基础上, 提出如表 1所描述的18个特征, 其中14~18这5个相关性特征是本文首次提出。本文采用scikit-learn[11]中的随机森林算法[12-13]作为恶意域名的识别算法。此算法具有鲁棒性强、泛化误差会收敛、不存在过度拟合等优点。以下是各特征的具体描述。

表 1. 特征列表 Table 1. Feature list
分类 编号 特征 描述
时间性 1 min_ttl 最小TTL值
2 max ttl 最大TTL值
3 diff_ttl max_ttl-min_ttl, 域名活动期
多样性 4 ip_count 域名的IP数目
5 p16_entropy 按/16前缀熵值
6 subd_count 子域名个数
7 subd_len_entropy 子域名长度熵
增长性 8 p16_growth_1 1个周期内, 新增IP/16前缀的比
9 p16_growth_4 4个周期内, 新增IP/16前缀的比
10 p16_growth_8 8个周期内, 新增IP/16前缀的比
11 subd_growth_1 1个周期内, 新增子域名的比例
12 subd_growth_4 4个周期内, 新增子域名的比例
13 subd_growth_8 8个周期内, 新增子域名的比例
相关性 14 relevant_domain_count 与该域名相关的域名集合大小
15 unique_2ld_ratio 相关域名中, 不同2ld的比例
16 unique_ip_ratio 域名指向的非公共IP的比例
17 noshare_domain_ratio 具有非公共IP前缀的相关域名比例
18 max_dga_ratio IP指向的域名DGA比例的最大值

2.1 时间性特征

min_ttl, max_ttl和diff_ttl用来记录域名响应中TTL的最小值、最大值和差值。

2.2 多样性特征

ip_count用来记录域名解析出来的IP地址集的大小。

p16_entropy是衡量ip地址分散程度的特征。为了表示IP地址集的分散程度, 本文选取/16前缀来分析。假设IP地址集的集合为P, p(x)是IP的/16前缀xP中所占的比例, p(x)=count (x)/|P|, 则

$ {\rm{p}}16{\rm{\_entropy}} = \frac{{ - \mathop \sum \nolimits_x p(x) \cdot {{\log }_2}p(x)}}{{{{\log }_2}|P|}}。 $

subd_count和subd_length_entropy分别记录子域名的数量和子域名的长度熵。设某域所有子域名的集合为S, s是子域名的长度, p(x)=count (x)/|S|, 则有

$ {\rm{subd\_len\_entropy}} = \frac{{ - \mathop \sum \nolimits_s p(s) \cdot {{\log }_2}p(s)}}{{{{\log }_2}|S|}}。 $
2.3 增长性特征

p16_growth_n和subd_growth_n分别记录相对于前1, 4, 8个数据周期, 新增的IP/16前缀比例和新增的子域名比例。

Pm为数据周期内的IP/16前缀的集合, 定义公式如下:

$ {\rm{p}}16{\rm{\_growth\_n}} = \frac{{|{P_m} - \cup _{j = 1}^k{P_{m - j}}|}}{{|{p_m}|}}。 $

类似地, 子域名增长性公式如下:

$ {\rm{subd\_growth\_n}} = \frac{{|{S_m} - \cup _{j = 1}^kS_{_{m - j}}^r|}}{{|{S_m}|}}。 $

其中, Sm为子域名的集合。

2.4 相关性特征

本文认为, 同一个域名解析出来的多个IP之间是相关的; 类似地, 多个域名解析到同一个IP时, 这几个域名之间是相关的。特征relevant_ domain_count是相关域名的大小。如图 1所示, d1~d9是相关的, 故相关域名的数量是9。通常, CDN网站(如taobao.com)的一组IP地址会有多个域名指向它们, 则此特征的值比较大; 而速变域名的相关域名一般较少。

图 1. 相关域名 Figure 1. Relevant domain

unique_2ld_ratio指所有相关域名中不同2LD (域名的第二部分, 是域名的主要内容, 如www.baidu.com的2LD为baidu.com)的比例。

unique_ip_ratio用来描述相关域名之间的非公共IP比例, 如图 1中ip3是非公共IP, 其比例为1/4=25%。

由域名关联到域名后, 如果考虑不同域名之间的非共享IP/16前缀, noshare_domain_ratio定义为具有非共享前缀的相关域名比例。试验数据表明, 一些速变域名特征取值较高, 而正常域名(包括使用CDN和RRDNS的)特征大多为零。如图 2所示, 假设除ip3外, 其他ip都具有相同的IP/16前缀, 则d2为非共享域名, noshare_domain_ratio=0.25。

图 2. 非共享域名 Figure 2. Noshare domain

max_dga_ratio指通过域名生成算法(DGA)自动生成的域名所占的比例。通过DGA生成的一组域名往往会指向相同的IP。本文选取一个开源的识别DGA域名的工具[14]来计算所指向IP的域名中DGA域名的比例。

3 试验数据

本文的数据来源于北京大学校园网的真实运行数据。目前的部署情况是将校园网主要的三台递归DNS查询服务器的流量, 用端口镜像的方式转发到采集服务器。在采集服务器上运行PassiveDNS工具[15], 分析得到的DNS查询记录数据定时保存到文件中, 文件内容如图 3所示。为了保存长期的记录, 按照日期对日志进行分割, 保存在不同的文件中。

图 3. 日志格式 Figure 3. Log format

为了便于后期分析和查询, Passive DNS日志数据经过处理后, 保存在TokuMX数据库[16]中。TokuMX是MongoDB[17]的一个分支, 采用分形索引算法以及高效的压缩方案, 与传统的MongoDB相比, 具有更高的性能, 同时节约近90%的存储空间[16]。实际上, 我们也发现它的数据文件大小只有原始版本MongoDB的10%~20%, 并且写入和查询的性能更好。为了提高后期特征提取以及分析的效率, 我们将ip→domain和domain→ip的映射关系以及一些统计数据预先计算好, 并分别保存在不同的collection[17]中。

数据处理流程如图 4所示。

图 4. 流程图 Figure 4. Flow diagram

3.1 数据预处理

由于本文关注速变域名, 只有满足如下3个条件[2]的域名记录才会被分析计算, 并进入到机器学习步骤中:

$ \left\{ {\begin{array}{*{20}{l}} {\min \_{\rm{ttl}} \le {\theta _{{\rm{ttl}}}},}\\ {|R| \ge {\theta _R},}\\ {{\rm{div}}(R) \ge {\theta _{{\rm{div}}}},} \end{array}} \right. $

其中, min_ttl是最小ttl值, R是域名d指向的IP地址集合, |R|是地址集合的大小, div (R)描述IP/16前缀的散度。通过试验确定, 本文最终使用的各阈值如下: θttl=20000 s, θR=1, θdiv=0.1。

本文将观测到的部分特殊情况列入免于处理的列表中:域名污染(由于DNS劫持, 查询如face-book、twitter等域名返回的是伪造的同一组地址)和待售域名(运营商或域名注册经营者保留的域名, 可读性高)。

3.2 训练数据

本文的合法域名标识来自Alexa[18], 它提供过去3个月内全球范围内站点的流量排名。排名靠前的域名一般是正常域名(也包括使用CDN和RRDNS的域名)。FFSN相关域名标识取自表 2


实际情况中速变域名所占比例较少, 本文借鉴褚燕琴等[19]的主动查询的办法, 在校园网内部署主动查询节点, 定期向表 2中部分域名发起查询请求。由于采集的是校园网的递归DNS流量, 在校园网内部对这些恶意域名的主动查询数据就会被记录下来。表 2中的域名数据实际上还包括一些非速变域名的数据, 不过, 经过预处理后, 被留下的基本上可以认为是速变域名。

本文用于训练的数据是北京大学校园网2014-03-01到2014-03-17递归DNS服务器的数据, 采集到的不同域名数量如图 5所示。

图 5. 不同域名数量 Figure 5. Number of different domains

3.3 交叉验证

本文采用交叉验证(cross validation)对模型进行检验。图 6是对2014-04-14的数据进行10次交叉检验得到的准确率结果, 其中合法域名2109个, 恶意域名338个。可以看到每次分类的准确率都超过90%。具体到其中一次(选取20%的标识数据作为验证集, 其中合法域名有437个, 恶意域名有53个), 正确识别的TP (恶意域名被识别成恶意域名)和TN (合法域名被识别成合法域名)分别为90.6%和94.5%, 错误识别的结果FN (恶意域名被识别为合法域名)为9.4%, FP (合法域名被当成了恶意域名)为5.5%。

图 6. 交叉验证 Figure 6. Cross validation

可以将多次交叉验证的结果取平均值作为准确率。图 7是2014-04-02到2014-04-25期间的数据集进行10次交叉验证取平均的结果, 可以看到恶意域名被正确识别的比例基本上都超过95%, 合法域名的正确识别率也基本上都在80%以上。

图 7. 正确识别的比率 Figure 7. Correct classification rate

3.4 对比试验数据

本文选择FluxBuster作为对比, 它提供源代码下载[20]。将本文使用的数据集转换成FluxBuster可以识别的格式, 并进行重新训练和聚类检测, FluxBuster所发现的2014-04-02至2014-04-25期间的恶意域名数量如图 8所示。具体地, 这段时间FluxBuster标记为速变域名簇的2LD只有两个: weminemnc.com和gccdn.net。经过人工验证, 这两个域名簇里的域名实际都不是速变域名(前者是bitcoin的dns-seed[21], 后者是CDN域名)。

图 8. FluxBuster识别出的恶意域名 Figure 8. Malware domain identified by FluxBuster

分析原因, 除在特征个数、模型参数以及算法选择等方面的差异外, FluxBuster与本文的最大区别在于对相关性特征的使用上。FluxBuster没有直接包括相关性特征, 而是把不同域名的IP地址集的重叠程度作为聚类依据, 对聚类后的域名簇判断是否为速变网络。近期的研究发现速变域名已经出现一些新的特点[22], 使得很多原来的检测特征不再有效, 但速变域名之间却有了更多的相关性。本文提出的14~18这5个相关性特征有助于从相关性去识别速变域名, 故本文方法取得更好的效果。

4 结论和展望

本文利用Passive DNS方法采集域名信息, 构建识别速变网络的18个特征集, 用随机森林算法建立了相应的识别模型。在真实的网络运行数据集上验证了模型的有效性, 并与开源工具进行对比。试验表明, 本文提出的速变域名识别方法识别正确率高, 取得比FluxBuster更好的识别效果。

本文的局限性在于采集到的速变域名数据集较小, 因此我们只能选取alexa正常域名的一小部分来做正向标签, 这就使得整个训练集规模较小, 对模型精度有影响。另一方面, 模型的部分特征计算量较大, 有待进一步改进。

参考文献
[1] Riden J. Know your enemy: fast-flux service net-works[EB/OL]. (2008-08-16)[2015-05-01]. http://www.honeynet.org/papers/ff
[2] Perdisci R, Corona I, Giacinto G. Early detection of malicious flux networks via large-scale passive DNS traffic analysis. IEEE Transactions on Dependable and Secure Computing , 2012, 9 (5) : 714–726 .
[3] Weimer F. Passive DNS replication // FIRST Conference on Computer Security Incident. Singa-pore, 2005: 1-13
[4] Mockapetris P V. Domain names, concepts and facilities[EB/OL]. (1987)[2015-03-01]. http://tools.ietf.org/html/rfc1034
[5] Holz T, Gorecki C, Rieck K, et al. Measuring and detecting fast-flux service networks // NDSS. San Diego, 2008: 487-492
[6] Passerini E, Paleari R, Martignoni L, et al. Fluxor: detecting and monitoring fast-flux service networks // Detection of Intrusions and Malware, and Vulnera-bility Assessment. Berlin: Springer, 2008: 186-206 http://link.springer.com/chapter/10.1007/978-3-540-70542-0_10
[7] Huang S Y, Mao C H, Lee H M. Fast-flux service network detection based on spatial snapshot mecha-nism for delay-free detection // Proceedings of the 5th ACM Symposium on Information, Computer and Communications Security. Beijing, 2010: 101-111 http://dl.acm.org/citation.cfm?id=1755702
[8] 汪洋. Fast-flux服务网络检测方法研究[D].武汉:华中科技大学, 2009 http://cdmd.cnki.com.cn/Article/CDMD-10487-2010212536.htm
[9] Antonakakis M, Perdisci R, Dagon D, et al. Building a dynamic reputation system for DNS // USENIX Security Symposium. Washington DC, 2010: 273-290
[10] Bilge L, Kirda E, Kruegel C, et al. EXPOSURE: finding malicious domains using passive DNS analysis // NDSS. San Diego, 2011: 1-5
[11] Pedregosa F, Varoquaux G, Gramfort A, et al. Scikit-learn: machine learning in Python. The Journal of Machine Learning Research , 2011, 12 : 2825–2830 .
[12] Ho T K. Random decision forests // Proceedings of the Third International Conference on Document Analysis and Recognition. Montreal, 1995: 278-282
[13] Quinlan J R. C4.5: programs for machine learning. San Francisco: Morgan Kaufmann Publishers, 2014 http://www.sciepub.com/reference/9334
[14] Sconzo M. DGA detection [CP/OL]. (2014-01-21) [2015-05-11]. https://github.com/ClickSecurity/data_hacking/tree/master/dga_detection
[15] Edward B. A network sniffer that logs all DNS server replies for use in a passive DNS[CP/OL]. (2011-04-29)[2015-05-11]. https://github.com/gamelinux/passivedns
[16] Percona. High-performance MongoDB distribution[EB/OL]. (2006-01-01)[2015-05-11]. https://www.percona.com/software/mongo-database/percona-tokumx
[17] MongoDB. MongoDB for GIANt ideas[EB/OL]. (2009-08-20)[2015-12-11]. https://www.mongodb.org/
[18] Alexa Internet. Actionable analytics for the web [EB/OL]. (1996-04-01) [2015-12-11]. http://www.alexa.com/
[19] 褚燕琴, 应凌云, 冯登国, 等. 速变服务网络行为特征分析. 计算机系统应用 , 2013 (8) : 1–8.
[20] Perdisci R, Corona I, Giacinto G. Early detection of malicious flux networks via large-scale passive DNS traffic analysis[EB/OL]. (2012-10-20)[2015-12-11]. https://code.google.com/p/fluxbuster/
[21] Bitcoin Community. Satoshi client node discovery[EB/OL]. (2014-03-13)[2015-12-11]. https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery
[22] Xu W, Wang X, Xie H. New trends in FastFlux networks[EB/OL]. (2013-12-04)[2016-04-07]. https://media.blackhat.com/us-13/US-13-Xu-New-Trends-in-FastFlux-Networks-WP.pdf
[23] 陈恺.基于Passive DNS的恶意域名识别研究[D].北京:北京大学, 2014