《Web安全之机器学习入门》一 3.2 数据集

简介: 本节书摘来自华章出版社《Web安全之机器学习入门》一 书中的第3章,第3.2节,作者:刘焱,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 数据集

数据集合和算法就像黄油和面包一样缺一不可,很多时候数据比算法还要重要。本书的例子涉及的数据主要来自多年搜集的开源数据集合以及部分脱敏的测试数据。

3.2.1 KDD 99数据

KDD是知识发现与数据挖掘(Knowledge Discovery and Data Mining)的简称,KDD CUP是由ACM组织的年度竞赛如图3-1所示。KDD 99 数据集就是KDD竞赛在1999年举行时采用的数据集。

screenshot

1998年美国国防部高级研究计划局(DARPA)在MIT林肯实验室进行了一个入侵检测评估项目。林肯实验室建立了模拟美国空军局域网的一个网络环境,收集了9周的网络连接和系统审计数据,仿真各种用户类型、各种不同的网络流量和攻击手段,使它就像一个真实的网络环境。一个网络连接定义为:在某个时间内从开始到结束的TCP数据包序列,并且在这段时间内,数据在预定义的协议下从源IP地址到目的IP地址的传递。每个网络连接被标记为正常(normal)或异常(attack),异常类型被细分为4大类共39种攻击类型,其中22种攻击类型出现在训练集中,另有17种未知攻击类型出现在测试集中,见表3-2。
screenshot

随后来自哥伦比亚大学的Sal Stolfo 教授和来自北卡罗莱纳州立大学的 Wenke Lee 教授采用数据挖掘等技术对以上数据集进行特征分析和数据预处理,形成了一个新的数据集。该数据集用于1999年举行的KDD竞赛中,成为著名的KDD 99数据集。虽然年代有些久远,但KDD99数据集仍然是网络入侵检测领域的权威测试集,为基于计算智能的网络入侵检测研究奠定基础。
KDD99数据集中每个连接用41个特征来描述:

0,udp,private,SF,105,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,normal.
0,udp,private,SF,105,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,normal.
0,udp,private,SF,105,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,normal.
0,udp,private,SF,105,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,snmpgetattack.

上面是数据集中的3条记录,以CSV格式写成,加上最后的标记(label),一共有42项,其中前41项特征分为4大类。
TCP连接基本特征(见表3-3),基本连接特征包含了一些连接的基本属性,如连续时间、协议类型、传送的字节数等。
TCP连接的内容特征,见表3-4。
基于时间的网络流量统计特征,见表3-5。
基于主机的网络流量统计特征,见表3-6。
screenshot

screenshot
screenshot

screenshot
screenshot

3.2.2 HTTP DATASET CSIC 2010

HTTP DATASET CSIC 2010包含大量标注过的针对Web服务的36 000个正常请求以及25 000个攻击请求,攻击类型包括sql注入、缓冲区溢出、信息泄露、文件包含、xss等,被广泛用于WAF类产品的功能评测。
正常请求格式如图3-2所示。

screenshot

攻击请求格式如图3-3所示。

3.2.3 SEA数据集

2001年Schonlau等人第一次将内部攻击者分类为“叛徒”(Traitor)与“伪装者”(Masquerader),其中“叛徒”指攻击者来源于组织内部,本身是内部合法用户;而“伪装者”指外部攻击者窃取了内部合法用户的身份凭证,从而利用内部用户身份实施内部攻击。随后该团队构造了一个公开的检测伪装者攻击的数据集SEA,该数据集被广泛用于内部伪装者威胁检测研究。
SEA数据集涵盖70多个UNIX系统用户的行为日志,这些数据来自于UNIX系统acct机制记录的用户使用的命令。SEA数据集中每个用户都采集了15 000条命令,从用户集合中随机抽取50个用户作为正常用户,剩余用户的命令块中随机插入模拟命令作为内部伪装者攻击数据。SEA数据集中的用户日志类似于下面的命令序列:
screenshot

