数据集:
1.KDD99 网络流量数据集,有dos,u2r,r21,probe等类行攻击
2.HTTP DATASET CSIC 2010,包含sql注入,缓冲区溢出,信息泄露,文件包含,xss等
3.SEA数据集,记录了UNIX用户的操作指令(例如cpp,sh等命令)。
4.ADFA-LD(linux)和ADFA-WD(windows)数据集,用户系统命令数据集。
5.Alexa域名数据,提供了全球排名TOP一百万的网站域名。
6.MNIST数据集,入门级的计算机视觉数据集,例如手写数字图片。
7.Movie Review Data数据集,包含了1000条正面评论,1000条负面评论
8.SpamBase数据集,入门级垃圾邮件分类训练集
9.Enron数据集,垃圾邮件数据集
10.域名生成算法DGA常见的两个家族cryptolocker和post-tovargoz,其中360有很多这样的黑样本数据,http//data.netlab.360.com/dga
11.XSS数据集,使用常见的Web扫描器对我们靶场进行扫描,搜集扫描日志,提取XSS攻击载荷,然后去重就可以了。
常见Web扫描器,比如Nikto,Paros proxy,WebInspect等,靶场(具有各种Web漏洞的网站),比如有WAVSEP,一个包含漏洞的Web程序
12.20 News Groups Dataset包含20000个新闻报道,分别来自20个新闻组,它已经成为机器学习在文本分类和文本聚类领域非常流行的一个数据集。scikit-learn默认包含了该数据集
13.MIST(Malware Instruction Set for Behaviour Analysis)数据集,MIST通过分析大量的恶意程序,提取静态文件特征以及动态程序行为特征。动态行为使用的是CWSandbox分析。下载地址https://github.com/marcoramilli/MalwareTrainingSets
14.kaggle数据集,http://www.kaggle.com/c/malware-classification,和MIST差不多的数据集。该数据集解压后超过500G
tensorflow 深度学习
TFlearn 对tensorflow进行封装的库
Karas 高级神经网络框架,能在Tensorflow或者Theano上运行,Karas将会变成tensorflow默认的API
PaddlePaddle 是百度开源的深度学习库
常用本文模型:
1.数据集为Enron-Spam数据集
2.词袋模型:(wordid,freq)
3.词集模型:(wordid,1|0)
4.tf-idf模型:(key wordid,tf-idf值)
5.词袋+tf-idf模型
6.Word2Vec模型,求文本语义相似度,用于聚类,找同义词,词性分析
7.doc2vec模型,word2vec只是基于词的维度进行"语义分析"的,而并不具有上下文的"语义分析"能力。比如用于情感分析
传统的图像分类算法
常用特征提取算法
1.SIFT(Scale-Invariant Feature Transform,尺度不变特征转换)
2.HOG(Histogram of Oriented Gradient,方向梯度直方图)
3.LBP(local Binaray Pattern,局部二值模式)
常用分类算法为SVM
机器学习框架OpenSOC
OpenSOC的部署全部依赖开源软件,存储上使用hadoop,实时索引采用Elasticsearch,在线实时分析使用storm
对于数据集不均衡问题的处理方式:
1.降采样:其实就是从数据量多的一类随机抽出一定数量的样本,和数量少的类数量一样。
2.过采样:保留数量多的样本,通过一定的算法,在数量较少样本的基础上生成新样本,最终形成的样本可以达到黑白样本平衡。其中最常见的算法为smote
验证码识别:
数据集MNIST
1.使用KNN,n_neighbors=15,准确率96.28%
2.使用SVM,核函数采用rbf(高斯核函数),准确率94.39%
3.使用多层感知机MLP,epoch=10,准确率99.49%
4.使用CNN,使用2层卷积(33,32 filter),2层Max_pooling(22),3层全连接,dropout 0.8,epoch=10,准确率96.98
XGBoost算法
XGBoost所应用的算法为gradient boosting decision tree(GBDT决策树),既可以用于分类,也可以用于回归
最大的特点在于它能够自动利用CPU的多线程进行并行,同时在算法上加以改进提高精度,完全可以当做是一个加强版
的决策树来使用。
垃圾邮件识别
词汇表模型:对文档逐词向量化,保留词汇顺序。
1.使用朴素贝叶斯,基于词袋模型,词袋最大特征数5000,准确率94.33%,词袋最大特征数13000,准确率96.4,再过大词袋特征数准确率反而下降
2.使用朴素贝叶斯,基于tf-idf模型,词袋最大特征数5000,准确率95.91%。
3.使用支持向量机SVM,基于词袋模型,词袋最大特征数5000,准确率90.61%
4.使用多层感知机MLP,基于词袋模型,词袋最大特征数5000,准确率98.01%
5.使用CNN,基于词袋模型,一维卷积,使用3个数量为128核,长度分别为3,4,5的一维卷积,准确率98.3%
6.使用RNN,基于词汇表模型,单层LSTM结构,准确率94.88%
负面评论识别:
数据集IMDB
1.使用朴素贝叶斯,基于词袋模型,词袋最大特征数5000.准确率68.64%
2.使用朴素贝叶斯,基于词袋模型+tf-idf,准确率75.89%
3.使用朴素贝叶斯,基于Doc2vec模型,准确率77.90%
4.使用SVM,基于词袋模型+tf-idf,准确率79.70%
5.使用多层感知机MLP,基于词袋+tf-idf模型,准确率87.06%
6.使用CNN,基于词汇表模型,一维卷积,使用3个数量为128核,长度分别为3,4,5的一维卷积,准确率86.75%
骚扰短信识别(基于基于Word2Vec模型识别得很不错):
数据集SMS Spam Collection,数据不均衡
1.使用朴素贝叶斯,基于词袋+tf-idf模型,准确率90%,召回率72%
2.使用朴素贝叶斯,基于Word2Vec模型,准确率98%,召回率98%
3.使用SVM,基于Word2Vec模型,准确率99%,召回率99%
4.使用XGBoost算法,基于tf-idf模型,准确率96%,召回率96%
5.使用XGBoost算法,基于基于Word2Vec模型,准确率99%,召回率99%
6.使用多层感知机MLP,基于基于Word2Vec模型,准确率98%,召回率98%
linux后门检测
数据集ADFA-LD,系统调用已经泛化成编号。直接可以当做文本进行处理,把每个编号当做一个词
1.使用朴素贝叶斯,基于3-Gram+tf-idf模型,准确率90%,召回率90%
2.使用XGBoost,基于3-Gram+tf-idf模型,准确率94%,召回率94%
3.使用多层感知机MLP,基于词袋+基于3-Gram+tf-idf模型,准确率94%,召回率94%
用户行为和恶意行为检测
数据集SEA
1.使用朴素贝叶斯,基于词袋+tf-idf模型,准确率96%,召回率96%
2.使用XGBoost,基于词袋+tf-idf模型,准确率100%,召回率100%
3.使用二阶隐马尔可夫,基于词汇表模型,得分阈值T=-500,准确率95%,召回率95%
4.使用多层感知机MLP,基于词袋+tf-idf模型,准确率99%,召回率99%
5.使用多层感知机MLP,基于n-gram模型,准确率99%,召回率99%
WebShell检测
WebShell数据集,来自https://github.com/search?l=PHP&q=webshell&type=Repositories&utf-8
PHP白样本来自WordPress
数据由PHP文件,PHP代码转变成opcode
1.使用朴素贝叶斯,基于词袋+tf-idf模型,词袋最大特征数15000,准确率94.92%,召回率93.19%
2.使用多层感知机MLP,基于词袋+tf-idf模型,词袋最大特征数15000,准确率96.59%,召回率95.11%
3.使用多层感知机MLP,基于n-gram模型,准确率83.3%,召回率96.03%
4.使用CNN,基于n-gram模型,准确率82.53%,召回率27.18%
5.使用CNN,基于词汇表模型,准确率96.96%,召回率82.34%
智能扫描器(自动生成XSS攻击序列)
先介绍了Web扫描器,比如Nikto,Paros proxy,WebInspect等
数据集XSS
1.使用RNN LSTM算法,将XSS看做字符序列,建立字符对应数字的转换表,然后进行训练。
效果,比如:
(1)
Seed:xxx
output:
(2)
Seed:funcation(){xxx
output:}¥r¥n
自动识别登录界面
自动识别登陆界面其实就是识别页面上的包含的关键字内容(比如Sign up,Name,Email,Password,Password confirmation等)
数据集20 News Groups Dataset
1.基于Word2Vec算法,生成与(user,password等)相似的单词
DGA域名识别
数据集Alexa
特征模型:
(1)N-Gram
(2)统计特征模型,即元音字母个数,唯一字母数字个数,平均jarccard系数(jarccard定义为两个集合交集与并集个数的比值,比如基于2-Gram生成的集合进行计算)结合。
(3)字符序列模型,字符转换为相应的ASCLL编码
1.使用朴素贝叶斯,基于2-Gram,准确率83%,召回率80%
2.使用朴素贝叶斯,基于统计特征模型,准确率75%,召回率71%
3.使用XGBoot算法,基于2-Gram,准确率84%,召回率83%
4.使用XGBoot算法,基于统计特征模型,准确率86%,召回率86%
5.使用多层感知机MLP,基于2-Gram,准确率95%,召回率95%
6.使用多层感知机MLP,基于2-Gram和基于3-Gram,准确率97%,召回率97%
7.使用多层感知机MLP,基于统计特征模型,准确率86%,召回率86%
8.使用RNN LSTM算法,基于字符序列模型,准确率81,召回率80%
小贴士:通过以上对比,多层感知机MLP基于2-Gram和3-Gram效果最好,在实际中,再结合DNS注册信息以及DNS解析信息,可以达到99%以上
恶意程序分类识别
数据集MIST
1.使用SVM,基于2-Gram+tf-idf模型,准确率95%,召回率95%
2.使用XGBoost算法,基于2-Gram+tf-idf模型,准确率96%,召回率96%
3.使用多层感知机MLP,基于2-Gram+tf-idf模型,准确率94%,召回率94%
反信用卡欺诈
数据集Kaggle上的Credit Card Fraud Detection 数据集
该数据为2013年9月欧洲信用卡交易数据,在284807次交易中包含了492例诈骗,数据集极不平衡。数据集使用28维特征来描述
1.使用朴素贝叶斯,准确率6.18%,召回率82.75%
2.使用朴素贝叶斯,对数据集进行降采样,准确率94.97%,召回率89%
3.使用朴素贝叶斯,对数据集进行过采样,准确率6%,召回率82.47%
4.使用XGBoost,准确率90.47%,召回率74.87%
5.使用XGBoost,对数据集进行降采样,准确率94.08%,召回率91.62%
6.使用XGBoost,对数据集进行过采样,准确率89.53%,召回率79.38%
7.使用多层感知机MLP,准确率93.91%,召回率68.47%
8.使用多层感知机MLP,对数据集进行降采样,准确率90.35%,召回率93.19%
9.使用多层感知机MLP,对数据集进行过采样,准确率86.28%,召回率77.84%