文章信息
- 周昌令, 陈恺, 公绪晓, 陈萍, 马皓
- 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
2. 北京大学信息科学技术学院, 北京 100871;
3. 北京大学计算机研究所, 北京 100871
2. School of Electronics Engineering and Computer Science, Peking University, Beijing 100871;
3. Institute of Computer Science & Technology of Peking University, Beijing 100871
目前, 速变服务网络(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 | 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前缀x在P中所占的比例, 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|}}。 $ |
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地址会有多个域名指向它们, 则此特征的值比较大; 而速变域名的相关域名一般较少。
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。
max_dga_ratio指通过域名生成算法(DGA)自动生成的域名所占的比例。通过DGA生成的一组域名往往会指向相同的IP。本文选取一个开源的识别DGA域名的工具[14]来计算所指向IP的域名中DGA域名的比例。
3 试验数据本文的数据来源于北京大学校园网的真实运行数据。目前的部署情况是将校园网主要的三台递归DNS查询服务器的流量, 用端口镜像的方式转发到采集服务器。在采集服务器上运行PassiveDNS工具[15], 分析得到的DNS查询记录数据定时保存到文件中, 文件内容如图 3所示。为了保存长期的记录, 按照日期对日志进行分割, 保存在不同的文件中。
为了便于后期分析和查询, Passive DNS日志数据经过处理后, 保存在TokuMX数据库[16]中。TokuMX是MongoDB[17]的一个分支, 采用分形索引算法以及高效的压缩方案, 与传统的MongoDB相比, 具有更高的性能, 同时节约近90%的存储空间[16]。实际上, 我们也发现它的数据文件大小只有原始版本MongoDB的10%~20%, 并且写入和查询的性能更好。为了提高后期特征提取以及分析的效率, 我们将ip→domain和domain→ip的映射关系以及一些统计数据预先计算好, 并分别保存在不同的collection[17]中。
数据处理流程如图 4所示。
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所示。
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%。
可以将多次交叉验证的结果取平均值作为准确率。图 7是2014-04-02到2014-04-25期间的数据集进行10次交叉验证取平均的结果, 可以看到恶意域名被正确识别的比例基本上都超过95%, 合法域名的正确识别率也基本上都在80%以上。
3.4 对比试验数据
本文选择FluxBuster作为对比, 它提供源代码下载[20]。将本文使用的数据集转换成FluxBuster可以识别的格式, 并进行重新训练和聚类检测, FluxBuster所发现的2014-04-02至2014-04-25期间的恶意域名数量如图 8所示。具体地, 这段时间FluxBuster标记为速变域名簇的2LD只有两个: weminemnc.com和gccdn.net。经过人工验证, 这两个域名簇里的域名实际都不是速变域名(前者是bitcoin的dns-seed[21], 后者是CDN域名)。
分析原因, 除在特征个数、模型参数以及算法选择等方面的差异外, 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 |