每个用户的数据按照每100个命令为一块,分为150个块,前三分之一数据块用作训练该用户正常行为模型,剩余三分之二数据块随机插入了测试用的恶意数据。SEA数据集中恶意数据的分布具有统计规律,任意给定一个测试集命令块,其中含有恶意指令的概率为1%;而当一个命令块中含有恶意指令,则后续命令块也含有恶意指令的概率达到80%。可以看出SEA中的数据集将连续数据块看作一个会话,只能模拟连续会话关联的攻击行为;此外由于缺乏用户详细个人信息(职位、权限等)、数据维度单一(仅有命令信息)以及构造性(恶意数据由人工模拟)等因素,数据集在内部威胁检测研究中作用有限。
Schonlau在他的个人网站上发布了SEA数据集,见图3-4。

3.2.4 ADFA-LD数据集

ADFA-LD数据集是澳大利亚国防学院对外发布的一套主机级入侵检测系统的数据集合,被广泛应用于入侵检测类产品的测试。该数据集包括Linux和Windows,记录了系统调用数据,Gideon Creech是这个项目的负责人,见图3-5。

screenshot

screenshot

ADFA-LD数据集已经将各类系统调用完成了特征化,并针对攻击类型进行了标注,各种攻击类型列举见表3-7。
screenshot

ADFA-LD数据集的每个数据文件都独立记录了一段时间内的系统调用顺序,每个系统调用都用数字编号,对应的编号举例如下:

#define __NR_io_setup 0 __SYSCALL(__NR_io_setup, sys_io_setup)
#define __NR_io_destroy 1 __SYSCALL(__NR_io_destroy, sys_io_destroy)
#define __NR_io_submit 2 __SYSCALL(__NR_io_submit, sys_io_submit)
#define __NR_io_cancel 3 __SYSCALL(__NR_io_cancel, sys_io_cancel)
#define __NR_io_getevents 4 __SYSCALL(__NR_io_getevents, sys_io_getevents)
#define __NR_setxattr 5 __SYSCALL(__NR_setxattr, sys_setxattr)
#define __NR_lsetxattr 6 __SYSCALL(__NR_lsetxattr, sys_lsetxattr)

3.2.5 Alexa域名数据

Alexa是一家专门发布网站世界排名的网站。以搜索引擎起家的Alexa创建于1996年4月(美国),目的是让互联网网友在分享虚拟世界资源的同时,更多地参与互联网资源的组织。Alexa每天在网上搜集超过1 000GB的信息,不仅给出多达几十亿的网址链接,而且为其中的每一个网站进行了排名。可以说,Alexa是当前拥有URL数量最庞大、排名信息发布最详尽的网站。Alexa排名是常被引用的用来评价某一网站访问量的指标之一。事实上,Alexa排名是根据用户下载并安装了 Alexa Tools Bar 嵌入到IE、FireFox等浏览器,从而监控其访问的网站数据进行统计的,因此,其排名数据并不具有绝对的权威性。但其提供了包括综合排名、到访量排名、页面访问量排名等多个评价指标信息,且尚没有而且也很难有更科学、合理的评价参考。Alexa对外提供了全球排名TOP一百万的网站域名的下载,文件是CSV格式,以排名、域名组成,如图3-6所示。

screenshot

3.2.6 Scikit-Learn数据集

Scikit-Learn自带的数据集合也十分经典,其中最常见的是iris数据集。
iris中文指鸢尾植物,这里存储了其萼片和花瓣的长宽,一共4个属性,鸢尾植物又分3类。与之相对,iris里有2个属性:iris.data和iris.target。data里是一个矩阵,每一列代表了萼片或花瓣的长宽,一共4列,一共采样了150条记录。target是一个数组,存储了data中每条记录属于哪一类鸢尾植物,所以数组的长度是150,数组元素的值因为共有3类鸢尾植物,所以不同值只有3个。

3.2.7 MNIST数据集

MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片,如图3-7所示。

screenshot

