【二等奖方案】Web攻击检测与分类识别赛题「机器学习」团队解题思路

2022 CCF BDCI 数字安全公开赛

赛题Web攻击检测与分类识别

地址:http://go.datafountain.cn/4Zj

@机器学习战队

获奖方案

团队简介

我们团队由五名成员组成,对机器学习都非常感兴趣,同时在机器学习领域有着丰富的实战经验,对结构化数据,nlp、cv任务都有丰富的经验。在工作和比赛中,都曾获得过一些优异的成绩。

队长:吴绍武,中山大学 网络空间安全专业 在读博士;

队员:冯楠坪、齐福晓、闫利帅来自中企网络通信技术有限公司;

队员:张琦华,加州大学圣塔巴巴拉分校 数学专业。

图片

摘要

本文描述了我们团队针对2022 CCF BDCI Web攻击检测与分类识别这一赛题的解决方案及算法。我们团队的方案是观察数据特点,对数据进行数据统计后进行可视化分析,然后基于针对TF-IDF维度特征的特征工程,包括特征提取、特征融合、特征选择等,使用了Lightgbm建模,利用概率加权对结果进行提升,最终初赛成绩0.96922604,线上排名第四。

关键词

Web攻击日志、TF-IDF、数据增强

赛题与方案思路

1.1 赛题背景

某业务平台平均每月捕获到Web攻击数量超过2亿,涉及常见注入攻击,代码执行等类型。传统威胁检测手段通过分析已知攻击特征进行规则匹配,无法检测未知漏洞或攻击手法。如何快速准确地识别未知威胁攻击并且将不同攻击正确分类,对提升Web攻击检测能力至关重要。利用机器学习和深度学习技术对攻击报文进行识别和分类已经成为解决该问题的创新思路,有利于推动AI技术在威胁检测分析场景的研究与应用。

1.2 任务解读

NLP文本多分类任务,通过对训练集进行机器学习建模学习,提升模型精确率和召回率,然后在测试集上检验模型效果。

1.3 方案思路

数据集共包含6类攻击类型,观察数据集发现不同的攻击类型中包含的文本有明显的差异,比如高频词、中英文、长度、文本结构、特殊字符等,所以选择TF-IDF会是一个非常棒的研究方向。对数据进行统计分析后,进行可视化,分析关键因素。构造特征后,选择使用Lightgbm进行建模,在模型训练过程中,模型参数的选择尤其重要,通过不断的训练,对模型参数进行调整,提升模型效果。

方案架构

2.1 方案流程

图片

2.2 数据探究

观察各类别数据的基础特征,发现具有鲜明的特征,比如中文文本只在目录遍历中出现;sql注入有非常明显的sql关键词;远程代码执行有非常高频的系统命令词;XSS跨站脚本有明显的http特征,白的文本长度普遍较低。鉴于各类别的数据有明显的文本特征,选择TF-IDF是一个非常好的选择,可以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度,字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

图片

各类别数据样本量严重不平衡,模型选择Lightgbm,对于处理样本不均衡的数据集效果也很好,所以在此次任务中,没有进行单独的采样处理。

图片

文本长度也是有明显的区别

图片

2.3 特征工程

Method字段是明显的类别特征,所以要针对此字段处理,转成int类型,除{'GET': 0, 'POST': 1, 'PUT': 2, 'HEAD': 3}以外,还有极个别样本为其他类型,也做了异常值的处理。对于user_agent、'url', 'refer', 'body'则提取词频特征;

在提取完词频特征以后,模型效果还是不够理想,继续分析文本特征,值得一提的是,不同的列类别中字符也是明显的不同,如XSS跨站脚本中,因为包含url信息,所以有非常多是“%”等;目录遍历列表中有非常多的“:”,所以提取特殊字符的词频特征也是非常有必要的。同时也需要考虑到特殊字符的顺序组合,比如文件路径。

方案亮点

1. 关键词:通过观察文本,发现不同的分类在关键词特征上非常明显,使用TF-IDF的思想构造词频特征有明显的效果,而且提取词频特征在计算方面也有速度优势。

2. 特殊字符:不同的攻击类别,在日志中包含的特殊字符也是有明显的不一样,在特征中增加特殊字符特征,对模型效果也有明显提升。

