【三等奖方案】Web攻击检测与分类识别赛题「Cyan」团队解题思路

news2024/12/26 10:36:20

2022 CCF BDCI 数字安全公开赛「Web攻击检测与分类识别」赛题@Cyan战队获奖方案

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

团队简介

团队成员来自中国科学院大学,对数据挖掘与网络安全有浓厚兴趣,曾多次获得大数据安全分析等比赛的Top名次。希望通过此次比赛,巩固数据挖掘知识,提升相关技能,同时认识更多优秀的同学,相互交流,共同进步!

图片

摘要

针对本次Web攻击检测与分类识别问题,本团队通过数据分析、特征工程与模型构建的流程实现基于HTTP报文的Web攻击检测与分类识别。首先,对所提供的样本数据进行详细的分析与梳理,并从Web攻击的角度分析数据字段与攻击类型间的关联;然后通过特征工程,提取出拆分特征、统计特征、TF-IDF特征三类有效特征;最后的模型构建部分,对数据不平衡进行处理的同时,采用LightGBM模型对平衡后的训练数据进行特征学习,并对测试样本进行预测,最终模型的Macro F1值达到了0.96861578,并且测试速度仅需0.695 ms/样本,实现快速准确的Web攻击检测与分类识别。

关键词

数据挖掘、机器学习、Web攻击检测

背景介绍

如今,随着Web攻击数量的日益增加,传统威胁检测手段通过分析已知攻击特征进行规则匹配,无法检测未知漏洞或攻击手法。如何快速准确地识别未知威胁攻击并且将不同攻击正确分类,对提升Web攻击检测能力至关重要。利用AI技术对攻击报文进行识别和分类已经成为解决该问题的创新思路,同时也有利于推动AI技术在威胁检测分析场景的研究与应用。

本次Web攻击检测与分类识别任务主要是依据给出的HTTP报文样本,对Web攻击进行检测与分类。在对训练集进行分析的基础上,通过特征工程、机器学习等方法构建AI模型,实现对每一条样本正确且快速的分类。

方案设计

图片

图1:方案设计框架

如图1所示,本团队对该赛题的主要思路可以主要分为三个部分,数据分析部分将对所提供的Method、User Agent、URL、Refer、Body进行分析,从Web攻击的角度分析数据字段与攻击类型的关联;特征工程部分则针对性地对所提供的数据字段进行特征工程,挖掘与攻击类型相关的特征,并根据分析结果对特征进行对应的处理;最后的模型构建部分则通过构建相应模型进行特征学习,并对测试样本进行预测,从而获得Web攻击类型的最终预测结果。

2.1 数据分析

数据分析部分,首先本次赛题是一个多分类任务,所提供的数据为HTTP报文样本,报文的类别可分为白样本以及SQL注入、XSS跨站脚本、命令执行、目录遍历、远程代码执行五种黑样本

图片

图2:各类别样本数量

如图2可知,各个类别的样本的数量并不平衡,其中SQL注入的报文样本最多(为14038个)、XSS跨站脚本的报文样本最少(为659个),在后续部分也会做相应的数据不平衡处理。

从数据字段与攻击类型关联的角度,不同的攻击类型在字段中所呈现的特征也有所不同,在后续部分也会针对与攻击类型关联的特定的字符特征对各个字段进行统计,以达到Web攻击检测与分类的目的。

2.2 特征工程

特征工程部分,这里我针对所有字段均进行了特征构造,所构造的特征大致可分为拆分特征、统计特征、TF-IDF特征三类。

拆分特征主要是不同字段的文本信息中相应字段的拆分特征,如User Agent中的browser信息、os信息、device信息以及URL和Refer中的netloc信息、params信息、query信息等;

统计特征则是对不同字段中指定文本的统计信息,包含各个字段的长度、特殊字符个数、大小写字符个数、URL参数个数、URL参数长度等以及各个字段中与攻击相关的可疑字符统计,如:select个数、exec个数、script个数、eval个数等;

TF-IDF特征则是将单个样本字段看作一段文本,评估经过分词后的单词在这段文本中的重要程度,如果某个单词在一篇文章中出现的频率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TF-IDF特征包含了User Agent、URL、URL Path、URL Query、Refer、Body的TF-IDF特征。

2.3 模型构建

