




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第六章 安全测试6.1 软件测试基础6.2 渗透测试6.3 基于风险的安全测试6. 1 软件测试基础6.1.1 验证与确认6.1.2 软件测试6.1.1 验证与确认(1)缺陷与错误、验证与确认 (2)处理错误的方法 (3)人工验证的方法 (1)缺陷与错误、验证与确认(1/2)错误(Error) 系统处于可能导致故障的状态,往往由开发人员引起,如输入错 误、需求错误、设计错误等。 缺陷(Fault ,Bug ) 可能引起系统不正常行为的设计或编码错误(也称Bug)。 故障(Failure) 系统的规格说明与其行为之间的偏差,由一个或多个错误引起。(1)缺陷与错误、验证与确认(2/2)验证( V
2、erification ) 要查明工作产品是否恰当地反映了规定的要求。 确认( Validation ) 要证明所提供的(或将要提供的)产品适合其预计的用途 。 验证要保证“做得正确”,而确认则要保证“做的东西正确”,即验证注重“过程”,确认注重“结果” 。 缺陷与错误、验证与确认错误和缺陷的例子 软件错误(或软件缺陷)的表现 软件未达到产品说明书标明的功能; 软件出现了产品说明书指明不会出现的错误; 软件功能超出了产品说明书指明的范围; 软件未达到产品说明书虽未指出但应达到的目标; 软件测试人员认为软件难以理解、不易使用、运行速度缓 慢、或者最终用户不满意。 有错是软件的属性,而且是无法改变
3、的。因此,关键在于如何避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。 ?错误(Error)算法缺陷(Algorithmic Fault)手工操作缺陷(Mechanical Fault)如何处理这些错误和缺陷?(1/5)确认?如何处理这些错误和缺陷?(2/5)冗余?如何处理这些错误和缺陷?(3/5)?如何处理这些错误和缺陷?(4/5)打补丁?如何处理这些错误和缺陷?(5/5)测试?(2)处理错误的方法验证模块冗余打补丁测试声明错误的存在(3)人工验证的方法ReviewWalkthroughInspectionAudits6.1.2 软件测试(1)测试的目的、原则和意义
4、 (2)测试的类型 (3)测试文档 (4)测试人员 (5)测试活动 (6)案例学习(1)测试目的、原则和意义 Myers关于软件测试目的提出以下观点 测试是为了发现错误而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例在于能够发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 测试应达到的具体目标 确保产品完成了它所承诺或公布的功能,并且所有用户可以访问到的功能都有明确的书面说明; 确保产品满足性能和效率的要求; 确保产品是健壮的和适应用户环境的。 (1)测试目的、原则和意义对待软件测试的态度 从用户的角度出发 :普遍希望通过软件测试暴露软
5、件中隐藏的错误和缺陷,以考虑是 否可接受该产品。 从软件开发者的角度出发 :希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。 一种正确的态度 发现错误时,关注于改正错误,而不是埋怨具体的开发人员。 (1)测试目的、原则和意义软件测试的原则 应当把“尽早地和不断地测试”作为软件开发者的座右铭 程序员应避免检查自己的程序; 设计测试用例时,应包括合理的输入和不合理的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态; 充分注意测试中的群集现象; 对测试错误结果一定要有一个确认过程; 制定严格的测试计划,排除测试的随意性; 注意回归测
6、试的关联性,往往修改一个错误而引起更多错误; 妥善保存一切测试过程文档,测试的重现往往要靠测试文档。(1)测试目的、原则和意义软件测试的意义 软件测试(Software testing)是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为
7、了检验软件系统是否满足需求。(2)测试类型测试可分4个主要阶段:单元测试、集成测试、系统测试和验收测试。这是一种“从小到大”、“由内至外”、“循序渐进”的测试过程,体现了“分而治之”的思想。(2)测试类型单元测试指的是对每一个工作单元进行测试,了解其运行结果是否符合我们的预期。它对测试人员的要求比较高,要求测试人员对程序代码比较熟悉;一般是由程序员自己编写完成某个单元后,先自我检查通过后,再将测试代码交给测试人员进行审查,如果发现缺陷,原开发者应当及时修正程序,这样可以尽快地发现程序中存在的错误,及时修正以提高程序开发的效率。(2)测试类型集成测试是在单元测试的基础上,测试在将所有的软件单元按
8、照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。(2)测试类型系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的 “ 先知者问题 ” 。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件
9、规约进行对比。软件系统测试方法很多,主要有压力测试、性能测试、随机测试等等。系统测试在系统测试之前,软件开发小组应完成下列工作:A、设计测试用例,记录测试结果,为系统测试提供经验和帮助B、参与系统测试的规划和设计,保证软件测试的合理性。系统测试系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。(2)测试类型验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。(2)测试类型软件测
10、试方法主要有黑盒测试方法与白盒测试两类:黑盒测试:又称功能测试、数据驱动测试或基于规格说明的测试,是在完全不考虑程序内部结构和内部特性的情况下,检查输入与输出之间关系是否符合要求。测试的主要依据是“需求”,在独立测试阶段多采用黑盒测试方法。白盒测试:又称结构测试、逻辑驱动测试或基于程序的测试,是在已知程序内部结构的情况下设计测试用例的测试方法。测试的主要依据是“设计”。显然,白盒测试适合在单元测试中运用。黑盒测试用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出,但这是不可能的。 举例:程序P有输入整数X和Y及输出量Z,在字长为32位
11、的计算机上运行。 白盒测试它把测试对象看做一个透明的盒子,它允许测试人员利用程 序内部的逻辑结构及有关信息,设计或选择测试用例,对程 序所有逻辑路径进行测试。 对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。 举例:某个小程序的流程图,包括了一个执行20次的循环。 (3)测试文档测试用例测试规范测试计划缺陷报告测试计划测试计划是测试工作的指导性文档,规定测试活动的范围、 方法、资源和进度;明确正在测试的项目、要测试的特性、要执行的测试任务、每个任务的负责人,以及与计划相关的风险。主要内容:测试目标、测试方法、测试范围、测试资源、测试环境和工具、测试体系结构、测试进度表 测试规
12、范测试规范是从整体上规定测试案例的运行环境、测试方法、 生成步骤、执行步骤以及调试和验证的步骤。 主要内容:系统运行环境、总体测试方法、测试用例的生成步骤、测试用例的执行步骤、调试和验证 测试用例测试用例是数据输入和期望结果组成的对,其中“输入”是对 被测软件接收外界数据的描述,“期望结果”是对于相应输入 软件应该出现的输出结果的描述,测试用例还应明确指出使 用具体测试案例产生的测试程序的任何限制。 测试用例可以被组织成一个测试系列,即为实现某个特定的 测试目的而设计的一组测试用例。例如,一部分测试用例用 来测试系统的兼容性,另一部分是用来测试系统在特定的环 境中,系统的典型应用是否能够很好地
13、运作。 缺陷报告(Bug Report)缺陷报告是编写在需要调查研究的测试过程期间发生的任何 事件。简而言之,就是记录软件缺陷。 主要内容:缺陷编号、题目、状态、提出、解决、所属项目、测试环境、缺限报告步骤、期待结果、附件在报告缺陷时,一般要讲明缺限的严重性和优先级。 严重性表示软件的恶劣程度,反映其对产品和用户的影响优先级表示修复缺陷的重要程度和应该何时修复。 (4)测试人员 好的软件测试人员应具有的综合素质 沟通能力:理想的测试人员必须能够与测试涉及到的所有人进行沟通, 具有与技术人员(开发者)和非技术人员(客户、管理人员)的交流能力。 移情能力:和系统开发有关的所有人员(用户、开发者、管
14、理者)都处 于一种既关心又担心的状态中。测试人员必须和每一类人打交道,因此需要对每一类人都具有足够的理解和同情,从而将测试人员与相关人员之间的冲突和对抗减少到最低程度。 技术能力:一个测试人员必须既明白被测软件系统的概念又要会使用工程中的那些工具,这需要有几年以上的编程经验,从而有助于对软件开发过程的较深入理解。 好的软件测试人员应具有的综合素质 自信心:开发人员指责测试人员出了错是常有的事,测试人员必须对自己的观点有足够的自信心。 外交能力:当你告诉某人他出了错时,就必须使用一些外交方法,机智 老练和外交手法有助于维护与开发人员之间的协作关系。 幽默感: 在遇到狡辩的情况下,一个幽默的批评将
15、是很有帮助的。 很强的记忆力:理想的测试人员应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。 好的软件测试人员应具有的综合素质 耐心 :一些质量保证工作需要难以置信的耐心,有时你需要花费惊人的时间去分离、识别和分派一个错误。 怀疑精神:可以预料,开发人员会尽他们最大的努力将所有的错误解释过去。测式人员必须听每个人的说明,但他必须保持怀疑直到他自己看过以后。 自我督促:干测试工作很容易使你变得懒散,只有那些具有自我督促能力的人才能够使自己每天正常地工作。 洞察力:一个好的测试人员具有“测试是为了破坏”的观点,捕获用户观点的能力,强烈的质量追求,对
16、细节的关注能力。 (5)测试活动(5)测试活动(5)测试活动(6)案例学习二进制加法器 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)案例学习设计测试用例的原则 :测试每一状态的每一种内部转换,验证程序在正常状态转换下与设计需求的一致性。 测试每一状态中每一种内部转换的监护条件,考虑条件为真、为假以及条件参数处于
17、极限值附近的情况。 测试每一状态中是否可能发生奇异的内部转换,如在满20位后连续按多次数字键的特殊情况。测试状态与状态之间每一条转换路径,验证程序在合法条件 下行为的正确性。测试状态与状态之间每一条转换路径的监护条件,考虑条件 为真、为假以及条件参数处于极限值附近的情况。分析状态与状态之间可能发生的异常转换,并设计测试用例,如考察连续按加号或等号键的特殊情况。 将系统作为一个整体来看待,使用典型的加法算式验证系统的计算功能。 (6)案例学习 在二进制加法器的例子中,设计三种测试用列 基于内部转换的测试用例 基于状态之间转换的测试用例 基于加法算式的测试用例 基于内部转换的测试用例基于内部转换的
18、测试用例基于内部转换的测试用例基于状态之间转换的测试用例基于加法算式的测试用例基于加法算式的测试用例Common Errors易用性问题:用户无法使用或不方便使用 不符合用户操作习惯。 界面中英文混杂,界面元素参差不齐,文字显示不全。 无自动安装程序或安装程序不完善。 界面中的信息不能及时刷新,不能正确反映当前数据状态 提示信息意文不明或为原始的英文提示。 要求用户输入多余的、本来系统可以自动获取的数据。 某一项功能的冗余操作太多。 不能记忆用户的设置或操作习惯,用户每次进入系统都需 要重新操作初始环境。 复杂操作无联机帮助。 Common Errors稳定性问题:影响用户正常工作 程序运行过
19、程中不断申请,但没有完全释放资源,造成系 统性能越来越低,并出现无规律的死机现象。 不能重现的错误,有些与代码中的未初始化变量有关,有 些与系统不检查异常情况有关。 对一般性错误的屏蔽能力较差。 对输入数据没有进行充分并且有效的有效性检查,造成不 合要求的数据进入数据库。 用户文档问题 无标准,无新功能使用方法,无版本改动说明。 Common Errors兼容性问题 对硬件平台或软件平台的兼容性不好。 比如:在一台计算机上可以稳定运行,而在另一台计算 机上运行就极不稳定。 数据接口问题 未提供一些常用文件格式的接口,如TXT文件、Word 文件。 6.2 渗透测试6.2.1 软件安全测试6.2
20、.2 渗透测试6.2.1 软件安全测试 安全测试,在充分考虑软件安全性问题的前提下进行的测试,普通的软件测试的主要目的是:确保软件不会去完成没有预先设计的功能,确保软件能够完成预先设计的功能。但是,安全测试更有针对性同时可能采用一些和普通测试不一样的测试手段,如攻击和反攻击技术。因此,实际上,安全测试实际上就是一轮多角度、全方位的攻击和反攻击,其目的就是要抢在攻击者之前尽可能多地找到软件中的漏洞以减少软件遭到攻击的可能性。 测试软件的安全需求是否得到满足的两种常见方法是:功能安全测试和基于风险的安全测试。 系统安全测试的常用方法包括:压力测试、黑盒测试、渗透测试等。一次转身最远能产生多远的距离
21、 从传统软件测试转向安全性测试如果不付出相当大的努力去消除,每个复杂的软件程序都会有代价高昂的安全漏洞。这些漏洞会造成病毒和蠕虫的横行,也会使得罪犯能够攫取用户的个人财务数据,而这些用户已如惊弓之鸟,并且本来就很不愿意把他们的个人数据放在Internet上。2019年,CardSystems成为数字化攻击的牺牲品,由于对信用卡数据在未加密情况下存储,有4000多万张借记卡和信用卡泄密,4个月后,这家公司倒闭出售。安全性测试:不是验证软件的正确性,而是挖掘软件的漏洞(软件中的“不应该”和“不允许”部分,例如:代码中的缓冲区溢出漏洞,电子秤中的作弊后门等)。 - 越崩溃越快乐!一次转身最远能产生多
22、远的距离 从传统软件测试转向安全性测试RFC2828将漏洞定义为“系统设计、实现或操作和管理中存在的缺陷或弱点,能被利用而违背系统的安全策略”例如:对于一个web输入界面的测试,其上有个字段【银行账号】(正确输入是12个数字),对该字段的测试包括:正确输入验证:正好12个数字(分该账号存在和不存在两种情况验证)异常输入验证:(模仿用户的一些无意错误操作)输入不满12个数字,超过12个数字,有非数字字符,空,等等。安全测试:SQL注入攻击(用web代理来输入,绕过客户端的检验检查)、跨站点脚本输出、整数溢出等。安全测试的出发点:像攻击者一样思考一些典型的攻击模式验证用户输入不会提供机会让攻击者通
23、过已知的SQL注入攻击来操纵后台数据库;验证不存在跨站点执行脚本的可能性;验证在向服务器发送一个它不能正确处理的非法数据包的情况下,服务器不会崩溃;验证用户输入不会导致数据处理溢出;验证程序对错误的处理是恰当的;验证数据在网络传输中或存储时是经过了保护的验证不会出现信息泄露验证访问控制。6.2.2 软件渗透测试 Penetration testing是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统(软件)的安全做深入的探测,发现系统最脆弱的环节。能直观的展现系统(软件)所面临的安全问题渗透测试分类 根据渗透方法分类黑箱测试(zero-knowledge testing):渗透者完全处
24、于对系统一无所知的状态。通常,这种类型的测试,最初的信息获取来自DNS、Web、Email及各种公开对外的服务器。白盒测试:测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或程序的代码片段,也能与单位其他员工进行面对面的沟通。这类的测试目的是模拟企业内部雇员的越权操作。隐秘测试:隐秘是针对被测单位而言的。通常,接受渗透测试的单位网络管理部门会收到通知:在某些时间段进行测试。因此能够检测网络中出现的变化。但在隐秘测试中,被测单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位渗透测试分类 根据渗透目标分类主机操作系统渗透
25、:对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试数据库系统渗透:对MS-SQL,ORACLE,mysql,infomix,sybase,DB2等数据库应用系统进行渗透测试应用系统渗透:对渗透目标提供的各种应用,如ASP、CGI、JSP、PHP等组成的WWW应用进行渗透测试网络设备渗透:对各种防火墙、入侵检测系统、网络设备进行渗透测试从攻方视角看渗透内网测试渗透测试人员由内部网络发起测试。这类测试能够模拟企业内部违规操作者的行为。优势:绕过了防火墙的保护。常用渗透方式:远程缓冲区溢出,口令猜测,以及b/s或c/s应用程序测试外网测试渗透测试人员完全
26、处于外部网络,模拟对内部状态一无所知的外部攻击者的行为。包括对网络设备的远程攻击,口令管理安全性测试,防火墙规则试探、规避,web及其它开放应用服务的安全性测试从攻方视角看渗透不同网段/vlan之间的渗透从某内/外部网段,尝试对另一网段/vlan进行渗透。通常可能用到的技术包括:对网络设备的远程攻击;对防火墙的远程攻击或规则探测、规避尝试。信息的收集和分析伴随着每一个渗透测试步骤,每一个步骤又有三个组成部分:操作、响应和结果分析。 端口扫描通过对目标地址的tcp/udp端口扫描,确定其所开放的服务的数量和类型,这是所有渗透测试的基础。通过端口扫描,可以基本确定一个系统的基本信息,结合安全工程师
27、的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据。 从攻方视角看渗透远程溢出这是当前出现的频率最高、威胁最严重,同时又是最容易实现的一种渗透方法,一个具有一般网络知识的入侵者就可以在很短的时间内利用现成的工具实现远程溢出攻击。对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击就易如反掌。 口令猜测口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,就可以猜测口令。对一个系统账号的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。 从
28、攻方视角看渗透本地溢出指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码获得管理员权限的方法。前提:首先要获得一个普通用户密码。也就是说由于导致本地溢出的一个关键条件是设置不当的密码策略。多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,就能获取不进行主动安全防御的系统的控制管理权限。 从攻方视角看渗透脚本及应用测试专门针对web及数据库服务器进行。据最新技术统计,脚本安全弱点为当前web系统,尤其是存在动态内容的web系统比较严重的 安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制权限。因此对于含有动
29、态页面的web、数据库等系统,web脚本及应用测试将是必不可少的一个环节。在web脚本及应用测试中,可能需要检查的部份包括:检查应用系统架构,防止用户绕过系统直接修改数据库;检查身份认证模块,用以防止非法用户绕过身份认证;检查数据库接口模块,用以防止用户获取系统权限;检查文件接口模块,防止用户获取系统文件;检查其他安全威胁。 从攻方视角看渗透无线测试中国的无线网络还处于建设时期,但是由于无线网络的部署简易,在一些大城市的普及率已经很高了。北京和上海的商务区至少80%的地方都可以找到接入点。通过对无线网络的测试,可以判断企业局域网安全性,已经成为越来越重要的渗透测试环节。除了上述的测试手段外,还
30、有一些可能会在渗透测试过程中使用的技术,包括:社交工程学、拒绝服务攻击,以及中间人攻击。 从守方视角看渗透 当具备渗透测试攻击经验的人们站到系统管理员的角度,要保障一个大网的安全时,我们会发现,需要关注的问题是完全不同的:从攻方的视角看,是“攻其一点, 不及其余”,只要找到一点漏洞,就有可能撕开整条战线;但从守方的视角看,却发现往往“千里之堤,毁于蚁穴”。因此,需要有好的理论指引,从技术到管理都 注重安全,才能使网络固若金汤。 渗透测试的必要性渗透测试利用网络安全扫描器、专用安全测试工具和富有经验的安全工程师的人工经验对网络中的核心服务器及重要的网络设备,包括服务器、网络设备、防火墙等进行非破
31、坏性质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户。 渗透测试和工具扫描可以很好的互相补充。工具扫描具有很好的效率和速度,但是存在一定的误报率和漏报率,并且不能发现高层次、复杂、并且相互关联的安全 问题;渗透测试需要投入的人力资源较大、对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能),但是非常准确,可以发现逻辑性更 强、更深层次的弱点。 微软的渗透测试团队的日常工作流程时间选择为减轻渗透测试对网络和主机的影响,渗透测试时间尽量安排在业务量不大的时段和晚上策略选择为防止渗透测试造成网络和主机的业务中断,在渗透测试中不使用含有拒绝服务的测
32、试策略授权渗透测试的监测手段在评估过程中,由于渗透测试的特殊性,用户可以要求对整体测试流程进行监控测试方自控:由渗透测试方对本次渗透测试过程中的三方面数据进行完整记录:操作、响应、分析,最终形成完整有效的渗透测试报告提交给用户用户监控:用于监控有4种形式全程监控:采用类似ethereal的嗅探软件进行全程抓包嗅探择要监控:对扫描过程不进行录制,仅仅在安全工程师分析数据后,准备发起渗透前才开启软件进行嗅探主机监控:仅监控受测主机的存活状态,避免意外情况发生指定攻击源:用户指定由特定攻击源地址进行攻击,该源地址的主机由用户进行进程、网络连接、数据传输等多方监控关于网络信息收集使用ping swee
33、p、dns sweep、snmp sweep、tracert等手段对主机存活情况、dns名、网络链路等进行信息收集。可以对目标的网络情况、拓扑情况、应用情况有一个大致的了解,为更深层次的渗透测试提供资料保守策略选择对于不能接受任何可能风险的主机系统,如银行票据核查系统、电力调度系统等,可选择如下保守策略复制一份目标环境,包括硬件平台、操作系统、数据库管理系统、应用软件等对目标的副本进行渗透测试基于网络的渗透测试的一般过程目标搜索列表:要测试的可以访问的网络服务器列表探测渗透主机评估继续6.3 基于风险的安全测试步骤如下:1、基于前面设计阶段制定的威胁模型,设计测试计划。如:用户口令安全的威胁树
34、如下图所示测试计划就可以基于口令安全所可能遭受的各个攻击进行制定。 6.3 基于风险的安全测试 2、将安全测试的最小组件单位进行划分,并确定组件的输入格式。 实际上,和传统的测试不同,威胁模型中,并不是所有的模块都会有安全问题,因此,我们只需将需要安全测试的某一部分程序取出来进行测试,将安全测试的最小组件单位进行划分。 此外,每个组件都提供了接口,也就是输入,在测试阶段,测试用例需要进行输入,这就必须将每个接口的输入类型、输入格式等都列出来,便于测试用例的制定。这些输入如: Socket数据; 无线数据;命令行;语音设备;串口;HTTP提交;等等。6.3 基于风险的安全测试 3、根据各个接口可
35、能遇到的威胁,或者系统的潜在漏洞,对接口进行分级。 在该步骤中,主要是确定系统将要受到的威胁的严重性,将比较严重的威胁进行优先的测试,这个严重性的判断,应该来源于威胁模型。 可以通过很多方法对接口受到的威胁性进行分级,如评分方法,对各个接口可能受到的各种威胁进行评分,最后累加,优先测试那些分数排在前面的接口。6.3 基于风险的安全测试 4、确定输入数据,设计测试用例。 每一个接口可以输入的数据都不相同,由于安全测试不同于普通的测试,因此还要更加精心地设计测试用例。有时候还要精心设计输入的数据结构,如随机数、集合等的设计,都要必须是为安全测试服务的。 在测试用例的设计过程中,必须要了解,安全测试
36、实际上是对程序进行的安全攻击,因此,不但数据本身需要精心设计,测试手段也要精心设计。如在对缓冲区溢出的测试中,必须精心设计各种输入,从不同的方面来对程序进行攻击。 6.3 基于风险的安全测试 5、攻击应用程序(软件),查看其效果。 用设计的测试用例来攻击应用程序,使得系统处于一种受到威胁的状态,来得到输出。 6、总结测试结果,提出解决方案。 本过程中,将预期输出和实际输出进行比较,得出结论,写出测试报告,最后提交相应的人员,进行错误解决。登录页面的威胁分析猜测口令:设计时应设计登录试探次数,例如:只许试探三次,然后锁定ip地址。利用password文件系统地猜测口令:加密文件(密码强弱,文件存
37、放是否安全)分析协议和滤出口令:不能明文传输,密码的强弱重放攻击:加时间戳木马监视登录/口令:系统安全,一次性口令盗链:SQL注入漏洞异常输入破坏:安全测试技术之七种武器一个完整的WEB安全性测试可以从以下几个方面入手:1.安全体系测试网络是否提供了安全的通信部署拓扑结构是否包括内部的防火墙部署拓扑结构中是否包括远程应用程序服务器操作系统是否存在漏洞,例如Unix上的缓冲区溢出漏洞、Windows上的RPC漏洞、缓冲区溢出漏洞、安全机制漏洞等; 安全测试技术之七种武器2. 输入验证如何验证输入是否清楚入口点是否验证Web页输入是否对传递到组件或Web服务的参数进行验证是否验证从数据库中检索的数
38、据是否依赖客户端的验证应用程序是否易受SQL注入攻击应用程序是否易受XSS攻击如何处理输入安全测试技术之七种武器3.身份验证和授权是否区分公共访问和受限访问如何验证调用者身份如何验证数据库的身份如何向最终用户授权4. 敏感数据是否存储机密信息如何存储敏感数据是否在网络中传递敏感数据5. 加密为何使用特定的算法如何确保加密密钥的安全性6.参数操作是否验证所有的输入参数是否在参数过程中传递敏感数据是否为了安全问题而使用HTTP头数据7.审核和日志记录是否明确了要审核的活动是否考虑如何流动原始调用这身份安全测试技术之七种武器应用服务器的安全性测试技术一、应用服务器的安全性测试内容 基于应用服务器的安
39、全性测试内容主要包括:验证隐私系统是否受到保护、数据是否加密,检测系统是否有安全保密的漏洞,检验系统及其所在的网络是否能够承受各种类型的恶意攻击。对于Web 服务器而言,具体测试内容还有测试用户登录与注册、是否有超时限制、服务器脚本语言、日志文件、目录安全、SSL 安全传输测试等。二、应用服务器的安全性测试方法与技术 (一)全面搜集与应用服务器安全相关的各种信息,分析其可能出现的安全隐患应用服务器被使用的企业单位基本信息、管理中薄弱环节、应用服务器配置信息、系统可访问的主机IP 地址及对应的主机名、服务器所在网络的拓朴结构等,这些信息可能成为被利用的安全隐患,有的可能在互联网上搜索得到,要对其
40、进行分析和安全隐患检查。应用服务器的安全性测试技术(二)应用服务器的漏洞探测和扫描 1、利用搜索引擎搜索已公布的漏洞。可利用Google 等工具搜索资源,研究系统漏洞。可访问CVE(公共漏洞和暴露)数据库,查找漏洞。Packet Storm 组织是由一些致力于提供必要信息以安全化全球网络的安全专业人士组成的非盈利组织,在其网站上可以找到许多安全信息,如Windows 中缓冲区溢出漏洞、Unix主机中远程过程调用(RPC)的安全隐患、FTP漏洞,Sendmail邮件服务软件的漏洞等。 2、利用扫描工具进行漏洞探测。服务器漏洞扫描的工具很多,基于Linux的扫描工具有Namp、Netcat、Nessus。基于Windows的端口扫描器有NeWT 等。还有很多扫描工具,如:著名的COPS、Tiger、 Fluxay5(流光)、X-scan、N-Stealth、Metasploit Framework(metasploit:55555/)等。其中,很多工具可以在网上免费下载。可以利用上述工具探测系统漏洞,查看系统是否打了补丁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45376-2025镍和铜电铸工艺规范
- GB/T 38178.1-2025液压传动10 MPa系列单出杆缸的安装尺寸第1部分:普通系列
- 结构化思考的行政管理师试题及答案
- 微生物检验相关机构的支持与协作及试题及答案
- 项目推进过程中的协同作用试题及答案
- 项目管理考试综合能力提升试题及答案
- 广连高速花都至从化段定测项目测量技术总结
- 公司财务管理的关键措施试题及答案
- 微生物培养条件的优化试题及答案
- 项目管理性价比分析方法试题及答案
- 2025年南阳科技职业学院单招综合素质考试题库及答案1套
- 《2025 ACC急性冠状动脉综合征管理指南》解读
- 双休背后:从“要我学”到“我要学”的转变-高三家长会
- 2025-2030中国行李物品行业市场发展趋势与前景展望战略分析研究报告
- 驾校管理系统答辩
- 心理咨询师的伦理与试题及答案
- 2024年劳务员考试题库完美版
- 2025年商丘职业技术学院单招职业技能考试题库附答案
- 矿山地质环境保护与土地复垦方案报告正文
- IATF16949-应急计划评审报告
- 输血病人的个案护理
评论
0/150
提交评论