1 背景介绍

1.1 DGA 域名简介

如今,互联网上的很多恶意攻击行为开始借助由域名生成算法生成的域名来抵抗安防软件的检测。这些域名生成算法通常会借助一组随机种子,持续不断的生成大量随机域名。使用这些 DGA 域名进行攻击的流程如图 1.1 所示。

图 1.1 DGA 类攻击流程

如图 1.1 ,当某台主机或者服务器被恶意行为攻击成功之后,攻击者就会在被攻击者内部嵌入一段恶意代码。这段恶意代码会使用某种域名生成算法不断的生成 DGA 域名,并且利用被攻击者的主机去访问这些域名。同时,攻击者也会使用相同的算法生成大量 DGA 域名,并从中选取若干个进行注册。这样一来,当被攻击者成功访问某个 DGA 域名时,就说明这个域名是由攻击者注册的,比如图 1.1 中的 ASDFG.COM 这条域名。检测到这种被注册的 DGA 域名之后,嵌入到被攻击者主机内的恶意代码就会通过这条 DGA 域名查询得到的 IP 地址,与攻击者使用的 C2 服务器进行交互,使得攻击者能够持续的控制被攻击的主机并窃取数据。

1.2 传统的检测方法

DGA 域名与正常的域名相比有很多区别,传统的研究方向主要分为两种,一是对域名的字符串特征进行分析,一是对 DNS 流量上进行分析。

域名字符串分析是一种实时检测的方式,它不依赖与任何的上下文信息,只是单纯的根据域名字符串进行分析,是一种比较难的检测方式。传统的方法主要还是需要人工去设计特征,然后将这些特征输入机器学习模型。常用的字符串特征进行了汇总,包括字符串长度、元音字母与辅音字母比例、数字字符比例、字符的信息熵、字符的词频分布以及有意义的字符串占域名字符串总长度的比值,然后使用随机森林模型进行训练和判别。

这种方式存在两个比较严重的问题。首先,人工设计的特征很容易被规避,黑客很容易设计一类新的 DGA 家族规避掉已有的检测特征。其次,人工设计特征的方式非常费时费力,当有新的 DGA 家族产生时,就必须重新设计一套相应的特征。这些问题都极大的限制了域名字符串分析方式的实用性。

在 DNS 流量方面,第一步通常是对比正常域名的 DNS 流量和 DGA 域名 DNS 流量,从中找出具有区分度的特征,常见的特征有域名的访问频率、访问规律性、共享 IP、平均 TTL、NXDomain 流量等。提出特征之后,便使用随机森林、聚类等算法去训练模型,用训练好的模型去检测恶意域名。

但是,这种方法常常需要去监控整个网络,通过一段时间的信息收集整理之后才能获取到域名的各项特征,进而才能检测一个域名是否是恶意的。这种方式不仅难以实现,而且无法满足实时性的需求,无法在恶意域名出现的时刻就对其进行检测与拦截,也就无法有效的抑制恶意攻击的产生。

1.3 最新进展

2016 年,论文 Predicting domain generation algorithms with long short-term memory networks 首次实现了使用深度学习方法进行 DGA 域名检测。在数据处理方面,该论文参考自然语言处理方面的研究内容,将域名字符串转换成了词向量。在模型构建方面,该论文使用了 RNN 的变种 LSTM 模型,该模型对于处理序列输入问题有很好的效果。

使用深度学习进行 DGA 域名检测不仅节省了人工设计特征所需要的开销,同时能够对域名进行实时检测,并且在准确率和泛化性上有了质的提升,对网络安全有着重大的促进意义。

2 数据与模型

2.1 数据来源

在本实验中,正常域名来自于 Alexa 网站的域名点击排行,总共收集了 100 万个正常域名。 DGA 域名则来自于 360 网络实验室和 osint 公开的 DGA 域名种子网站,它们都属于公开的数据源。其中,从 360 网络实验室收集了 34 类不同家族的 DGA 域名,总共 136 万个 DGA 域名。从 osint 网站上收集了 44 类不同家族的 DGA 域名,总共 144 万个 DGA 域名。

2.2 数据集构造

为了增加实验结果的可信度,本实验从两个不同的来源收集了 DGA 域名。因此,也将构造两个数据集用于实验评估。

