发明内容
本发明针对这个问题,提出并实现了一种在Windows环境中,利用NDIS驱动获取Internet用户发送给Web服务器的网页请求和数据,进行分析、发现其中潜在的攻击企图,加以过滤和处理的防护技术。
本发明是通过如下技术方案实现上述技术目的的,本发明提出一种基于NDIS驱动的Web服务器攻击过滤及综合防护方法,包括:NDIS驱动按照预先设定进行HTTP协议筛选,并从接收到的数据包中筛选出满足端口要求的HTTP数据包,并交给运行在用户态的安全检测服务模块;安全检测服务模块对所述HTTP数据包进行分析、检测,并发送抛弃不安全HTTP数据包的指令至NDIS驱动;NDIS驱动抛弃所述不安全HTTP数据包。
优选的,“NDIS驱动抛弃所述的不安全HTTP数据包”后还包括:
构造一个用户设定内容的HTTP响应包发给请求的用户,并中断与该用户的连接。
优选的,还包括:所述安全检测服务模块对所述HTTP数据包进行分析、检测,并发送放行安全的HTTP数据包的指令至NDIS驱动;
NDIS驱动将放行的HTTP数据包提交上层协议,最后传输给Web服务器;
Web服务器对所述安全的HTTP数据包进行处理,并将HTTP返回数据通过协议栈下发至NDIS驱动;
NDIS驱动将所述HTTP返回数据通过网卡驱动下发至网卡;
网卡将所述HTTP返回数据通过网络反馈给用户。
优选的,“NDIS驱动按照预先设定进行HTTP协议筛选,筛选出满足端口要求的HTTP数据包,并交给运行在用户态的安全检测服务模块”之前还包括:
用户通过网络发送数据包到达网卡;
网卡将数据包上传NDIS驱动。
有益效果:本发明提出并实现了一种在Windows环境中,利用NDIS驱动获取Internet用户发送给Web服务器的网页请求和数据,进行分析、发现其中潜在的攻击企图,加以过滤和处理的防护技术。本发明属于一种软件技术,成本较低,灵活性较高,另外,由于本技术使用了基于NDIS驱动来获得Internet用户发给Web服务器软件的网页和数据进行过滤,而所有的Web服务器软件都是基于标准的HTTP协议实现的,因此本发明所实现的技术能针对所有的Web服务器程序,不存在局限性。
具体实施方式
本发明的核心思想为:一种基于NDIS驱动的Web服务器攻击过滤及综合防护方法,其特征在于,包括:NDIS驱动按照预先设定进行HTTP协议筛选,并从接收到的数据包中筛选出满足端口要求的HTTP数据包,并交给运行在用户态的安全检测服务模块;安全检测服务模块对所述HTTP数据包进行分析、检测,并发送抛弃不安全HTTP数据包的指令至NDIS驱动;NDIS驱动抛弃所述不安全HTTP数据包。
实施例1
结合图3,描述本实施例
S1、用户通过网络发送数据包至网卡。
S2、网卡将数据包上传NDIS驱动。
具体为、网卡将数据包上发到网卡驱动,网卡驱动通过接卡将数据交给NDIS驱动。
S3、NDIS驱动按照预设通过HTTP协议筛选出满足端口要求的HTTP数据包,并将上述HTTP数据包交给运行在用户态的安全检测服务模块。
安全检测服务模块处在用户层。
结合图4,对“NDIS驱动筛选出满足端口要求的HTTP数据包”做进一步说明:HTTP数据包既是IP包也是TCP包,且为预设端口的数据包。
S31、通过NDIS规范获得下层发来的网络数据包。
S32、判断是否是一个IP包,如果是,转到S33,如果否,转到S36。
S33、判断是否是一个TCP包,如果是,转到S34,如果否,转到S36。
S34、判断是否为预设端口的数据包,如果是,转到S35,如果否,S36。
S35、将数据包放入缓冲区,并通知安全检测服务模块。
通知安全检测服务模块通过驱动与用户层程序通信接口规范完成。
S36、将数据包按照规范提交给上层协议驱动。
S4、安全检测服务模块对上述HTTP数据包进行分析、检测,并将对HTTP数据包进行放行处理或抛弃处理的指令反馈至NDIS驱动;安全检测服务模块对一个HTTP连接的多个数据包进行缓存和管理维护。
结合图5,如下对“安全检测服务模块对上述HTTP数据包进行分析、检测”做进一步说明:
S41、安全检测服务模块接到NDIS驱动的通知,并从缓冲区获得HTTP数据包。
S42、从上述HTTP数据包中提取来源IP地址、发送端口、接收端口、TCP包的sequence号、acknowledgement号、负载数据在数据包中的偏移。
S43、判断此HTTP数据包是否来自于白名单中的IP地址,如果是,转到S411,如果否,转到S44。
S44、判断此HTTP数据包中包含的是否为HTTP的GET请求,如果是,转到S49,如果否,转到S45。
S45、判断此HTTP数据包中包含的是否为HTTP的POST请求的第一个包,如果是,转到S48,如果否,转到S46.
S46、根据会话管理队列判断是否有未完成传输的POST请求,如果是,转到S47,如果否,转到S411。
S47、在会话管理队列中检查该HTTP数据包所对应的会话,并将此HTTP数据包追加到所对应会话的数据队列中,完成后,转到S49。
S48、将POST请求的第一个数据包加入到会话管理队列中,等待后面将到的数据包,完成后,转到S49。
S49、对HTTP数据包按照HTTP协议拆解并进行分析。
在获得完整或者较为完整的(POST数据不会在一个包里面就发送过来)的HTTP数据包以后,需要对数据包按照HTTP协议的约定,分析出请求的类型、URI、各HTTP头以及对应的值、HTTP协议所载内容等,按照各种类型攻击的特点,有些攻击是利用URI的、有些攻击是利用HTTP头或者值的、有些攻击是利用HTTP头中的Cookies的、有些是利用URI或者HTTP body中所带的参数的,为了提高效率,要进行区分对待和处理,减少没必要的检查和判断,因此需要构造一个规则库,其格式如、FILENAME|ARGS|ARGS_NAMES“攻击特征”“攻击类型”,其中的FILENAME|ARGS|ARGS_NAMES表明需要检查三个部分,分别是、FILENAME,本次HTTP请求所请求的服务器上的某个文件的文件名;ARGS以及ARGS_NAMES,本次HTTP请求所附带的参数。举例说明、比如客户在浏览器地址栏中输入、http://www.mytest.com/showdetail.asp?id=49;and 1=1则FILENAME代表了showdetail.asp,ARGS代表了49;and 1=1,ARG_NAMES代表了id。根据每一条规则,将对一个HTTP请求中的不同部位进行对应的检查,检查依据由规则中的“攻击特征”确定,“攻击类型”为描述性文字,表示本类攻击的名字,本发明一共支持对16种攻击进行检测、特诺依木马攻击、Session fixation攻击、SQL盲注攻击、SQL注入攻击、XSS攻击、File注入攻击、System Command注入攻击、Coldfusion注入攻击、LDAP注入攻击、SSI注入攻击、PHP注入攻击、Persistent Universal PDF XSS攻击、Email注入攻击、HTTP Response Splitting攻击、路径遍历注入攻击、RFI(Remote File Inclusion)攻击。
结合图6,对“HTTP数据包按照HTTP协议拆解并进行分析”做进一步说明、
S491、判断HTTP数据包中是否存在用户定义的过滤关键词,如果是,转到S4916。如果否,转到S492。
S492、判断HTTP数据包是否拆解完成,如果是,转到S4912,如果否,转到S493。
S493、读入下一行数据。
S494、判断读入的数据行是否为HTTP请求行,如果是,转到S497,如果否,转到S495。
S495、判断读入的数据行是否为HTTP HEADER行,如果是,转到S498,如果否,转到S496。
S496、判断读入的数据行是否是HTTP BODY,如果是,转到S499,如果否,转到S492。
S497、分析得到URI、FILENAME、ARGS以及ARGS_NAMES并存入拆解后的HTTP各元素队列。
S498、分析得到HEADERS、HEADERS_NAMES、COOKIES、COOKIES_NAMES并存入到拆解后的HTTP各元素队列。
S499、判断HTTP BODY是否通过Multipart上传附件,如果是,转到S4910,如果否,转到S4911。
S4910、通过multipart格式分析得到ARGS以及ARGS_NAMES并存入拆解后的HTTP各元素队列。
S4911、直接分析得到ARGS以及ARGS_NAMES并存入拆解后的HTTP各元素队列。
S4912、判断是否所有规则都已经处理,如果是,转到S4916,如果否,转到S4913。
S4913、调入下一条规则,转到S4914。
S4914、按照规则中定义的检查内容和检查规则,对拆解后的HTTP请求中的相应内容进行检查。
S4915、根据检查结果,判断是否有符合规则中定义的攻击特征,如果是,转到S4916,如果否,转到S4912。
S4916、结束检测过程,清理现场,将检测结果通知调用程序。
S410、根据分析结果判断该HTTP数据是否安全,如果是,转到S412,如果否,转到S411。
S411、通知处于等待状态的NDIS驱动,此HTTP数据包安全,放行此数据包。
S412、通知处于等待状态的NDIS驱动,此HTTP数据包不安全,丢弃数据包,并构造用户设定内容的HTTP数据包返回给用户,中断连接。
S5、NDIS驱动依照安全检测服务模块的指令,将放行的HTTP数据包提交上层协议,最后传输给Web服务器;将抛弃的数据包放弃上发,并构造一个用户设定内容的HTTP响应包发给请求的用户,中断连接。
S6、Web服务器进行处理,将HTTP返回数据通过协议栈下发,到达NDIS驱动。
S7、NDIS驱动将HTTP返回数据通过网卡驱动下发至网卡。
S8、网卡将HTTP返回数据通过网络发送给用户。
本发明并不局限于此实施方式,以本发明思想为基础的相关实现均在本发明的保护范围内。