机器学习DGA域名检测
恶意域名
恶意域名是指黑客在攻击过程中或者对目标网络实施控制时,使用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
样本稍微有点不均衡,而且维度很大训练吃力,不过测试效果不错。
数据分析特征提取
黑白样本不均衡,保留类别数目大于3000的家族样本,并使用随机下采样方式使黑白样本均衡。
仅做测试数据足够,而且高维文本特征表示,近乎两两正交,使用SMOTE类似方法过采样效果甚微。
最终数据分布如下:
DGA算法作为随机域名生成算法,它生成的域名与正常域名相比随机性更强。可以从如下几个方面考虑特征:
1、数字/字母 占比
2、元音字母/辅音字母 占比(合法域名一般由正常字母组成包含元音字母多,可读行强)
3、字母 重复出现次数占比
4、域名长度
5、香农熵(可以判断域名随机性)
特征数据分布图可以大概看出特征区分度:
特征相关性分布混淆矩阵:
特征关联性分布散点图:
使用SelectKBest对特征评分:
通过以上分析得出DGA域名中字母出现占比与字母重复出现次数占比相关性比较大,根据特征评分删除字母占比特征。
使用上述6个特征经XGBoost分类器训练结果如下:
合并TF-IDF特征经XGBoost分类器训练结果如下:
使用stacking模型融合尝试进一步提升模型效果:
KFOLD,n_splits=5
经测试在本数据集上stacking 在低维数据集表现不佳,使用stacking方法训练上述自己提取的六个特征,stacking模型准确率、roc值均与第一层最优分类器相近(仅适用本数据集)。但处理高维tf-idf特征相较第一层分类器有较大提升,特征融合后使用少量样本集做测试也均有较大提升。
机器学习DGA域名检测相关推荐
- python数据库开发 dga_利用Python实现DGA域名检测
*本文原创作者:feiniao,本文属于 FreeBuf 原创奖励计划,未经许可禁止转载.前段时间爆发的利用永恒之蓝进行勒索及xshell等事件,各大厂家都站在不同的角度分析了相应的事件及程序,对于对 ...
- DGA 域名生成和检测算法
文章目录 DGA 域名生成 DGA 域名检测 白样本 黑样本 检测模型 DGA 域名生成 360提供了基于 python的 DGA 算法,包含如下 10 种DGA家族. DGA 域名检测 白样本 ci ...
- 《Web安全之机器学习入门》笔记:第九章 9.4 支持向量机算法SVM 检测DGA域名
DGA(Domain Generation Algorithm)域名生成算法是一种利用随机字符等算法来生成C&C域名,从而逃避安全设备域名黑名单检测的技术手段. 1.黑样本 def load_ ...
- 《Web安全之机器学习入门》笔记:第七章 7.6朴素贝叶斯检测DGA域名
DGA(域名生成算法(Domain Generation Algorithm)是一种僵尸网络利用随机字符来生成C&C域名,从而逃避安全设备域名黑名单检测的技术手段. 1.白样本 ...
- 《Web安全之机器学习入门》笔记:第十章 10.3 K-Means算法检测DGA域名
DGA域名指僵尸网络通过算法生成的随机性较高的域名,此类域名往往被攻击者用于构建自己的恶意软件基础设施,用于绕过安全产品的黑名单,从而规避安全设备的拦截以建立C2链接或DNS通道传输. 1.数据集: ...
- 程序设计-在校整理-07 基于机器学习算法的DGA域名识别(NB、XGboost、MLP初探)
[在校整理-07 基于机器学习算法的DGA域名识别(NB.XGboost.MLP初探)](注:仅供参考学习使用) 一.课题内容和要求 二.理论基础 2.1 DGA域名生成算法 2.2 DGA算法原理 ...
- 使用无监督算法检测DGA域名(一)
1.K-means的基本使用 import numpy as np import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot ...
- 深度学习检测DGA域名
参考连接:使用深度学习检测DGA(demo.初探)_墨痕诉清风的博客-CSDN博客_dga检测 DGA(域名生成算法)是一种利用随机字符来生成C&C域名,从而逃避域名黑名单检测的技术手段.例如 ...
- 使用机器学习做DGA域名识别
DGA域名 域名生成算法(Domain Generation Algorithm, DGA) 是一项古老但一直活跃的技术, 是中心结构僵尸网络赖以生存的关键武器, 该技术给打击和关闭该类型僵尸网络造成 ...
最新文章
- 上帝的指纹——分形与混沌
- 在express.js上启用HTTPS
- 【转】深入探讨 Android 传感器
- Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流
- 函数指针的两种调用方式
- linux 脚本socket通信,Linux实例:用socket通讯远程执行命令
- pyqt5必须和python对应_python 使用PyQt5
- 前端学习(2386):远程仓库的issue
- 人脸识别案例:【实战】opencv人脸检测+Haar特征分类器
- 12如何隐藏dock栏_一键隐藏 iPhone 刘海和底部 Dock 栏,简洁又好看
- 《黑客》月刊中文版第一期正式发布,很给力!推荐围观!
- 【英语学习】【加州教材】【G4】【科学】Science目录及术语表
- 华为金融业务部总裁曹冲:没有进入支付市场的计划
- 5天被迫喊停!Win 10史上最短命系统升级:删文件、无法联网,误报CPU使用率
- git SSL certificate problem: unable to get local issuer certificate
- gwas snp 和_Science | 群体研究新思路:De novo + GWAS
- newifid1网页服务器,newifi d1刷老毛子固件测试
- word计算机相乘公式,怎么使用Word复制乘积公式
- Z-TEK CE usb转串口驱动(win32)
- C语言编程练习 7.13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。