其中,第一个数据集由 100 万个正常域名加上来自于 360 网络实验室收集的 34 类不同家族的 136 万个 DGA 域名构成,第二个数据集由 100 万个正常域名加上来自于 osint 公开的 DGA 域名种子网站收集的 44 类不同家族的 144 万个 DGA 域名构成。

对于每一个数据集,为了使数据分布的更均匀些,本论文都从其中的正常域名以及每一类 DGA 家族域名中各随机抽取 80% 的域名样本作为训练集,剩下 20% 的域名样本作为测试集,总共构造了两组训练集与测试集,训练集的组成如表 2.1 所示。

表 2.1 数据集构成

训练集 测试集
正常域名 DGA 域名 DGA 种类 正常域名 DGA 域名 DGA 种类
360 数据集 800,000 个 1090,000 个 34 类 200,000 个 270,000 个 34 类
osint 数据集 800,000 个 1150,000 个 44 类 200,000 个 290,000 个 44 类

2.3 数据处理

在数据处理阶段,本实验首先根据单词列表将域名字符串转换成了一维整数矩阵,这种简单的线性转换并不能很好的体现出原始域名字符串中字符之间的关联信息,这也是自然语言处理中最基本的问题之一。因此,本实验参考自然语言处理方面的处理方法,对一维矩阵进一步处理,将其转换成携带更多原始数据信息的二维词向量,最终再输入到模型中。

为了降低实验的复杂度,提高可复现性,在生成词向量的过程中,本实验没有单独设计并训练一个语言模型,然后从中获取生成词向量所需要的参数矩阵,而是借助了 Keras 库中的 Embedding 层来生成词向量。

Embedding 层的数据处理的流程如图 2.1 所示。

图 2.1 Embedding 层数据处理流程

为了方便显示,图 2.1 只简单的展示了一个 3 维整数数组转换成(3,7)的二维词向量的流程。

2.4 模型设计

在论文 Predicting domain generation algorithms with long short-term memory networks 中使用的 LSTM 网络的基础上,本实验加入最近比较流行的 Attenton 机制,以提高模型的性能。

原始 LSTM 网络的结构如图 2.2 所示,要由 LSTM 层、Dropout 层、全连接层和激活层构成。

图 2.2 LSTM 网络结构

加入 Attention 机制后的网络结构如图 2.3 所示,其中 Attention 模块是权重计算模块,该模块接收 LSTM 层输出的二维特征矩阵作为输入,在模块内部经过学习计算产生一个权重矩阵,然后将输入的特征矩阵与计算得到的权重矩阵融合后输出。经过这一系列的运算处理,该模块的输出中不仅包含了词向量的特征信息,同时也包含了各个维度特征的权重信息,为后续分类模块提供了更多的参考信息。

图 2.3 LSTM+Attention 网络结构

3 代码展示

本实验实验的是 Keras 框架,每部分的代码功能见注释。

3.1 Attention 模块代码

3.2 整体模型代码

3.3 训练与预测部分代码

4 实验结果

本实验分别在两个数据集上进行多次重复训练和测试,并统计测试结果的平均值,如表 4.1 所示。

表 4.1 测试结果

| 数据集 | Precision | Recall |
score | 误报率 | 漏报率 |
| ------------ | --------- | ------ | ----------------------------- | ------ | ------ |
| 360 数据集 | 0.9891 | 0.9918 | 0.9905 | 0.0148 | 0.0082 |
| osint 数据集 | 0.9940 | 0.9915 | 0.9928 | 0.0086 | 0.0085 |

