渗透测试的各个阶段

渗透测试的第一个阶段是明确需求(pre-engagement)阶段。在这个阶段,测试人员通过商谈明确客户的测试目的、测试的深入程度和既定条件(即项目范围)等信息。待与客户确定了项目范围、书面文档的格式等必要信息之后,测试人员即可进入渗透测试的实质阶段。

       下面一个阶段是信息收集(information-gathering)阶段。这个阶段的任务是搜索客户的公开信息,甄别目标系统的连入手段。在后面的威胁建模(threat-modeling)阶段,测试专家要综合信息收集阶段的工作成果,权衡各项威胁(可被攻击人员用于突破防线的安全问题)的价值和影响。威胁建模阶段的评估工作,旨在拟定渗透测试的测试方案和测试方法。

       在测试人员正式攻击系统之前,还要完成漏洞分析(vulnerability analysis)工作。测试人员此时应当尽力挖掘目标系统中的安全漏洞,以便在漏洞验证(exploitation)阶段找到可被利用的安全问题。每验证出一个可被利用的安全漏洞都可能带领渗透测试进入深度攻击(post-exploitation)阶段。简单来说,深度攻击阶段的任务就是利用漏洞验证阶段发现的exploit进行攻击,以获得更多的内部信息、敏感数据、访问其他系统的权限。

       渗透测试的最后一个阶段是书面汇报(reporting)阶段。测试人员将在这一阶段以不同的视角对所有安全问题进行分析和总结,分别交付给客户的高层管理人员和技术执行人员。

1. 明确需求阶段

1.1 项目范围

沟通问题

什么因素促使客户寻找外部测试人员?

客户最为关注的是什么问题?

测试过程中是否会涉及到需要特别小心的易碎易损设备?

明确范围

1、哪些IP地址、主机在测试范围之内,哪些不在范围之内?

2、客户允许测试人员进行何种类型的测试行为?

3、测试人员是否可以使用可能导致服务瘫痪的漏洞利用代码(即exploit),是否应当将评估局限于漏洞检测?

4、客户是否明白端口扫描也可能导致服务器或路由宕机?

5、测试人员是否可以进行社会工程学攻击?

1.2 测试窗口

客户有权指定测试人员在限定工作日、限定时间之内进行测试。

1.3 联系信息

发现严重问题时,测试人员应当联系哪些人?客户是否指定了24小时都可以联系的负责人?他们是否希望测试人员用加密邮件联系他们?

1.4 免罪金牌

务必确保测试人员有权对测试目标进行渗透测试。如果测试目标不归客户所有(第三方托管的情况),那么务必要验证第三方是否正式允许客户进行渗透测试。总而言之,一定要在合同中落实免责声明,确保在意外情况下限定乙方的法律责任,而且要获得渗透测试的书面授权。

1.5 支付条款

落实付款的方式、时间和费用金额。

最后要在合同上写入保密条款。书面承诺对渗透测试的内容及测试中发现的问题进行保密,可获得客户的赞许。

2. 信息收集阶段

在此阶段,测试人员要分析各种公开信息。公开信息收集过程有称作开源情报分析(Open Source Inteligence,OSINT)。测试人员还要使用端口扫描工具之类的各种工具,初步了解内外或外网运行的是什么系统、这些系统上安装了什么软件。5

3. 威胁建模阶段

在这个阶段,测试人员要利用信息收集阶段获取的信息进行威胁建模。此时,渗透人员要以攻击人员的角度出发,根据所获信息拟定各种破坏方案。举例来讲,如果客户的主营业务是软件开发,那么攻击人员会渗透到内网的开发系统,获取客户开发并测试过的软件源代码,向其竞争对手贩卖公司业务机密,达到瓦解客户的目的。因此,测试人员要根据前一阶段的工作成果,拟定客户系统的渗透策略。

4. 漏洞分析阶段

接下来,测试人员开始探测客户系统上的漏洞,以确定渗透测试策略的有效性。不够精妙的exploit可能导致服务崩溃,引发入侵检测系统的警报,甚至让利用漏洞的机会白白溜走。测试人员会在这个阶段使用漏洞扫描程序,借助程序的漏洞数据库和主动检测技术,推测目标上存在哪些漏洞。然而,无论漏洞扫描程序的功能有多么强大,它永远不能完全替代人类的独立思考。因此测试人员还要进行人工分析,亲自确认扫描程序找到的全部漏洞。6

5. 漏洞验证阶段

