您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 功能测试 > 正文

这样做,让你的渗透测试更有效

发表于:2018-09-06 作者:赵长林 来源:TechTarget中国

进行渗透测试首先需要确认渗透测试项目的起始状态。定义起始状态的最常见的方法是确定选择黑盒测试或白盒测试或灰盒测试。

这样做,让你的渗透测试更有效

测试类型的选择

黑盒测试存在不少问题。由于被测系统的原因,也由于测试者对环境的熟悉程度不同,要估算侦察阶段能持续多长时间是很困难的,而且侦察阶段的长短涉及到费用问题。但是,如果测试时间不足,渗透测试往往可能“流产”。还有一点不太现实的因素,就是一个有着强烈动机的攻击者在仔细研究攻击目标时,是不会顾及那些限制因素的,因为他往往是专业的渗透测试者。所以,我们建议实施灰盒测试而不是黑盒测试。

如果渗透测试者可以与被测试系统有密切接触,或者充分了解被测系统,就可以明确地定义渗透测试的目标,并且测试报告的结果往往也可以预料。被测者要向测试者提供一些关于目标系统的细节,如网络信息、系统类型、公司的流程、服务,等等。白盒测试一般关注的是具体的业务目标,如满足合规需要,而不是一般性的评估,而且由于受到目标系统的范围限制,白盒测试往往是一种更为简短的任务。白盒测试能够减少信息收集的工作量,如侦察服务,可以减少渗透测试服务的成本。因而,内部的安全团队往往进行白盒测试。

什么情况下实施灰盒测试?答案就是在客户或系统的所有者同意在侦察阶段需要发现一些未知信息时,但又允许渗透测试人员跳过这个部分。渗透测试人员从系统所有者那里得到一些目标系统的基本信息;然而,内部工作和有些特权信息仍对渗透测试者保密。

真正的攻击者在攻击目标之前都要收集一些关于目标的信息。多数攻击者并不会选择随机的目标。攻击者往往有着强烈的动机,并且在攻击之前往往以某种方式与攻击目标进行交互。灰盒测试对于许多执行渗透测试的安全专家来说是很有吸引力的,因为这种测试模仿攻击者使用的真实方法,并且其关注的重点是漏洞而不是侦察。

测试范围定义了渗透服务怎样开始,怎样执行。渗透测试应当进行信息收集,用以记录目标环境和定义任务的范围,这样做的目的是避免一些不必要的侦察服务或超出范围的攻击系统。

真正的攻击者往往不受时间、资金、道德、工具的限制,这意味限制渗透测试的范围并不能代表真实情况。例如,一个渗透测试者可以捕获用户登录到关键系统的凭据,他根本无需测试这些系统是否容易遭受基于网络的攻击,就可以访问这些系统。还有很重要的一点,就是哪些人应知道渗透测试。真正的攻击者可能会在任何时间发动攻击。

确定渗透测试的范围

在制定渗透测试的范围时,你应该注意如下基本要点:

· 目标系统的确定:即确定应当测试哪些系统。其中包括网络位置、系统类型、对这些系统的业务使用等等。

· 测试工作的时间范围:测试应当在何时开始?为满足指定的测试目标,确定的时间范围是什么?

· 如何评估目标系统:你允许使用哪些测试方法(如扫描和漏洞利用)?如果你允许使用特定的测试方法,会带来哪些风险?如果由于渗透测试而造成目标系统无法运行,其影响是什么?例如,通过冒充雇员而使用社会网络,对关键系统使用拒绝服务攻击,对有漏洞的服务执行脚本,等等。有些方法可能比其它方法给系统带来更高的风险。

· 工具和软件:在渗透测试期间,你要使用哪些软件和工具?很多安全专家认为,如果泄露了工具就等于泄露了秘密武器。只有在安全专家在使用一些可以广泛获得的商业产品时,并且只是根据这些产品的报告来重新打造自己的品牌时,你才可能需要保密。有经验的安全专家会透露自己使用的工具,在揭露漏洞时,还要记录使用了工具的哪些命令才发现了漏洞。这可以使漏洞利用重现,并且允许客户真正理解系统是如何被攻破的,也可以理解漏洞被利用的难度。

· 通知哪些人:谁应当知道渗透测试?向哪些人做简要的叙述?需要他们做准备吗?对渗透测试的反应是测试范围的一部分吗?如是这样,在进行测试之前,不通知安全运营团队就很有意义。如果你测试的是一款由另一方(例如,云服务供应商)托管的Web应用时,通知对方就非常重要,因为你的服务可能会影响到供应商。

· 初始访问水平:在开始渗透测试之前,要提供哪些类型的信息和访问?渗透测试人员可以通过互联网或内联网访问服务器吗?允许哪些类型的最初等级的账户访问?对每个目标系统来说,这是一个黑盒测试、白盒测试还是灰盒测试?

· 目标范围的定义:这里就是要确定渗透测试中的具体业务功能。例如,对销售人员使用的特定Web应用程序执行渗透测试,还不能影响到托管在同一服务器上的不同应用。

· 关键操作范围的确定:渗透测试者必须确定应避免改变和影响哪些系统,其目的是防止渗透测试服务造成的负作用。是否应禁止访问活动的认证服务器?非常重要的问题是,在对目标进行渗透测试之前,就明确定义对哪些资产进行测试。

· 标准的定义:渗透测试应该在何种程度上来攻击系统或过程?是否应当清除数据,或者攻击者仅需要获得特定水平的未授权访问?

· 交付什么:最终交付的报告是什么样子的?在完成渗透测试服务协议时,客户期望什么样的目标?要确保测试目标不是开放性的,这样做的目的是为了避免测试范围超出所期望的服务。是否对特定的人员进行数据分类或指定数据?最终的报告应该如何交付?非常重要的问题是,测试人员要交付一个样本报告,或者定期地对报告进行更新,这样做的目的是为了避免最后的报告令人吃惊。

· 修复期望:你期望在查出漏洞时,还记录一些可行的修复操作吗?如果在渗透测试期间,造成了系统的不可用,我们应该通知哪些人呢?如果发现了敏感数据会发生什么呢?多数渗透测试服务并没有对所发现问题提出修复措施。

漏洞评估

在很多情况下,根据审计标准或基准进行安全测试或审计给客户一种虚假的安全感。多数标准和基准都有一种长期更新的过程,却无法跟得上当今世界快速发展的威胁变化。因而,安全测试和审计应提供超出安全标准和基准的安全服务,将安全水平提高到一种针对现实威胁的保护水平。

漏洞评估是一种对网络设备、操作系统、应用软件进行扫描的过程,其目的是为了确认已知和未知漏洞的存在。在发现漏洞后,渗透测试者并不会针对漏洞实施攻击,验证其是否真实。漏洞评估交付的结果提供了与所有漏洞有关联的潜在风险。有许多解决方案(如Kali Linux)都可用于根据系统或服务器的类型、根据开放的通信端口或其它方式扫描漏洞。

只有漏洞扫描能够计算风险,才具备真正的价值。许多安全审计的问题就是漏洞扫描的结果使安全审计更笨重,却没有什么真正的价值。许多漏洞扫描器会提供虚假情报,或者会确认一些并不存存的漏洞。为什么?这是因为这些漏洞扫描器错误地确认操作系统,或者错误地查找特定的补丁来修复漏洞,却没有关注软件的版本。将风险与漏洞结合起来分析,可以提供一种明确的定义,并且可以确切地知道一个系统的脆弱程度。在很多情况下,这意味着需要对自动工具报告的漏洞进行检查。