域名关联模型:让恶意软件自我暴露

域名关联模型:让恶意软件自我暴露

这次介绍我自己团队的一篇文章 “Domain Correlation: just let the malware beat itself” 。我在我的微博上写过简介,鉴于它是我最近自我感觉比较好的工作,我决定简单评论一下,并借此谈谈我对自动威胁发现这个方向的想法。

这篇文章介绍了我们对DNS查询数据建模,利用某些恶意软件的多个C&C会形成DNS查询序列的特点,通过模型计算让恶意软件行为通过聚类的方式自我暴露。这个工作的思路是这样的:

  1. 根据DNS查询数据,对所有的域名的查询序列做表示学习,通过最大化序列窗口内共现的概率将每个域名表示为一个空间向量,这样向量的内积即可表示为域名的关联打分。
  2. 利用恶意软件的域名多数为从未出现的新域名这一特性,取得在模型时间段内从未出现的新域名列表和他们的向量表示。
  3. 通过聚类的方法将高度关联的域名向量聚到同一类,并根据每一聚类的其他行为特征标定恶意软件类型,如不能标记,即列为可疑并根据业务需求做处理,比如推送到高危列表等做限流或者进一步研究。

接下来的理论讨论之前先上一张t-SNE对这些聚类生成的可视化截图,图中 NewGOZ 这个恶意软件DGA生成的域名被聚类方法自动找到,并高亮为浅紫色云团。原帖里连接到了Youtube视频,观众朋友如果可以连上的请选择至少720p 60fps观看保证最好的酷炫效果。

以上是领导喜欢看的可视化,而我们团队更加喜欢的是这个工作本身,其主要原因在于它符合我们对自动威胁发现的想法。

完成自动化威胁发现当中若干绊脚石的之一是特征的提取,现在很多工作在于人力的规则和一些人为定义的特征规则,好处是容易解释,但是坏处是挂一漏万并且还有很多规则其实并不对,只是大家碍于某神某牛某大的面子不好说。机器智能的可爱之处不仅在于给定特征规则可以训练模型,也在于给定规则它可以从数据里学习特征。2013年的word2vec这个工作以及其他的自然语言理解方向的表示学习给了我一些启发:用于自然语言理解的表示学习建立在“单词-文档“的二分图上,它通过单词序列的学习将单词的相似度表达为简单的向量内积而并不需要任何预先定义的知识,那么类似的想法放到DNS查询序列里就是“域名-客户端”的二分图,它就可以同样不需要预定义知识而学习到域名之间的关联。至于图的表示学习的知识,请参阅概率图模型相关书籍和论文。

自动化威胁发现绊脚石之二在于,模型应该减少人类在推断阶段的干预。模型的建立分为训练阶段(Training)和推断阶段(inference),训练模型阶段接收数据训练模型,推断阶段即接收数据并给出结果。比如利用“域名-客户端”的二分图学习域名之间的关联并聚类已经存在多个优秀的工作,比如之前这篇专栏提到的360 netlab团队关于DGA的工作,以及HP和Damballa团队基于图的置信传播方法等等,他们的训练阶段利用定义的函数标定图节点之间的权值,推断部分利用louvain算法或置信传播公式给出聚类结果。这些工作在推断阶段的参数需要研究人员调整,其中包括比例常数和分数阈值等,而这些参数并没有直接的物理意义,推断的时候还是摆脱不了人为干预实现自动化,简单说就是要跟着调。基于表示学习和聚类的工作把这些人为干预放在训练模型阶段:通过训练一个足够好的模型可以重复发现已知的恶意软件行为并排除已知非恶意行为来稳定系统参数,在模型推断过程中只需要极少参数和简单代数计算即可完成,这些推断过程里的参数可以长时间稳定有效,提高了模型自动化可用性。

自动化威胁发现绊脚石之三在于,模型应该尽可能普适,一模多用而不是一个问题一个模型跟着跑。这篇文章里谈到的通过聚类的自动发现只是一种方式,域名关联模型这个引擎在我们工作中给其他自动化分析系统提供关联情报,根据已知威胁推断未知威胁等等,套用到不同方向可以达到不同用途,有效复用了投入到模型上的工程资源,这在实际业务上有一定意义。

当然自动威胁发现这个方向有很多可以谈,这个工作里其他有意思的方面也因为篇幅和现在公司政策的原因不多赘述,其中包含可疑域名的初选方法,建立模型流程的一些工程挑战等,有机会再写一些文章分享谈谈。这篇简评只是谈谈这个工作的核心也就是我对自动威胁发现的一些想法,至于其他部分,还是那句话,从一个实验室想法到一个工业级可用的系统其中需要走很多路,大家共同加油。

题图来自于Cute Photogenic Kitten Free Stock Photo - Public Domain Pictures 遵循非商业使用原则。


大家好,这是“安全数据与机器学习”专栏的第六篇文章。这个专栏配合我们的小密圈/知识星球群组“安全数据与机器学习”和我们的blog专栏 Kakapo - 一个机器学习社区 ,给各位安全届的朋友提高锻炼数据建模和机器学习的知识。我们会不定期寻找一些优秀的文章,在这里写上摘要和导读,引导大家前去深入学习。如果想参与“安全数据与机器学习”的讨论,请下载“知识星球”app并搜索“安全数据与机器学习“或者点击 t.xiaomiquan.com/IIqZV7 接受邀请。

编辑于 2017-11-06 16:18