美文网首页
unit5 K近邻算法

unit5 K近邻算法

作者: 巴拉巴拉_9515 | 来源:发表于2018-08-17 11:11 被阅读0次

    《web安全之机器学习入门》第五章:K近邻算法提供了三种web攻击的识别应用。以下均使用KNN算法解决。

    一、异常检测操作识别

    黑客入侵web服务器后,通常会通过系统漏洞进一步提权,获得root权限。schonlau在他的个人网站上发布了针对Linux操作的数据信息。

    1.1、数据介绍
    • 训练数据包含15000条操作命令,前5000条为正常操作,后10000条日志中随机包含异常操作。
    • 为了便于分析,每100条操作作为一个操作序列,同时进行标准,每个操作中只要有1条操作异常就认为这个操作序列异常。
    每行为一个操作指令,共15000条
    1.2、特征提取
    • 去重指令,15000个指令去重后的指令为107个。把这107个指令作为数据集的特征提取,1/0分别表示是否包含该指令。
    特征提取
    1.3、有监督学习KNN

    使用cross_val_score检验模型识别准确率稳定性,显然整体结果不错。
    cross_validation.cross_val_score(neigh, user_cmd_feature, y, n_jobs=-1, cv=10)
    以下为运行10次KNN算法的运算精度。
    [1. 1. 0.93333333 1. 1. 1. 1. 1. 0.93333333 0.92857143]

    1.4、识别机制原理

    通过以上数据集训练KNN算法形成一个操作命令的识别机制。
    当出现新操作命令时,提取它的107个特征数据集,去寻找与他距离最接近的邻居,邻居的分类就是新操作命令的分类。

    二、Rootkit恶意软件的识别

    rootkit是一种恶意软件,而Linux是其重要的攻击对象,数据集采用KDD 99的tcp连接内容。

    KDD数据

    提取与Rootkit相关的特征:

    特征 描述
    hot 访问系统敏感文件/目录的次数,范围 [0,101]
    num_failed_logins 尝试登陆失败的次数,范围 [0,5]
    logged_in 是否成功登陆1/0
    num_compromised compromised条件(**)出现的次数,范围 [0, 7479]
    root_shell 是否获得超级用户权限1/0
    su_attempted 若出现”su root” 命令则为1
    num_root root用户访问次数,范围 [0, 7468]
    num_file_creations 文件创建操作的次数,范围 [0, 100]
    num_shells 使用shell命令的次数,范围 [0, 5]
    num_access_files 访问控制文件的次数,范围 [0, 9]
    num_outbound_cmds 一个FTP会话中出站连接的次数
    is_hot_login 登录是否属于“hot”列表(***)
    is_guest_login 是否为guest 登录1/0

    特征提取完以后,训练KNN模型。当出现新的数据信息时,提取以上特征判断新数据的分类。

    三、webshell检测

    webshell:匿名用户(入侵者)通过WEB服务端口,获得对WEB服务器有某种程度上操作的权限。由于其大多是以网页脚本的形式出现,也有人称之为网站后门工具。
    数据采用ADFA-LD数据集中webshell相关数据。

    3.1、正常样本数据

    normal的样本数据包含833个txt文本,每个数据文本独立记录了一段时间内的系统调用顺序,每个系统调用都用数据编号。例如0833的内容如下:

    每个系统调用都用数据编号,部分编号含义如下。例如编号0对应系统调用顺序为_NR_io_setup 0 到 sys_io_setup

    编号对应的操作
    3.2、webshell攻击数据

    攻击数据的内容依旧是一段时间内的系统调用顺序,每个系统调用都用数据编号。

    3.3、特征提取

    每个系统调用的编号都作为一个特征,normal和webshell数据合并提取特征的数量。
    就整个数据集的统计而言,编号63出现128次,编号42出现122次,···

    KNN模型训练

    使用cross_val_score检验模型识别准确率稳定性,显然整体准确率在95.9%,分类效果较好。
    scores = cross_validation.cross_val_score(clf, X, y, n_jobs=-1, cv=10)
    [0.95833333 0.94791667 0.97916667 0.96842105 0.96842105 0.84210526 0.97894737 0.98947368 0.9787234 0.9787234 ]

    相关文章

      网友评论

          本文标题:unit5 K近邻算法

          本文链接:https://www.haomeiwen.com/subject/ereobftx.html