网站安全风险评估方法和系统的制作方法

文档序号:7953243阅读:215来源:国知局
专利名称:网站安全风险评估方法和系统的制作方法
技术领域
本发明涉及网站安全风险评估方法,特别是一种通过对扫描网站发现的漏洞进行攻击,从而提供可靠性和可用性更高的风险评估报告的方法,以及用于实现该方法的网址安全风险评估系统,属于计算机和网络信息安全技术领域。
背景技术
随着互联网发展,在Web服务器运行的程序所面临的安全问题越来越突出。通常情况下,由于缺乏有效的Web安全评估工具,加之系统由经常性的升级而随之产生的安全问题,管理者无法及时有效地发现问题。实践表明,在基于网络层的安全问题,往往反映的问题比较明显,容易被发现。但另一类问题,是由应用层所引起的,就很难及时发现。这类问题更多的时候是由于开发者在系统设计时考虑不周,或是软件开发时程序员的疏忽,造成应用系统本身存在安全缺陷。由于缺少有效的检查机制,这样的安全问题平时难以被发现,而往往是在重大事故发生时这样的问题才会被发现。本发明旨在提供一种针对网站安全进行评估的软件工具,自动高效地检查Web应用程序上存在的漏洞及安全隐患,对系统安全性做出评估。
在已知的现有技术中,已有针对网站安全漏洞进行检测的各种技术,例如名为SystemFor Determining Web Application Vulnerablities(检测Web应用漏洞的系统)的美国专利US 6584569,该专利公布了一种检测网站漏洞的系统,所述的系统检测漏洞的步骤包括查找出外部的用户交互层预先定义的基本元素的步骤;构造服务请求,在请求中包含这些基本元素未经验证的值,从而发现针对该Web应用的隐患,再利用该隐患进行攻击,并评估结果的步骤。具体包括首先,对所有的应用交互界面结构爬行,根据检测规则,对这些页面检测得出有关网站的漏洞列表,然后利用变换规则产生变换请求,对应用模拟攻击,根据攻击结果得到该Web应用的安全漏洞报告。
然而,在上述方法中,系统采用的所谓的攻击方法只是根据漏洞规则按照通用方式进行的检查,据此得到的结果仅仅是扫描及通用的漏洞结果。而对这些漏洞有可能造成的危害,缺乏针对性的深层次验证,缺乏进一步的风险危害平估。比如同一漏洞,在不同的网站环境有不同的安全风险;或配合其他不同的漏洞联合攻击结果可能会有不同结果。但是利用现有技术中所提供的方法,却无法判断出漏洞的真正危害程度。

