一种基于动态污点分析的注入式攻击检测模型的设计与实现

2022-02-28 08:02方菽兰郑黎黎许德鹏张伟峰
技术与市场 2022年2期
关键词:污点攻击行为日志

方菽兰,郑黎黎,许德鹏,张伟峰

(1.四川鼎诚司法鉴定中心,四川 成都 610011;2.成都赛博思安科技有限公司,四川 成都 610000)

0 引言

Web应用作为互联网设备中的一个分支,从1989年发展至今,已成为全球用户量最多的互联网信息交换媒介与数据共享平台。中国许多网站均保存了我国公民的重要身份及财产信息,一旦网站被入侵将导致严重的数据泄露事件,危害公民信息财产安全[1]。

近年来批量服务器攻击事件、数据泄露事件频发,Web安全越来越受到重视。在已发现的Web攻击类型中,注入式攻击发生频率最高,其攻击手段根据Web应用漏洞位置千变万化,且注入式攻击能够直接威胁到数据库或系统安全,造成数据泄露、权限窃取等危害。因此,研究一种高准确率且高效的检测模型来应对频繁的注入式攻击,具有重要的理论意义和实际价值。

1 基于动态污点分析的注入式攻击检测模型的设计

本文的设计目标为实现一个基于动态污点分析的注入式攻击检测模型。首先,该系统作为检测程序持续运行在Web服务器上,在服务器上的Web应用中,模型能够识别并记录包含不可信源请求数据的所有SQL访问请求和代码执行请求;然后,检测程序实时地提取日志中地请求数据进行攻击行为检测,检测的注入式攻击类型包括SQL注入攻击和恶意代码注入攻击;对于检测结果为攻击行为的请求,通过日志记录的请求数据获取攻击者信息,并还原产生攻击的Web页面和外部参数;最后,将上述信息反馈给网站管理员,帮助管理员了解漏洞产生的位置,并对攻击者进行限制访问。基于上述目标,本文设计了基于动态污点分析的注入式攻击检测模型。

1.1 模型的类型

该模型主要分为4个模块,顶层为动态污点分析模块,直接加载在Web服务器中;系统的主要模块为SQL注入检测模块和恶意代码注入检测模块;最后日志监控与预警模块作为整个系统的调度模块,将各模块连接在一起。首先在Web服务器运行时,动态污点分析模块依附在Web服务器中开始运行,以日志的方式记录符合检测目标的请求信息;在日志监控与预警模块,实时监控日志产生的新数据,将待检测请求信息分发给SQL注入检测模块和恶意代码注入检测模块;SQL注入检测和恶意代码检测模块相互独立运行,完整赋予检测功能后,将检测结果回传给日志监控与预警模块,由预警部分将检测结果进行汇总,完成整个系统的一次请求是否合法的检测。

1.2 基于卷积神经网络的SQL注入检测模型

SQL注入攻击检测模块包括CNN分类模型训练和模型检测2个部分。在模型训练阶段,输入为SQL注入样本和正常样本2种经过人工标记的样本数据,当分类模型训练完成后,将其作为检测模型。在语法分析阶段,已经对节点的类型进行了定义,经过灰度污点图的构建,保留了原节点的2个属性,即节点类型和污点值。灰度污点图由原节点的污点值组成矩阵,对于保留的节点类型,则构成了输入矩阵的色彩通道。将污点图包含的灰度图和色彩通道模拟为一个图像的像素矩阵,传入卷积神经网络分类器,然后分别按操作进行训练或检测。

2 实验与分析

本文通过混淆矩阵的方式进行检测结果的评估,将攻击行为定义为正类,将正常请求定义为负类,因此,用TP表示攻击行为正确识别为攻击识别的数量,TN表示攻击行为被错误识别为正常请求的数量;FP表示正常请求被正确识别为正常请求的数量,FN表示请求被错误识别为攻击行为的数量。评价指标包括精确率(Precision,P),准确率(Accuracy,ACC),召回率(Recall,R)和和调和均值(F1-Measure,F1)。在数据收集阶段,通过服务器搭建的Web服务器和依附于服务器的动态污点分析模块收集实验数据。将上述收集到的样本进行数据预处理生成待检测数据。在SQL注入攻击模型训练过程中,一共记录了22 273次SQL,标记其中7 800条数据为SQL注入攻击,7 111条数据为正常SQL请求;剩余的记录作为检测数据,其中3 733条为未标记的SQL注入攻击,3 629条为未标记的正常SQL请求。在恶意代码注入检测模型训练过程中,一共记录了16 436次代码注入请求,标记其中7 240条数据为恶意代码注入攻击,7 171条数据为正常代码注入请求;剩余的记录作为检测数据,其中939条为未标记的恶意代码注入攻击,1 086条为未标记的正常代码注入请求。

2.1 基于CNN的SQL注入式攻击检测模型

对于该模型的实验过程,本文对网站安全狗、360网站卫士、随机森林算法3种检测方法进行了对比。网站安全狗和360网站卫士检测方法是在Web服务器上安装相应安全防护软件,向网页发送包含测试样本的HTTP请求,不经过动态污点分析模块,根据软件生成的安全日志计算评估指标。基于随机森林的检测算法,则是经过动态污点分析后,从生成的污点语法树中提取特征,使用随机森林算法进行训练和分类。对比实验结果如表1所示。

表1 SQL注入检测模型对比实验结果 单位:%

从表1中可以看出,基于卷积神经网络的SQL注入检测模型的准确率高于随机森林算法,但是精确率分别比网站安全狗和360网站卫士略低1.7和0.2个百分点,这是由于上述防护软件对于正常样本的误报率极低,但在识别SQL注入攻击的恶意样本时,识别能力不足,具有较高的漏报率,因此与上述防护软件相比,该模型的准确率分别高出3.6和2.1个百分点。这体现出了使用深度学习的检测方法比传统的特征提取检测方法更为有效,实用性更强。

2.2 实验结果

本文用混淆矩阵分别对基于卷积神经网络的SQL注入检测模型和基于FastText的恶意代码注入检测模型进行了评估,并和多个检测方法进行对比实验,实验结果证明了本文模型的有效性和可行性。

3 结语

随着Web技术的不断发展,Web应用的安全检测需要应对千变万化的攻击手段。本文提出了基于动态污点分析的注入式攻击检测模型,可以有效检测出SQL注入和恶意代码注入2种高危的攻击行为。但是,在面对日益增长的Web安全需求下仍存在一些不足之处,须在今后的工作中进一步研究和改进。

1)对模型基于动态污点分析生成的日志进行检测并处理时具有一定的滞后性,未能实现实时拦截,在下一步的研究中,将设计更加有效的实时拦截功能。

2)模型的动态污点分析模块针对PHP编程语言而实现,在下一步的研究中,将对其他的Web编程语言的动态污点分析方法进行研究。

猜你喜欢
污点攻击行为日志
基于代码重写的动态污点分析
住院精神病人暴力攻击行为原因分析及护理干预
一名老党员的工作日志
基于人工蜂群算法的无线网络攻击行为的辨识研究
扶贫日志
污点
雅皮的心情日志
雅皮的心情日志
使用Lightroom污点去除工具清理照片中的瑕疵
高职生共情、宽恕、攻击行为的关系研究