Web安全之机器学习入门
上QQ阅读APP看书,第一时间看更新

3.2 数据集

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

3.2.1 KDD 99数据

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

图3-1 KDD大赛

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

表3-2 KDD 99 攻击类型详情

随后来自哥伦比亚大学的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),基本连接特征包含了一些连接的基本属性,如连续时间、协议类型、传送的字节数等。

表3-3 KDD 99 TCP连接基本特征

● TCP连接的内容特征,见表3-4。

表3-4 KDD 99 TCP连接的内容的特征

● 基于时间的网络流量统计特征,见表3-5。

表3-5 KDD 99 基于时间的网络流量统计特征

● 基于主机的网络流量统计特征,见表3-6。

表3-6 KDD 99 基于主机的网络流量统计特征

3.2.2 HTTP DATASET CSIC 2010

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

正常请求格式如图3-2所示。

图3-2 CSIC 2010正常请求示例

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

图3-3 CSIC 2010攻击请求示例

3.2.3 SEA数据集

2001年Schonlau等人第一次将内部攻击者分类为“叛徒”(Traitor)与“伪装者”(Masquerader),其中“叛徒”指攻击者来源于组织内部,本身是内部合法用户;而“伪装者”指外部攻击者窃取了内部合法用户的身份凭证,从而利用内部用户身份实施内部攻击。随后该团队构造了一个公开的检测伪装者攻击的数据集SEA,该数据集被广泛用于内部伪装者威胁检测研究。

SEA数据集涵盖70多个UNIX系统用户的行为日志,这些数据来自于UNIX系统acct机制记录的用户使用的命令。SEA数据集中每个用户都采集了15000条命令,从用户集合中随机抽取50个用户作为正常用户,剩余用户的命令块中随机插入模拟命令作为内部伪装者攻击数据。SEA数据集中的用户日志类似于下面的命令序列:

    {cpp, sh, cpp, sh, xrdb, mkpts...}

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

Schonlau在他的个人网站http://www.schonlau.net/上发布了SEA数据集,见图3-4。

图3-4 Schonlau个人网站

3.2.4 ADFA-LD数据集

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

图3-5 ADFA主页

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

表3-7 ADFA-LD攻击类型

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每天在网上搜集超过1000GB的信息,不仅给出多达几十亿的网址链接,而且为其中的每一个网站进行了排名。可以说,Alexa是当前拥有URL数量最庞大、排名信息发布最详尽的网站。Alexa排名是常被引用的用来评价某一网站访问量的指标之一。事实上,Alexa排名是根据用户下载并安装了Alexa Tools Bar嵌入到IE、FireFox等浏览器,从而监控其访问的网站数据进行统计的,因此,其排名数据并不具有绝对的权威性。但其提供了包括综合排名、到访量排名、页面访问量排名等多个评价指标信息,且尚没有而且也很难有更科学、合理的评价参考。Alexa对外提供了全球排名TOP一百万的网站域名的下载,文件是CSV格式,以排名、域名组成,如图3-6所示。

图3-6 Alexa排名数据

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所示。

图3-7 MNIST图片示例

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

表3-8 MNIST数据集合详解

MNIST的网址为http://yann.lecun.com/exdb/mnist/,如图3-8所示。

图3-8 MNIST官网

也可以使用离线版的MNIST文件,下载链接为:

    http∶//www.iro.umontreal.ca/~lisa/deep/data/mnist/mnist.pkl.gz

文件读取方式为:

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

图3-9 Movie Review Data官网

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,分别代表正面和负面评价。

图3-10 Movie Review Dat文件夹结构

Movie Review Data对应网址为:http://www.cs.cornell.edu/People/pabo/movie-review-data/

3.2.9 SpamBase数据集

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

图3-11 SpamBase主页

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

特征属性举例如图3-12所示。

图3-12 SpamBase数据特征举例

数据来源为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

SpamBase对应网址为:http://archive.ics.uci.edu/ml/datasets/Spambase

3.2.10 Enron数据集

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

图3-13 Enron数据集主页

Enron数据集合使用不同文件夹区分正常邮件和垃圾邮件,如图3-14所示。

图3-14 Enron数据集文件夹结构

正常邮件内容举例如下:

    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

垃圾邮件内容举例如下:

    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 .

Enron数据集对应的网址为:http://www2.aueb.gr/users/ion/data/enron-spam/