软件安全-安全测试共96页PPT课件.ppt

上传人(卖家):三亚风情 文档编号:3219287 上传时间:2022-08-07 格式:PPT 页数:96 大小:1.37MB
下载 相关 举报
软件安全-安全测试共96页PPT课件.ppt_第1页
第1页 / 共96页
软件安全-安全测试共96页PPT课件.ppt_第2页
第2页 / 共96页
软件安全-安全测试共96页PPT课件.ppt_第3页
第3页 / 共96页
软件安全-安全测试共96页PPT课件.ppt_第4页
第4页 / 共96页
软件安全-安全测试共96页PPT课件.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

1、 第六章第六章 安全测试安全测试6.1 软件测试基础软件测试基础6.2 渗透测试渗透测试6.3 基于风险的安全测试基于风险的安全测试6.1 软件测试基础软件测试基础n6.1.1 验证与确认验证与确认n6.1.2 软件测试软件测试6.1.1 验证与确认验证与确认(1)缺陷与错误、验证与确认)缺陷与错误、验证与确认(2)处理错误的方法)处理错误的方法(3)人工验证的方法)人工验证的方法(1)缺陷与错误、验证与确认()缺陷与错误、验证与确认(1/2)n错误(错误(Error)系统处于可能导致故障的状态,往往由开发人员系统处于可能导致故障的状态,往往由开发人员引起,如输入错引起,如输入错 误、需求错误

2、、设计错误等。误、需求错误、设计错误等。n缺陷(缺陷(Fault,Bug)可能引起系统不正常行为的设计或编码错误(也可能引起系统不正常行为的设计或编码错误(也称称Bug)。)。n故障(故障(Failure)系统的规格说明与其行为之间的偏差,由一个或系统的规格说明与其行为之间的偏差,由一个或多个错误引起。多个错误引起。(1)缺陷与错误、验证与确认()缺陷与错误、验证与确认(2/2)n验证(验证(Verification)要查明工作产品是否恰当地反映了规定的要求。要查明工作产品是否恰当地反映了规定的要求。n确认(确认(Validation)要证明所提供的(或将要提供的)产品适合其预要证明所提供的(

3、或将要提供的)产品适合其预计的用途计的用途。验证要保证验证要保证“做得正确做得正确”,而确认则要保证,而确认则要保证“做的做的东西正确东西正确”,即验证注重,即验证注重“过程过程”,确认注重,确认注重“结结果果”。缺陷与错误、验证与确认缺陷与错误、验证与确认错误和缺陷的例子错误和缺陷的例子n 软件错误(或软件缺陷)的表现软件错误(或软件缺陷)的表现 软件未达到产品说明书标明的功能;软件未达到产品说明书标明的功能;软件出现了产品说明书指明不会出现的错误;软件出现了产品说明书指明不会出现的错误;软件功能超出了产品说明书指明的范围;软件功能超出了产品说明书指明的范围;软件未达到产品说明书虽未指出但应

4、达到的目标;软件未达到产品说明书虽未指出但应达到的目标;软件测试人员认为软件难以理解、不易使用、运行速度缓软件测试人员认为软件难以理解、不易使用、运行速度缓 慢、或者最终用户不满意。慢、或者最终用户不满意。n有错是软件的属性,而且是无法改变的。因此,关键在于如有错是软件的属性,而且是无法改变的。因此,关键在于如何避免错误的产生和消除已经产生的错误,使程序中的错误何避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。密度达到尽可能低的程度。?错误(错误(Error)算法缺陷(算法缺陷(Algorithmic Fault)手工操作缺陷(手工操作缺陷(Mechanical Fa

5、ult)如何处理这些错误和缺陷?(如何处理这些错误和缺陷?(1/5)确认?确认?如何处理这些错误和缺陷?(如何处理这些错误和缺陷?(2/5)冗余?冗余?如何处理这些错误和缺陷?(如何处理这些错误和缺陷?(3/5)?如何处理这些错误和缺陷?(如何处理这些错误和缺陷?(4/5)打补丁?打补丁?如何处理这些错误和缺陷?(如何处理这些错误和缺陷?(5/5)测试?测试?(2)处理错误的方法)处理错误的方法n验证验证n模块冗余模块冗余n打补丁打补丁n测试测试n声明错误的存在声明错误的存在(3)人工验证的方法)人工验证的方法nReviewnWalkthroughnInspectionnAudits6.1.2

6、 软件测试软件测试(1)测试的目的、原则和意义)测试的目的、原则和意义(2)测试的类型)测试的类型(3)测试文档)测试文档(4)测试人员)测试人员(5)测试活动)测试活动(6)案例学习)案例学习(1)测试目的、原则和意义)测试目的、原则和意义n Myers关于软件测试目的提出以下观点关于软件测试目的提出以下观点 测试是为了发现错误而执行程序的过程;测试是为了证明程序有错,而不是证明程序无错误;一个好的测试用例在于能够发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。n 测试应达到的具体目标测试应达到的具体目标 确保产品完成了它所承诺或公布的功能,并且所有用户可以访问到的功能都

7、有明确的书面说明;确保产品满足性能和效率的要求;确保产品是健壮的和适应用户环境的。(1)测试目的、原则和意义)测试目的、原则和意义n对待软件测试的态度对待软件测试的态度 从用户的角度出发:普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是 否可接受该产品。从软件开发者的角度出发:希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。n 一种正确的态度一种正确的态度 发现错误时,关注于改正错误,而不是埋怨具体的开发人员。(1)测试目的、原则和意义)测试目的、原则和意义n软件测试的原则软件测试的原则 应当把“尽早地和不断地测试”作为软件开发

8、者的座右铭 程序员应避免检查自己的程序;设计测试用例时,应包括合理的输入和不合理的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态;充分注意测试中的群集现象;对测试错误结果一定要有一个确认过程;制定严格的测试计划,排除测试的随意性;注意回归测试的关联性,往往修改一个错误而引起更多错误;妥善保存一切测试过程文档,测试的重现往往要靠测试文档。(1)测试目的、原则和意义)测试目的、原则和意义n软件测试的意义软件测试的意义 软件测试(Software testing)是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件

9、投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。(2)测试类型)测试类型n测试可分4个主要阶段:单元测试、集成测试、系统测试和验收测试。这是一种“从小到大”、“由内至外”、“循序渐进”的测试过程,体现了“分而治之”的思想。(2)测试类型)测试类型l单元测试指的是对每一个工作单元进行测试,了解其运行结果是否符合我们的预期。它对测试人

