本文提出了一种基于 CNN 和 BiGRU 的恶意域名检测方法 CNN-BiGRU-Focal。利用卷积神经网络(CNN)提取域名字符的局部上下文特征。利用双向门控循环单元网络(BiGRU)捕捉域名字符序列的时间序列特征。同时,引入改进的 Focal Loss 函数,专注于难以分类的样本,以解决数据不平衡问题。
模型描述
CNN
卷积神经网络(CNN)被设计用于高效提取恶意域名中的字符级局部上下文特征,通过使用不同大小的卷积核并行处理字符序列,每个卷积核负责捕捉不同粒度的特征,同时利用256个滤波器来增强特征的捕捉能力;模型采用一维卷积层,每次处理三个字符,并通过步幅为1的方式滑动以提取特征,显著提高了计算效率;为了增加非线性并减少过拟合,使用了ReLU激活函数处理卷积后的特征;此外,模型还引入了K-Max平均池化方法,它结合了最大池化和平均池化的优点,通过选取K个最大值并计算平均值来保留更多的特征信息,这种方法不仅减少了特征维度,还保留了原始特征的强度,确保了从样本中提取出最有效的特征。
BiGRU
GRU本身相比于LSTM具有更简单的结构,减少了模型复杂度,加快了训练速度,同时保持了与LSTM相近的效果。
更新门(zt)和重置门(rt)通过公式(4)和(5)控制信息的流动。更新门决定从前一个时间步保留多少信息到当前状态,而重置门则决定在更新当前状态时忽略多少旧状态信息。公式(6)和(7)描述了GRU单元如何结合更新门、重置门以及当前输入来计算当前的隐藏状态。
为了克服单向GRU仅能捕捉序列的单方向信息的局限,本文采用了双向GRU结构,它能够同时考虑序列的过去和未来信息。双向GRU由两个GRU子网络组成,一个处理正向序列,另一个处理反向序列。
处理方法
词嵌入层
将输入的域名字符通过one-hot编码转换为数值向量。然后通过词嵌入层将这些离散的向量映射为具有语义信息的密集向量。
特征提取
特征提取层采用 CNN 和 BiGRU 这两种深度学习模型,对于词嵌入层输出的域名矩阵进行自动的特征提取。
将CNN和BiGRU提取的特征向量进行融合,通常是通过拼接(concatenation)的方式。融合后的特征向量包含了字符级和时序级的信息,为分类提供了丰富的特征表示。
分类
针对恶意域名检测可以分为两大类,一类属于二分类任务,此时全连接层仅仅设置为一个节点,另一类属于多分类任务,此时的全连接层节点数设置为域名的家族种类数量。
使用改进的Focal Loss函数,该函数对难以分类的样本(即模型预测错误或置信度低的样本)赋予更高的权重。
通过这种方式,模型训练时更加关注那些难以识别的样本,从而提高整体的分类性能。
实验结果
[1]林梓宇,凌捷.基于CNN-BiGRU的恶意域名检测方法[J].计算机应用与软件,2024,41(06):336-341.