3. 特征组合:在原始特征提取的基础上,增加组合特征,丰富特征维度。

4. 通用性:对于文本多分类任务,采用TF-IDF+Lightgbm建模的方式,其思想可以迁移至其他业务场景。

5. 模型参数调优:在特征无法提升的时候,对模型的参数进行调整,进一步增强模型效果。

模型效果

在本地电脑使用CPU进行训练,Train+Predict总时长201.74秒;单样本的预测耗时仅需0.000077秒;在训练结束后,模型的只有13Mb;而模型取得的F1值为0. 96922604。

致谢

感谢DataFountain提供优质比赛平台,感谢中国计算机学会 、大数据协同安全技术国家工程研究中心 、清华大学网络研究院-北京奇虎科技有限公司网络空间测绘联合研究中心、 360信息安全中心。在此次比赛中取得的优异成绩离不开团队成员的通力合作,对于问题多思考,提出来非常好的模型优化建议。此外,也向此次大赛的官方组织者表示由衷的感谢。

参考

[1] Guolin Ke,Qi Meng,LightGBM:A Highly Efficient Grandient Boosting Decision Tree,NIPS 2017。

[2] Search Engines: Information Retrieval in Practice 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/22186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年下半年软考报名时间及汇总(附报名流程图)

2023下半年软考考试时间为11月4、5日,2023年下半年软考全国报名平台入口8月14日开通,由此可知各地报名时间将会从8月14日起陆续开始。千万别错过报名了哦!这几天要多关注! 2023年下半年软考考试安排各科目考试时间已定&#xff0…

无人机机巢有哪些,无人机机场/机场的主要分类

随着无人机技术的飞速发展,无人机已经渗透到了物流、农业、救援、公共安全等多个领域。而为了使这些无人机能更加高效、灵活地运行,一个新的概念应运而生,那就是无人机机巢(UAV Nest)。复亚智能无人机机巢是一种供无人…

Android Studio新版本logcat过滤说明

按包名过滤 //输入package:(输入一个p就会有提示的) ,后面加上包名 比如: package:com.xal.runcontrol package:包名可以完整或者输部分包名即可 package:包名需要输完整准确 package~:正则表达式过滤 不了解正则表达式的可以参考&#…

vue中显示在页面顶部的进度条插件——NProgress

我们在一些网站中经常见到导航栏上方的进度条显示,大家仔细观察,其实csnd中也有类似的效果,如下图显示效果,我们现在就来一起看看这个功能需求是怎么实现的。 一、功能需求 首先,实现这个功能其实不难,说实…

ElementUI el-table 鼠标滚动失灵的问题及解决办法

Bug:ElementUI el-table 鼠标滚轮下滑动失灵的情况 我测出来的这个问题条件很苛刻,需要达到以下几个条件才会触发: 1.element plus(其他版本没试) 2.el-table-column组件有fixed属性时 3.template标签中有el-butto…

2023最新版本Activiti7系列-监听器讲解

监听器 1.执行监听器 在流程实例执行过程中触发某个事件时,Activiti提供的执行监听器可以捕获该事件并执行相应的外部的Java代码,或者对指定的表达式求值。在流程实例执行过程中触发某个事件时,Activiti提供的执行监听器可以捕获该事件并执行…

8.4作业