10、员的要求比较高,要求测试人员对程序代码比较熟悉;一般是由程序员自己编写完成某个单元后,先自我检查通过后,再将测试代码交给测试人员进行审查,如果发现缺陷,原开发者应当及时修正程序,这样可以尽快地发现程序中存在的错误,及时修正以提高程序开发的效率。(2)测试类型)测试类型l集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很

11、大影响,并且会大幅增加软件单元代码纠错的代价。(2)测试类型)测试类型l系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有压力测试、性能测试、随机测试等等。系统测试系统测试l在系统测试之前,软件开发小组应完成下列工作:lA、设计测试用例,记录测试结果,为系统测试提供经验和帮助lB、参与系统测试的规划和设计,保证软件测试的合理性。系统测试系统测试l系统

12、测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。(2)测试类型)测试类型l验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。(2)测试类型)测试类型l软件测试方法主要有黑盒测试方法与白盒测试两类:n黑盒测试:黑盒测试:又称功能测试、数据驱动测试或基于规格说明的测试,是在完全不考虑程序内部结构和内部特性的情况下,检查输入与输出之间关系是否符合要求。测试的主要依据是“需求”,在独立

13、测试阶段多采用黑盒测试方法。n白盒测试:白盒测试:又称结构测试、逻辑驱动测试或基于程序的测试,是在已知程序内部结构的情况下设计测试用例的测试方法。测试的主要依据是“设计”。显然,白盒测试适合在单元测试中运用。黑盒测试黑盒测试n用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出,但这是不可能的。举例:程序P有输入整数X和Y及输出量Z,在字长为32位的计算机上运行。白盒测试白盒测试n它把测试对象看做一个透明的盒子,它允许测试人员利用程 序内部的逻辑结构及有关信息,设计或选择测试用例,对程 序所有逻辑路径进行测试。n对一个具有多重选择和循环

14、嵌套的程序,不同的路径数目可能是天文数字。举例:某个小程序的流程图,包括了一个执行20次的循环。(3)测试文档)测试文档n测试用例测试用例n测试规范测试规范n测试计划测试计划n缺陷报告缺陷报告测试计划测试计划n测试计划是测试工作的指导性文档,规定测试活动的范围、测试计划是测试工作的指导性文档,规定测试活动的范围、方法、资源和进度;明确正在测试的项目、要测试的特性、方法、资源和进度;明确正在测试的项目、要测试的特性、要执行的测试任务、每个任务的负责人,以及与计划相关的要执行的测试任务、每个任务的负责人,以及与计划相关的风险。风险。n主要内容:测试目标、测试方法、测试范围、测试资源、测主要内容:测

