6.2安全程序设计---安全测试

上传人:豆浆 文档编号:10275702 上传时间:2017-09-02 格式:PDF 页数:47 大小:569.23KB
返回 下载 相关 举报
6.2安全程序设计---安全测试_第1页
第1页 / 共47页
6.2安全程序设计---安全测试_第2页
第2页 / 共47页
6.2安全程序设计---安全测试_第3页
第3页 / 共47页
6.2安全程序设计---安全测试_第4页
第4页 / 共47页
6.2安全程序设计---安全测试_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《6.2安全程序设计---安全测试》由会员分享,可在线阅读,更多相关《6.2安全程序设计---安全测试(47页珍藏版)》请在金锄头文库上搜索。

1、1安全程序设计授课教师:何慧2安全程序设计安全性测试3安全程序设计 内容提纲v安全性测试人员的角色v安全性测试与一般测试的区别v根据威胁模型制定安全性测试计划v发现一个错误时测试并未结束vWeb安全测试v课程总结4安全程序设计 安全性测试人员的角色v设计人员、项目经理、系统设计师设计出了一个好的、安全的产品,开发人员写出了漂亮的代码,接下来由测试人员进行验证v测试人员不是开发过程的“尾巴”,为开发人员清理战场,而是由测试人员决定产品是否能够发行,测试人员对此有绝对发言权v只有测试阶段才能判断产品在现实世界中是否安全,测试是安全过程的一部分v测试过程应贯穿于开发过程始终5安全程序设计 安全性测试

2、人员的角色v测试人员也应参与设计阶段以及威胁建模过程,要针对安全性问题来评审设计规范v测试人员要有一双“狡猾”的眼睛,经常能发现潜在的隐患v如果测试计划中没有包含缓冲区溢出或安全性测试,那么应迅速纠正这种错误v如果你不对你的应用程序进行安全性测试,那么公司外的某个人“将为你实施”6安全程序设计 安全性测试人员的角色v优秀的测试人员靠破坏事物而出名,要知道攻击者是如何思考的v好的安全性测试人员同时也是能理解并执行重要的测试原则的好的测试人员v测试人员的经验、专长、创造力是安全性,测试人员的三方面特质v应该从诸如http:/网站回顾以前安全方面的bug,象黑客一样思考7安全程序设计 安全性测试与一

3、般测试的区别v安全性测试不同于软件功能测试v功能测试:证明功能说明书中描述的功能和特征v安全性测试:检查一些功能和特征是否安全可靠v安全性测试需要证明:不能欺骗另一个用户的身份,不能纂改数据,不能查看他不能访问的数据,不能拒绝对其他用户的服务,不能通过恶意的使用产品来获得更多特权v安全性测试目的:测试代码是否完成更多的任务8安全程序设计 根据威胁模型制定安全性测试计划v一个有效、严格、完整的安全性测试途径,部分源自威胁模型:将应用程序分解成基本的组件确定组件的接口按照潜在的漏洞给接口分级确定每一个接口使用的数据通过注入不合适的数据发现安全问题9安全程序设计 根据威胁模型制定安全性测试计划v用威

4、胁模型制定测试计划的问题 1、要确保防御性的缓和方法能正确地运用,并且确实缓和了确定的威胁 2、要确认威胁模型中没有出现别的问题10安全程序设计 分解应用程序v威胁模型不只是设计工具,在整个开程都有帮助,尤其在测试阶段v威胁模型中有三项对测试人员有价值系统的组件列表对每个组件的威胁类型STRIDE威胁的风险DREAD11安全程序设计 确定组件接口v通过接口代码发现安全bug的有效途径v要了解每一个组件所提供接口,应查看功能说明书,或问开发人员、读代码v接口包括 1、TCP和UDP socket 2、NETBIOS 3、共享内存 4、剪贴板 5、过程调用接口 6、EXE、DLL 7、注册表 8、