模型构建部分,首先对数据分析部分所发现的数据不平衡问题进行相应处理,这里采用的是SMOTE(Synthetic Minority Over-Sampling Technique,合成少数类过采样技术)方法。如图3所示,该算法的思想是针对少数类样本,在它的K近邻中随机选择一个样本,并在特征空间中两个样本之间随机选择的点创建合成样本,使得合成样本保证差异性的同时且与原始样本相近,通过SMOTE算法的不平衡处理,使得所有类别的样本数量能够保持一致,便于后面模型的学习。

图片

图3:SMOTE算法

在模型选择方面,这里选择的采用Macro F1指标优化的是LightGBM模型,LightGBM模型是一种基于梯度提升的决策树模型,同时也被广泛应用于学术界以及工业界。其中,验证策略采用的是如图4所示的十折分层交叉验证,保证了每一折的数据中各类别样本的比例保持一致。

图片

图4:十折分层交叉验证

实验结果

模型训练与测试均在Intel Core i5-10500 CPU、8GB RAM上进行,最终模型的线上Macro F1为0.96861578,整体模型的大小为64.9MB,模型对所有测试样本的测试时间为2.78s,平均每个测试样本的预测速度为0.695 ms/样本。

总结

首先,本方案从Web攻击的角度针对性地对所提供的数据字段进行了分析与梳理,并从中提取出拆分特征、统计特征、TF-IDF特征三类关键特征;

其次,针对训练数据类别不平衡的问题,对训练数据进行了平衡处理,弥补数据不平衡导致的样本量少的分类所包含的信息过少的问题;

最后,使用采用Macro F1指标优化的LightGBM单模型对平衡后的数据进行建模,相较于多个不同模型,使用LightGBM单模型的速度更快,能更好的对Web请求进行快速检测与分类。

致谢

感谢大数据协同安全技术国家工程研究中心、清华大学网络研究院-北京奇虎科技有限公司网络空间测绘联合研究中心、360信息安全中心对本赛题的悉心筹备,感谢中国计算机学会与DataFountain所提供优质的比赛平台,感谢评委专家的悉心评审与指导。

参考

[1] Yun-tao Z, Ling G, Yong-cheng W. An improved TF-IDF approach for text classification[J]. Journal of Zhejiang University-Science A, 2005, 6(1): 49-55.

[2] Xuan C D, Nguyen H D, Nikolaevich T V. Malicious URL Detection based on Machine Learning[J]. International Journal of Advanced Computer Science and Applications, 2020, 11(1): 6.

[3] Chawla N V, Bowyer K W, Hall L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of artificial intelligence research, 2002, 16: 321-357.

[4] Ke G, Meng Q, Finley T, et al. Lightgbm: A highly efficient gradient boosting decision tree[J]. Advances in neural information processing systems, 2017, 30: 3146-3154.

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

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

相关文章

网络:SecureCRT介绍

1. 使用Tab键补全时出现^I,如下操作

MySQL数据库服务器的简化(此操作针对开发人员,不推荐运维人员)

目录 引言 一,5.7之前版本简化 二,5.7之后版本简化 引言 简化数据库只是为了让数据库文件更小更简单。对于开发人员来说是一个不错的选择,h是将数据库只用于简单的数据操作,但是对于运维人员来说就是灾难。 建议每次删除前可以备…

vscode 通过mongoose 连接mongodb atlas

