恶意域名
恶意域名是指黑客在攻击过程中或者对目标网络实施控制时,使用dga算法生成的域名,这种域名通常硬编码在恶意软件中。我们在做流量分析时不仅要通过流量的指纹特征识别威胁,也可以通过检测是否解析了恶意域名来判断网络中是否存在肉鸡。
传统DGA域名检测方法
1、最直接的就是逆向恶意程序,这种办法要求高,并且只能查到已知样本的恶意dga域名。
2 、网络流量分析,抓出异常的dns请求,分析确认
3 、碰撞dga库,白帽子收集和用dga算法生成的域名库。
基于机器学习的检测方法
白样本:采用Alexa top1m
黑样本:http://data.netlab.360.com/dga/
初步分析:dga域名属于文本特征,我们先用最常用文本特征处理手段 N-gram+tf-idf 、NLP提取词向量特征+机器学习分类器,我们将黑白样本合并、打乱顺序,用N-gram+tf-idf方式进行初测试。(没得GPU,使用词向量提取时间过长,放弃…)
2-gram+tf-idf+XGBoost
样本稍微有点不均衡,而且维度很大训练吃力,不过测试效果不错。
![在这里插入图片描述](https://img-blog.csdnimg.cn/61927dae5a07439696f7a2ef15dee404.png)
数据分析特征提取
黑白样本不均衡,保留类别数目大于3000的家族样本,并使用随机下采样方式使黑白样本均衡。
仅做测试数据足够,而且高维文本特征表示,近乎两两正交,使用SMOTE类似方法过采样效果甚微。
最终数据分布如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8f2a04f99d34a1ba8601c974bb86830.png)
DGA算法作为随机域名生成算法,它生成的域名与正常域名相比随机性更强。可以从如下几个方面考虑特征:
1、数字/字母 占比
2、元音字母/辅音字母 占比(合法域名一般由正常字母组成包含元音字母多,可读行强)
3、字母 重复出现次数占比
4、域名长度
5、香农熵(可以判断域名随机性)
特征数据分布图可以大概看出特征区分度:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8de2b1125c7441a08da28a5382d0fa81.png)
特征相关性分布混淆矩阵:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b8df5dcc0d1247dc9491eff328bc03d4.png)
特征关联性分布散点图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/36e0f81c13f24a21b4eb8dd5d1baa7fe.png)
使用SelectKBest对特征评分:
![在这里插入图片描述](https://img-blog.csdnimg.cn/97745e9597b14378ab5d6ca9f6a61e3d.png)
通过以上分析得出DGA域名中字母出现占比与字母重复出现次数占比相关性比较大,根据特征评分删除字母占比特征。
使用上述6个特征经XGBoost分类器训练结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f457c92e38474033bb1994c590483e88.png)
合并TF-IDF特征经XGBoost分类器训练结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/0ea35e9f1a0f41e1829ffd87906efcfd.png)
使用stacking模型融合尝试进一步提升模型效果:
KFOLD,n_splits=5
![在这里插入图片描述](https://img-blog.csdnimg.cn/5d4cc7fc302344ba8639e1bca7356c5d.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/118c87e6f255482e86499405d32d3633.png)
经测试在本数据集上stacking 在低维数据集表现不佳,使用stacking方法训练上述自己提取的六个特征,stacking模型准确率、roc值均与第一层最优分类器相近(仅适用本数据集)。但处理高维tf-idf特征相较第一层分类器有较大提升,特征融合后使用少量样本集做测试也均有较大提升。