15、试目标、测试方法、测试范围、测试资源、测试环境和工具、测试体系结构、测试进度表试环境和工具、测试体系结构、测试进度表 测试规范测试规范n测试规范是从整体上规定测试案例的运行环境、测试方法、测试规范是从整体上规定测试案例的运行环境、测试方法、生成步骤、执行步骤以及调试和验证的步骤。生成步骤、执行步骤以及调试和验证的步骤。n主要内容:系统运行环境、总体测试方法、测试用例的生成主要内容:系统运行环境、总体测试方法、测试用例的生成步骤、测试用例的执行步骤、调试和验证步骤、测试用例的执行步骤、调试和验证 测试用例测试用例n测试用例是数据输入和期望结果组成的对,其中测试用例是数据输入和期望结果组成的对,其

16、中“输入输入”是是对对 被测软件接收外界数据的描述,被测软件接收外界数据的描述,“期望结果期望结果”是对于相应是对于相应输入输入 软件应该出现的输出结果的描述,测试用例还应明确指软件应该出现的输出结果的描述,测试用例还应明确指出使出使 用具体测试案例产生的测试程序的任何限制。用具体测试案例产生的测试程序的任何限制。n测试用例可以被组织成一个测试系列,即为实现某个特定的测试用例可以被组织成一个测试系列,即为实现某个特定的 测试目的而设计的一组测试用例。例如,一部分测试用例用测试目的而设计的一组测试用例。例如,一部分测试用例用 来测试系统的兼容性,另一部分是用来测试系统在特定的环来测试系统的兼容性

17、,另一部分是用来测试系统在特定的环 境中,系统的典型应用是否能够很好地运作。境中,系统的典型应用是否能够很好地运作。缺陷报告(缺陷报告(Bug Report)n缺陷报告是编写在需要调查研究的测试过程期间发生的任何缺陷报告是编写在需要调查研究的测试过程期间发生的任何 事件。简而言之,就是记录软件缺陷。事件。简而言之,就是记录软件缺陷。n主要内容:缺陷编号、题目、状态、提出、解决、所属项目主要内容:缺陷编号、题目、状态、提出、解决、所属项目、测试环境、缺限报告步骤、期待结果、附件在报告缺陷时、测试环境、缺限报告步骤、期待结果、附件在报告缺陷时,一般要讲明缺限的严重性和优先级。一般要讲明缺限的严重性

18、和优先级。n严重性表示软件的恶劣程度,反映其对产品和用户的影响严重性表示软件的恶劣程度,反映其对产品和用户的影响n优先级表示修复缺陷的重要程度和应该何时修复。优先级表示修复缺陷的重要程度和应该何时修复。(4)测试人员)测试人员 好的软件测试人员应具有的综合素质好的软件测试人员应具有的综合素质 n沟通能力:理想的测试人员必须能够与测试涉及到的所有人沟通能力:理想的测试人员必须能够与测试涉及到的所有人进行沟通,进行沟通,具有与技术人员(开发者)和非技术人员(客户具有与技术人员(开发者)和非技术人员(客户、管理人员)的交流能力。、管理人员)的交流能力。n移情能力:和系统开发有关的所有人员(用户、开发

19、者、管移情能力:和系统开发有关的所有人员(用户、开发者、管理者)都处理者)都处 于一种既关心又担心的状态中。测试人员必须和于一种既关心又担心的状态中。测试人员必须和每一类人打交道,因此需要对每一类人都具有足够的理解和每一类人打交道,因此需要对每一类人都具有足够的理解和同情,从而将测试人员与相关人员之间的冲突和对抗减少到同情,从而将测试人员与相关人员之间的冲突和对抗减少到最低程度。最低程度。n技术能力:一个测试人员必须既明白被测软件系统的概念又技术能力:一个测试人员必须既明白被测软件系统的概念又要会使用工程中的那些工具,这需要有几年以上的编程经验要会使用工程中的那些工具,这需要有几年以上的编程经