了解mongodb 的项目结构 1.代表集群名称 > 2.代表数据库名称>3.代表每个 collection名称 三者范围为从大到小的关系 (一对多)。每个集群有不同的连接地址、用户信息(Database Access)、ip配置信息(Network Acce…

安全狗V3.512048版本绕过

安全狗安装 安全狗详细安装、遇见无此服务器解决、在windows中命令提示符中进入查看指定文件夹手动启动Apache_安全狗只支持 glibc_2.14 但是服务器是2.17_黑色地带(崛起)的博客-CSDN博客 安全狗 safedogwzApacheV3.5.exe 右键电脑右下角安全狗图标-->选择插件-->安装…

Vue3基础(1)

1.简单的vue实例 1.data函数介绍 也可以修改data里的数据 2.自定义函数 调用函数 3.Vue模板语法 (1).V-html (2)三目运算符的支持 (3)对函数的支持 (4)v-bind 值动态修改 4.指令 1.v-if和v-else的使用

数据截断、频谱泄漏与窗函数的选择

目录 数据截断、频谱泄漏与窗函数的选择 什么是频谱泄漏? 解决频谱泄漏问题的方法 主瓣和旁瓣 窗函数介绍 窗函数解决频谱泄漏问题的原理 窗函数的种类、特点和如何使用 1、矩形窗 2、三角窗 3、汉宁窗 4、海明窗 5、布莱克曼窗 6、巴特窗:…

docker 保存和载入镜像

查看本机docker镜像 docker images保存镜像 docker save -o /home/space/work1/docker_qnx7.1.tar.gz a01ee6d74c36复制镜像到其他服务器 scp /home/space/work1/docker_qnx7.1.tar.gz XXXIP:/home/dell/work1/登录新 服务器操作 docker load -i docker_qnx7.1.tar.gz载入后…

滇医通微信小程序分析笔记

注意 本文章仅供学习交流使用,如果你是铁粉你就会知道博主之前发布过一篇相关的文章,但是由于代码涉及到法律相关所以就隐藏了,两年的时间过去了,因为女朋友已经早早安排上了,所以就搁置了,本次不做代码分…

【Linux】Linux服务器连接百度网盘:实现上传下载

【Linux】Linux服务器连接百度网盘:实现上传下载 文章目录 【Linux】Linux服务器连接百度网盘:实现上传下载1. 前言2. 具体过程2.1 pip 安装所需包2.2 认证(第一次连接需要认证)2.3 下载所需文件或者目录2.4 其他指令使用2.5 注意…

Vue3和typeScript路由传参

1 params传的参数,页面刷新就消失,而query传的参数,页面刷新还会存在,所以通常用query。 query传参 跳转页面:拿到router对象,调用push方法做跳转. import { useRoute,useRouter} from "vue-router"; export default…

SAP自建表日志

文章目录 1.在表里加上日志记录字段1.1 加入日志结构1.2 在代码中调用记录日志通用函数1.3 在SM30里面记录日志1.4 缺点1.5 优点 2.表技术设置-日志数据更改2.1 RZ10或者RZ11修改系统参数2.2 设置表的属性2.3 查询日志2.4 缺点2.5 优点 3 SCDO文档对象3.1 勾选相应字段-数据元素…

Redis的订阅者和发布者模式、主从双备和密码认证

四、Redis的订阅者和发布者模式、主从双备和密码认证 1、Redis的订阅者和发布者模式 两个数据库,一个是10,一个是15。订阅频道: 向频道推数据: 接收到数据: 2、redis的高可用(HA)主从双备 模拟…

C++——类与对象(中)

目录 类的6个默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载const成员函数取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时…

使用树莓派picow和drv8833驱动直流电机

raspberry pico w引脚图 1. 准备工作 板子编辑器raspberry pico wmicropython(thonny编辑器) 最新的raspberry pi pico w系统包下载地址。 点亮板载led灯 需要注意的是pico的板载led灯是GPIO25引脚,picow的板子led灯则直接用Pin包的&qu…

【1++的C++初阶】之继承

👍作者主页:进击的1 🤩 专栏链接:【1的C进阶】 文章目录 一,什么是继承?二,基类和派生类对象赋值转换三,派生类的默认成员函数四,继承与友元,静态成员五&…

Prometheus服务器、Prometheus被监控端、Grafana、Prometheus服务器、Prometheus被监控端、Grafana

day03 day03Prometheus概述部署Prometheus服务器环境说明:配置时间安装Prometheus服务器添加被监控端部署通用的监控exporterGrafana概述部署Grafana展示node1的监控信息监控MySQL数据库配置MySQL配置mysql exporter配置mysql exporter配置prometheus监控mysql自动…

uni-app引用外部图标库(阿里矢量图)

uni-app引用外部图标库(阿里矢量图) 作为前端程序员,nui-app是必备的,但是有时候内置的图标,组件又不完全满足,这里就可以引进外部图标,这里引用的是阿里矢量图标 第一步,在项目目…

(树) 剑指 Offer 32 - III. 从上到下打印二叉树 III ——【Leetcode每日一题】

❓剑指 Offer 32 - III. 从上到下打印二叉树 III 难度:中等 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推…

JVM深入 —— JVM的体系架构

前言 能否真正理解JVM的底层实现原理是进阶Java技术的必由之路,Java通过JVM虚拟机的设计使得Java的延拓性更好,平台无关性是其同时兼顾移动端和服务器端开发的重要特性。在本篇文章中,荔枝将会仔细梳理JVM的体系架构和理论知识,希…

547. 省份数量

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你一…