安全测试不同于渗透测试,渗透测试侧重于几个点的穿透攻击,而安全测试是侧重于对安全威胁的建模,系统的对来自各个方面,各个层面威胁的全面考量。安全测试可以告诉您,您的系统可能会来自哪个方面的威胁,正在遭受哪些威胁,以及您的系统已经可抵御什么样的威胁。当然,安全测试涵盖渗透测试的部分内容。
安全测试与渗透测试的区别主要在:
渗透测试考虑的是以黑客方法,从单点上找到利用途径,证明你有问题,帮助客户提高认识,也能解决急迫的一些问题,但无法也不能去针对系统做完备性的安全测试,所以难以解决系统自身实质性的安全问题,所以提供渗透测试的厂商一般都是自己买什么防护设备,以自己防护设备针对的威胁为主要渗透点,找到你有类似的问题,解决方案就以卖对应的防护设备作为手段,针对具体的威胁,通过防护设备采取被动的防护。而安全测试的厂商,则从整体系统架构,安全编码,安全测试,安全测试覆盖性,安全度量等多个因素去考虑问题,提出的解决方法则是逐步帮助客户引入安全开发过程,提供相应的工具支撑,目标是最后让客户提升业务系统自身实质性安全问题。
安全测试首先会对被测试系统做系统分析,分析其架构,软件体系以及程序部署等等,然后再对被测系统做系统安全分析,在这之后会对系统进行安全建模,明确本系统可能来自的各个潜在威胁,之后需要剖析系统,确认有哪些攻击界面,根据测试方案进行测试。
安全测试只关注漏洞的可利用性分析,但不关注漏洞如何被真实利用的技术,这当中有几个因素:
成本因素:对攻击者来说,利用漏洞的收益是系统所保护的资产,所以可以投入更多的成本来研究漏洞的利用,包括时间,人员,手段。但是对安全测试来说,整个收益是客户愿意投入的成本,系统所保护的资产远大于系统开发投入,安全投入又只占系统开发投入的百分之三左右,所以从成本角度考虑,安全测试只关注评估漏洞被利用的可能性,而不应该具体去研究漏洞如何被利用且展示给客户。
视角因素:安全测试是帮助客户降低安全威胁,减少安全漏洞。本身是一种防护技术,尽量发现安全问题并指导客户修复安全问题是关键,沿着的路径是发现安全问题->分析评估安全问题-〉提出修补建议-〉度量安全,而不是以攻击者视角发现安全问题-〉利用安全问题-〉获得非法收益的路径。对防护方最有价值的是发现问题,解决问题,而不是发现问题,利用问题。防护方关注都漏洞是否可被利用确定安全漏洞和修复级别就够了,研究再多的具体攻击利用技术,对操作系统级别的防护是有意义的,但是对普通应用系统的开发与使用者则是无价值的。
假定因素:客户面临的风险不仅来自于外部,也可能来自于攻击者通过客户端主机的渗透(如通过对某员工笔记本挂马再接入内网的方式),还有可能来自于内部。安全要保护全面的安全,我们不能假定攻击者路径就一定处于同渗透测试一样的纯外部严密防护中,也无法假定攻击者通过时间积累社工或自身特性(员工)获取到一些信息。同时攻击利用技术发展到现在,已经和具体应用的特性结合起来,攻击者时刻有可能发现以前我们认为低危,不好利用的漏洞的利用方法。因此安全测试关注点是业务系统在失去所有外部防护之后,自身实现的安全性,关注高覆盖的安全测试和安全度量,而不是单一的渗透测试。
当然目前,由于用户对安全的理解还存在很多认识误区,还需要慢慢改善。
最近1个项目,用户的目标是希望能业务系统上线之前,通过测试改善安全,用户以前的安全主要是某国际大公司提供流程咨询一套,但难以解决安全问题,因此用户希望引入安全测试来全面提升安全,其实是很符合安全测试目标的,但是在选型之后,给予几家厂商PK的项目则是纯网站渗透测试性的,评价标准也只是在谁最后真实入侵了谁牛的标准,虽然我们也渗透成功,但是出具的报告则是针对某个页面具体的威胁分析,改进建议,没有去放置破坏性实质入侵的东西,用户反倒觉得没其他做渗透测试厂商报告漂亮,抓了WEBSHELL的屏,拿了敏感文件什么的,其实就和安全测试的本意就远了。
当然既然用户的认识只在这个阶段,也没办法,后面的测试我们就只能以渗透利用的方式去做和出报告了,但我一直在想,用户需要的是提升自身业务系统的安全,继续渗透这套方法,我们难道又要回到卖防护设备被动防护的方式吗?在给微软测试当中,我提交的报告无需去写EXP,除了MDB那个例外,因为微软认为MDB不是安全文件,我给他们说了可以利用来打IIS,但估计我拙劣的英文没让他们明白,最后才以BLUEHAT上的实际演示来证明。其实技术发展到现在,安全漏洞具体怎么利用成为了一门艺术,但是漏洞理论上是否可被利用却是基本可以定性的,只要理论上可以被利用的漏洞,厂商都应该修补,因为我们不能假设攻击者不能通过深入研究达到实质可利用,厂商也没必要花费大量的成本去研究实质可利用。所以微软无需我提交EXP,只要指出是否理论可利用就可以了。
其实攻击者只要付出研究成本,大多数理论上可被利用的漏洞都是可以达到很高利用程度的,最近给相关部门提交了一个非常严重,影响国内多个重点行业使用的产品漏洞,但对方认为这个漏洞太难利用了,因为有应用自身编码检测要求,否则无法写自己可控内容到文件;没办法,只能花了一晚上时间熬夜逆向分析,最后写出了编码的代码,可以非常容易实施攻击,证实这是个极度高危的安全漏洞。是的,虽然最终把利用代码写出来了,让任何说不能实际利用的人都无话可说,但是,这种成本花销值得吗?厂商会对发现自身安全漏洞支付成本,会对发现的安全漏洞写出可利用攻击来支付成本吗?房屋安全验收员发现了房屋存在空鼓就可以了,而不是非得贴上瓷砖等上2年让墙砖出现开裂、脱落的现象才能给业主证明。