1.4 测试方法
渗透测试方法很少考虑为什么要进行渗透测试,或哪些数据是需要保护的业务关键数据。缺少这至关重要的第一步,渗透测试就无法抓住重点。
很多渗透测试人员不愿遵循现成的渗透测试方法,他们担心模型会阻碍他们进行网络渗透的创造力。渗透测试不能反映恶意攻击者的实际活动。通常,客户希望看到你能否在一个特定的系统中获得管理上的访问权(你可以获得这些系统的Root权限吗?)。然而,攻击者可能会重点关注以一种不需要Root权限或引起拒绝服务的方式复制关键数据。
为了解决渗透测试方法中固有的局限性,必须将所有测试方法集成到一个框架中,从攻击者的角度审视网络,即杀链(kill chain)。
2009年,Lockheed Martin CERT的Mike Cloppert首先引入了上述理论,现在称为攻击者杀链(attacker kill chain)。杀链包含攻击者攻击网络时所采取的步骤。杀链不总是以一个线性流呈现,因为一些步骤可能会并行出现。多发攻击可以瞬时对同一个目标进行多种攻击,并且在同一时间攻击步骤可能发生重叠。
在本书中,我们已经修改了Cloppert的杀链,使之能更准确地反映攻击者如何在测试网络、应用和数据服务时应用这些步骤。
图1-1显示了攻击者的一个典型杀链。
图1-1 典型的杀链
攻击者的一个典型杀链可以描述如下。
·探索或侦察阶段。有一句格言:“侦察永远不浪费时间”。大多数军事组织承认,在进攻敌人之前,最好尽可能地去了解敌人的一切信息。同样,攻击者在攻击之前也会对目标展开广泛的侦察。事实上,据估计,针对渗透测试或攻击,至少有70%的“工作量”是进行侦察!一般来说,可采用两种类型的侦察:
被动侦察。这种方式并不直接与目标以敌对方式进行交互。例如,攻击者将会审查公共的可用网站,评估在线媒体(尤其是社交媒体网站),并试图确定目标的攻击表面。一项具体的任务是生成一份过去和现在的雇员姓名的列表。这些姓名将成为尝试暴力攻击或密码猜测的基础。同样它们也将用于社会工程学的攻击中。这种类型的侦察很难从普通用户的行为中区分出来。
主动侦察。这种方式可以被目标检测到,但是很难从常规的背景中区分出大多数在线组织的表现。主动侦察期间的活动包括物理访问目标前端、端口扫描和远程漏洞扫描。
·交付阶段。交付是用于完成攻击中的任务的武器的选择和开发。精确的武器选择取决于攻击者的意图以及交付路线(例如,借助网络、无线,或通过基于Web的服务)。交付阶段的影响将在本书后半部分(第5~14章)介绍。
·利用或攻击阶段。一个特定的漏洞被成功利用的同时,攻击者实现他们的目标。攻击可能在一个特定的情景下发生(例如,通过缓冲区溢出利用一个已知操作系统的安全隐患),或者可能在多个情景下发生(例如,一个攻击者物理访问公司处所,偷取电话簿,用公司员工的名字创建门户登录暴力破解列表。此外,向所有员工发送电子邮件以引诱他们单击一个嵌入的链接,下载制作的PDF文件,这些文件会危及员工的计算机安全)。当恶意攻击者针对特定的企业时,多情景攻击是常态。
·完成阶段——对目标的行动。这通常被称为“渗漏阶段”(exfiltration phase),但这是错误的,因为通常理解对目标的行动的攻击,仅仅以窃取敏感信息作为唯一目的(如登录信息、个人信息和财务信息)。通常情况下,攻击者有不同的攻击目标。例如,一家公司可能希望在它竞争对手的网站上发起拒绝服务攻击,从而驱使用户访问自己的网站。因此,这一阶段必须专注于攻击者的可能的许多行动。最常见的利用活动是攻击者试图将他们的访问权限提升到最高级(纵向提权),并且破解尽可能多的账号(横向提权)。
·完成阶段——持久性。如果攻击一个网络或系统是有价值的,那么这个价值很可能在持续攻击下增长。这就需要攻击者持续与被攻破的系统保持通信。从防护者的角度来看,这是攻击杀链中最容易检测到的一部分。
当攻击者试图攻击网络或特定的数据系统时,攻击杀链是攻击者行为的一种元模型。作为一种元模型,它可以吸收任何私人的或商业的渗透测试方法。但是,不同于这些方法,它能使攻击者在一个战略高度上关注如何接近网络。这种专注于攻击者的活动将引导本书的布局和内容。