用信号量的方式实现打印1234567后打印7654321循环交替打印。 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<head.h> char buf[]"1234567"; sem_t sem; void *callBack1(void *arg) {int i0;int sstrlen(buf)-1;while…

el-cascader级联选择器加载远程数据、默认开始加载固定条、可以根据搜索加载远程数据。

加载用户列表分页请求、默认请求20条数据。想添加远程搜索用户功能。原有的方法filter-method不能监听到输入清空数据的时候。这样搜索完无法返回默认的20条数据。直接监听级联选择的v-model绑定的值是无法检测到用户自己输入的。 解决思路&#xff1a; el-cascader 没有提供…

list交并补差集合

list交并补差集合 工具类依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version> </dependency><dependency><groupId>commons-collections&…

二叉树的遍历(先序遍历,中序遍历,后序遍历)递归与非递归算法

目录 一、先序遍历题目链接1.递归2.非递归 二、中序遍历题目链接1.递归2.非递归 三、后序遍历题目链接1.递归2.非递归 一、先序遍历 先序遍历&#xff1a;先遍历一颗树的根节点&#xff0c;后遍历左子树&#xff0c;最后遍历右子树 先序遍历序列&#xff1a; 1 -> 2 -> 4…

Linux常用命令

1 查找命令 grep命令 命令是一种强大的文本搜索工具 格式&#xff1a; grep [option] pattern [file] 可使用 —help 查看更多参数。 使用实例&#xff1a; ps -ef | grep sshd 查找指定 ssh 服务进程 ps -ef | grep sshd | grep -v grep 查找指定服务进程&#xff0c;排除…

采用 SpringDoc、javadoc 无注解零入侵基于java注释

今天在gitee上学习到一个&#xff0c;个人觉得非常使用的功能。就是采用 SpringDoc、javadoc 无注解零入侵基于java注释&#xff0c;只需把注释写好 无需再写一大堆的文档注解了。 下面是源码的地址 RuoYi-Vue-Plus: 后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-TokenMybati…

LeetCode 27题:移除元素

题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长…

攻防世界-reverse-logmein

题目描述&#xff1a;菜鸡开始接触一些基本的算法逆向了 下载附件&#xff0c;是一个可执行程序 1. 思路分析 逆向出来看看代码 从代码中来看&#xff0c;密码长度需要和V8相等&#xff0c;并且每一个字符的运算结果需要满足 s[i] (char)(v8[i % v6 - 8] ^ v8[i]) 但是这…

libtorch::Tensor与Eigen::Tensor互相转换

1. Eigen::Tensor转libtorch::Tensor Eigen::Tensor<float, 3> a{2,4,3};a.setRandom();a(1,2,1) 11.0;/*核心*/torch::Tensor b torch::from_blob(a.data(), {1, a.dimension(2), a.dimension(1), a.dimension(0)});/*核心*/b b.permute({0, 3, 2, 1});std::cout <…

vue2、vue3生命周期详解以及对比

文章目录 对比vue2-vue3vue3生命周期生命周期的主要阶段详情 vue2 生命周期生命周期钩子函数 总共11个 常用的8个按照这四个阶段我们对应有八个生命周期钩子函数vue生命周期使用场景 对比vue2-vue3 如果熟悉vue2的话&#xff0c;vue3信手拈来&#xff0c;看图 vue3生命周期 on…

impala使用md5(3条命令搞定)

文章目录 前言1、 找到当前使用的hive版本的hive-exec.jar文件2、上传到HDFS上。改权限3、impala加载function总结 前言 impala没有md5函数。 1、 找到当前使用的hive版本的hive-exec.jar文件 我们用的CDH&#xff0c;所以hive-exec.jar在每台服务器上都准备好的。 我装了loca…

解决多线程环境下单例模式同时访问生成多个实例

如何满足单例&#xff1a;1.构造方法是private、static方法、if语句判断 ①、单线程 Single类 //Single类&#xff0c;定义一个GetInstance操作&#xff0c;允许客户访问它的唯一实例。GetInstance是一个静态方法&#xff0c;主要负责创建自己的唯一实例 public class LazySi…

HCIP BGP选路规则总结

选路前提条件 多条BGP路由目标相同&#xff0c;且均可优(下一跳可达、同步关闭)&#xff0c;具有相同的优先级&#xff08;管理距离&#xff09;。 1、优选Preference_Value值最高的路由&#xff08;私有属性&#xff0c;仅本地有效&#xff09;。 不传递 权限最高属性 可…

【IDEA+Spark Streaming 3.4.1+Dstream监控套接字流统计WordCount保存至MySQL8】

【IDEASpark Streaming 3.4.1Dstream监控套接字流统计WordCount保存至MySQL8】 把DStream写入到MySQL数据库中 Spark 3.4.1MySQL 8.0.30sbt 1.9.2 文章目录 【IDEASpark Streaming 3.4.1Dstream监控套接字流统计WordCount保存至MySQL8】前言一、背景说明二、使用步骤1.引入库2…