恶意域名

恶意域名是指黑客在攻击过程中或者对目标网络实施控制时,使用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域名检测相关推荐

  1. python数据库开发 dga_利用Python实现DGA域名检测

    *本文原创作者:feiniao,本文属于 FreeBuf 原创奖励计划,未经许可禁止转载.前段时间爆发的利用永恒之蓝进行勒索及xshell等事件,各大厂家都站在不同的角度分析了相应的事件及程序,对于对 ...

  2. DGA 域名生成和检测算法

    文章目录 DGA 域名生成 DGA 域名检测 白样本 黑样本 检测模型 DGA 域名生成 360提供了基于 python的 DGA 算法,包含如下 10 种DGA家族. DGA 域名检测 白样本 ci ...

  3. 《Web安全之机器学习入门》笔记:第九章 9.4 支持向量机算法SVM 检测DGA域名

    DGA(Domain Generation Algorithm)域名生成算法是一种利用随机字符等算法来生成C&C域名,从而逃避安全设备域名黑名单检测的技术手段. 1.黑样本 def load_ ...

  4. 《Web安全之机器学习入门》笔记:第七章 7.6朴素贝叶斯检测DGA域名

    DGA(域名生成算法(Domain Generation Algorithm)是一种僵尸网络利用随机字符来生成C&C域名,从而逃避安全设备域名黑名单检测的技术手段.         1.白样本 ...

  5. 《Web安全之机器学习入门》笔记:第十章 10.3 K-Means算法检测DGA域名

    DGA域名指僵尸网络通过算法生成的随机性较高的域名,此类域名往往被攻击者用于构建自己的恶意软件基础设施,用于绕过安全产品的黑名单,从而规避安全设备的拦截以建立C2链接或DNS通道传输. 1.数据集: ...

  6. 程序设计-在校整理-07 基于机器学习算法的DGA域名识别(NB、XGboost、MLP初探)

    [在校整理-07 基于机器学习算法的DGA域名识别(NB.XGboost.MLP初探)](注:仅供参考学习使用) 一.课题内容和要求 二.理论基础 2.1 DGA域名生成算法 2.2 DGA算法原理 ...

  7. 使用无监督算法检测DGA域名(一)

    1.K-means的基本使用 import numpy as np import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot ...

  8. 深度学习检测DGA域名

    参考连接:使用深度学习检测DGA(demo.初探)_墨痕诉清风的博客-CSDN博客_dga检测 DGA(域名生成算法)是一种利用随机字符来生成C&C域名,从而逃避域名黑名单检测的技术手段.例如 ...

  9. 使用机器学习做DGA域名识别

    DGA域名 域名生成算法(Domain Generation Algorithm, DGA) 是一项古老但一直活跃的技术, 是中心结构僵尸网络赖以生存的关键武器, 该技术给打击和关闭该类型僵尸网络造成 ...

最新文章

  1. 上帝的指纹——分形与混沌
  2. 在express.js上启用HTTPS
  3. 【转】深入探讨 Android 传感器
  4. Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流
  5. 函数指针的两种调用方式
  6. linux 脚本socket通信,Linux实例:用socket通讯远程执行命令
  7. pyqt5必须和python对应_python 使用PyQt5
  8. 前端学习(2386):远程仓库的issue
  9. 人脸识别案例:【实战】opencv人脸检测+Haar特征分类器
  10. 12如何隐藏dock栏_一键隐藏 iPhone 刘海和底部 Dock 栏,简洁又好看
  11. 《黑客》月刊中文版第一期正式发布,很给力!推荐围观!
  12. 【英语学习】【加州教材】【G4】【科学】Science目录及术语表
  13. 华为金融业务部总裁曹冲:没有进入支付市场的计划
  14. 5天被迫喊停!Win 10史上最短命系统升级:删文件、无法联网,误报CPU使用率
  15. git SSL certificate problem: unable to get local issuer certificate
  16. gwas snp 和_Science | 群体研究新思路:De novo + GWAS
  17. newifid1网页服务器,newifi d1刷老毛子固件测试
  18. word计算机相乘公式,怎么使用Word复制乘积公式
  19. Z-TEK CE usb转串口驱动(win32)
  20. C语言编程练习 7.13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。

热门文章

  1. 超分辨率重建生成低分辨率图像,生成降质图像公认方法代码
  2. AUTOCAD2008注册
  3. MySQL查询语句练习50题+答案
  4. 【ZOJ 4062】Plants vs. Zombies
  5. 网站白名单可行性分析
  6. iOS开发---开发工具简介
  7. OpenX系列标准介绍(5):OpenDRIVE和OpenSCENARIO的中文版本
  8. 设置网络唤醒电脑(WAKE ON LAN,WOL)
  9. shell之 ps、kill、killall命令详解
  10. Megacli常用命令汇总