20、验,从而有助于对软件开发过程的较深入理解。,从而有助于对软件开发过程的较深入理解。好的软件测试人员应具有的综合素质好的软件测试人员应具有的综合素质 n自信心:开发人员指责测试人员出了错是常有的事,测试人自信心:开发人员指责测试人员出了错是常有的事,测试人员必须对自己的观点有足够的自信心。员必须对自己的观点有足够的自信心。n外交能力:当你告诉某人他出了错时,就必须使用一些外交外交能力:当你告诉某人他出了错时,就必须使用一些外交方法,机智方法,机智 老练和外交手法有助于维护与开发人员之间的协老练和外交手法有助于维护与开发人员之间的协作关系。作关系。n幽默感:幽默感:在遇到狡辩的情况下,一个幽默的批

21、评将是很有帮在遇到狡辩的情况下,一个幽默的批评将是很有帮助的。助的。n很强的记忆力:理想的测试人员应该有能力将以前曾经遇到很强的记忆力:理想的测试人员应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。中的价值是无法衡量的。好的软件测试人员应具有的综合素质好的软件测试人员应具有的综合素质 n耐心耐心:一些质量保证工作需要难以置信的耐心,有时你需要:一些质量保证工作需要难以置信的耐心,有时你需要花费惊人的时间去分离、识别和分派一个错误。花费惊人的时间去分离、识别和分派一个错误。n怀疑精神:可以预料,

22、开发人员会尽他们最大的努力将所有怀疑精神:可以预料,开发人员会尽他们最大的努力将所有的错误解释过去。测式人员必须听每个人的说明,但他必须的错误解释过去。测式人员必须听每个人的说明,但他必须保持怀疑直到他自己看过以后。保持怀疑直到他自己看过以后。n自我督促:干测试工作很容易使你变得懒散,只有那些具有自我督促:干测试工作很容易使你变得懒散,只有那些具有自我督促能力的人才能够使自己每天正常地工作。自我督促能力的人才能够使自己每天正常地工作。n洞察力:一个好的测试人员具有洞察力:一个好的测试人员具有“测试是为了破坏测试是为了破坏”的观点的观点,捕获用户观点的能力,强烈的质量追求,对细节的关注能,捕获用

23、户观点的能力,强烈的质量追求,对细节的关注能力。力。(5)测试活动)测试活动(5)测试活动)测试活动(5)测试活动)测试活动(6)案例学习)案例学习n二进制加法器二进制加法器 1.Press button“C”:clear the result 2.Press button“0”:input 0 3.Press button“1”:input 1 4.Press button“+”:add 5.Press button“=”:display the result(6)案例学习)案例学习(6)案例学习)案例学习设计测试用例的原则设计测试用例的原则:n测试每一状态的每一种内部转换,验证程序在正常状

24、态转换下与设计需测试每一状态的每一种内部转换,验证程序在正常状态转换下与设计需求的一致性。求的一致性。n测试每一状态中每一种内部转换的监护条件,考虑条件为真、为假以及测试每一状态中每一种内部转换的监护条件,考虑条件为真、为假以及条件参数处于极限值附近的情况。条件参数处于极限值附近的情况。n测试每一状态中是否可能发生奇异的内部转换,如在满测试每一状态中是否可能发生奇异的内部转换,如在满20位后连续按多位后连续按多次数字键的特殊情况。次数字键的特殊情况。n测试状态与状态之间每一条转换路径,验证程序在合法条件测试状态与状态之间每一条转换路径,验证程序在合法条件 下行为的正下行为的正确性。确性。n测试

25、状态与状态之间每一条转换路径的监护条件,考虑条件测试状态与状态之间每一条转换路径的监护条件,考虑条件 为真、为假为真、为假以及条件参数处于极限值附近的情况。以及条件参数处于极限值附近的情况。n分析状态与状态之间可能发生的异常转换,并设计测试用例,如考察连分析状态与状态之间可能发生的异常转换,并设计测试用例,如考察连续按加号或等号键的特殊情况。续按加号或等号键的特殊情况。n将系统作为一个整体来看待,使用典型的加法算式验证系统的计算功能将系统作为一个整体来看待,使用典型的加法算式验证系统的计算功能。(6)案例学习)案例学习 在二进制加法器的例子中,设计三种测试用列在二进制加法器的例子中,设计三种测

26、试用列 基于内部转换的测试用例基于内部转换的测试用例 基于状态之间转换的测试用例基于状态之间转换的测试用例 基于加法算式的测试用例基于加法算式的测试用例 基于内部转换的测试用例基于内部转换的测试用例基于内部转换的测试用例基于内部转换的测试用例基于内部转换的测试用例基于内部转换的测试用例基于状态之间转换的测试用例基于状态之间转换的测试用例基于加法算式的测试用例基于加法算式的测试用例基于加法算式的测试用例基于加法算式的测试用例Common Errorsn易用性问题:用户无法使用或不方便使用易用性问题:用户无法使用或不方便使用 不符合用户操作习惯。不符合用户操作习惯。界面中英文混杂,界面元素参差不齐