发明内容
针对上述问题,本发明的目的在于提供一种网站风险评估方法,以及与该方法相对应的网站风险评估系统。所述的方法和系统通过对网站扫描漏洞的结果进行攻击并分析攻击结果,为用户提供了完整的风险评估报告。所述的攻击并非传统意义上的探测,而是针对不同漏洞而设计的不同的攻击方法,通过自动攻击和半自动攻击(人工辅助)方式,通过评估引擎,综合全部攻击结果及对扫描页面的分析后,系统地做完整的评估。
网站风险评估方法分为扫描、分析、攻击和评估四个阶段,分别由网站安全评估系统中的扫描引擎、分析引擎、攻击引擎及评估引擎四部分来实现,如图1所示。
根据本发明的目的,所述的网站风险评估方法包括以下步骤1)扫描步骤,根据数据库里的扫描规则爬行网站,获取所有的网页链接;2)分析步骤,对扫描步骤中读取的网页进行分析,找出基本元素,发现漏洞;3)攻击步骤,根据漏洞数据库中的规则,调用相应的测试函数对可能存有问题的网页进行模拟攻击;4)评估步骤,根据攻击结果,对网站安全的风险性进行评估。
系统通过定期从产品提供商的服务网站上下载规则数据,使系统数据库中的漏洞规则数据能得到不断更新。系统根据漏洞规则,对网站进行扫描和攻击,分析结果后得到网站的安全评估报告。
以下结合图2的系统组织结构关系图来详细说明本发明。
1.扫描阶段在扫描阶段,扫描引擎应用扫描规则从网站名开始,对网站进行扫描,发现所有的链接。所述的扫描方式可以是现有技术中已有的网站扫描方法,也可以采用申请人在另一申请“网站安全漏洞扫描”中提出的扫描方法,即对于在扫描过程中发现的新网页,一方面将其添加到待扫描的队列中进行扫描,同时还应用不同的扫描规则对新网页进行变换,得到由该网页派生的变换链接,并且把这样派生的链接也添加到待扫描的队列中进行扫描。这样扫描和变换的过程同时进行,能够增加扫描的深度和广度,发现在一般的网站扫描方法中无法被扫描到的网页。
2.分析阶段在分析阶段,分析引擎对每个链接向服务器提交请求,并对服务器的响应消息进行基于关键字的分析,从而发现潜在的漏洞。对于扫描引擎遍历到的网页,分析引擎可以发现网页上存在的一部分漏洞,这类在分析引擎中就可以辨别发现的漏洞,主要是由于网页文件直接暴露网站敏感信息造成的,这样的漏洞问题属于显而易见就可以发现到的问题,可以很容易地通过网页文件名或在网页基本元素信息上直接进行查找。比如,网站上发现的config.ini,password.txt文件,便是这一类漏洞。如图2所示,这类漏洞一般包括网页漏洞和基本元素漏洞,这种直接发现和判断的漏洞不需要作进一步的攻击验证,直接交由评估引擎根据采用的漏洞规则作进一步的综合评估,最终得到明确的漏洞说明及报告。
而另外一类漏洞,无法通过直接在页面上查找敏感的关键字而发现,需要作进一步地验证。通过对有可疑漏洞页面作验证而最后判断漏洞信息的这部分功能由攻击引擎来完成。
2.攻击阶段在攻击阶段,攻击引擎并非是简单的对可能的网页进行存在性的探测,而是用设计好的攻击方法,模拟攻击,通过对扫描后的网页的分析,对可能存有问题的网页,根据响应的漏洞规则,采用自动攻击方式来检测漏洞。当自动攻击无法确定漏洞是否存在时,则运行人工参与攻击,以最终确定漏洞是否真正存在。具体的攻击方法是根据漏洞规则的攻击方式分类设计成的。
按照所采用的攻击方式,把攻击的规则分类,同一种攻击规则封装在一个动态库中实现。如图3所示,表示攻击规则数据库的装载过程。数据库中的规则对应动态库的编号,当升级数据库增加一类新规则时,会相应地增添动态苦,系统在初始化时分别调入各类规则所对应的攻击数据库。
攻击引擎所采用的测试方法一般包括稳健性测试、模拟压力测试、缓冲区溢出测试、以及XSS和SQL攻击测试等等。具体采用什么样的测试方法可以根据扫描过程中发现的漏洞来决定,并不限于以上所列的方法。
当开始漏洞攻击时,攻击引擎根据数据库中给出的规则,调用相应功能的测试函数。数据库中的测试规则可以不断添加,每条规则在数据库中有相应的字段来表示所对应的测试方法。按照测试方法,规则分成若干类,每一类对应一种测试方法。在使用中,当增加新的一类规则而现有的测试方法无法实现时,可通过增加DLL来实现,如图3所示。
由于网站扫描是很费时的操作,为不影响主线程运行,网站扫描与攻击分别独立占用多个线程同时进行,如图4所示。
对于扫描引擎扫描到的网页链接,首先由分析引擎(F)发现出其中可能存在漏洞的链接及其潜在的漏洞,然后由攻击引擎(G)作攻击来验证漏洞。一个完整的攻击过程如图5所示,队列G1中存放着可以的攻击漏洞链接及其对应的漏洞规则,其中,当同一链接对应多个不同种类的漏洞规则时,这些规则分别独立存放在队列中。对G1队列中的链接,逐次攻击判断,直至队列为空时整个攻击过程结束。G1中每个链接仅仅是潜在存在的漏洞,仅仅根据G1队列并不能确定是否真正存在漏洞,需要通过针对该种漏洞类型预先设计好的几种攻击手段,逐次采用不同的攻击手段,判断漏洞是否真正存在,直到能够明确断定漏洞有无时结束。具体过程为从链接队列中读取一个链接(潜在漏洞)及其对应的一条漏洞规则(G2),接着判断该潜在漏洞所对应的可采取的攻击手段是否全部尝试完毕(G3),如果没有的话,则根据漏洞规则,选择一个攻击规则,并向服务器提交攻击规则请求。然后分析服务器相应消息,对该潜在漏洞是否为真正的漏洞进行判定(G6),无论漏洞存在与否,若能够得到确切的判断,都把结果提交评估引擎进行评估。若在G6中无法作明确的判断时,表示该攻击方法此时失效,则返回G3,换用其他的攻击手段。如果与该潜在的漏洞相对应的可用攻击手段都尝试完毕,但对此潜在漏洞是否为真正的漏洞与否仍然无法得到确定的结论时,还可以通过人工参与的半自动攻击方式(G7),最终由人工辅助确定结果,然后提交给评估引擎(P)。G7中的人工参与是指,系统给出一系列的自动攻击方式作为辅助攻击,人工组合选择这些辅助攻击方式并参与并判定结果。一般而言,仅有个别情况时,在自动测试手段无法得到明确结论时,才会借鉴主观的判定。自动或半自动攻击结果最终交由P判定后,此潜在漏洞链接判定结束,返回G1进行下一条链接的判断,直到G1中的队列为空时结束。
3.评估阶段对提交的漏洞结果,评估引擎根据漏洞是否存在、漏洞风险等级、攻击手段等级以及攻击结果等级,在评估引擎中给出漏洞判断。评估引擎是综合扫描引擎、分析引擎、攻击引擎的成果,重点考察分析引擎及攻击引擎中发现的漏洞,给出最后的统计分析,判断网站安全等级及针对每个问题,给出系统修复建议,最后报表输出。
本发明的技术效果是对网站扫描中发现的漏洞,采用各种攻击手段进行模拟攻击,真正检测出所扫描到的漏洞的风险,对于现有技术中仅仅对扫描到的网页链接进行简单的变换攻击而言,是巨大的进步。本发明中所用的评估方法也是基于模拟攻击的结果而进行的分等级的详细分析,不同于一般的评估工具中只能泛泛地给出漏洞所对应的一般规则,消除了对于不同的网站,同一个漏洞可能存在不同的风险的不确定性。另外,在本发明的扫描过程中,借鉴了申请人另一项专利申请的内容,对网站进行全面广泛的扫描,从而进一步保证了最后评估结果的可靠性和完整性。