MNIST也包含每一张图片对应的标签,告诉我们这是数字几。比如,图3-7中4张图片的标签分别是5,0,4,1。数据集包括60 000个训练数据和10 000个测试数据。每一个MNIST数据单元由两部分组成:一张包含手写数字的图片和一个对应的标签。每一张图片包含28×28个像素点,可以把这个数组展开成一个向量,长度是28×28 = 784。MNIST数据集详解见表3-8。
screenshot

文件读取方式为:

import pickle
import gzip
def load_data():
    with gzip.open('./mnist.pkl.gz') as fp:
        training_data, valid_data, test_data = pickle.load(fp)
    return training_data, valid_data, test_data

3.2.8 Movie Review Data

Movie Review Data数据集包含1 000 条正面的评论和1 000条负面评论,被广泛应用于文本分类,尤其是恶意评论识别方面。本书使用其最新的版本,polarity dataset v2.0。其官网如图3-9所示。

screenshot

Movie Review Data数据集记录的都是原始评论数据,全部为英文,文本内容举例如下:

films adapted from comic books have had plenty of success , whether they're about superheroes ( batman , superman , spawn ) , or geared toward kids ( casper ) or the arthouse crowd ( ghost world ) , but there's never really been a comic book like from hell before . 
for starters , it was created by alan moore ( and eddie campbell ) , who brought the medium to a whole new level in the mid '80s with a 12-part series called the watchmen . 
the film , however , is all good . 
2 : 00 - r for strong violence/gore , sexuality , language and drug content 

文件包含在neg和pos两个文件夹下面,见图3-10,分别代表正面和负面评价。

screenshot

3.2.9 SpamBase数据集

SpamBase是入门级的垃圾邮件分类训练集,其主页如图3-11所示。

screenshot

SpamBase的数据不是原始的邮件内容而是已经特征化的数据,对应的特征是统计的关键字以及特殊符号的词频,一共58个属性,其中最后一个是垃圾邮件的标记位。
特征属性举例如图3-12所示。

screenshot

数据来源为4601封邮件,其中1813封为垃圾邮件,数据内容举例如下:

0,0.64,0.64,0,0.32,0,0,0,0,0,0,0.64,0,0,0,0.32,0,1.29,1.93,0,0.96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.778,0,0,3.756,61,278,1 0.21,0.28,0.5,0,0.14,0.28,0.21,0.07,0,0.94,0.21,0.79,0.65,0.21,0.14,0.14,0.07,0.28,3.47,0,1.59,0,0.43,0.43,0,0,0,0,0,0,0,0,0,0,0,0,0.07,0,0,0,0,0,0,0,0,0,0,0,0,0.132,0,0.372,0.18,0.048,5.114,101,1028,1

3.2.10 Enron数据集

Enron(安然公司)在2001年宣告破产之前,拥有约21 000名雇员,曾是世界上最大的电力、天然气以及电讯公司之一,2000年披露的营业额达1010亿美元之巨。公司连续六年被财富杂志评选为“美国最具创新精神公司”,然而真正使Enron公司在全世界声名大噪的,却是这个拥有上千亿资产的公司2002年在几周内破产,以及持续多年精心策划、乃至制度化系统化的财务造假丑闻。Enron欧洲分公司于2001年11月30日申请破产,美国本部于2日后同样申请破产保护。但在其破产前的资产规模为498亿美元,并有312亿的沉重债务。过度膨胀的快速发展使其无法应对经济环境的逆转,从而导致无法经营运作状况的恶化,最终以破产结束企业。机器学习领域使用Enron公司的归档邮件来研究文档分类、词性标注、垃圾邮件识别等,由于Enron的邮件都是真实环境下的真实邮件,非常具有实际意义。本书使用的Enron数据集是经过人工标注过的正常邮件和垃圾邮件(见图3-13),属于狭义的Enron数据集合,广义的Enron数据集指全量真实且未被标记的Enron公司归档邮件。
Enron数据集合使用不同文件夹区分正常邮件和垃圾邮件,如图3-14所示。
正常邮件内容举例如下:

Subject: christmas baskets
the christmas baskets have been ordered .
we have ordered several baskets .
individual earth - sat freeze - notis
smith barney group baskets
rodney keys matt rodgers charlie
notis jon davis move
team
phillip randle chris hyde
harvey
freese
faclities