27、,文字显示不全。界面中英文混杂,界面元素参差不齐,文字显示不全。无自动安装程序或安装程序不完善。无自动安装程序或安装程序不完善。界面中的信息不能及时刷新,不能正确反映当前数据状态界面中的信息不能及时刷新,不能正确反映当前数据状态 提示信息意文不明或为原始的英文提示。提示信息意文不明或为原始的英文提示。要求用户输入多余的、本来系统可以自动获取的数据。要求用户输入多余的、本来系统可以自动获取的数据。某一项功能的冗余操作太多。某一项功能的冗余操作太多。不能记忆用户的设置或操作习惯,用户每次进入系统都需不能记忆用户的设置或操作习惯,用户每次进入系统都需 要重新操作初始环境。要重新操作初始环境。复杂操作

28、无联机帮助。复杂操作无联机帮助。Common Errorsn稳定性问题:影响用户正常工作稳定性问题:影响用户正常工作 程序运行过程中不断申请,但没有完全释放资源,造成系程序运行过程中不断申请,但没有完全释放资源,造成系 统性能越来越低,并出现无规律的死机现象。统性能越来越低,并出现无规律的死机现象。不能重现的错误,有些与代码中的未初始化变量有关,有不能重现的错误,有些与代码中的未初始化变量有关,有 些与系统不检查异常情况有关。些与系统不检查异常情况有关。对一般性错误的屏蔽能力较差。对一般性错误的屏蔽能力较差。对输入数据没有进行充分并且有效的有效性检查,造成不对输入数据没有进行充分并且有效的有效

29、性检查,造成不 合要求的数据进入数据库。合要求的数据进入数据库。n用户文档问题用户文档问题 无标准,无新功能使用方法,无版本改动说明。无标准,无新功能使用方法,无版本改动说明。Common Errorsn兼容性问题兼容性问题 对硬件平台或软件平台的兼容性不好。对硬件平台或软件平台的兼容性不好。比如:在一台计算机上可以稳定运行,而在另一台计算比如:在一台计算机上可以稳定运行,而在另一台计算 机上运行就极不稳定。机上运行就极不稳定。n数据接口问题数据接口问题 未提供一些常用文件格式的接口,如未提供一些常用文件格式的接口,如TXT文件、文件、Word 文件。文件。6.2 渗透测试渗透测试n6.2.1

30、 软件安全测试软件安全测试n6.2.2 渗透测试渗透测试6.2.1 软件安全测试软件安全测试 安全测试,在充分考虑软件安全性问题的前提下进行的安全测试,在充分考虑软件安全性问题的前提下进行的测试,普通的软件测试的主要目的是:确保软件不会去完成测试,普通的软件测试的主要目的是:确保软件不会去完成没有预先设计的功能,确保软件能够完成预先设计的功能。没有预先设计的功能,确保软件能够完成预先设计的功能。但是,安全测试更有针对性同时可能采用一些和普通测试不但是,安全测试更有针对性同时可能采用一些和普通测试不一样的测试手段,如攻击和反攻击技术。因此,实际上,安一样的测试手段,如攻击和反攻击技术。因此,实际

31、上,安全测试实际上就是一轮多角度、全方位的攻击和反攻击,其全测试实际上就是一轮多角度、全方位的攻击和反攻击,其目的就是要抢在攻击者之前尽可能多地找到软件中的漏洞目的就是要抢在攻击者之前尽可能多地找到软件中的漏洞以减少软件遭到攻击的可能性。以减少软件遭到攻击的可能性。测试软件的安全需求是否得到满足的两种常见方法是:测试软件的安全需求是否得到满足的两种常见方法是:功能安全测试和基于风险的安全测试功能安全测试和基于风险的安全测试。系统安全测试的常用方法包括:压力测试、黑盒测试、系统安全测试的常用方法包括:压力测试、黑盒测试、渗透测试等。渗透测试等。一次转身最远能产生多远的距离一次转身最远能产生多远的

