2 有用
56 下载

【毕业设计】基于机器学习的SQL注入检测系统的研究与实现

文件列表(压缩包大小 15.95M)

免费

概述

研究目的

通过提出的SQL注入检测系统通过对用户输入进行预处理、词法分析、机器学习分析等步骤进行检测,进而执行不同的决策手段并最终输出威胁级别。

研究方法

模型训练

样本收集

攻击样本来自Github上的项目libinjection(https://github.com/client9/libinjection/) 去除特别生僻和重合部分,筛选出约5000条; 正常样本通过Firefox的FoxyProxy代理插件,截取正常网页访问的流量,分析和提取日志文件数据,并去重,筛选出约15000条样本。

样本预处理

1)去噪: 筛除了包含符合GB2312和UTF-8编码中的中文编码标准的样本。 2)递归解码: 对经过编码的用户输入进行递归解码,一直到获得最终应用程序真正接收的payload。

词法分析

对预处理模块输出的payload根据SQL语句的特征进行词法分析,转化成特征数组,再进一步生成用于机器学习的特征向量。 如payload: 1' and select 0x4f714d68 = 0x62624f77 and 'something'='something 经词法分析,生成特征数组: <and(keyword)> <select(keyword)> <16hex> <16hex> <and(keyword)> 再通过类库进一步转化成特征向量。

机器学习

机器学习模块使用python机器学习框架Scikit-Learn,通过对比三种算法模型在运算效率和分类准确率的表现,筛选出系统最终的算法模型。

系统构建

检测模块

检测模块使用模型训练过程最终训练筛选出的模型,检测用户输入。

威胁处理模块

包含威胁分级、邮件告警、记录威胁三个过程。 威胁分级算法参考前人经验总结和自己测试总结的经验,对payload中的关键特征,如编码类型、SQL语句关键字比例、16进制数字个数进行统计,设定阀值,分致命、高危、中危、低危四个级别。 邮件告警使用了python的类库,向管理员发送简单的告警信息。 记录威胁主要是为控制台存储数据。

管理员控制台

控制台可以查看系统检测拦截的威胁流量详情信息,并提供人工判断和重新训练算法的接口。

研究结论

详见文件中MP4文件演示

论文摘要

【摘要】SQL注入攻击是主要的网络攻击技术。目前为止,对SQL注入攻击的主要防御手段存在诸如过度依赖后台、开发周期长、部署难度高等问题。因此,本文提出一种工作在HTTP应用层,不依赖后台,仅需通过分析用户输入就能检测到潜在威胁的SQL注入检测技术。本文提出的SQL注入检测系统通过对用户输入进行预处理、词法分析、机器学习分析等步骤进行检测,进而执行不同的决策手段并最终输出威胁级别。该SQL检测系统的设计特点为:仅需拦截和提取用户输入,无需依赖其他后台信息;通过预处理和词法分析提取payload,并转化特征向量;通过对三种机器学习方法的训练和对比,筛选出表现最佳的机器学习模型。实验表明,相比于其他的SQL注入检测模型,该模型在仅需要采集用户输入的情况下具有较高的准确度和检测效率,能够有效地检测和防御SQL注入攻击。 【关键词】SQL注入;机器学习;朴素贝叶斯;Scikit-Learn

系统使用介绍

1. 在需要部署本SQL注入检测系统的应用服务器上的程序入口添加一个全局API拦截器; 2. 登录检测系统管理后台界面,用户名和密码默认为admin和12345678,修改账号密码,为系统设置管理员账号,配置管理员邮箱,用于后期登录和接收邮件告警; 3. 在API拦截器内抽取用户输入参数,如果参数非空,则调用系统模块的检测接口predict,将参数传入; 4. 当检测结果为威胁,predict将返回true,否则返回false,用户可以对流量做不同的处理策略,如为威胁时返回404页面,非威胁时正常响应; 5. 登录管理员后台,处理拦截的威胁记录,定时进行重新训练算法。

转载自:https://github.com/HongChutang/graduation-design

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(0)

0/250