第六个秘诀:掌握的信息越多越好
无论是实际攻击,还是渗透测试,收集信息都是整个过程的一个部分,旨在查找诸设备、操作系统、应用程序和数据库等。你对某个目标及与它连接的系统了解越多,潜入进去的可能性就越大。
每一步都可能会得到有价值的信息,以便你攻击另一个资产,直到最终进入你瞄准的数据库和文件共享区等目标。获得的信息让你可以缩小搜索可利用漏洞的范围。通常可以使用自动化的扫描和绘图工具,来进行这种侦察;但你也可以使用社会工程学方法,比如在电话一头冒充技术支持人员或承包商,收集有价值的信息。
Verizon公司的Khawaja说:“我们越来越多地开始采用社会工程学方法。这实际上是一种侦察手段(在客户许可的情况下进行),让我们得以在环境中找到可以帮助我们潜入进去的每个薄弱环节。”
多阶段的渗透测试通常是重复进行侦察、评估漏洞和利用漏洞,每一步都为你提供更深入地渗透到网络的信息。
第七个秘诀:考虑所有攻击途径
攻击者能利用而且会利用IT基础设施不同方面的漏洞,或单枪匹马,或合伙行动(后者更常见),以便获得他们寻找的数据。
全面深入的渗透测试会根据攻击者的最终目的,而不是根据每个攻击途径的脆弱性,逐一测试所有这些潜在的攻击途径。
Solino说:“要是几年前,我们会进行网络渗透测试、应用渗透测试和无线渗透测试;后来我们退一步说‘这么做毫无意义’。坏人才不说‘我只能通过网络闯入到系统’。”
成功的渗透测试与真实的攻击一样,可能会用到许多途径,涉及好多步骤,直到发现有空子可钻的目标。一台打印服务器似乎不是特别值得关注,但它可能使用与含有信用卡资料的数据库同样的管理员登录信息。
InGuardians公司的Skoudis说:“渗透测试人员找到漏洞后钻空子,然后从这台机器跳转到另一台机器,再跳转到下一台机器。”
对Web应用程序发动攻击后可能钻不了空子,但得到的信息有助于利用网络上其他资产的漏洞。或者,攻击者可能会获得没有很高权限,但可以访问内部网络的员工方面的信息,然后以此作为跳板。
所以,某个关键资源也许无法直接下手,但可能会因其他系统来受到危及。
Khawaja表示,比如说,Verizon公司的渗透测试人员无法直接闯入可以访问敏感数据库的Web服务器。如果测试人员的目光局限于测试这台服务器上的Web应用程序,那么得出的结论会是:数据是安全的。但如果站在以数据为中心的角度,他们会发现与这台Web服务器连接的第二台Web服务器有一个重大漏洞,攻击者可以利用该漏洞来访问第一台Web服务器,进而访问那个敏感数据库。
他说:“只要与我们在攻击的网段没有隔离开来的系统,我们都关注。有没有任何网络控制措施来防止攻击者从一个易受攻击的低价值系统跳转到一个比较关键的系统?”
话虽如此,还是有必要针对特定的攻击途径进行测试。比如说,一家公司可能特别担心无线安全,因为它知道之前自己在这方面有些松懈,或者可能最近安装或升级了无线局域网基础设施。但是就算你确信某一个途径很安全——比如说,如果无线网络与信用卡数据库隔离开来,也不要太肯定。因为,攻击途径可能错综复杂。
第八个秘诀:确定交战规则
渗透测试模拟攻击行为,但它不是一种攻击。无论你在内部进行测试,还是交由外部顾问测试,都需要制定规则,确定什么可以做,什么不可以做,什么时候做,谁需要知道内情。
后者取决于你在进行白盒测试(white box testing),还是黑盒测试(black box testing。若是前一种情况,可能要承认这一点:公司(或者某个部门或业务单位)的安全计划需要大量工作,而且渗透测试是各有关方都知道的公开过程。
另一方面,黑盒测试显得比较秘密,测试起来更像是真正的攻击——只有参与测试的人知道内情,外人完全不知道。你要确定公司的员工多称职、流程及其支持系统的效果有多好。
Verizon公司的Khawaja说:“无论是运营中心、调查响应团队还是保安人员,每个人都要装作渗透测试的那天是办公室的平常一天。”
许多公司通常会先进行白盒测试,了解要解决的安全问题。随后,黑盒测试将有助于确定最初发现的漏洞是不是得到了有效补救。比如说,有时首席安全官不但需要知道关键系统有多脆弱,还需要了解下属在检测和响应攻击方面的能力有多强。
不管怎样,要把情况告知某些关键的人,避免出现可能影响业务或破坏测试的问题。InGuardians公司的Skoudis表示,目标环境中负责变更控制流程的人当中至少一人要了解内情。比如说,按照交战规则(rules of engagement),公司可以允许渗透测试人员将软件安装到目标设备上,进行更深入的跳转测试,但至少要告知那个人,确保测试人员不会因为从路由器的访问控制列表(ACL)删掉IP地址,或运用防火墙规则而遭到阻止。
在白盒测试和黑盒测试这两种场景下,Skoudis建议每天与测试的相关人员开简会,让他们知道测试人员在做什么。比如说,交战规则可能允许渗透测试人员利用漏洞,但开简会能起到提醒作用,好让大家心里有数。
他说:“开简会起到了沟通作用。它表明渗透测试人员不是外面‘来抓我’的一帮坏人。目的就是做到透明、公开。”
交战规则还可能限定哪些系统的漏洞可以利用、哪些不可以,比如客户机;或者限定哪些攻击手法可以用、哪些不可以用,比如社会工程学。
第九个秘诀:报告测试结果,并衡量进度
渗透测试的目的是为了改善安全状况,所以如果你在进行内部测试,测试报告应该会提供实用而具体的信息,以便你付诸实际行动。
InGuardians公司的Skoudis说:“目的是有助于增强安全性,以便管理人员做决定来改进业务,并且帮助运营团队增强安全性。”
你应该出示一份测试摘要,不过报告重点应包括详细描述这些方面的内容:发现的漏洞,如何利用这些漏洞,以及万一真的发生攻击,哪些资产面临风险。详细介绍用来渗透的每个步骤、被利用的每个漏洞,最重要的可能是所有攻击途径。
Core Security公司的Solino说:“找出攻击途径的意义在于,可以通过破坏途径来解决具体问题。”
建议措施一定要非常具体。如果需要改变架构,还要附上图表。解释如何证实解决方法已落实到位(可以用工具来衡量)。在涉及多个系统的情况下,还要解释如何批量部署解决方法,尽可能使用组策略对象(GPO)。
确保每个建议的补救措施都附有注意事项:先全面深入地测试解决方法,之后才可落实到生产环境中。因为企业的IT基础设施可能非常复杂。
Skoudis说:“这是个大问题。因为你不知道所有细微之处;你不应该破坏正常生产。”
渗透测试不应该是一次性的演练,应该对比连续几次测试的结果。如果你在进行内部测试,就要把变化部分放在一起,评估你的人员在如何解决问题。要是最近一两次测试发现的问题依然没有得到解决,这表明贵企业可能有问题。也许是软件补丁计划没有起到应有的效果,也许是开发人员没有经过编写安全代码方面的相应培训。
上面提到的那位大学安全主管说:“我们寻找的是趋势。就像你对待审计报告那样。要是测试发现的是同样一些漏洞,这表明可能存在比较严重的问题。”
第十个秘诀:决定谁是渗透测试人员
决定要不要由内部的工作人员进行渗透测试,这得看贵公司的规模、竭力保护的信息具有的价值,以及想把内部资源投入到哪些方面。有些公司在安全部门下面可能还设有专门的渗透测试团队或小组。内部团队更有条件进行定期测试。要是贵公司规模庞大,组织结构分散,应制定相应机制,倡导可以共享信息的环境。
Verizon公司的Khawaja说:“如果你的内部团队能够共享信息,就要确保他们有一个强大的知识库,并依托成熟的知识管理系统。你要确保你在比利时的部门遭到的攻击不会出现在巴西的部门。”
即使你进行一些内部测试,也有充足的理由需要聘请顾问进行至少一部分测试。有些法规要求必须由外部公司进行渗透测试;还要考虑到这点:内部人员可能非常了解目标系统,而且测试结果关系到他们的切身利益。所以,除合规要求之外,定期从外面请顾问来测试是个好想法。
出于同样的原因,如果你真从外面聘请测试顾问,要记得不时更换厂商,就像每过几年要更换审计人员那样。
那位大学安全主管说:“如果从外面请人来,测试结果就更让人放心了。因为不存在什么利益冲突。”
至于你的内部团队,要找既知识面广、又有好奇心的员工。
Core Security公司的Solino表示,有望成为渗透测试人员的优秀培训对象要深入了解各种网络和应用协议,这是基础。他通常注重好奇心和黑客的心理素质。
“既要有IT知识,还要具备不相信系统是安全的态度,主张‘大胆试一试!’。”
Skoudis说:“渗透测试是门艺术。虽说有一些工具和方法,但你在寻找目标系统和应用程序存在的问题时一定要有创意、有想法。”