32、距离 从传统软件测试转向安全性测试从传统软件测试转向安全性测试n如果不付出相当大的努力去消除,每个复杂的软件程序都会有代价高昂的安全漏洞。这些漏洞会造成病毒和蠕虫的横行,也会使得罪犯能够攫取用户的个人财务数据,而这些用户已如惊弓之鸟,并且本来就很不愿意把他们的个人数据放在Internet上。n2019年,CardSystems成为数字化攻击的牺牲品,由于对信用卡数据在未加密情况下存储,有4000多万张借记卡和信用卡泄密,4个月后,这家公司倒闭出售。n安全性测试:不是验证软件的正确性,而是挖掘软件的漏洞(软件中的“不应该”和“不允许”部分,例如:代码中的缓冲区溢出漏洞,电子秤中的作弊后门等)。-

33、越崩溃越快乐!越崩溃越快乐!一次转身最远能产生多远的距离一次转身最远能产生多远的距离 从传统软件测试转向安全性测试从传统软件测试转向安全性测试nRFC2828将漏洞定义为“系统设计、实现或操作和管理中存在的缺陷或弱点,能被利用而违背系统的安全策略”n例如:对于一个web输入界面的测试,其上有个字段【银行账号】(正确输入是12个数字),对该字段的测试包括:n正确输入验证:正好12个数字(分该账号存在和不存在两种情况验证)n异常输入验证:(模仿用户的一些无意错误操作)输入不满12个数字,超过12个数字,有非数字字符,空,等等。n安全测试:SQL注入攻击(用web代理来输入,绕过客户端的检验检查)、

34、跨站点脚本输出、整数溢出等。n安全测试的出发点:像攻击者一样思考一些典型的攻击模式一些典型的攻击模式n验证用户输入不会提供机会让攻击者通过已知的SQL注入攻击来操纵后台数据库;n验证不存在跨站点执行脚本的可能性;n验证在向服务器发送一个它不能正确处理的非法数据包的情况下,服务器不会崩溃;n验证用户输入不会导致数据处理溢出;n验证程序对错误的处理是恰当的;n验证数据在网络传输中或存储时是经过了保护的n验证不会出现信息泄露n验证访问控制n。6.2.2 软件渗透测试软件渗透测试n Penetration testing是是完全模拟黑客完全模拟黑客可能使用的攻击技术和漏洞发现技可能使用的攻击技术和漏洞

35、发现技术,对目标系统(软件)的安全做深入的探测,发术,对目标系统(软件)的安全做深入的探测,发现系统最脆弱的环节。现系统最脆弱的环节。n能直观的展现系统(软件)所面临的安全问题能直观的展现系统(软件)所面临的安全问题渗透测试分类渗透测试分类 根据渗透方法分类根据渗透方法分类n黑箱测试黑箱测试(zero-knowledge testing):渗透者完全处于对):渗透者完全处于对系统一无所知的状态。通常,这种类型的测试,最初的信息系统一无所知的状态。通常,这种类型的测试,最初的信息获取来自获取来自DNS、Web、Email及各种公开对外的服务器。及各种公开对外的服务器。n白盒测试白盒测试:测试者可

36、以通过正常渠道向被测单位取得各种资:测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或程序的代码片段,料,包括网络拓扑、员工资料甚至网站或程序的代码片段,也能与单位其他员工进行面对面的沟通。这类的测试目的是也能与单位其他员工进行面对面的沟通。这类的测试目的是模拟企业内部雇员的越权操作。模拟企业内部雇员的越权操作。n隐秘测试:隐秘是针对被测单位而言的。通常,接受渗透测隐秘测试:隐秘是针对被测单位而言的。通常,接受渗透测试的单位网络管理部门会收到通知:在某些时间段进行测试试的单位网络管理部门会收到通知:在某些时间段进行测试。因此能够检测网络中出现的变化。但在隐秘测试中,

37、被测。因此能够检测网络中出现的变化。但在隐秘测试中,被测单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位单位中的信息安全事件监控、响应、恢复做得是否到位渗透测试分类渗透测试分类 根据渗透目标分类根据渗透目标分类n主机操作系统渗透:对主机操作系统渗透:对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试等操作系统本身进行渗透测试n数据库系统渗透:对数据库系统渗透:对MS-SQL,ORACLE,mysql,infomix,sybase,DB2等数据库应用

38、系统进行渗透测试等数据库应用系统进行渗透测试n应用系统渗透:对渗透目标提供的各种应用,如应用系统渗透:对渗透目标提供的各种应用,如ASP、CGI、JSP、PHP等组成的等组成的WWW应用进行渗透测试应用进行渗透测试n网络设备渗透:对各种防火墙、入侵检测系统、网络设备进网络设备渗透:对各种防火墙、入侵检测系统、网络设备进行渗透测试行渗透测试从攻方视角看渗透从攻方视角看渗透n内网测试内网测试渗透测试人员由内部网络发起测试。这类测试能够模拟企业内部违规操作者的行为。优势:绕过了防火墙的保护。常用渗透方式:远程缓冲区溢出,口令猜测,以及b/s或c/s应用程序测试n外网测试外网测试渗透测试人员完全处于外

