网络安全威胁情报之杀伤链
一次性进群,长期免费索取教程,没有付费教程。
教程列表见微信公众号底部菜单
进微信群回复公众号:微信群;QQ群:460500587
微信公众号:计算机与网络安全
ID:Computer-network
网络威胁情报中引用的另一个军事概念是杀伤链。事实上,这几年安全市场对这个营销概念的热炒以及业界对其的广泛引用,已经很难找到杀伤链的原始出处。这个概念多年来游走于学术边缘,直到Lockheed Martin公司的研究人员Eric M.Hutchins等人发表了题为“Intelligence-Driven Computer Net-work Defense Informed by Analysis of Adversary Campaigns and Intrusion Kill Chains”的报告,开始将杀伤链带入了网络安全主流,将最常见的入侵模式抽象为正规化的杀伤链。
自从那份报告发布之后,杀伤链已经成为几乎所有供应商在网络威胁情报上都会引用的模型,也是防御团队的主要指导流程。杀伤链为攻击者在利用目标时所经历的阶段提供了理想的抽象。
但什么是杀伤链?杀伤链最简单的解释就是攻击者为了实现目标而必须执行的一系列步骤(见图1)。图中的例子我们讨论的是一个计算机网络攻击者,但它实际上可以用于许多对抗活动。这意味着在事件的抽象过程中,事件周期聚焦于防御者的行为上,而杀伤链则侧重攻击者的行为。
图1 杀伤链
杀伤链是抽象攻击者的战术、技术和程序(TTP)的好方法。它提供了一个理解攻击的抽象行为结构。
尽管杀伤链的早期阶段,特别是目标踩点和侦察跟踪有时对于防御者来说是不透明的,通常难以发现,这是情有可原的。防御者往往倾向于认为攻击者每次都能毫不费力地获胜,然而这并不是真相,事实上,我们破坏这些预入侵阶段的能力可能是防御者最强大的优势之一。
关于杀伤链
在Lockheed Martin提出杀伤链之前,杀伤链这个概念就已经存在很久了,杀伤链原先是指为了实现对某个军事目标实施致命性打击所必需的一系列相互关联的步骤。“JP 3-60Joint Targeting”一文中描述了目前美国军方杀伤链。Lockheed Martin关于杀伤链的文章描述的是网络安全运营领域中的杀伤链模型。其实没有所谓“正确的”杀伤链,根据攻击场景的不同,可能会忽略某个阶段,或合并某些阶段,如同其他模型一样,这只是一种思考入侵的方法。
因此,我们可以根据自身情况对杀伤链进行适当改造,比如可以为它增加自己的阶段(例如持久化)。我们并不否定Hutchins等人所做的伟大工作,只是可以让你根据自己的理解,建立自己的入侵模型。
一、目标定位
在杀伤链正式开始之前,攻击者必须确定要攻击什么(例如,谁是潜在的目标)。在许多情况下,这是黑客与某赞助商或受益方进行磋商时确定的,通常作为他们自身情报或业务需求的一部分。对于防御者来说,我们通常会认为目标是受害者企业,但实际上,黑客针对的目标是企业里有价值的信息或能力。
目标定位是杀伤链一个有趣的阶段,因为它涉及攻击的动机,也是对攻击者的归类(不一定是具体属性的识别)。举个例子,一个想偷钱的攻击者需要去有钱的地方。了解攻击者的最终目标是,可以引导我们更好地使用防御技术。
二、侦查跟踪
瞄准目标后,攻击者便开始进行侦察。在侦察跟踪阶段(或通过简单的侦察),攻击者会尽可能多地收集目标受害者的信息。根据所收集的数据类型(硬数据与软数据)和收集方法(被动与主动),侦察可分为多个类别。
硬数据与软数据
情报世界有多种基于主题(SIGINT、TECHINT等)的信息划分方法,但对于网络安全运营领域来说,我们可以把事件简化。
硬数据包括网络及其系统的技术信息。对于攻击者来说(也适用于调查攻击者的防御方),这里通常包括开源情报:
足迹或枚举目标网络
DNS信息,如反向DNS
操作系统和应用程序版本
系统配置的有关信息
安全系统的有关信息
软数据包括网络及其系统的企业背景信息:
组织结构图、公共关系和其他层次结构文件
业务计划和目标
招聘信息,通常可能泄露诸如正在使用的技术等信息
关于员工,包括专业和个人的信息,用于社交工程攻击
主动与被动收集方法
攻击者可能会使用不同的方法收集信息。我们可以将这些方法归类为主动或被动:
主动方法需要直接与目标进行交互。积极的硬收集可以是直接对系统进行端口扫描,积极的软收集可能是通过社工手段收集有关内部企业架构和人员联系方式等信息。
被动方法不直接与目标互动,通常是收集来自第三方信息服务(如DNS或WHOIS)的信息。被动的硬收集可以利用来自公共服务的域信息;被动的软收集从网站收集关于企业的信息,在这些社交站点中,人们经常分享相当多的信息。
防御者检测这种侦察活动的能力差别很大。例如,主动方法比被动方法更容易检测,而且大多数网络防御者对硬数据比软数据有更多的控制措施。检测端口扫描的硬收集行为要比检测读取企业对外发布的特定技术岗位的职位描述容易得多。
追踪黑客
尽管侦察收集有一定效果,但对于杀伤链启动的大多数情况,也是存在一定疑惑的。实际上通过端口扫描的动机来衡量黑客组织的水平是不大可能的。互联网上的任何东西都可能遭受到大量的扫描,扫描源头并不一定是坏人,所以我们需要考虑侦查的低精度与高噪声。另一方面,在杀伤链后期获取与侦查活动相关的攻陷指标,有助于对目标以其使用的方法,甚至其他被入侵的资源有更好的洞察力。
三、武器构造
如果所有的安全防御产品,或者所有软件都能按预期工作,那么攻击者几乎总是会失败。因此,攻击者的目标是找到设计和实现不匹配的地方,即寻找漏洞。然后,攻击者可靠地利用这个漏洞,并将其打包为可以送达目标的形式(例如,恶意文档或漏洞利用工具包)。寻找这个漏洞,制造一个漏洞,并把它与一个有效载荷相结合的过程就是武器构造。
漏洞挖掘
武器构造的漏洞挖掘阶段特别有趣,因为它决定了要攻击哪些目标。它会迫使攻击者作出决定。一些广泛部署的软件可能会在任何环境中找到,例如Adobe Acrobat和Reader、Microsoft Windows和Office。这意味着任何针对它们的利用都是可以广泛使用的。但是,这些软件遭到了多年的攻击,其所属的公司都在努力识别和减轻漏洞。另一种方法是攻击一个缺乏维护的软件,但这样的软件往往部署面也不太广,会限制攻击者可以使用的范围。这个过程可以与网络杀伤链的侦察跟踪阶段结合在一起,攻击者愿意付出的努力也可能受到自身方向和情报需求的影响。
Stuxnet攻击事件是这种权衡的一个例子,其中未经确认的攻击者在伊朗Natanz的核设施内禁用离心机,其中还包括在西门子设备中部署针对可编程逻辑控制器(PLC)的漏洞利用。虽然这种设备在大多数企业中并未广泛部署,但它存在于目标环境中。这些PLC中的漏洞为攻击者执行任务提供了一个载体。
作为防御者,我们通过以发展为中心的安全方法不断地破坏这个攻击过程。良好的开发实践,如微软的安全开发生命周期,可以减少产品设计与实现不匹配的漏洞。应用程序安全团队需要经常在源代码中寻找这些漏洞,强大的补丁管理可以帮助消除环境中的已知漏洞。
每个被修补的漏洞都会逐步给攻击者设置门槛,迫使他们找到新的漏洞利用。这是一个耗时且昂贵的过程。一个漏洞影响的时间越长,对攻击者就越有价值。反之,破坏漏洞的投资回报(ROI)也带来了防御价值。
想象一下,攻击者在Windows中发现一个权限升级漏洞。攻击者使用它多年,直到Windows 7才得到修复。这意味着攻击者在期间的多个Windows版本中使用该漏洞多年,它持续的时间越长,攻击者从漏洞挖掘和利用获得的投资回报率(ROI)就越高。
后来攻击者又发现了Internet Explorer 11的代码执行漏洞,并将其用于一系列攻击。然而,三个月后,防御者发现并修补了这个漏洞。攻击者没有多少时间从这个漏洞中获得投资回报,迫使他重新寻找新的漏洞。这里需要额外的资源分配,以获得更小的漏洞有效性时间窗。
漏洞利用
一个漏洞只是盔甲中的一条裂缝,它需要一个实际的exploit来利用这个裂缝。漏洞利用的过程就是找到触发漏洞的方法,并将其转化为程序执行的实际控制。就像漏洞挖掘一样,这个阶段可能需要自身领域的专长,也可能与其他利用阶段同时出现。
exploit制作完成后,攻击者必须想办法让其能被稳定执行。这个过程可能是复杂的,因为攻击可能会因为语言包环境或特定的防御措施而无法奏效,如Microsoft的增强缓解体验工具包(EMET)或Linux地址空间布局随机化(ASLR)。此外,破坏目标代码或系统的漏洞将引起防御者的注意。
然而,漏洞利用只是为攻击者打开了一扇门,给了他们一个访问目标(至少是一个中间目标)的方法。接下来,攻击者将需要一个植入程序。
植入程序开发
通常,漏洞利用的目标是为攻击者提供某种有效载荷,以便进一步实现其目标(如数据泄露)。植入程序将允许攻击者保持对被攻击系统的访问,而不必连续地对目标设备进行攻击,这可能很容易打草惊蛇。而且,一旦被攻击的系统漏洞被修复,它将使现有的漏洞利用方法失效。因此,植入程序开发遵循许多与传统软件开发相同的过程,重点在于隐藏能力(以避免检测)和程序功能(以使攻击者能够实现其目标)。例如,如果攻击者希望能够在被感染电脑的周边范围内窃听对话,则植入程序需要激活麦克风,记录听到的内容并传输所得到的音频文件,这个过程不能引起用户的怀疑,或被正在运行的安全软件所发现。
这里有两种主要类型的植入程序。第一种是主动发信号给命令与控制服务器(C2)的植入装置,它将接收在目标系统上执行的指令。第二种是不主动发信号,但等待接收命令,然后开始与命令和控制服务器进行通信。植入程序开发通常由网络拓扑结构和设备类型决定,有时候可以使用以前开发的程序,但是在某些情况下,攻击者需要为目标网络开发特定的程序。
尽管许多计算机网络操作仍然严重依赖于攻击者使用植入程序来保持持久化控制能力,但是越来越多的黑客试图在不安装任何植入程序的情况下实现其目标。希拉里·克林顿(Hillary Clinton)竞选主席约翰·波德斯塔(John Podesta)的电子邮件攻击计划就是在没有部署植入程序的情况下进行的,只是通过窃取他的密码。在很多情况下,这种攻击方式对安全分析人员来说是非常难以发现的,因为没有植入程序,可分析的内容更少了。无植入攻击就是这样一种场景,理解攻击者的目标将有助于了解他们的技术背景。
测试
作为武器构造阶段的一部分,漏洞利用和植入程序都需要经过广泛的测试。就像软件开发一样,测试可能不仅仅是一次抽查,也有可能由不同的质量保证团队进行大量的测试。对于恶意代码,测试阶段聚焦在两个方面:功能和可检测性。
功能方面与其他软件开发项目非常相似。测试团队需要确保软件能够完成它设计的任务。如果要窃取文件,植入程序必须能够从目标主机上读取文件系统,找到正确的一组文件,并打包、加密和压缩它们,然后将其输送到攻击者控制的系统中。这似乎很容易,但中间经常会出现开发团队无法控制的情况,这就需要进行测试。
可检测性方面就有别于正常的软件开发过程。测试团队将尝试验证他们的软件是否可以绕过目标环境中的安全检测工具,例如防病毒软件或其他终端安全软件。这个结果会直接关系到植入程序的功能,因为许多基于启发式的安全软件会监测某些行为,例如,恶意代码可能为了实现其目标,需要通过设置注册表项来保持持久化。这些可检测性要求可能基于假设,或(针对入侵难度特别高的目标)基于在侦查跟踪阶段收集到的信息。
基础设施建设
严格来讲,尽管这个过程不是武器化阶段的一部分,但基础设施开发是攻击者在攻击之前需要完成的另一项关键准备任务。大多数攻击都依赖这些基础设施的支撑,才能将恶意代码部署到受害者的机器上。例如:C2服务器可以用于指挥攻击行动;收割服务器(Exfiltration Points)用于窃取数据的上传并从中检索;如果攻击者的其他基础设施受到攻击,攻击者还需要热点服务器(Hot Points)进行转移来隐藏自己的真实位置。攻击者需要各种各样的基础设施来执行其不同阶段的操作:
证书
用于代码签名和TLS连接。
服务器
用于归属混淆,指挥控制(C2),服务工具(如第二阶段工具包)和数据收割点。这些服务器有时是直接从托管服务提供商购买的。
域名
很少有网络连接直接使用IP地址,大多数攻击者使用域名。
攻击者知道,这些恶意基础设施很容易会被跟踪或关闭,因此当一个系统遭到入侵或关闭时,他们通常会启用备份服务器和域名。
非电子基础设施需求
并非所有的基础设施需求都是电子的。攻击者经常需要另外两个大的需求来建立恶意的基础设施:身份和金钱。它们都是购买与建设基础设施所需的资源。这些对攻击者来说都是具有挑战性的,因为在大多数情况下,这个过程需要直接绑定到真实的个人,这是攻击者最想避免的。
多年来,攻击者采取了各种各样的方法来避免这些陷阱。假名和假身份是常见的方式,但即使这样也可以被跟踪,因为攻击者经常在域名和证书购买上使用相同的虚假名称,虚假地址或注册电子邮件。在采购环节,一些攻击者完全可以通过入侵其他安全性较低的系统来避免直接购买属于自己的系统。其他人则采用了比特币这样的半匿名支付系统。除此以外,攻击者已经开始使用在线服务,如GitHub、Twitter和其他免费基础设施。
四、载荷投递
一旦攻击者收集到足够的信息来制造攻击,下一个杀伤链阶段就是载荷投递。常见的情况包括但不限于以下场景:
钓鱼邮件
攻击者通过直接通信(一般是电子邮件)向特定目标发送武器化资源,多以附件或链接形式。这种通信过程通常会被精心伪装成合法的,减少目标用户的怀疑。
SQL注入
攻击者将一个命令发送到一个Web应用程序,并进一步传递给后台的数据库服务器直接解析,这可能导致攻击者能够执行任何数据库命令,包括修改凭证,窃取信息,甚至(大多数情况下)在主机操作系统上执行命令。
战略性Web入侵(水坑攻击)
攻击者首先入侵一个辅助资源,通常是一个存在浏览器漏洞利用的网站。这种攻击场景针对的攻击目标通常是广撒网式地面向整个团体,而不是特定的个人,这些人一旦访问这个网站就很可能被入侵。
载荷投递的关键是它是否能够简化:将有效载荷传送给受害者。这种简单性掩盖了这个阶段的重要性。载荷投递是攻击者对受害者的第一个活跃阶段,虽然之前的两个阶段也可以处于活跃状态,但这个阶段是攻击者必须活跃的,这意味着载荷投递阶段是受害者获取IOC指标的保证。在鱼叉式网络钓鱼的场景下,可能是电子邮件属性,如邮件头和邮件地址;而对于SQL注入场景,可能是连接Web服务器/数据库的IP地址。
五、漏洞利用
了解载荷投递和漏洞利用之间的差异可能是具有挑战性的。在载荷投递阶段,攻击者没有直接与目标进行互动,并没有控制任何目标系统。即使在钓鱼邮件攻击的场景下,安全措施也有可能将其成功阻断,并没有真正实现漏洞利用。漏洞利用则是攻击者获得代码执行控制权限,并开始执行自己的代码。
列举几个漏洞利用的例子:在一次水坑攻击中,受害者点击受感染的Web页面;在鱼叉式网络钓鱼攻击中,受害者点击恶意附件或链接。从这些场景上看,攻击者至少控制目标系统中的一个进程,这个立足点是攻击者进入网络的开始。
六、后门安装
攻击者一旦执行完恶意代码,他们的第一步就是巩固自己的成果。“Lockheed Martin Kill Chain”文章中的描述如下:“在受害者系统上安装远程访问的特洛伊木马程序或后门程序,使得攻击者能够在该环境中保持持久化。”这是攻击者在这个阶段所做的,我们将这些行为分为系统持久化和网络持久化。(在多数情况下,攻击者会同时执行这两个操作,但分开考虑会有助于理解。)
系统持久化
这个情况是攻击者在单个系统上执行代码,可能只是一个单一进程。这是一个有用的开始,但是它不会在系统重新启动后持续。关闭受感染的应用程序甚至可能会删除其访问权限。
大多数攻击者首先通过部署rootkit或远程访问木马(RAT)来巩固对少数主机的控制权。rootkit建立对系统的内核级访问,一旦安装,攻击者就可以逃避底层操作系统的许多检测方法。RAT是一种远程控制软件,意味着它可以绕过重启,而不依赖于某种利用,使得攻击者可以持续保持对一个单独主机的控制。
网络持久化
大多数攻击者并不满足于建立单个系统的立足点。相反,他们想要建立更深的持久化。为此,他们通常会使用以下两种技术之一(或都用)来建立更广泛的足迹:
在多系统中建立系统持久化
通过获取凭证并在其他系统上安装RAT或类似的远控方法。攻击者有多种选择,从自研软件到本地工具,如Windows中的PsExec或Unix环境中的SSH。
收集能够访问较多网络资源的权限,避免直接访问网络上的系统
通过VPN、云服务或其他暴露在互联网的系统,如Web邮件系统。这在很多情况下降低了被发现的风险,并且不需要使用恶意软件,而是使用本机工具。
以上这些技术可以单独使用,也可以一起使用。
七、命令与控制
一旦攻击者建立了持久性,尤其是如果他们使用了RAT方法,他们需要一种发送命令的方法。通信可以有多种方法,使用各种不同类型渠道。过去,许多恶意软件,尤其是分布式拒绝服务(DDoS)工具,通过IRC频道或HTTP呼叫加入攻击者控制下的服务器进行通信。The Comment Crew(“评论员”黑客组织)从其他表面看起来无害的网页上使用HTML注释进行命令和控制,因此业界给了它这个绰号。有些攻击者甚至同时使用多种方法,例如DNS lookups、社交媒体,或者主流的云应用程序。
自引导的恶意软件
有一小部分恶意软件系列是不带任何通信功能的。这些“无人机”,或自引导的恶意软件系列很少,但特别适合攻击相对封闭的网络。著名的例子是Stuxnet恶意软件系列,专门针对没有任何网络通信的伊朗核研究机构。鉴于这个恶意软件系列取得的成功,相信以后会有更多的追随者。响应自引导的恶意软件需要采取不同的方法,防御者不能聚焦于识别C2或数据收割的网络流量,相反,防御者需要识别系统中正在使用的恶意软件,并在其传播之前将其消除。
攻击者非常注重隐蔽他们的通信渠道避免引起注意,并提供足够的带宽来满足攻击者的需求。在某些情况下,恶意软件可能每天仅使用几行文本进行通信,而在某些场景下恶意软件则提供完整的虚拟桌面连接。
八、目标行动
在大多数情况下,所有这些都不是最终目标,而是一种能力。攻击者通过建立访问过程来使自己有能力以前所未有的方式影响目标。我们把这样的新能力称为目标行动。最常见的行动分类参考美国空军的方法:
破坏
攻击者破坏物理或虚拟的东西。这里可能是销毁数据、覆盖或删除文件或者使系统完全不可用(除非重建)。也可能意味着摧毁某个物理对象,尽管这在计算机攻击中很少发生,Stuxnet破坏伊朗核设施就是这样一个例子。
拒绝
攻击者拒绝目标对资源(例如系统或信息)的使用,例如通过拒绝服务攻击使目标无法进行访问。近年来流行的另一个例子是勒索软件,它加密用户的数据,要求用户付款才能再次使用(存在理论上的可能性)这些数据。
降级
攻击者会降低目标资源或能力的效能,通常是指目标控制和指挥资源的能力。
干扰
通过阻断信息的流动,攻击者可以干扰目标执行正常操作的能力。
欺骗
攻击者试图让目标相信一些伪造的东西。大多数场景下,攻击者可能会将虚假信息插入工作流程中以重定向资产或信息,或者导致目标执行一系列动作使攻击者受益。
这些行动大部分都是直接的,显而易见的。攻击者把它们放在一起的方式是非常关键的,常常直接告诉我们攻击者的身份和目标。攻击者可以隐藏恶意软件,混淆命令和控制,等等,但最终在目标上的行动不能混淆、编码或保护。为了窃取信息,攻击者必须窃取文件;为了执行DoS,攻击者必须使用受感染的主机来发送大量的网络流量。简而言之,目标行动阶段不能是伪造的。
理解攻击者可能将多个动作结合起来也是很重要的,包括物理的非网络的动作。比如收买一名内部人员,将战略信息泄漏给某个军事行动(例如,轰炸一个地理位置)。
如图2所示,鉴于攻击者的杀伤链是严格定义的,也需要与其相呼应的事件周期。从识别阶段开始,识别可以在杀伤链的任何阶段发生,最终对事件响应会有显着不同的影响。在杀伤链的载荷投递阶段就能及时发现安全事件是理想的,防御者可以通过钓鱼邮件拦截或Web代理阻断黑客执行的攻击;而在杀伤链的后期阶段检测到的攻击(如C2控制或目标行动阶段)可能会比较痛苦,因为许多资源已发生受损,事件响应调查过程也会变得昂贵且漫长。
图2 杀伤链与事件周期
九、杀伤链举例
下面我们举个例子来描述杀伤链,假设有一个代号为Grey Spike的虚拟黑客组织的一系列攻击。这个组织针对多个国家的本土活动进行政治情报收集。他们试图获得关于候选人在经济、外交政策和军事问题上的态度信息。以下是他们的战略需求:
目标定位
Grey Spike没有自己的固定目标,而是从国家机构决策人那里接受任务(情报来源指引着他们的目标)。任务里会具体描述目标国家、候选人以及信息关键词。
侦查跟踪
Grey Spike一开始会了解目标的网络覆盖范围(包括域名、邮件服务器、使用的关键技术以及Web和移动应用程序)。同时还会收集关键人员的信息,如竞选管理人员、社交媒体管理人员以及大选中聘请的技术咨询公司。
武器构造
Grey Spike定期会收到一些分配的资源,包括0day漏洞,但通常他们会在没有其他资源可用的情况下才会使用这些分配。在这种场景下,Grey Spike拥有一套组件,可以用于在文档中下载宏病毒作为其有效载荷,这些定制化的文档由区域与文化的专业人士(通常从其情报机构的相关部门借用)根据目标所在的国家语言精心构造。另外,用于C2和载荷投递的私有服务器等基础设施会以壳公司的名义向来自全球各地的虚拟主机供应商租用。
载荷投递
攻击者将武器化的文档发送给参加竞选的关键官员。每份文件都是专门为个人精心构造的,比如财务捐助和证明的提议。由于竞选的斗争会非常激烈,被攻击的目标打开这些文件的概率很高,最终导致攻击者的植入程序在受害者的笔记本电脑上运行。
漏洞利用
植入代码以宏命令的形式运行,它主要针对PDF阅读器的一个较旧的漏洞。尽管该漏洞的补丁已经发布了一段时间,但是由于高层们相信这可能会对业务造成影响,所以他们已经冻结了所有更新。
载荷投递
漏洞利用代码是一个下载程序,它会连接部署在主流ISP虚拟主机环境中的恶意软件传输服务器,以便在目标系统上安装远程访问特洛伊木马(RAT)。接着RAT会与部署在其他国家ISP网络的C2服务器通信。
命令与控制
Grey Spike通过C2通道(加密的DNS查找)向RAT发出命令。通过这种隐蔽的通道,他们搜索目标的电子邮件和相关文件。除了一些计划获取的信息之外,他们还发现了一些电子邮件记录了共享账户(包括密码),可以使用这些权限来扩大对整个网络的访问权限。
目标行动
最后,Grey Spike对获取到的信息进行专项检索。机构决策者不希望直接干预竞选,主要是因为担心政治后果,尽管有技术能力摧毁候选人的大部分数据和线上的基础设施。
杀伤链有助于企业安全事件响应的相关数据,让你可以直观地看到攻击发生的样子,这有助于识别攻击者行为中的模式。
微信公众号:计算机与网络安全
ID:Computer-network