有些Botnet在进行c2通信时会使用DGA算法生成大量随机的域名,通过少量域名维持与控制服务器的通信。生成的随机域名容易被检测随机性的算法所识别,通常的对抗方法是bot内置一个很大的单词列表,从单词列表中抽取单词并随机组合。本文尝试使用生成对抗网络,训练一个生成器,目标是使生成器生成的域名不具备随机性,更接近人类起域名的习惯,达到以假乱真的效果。但这是一个失败的实验,失败的原因我后文会进行分析。
最近看到DNS专家Antonakakis教授等发表的论文(参考文献1)和360netlab分享的PPT(参考文献2),两者尝试从运营商DNS流量中检测DGA域名,进而发现僵尸网络。恰好我们这里有自己企业内部的DNS流量,遂吸取两篇文章中方法的优点,在我们自己大数据平台上搞了一把。
最近腾出时间重新搞一下这个算法,对数据集、模型参数做了简单的优化,对不同算法在GPU/CPU上的性能进行了对比,并部署在生产环境实际测试。另外,@cdxy使用SVM进行分类获得了更高的性能,但具有很低的泛化能力,本文把这个算法放到这里一并讨论,原文链接:https://www.cdxy.me/?p=773。
众所周知,深度学习在计算机视觉、自然语言处理、人工智能等领域取得了极大的进展,在安全领域也开始崭露头角走向了实际应用。本文中进行的实验主要以文本分类的方法,使用深度学习检测XSS攻击,由于本人是初学者,难免对算法本身的理解不够确切,所以本文尽量使用通俗简单的方式介绍算法,不会过多的讲解细节,以免误导大家。
如何在网络安全领域利用数据科学解决安全问题一直是一个火热的话题,讨论算法和实现的文章也不少。前段时间看到楚安的文章《数据科学在Web威胁感知中的应用》,其中提到如何用隐马尔可夫模型(HMM)建立web参数模型,检测注入类的web攻击。获益匪浅,随尝试用python实现该算法,并尝试在大数据环境下的部署应用。