5、http请求响应 9、命令行参数 10、对话框12安全程序设计 按照潜在的漏洞对接口分级v对要测试的接口要进行分级排序,易受到攻击的应做充分的测试v下面的过程为测试提供更多的粒度和精细度:13安全程序设计 确定每一个接口使用的数据结构v确定被每一个接口访问的数据,下表列出了一些接口技术及数据来源14安全程序设计 STRIDE类型的攻击程序v威胁模型中的STRIDE威胁类型有助于你确定实施何种测试,威胁的风险让你可以对你的测试区分优先级。高危险级别的组件应优先测试,并要彻底测试v下表中列出了一些基本指导方针:15安全程序设计 STRIDE类型的攻击程序16安全程序设计 STRIDE类型的攻击程序

6、17安全程序设计 STRIDE类型的攻击程序18安全程序设计 用数据变种攻击应用程序v数据变种:包括扰乱环境,使得处理接口数据的代码处于不安全状态v下图为干扰应用程序环境的方法19安全程序设计 发现一个错误时测试并未结束v当测试发现一个缺陷后,开始执行其他测试?v应继续寻找这个bug的变体,当发现bug变体,识别变量的过程就更有益了v例如,在应用程序处理文本IP地址,如172.100.84.22,如果第一个字节不是数字,而是长字符串就会发生缓冲区溢出,如aaaaaaaaaa.100.84.22v测试注入如下数据aaaaaaaaaa.100.84.22、100.aaaaaaaaaa.84.221

7、00.84.aaaaaaaaaa.22、100.84.22.aaaaaaaaaa20安全程序设计 发现一个错误时测试并未结束v要进行分析的更系统方法应遵循如下步骤:减少攻击。一个缺陷的哪些方面很明显,可从测试计划中去掉?识别基本的expoit变量标识出变量值中那些可能有意义的特殊值测试完整的变量和变量值矩阵21安全程序设计 寻找漏洞的方法源代码扫描环境错误注入反编译有源代码无源代码找出那些容易出错的函数,在词法分析和语法分析的过程中,对程序进行强约束的安全检查符号连接攻击,文件描述字攻击,共享函数库攻击,格式化字符串攻击,环境变量攻击,竞争条件攻击等。对于不公开的源代码的程序是一种有效的方法。

