【51CTO.COM 独家翻译】为什么你要进行渗透测试?无论是借助内部团队、外部专家还是结合两者,你是单单满足监管要求或审计要求?还是其实希望增强企业安全?
我们请教了渗透测试方面的几位专家,指导你如何改进计划,以便付出去的时间、金钱和努力取得最大成效。如果你求助于外部专家,他们给出的建议会让你明白对顾问应该有怎样的期望和要求。下面这10个秘诀表明你需要明白渗透测试的目的和重点,制定高效的测试策略,有效地利用你的人员,以及最有效地利用渗透测试的结果,以便补救问题、改进流程以及不断改善企业的安全状况。
第1个秘诀:确定目的。
渗透测试(其实所有信息安全活动)的目的是保护企业。说白了就是,你充当攻击者的角色,查找安全漏洞,并且钻漏洞的空子,从而查明企业面临的风险,并且根据测试结果,给出相应建议,以增强安全。攻击者在试图窃取你的数据——他们采用的技术只是达到目的的手段。渗透测试也是如此:目的倒不是说你利用很酷的技术活来钻漏洞的空子,而是发现企业在哪个环节面临最大的风险。
InGuardians公司的创始人兼高级安全顾问Ed Skoudis说:“要是你无法从我公司的角度来进行表述,那你无法给我带来价值。不要告诉我你钻了某个漏洞的空子,获得了某个硬件设备的外壳程序,却不告诉我这对我公司来说意味着什么。”
如果明白了这个道理,那么从更加战术性的角度来看,渗透测试是个好方法,可以确定你的安全政策、控制措施和技术的实际效果有多好。贵公司把许多钱投入到安全产品上,给系统打补丁,以及确保端点安全等方面。作为渗透测试人员,你是在模仿攻击者,试图绕过或突破安全控制。
Core Security公司的创始人兼安全咨询服务主管Alberto Solino说:“你是想对公司好好评估一番,看看钱有没有花在刀口上。”
目的不应该是仅仅为渗透测试弄一份复选框,罗列相关内容,以满足合规要求,比如支付卡行业的数据安全标准(PCI DSS)。渗透测试的目的应该不仅仅是查找漏洞(漏洞扫描应该是渗透测试计划的一部分,但代替不了渗透测试)。除非渗透测试是发现、利用和纠正安全漏洞的一项可持续计划的一部分,否则就算你投入了财力和精力,换来的充其量还是表示通过的那个勾号;最糟糕的情况是,通不过目光敏锐的评估人员的审计。
第2个秘诀:关注数据。
无论你在进行内部测试,聘请外部顾问,还是结合两者,企业用于渗透测试的预算和资源都很有限。你做不到针对包括成百上千个设备的IT基础设施进行渗透测试,不过渗透测试人员常常会被要求试着攻击一大段IP地址上的众多设备。结果进行的很可能是最草率的测试方法,几乎没有什么作用。你别指望能在合理的时间段里,以合理的成本,对数量非常多的设备进行漏洞扫描、补救漏洞。
Verizon安全解决方案公司的全球产品经理Omar Khawaja说:“在许多情况下,客户有成千上万个IP地址,希望我们对这么多地址进行渗透测试。我们可以运行漏洞测试,看看什么部分最脆弱,可是这对贵企业来说可能不是最重要的。”
退一步问一问:“我要保护的是什么?”哪些关键数据面临风险:是信用卡数据、病人信息、客户的个人身份信息、商业计划还是知识产权?这些信息在什么地方?你甚至知道含有敏感数据的每个数据库、每个文件存储库和每个日志存储区吗?你也许不知道,但攻击者很可能找得到。
所以,第一个关键的步骤是缩小渗透测试的范围,重点关注数据发现:确定哪些敏感数据面临风险,它们在哪里。接下来的任务是,扮演攻击者的角色,搞清楚如何找出漏洞。
Core Security公司的Solino说:“目的是模仿真正的攻击者在一定时间段内会对客户搞什么破坏,而不是找出所有可能存在的问题。”#p#
第3个秘诀:与业务负责人交流。
要与业务部门的人合作。他们知道什么面临危险,知道哪些数据很关键、哪些应用程序在创建和联系这些数据。他们至少知道数据放在哪些比较明显的地方。他们还会告诉你哪些应用程序必须保持正常运行。
只有这样,你才会基本上了解与某些应用程序有关的威胁级别,以及风险等式中很重要的数据和资产具有的价值。
这个过程的一个重要方面是,与懂得应用程序业务逻辑的人合作。知道应用程序本该做什么、本该如何运行,可以帮你找到应用程序的漏洞,并钻空子。
InGuardians公司的Skoudis说:“先确定范围,包括关键的信息资产和业务交易处理。然后与渗透测试团队和管理人员开头脑风暴会。”
Skoudis还建议要求管理人员提出最坏情况的场景,“要是有人闯入了企业,可能发生的最糟糕事情是什么?”这种演练有助于查明“真正的宝贵数据”在哪里,从而确定项目范围。
第4个秘诀:根据风险高低,进行测试。
进行哪种类型的测试,应取决于数据/应用程序的价值。对于低风险资产,定期的漏洞扫描无异于经济高效地利用资源。中等风险的资产可能需要结合漏洞扫描和手动的漏洞检查。至于高风险资产,应进行渗透测试,寻找可利用的漏洞。
比如说,一所大型大学的安全主管说,他们已开始进行渗透测试,以满足PCI DSS的要求。一旦这项计划落实到位,就成了用于测试潜在攻击者潜入大学系统的能力的典范。该大学将数据分为公共数据、内部数据、敏感数据和高度敏感数据这几类。
他说:“对于高度敏感的信息,我们进行了渗透测试,遵守几乎与PCI一样的准则。我们在此基础上深入了一步,根据一些具体的标准和一些主观判断,看看要对系统进行哪种级别的渗透测试——如果需要渗透测试的话。”
比如说,对于风险比较低的信息,该大学将测试随机抽选的系统及/或应用程序,具体要看时间和预算的紧张程度。由于校园网络上有几千个设备,即便对它们都进行低级扫描也是行不通的。
这名安全主管说:“你可以测试有明确所有者和系统管理员的业务系统。但是如果你有3000台Wii连接到网络上,你不应该扫描那些设备、弄清楚它们分别属于谁。”#p#
第5个秘诀:了解攻击者的概况。
你的渗透测试人员在想法和行为上都要与真正的攻击者无异。但攻击者不属于好人这一类。要了解潜在攻击者的概况。
外部攻击者对贵公司可能所知甚少,可能就知道一些IP地址。但他们可能是前任员工,或者效力于贵公司的合作伙伴或服务提供商,所以对你网络的内部情况相当了解。内部攻击者可能是拥有访问和授权特权的系统管理员或数据库管理员,知道关键数据在什么地方。
了解攻击者概况时要考虑的一个因素是动机。攻击者觊觎的是可以变成现金的信用卡号码和个人身份信息?还是可以卖给竞争对手或获得商业优势的知识产权?攻击者想破坏你的Web应用程序,可能出于政治目的或竞争目的。他可能是怒气冲冲的前任员工,想“对贵公司进行报复”。
应该与业务负责人合作,帮助了解这些概况,打探哪些类型的潜在攻击者是他们感到最担心的。
概况可以缩小渗透测试的关注范围;测试内容会不一样,具体取决于每一种攻击者概况。
Core Security公司的Solino说:“我们基本了解了某个攻击者会对目标搞什么破坏,对此我们分得很清楚。针对每一种概况,我们获得渗透测试的结果,然后再了解另一种概况。”
第6个秘诀:掌握的信息越多越好。
无论是实际攻击,还是渗透测试,收集信息都是整个过程的一个部分,旨在查找诸设备、操作系统、应用程序和数据库等。你对某个目标及与它连接的系统了解越多,潜入进去的可能性就越大。
每一步都可能会得到有价值的信息,以便你攻击另一个资产,直到最终进入你瞄准的数据库和文件共享区等目标。获得的信息让你可以缩小搜索可利用漏洞的范围。通常可以使用自动化的扫描和绘图工具,来进行这种侦察;但你也可以使用社会工程学方法,比如在电话一头冒充技术支持人员或承包商,收集有价值的信息。
Verizon公司的Khawaja说:“我们越来越多地开始采用社会工程学方法。这实际上是一种侦察手段(在客户许可的情况下进行),让我们得以在环境中找到可以帮助我们潜入进去的每个薄弱环节。”
多阶段的渗透测试通常是重复进行侦察、评估漏洞和利用漏洞,每一步都为你提供更深入地渗透到网络的信息。#p#
第7个秘诀:考虑所有攻击途径。
攻击者能利用而且会利用IT基础设施不同方面的漏洞,或单枪匹马,或合伙行动(后者更常见),以便获得他们寻找的数据。
全面深入的渗透测试会根据攻击者的最终目的,而不是根据每个攻击途径的脆弱性,逐一测试所有这些潜在的攻击途径。
Solino说:“要是几年前,我们会进行网络渗透测试、应用渗透测试和无线渗透测试;后来我们退一步说‘这么做毫无意义’。坏人才不说‘我只能通过网络闯入到系统’。”
成功的渗透测试与真实的攻击一样,可能会用到许多途径,涉及好多步骤,直到发现有空子可钻的目标。一台打印服务器似乎不是特别值得关注,但它可能使用与含有信用卡资料的数据库同样的管理员登录信息。
InGuardians公司的Skoudis说:“渗透测试人员找到漏洞后钻空子,然后从这台机器跳转到另一台机器,再跳转到下一台机器。”
对Web应用程序发动攻击后可能钻不了空子,但得到的信息有助于利用网络上其他资产的漏洞。或者,攻击者可能会获得没有很高权限,但可以访问内部网络的员工方面的信息,然后以此作为跳板。
所以,某个关键资源也许无法直接下手,但可能会因其他系统来受到危及。
Khawaja表示,比如说,Verizon公司的渗透测试人员无法直接闯入可以访问敏感数据库的Web服务器。如果测试人员的目光局限于测试这台服务器上的Web应用程序,那么得出的结论会是:数据是安全的。但如果站在以数据为中心的角度,他们会发现与这台Web服务器连接的第二台Web服务器有一个重大漏洞,攻击者可以利用该漏洞来访问第一台Web服务器,进而访问那个敏感数据库。
他说:“只要与我们在攻击的网段没有隔离开来的系统,我们都关注。有没有任何网络控制措施来防止攻击者从一个易受攻击的低价值系统跳转到一个比较关键的系统?”
话虽如此,还是有必要针对特定的攻击途径进行测试。比如说,一家公司可能特别担心无线安全,因为它知道之前自己在这方面有些松懈,或者可能最近安装或升级了无线局域网基础设施。但是就算你确信某一个途径很安全——比如说,如果无线网络与信用卡数据库隔离开来,也不要太肯定。因为,攻击途径可能错综复杂。
第8个秘诀:确定交战规则。
渗透测试模拟攻击行为,但它不是一种攻击。无论你在内部进行测试,还是交由外部顾问测试,都需要制定规则,确定什么可以做,什么不可以做,什么时候做,谁需要知道内情。
后者取决于你在进行白盒测试(white box testing),还是黑盒测试(black box testing。若是前一种情况,可能要承认这一点:公司(或者某个部门或业务单位)的安全计划需要大量工作,而且渗透测试是各有关方都知道的公开过程。
另一方面,黑盒测试显得比较秘密,测试起来更像是真正的攻击——只有参与测试的人知道内情,外人完全不知道。你要确定公司的员工多称职、流程及其支持系统的效果有多好。
Verizon公司的Khawaja说:“无论是运营中心、调查响应团队还是保安人员,每个人都要装作渗透测试的那天是办公室的平常一天。”
许多公司通常会先进行白盒测试,了解要解决的安全问题。随后,黑盒测试将有助于确定最初发现的漏洞是不是得到了有效补救。比如说,有时首席安全官不但需要知道关键系统有多脆弱,还需要了解下属在检测和响应攻击方面的能力有多强。
不管怎样,要把情况告知某些关键的人,避免出现可能影响业务或破坏测试的问题。InGuardians公司的Skoudis表示,目标环境中负责变更控制流程的人当中至少一人要了解内情。比如说,按照交战规则(rules of engagement),公司可以允许渗透测试人员将软件安装到目标设备上,进行更深入的跳转测试,但至少要告知那个人,确保测试人员不会因为从路由器的访问控制列表(ACL)删掉IP地址,或运用防火墙规则而遭到阻止。
在白盒测试和黑盒测试这两种场景下,Skoudis建议每天与测试的相关人员开简会,让他们知道测试人员在做什么。比如说,交战规则可能允许渗透测试人员利用漏洞,但开简会能起到提醒作用,好让大家心里有数。
他说:“开简会起到了沟通作用。它表明渗透测试人员不是外面‘来抓我’的一帮坏人。目的就是做到透明、公开。”
交战规则还可能限定哪些系统的漏洞可以利用、哪些不可以,比如客户机;或者限定哪些攻击手法可以用、哪些不可以用,比如社会工程学。#p#
第9个秘诀:报告测试结果,并衡量进度。
渗透测试的目的是为了改善安全状况,所以如果你在进行内部测试,测试报告应该会提供实用而具体的信息,以便你付诸实际行动。
InGuardians公司的Skoudis说:“目的是有助于增强安全性,以便管理人员做决定来改进业务,并且帮助运营团队增强安全性。”
你应该出示一份测试摘要,不过报告重点应包括详细描述这些方面的内容:发现的漏洞,如何利用这些漏洞,以及万一真的发生攻击,哪些资产面临风险。详细介绍用来渗透的每个步骤、被利用的每个漏洞,最重要的可能是所有攻击途径。
Core Security公司的Solino说:“找出攻击途径的意义在于,可以通过破坏途径来解决具体问题。”
建议措施一定要非常具体。如果需要改变架构,还要附上图表。解释如何证实解决方法已落实到位(可以用工具来衡量)。在涉及多个系统的情况下,还要解释如何批量部署解决方法,尽可能使用组策略对象(GPO)。
确保每个建议的补救措施都附有注意事项:先全面深入地测试解决方法,之后才可落实到生产环境中。因为企业的IT基础设施可能非常复杂。
Skoudis说:“这是个大问题。因为你不知道所有细微之处;你不应该破坏正常生产。”
渗透测试不应该是一次性的演练,应该对比连续几次测试的结果。如果你在进行内部测试,就要把变化部分放在一起,评估你的人员在如何解决问题。要是最近一两次测试发现的问题依然没有得到解决,这表明贵企业可能有问题。也许是软件补丁计划没有起到应有的效果,也许是开发人员没有经过编写安全代码方面的相应培训。
上面提到的那位大学安全主管说:“我们寻找的是趋势。就像你对待审计报告那样。要是测试发现的是同样一些漏洞,这表明可能存在比较严重的问题。”
第10个秘诀:决定谁是渗透测试人员。
决定要不要由内部的工作人员进行渗透测试,这得看贵公司的规模、竭力保护的信息具有的价值,以及想把内部资源投入到哪些方面。有些公司在安全部门下面可能还设有专门的渗透测试团队或小组。内部团队更有条件进行定期测试。要是贵公司规模庞大,组织结构分散,应制定相应机制,倡导可以共享信息的环境。
Verizon公司的Khawaja说:“如果你的内部团队能够共享信息,就要确保他们有一个强大的知识库,并依托成熟的知识管理系统。你要确保你在比利时的部门遭到的攻击不会出现在巴西的部门。”
即使你进行一些内部测试,也有充足的理由需要聘请顾问进行至少一部分测试。有些法规要求必须由外部公司进行渗透测试;还要考虑到这点:内部人员可能非常了解目标系统,而且测试结果关系到他们的切身利益。所以,除合规要求之外,定期从外面请顾问来测试是个好想法。
出于同样的原因,如果你真从外面聘请测试顾问,要记得不时更换厂商,就像每过几年要更换审计人员那样。
那位大学安全主管说:“如果从外面请人来,测试结果就更让人放心了。因为不存在什么利益冲突。”
至于你的内部团队,要找既知识面广、又有好奇心的员工。
Core Security公司的Solino表示,有望成为渗透测试人员的优秀培训对象要深入了解各种网络和应用协议,这是基础。他通常注重好奇心和黑客的心理素质。
“既要有IT知识,还要具备不相信系统是安全的态度,主张‘大胆试一试!’’。”
Skoudis说:“渗透测试是门艺术。虽说有一些工具和方法,但你在寻找目标系统和应用程序存在的问题时一定要有创意、有想法。”
来源:http://www.csoonline.com/article/636040/penetration-tests-10-tips-for-a-successful-program
【51CTO.com独家译稿,非经授权谢绝转载!合作媒体转载请注明原文出处及出处!】
【编辑推荐】