《WEB安全之机器学习入门》笔记

数据集:
1.KDD99 网络流量数据集,有dos,u2r,r21,probe等类行攻击
2.HTTP DATASET CSIC 2010,包含sql注入,缓冲区溢出,信息泄露,文件包含,xss等
3.SEA数据集,记录了UNIX用户的操作指令(例如cpp,sh等命令)。
4.ADFA-LD数据集,用户系统命令数据集
5.Alexa域名数据,提供了全球排名TOP一百万的网站域名。
6.MNIST数据集,入门级的计算机视觉数据集,例如手写数字图片。
7.Movie Review Data数据集,包含了1000条正面评论,1000条负面评论
8.SpamBase数据集,入门级垃圾邮件分类训练集
9.Enron数据集,垃圾邮件数据集
10.域名生成算法DGA常见的两个家族cryptolocker和post-tovargoz

K邻近算法:
1.使用SEA数据集,基于用户使用哪条命令,和最不频繁使用哪条命令的频繁度生成特征,结果准确率80%。
2.继续使用SEA数据集,但是是全量比较,基于词集,结果准确率93%。
3.从KDD99数据集中只挑选出Rootkit数据,结果准确率90%。
4.使用ADFA-LD数据集中的WEBShell数据(其实是服务器经过WEBShell攻击后出来的系统命令),基于WebShell对系统调用的行为,形成词集,结果准确率95%。

决策树
1.使用KDD99 POP3的相关数据,准确率为99%
2.使用ADFA-LD数据集中FTP暴力破解的数据(系统命令),准确率95%。

随机森林
1.使用ADFA-LD数据集中FTP暴力破解的数据(系统命令),准确率98%。

朴素贝叶斯
1.使用SEA数据集,但是是全量比较,基于词集,准确率92%。
2.在互联网上搜集到的WebShell黑样本,然后使用wordpress源码作为白样本,然后将PHP原文件作为字符串处理,基于2-gram切词生成词汇表,准确率为80%。
3.在互联网上搜集到的WebShell黑样本,然后使用wordpress源码作为白样本,然后将PHP原文件作为字符串处理,基于1-gram切词生成词汇表,准确率为96%。
4.检测DGA域名,基于2-gram切词生成词汇表,准确率93%。
5.检测DDoS攻击,基于筛选DDoS相关特征,网络连接基本特征,基于时间的网络流量统计特征,基于主机的网络流量统计特征,向量化后形成特征矩阵,准确率99%。
6.识别验证码,通过MNIST数据集进行训练,准确率在55%,因为贝叶斯算法不擅长于多分类。

逻辑回归
1.使用ADFA-LD数据集中Java溢出攻击的相关数据,然后基于词集,准确率93%。
2.识别验证码,通过MNIST数据集进行训练,准确率80%。

支持向量机SVM
1.检测XSS,基于专业的对URL进行敏感字符,关键字个数决定,准确率90%。
2.区分DGA家族,基于:
a.元音字母个数和比例
b.去重后的字母个数与原域名长度的比列
c.基于2-gram的平均jarccard系数,即两个集合交集与并集元素个数的比值
d.基于HMM模型,即以常见英文单词训练的HMM模型,这样正常域名的HMM系数会偏高。
准确率不明。

K-means
1.用于DGA cryptolocker和post-tovargoz和正常样本聚类,虽然没有给出准确率,但使用TSNE降维看图,效果还不错

DBSCAN(Density-Based Spatial Clustering of Applications with Noise),基于密度的聚类算法
1.用于DGA cryptolocker和post-tovargoz和正常样本聚类,虽然没有给出准确率,但使用TSNE降维看图,效果好像比K-means好

Apriori
1.使用在WAF的accesslog与后端数据库的sqllog,识别SSH操作日志中异常操作,发现关联关系,然后用作SVM的特征提取依据