screenshot

垃圾邮件内容举例如下:

Subject: fw : this is the solution i mentioned lsc
oo
thank you ,
your email address was obtained from a purchased list ,
reference # 2020 mid = 3300 . if you wish to unsubscribe
from this list , please click here and enter
your name into the remove box . if you have previously unsubscribed
and are still receiving this message , you may email our abuse
control center , or call 1 - 888 - 763 - 2497 , or write us at : nospam ,
6484 coral way , miami , fl , 33155 " . 2002
web credit inc . all rights reserved .
相关文章
|
1天前
|
JavaScript 前端开发 程序员
web前端入门到实战:32道常见的js面试题(1),面试哪些
web前端入门到实战:32道常见的js面试题(1),面试哪些
|
3天前
|
机器学习/深度学习 分布式计算 并行计算
【机器学习】怎样在非常大的数据集上执行K-means算法?
【5月更文挑战第13天】【机器学习】怎样在非常大的数据集上执行K-means算法?
|
3天前
|
XML 云安全 安全
了解常见的web漏洞-XXE漏洞,日常如何做好web安全
随着网络技术的不断发展,网站安全问题日益受到人们的关注。当前随着技术发展,网站存在一些常见的可能被攻击者利用的漏洞,而在众多网站安全漏洞中,XXE(XML External Entity)漏洞是一个不容忽视的问题。今天我们就来分享了解一下关于XXE漏洞的概念、原理以及日常上有哪些可以措施可以防护网站安全。
|
3天前
|
机器学习/深度学习 算法 图计算
图机器学习入门:基本概念介绍
图机器学习是机器学习的分支,专注于处理图形结构数据,其中节点代表实体,边表示实体间关系。本文介绍了图的基本概念,如无向图与有向图,以及图的性质,如节点度、邻接矩阵。此外,还讨论了加权图、自循环、多重图、双部图、异构图、平面图和循环图。图在描述数据关系和特征方面具有灵活性,为机器学习算法提供了丰富的结构信息。
9 0
|
3天前
|
机器学习/深度学习
机器学习基础入门(二)(线性回归与成本函数)
已知一系列房子的大小以及其对应的价格的数据,要求是已知房子大小预测其房子的价格
|
3天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
3天前
|
机器学习/深度学习 数据采集 SQL
【Python机器学习专栏】使用Pandas处理机器学习数据集
【4月更文挑战第30天】本文介绍了如何使用Python的Pandas库处理机器学习数据集,涵盖数据读取、概览、清洗、转换、切分和保存等步骤。通过Pandas,可以从CSV等格式加载数据,进行缺失值、异常值处理,数据类型转换,如归一化、类别编码,并实现训练集与测试集的划分。此外,还展示了如何保存处理后的数据,强调了Pandas在数据预处理中的重要性。
|
3天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 机器学习入门:基础概念与流程
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性,机器学习的基础概念和分类,包括监督学习、非监督学习和强化学习。Python因其丰富的库(如Scikit-learn、TensorFlow、PyTorch)、简单易学的语法和跨平台性在机器学习领域广泛应用。文章还概述了机器学习的基本流程,包括数据收集、预处理、特征工程、模型训练与评估等,并列举了常用的Python机器学习算法,如线性回归、逻辑回归、决策树和支持向量机。最后,讨论了Python机器学习在金融、医疗、工业和商业等领域的应用,鼓励读者深入学习并实践这一技术。
|
3天前
|
XML 安全 Java
从零手写实现 apache Tomcat-02-web.xml 入门详细介绍
`web.xml`是Java Web应用的核心配置文件,描述应用工作方式。它包含Servlet、Filter和Listener的定义。例如,示例展示了如何配置名为`my`的Servlet处理`/my`请求,`LoggingFilter`拦截所有请求,以及`MyServletContextAttrListener`监听应用事件。`web.xml`是服务器理解应用结构与行为的指南。迷你版Tomcat实现——mini-cat(开源:https://github.com/houbb/minicat)。
|
3天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式

热门文章

最新文章