DGA特征挖掘-阿里云开发者社区

开发者社区> 桃子红了呐> 正文

DGA特征挖掘

简介:
+关注继续查看

摘自:https://paper.seebug.org/papers/Archive/drops2/%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%86%E5%88%AB%E9%9A%8F%E6%9C%BA%E7%94%9F%E6%88%90%E7%9A%84C%26amp%3BC%E5%9F%9F%E5%90%8D.html

0x00 前言


本文用识别由域名生成算法Domain Generation Algorithm: DGA生成的C&C域名作为例子,目的是给白帽安全专家们介绍一下机器学习在安全领域的应用,演示一下机器学习模型的一般流程。机器的力量可以用来辅助白帽专家们更有效率的工作。

本文用到的演示数据集和python演示代码请参见 https://github.com/phunterlau/dga_classifier 关于编码和行文风格过于仓促的问题,请不要在意这些细节,如果有相关问题可以微博上@phunter_lau,大家互相交流进步。

0x02 数据收集


分类的任务需要告诉机器他用来学习的正例(positive samples)和反例(negative samples),在这里正例就是C&C域名,反例就是正常的合法域名。

正例和反例的涵盖范围和具体问题有关,具体到本文的例子,我选择Conficker(ABC三种混合)当作正例,Alexa前10万当作反例。Conficker的算法早在多年前公开。

0x03 特征工程


这几乎是整个文章最有值得读的部分。如果能把人类的经验用数量化表达给机器,机器就能学习到人类的经验,而特征(feature)就是人类经验的数量化。特征工程是个反复循环的过程,一开始我们找到基线特征,用分类算法计算并评价结果,如果结果不能达到预期,再回头来加入新的特征帮助更好的分类。

基本特征:随机性和熵

Shannon熵可以很好的判别fryjntzfvti.bizgoogle.com/qq.com之间的区别,因为前者用了很多不重复字母而qq.com的重复字幕比较多。但是很多合法域名的熵值和C&C域名之间的并非是绝对差距,比如baidu.com也是五个不重复的字母,这单个特征不足以最终决策,我们还一些其他高级的特征。

高级特征:还有什么能表达随机性呢

合法域名一般比较好念出来,C&C域名不好念

思考一下合法域名和C&C域名的目的,就可以想到:合法域名为了让人类记住会选一些好念(pronounceable)的域名,比如 google yahoo baidu等等有元音字母之类好念的,而C&C域名为了随机性就不太好念,比如fryjntzfvti.biz。域名里元音字母占的比重可以是个很好的特征。

“好念“这个概念也可以有另外一个高级一些的特征,叫做gibberish detection,判断一个字符串是不是能用人类的语言念出来,比如google就不是一个英文单词但是朗朗上口。这背后是一个基于马尔可夫链的模型,具体细节可以参见 https://github.com/rrenaud/Gibberish-Detector

连续 vs 分散

通过进一步观察我们可以发现,C&C域名的随机性也表现在连续出现的字母和数字上。一般随机生成的域名都不会出现大段连续的数字或者连续出现相同的字母。同时因为英文字母分布里辅音字母远多于元音字母,C&C更可能连续反复出现辅音字母,而合法域名为了好念多是元音辅音交替。这些都是不容易想到但是容易计算的特征,代码并不复杂。

还有什么?n-gram 的平均排名!

这是我个人认为比较巧妙的想法。

对于字符串文本的机器学习,n-gram (unigram(单字)bigram(相邻双字)trigram(相邻三字))常常能提供重要的特征。举例来说,fryjntzfvti.biz的域名的bigram分解是以下12个:

^f,fr,ry,yj,jn,nt,tz,zf,fv,vt,ti,i$

这里^$代表字符串的开头和结尾。观众朋友可以自行计算trigram当作练习。bigram/trigram本身出现的频率也可以当作特征,但是对这个问题来说,bigram本身可能有 (26+2)^2=784种组合,trigram就有21952种组合,特征向量的长度太长而我们的数据约有25万组,如果把他们本身当作特征,模型训练的速度很慢。(比较熟悉机器学习的观众朋友可能会提示用PCA等降维方法,我实际实验表明降维到20维左右效果也不错,在此不当作本文内容,请有兴趣的观众朋友自己实验一下。)

C&C域名的随机算法产生的bigram和trigram比较分散,而合法域名喜欢用比较好念好见的组合。如果把正例反例出现的bigram按照出现频率进行排序会发现,合法域名的bigram在频率排序里的位置比较靠前,而随机C&C域名产生的比较分散的bigram/trigram基本上频率都很低,所以bigram/trigram的平均排名也可以很好的区分C&C和合法域名。

扯一些额外内容。n-gram的分析方法也常用于malware的代码和二进制码的自动分析,比如ASM里面每个指令当作一个gram,指令的组合可能对应于一些可疑行为。靠人工找这些可能可疑行为对应的指令组合十分麻烦,但是机器就适合做这些繁琐的事情啊,只要把所有n-gram扔给机器做分类,最后机器会给出特定组合的权重,就能找到这些对应的指令对了。二进制代码的分析也有类似方法,参见最近Kaggle的malware分类比赛的获胜报告(参考文献3)。有白帽专家可能会问,有些可疑指令对可能距离比较远怎么办?这种情况就是skip-gram分析,建议谷歌搜索相关关键词,这里就不多说撑篇幅了。