FP-growth
1.分析防火墙的拦截日志,使用攻击源ip,浏览器user-agent字段和被攻击的目标URL之间,挖掘出浏览器的user-agent字段和被攻击的目标URL之间的关联关系。使用

隐马尔可夫算法(HMM)
1.通过学习正常XSS来识别异常,以白找黑例如:
a.[a-zA-Z]可范化为A
b.[0-9]范化为N
c.[-_]范化为C
d.其它字符都范化为T
这样userid=%3Cscript%3Ealert(1)%3C/script%3E为例,可得TAAAAAATAAAAATNTTTAAAAAAT,score=-13945识别为异常
2.通过学习异常XSS来识别异常,以黑找黑
3.通过计算DGA cryptolocker和post-tovargoz的score值()可以为使用SVM对DGA算法分类提供特征

图算法概述:
1.使用有向图识别WebShell
2.使用有向图识别僵尸网络,通过一段时间的观察,统计攻击源IP和被攻击者域名之间的关联关系,可以确定哪些IP是被同
一个黑产团体控制。

知识图谱在风控领域的应用
1..检测疑似账号被盗,将uid,ip,tel,activesyncid(客户端与硬件绑定的id)连成一张图,但其实主要看的是activesyncid连了多少uid(同一台设备尝试登录不同的账号)。
2.检测疑似刷单,hid(硬件指纹,唯一标识一台设备),uid,app,action(买,卖行为),如果发现买,卖在同一台设备,则有可能刷单。
3.应用于威胁情报领域

神经网络(只使用隐藏层为一层的神经网络)
1.使用神经网络对MNIST验证进行分类,准确率97%。
2.使用神经网络检测Java溢出攻击,准确率87%。

深度神经网络(DNN,Deep Neural Network)就是一种全连接的错层感知机。
卷积神经网络(CNN,Convolutional Neural Network)
循环神经网络(RNN,Recurrent Neural Network)
多层感知机与DNN算法(待看)
1.使用TensorFlow中的softmax回归算法识别MNIST验证码,将验证码通过one-hot编码,准确率90%
2.使用TensorFlow中的多层感知机算法识别MNIST验证码,将验证码通过one-hot编码,准确率96%
3.使用TensorFlow中的DNN算法识别MNIST验证码,将验证码通过one-hot编码,准确率93%
4.使用高斯朴素贝叶斯GaussianNB识别SpamBase垃圾邮件,该SpamBase数据集已经向量化好了,准确率82%
5.使用TensorFlow中的DNN算法识别SpamBase垃圾邮件,该SpamBase数据集已经向量化好了,准确率87%

循环神经网络(RNN)
特点:会回忆以前类似的场景是如何解决的,温故而知新,即隐藏层之间的节点不再无连接,而是有连接的
有时候需要追溯到以前更长的记忆,提出LSTM(Long short term memory)
1.使用构造RNN神经网络,LSTM算法识别MNIST数据集,准确率95%
2.使用高斯朴素贝叶斯GaussianNB辨别Movie Review Data影评数据集正负面,准确率51%
3.使用构造RNN神经网络,LSTM算法辨别Movie Review Data影评数据集正负面,准确率61%
4.使用Us.Cities.txt数据集使用RNN,LSTM算法随机生成城市名
5.使用RNN,LSTM算法识别ADFA-LD数据集,基于系统命令调用时序,准确率93%
6.使用RNN,LSTM算法基于WVS自带的密码字典作为训练集自动生成常用密码
7.使用RNN,LSTM算法基于SEA数据集识别UNIX系统异常操作,准确率94%

卷积神经网络(CNN)
1.使用CNN识别MNIST验证码,准确率99%
2.使用CNN辨别Movie Review Data影评数据集正负面,准确率66%
3.使用CNN辨别垃圾邮件,其中对文本的处理为使用一维卷积函数,并且基于词袋模型的改进,使用生成的词汇表对原有句子
按照单词逐个进行编码,准确率98%

你可能感兴趣的:(机器学习)