大多数方法论很少考虑为什么要进行渗透测试,或者哪些数据对业务至关重要且需要保护。但如果没有这一至关重要的第一步,渗透测试将失去重点。
许多渗透测试人员不太愿意遵循既定的方法论,认为这会阻碍他们利用网络或应用程序安全漏洞的创造力。渗透测试无法反映恶意攻击者的实际活动。通常,客户想要看看你是否可以获得对特定系统的管理访问权限(你是否可以帮我把这个盒子给破解了)。实际上,攻击者可能更专注在不需要root访问权限或导致拒绝服务的情况下窃取关键数据。
为了打破渗透测试方法中固有的局限性,必须将它们集成到一个从攻击者的角度看待网络的框架中,业界称之为网络攻杀链(cyber kill chain)。
2009年,洛克希德·马丁公司CERT部门的Mike Cloppert引入了现在被称为网络攻杀链的概念,它概括了敌人在攻击网络时所采取的步骤,这个过程并不总是以线性的流程进行,因为某些步骤可能并行发生。随着时间的推移,同一目标可能会被发起多次攻击,并且可能会出现某些阶段的重叠。
在本书中,我们修改了Cloppert的网络攻杀链,以更准确地反映攻击者在利用网络、应用程序和数据服务时如何开展这些步骤。图1.2显示了攻击者遵循的典型网络攻杀链。
攻击者的典型网络攻杀链如下所述:
• 探测或侦察阶段 :大多数军事组织所奉行的原则是,侦察的时间永远不会是在浪费时间,与敌人交战之前最好尽可能多地了解敌人。同样,攻击者也会在攻击之前对目标进行广泛的探测。根据经验,渗透测试或黑客攻击过程中有至少70%的努力都花在了侦察上。这里,通常会采用两种类型的侦察:
图1.2 攻击者遵循的典型网络攻杀链
■ 被动侦察 :不会直接与目标进行敌对方式的互动。例如,攻击者可以浏览目标公开可用的网站,评估在线媒体的消息(尤其是社交媒体网站),来尝试确定目标的攻击面。一个典型的任务目标是获取过去和当前员工的姓名列表,甚至对公开可用的已泄露数据库进行调查。这些信息将作为尝试使用暴力破解来猜测密码的基础,还可用于将来的社会工程攻击。这种类型的侦察跟普通用户的行为差不多,我们是很难分辨的。
■ 主动侦察 :这种方式可以被目标检测到,但对于大多数组织来说,很难将主动侦察的活动与其他正常的流量活动区分开来。主动侦察期间发生的活动包括对目标场地的物理访问、网络端口扫描以及远程漏洞扫描。
• 投递阶段 :投递是选择和开发将在攻击期间用于完成漏洞利用的武器。选择什么样的武器取决于攻击者的意图以及可以投递的路线(例如,通过网络、无线连接或基于Web的服务)。投递阶段的影响将在本书的后半部分详细研究。
• 利用或入侵阶段 :这是成功利用特定漏洞的节点,允许攻击者在目标系统中获得立足点。这种入侵可能发生在单个阶段(例如,使用缓冲区溢出利用了已知的操作系统漏洞),也可能涉及多个阶段(例如,如果攻击者可以从网站https://haveibeenpwned.com或其他类似站点搜索并下载公开可用的数据,这些数据通常包含已泄露的数据,涉及用户名、密码、电话号码和电子邮件地址,将使攻击者能够轻松创建密码字典以尝试访问一些软件即服务(SaaS)的应用程序。例如,尝试直接登录到企业的VPN,或使用电子邮件地址执行有针对性的电子邮件网络钓鱼攻击。攻击者甚至可以发送带有恶意链接的短信来传递有效攻击负载)。当一个恶意攻击者以特定企业为目标时,多阶段的攻击是常态。
• 实现阶段——对目标采取行动 :这经常并且错误地被称为提权阶段,因为攻击者的重点仅仅是挖掘窃取敏感数据(例如登录信息、个人信息和财务信息)的路径。事实上,攻击者通常有不同的目标。例如,攻击者可能希望将勒索软件包投放到竞争对手身上,以吸引客户使用自己的业务。因此这个阶段会侧重于更多可能的攻击操作。这里最常见的漏洞利用活动之一,就是攻击者试图将其访问权限提高到最高级别(垂直提权)并获取尽可能多的账户(水平提权)。
• 实现阶段——持久化 :如果入侵的网络或系统有价值,那么拥有持久化的访问权限会很有意义,这使得攻击者能够与受感染的系统保持通信。从防御者的角度来看,这是网络攻杀链中最容易检测到的部分。
网络攻杀链只是攻击者在试图入侵网络或特定数据系统时的行为元模型。作为元模型,它可以包含任何私有的或商业的渗透测试方法。然而,与这些方法不同的是,它揭示了攻击者如何一步步靠近网络的战略级关注点。本书内容将围绕攻击者活动来组织。