软件测试下的定义是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别,包含但不限于安全性、用户体验、逻辑性、操作性等等。但渗透测试考虑的是以黑客方法,从单点上找到利用途径,证明你有问题,帮助客户提高认识,也能解决急迫的一些问题。
软件测试不同于渗透测试,渗透测试侧重于几个点的穿透攻击,而软件测试是侧重于对安全威胁的建模,系统的对来自各个方面,各个层面威胁的全面考量。软件测试可以告诉你,你的系统可能会来自哪个方面的威胁,正在遭受哪些威胁,以及您的系统已经可抵御什么样的威胁。当然,软件测试涵盖渗透测试的部分内容。软件测试与渗透测试的区别主要在:
渗透测试考虑的是以黑客方法,从单点上找到利用途径,证明你有问题,帮助客户提高认识,也能解决急迫的一些问题,但无法也不能去针对系统做完备性的软件测试,所以难以解决系统自身实质性的安全问题,所以提供渗透测试的厂商一般都是自己买什么防护设备,以自己防护设备针对的威胁为主要渗透点,找到你有类似的问题,解决方案就以卖对应的防护设备作为手段,针对具体的威胁,通过防护设备采取被动的防护。而软件测试的厂商,则从整体系统架构,安全编码,软件测试,软件测试覆盖性,安全度量等多个因素去考虑问题,提出的解决方法则是逐步帮助客户引入安全开发过程,提供相应的工具支撑,目标是最后让客户提升业务系统自身实质性安全问题。
软件测试首先会对被测试系统做系统分析,分析其架构,软件体系以及程序部署等等,然后再对被测系统做系统安全分析,在这之后会对系统进行安全建模,明确本系统可能来自的各个潜在威胁,之后需要剖析系统,确认有哪些攻击界面,根据测试方案进行测试。
软件测试下的定义是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别,包含但不限于安全性、用户体验、逻辑性、操作性等等。但渗透测试考虑的是以黑客方法,从单点上找到利用途径,证明你有问题,帮助客户提高认识,也能解决急迫的一些问题。
渗透测试包括以下这些阶段:
情报的搜集阶段:情报是指目标网络,服务器,应用程序等的所有信息,如果是黑盒测试,信息搜集阶段是最重要的一个阶段,一般通过被动扫描或主动扫描两种技术。
威胁建模阶段:如果把渗透测试看做一场对抗赛,那么威胁建模就相当于指定策略。
漏洞分析阶段:漏洞分析阶段是从目标网络中发现漏洞的过程。这个阶段我们会根据之前搜集的目标网络的操作系统,开放端口及服务程序等信息,查找和分析目标网络中的漏洞。这个阶段如果全靠人手工进行,那么会非常累。不过Kali Linux 2提供了大量的网络和应用漏洞评估工具。不光是网络的漏洞,还要考虑人的因素长时间研究目标人员的心理,以便对其实施欺骗,从而达到渗透目标。
漏洞利用阶段:找到目标网络的漏洞后,就可以对其进行测试了。在漏洞利用阶段我们关注的重点是,如果绕过网络的安全机制来控制目标网络或访问目标资源。如果我们在漏洞分析阶段顺利完成任务,那么我们就可以在此阶段准确,顺利的进行。漏洞利用阶段的渗透测试应该有精确的范围。这个阶段我们主要的目标就是获取我们之前评估的重要的资产。进行渗透测试时还需要考虑成功的概率和对目标网络造成的最大破坏。
后渗透攻击阶段:后渗透攻击阶段和漏洞利用阶段连接十分密切,作为渗透测试人员,必须尽可能地将目标网络渗透后可能产生的结果模拟出来。
报告阶段:报告阶段是渗透测试最后一个阶段。要简单,直接且尽量避免大量专业术语向客户汇报测试目标网络出现的问题,以及可能产生的风险。这份报告应该包括目标网络最重要的威胁,使用渗透数据产生的表格和图标,以及对目标网络存在问题的修复方案,当前安全机制的改进建议等。