美文网首页
unit 13 DGA域名识别

unit 13 DGA域名识别

作者: 巴拉巴拉_9515 | 来源:发表于2018-05-29 15:41 被阅读0次

《web安全之深度学习实战》第十三章:DGA域名识别通过使用Alexa平台的白名单域名和360netlab发布的DGA域名,探究朴素贝叶斯算法、XGBoost算法、多层感知机在域名识别上的准确率。

01 数据介绍

(1)白样本
Alexa平台发布全球前10000域名

(2)黑样本
360netlab发布的DGA域名10000条

·

02 数据预处理

(1)统计特征
域名实质是文本处理,统计域名中出现的元音字母、唯一字母数量、数字数量、长度等形成新的数据集,用来进行模型训练。

1、读入白名单、黑名单,合并为一个数据集V
2、白名单结果y都是0,黑名单标记为1
3、统计每个域名元音个数唯一字母个数数字个数域名长度组成新数据集X
4、标准化数据集X,公式为:(X-X_mean)/X_std 计算时对每个属性/每列分别进行
5、划分训练集train、测试集test

def get_feature():
    from sklearn import preprocessing
    alexa=load_alexa()#白名单读入
    dga=load_dga()#黑名单读入
    v=alexa+dga #v数据集
    y=[0]*len(alexa)+[1]*len(dga)#白样本为0,dga样本为1
    x=[]
    for vv in v:
        vvv=[get_aeiou(vv),get_uniq_char_num(vv),get_uniq_num_num(vv),len(vv)]
        #每一行域名;#元音个数、唯一字母数、数字、域名长度
        x.append(vvv)
    x=preprocessing.scale(x)#sklearn.preprocessing.scale():数据预处理直接标准化数据X;
    x_train, x_test, y_train, y_test=train_test_split(x,y,test_size=0.4)
    return x_train, x_test, y_train, y_test

·

(2)2gram提取
2-Gram形式的数据集.类似滑动窗形式提取域名内容。

以百度域名为例:
baidu.com---->2-Gram处理---->'ba''ai''id''du''uc''co''om'---->向量化---->['ba''ai''id''du''uc''co''om']

2gram提取大致如下

1、读入白名单、黑名单,合并为一个数据集V
2、白名单结果y都是0,黑名单标记为1
3、Countvectorizer()通过计数来将一个文档转换为向量,实现2gram提取
4、划分训练集train、测试集test

def get_feature_2gram():
    alexa=load_alexa()#白样本
    dga=load_dga()#黑样本
    x=alexa+dga#数据集
    max_features=10000
    y=[0]*len(alexa)+[1]*len(dga)
    CV = CountVectorizer(ngram_range=(2, 2),token_pattern=r'\w',
                         decode_error='ignore',strip_accents='ascii',
                         max_features=max_features,stop_words='english',
                         max_df=1.0,min_df=1)
    x = CV.fit_transform(x)
    x_train, x_test, y_train, y_test=train_test_split(x,y,test_size=0.4)
    return x_train.toarray(), x_test.toarray(), y_train, y_test

·

03 模型处理——统计特征

使用统计特征形成的数据集,探究朴素贝叶斯算法、XGBoost算法、多层感知机在域名识别上的准确率。

(1)朴素贝叶斯算法
朴素贝叶斯算法域名判断准确率为75%。

判断 白名单 黑名单
判断为白名单 3461 360
判断为黑名单 1998 1994

(2)XGBoost
XGBoost算法域名判断准确率为86%。

判断 白名单 黑名单
判断为白名单 3648 353
判断为黑名单 795 3197

(3)多层感知机
多层感知机算法域名判断准确率为86%。

判断 白名单 黑名单
判断为白名单 3634 367
判断为黑名单 783 3209

·

04 模型处理——2gram提取

使用2gram提取的数据集训练,朴素贝叶斯算法、XGBoost算法、多层感知机在域名识别上的准确率如下:

(1)朴素贝叶斯算法
朴素贝叶斯算法域名判断准确率为83%。

判断 白名单 黑名单
判断为白名单 3835 174
判断为黑名单 1480 2504

(2)XGBoost
XGBoost算法域名判断准确率为83%。

判断 白名单 黑名单
判断为白名单 3053 956
判断为黑名单 456 3528

(3)多层感知机
多层感知机算法域名判断准确率为94%。

判断 白名单 黑名单
判断为白名单 3797 212
判断为黑名单 245 3739

显然当数据集使用2Gram提取、模型使用多层感知机,DGA的识别效果最好。

05 小结

相关文章

  • unit 13 DGA域名识别

    《web安全之深度学习实战》第十三章:DGA域名识别通过使用Alexa平台的白名单域名和360netlab发布的D...

  • DGA域名

    什么是DGA? dga是一种算法,作用生成随机数的。 什么是dga域名? 是用dga算法生成的域名,这种域名通常硬...

  • DGA域名识别(二):模型训练

    向量化代码: 1.朴素贝叶斯 模型训练代码: 2.Xgboost: 3.MLP:

  • DGA域名识别(一):向量化表示

    背景 在网络安全领域,许多僵尸网络为了维持与C&C的链接,并有效隐藏C&C服务器的域名,会使用DGA技术让僵尸主机...

  • DGA总结备忘

    1、适合中小企业的DGA域名检测 使用LSTM或者CNN构建的DGA检测模型,这种方法需要使用深度学习自动提取特征...

  • botnet、C&C服务器相关基础

    2020/05/15文章[1]对DGA的域名生成进行了简单的描述。我的理解就是,通过模拟和恶意软件一样的DGA算法...

  • 使用LSTM检测DGA

    前言 DGA可谓是网络安全领域的一个绕不过的话题,针对DGA的检测通常分为两类:一类是通过域名相关字符特征判断一个...

  • 机器学习学习笔记--朴素贝叶斯检测DGA域名

    DGA(域名生成算法)是一种利用随机字符来生成C&C域名,从而逃避域名黑名单检测的技术手段。例如,一个由Crypt...

  • 上外听说教程一课后答案

    Unit1-4 Unit5-8 Unit9-12 Unit13-16

  • 机器学习学习笔记--朴素贝叶斯实践

    朴素贝叶斯算法是应用最为广泛的分类算法之一。简称NB算法。可以用来检测异常操作,检测DGA域名,检测针对Apach...

网友评论

      本文标题:unit 13 DGA域名识别

      本文链接:https://www.haomeiwen.com/subject/zmqajftx.html