图1表示网站安全风险评估系统的结构示意图;图2表示网站安全风险评估系统的组织关系图;
图3是攻击规则库装载过程的流程图;图4表示系统任务分多线程进行的示意图;图5是攻击过程的流程图。
具体实施例方式
以下将以一个虚拟的网站www.abc.com为例,通过对该网站的具体操作来进一步描述本发明的网站安全风险评估方法和系统。
(1)扫描阶段如图所示,扫描引擎首先根据数据库中的固定扫描规则获得基于固定扫描规则的链接,这些链接是可以直接猜测的链接,如\password.ini,\login.asp,\_vti_bin\,\test.pl,\config.ini,\rootlogin.asp………。
将这些基于固定扫描规则直接得到的链接连同网站名www.abc.com一起加入待扫描的网页链接队列。
依次对网页链接队列中的每个链接扫描,同时把在扫描网页过程中发现的新链接再加入到网页链接队列。对于基于固定扫描规则得到的链接,通过分析服务器响应消息,若该链接存在就表明可以直接猜测到此链接,这种可猜测链接本身有安全隐患。若其中的某些链接通过分析服务器响应消息发现其不存在,表明猜想错误,返回继续其他链接的扫描。
例如,在本实施里,发现\password.ini,\login.asp,\_vti_bin\,\confing.ini…这些链接不存在,则继续扫描其它链接。但在扫描过程中发现\test.pl链接存在,表明此猜测成功该链接为新发现的一个漏洞,如果同时又在此网页内发现新的链接,如www.abc.com\asd.html,则把新发现的该链接添加到待扫描的链接队列等待扫描。
如果在www.abc.com网页中发现新链接aaa.asp,www.abc.com\wop.html,www.abc.com\ert\dd.html,则这些链接也将被加入队列中等待扫描。同时,对这些新发现的链接作变换处理,如从aaa.asp派生出aaa.asp.bk aaa.asp_bk,aaa.old,从\test.pl派生出test.bk,test.old从www.abc.com\wop.html派生出www.abc.com\wop.asp这些派生出的链接类也是通过猜测得到的,把这些链接也加入到待扫描的链接队列,依次对这些链接进行扫描,若这些链接确实存在,也是一种漏洞。
如上所述,从扫描的网页中发现新的链接,同时对这些新的链接做派生变换,得到基于固定的变换规则的派生链接。然后再对这些新发现的链接及派生猜想链接分别逐一作扫描,从中再发现新的链接,同时派生猜想链接,再扫描。如此反复循环,直至再没发现新的链接时,网站扫描结束。需要说明的是,在每次新发现的链接中,仅仅对本网站的链接做扫描,涉及的其他网站链接不做处理。
(2)分析阶段对每个扫描到的链接,分析引擎分析服务器的响应信息,得到在页面中发现的基本元素信息。这些信息包括邮件地址,文本信息,注释信息,Cookies信息,隐含信息,链接信息,死链接,跨站链接,等等。这些信息可以从页面中根据特征关键字收寻到。
例如,从test.pl的页面中找到一个邮箱地址rove@yahoo.com,该信息可以通过查找特征字符“@”判断邮件地址。
又如,从aaa.asp中,发现隐含信息,可以通过查找属性为“hidden”的单元来确定。
除此之外,在分析引擎中,还要负责发现可能存在有安全隐患或漏洞问题的页面,如,查找可能存在SQL注入风险的链接,查找有“Form”需要用户交互输入的页面信息。
这些都是在页面中通过查找关键字符或直接查找几个特征点,找到可能有漏洞风险的网页,交由攻击引擎确切判断。
(3)攻击阶段攻击阶段是用来确定漏洞安全问题,判断风险。它把分析引擎中得到的可能有问题的网页,根据其漏洞不同而选择不同的测试方案,包括模拟压力测试,缓冲区溢出测试,XSS、SQL攻击测试等等。
每种测试方案,再对应几种不同方式的攻击。如对可能存在SQL注入问题的网页,可采用“and 1=1”,“and 1=2”,“and‘1’=‘2’”,“and‘1’=‘1’”,“or‘1’=‘2’”“or‘1’=‘1’”等攻击方式。只要采用其中任何一种方式就能得到确定的结果,从而确定有漏洞或者无漏洞时,就不必再尝试其他的攻击方式来继续验证该漏洞,直接把结果提交给评估引擎。一般而言,这几种不同的攻击方式就能够对是否存在漏洞给出确定判断了。仅当极特殊时,这几种攻击方式都尝试后,仍然没法自动地明确判断,这时需要借助攻击工具进行人工参与的半自动化攻击,并最后给出结论。
(3)评估阶段评估阶段,全面综合扫描引擎、分析引擎及攻击引擎的结果。根据漏洞规则的级别,及攻击手段和攻击结果,给出网站安全评估。漏洞的安全级别和攻击手段的安全级别可以在数据库中预先定义好。
比如在使用越容易的攻击手段发现出来的问题就越严重,相比之下,使用较难掌握的攻击手段发现的问题,相对轻微些。另外攻击后果的严重程度,也反映问题的严重性。比如即使是同一种攻击手段,当造成网站瘫痪、崩溃或网页可以轻易被改写这些问题时,皆表明网站存在重大安全问题。
评估阶段,综合统计全部结果,并针对每种问题给用户提出修改的方案或建议,最后给出报告输出。
在实现上述方法和系统的过程中,数据库是必不可少的,数据库是扫描、攻击及评估引擎所采用的规则的直接依据。在本实施例中,数据库包括扫描规则数据和漏洞攻击数据库两部分,其问题描述表分别如表1和表2所示。

