DeepDGA:基于生成对抗网络的DGA生成与检测

基于DeepDGA: Adversarially-Tuned Domain Generation and Detection
复现(Python):GitHub地址

研究背景

由DGA引发的一系列…
DeepDGA:基于生成对抗网络的DGA生成与检测_第1张图片

  • DGA是一种逃避域名黑名单检测的技术手段
  • DGA接受种子输入并生成大量伪随机域名
  • 利用其中的一部分注册为C&C服务器域名(称为恶意域名或者DGA域名)
  • 僵尸网络和恶意软件会迭代生成的域名,直到找到一个已注册的域名,与该域名对应的C2建立连接
  • 非对称攻击:防御者必须知道所有可能的域名黑名单

Example:Cryptolocker
DeepDGA:基于生成对抗网络的DGA生成与检测_第2张图片
这是一个DGA域名生成算法。

不同算法的字符分布
DeepDGA:基于生成对抗网络的DGA生成与检测_第3张图片

首先,Alexa是真实数据集(全球网络排名)。

  • Cryptolocker和ramnit在相同的范围内几乎是均匀的(单个种子的计算)
  • Suppobox连接英文字典中的随机单词,从而反映了Alexa Top 1M的分布 以前的DGA检测模型更加难以正确分类
  • 本文的目标是构建一个基于字符的生成器,模仿Alexa域名的分布

相关框架

自编码器

它是一个数据压缩算法。模型由编码器、译码器和损失函数组成。

  • 编码器:将输入转换为低维嵌入(有损压缩)
  • 解码器:重构编码器的原始输入(解压)
  • 目标:最小化重建原始输出和输入之间的失真
  • 特点:容易训练,不需要标签(无监督)

生成对抗网络

它是两个模型之间的对抗。

  • 生成器:基于真实数据分布的样本创建合成数据
  • 判别器:接收样本,必须确定它是一个合成的数据样本还是真实的数据样本
  • 目标:找到一个平衡,类似于纳什均衡模型(两个模型很难再因为互相对抗有所进步)
  • 特点:难以训练,无监督

架构

回顾一下论文中实现的自编码器以及生成对抗网络的架构。

自编码器

DeepDGA:基于生成对抗网络的DGA生成与检测_第4张图片

左图:自编码器中的编码器

目标:学习正确的Alexa域名表示。

  • 编码器架构取自[Kim et al, 2015],在字符级语言建模中非常有用
  • 嵌入学习每个有效域名字符的线性映射(20维空间)
  • 卷积核用来捕捉字符组合(二 /三元语法)
  • Max-pooling中:over-time & over-filter
  • Highway network -> LSTM

复现流程
首先,我们先对数据进行处理(dga_reader.py). 接受输入时,每行是一个域名。接受输入后,我们获取到了DGA域名的最大长度为actual_max_word_length(为了方便之后的说明,这里我们假设获取到的DGA域名的最大长度为60)。调用以下函数:

DeepDGA:基于生成对抗网络的DGA生成与检测_第5张图片
这个函数

右图:自编码器中的解码器

  • 目标:学习正确的Alexa域名表示。
  • 解码器:与编码器相反,去掉maxpool这一步
  • 重复进行域名嵌入最大长度域名长度(时间步长)
  • 序列传递:LSTM-> Highway Network -> 卷积过滤器
  • 最后一层上的Softmax激活会在域名字符上产生多项分布
  • 采样以生成在输入域名后建模的新域名

你可能感兴趣的:(机器学习,网络安全,论文)