究竟还能再挖出来什么特征呢?

特征工程就好像Taylor Swift的胸一样,你只要需要,用力挤努力挤还是有的。如果按照反例Alexa前10万名训练隐含马尔可夫链,计算一下从A_iA_i+1转换的概率。这个转换概率的分布对于正例有一些区别,也可以用来帮助区分。具体关于马尔可夫链相关知识请参见http://en.wikipedia.org/wiki/Markov_chain (解释起来背后的原因篇幅比较大,就只贴一下这个特征的分布图,但是不要害怕,看示例代码里的实现其实很简单,只是计算转移矩阵而已)

markov example

领域特征:安全专家的领域知识

对于C&C域名,不只是随机性,其他白帽专家才知道的领域知识也会提供重要的特征。

比如域名所在的ccTLD可以当作特征。我们知道多数情况下.com的域名申请又贵又要审核,所以现在很多C&C不会选择.com,反而会选一些审核不严的比如.biz .info .ru .ws以及最近爆发的.xyz之类的ccTLD都是C&C重灾区。中国的白帽专家也可能知道.cn现在申请都得备案,所以C&C也不太可能用.cn的根域名当作C&C。值得提醒的是,这些情况并非100%确定,比如C&C可能找到一个cn域名的下级域名当C&C而主域名已备案,这些需要机器综合考虑其他特征来判断。ccTLD这样的类别特征(categorial feature)在使用的时候需要编码变成 is_biz=0/1, is_ws=0/1这样展开的0/1向量,这个方法叫做OneHotEncoder。实际的模型结果也显示出来.biz .info之类的ccTLD对C&C域名的判断占的重要性比重很大。

还有一些看似比较无聊但是很有价值的知识:比如C&C域名现在越来越长,因为短的域名都被抢光了,所以域名长度也可以是重要的特征。更多这些特征需要安全专家加入自己的领域知识来得到,专家的领域知识在机器学习里的重要程度几乎是第一位的。

 

见原文。。。
















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7640055.html,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何为部署到 SAP BTP 平台上的 Node.js 应用提供Authorization 和 Trust 管理 - 权限管控
如何为部署到 SAP BTP 平台上的 Node.js 应用提供Authorization 和 Trust 管理 - 权限管控
2 0
达摩院首次将Pure Transformer模型引入目标重识别,论文入选ICCV 2021
阿里达摩院的研究团队首次成功将pure transformer架构应用于目标重识别(ReID)任务,提出了TransReID框架,在6个数据集上都取得了超过SOTA CNN方法的性能。
3 0
☀️机器学习入门☀️(一) 机器学习简介 | 附加小练习
目录 1. 机器学习是什么 2. 机器学习、深度学习和人工智能的区别与联系 3. 机器学习的应用 4. 机器学习分类 4.1 监督学习 4.2 无监督学习 4.3 半监督学习 4.4 强化学习 5. 小练习 5.1 第一题 5.2 第二题 5.3 第三题
5 0
「百图生科」再添虎将,国际机器学习大牛宋乐加入李彦宏生物计算军团
近日,百图生科首席 AI 科学家宋乐接受了机器之心专访。作为世界知名机器学习专家,他领导着百图生科 AI 算法团队,为独具特色的生物计算引擎研发提供技术动力。他眼中的生物计算未来,在于「高通量干湿实验闭环」。
3 0
☀️机器学习入门☀️(四) PCA 和 LDA 降维算法 | 附加小练习(文末送书)
目录 1. PCA 主成分分析 1.1 算法简介 1.2 实现思路 1.3 公式推算 1.3.1 PCA顺序排序 1.3.2 样本协方差矩阵 1.4 小练习 2. LDA 线性判断分析 2.1 算法简介 2.2 实现思路 2.3 小练习 3. 福利送书 最后
3 0
☀️机器学习实战☀️基于 YOLO网络 的人脸识别 |(文末送机器学习书籍~)
目录 一、 项目进展 1.1 第一阶段 1.2 第二阶段 1.3 第三阶段 1.4 第四阶段 二、 项目难点 三、解决思路 3.1 问题一 3.1.1 算法方面 3.2 问题二 3.2.1 数据集 3.1.2 YOLOv3 To YOLOv5 四、网络介绍 4.1 YOLOv3 4.1.1 主干网络 Darknet-53 4.1.2 训练结果 4.2 YOLOv5 4.2.1 输入端 4.2.2 Backbone主干网络 4.2.3 Neck 4.2.4 结果演示 4.3 YOLOv5 + MoblieNetV3 4.3.1 深度可分离卷积 五、代码&参考文献 六、福利送书 最后
5 0
专访唐杰:万亿参数大模型只是一个开始
智源悟道团队不仅会在「大」这条路上走下去,还将对构建「神经-符号结合模型」进行更深入和底层的探索。
3 0
华为「尽全力」发布了P50系列:原生搭载鸿蒙,5G改4G
P50 是一款迟到四个月的旗舰,华为为了让它实现一直以来的水准可谓竭尽所能。
4 0
4261
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载