一.1扫描引擎工作原理
Web扫描引擎,作为一个独立的服务运行在产品的系统之中,它通过收发消息和外部的产品进行交互。产品通过向引擎发送一条消息来创建/暂停/停止/续扫一个任务,而引擎则通过消息告诉外界自己的状态、已经爬取的链接和已经检测到的漏洞;同时产品也可以通过消息来设置引擎的日志级别,系统使用带宽等属性。
对于某一特定的扫描任务,扫描引擎的作用可以理解为通过不断发现新的页面,将爬虫和插件的工作持续进行下去,直到整个站点被处理完或者达到某种设置的门限。Web应用漏洞扫描从大的方面可以分为页面爬取、探测点发现和漏洞检测三个阶段。Web扫描引擎将第一个阶段由爬虫独立完成,后两个阶段依赖于第一个阶段的结果,由插件独立完成。爬虫和插件之间可以同时进行,也可以等爬虫将站点爬完之后,再统一交给插件处理。
一.1.1页面爬取
页面爬取使用智能页面爬取技术,重点在于快而全地获取整个站点的站点树。这个过程分为两步,网络访问和链接抽取。网络访问需要支持设置cookie,自定义请求头,设置代理(http,https,sock4,sock5),支持各种认证方式(basic,ntml,digest),客户端证书等。拿到响应之后,需要自动识别响应的编码方式,并将其转换为统一的UTF-8编码,供后续抽取链接等操作使用。目前支持从HTML,HTML注释,Flash,WSDL等静态内容中抽取链接之外,还用webkit实现了从DOM树,JS,Ajax等重抽取静态和动态的链接。
除了使用前文提到的各种爬取设置和智能技术之外,还需要对站点做存活性判断、主动识别页面类型(图片,外部链接,二进制文件,其它纯静态文件等)、尝试猜测一些无法从其他页面解析出来的但可能存在的目录并做好标记。存活性判断主要是为了迅速给出站点是否可达(可能跟用户的输入,配置的代理、认证信息,站点本身都有关系)的一个结论,避免做一些无用功;页面类型主要为了帮助插件区分哪些页面可能存在漏洞需要被扫,哪些页面可以直接跳过;根据一定的字典猜测可能存在的链接,一方面是为了尽可能多地发现页面,另一方面是为了方便插件直接根据猜测的标记报告敏感文件的漏洞。
通过爬取的时候获取并标记尽可能多的信息,可以极大地减少逻辑冗余,提高扫描引擎的性能。
一.1.2探测点发现
不同的插件有针对性地在请求中寻找不同的探测点,可能的探测点有URL路径,GET方法URL中的参数,POST方法请求体中的参数,请求头中的字段,cookie中的键值,响应体等等。一般而言,插件会尝试对待扫描的URL进行解析,分解出各种可能存在漏洞的探测点,供后续进行相关的漏洞检测。
一.1.3漏洞检测
每个具体的漏洞都有相应的一个插件来进行具体的检测。插件根据得到的探测点,有针对性地构造特殊的网络请求,使用远程网站漏洞扫描检测技术进行漏洞检测,判断是否存在相应的漏洞。除了使用到的漏洞检测技术之外,为了缓解网络访问带来的性能问题,在需要发送多种探测请求的插件中,将网络请求并发而将网络响应的处理串行起来提高扫描速度;为了避免在短时间内发送重复的网络请求(某些插件不需要重新构造请求体,使用的是和爬虫一样的网络请求),使用了页面缓存技术,旨在降低网络访问对扫描速度的影响;引擎在扫描的过程中,能够根据系统当时的负载,自动调节处理URL的并发进程数(不超过任务配置的进程数的前提下),从而获得一个最佳的系统吞吐量。
对于漏洞检测,分为两大类的漏洞进行检测:
1.针对URL的漏洞扫描:
例如XSS:对将要扫描的URL进行拆分,然后针对每个参数进行检测,首先会在原有参数值后面添加一个正常的字符串,从响应页面内容中查找输入的字符串是否存在,并且分析上下文,根据分析的结果,再次重新输入特定的字符串,继续通过分析上下文,判断所输入的特定的字符串是否能被执行,如果不行或者是输入的某些字符串被过滤,则会重新输入其他的特定字符串进行验证。
2.针对开源CMS的特定漏洞扫描
例如Wordpress:在爬虫爬取的时候,会通过网站的一些特征进行识别,如果识别出当前被扫描站点使用了wordpress,则会调用WEB扫描引擎中wordpress相关的所有漏洞检测插件,通过这些检测插件,发现存在于wordpress的特定漏洞。
采用多视角对扫描结果进行分析,系统提供了多种类型的报表满足多种报表需求,普通的综述报表和单站点报表,单个站点的趋势报表,多个站点的对比报表,支持OWASP top10分类的行业报表。综述报表从任务的角度对任务中包含的单个或多个站点进行整体的风险评估,展示高中低风险以及页面风险的分布,并从漏洞的角度展示了受影响的站点,以及漏洞的描述信息及解决方案。单站点报表详细的从风险分类的角度展示了单个站点在各风险类型的漏洞分布,站点存在漏洞的详细列表,站点树及外链的信息。趋势报表展示了单个站点的高中低漏洞数以及风险值的趋势变化情况,并且从漏洞的角度突出多次扫描漏洞的新发现和已解决情况。对比报表用来对比不同站点的风险分布以及漏洞分布情况,能帮助管理员快速进行多个站点的风险排名。系统中对所有漏洞进行了OWASP-2010,OWASP-2013,WASC分类,报表同时也支持OWASP-2010,OWASP-2013,WASC三种行业报表。同时报表支持多种格式:HTML,WORD,PDF,XML。
一.2关键技术原理
一.2.1高速引擎
web扫描引擎为了突破性能瓶颈,分别采取爬取和扫描分离、高网络并发、本地缓存、自适应动态调整等技术来给引擎加速。
1.爬取和扫描分离使得模块耦合降低的同时,也减少了逻辑之间的等待与依赖,使得爬取和扫描都可以只关注自己的业务,为性能加分。
2.由于web扫描属于网络密集型的扫描,网络访问时间对扫描速度影响很大,高网络并发的目的就是将耗时的操作进行并发处理,让外部耗时尽可能降到最低。
3.爬虫和插件的扫描有大量的重复的网络请求,通过本地缓存使相同的请求只访问服务器一次,节省了大量的网络访问时间。
4.自适应动态调整是引擎内部会根据引擎的全局并发数设置和实际消耗的系统资源(主要是CPU和内存)动态调整扫描的并发进程数,使得系统资源能得到最充分的合理使用,提高扫描的整体性能
一.2.2智能页面爬取技术
基于模拟点击技术的智能爬虫能高效并尽可能多的抓取网站页面,主要组成部分包含两个部件,部件一用于爬虫策略的控制、登陆验证数据的控制、及自定义可爬取页面、不可爬取页面的控制等,称为控制部件;部件二用于提取页面内连接,通过模拟点击技术来操纵DOM数据模型,并通过截获脚本执行数据达到提取链接和阻止对服务器数据的破坏,称为处理部件。
控制部件将站点url作为参数传递给处理部件,处理部件从目标web服务器获取web页面,并通过内置浏览器内核将获取的html文档解析成DOM数据模型。然后通过对htlm文档中的不同标记做处理,来提取web页面中的url。在处理script标记的时候,会对其中的用户点击单元进行模拟点击处理,就是模拟人的点击行为来触发点击事件。并在引发DOM数据的变更前截获url,同时拦截对DOM模型的修改,这样既达到了url的提取,又防止了对数据的修改。
其技术优势包括:
1.高效率,智能爬虫通过对页面进行消重处理,大大提高了对网站扫描的速度
2.支持多种控制策略来删选URL
3.Javascript解析引擎的支持能力,能从Javascript代码中分析出url
4.支持从flash文件里提取链接
5.支持通过代理进行爬取目标网站
6.支持通过协议认证进行扫描
7.支持对扫描范围的控制,可扫描整个域,子域,当前目录
8.智能爬虫采用多线程的方式,以提高页面抓取的速度。同时控制线程数目,防止大量并发对用户的单个站点造成过大压力
一.2.3自适应扫描技术
WEB扫描器需要根据实际的生产环境,被扫描站点等因素来调节扫描相关的参数配置,达到平衡压力,有效利用资源的目的。
工作原理:
不妨假定引擎的速度仅仅通过扫描的并发数就可以随意调节,那么对用户有意义的“快”可以理解为:在不影响web扫描设备其它功能,不会占完扫描设备所在网络的带宽,不会使被扫描服务器响应变慢乃至宕机的前提下,所能允许的最大的扫描并发数扫描所能达到的速度。其实就是用系统的CPU,内存,网卡信息以及被扫描服务器的响应时间作为反馈,来调节web扫描的并发数,使扫描不对自身和扫描目标造成过分的影响,能最快地完成扫描任务。web扫描引擎内部模拟现实地设置了4类传感器,分别是CPU传感器,内存传感器,网卡传感器和响应传感器。
前3类传感器属于扫描器系统级别的传感器,而第四类则属于扫描任务级别的传感器。每类传感器都有自己的正常工作阈值,采样值高于阈值的传回1,低于阈值的传回-1,在阈值范围内的传回。
自适应扫描就是通过设置者四类传感器,获取各种反馈信息,然后综合判断,做出如何调节并发数的决策。若有任何一个传感器传回1,则意味着某个指标已经在危险的边缘了,应该采取措施避免更严重的问题发生,此时扫描并发数应该降低;若所有的传感器都传回-1,则意味着系统本身和目标站点都比较闲,应该采取措施,加大系统负荷,此时扫描并发数应该升高;否则的话,保持扫描并发数不变。
技术优势:
目标“零”损伤,链路“零”占用。
随业务带宽不规律的震荡变换,在不侵占业务带宽的同时,最大程度地利用链路剩余带宽作为扫描带宽
低带宽也能扫
灵活适应多类扫描场景(低带宽,闲忙分离…)
稳定易用
参数自动调优,简单省时
最大化地利用设备的资源
一.2.4远程网页挂马检测技术
网页挂马攻击是指攻击者在获取网站或者网站服务器的部分或者全部权限(获取手段包括SQL注入、XSS攻击等)之后,在网页文件中嵌入一段恶意代码,这些恶意代码主要是一些包括浏览器本身漏洞、第三方ActiveX漏洞或者其它插件漏洞的利用代码,用户访问该挂马页面时,如果系统没有更新恶意代码中利用的漏洞补丁,则会执行恶意代码程序,进行盗号等危险操作。
远程网页挂马检测技术使用的是静态分析和动态解析相结合的主动挂马检测技术。检测实现原理可简单如下描述:挂马检测引擎模拟DOM对象和ActiveX控件,同时截获其内存分配行为,当被挂马代码想操作一个DOM对象或ActiveX控件时,就可以把他的超过行为全部监控下来。有了这种url页面的所有展示行为的监控,就可以分析这些行为,按照预定义的规则来判断是否有恶意代码的存在。判断方式有通过ActiveX的ID判断、通过对象的接口调用来判断和通过HeapSpray检测来判断,这三种判断方法保证了检测的高准确率。
其技术优势包括:
1.基于行为分析的挂马检测技术
2.静态和动态相结合的主动挂马检测技术
领取专属 10元无门槛券
私享最新 技术干货