【二等奖方案】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 。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 42. 接雨水(动态规划 / 单调栈)

题目: 链接:LeetCode 42. 接雨水 难度:困难 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2…

爆肝整理,Postman接口测试-参数关联实战(详细步骤)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 接口测试什么时候…

ES6及以上新特性

ES6(ECMAScript 2015)及以上版本引入了许多新特性,每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述: ES6(ECMAScript 2015): let 和 const 声明:引入块级作…

瑞吉外卖实战-笔记

软件开发的流程 角色分工 软件环境 开发环境的搭建 数据库环境 maven环境 1.创建完成后&#xff0c;需要检查一下编码、maven仓库、jdk等 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</a…

pytorch 中 view 和reshape的区别

在 PyTorch&#xff08;一个流行的深度学习框架&#xff09;中&#xff0c; reshape 和 view 都是用于改变张量&#xff08;tensor&#xff09;形状的方法&#xff0c;但它们在实现方式和使用上有一些区别。下面是它们之间的主要区别&#xff1a; 实现方式&#xff1a; reshap…

机器学习--课后作业--hw1

机器学习(课后作业–hw1) 本篇文章全文参考这篇blog 网上找了很多教程&#xff0c;这个是相对来说清楚的&#xff0c;代码可能是一模一样&#xff0c;只是进行了一些微调&#xff0c;但是一定要理解这个模型具体的处理方法&#xff0c;这个模型我认为最巧妙的它对于数据的处理…

HTTP(超文本传输协议)学习

关于HTTP补学 一、HTTP能干什么 通过下图能够直观的看出&#xff1a;“交换数据 ” 二、HTTP请求例子 一个 HTTP 方法&#xff0c;通常是由一个动词&#xff0c;像 GET、POST 等&#xff0c;或者一个名词&#xff0c;像 OPTIONS、HEAD 等&#xff0c;来定义客户端执行的动作。…

Django之JWT库与SimpleJWT库的使用

Django之JWT库与SimpleJWT库的使用 JWTJWT概述头部(header)载荷(payload)签名(signature) Django使用JWT说明jwt库的使用安装依赖库配置settings.py文件配置urls.py文件创建视图配置权限 SimpleJWT库的使用安装SimpleJWT库配置Django项目配置路由创建用户接口测试身份认证自定义…

MP的开发流程-2

RESTful的实现等级 0级&#xff1a;传统的RPC&#xff0c;基于SOAP的WS&#xff0c;调用的服务名&#xff0c;参数放在HTTP协议的body里面&#xff0c;同时必须以POST方式提交&#xff0c;问题在于你必须清楚的知道所有服务&#xff0c;子服务&#xff0c;及其参数的信息&…

FileZilla Server同时共享多个目录(手把手教你使用FileZilla Server同时设置多个目录)

网上的基本全是一句话带过怎么共享多个目录&#xff0c;没图很烦&#xff0c;所以我自己就写一个过程 目录 1、创建ftp用户并设置密码 1.1、进入用户管理 1.2、新建用户 1.3、设置密码 2、添加共享的目录 2.1、选择用户添加目录 2.2、给予用户访问权限 2.2.1、客户端访…

长相思·罚站墙Vue

优化前 看效果图 Vue长相思 刚学Vue&#xff0c;正好在追剧&#xff0c;看到这个小案例觉得挺好玩的&#xff0c;第一天学&#xff0c;代码太简陋了 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta…

windows环境下安装elasticsearch、kibana

通过本文可以快速在windows系统上安装elasticsearch、kibana环境。 当你用Integer类型的时候&#xff0c;要非常小心&#xff0c;因为100等于100、但是200不等于200&#xff0c;当然&#xff0c;如果你会一点小花招&#xff0c;也可以让100不等于100、让200等于200。(运算符比较…

全球十大知名看黄金即时行情的软件名单(综合榜单)

在当今的数字化时代&#xff0c;黄金投资已成为一种受欢迎的投资方式。为了获取即时的黄金行情信息&#xff0c;许多投资者开始使用黄金即时行情软件。然而&#xff0c;选择一款合适的软件并不是一件容易的事情。那么&#xff0c;如何选适合自己需求的软件呢&#xff1f;首先&a…

LeetCode344.反转字符串

344.反转字符串 题目描述 解题思路 这是字符串专题的第一题 在之前反转链表的题目中&#xff0c;我们使用了双指针法来进行反转链表 这道题同样的&#xff0c;也使用双指针&#xff0c;对于字符串的反转&#xff0c;比链表更为简单 因为字符串本质上是一种数组&#xff0c…

【嵌入式学习笔记】嵌入式入门5——窗口看门狗WWDG

1.WWDG简介 WWDG的全称&#xff1a;Window watchdog&#xff0c;即窗口看门狗WWDG的本质&#xff1a;能产生系统复位信号和提前唤醒中断的计数器WWDG的特性&#xff1a;递减的计数器&#xff0c;当递减计数器值从 0x40减到0x3F时复位&#xff08;即T6位跳变到0&#xff09;&am…

性能优化-react路由懒加载和组件懒加载

背景 随着项目越来越大&#xff0c;打包后的包体积也越来越大&#xff0c;严重影响了首屏加载速度&#xff0c;需要对路由和组件做懒加载处理 主要用到了react中的lazy和Suspense。 废话不多说&#xff0c;直接上干货 路由懒加载 核心代码 import React, { lazy, Suspens…

三款AI写作宝介绍,教你玩转AI写作

AI写作宝是一款利用人工智能技术自动生成文章的工具。它采用先进的自然语言处理算法&#xff0c;可以在短时间内生成高质量的文章。与传统的写作方式相比&#xff0c;AI写作宝有着更快的速度、更高的准确性和更低的成本&#xff0c;成为了许多人工智能爱好者和写作从业者的首选…

写字楼门禁如何管理?最最新方法来了!

在现代社会&#xff0c;随着城市化和商务发展的蓬勃推进&#xff0c;大厦写字楼作为繁忙的商业中心和办公场所&#xff0c;其安全管理和员工考勤变得尤为重要。为了应对这一挑战&#xff0c;人脸门禁考勤机应运而生&#xff0c;成为大厦写字楼的安全保障和工时管理的关键工具。…

【数模】聚类模型

分类和聚类 分类&#xff1a;最终类别是确认的&#xff0c;把各样本分到已有的类别中聚类&#xff1a;最终类别是未知的&#xff0c;把所有样本划分出最终类别 一、K-means聚类算法 1.1 K-means算法了解 算法流程&#xff08;推荐使用流程图&#xff1a;更简洁&#xff0c;且…

Mybatis引出的一系列问题-JDBC 的探究

1 引入对JDBC的理解-1 一般来说&#xff0c;Java应用程序访问数据库的过程是&#xff1a; 装载数据库驱动程序&#xff1b;通过jdbc建立数据库连接&#xff1b;访问数据库&#xff0c;执行sql语句&#xff1b;断开数据库连接。 Public void FindAllUsers(){//1、装载sqlserve…