漏洞验证是一个乐趣横生的阶段。测试人员往往会使用Metasploit一类的安全工具,利用(exploit)他们发现的安全漏洞,力图获取客户系统的访问权限。正如后文介绍的那样,容易得手的安全漏洞(例如出厂密码)比比皆是。8

6. 深度攻击阶段

不少人认为,只有进入了漏洞验证阶段之后的深度攻击阶段,渗透测试才算真正意义上的开始。虽然测试人员已经在这个阶段攻破了安全防线,但是对于客户来说,防线失守又代表什么问题呢?如果测试人员通过某个漏洞攻陷了一台没有加入企业域(domain)且安全补丁并不完整的早起系统,或者渗透了某台与高价值目标无关的主机或网络,获取不到与目标有关的任何信息,那么这种安全漏洞所对应的安全风险,远比域控制器或者开发系统的漏洞风险要低。

在深度攻击阶段,测试人员会以突破的系统为着手点收集各种信息,搜索有价值的文件,甚至在必要的时候提升自己的登录权限。比如,测试人员可能会转储密码的哈希值,继而破解原始密码,或者尝试用这些哈希值访问其他系统。另外,测试人员还可能以这些突破点为跳板,转而攻击哪些在突破防线之前无法访问的各类系统。13

7. 书面汇报阶段

渗透测试最终阶段的工作室书面汇报阶段。在这个阶段,测试人员要把他们发现的各种问题整理为易于客户理解的书面文档。这种文档应当明确客户的哪些安全措施切实有效,指出客户需要改进的不足之处,同时还要描述测试人员突破防线的手段、获取到的信息,并且提供修复问题的建议等内容。

撰写渗透测试报告是门学问。要掌握各种技巧,只能多加练习。测试人员要使用清晰的专业语言,让所有人准确理解测试过程中发现的具体问题。此处的“所有人”不进包括客户方从负责修复漏洞的IT人员到负责签字确认改进进度的高管在内的全部内部人员,还包括与客户有关的外部审计人员。举例来讲,如果把“测试人员通过MS08-067(的exploit)拿到了一个shell”这样的文字递交给客户的非技术人员,那么他/她肯定会想“这个shell是贝壳(seashell)之类的什么壳吗?”实际上,测试人员应当在此处描述可获取(甚至改动)数据的具体用途。比方说,如果将此处的“拿到了一个shell”改为“(测试人员)能够读取某人的邮件”,那么所有人都能理解这是什么问题了。

渗透测试的书面报告应当分为执行摘要(executive summary)和技术报告(technical report)两个段落。这两个段落的内容大致如下。

执行摘要

执行摘要是对测试目标和调查结果的高度总结。它主要面向那些负责信息安全计划的主管人员。执行摘要通常由一下几个方面构成。

1、背景介绍(background):测试人员不仅要在“背景介绍”中记录此次测试的实际目的,而且还要向管理人员介绍哪些他们不常接触的技术术语。诸如:“漏洞”和“对策”之类的专业术语,都应当再次进行书面说明。

2、整体评估(overall posture):各类问题的高度总结。此处应当列举测试过程中发现的问题清单(例如,可被利用的微软漏洞MS08-076),以及导致安全隐患的相应问题(例如,缺少补丁管理措施等)。

3、风险预测(risk profile):企业安全状况的级别评定。测试人员通常参照同行业的其他企业情况,使用“高/中/低”等评定语言,对客户的安全级别等级划分。此外,测试人员还应当补充说明级别评定的相应标准。

4、调查总结(general findings):通过统计分析和定量分析的方法,对已有安全防范措施的实际效果进行的总结性描述。

5、改进建议(recommendation summary):解决现有问题的初步建议。

6、战略规划(strategic road map):向客户建议的用于增强安全性的长短期规划。举例,为了解决现有问题,测试人员可能建议客户安装某些漏洞修补程序。但是从长期的角度来讲,除非用户实现某种补丁管理(patch management),否则不就之后他们还会面临同样的安全困境。

技术报告

技术报告择应记录测试过程中的各种技术细节。它通常由以下几个方面构成。

项目简介:项目范围、联系人等信息的详细记录

信息收集:在信息收集阶段发现的各种问题。客户会特别关注Internet上的系统入口信息。

漏洞评估:在漏洞分析阶段发现的所有技术细节。

漏洞验证及攻击方法验证:漏洞验证阶段的技术细节。

深度攻击:深度攻击阶段发现的问题细节。

风险及暴露程度分析:对已知风险的定量分析。在相关篇幅里,测试人员应以假想攻击人员成功利用各种安全漏洞为前提,评估已知问题可能产生的各类损失。

结论:整个渗透测试项目的最终总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值