一种基于插入混扰信息的拟态防御方法与流程

文档序号:17757745发布日期:2019-05-24 21:25阅读:222来源:国知局
一种基于插入混扰信息的拟态防御方法与流程

本发明属于网络安全技术领域,具体是拟态安全网关领域,涉及一种基于插入混扰信息的拟态防御方法。



背景技术:

internet不安全是一个不可回避的现实,造成不安全的原因是多方面的,归结起来主要有以下三个方面的因素。(1)internet的设计思想没有充分考虑安全性(2)internet是一个开放的系统,人们很容易查到关于internet自身的资料,获得各类应用程序源代码,使攻击者容易找到系统中的漏洞(3)网络的复杂性导致网络管理人员的安全管理工作非常困难,偶然的错误配置会使非法访问者获取访问权。

传统的网络安全技术对于网络攻击主要是采取被动防御的手段,这些手段和方法面对千变万化的攻击方式显得力不从心。如何使网络安全防御体系由静态转为动态,防御措施从被动转为主动,改变传统防御总是处于被动挨打的处境,是积极有效地保护网络系统安全的新课题。

拟态网关是不同于传统网关的一种新型网络防御技术。传统的网络安全防御技术多为被动防御,主要包括防火墙、认证技术、访问控制、病毒防范、入侵检测、漏洞扫描、信息加密技术等。

目前,拟态防御系统已经逐渐投入使用,但尚没有能够对攻击者响应错误信息的有效手段。在实际应用过程中,有必要提出有一种高效可靠的内容混扰拟态模块,能针对攻击者的请求返回错误的信息。



技术实现要素:

本发明的目的是应对黑客针对web应用进行结构扫描分析和通过模糊测试和暴力破解获取网站管理权限的网络安全问题,提供一种基于插入混扰信息的拟态防御方法。本发明通过向攻击者返回错误信息,从而动态地保护服务器安全。

本发明的目的是通过以下技术方案来实现的:一种基于插入混扰信息的拟态防御方法,该方法包括以下步骤:

(1)首先定义一个内容混扰模块的配置项结构体,并初始化它的配置信息;

(2)定义模块上下文结构体,存储内容混扰模块的上下文信息,此结构体中含有一个标志来记录当前是否由过滤模块进行过处理;

(3)将内容拟态模块中的头部处理函数和包体处理函数添加到http过滤模块处理链表的头部;

(4)判断上下文是否存在,如果存在,说明请求的头部已经被处理过,跳转到下一个过滤模块的头部处理函数,如果上下文不存在,进行下一个步骤;

(5)构造上下文结构体,将结构体中的标志设置为“未处理”;

(6)处理http请求头部;具体是:

(6.1)检查所收到数据包的内容类型,只处理内容类型是“text/plain”类型的http响应;

(6.2)如果数据包内容类型为“text/plain”,将上下文结构体中的标志设为“已处理”,将http响应码设为请求成功;

(6.3)修改http头部中的内容长度,在原来的基础上加上混扰内容的长度;

(7)进行http包体处理;具体是:

(7.1)首先对相应的超链接进行编码,将原来的超链接以编码后的代码的形式嵌入进去;

(7.2)定义混扰内容,即需要对攻击者进行干扰和迷惑的内容;

(7.3)获取模块上下文,查看上下文结构体的标志状态是否是“已处理”,如果是“已处理”,则表明已经处理过或者http响应类型不符合要求,继续进行下一步操作;

(7.4)从请求的内存池中分配内存,用于存储字符串前缀,并将字符串前缀添加到原先待发送的http包体前面。

本发明的有益效果是,本发明通过判断上下文,进行http头部和包体处理,实现对http响应的内容混扰。与已有的网络防御方法相比,它具有如下特点:

1、现有的网络防御方法往往是针对攻击者的请求进行阻断,对服务器中隐藏的漏洞或后门无能为力。本发明方法是针对响应进行处理,不受漏洞或后门的局限。

2、现有的网络防御方法往往是静态且易受攻击的,本发明方法用简单的步骤实现动态主动防御,降低了服务器受攻击的风险。

附图说明

图1为本发明的步骤示意图;

图2为本发明的实施例示意图。

具体实施方式

以下实施例中的服务器采用nginx。实施方式步骤如下:

步骤一、定义配置项

定义ngx_http_myfilter_conf_t结构体,用于存储内容混扰拟态模块的配置信息,判断是否启用此模块;

步骤二、定义模块上下文

http上下文是一张表,表中记录该请求当前的处理记录,这样,当一个请求被拆分成多次处理时,同一个处理函数就能够了解该请求已经执行到哪一步,从而接着当前的进度进行处理;

步骤三、确定要在http框架初始化时介入哪些阶段;

ngx_http_myfilter_module_ctx结构体中设定本模块将在postconfiguration阶段加入,也就是在配置项解析完成后启动调用ngx_http_myfilter_init函数,将内容拟态模块中的头部处理函数ngx_http_myfilter_header_filter和包体处理函数ngx_http_myfilter_body_filter添加到http过滤模块处理链表的头部;

步骤四、定义ngx_command_t类型的结构体数组;

ngx_http_myfilter_commands中确定配置项中调用此模块的命令为“myfilter”,使用nginx内置的参数解析函数ngx_conf_set_flag_slot来解析参数;

步骤五、在ngx_http_myfilter_header_filter函数中初始化配置项;

ngx_http_myfilter_header_filter函数就是内容混扰拟态模块中处理http头部的函数;

步骤六、获取http过滤模块上下文;

如果上下文已存在,说明该请求的头部已经被处理过,调用ngx_http_next_header_filter函跳转到下一个过滤模块的头部处理函数;如果不存在,构造上下文结构体,将上下文中的标志设置为还未进行过内容混扰处理;

步骤七、检查http响应头部中的content-type是否为”text/plain”,只处理响应类型为”text/plain”的http响应,将上下文中的标志设为1,表明要进行混扰处理;

步骤八、修改头部中的contentlength,添加混扰内容的长度。然后调用头部过滤函数ngx_http_next_header_filter;

步骤九、http包体处理;具体步骤如下:

(1)首先对响应中的超链接进行javascript编码;

即进行正则匹配查找之后,将对应的超链接内容和显示内容取出之后,再构造javascript代码段,将原来的超链接以javascript代码的形式嵌入进去;

(2)然后定义混扰内容;

即需要对攻击者进行干扰和迷惑的内容。此处构造一段隐藏在页面中的html语句,简略内容如下表1所示:

表1

步骤九、获取模块上下文,查看上下文结构体的标志是否为1;

如果不为1,表明已经处理过或者http响应类型不符要求;

步骤十、从请求的内存池中分配内存,用于存储字符串前缀,并将ngx_buf_t中的指针正确地指向filter_prefix字符串;

步骤十一、从请求的内存池中生成ngx_chain_t链表,将刚分配的ngx_buf_t设置到其buf成员中,并将它添加到原先待发送的http包体前面;

在实现部分完成之后,config配置文件如下表2所示:

表2

然后将内容混扰拟态模块嵌入到nginx当中,命令如下表3所示:

表3

实施例结束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1