39、部网络,模拟对内部状态一无所知的外部攻击者的行为。包括对网络设备的远程攻击,口令管理安全性测试,防火墙规则试探、规避,web及其它开放应用服务的安全性测试从攻方视角看渗透从攻方视角看渗透n不同网段不同网段/vlan之间的渗透之间的渗透从某内/外部网段,尝试对另一网段/vlan进行渗透。通常可能用到的技术包括:对网络设备的远程攻击;对防火墙的远程攻击或规则探测、规避尝试。信息的收集和分析伴随着每一个渗透测试步骤,每一个步骤又有三个组成部分:操作、响应和结果分析。n端口扫描端口扫描通过对目标地址的tcp/udp端口扫描,确定其所开放的服务的数量和类型,这是所有渗透测试的基础。通过端口扫描,可以基本

40、确定一个系统的基本信息,结合安全工程师的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据。从攻方视角看渗透从攻方视角看渗透n远程溢出远程溢出这是当前出现的频率最高、威胁最严重,同时又是最容易实现的一种渗透方法,一个具有一般网络知识的入侵者就可以在很短的时间内利用现成的工具实现远程溢出攻击。对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击就易如反掌。n口令猜测口令猜测口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,就可以猜测口令。对一个系统账号

41、的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。从攻方视角看渗透从攻方视角看渗透n本地溢出本地溢出指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码获得管理员权限的方法。前提:首先要获得一个普通用户密码。也就是说由于导致本地溢出的一个关键条件是设置不当的密码策略。多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,就能获取不进行主动安全防御的系统的控制管理权限。从攻方视角看渗透从攻方视角看渗透n脚本及应用测试脚本及应用测试专门针对web及数据库服务器进行。据最新技术统计,脚本安全弱点为当前web系统,尤其是存在动态内容的web系统

42、比较严重的 安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制权限。因此对于含有动态页面的web、数据库等系统,web脚本及应用测试将是必不可少的一个环节。在web脚本及应用测试中,可能需要检查的部份包括:n检查应用系统架构,防止用户绕过系统直接修改数据库;n检查身份认证模块,用以防止非法用户绕过身份认证;n检查数据库接口模块,用以防止用户获取系统权限;n检查文件接口模块,防止用户获取系统文件;n检查其他安全威胁。从攻方视角看渗透从攻方视角看渗透n无线测试无线测试中国的无线网络还处于建设时期,但是由于无线网络的部署简易,在一些大城市的普及率已经很高了。

43、北京和上海的商务区至少80%的地方都可以找到接入点。通过对无线网络的测试,可以判断企业局域网安全性,已经成为越来越重要的渗透测试环节。n除了上述的测试手段外,还有一些可能会在渗透测试过程中除了上述的测试手段外,还有一些可能会在渗透测试过程中使用的技术,包括:社交工程学、拒绝服务攻击,以及中间使用的技术,包括:社交工程学、拒绝服务攻击,以及中间人攻击。人攻击。从守方视角看渗透从守方视角看渗透 当具备渗透测试攻击经验的人们站到系统管理员当具备渗透测试攻击经验的人们站到系统管理员的角度,要保障一个大网的安全时,我们会发现,的角度,要保障一个大网的安全时,我们会发现,需要关注的问题是完全不同的:从攻方

44、的视角看,需要关注的问题是完全不同的:从攻方的视角看,是是“攻其一点,攻其一点,不及其余不及其余”,只要找到一点漏洞,只要找到一点漏洞,就有可能撕开整条战线;但从守方的视角看,却发就有可能撕开整条战线;但从守方的视角看,却发现往往现往往“千里之堤,毁于蚁穴千里之堤,毁于蚁穴”。因此,需要有好。因此,需要有好的理论指引,从技术到管理都的理论指引,从技术到管理都 注重安全,才能使网注重安全,才能使网络固若金汤。络固若金汤。渗透测试的必要性渗透测试的必要性n渗透测试利用网络安全扫描器、专用安全测试工具和富有经渗透测试利用网络安全扫描器、专用安全测试工具和富有经验的安全工程师的人工经验对网络中的核心服

