《WEB安全深度学习实战》笔记
数据集:
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%
《WEB安全深度学习实战》笔记相关推荐
- 《信贷的逻辑与常识》笔记
序 银行信贷风险管理的反思 现状与趋势 银行贷款的质量变化与经济周期.宏观调控政策等存在很高的相关性 现在银行不良贷款的增加主要是前几年经济快速增长时企业过度投资.银行过度放贷所带来的结果. 从历史情 ...
- AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟
AI公开课:19.02.27周逵(投资人)<AI时代的投资逻辑>课堂笔记以及个人感悟 目录 课堂PPT图片 精彩语录 个人感悟 课堂PPT图片 精彩语录 更新中-- 文件图片已经丢失-- ...
- 人工智能入门算法逻辑回归学习笔记
逻辑回归是一个非常经典的算法,其中也包含了非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了. 秉持着精益求精的工匠精神不断对笔记进行 ...
- 【逻辑回归学习笔记】
算法描述 1.逻辑回归要做的事就是寻找分界面实现二分类. 2.问题假设:对一堆三角形和正方形分类. 3.数据输入:已知正方形和三角形的坐标和标签. 4.算法过程: 知识储备 1.分类和回归 ①分类的目 ...
- 逻辑回归函数学习笔记
继续逻辑回归学习,今日笔记记录. 1.逻辑回归和线性回归的关系:对逻辑回归的概率比取自然对数,则得到的是一个线性函数,推导过程如下. 首先,看逻辑回归的定义 其次,计算两个极端y/(1-y),其值为( ...
- 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授
逻辑回归 上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1) 和 非(0). Sigmoid预测函数 在逻辑 ...
- LVM逻辑卷分区笔记
磁盘的静态分区有其缺点:分区大小难评估,估计不准确,当分区空间不够用的时候,系统管理员可能需要先备份整个系统,清除磁盘空间,然后重新对磁盘进行分区,然后恢复磁盘数据到新分区,且需要停机一段时间进行恢复 ...
- 适合理工直男的钟平老师逻辑英语学习笔记
一切的一切都只是套路! --鲁迅 核心公式: En: (状语1) 主(定语1) 谓(状语2) (宾)(定语2) (状语1) Ch: (状语1) (定语1)主 (状语2)谓 (定 ...
- 【数字逻辑】学习笔记 第四章 Part2 常用组合逻辑电路与竞争、险象
文章目录 一.常用组合逻辑电路 1. 译码器 (1) 二进制译码器 74LS138(3/8译码器) a. 一般符号和图形符号 b. 74LS138功能表 c. 两片 `74LS138` 构成 `4-1 ...
- 线性回归、逻辑回归学习笔记
学习源代码 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实函数,即ground trut ...
最新文章
- 基于点云强度的3D激光雷达与相机的外参标定
- 【 Verilog HDL 】清晰的时序逻辑描述方法之计数器的描述范例
- 手机摇一摇效果-html5
- 鸟哥的Linux私房菜(服务器)- 架站文件習題解答篇
- MyEclipse、eclipse代码自动补全
- 2018.3.30 边框应用与导航栏设置
- python import如何使用_python之import引用
- 多进程修改全局变量(python版)
- 日志管理-NLog日志框架简写用法
- eyoucms 网页制作软件有哪些 这些你都知道吗
- spring下配置dbcp,c3p0,proxool
- 解决Symantec卸载需要密码问题又一新招
- c语言超市,C语言超市收银系统
- python识别文字并且提示_Python识别文字,实现看图说话|CSDN博文精选
- 微信小程序授权登录详细解析
- 阅读笔记:XModal-ID: Through-Wall Person Identification from Candidate Video Footage Using WiFi
- FFmpeg视频剪辑常用命令
- 能帮我看看那里错了吗
- mininet sflow 资料和经验
- 从Windows用scp往linux里传输文件