1.2 渗透测试开始之前
在渗透测试开始之前,必须考虑一些需求:你需要界定测试的范围、时间限制和约束条件、测试的类型(白盒测试、黑盒测试)、如何处理第三方的设备以及IP地址空间。渗透测试执行标准(PTES)列出一些界定范围的条款作为“前期互动”阶段的部分内容。我强烈建议你在http://www.pentest-standard.org/index.php/Pre-engagement查看这一部分的内容。
尽管这本书不直接遵循PTES进行讲解,但是我将试着将本书与PTES相关的部分关联起来。
1.2.1 界定范围
在你准确地界定测试的范围之前,你需要收集尽可能多的信息。在渗透测试之前,深入了解以下几点非常重要。
谁有权利授予这次渗透测试任务?
测试的目的是什么?
测试预计的时间范围是多少?渗透中有什么限制,比如什么时候可以进行测试?
你的客户知道漏洞评估和渗透测试的区别吗?
你在此次渗透测试过程中会和IT安全团队合作么?你需要测试他们的能力么?
可以在渗透过程中使用社会工程学攻击么?可以使用拒绝服务攻击么?
你能够使用一些物理安全测试方法来测试那些安全服务器、敏感数据存储,或其他能够物理接触的设备吗?例如,撬锁、仿冒一名员工获得进入大楼的权限,或是走进那些普通人员通常不能单独访问的区域。
你是否被允许查看网络文件,或者在测试之前告知网络架构来加速测试过程?(不明白这一点可能会影响到你得到的测试结果的价值。但是在绝大多数业务中,这类企业信息不会像你想象的那么容易得到。)
允许你检查的IP范围是什么?没有经过正式允许的扫描和测试是法律所不允许的。
你必须尽力弄清属于客户的网络范围和设备,否则可能会陷于法律指控的危险之中。
公司的物理位置在哪里?如果允许使用社会工程学攻击,那么这个信息对测试人员非常重要。因为这能够保证你身处被测试的建筑物当中。如果时间允许,你应该让客户知道:尽管他们认为自己的位置信息是保密或者难以发现的,但是你却能够轻松地从公开渠道获取上述的信息。
如果测试时遇到一个问题,或测试的最初目标已经达到,你应该做什么?你是否会继续检查,以发现更多入口或结束测试?这个问题非常重要,它关系到客户为什么要进行一次渗透测试这一首要问题。
你需要注意不同国家对信息系统制定的法律不同,以及其他不同的情况吗?在针对渗透测试的法律上,不是所有国家的法律都是相同的。
一旦通过漏洞攻击了系统,进一步拓展是否需要获得其他许可?这在对分段的网络进行测试时非常重要。客户可能不会想到,你能够通过内网一台主机作为支点来进一步渗透内网。
怎样处理数据库?是否允许你添加记录、用户等信息?
你需要维护一个列表,列出根据客户要求需要测试的内容。大部分数据可以从客户那里直接收集,但是还有一些数据需要你们团队进行处理。
如果担心法律问题,建议你咨询法律顾问以确保你对渗透测试的合法性有一个完全了解。一旦开始测试,要获取尽可能多的信息。无论在任何情况下,你应该始终确保你获得的信息是准确的。你不希望直到测试时才发现即将进行测试的系统实际上并不属于你的客户!
获得准确的书面授权是在你对客户系统进行渗透测试前最重要的事情,不这样做将可能导致你面临法律诉讼的问题,更有可能为此锒铛入狱。请进行正确的判断!你还需要考虑到在进行渗透测试时,出现错误和遗漏是必然的。
1.2.2 设定你的范围——凡事总有结束时
如果你想成功地实施渗透测试,设置合适的范围是非常必要的。你的客户需要理解测试过程的所有细节,也应该告知他们一些额外的服务(没有列在合同清单中的)产生的费用。
为你的服务设定开始和结束的日期。清楚地约定测试中的规则以及可能测试的IP地址范围、建筑物、时间等,不在约定文档中的内容则不应被测试。在开始测试之前,应在会议中事先定义好测试内容,同时让客户准确地了解到你将交付的结果会是怎么样的。
规则文档
每个渗透测试都需要从规则文档开始,所有参与方都应有这份文档。这份文档至少应该包含如下条款。
由适当的人授予的合理权限。
你的测试开始和结束的日期。
将要执行测试的类型。
测试中的限制。
什么类型的测试是被允许的?分布式拒绝服务攻击(DDOS)?全面的渗透测试?还是社会工程学攻击?这些问题都需要详细讨论。
是否能够执行入侵性质的和隐蔽的检测?
客户希望你在渗透测试后进行清理,还是希望在渗透测试完成后对目前这个环境进行完全重建?
要检测对象的IP地址范围和物理位置。
测试结束后如何发送报告?(使用安全的传输手段!)
将在测试期间使用哪个工具?不要局限在一种特定工具上,准备一个常用的工具列表对你会非常有帮助。例如,我们将使用的最新版本BackTrack套件里的工具集。
告诉你的客户你将如何处理检查期间找到的非法数据。你将首先告诉执法部门,而不是客户。请确保在执行你的测试之前就完全理解这个法律问题。
如何处理敏感信息?你不能下载敏感的客户信息,但一定有其他方法能够证明客户的数据是不安全的,在客户关注数据管理时,这点尤其重要。
在进行渗透测试的时候,你需要和团队以及公司的关键人物就重要信息进行沟通。
在渗透测试时,你需要向客户保证,客户的系统信息不会保留在不安全的笔记本或者台式机上。你需要在渗透测试之后清理你的机器吗?你如何处理收集的信息?你会把这些信息保存在某个地方以备日后测试使用么?在你开始测试之前一定要明确这些问题,而不是放到后面才考虑。
规则文档应当包含所有决定测试范围的细节信息,任何问题都应该在起草规则文档之前得到解决,以确保在测试开始之前不会再有任何疑问。在测试过程中,测试团队的每个成员都应该保存一份签署的协议文档。
试想你被雇佣来测试客户无线网络的安全情况,你在私有停车场鬼鬼祟祟地带着巨大的WiFi定向天线和笔记本来回走动。如果有人注意到你的行为,他们很有可能会心存戒备,从而打电话告诉执法部门。你需要随身携带某些文档以证明你在这里的合法性。拥有雇主公司领导的联系信息也是一个非常方便的办法。