基于Python深度学习的DGA域名检测相关推荐

  1. 基于Python深度学习的文字检测识别系统

    摘要 文字是人类交流信息的重要工具,在科技和网络不断发展的今天,文本的方式或者说载体发生了很大的变化,文字不再只停留在书面,更以标识牌,横幅,广告牌等等方式出现我们的生活中,或者说,它们是一张张图片中 ...

  2. 基于Python+深度学习+神经网络实现高度可用的生活垃圾分类机器人程序

    设计一个基于深度学习的生活垃圾分类机器人软件系统,针对现实社会中产生的垃圾照片进行自动识别分类,对不同类别的垃圾,干垃圾,湿垃圾,可回收垃圾,有害垃圾等进行分类统计处理,减轻人工针对垃圾分类的工作量, ...

  3. 基于Python深度学习的人脸识别考勤(戴口罩、多人)

    该"基于深度识别的人脸识别线下课堂考勤"系统有"人脸识别考勤","考勤信息统计"等主要功能组成,其中戴口罩识别及多人识别均可成功实现.涉及& ...

  4. 基于kera-yolo3深度学习框架的目标检测

    1.在github官网上面下载kera-yolo3框架,网址为:https://github.com/qqwweee/keras-yolo3(注意:github网站不稳定时可到中国网站gitee官网去 ...

  5. 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割

    随着无人机自动化能力的逐步升级,它被广泛的应用于多种领域,如航拍.农业.植保.灾难评估.救援.测绘.电力巡检等.但同时由于无人机飞行高度低.获取目标类型多.以及环境复杂等因素使得对无人机获取的数据处理 ...

  6. 基于Matlab深度学习Yolov4-tiny的交通标志识别道路标志识别检测

    交通标志检测是辅助驾驶.自动驾驶系统中的重要组成部分,针对交通标志检测任务中复杂环境下的小目标检测精度低的问题,提出一种基于YOLOv4-tiny的交通标志检测方法. 基于Matlab深度学习的道路标 ...

  7. 基于AI深度学习的缺陷检测系统

    1. 基于AI深度学习的工业缺陷检测现状 在工业生产中,由于生产和运输环境中的不可控因素,很容易产生划痕.压伤.擦挂等缺陷.而其中的缺陷大部分都极其微小,甚至是肉眼难以识别,这些缺陷所造成的坏品率极大 ...

  8. Python深度学习十大核心算法!

    深度学习已经成为了一种热门的技术,它的应用领域正在不断扩大.在深度学习中,有一些核心的算法是非常重要的,这些算法为深度学习的应用提供了强大的基础.在本文中,我们将介绍基于Python深度学习的十大核心 ...

  9. python数据库开发 dga_DGA detection based on Deep Learning (CNN and GRU) (基于深度学习的DGA检测)...

    DGA-detection DGA detection based on Deep Learning (CNN and GRU) (基于深度学习的DGA检测) This project impleme ...

  10. 基于深度学习的高精度苹果检测识别系统(Python+Pyside6)

    摘要:基于深度学习的高精度苹果检测识别系统可用于日常生活中来检测与定位苹果目标,利用深度学习算法可实现图片.视频.摄像头等方式的苹果目标检测识别,另外支持结果可视化与图片或视频检测结果的导出.本系统采 ...

最新文章

  1. bmp文件头_「正点原子FPGA连载」第十九章SD卡读BMP图片LCD显示
  2. 假设检验怎么做?这次把方法+Python代码一并教给你
  3. Find Code for Research Papers
  4. response code 404 500
  5. php发送get、post请求获取内容的几种方法
  6. iOS-Xcode代码统计
  7. 在WPF中显示动态GIF(转)
  8. SAP Cloud for Customer跨component的跳转
  9. mybatis不等于某个字符串的值_MyBatis 的 4 个妙用,别再踩坑了!
  10. Vue学习笔记:使用CLI构建Vue项目
  11. STM32板子电源绘制原理
  12. spring boot 整合 mybatis
  13. 转行算法,90%的人还没开始就错在了这1步
  14. Oracle Alert sid log 位置问题
  15. 前端笔试中两道与节点有关的算法题
  16. 基于Servlet的学生管理系统
  17. 2016手机数据恢复软件哪个好?
  18. element表格序号排序
  19. p2psear正在连接服务器,P2PSearcher无法连接到网络,也无法连接到服务器
  20. java登陆注册 mysql_Java+mysql用户注册登录功能

热门文章

  1. 有哪些管理类书籍值得推荐?
  2. Java关于数字的正则校验
  3. 一年级课程表(4月2日-4月8日)
  4. linux添加静态ipv6路由,请问如何在CentOS7上配置已经静态路由好的IPv6地址块?
  5. kali下使用工具进行钓鱼网站的制作
  6. linux增加分区大小,新增硬盘扩容Linux下的分区大小
  7. wps画流程图交叉弧形_word流程图-WPS绘制流程图的正确打开方式,超级简单
  8. 深入解析J.U.C并发包(二)——AtomicInteger类
  9. contiki CC2530 CC2430例子描述
  10. Springboot2.2对put,detele方法的更改