8、IDA反编译程序,通过提供的脚本语言来识别一些可以汇编代码序列。22安全程序设计 寻找漏洞的方法v美国海军研究实验室的landwher漏洞分类模型v逻辑错误: 由于程序运行环境导致的漏洞 由于常见编程疏忽导致的漏洞 由于配置不当导致的漏洞 特点:可操作性好其他可利用的逻辑错误边界条件错误(包括资源耗尽和约束错误认证、鉴别错误串行错误范围错误校验错误无意其他隐匿通道(存储/定时)逻辑/时间炸弹陷门特洛伊木马(不能复制/能复制)故意23安全程序设计 寻找新的安全漏洞方法v分析漏洞形成的原因来做软件测试,回答问题“是”,“否”,”不适用“,”不知道“v1.目录是否拥有特殊的权限?v2.在程序运行时用

9、户是否能够看到程序的内部信息?v3.环境名称(如路径名)是否是特殊的系统对象?v4.在程序运行期间环境对象是否恒定不变(例如在程序运行时,其他任何主体是否能够改变这个对象)?v5.在程序运行时,对象是否存在?v6.在程序的运行时,它所建立的临时文件是否能够被其他主题删除或篡改?v7.程序的运行是否总有足够的内存空间?v8.通过网络收到的数据是否总是有效、有界?v9.在环境变量汇总的数据是否总是有效、有界?v10.用户提供的输入数据是总是有效、有界?24安全程序设计 寻找新的安全漏洞方法v11.从其他文件输入的数据是否总是有界、有效?v12.由碎片重新组装后的数据对象是否改变了原对象的本质特性?

10、v13.程序是否假定在特殊的路径中运行?v14.程序员是否假设对象的某个属性有预先规定的值v15.程序数据的修改(通过外部主体)是否会影响程序的语义v16.在创建一个文件时,任何已存在的同名文件是否能够被覆盖重写?v17.对对象的操作是否有足够的权限v18.对象的名称和性质是否相关?v19.有特定名字的对象是否会仅仅由于其名字的原因而不被系统中的其他实体使用?v20.网络对象是否可信?25安全程序设计 代码检查方法分析未知漏洞的手段:v国内:反编译和人工阅读代码v国外:半自动化方法程序分片(program slicing)静态扫描(Statically scanning)错误注入(fault

11、injection)26安全程序设计 错误注入用户输入用户接口应用程序操作系统应用函数库 其他应用特性标准函数库用户输入拦截,错误注入应用追踪错误注入系统函数拦截替换,错误注入应用函数追踪拦截,错误注入27安全程序设计 代码检查工具v代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;v可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。v代码检测工具列表28安全

12、程序设计 Web安全性测试v测试网站应用程序安全性(测试阶段)静态检查检查Web Application程序代码动态检查编译或直接测试执行配置或参数的安全问题v检查网站应用程序的安全性(测试及维护阶段)弱点扫描渗透测试29安全程序设计 Web安全性测试v测试网站应用程序安全性v静态检查v人工原始代码检测由专家、受过训练的人员进行v自动原始代码检测有多种工具可进行动态检查 sandbox测试:在可控的测试环境(sandbox)中,测试执行时的安全性。错误注入测试(Fault Injection):试着利用Fault Injection软件工程的检测技术(即输入为预期或错误的信息等)来对Web A

13、pplication进行安全评估,以找出系统中可能的安全缺陷。30安全程序设计 Web安全性测试v监测网站系统安全性除了检查原始代码外,Web整体的安全尚需要以系统的角度来看:v弱点扫描检查已知的安全问题。有自动化工具,但有误判问题。v渗透测试检验安全问题及风险。确认整体的安全性,不是网页应用程序安全,系统就是安全的。 31安全程序设计 Web安全性测试v弱点扫描的优缺点优点:快速、自动化测试已知的弱点 Plug-in、已知弱点的测试方式愈完整,则愈能侦测出相关弱点。缺点:误判严重。已知弱点测试方式需不断增加及更新。可能影响正常网络运行。32安全程序设计 Web安全性测试v渗透测试经由一连串的

14、活动,进行评估其安全的弱点设计的安全弱点与漏洞潜在的安全弱点与漏洞又称为“ethical hacking”。渗透测试者须具有黑客的技术、高的道德标准及富有创造力。33安全程序设计 Web安全性测试v渗透测试V.S.黑客攻击v黑客只知道(点) How:如何入侵? Why:为什么可以入侵成功v渗透测试则需要知道(面) How:如何进入侵 Why:为什么可以入侵成功 What:探测什么 Which:需要哪些条件或工具 When:什么是最好时机只需找到一种入侵的方法各种潜在可能入侵成功的方法/甚至进行验证34安全程序设计 Web安全性测试-渗透测试类型v黑盒测试(Black Box Penetrati

15、on Testing)测试前不提供组件相关的任何信息仅提供已公开的部分信息。如:公司名称,domain,IP Address等。模拟真实世界的黑客手法网络环境与拓扑的取得应用程序、操作系统、网络设备等测试与用可能的安全弱点SQL Injection 、CGI Test 、Password Cracker35安全程序设计 Web安全性测试-渗透测试类型v白箱测试 (White Box Penetration Testing)v1.测试前提供重要的组织相关的任何信息提供合法的使用者账号与密码、网络设备的种类、网页服务器的信息(i.e., Apache/*nix or IIS/Win2k)、操作系统(i.e., Windows/*nix)、数据库平台(i.e., Oracle or MS SQL)、Firewalls (i.e. Cisco PIX)v2.模拟黑客已知许多內部的信息(测试安全政策)外部黑客:测试与用可能的安全弱点离职员工:用安全政策漏洞进入內部恶意员工:用安全政策漏洞进入36安全程序设计 Web安全性测试v工具vOWASP计划 WebGoat WebScarab37安全程序设计 Web安全性测试vWe

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号