表1扫描规则数据库问题描述表

表2漏洞攻击数据库问题描述表
权利要求
1.一种网站安全风险评估方法,包括1)扫描步骤,根据数据库里的扫描规则爬行网站,获取所有的网页链接;2)分析步骤,对扫描步骤中读取的网页进行分析,找出基本元素,发现漏洞;3)攻击步骤,根据漏洞数据库中的规则,调用相应的测试函数对可能存有问题的网页进行模拟攻击;4)评估步骤,根据攻击结果,对网站安全的风险性进行评估。
2.如权利要求1所述的方法,其特征在于,所述的扫描步骤的过程为从网站名开始,应用扫描规则对网站进行扫描,对于在扫描过程中发现的新链接,一方面将其添加到待扫描的队列中进行扫描,同时还应用不同的扫描规则对其进行变换,得到由该网页派生的变换链接,并且把这样派生的链接也添加到待扫描的队列中进行扫描。
3.如权利要求1所述的方法,其特征在于,所述的攻击步骤的具体过程是1)从链接队列中读取一个链接及其对应的一条漏洞规则,并判断判断该漏洞规则所对应的可采取的攻击手段是否全部尝试完毕;2)如果没有攻击手段可用,则需要人工参与攻击并向评估引擎提交攻击结果;3)如果还有可用的攻击手段,则根据漏洞规则,选择一个相应的攻击规则,并向服务器提交攻击规则请求;4)分析服务器响应消息,对该漏洞是否为真正的漏洞进行判定,无论漏洞存在与否,若能够得到确切的判断,都把结果提交评估引擎进行评估;如果无法得到确切的判断结果,则返回步骤1)判断尝试其他攻击手段;5)当链接队列中所有的链接都读取完时,结束攻击。
4.如权利要求1所述的方法,其特征在于,所述的评估步骤根据漏洞是否存在、漏洞风险等级、攻击手段等级以及攻击结果等级,对链接队列中的链接漏洞进行判断。
5.一种网站安全风险评估系统,包括1)扫描引擎,用于根据数据库里的扫描规则爬行网站,获取所有的网页链接;2)分析引擎,用于对扫描步骤中读取的网页进行分析,找出基本元素,发现漏洞;3)攻击引擎,用于根据漏洞数据库中的规则,调用相应的测试函数对可能存有问题的网页进行模拟攻击;4)评估引擎,用于根据攻击结果,对网站安全的风险性进行评估。5)数据库,为系统中的其他组成部分提供扫描规则数据和漏洞攻击数据。
全文摘要
一种网站安全风险评估方法,包括1)扫描步骤,根据数据库里的扫描规则爬行网站,获取所有的网页链接;2)分析步骤,对扫描步骤中读取的网页进行分析,找出基本元素,发现漏洞;3)攻击步骤,根据漏洞数据库中的规则,调用相应的测试函数对可能存有问题的网页进行模拟攻击;4)评估步骤,根据攻击结果,对网站安全的风险性进行评估。所述的攻击并非传统意义上的探测,而是针对不同漏洞而设计的不同的攻击方法,通过自动攻击和半自动攻击(人工辅助)方式,通过评估引擎,综合全部攻击结果及对扫描页面的分析后,系统地做完整的评估。
文档编号H04L12/28GK1866817SQ20061001227
公开日2006年11月22日 申请日期2006年6月15日 优先权日2006年6月15日
发明者高山, 徐强, 吴剑林, 王耀勇, 王喜兵 申请人:北京华景中天信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1