45、务器及重要的验的安全工程师的人工经验对网络中的核心服务器及重要的网络设备,包括服务器、网络设备、防火墙等进行非破坏性网络设备,包括服务器、网络设备、防火墙等进行非破坏性质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户。侵的过程和细节产生报告给用户。渗透测试和工具扫描可以很好的互相补充。工具扫描具渗透测试和工具扫描可以很好的互相补充。工具扫描具有很好的效率和速度,但是存在一定的误报率和漏报率,并有很好的效率和速度,但是存在一定的误报率和漏报率,并且不能发现高层次、复杂、并且相互关联的安全且不能发现高层次、复杂、并

46、且相互关联的安全 问题;渗透问题;渗透测试需要投入的人力资源较大、对测试者的专业技能要求很测试需要投入的人力资源较大、对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能),高(渗透测试报告的价值直接依赖于测试者的专业技能),但是非常准确,可以发现逻辑性更但是非常准确,可以发现逻辑性更 强、更深层次的弱点。强、更深层次的弱点。微软的渗透测试团队的日常工作流程微软的渗透测试团队的日常工作流程n时间选择时间选择n为减轻渗透测试对网络和主机的影响,渗透测试时间为减轻渗透测试对网络和主机的影响,渗透测试时间尽量安排在业务量不大的时段和晚上尽量安排在业务量不大的时段和晚上n策略选择策

47、略选择n为防止渗透测试造成网络和主机的业务中断,在渗透测为防止渗透测试造成网络和主机的业务中断,在渗透测试中不使用含有拒绝服务的测试策略试中不使用含有拒绝服务的测试策略授权渗透测试的监测手段授权渗透测试的监测手段n在评估过程中,由于渗透测试的特殊性,用户可以要求对整在评估过程中,由于渗透测试的特殊性,用户可以要求对整体测试流程进行监控体测试流程进行监控n测试方自控:由渗透测试方对本次渗透测试过程中的三方测试方自控:由渗透测试方对本次渗透测试过程中的三方面数据进行完整记录:操作、响应、分析,最终形成完整面数据进行完整记录:操作、响应、分析,最终形成完整有效的渗透测试报告提交给用户有效的渗透测试报

48、告提交给用户n用户监控:用于监控有用户监控:用于监控有4种形式种形式n全程监控:采用类似ethereal的嗅探软件进行全程抓包嗅探n择要监控:对扫描过程不进行录制,仅仅在安全工程师分析数据后,准备发起渗透前才开启软件进行嗅探n主机监控:仅监控受测主机的存活状态,避免意外情况发生n指定攻击源:用户指定由特定攻击源地址进行攻击,该源地址的主机由用户进行进程、网络连接、数据传输等多方监控关于网络信息收集关于网络信息收集n使用使用ping sweep、dns sweep、snmp sweep、tracert等手段对主机存活情况、等手段对主机存活情况、dns名、网络链路名、网络链路等进行信息收集。可以对

49、目标的网络情况、拓扑情等进行信息收集。可以对目标的网络情况、拓扑情况、应用情况有一个大致的了解,为更深层次的渗况、应用情况有一个大致的了解,为更深层次的渗透测试提供资料透测试提供资料保守策略选择保守策略选择n对于不能接受任何可能风险的主机系统,如银行票对于不能接受任何可能风险的主机系统,如银行票据核查系统、电力调度系统等,可选择如下保守策据核查系统、电力调度系统等,可选择如下保守策略略n复制一份目标环境,包括硬件平台、操作系统、数据复制一份目标环境,包括硬件平台、操作系统、数据库管理系统、应用软件等库管理系统、应用软件等n对目标的副本进行渗透测试对目标的副本进行渗透测试基于网络的渗透测试的一般

50、过程基于网络的渗透测试的一般过程n目标搜索目标搜索n列表:要测试的可以访问的网络服务器列表列表:要测试的可以访问的网络服务器列表n探测探测n渗透渗透n主机评估主机评估n继续继续6.3 基于风险的安全测试基于风险的安全测试步骤如下:1、基于前面设计阶段制定的威胁模型,设计测试计划。如:用户口令安全的威胁树如下图所示测试计划就可以基于口令安全所可能遭受的各个攻击进行制定。测试计划就可以基于口令安全所可能遭受的各个攻击进行制定。6.3 基于风险的安全测试基于风险的安全测试 2、将安全测试的最小组件单位进行划分,并确定组件的输入格式。实际上,和传统的测试不同,威胁模型中,并不是所有的模块都会有安全问题

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件安全-安全测试共96页PPT课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|