综述
ATT&CK 的由来、用途以及 ATT&CK Matrix。

战术、技法和程序

  ATT&CK 是用于记录攻击者的战术(tactics)、技法(techniques)、 程序(procedures)的知识库。
  关于 TTP,我们举一个例子。假设笔者通过某种方式,入侵了某 Linux 机器。由于漏洞迟早会被修复,我们需要维持自己在目标系统中的权限。这在 ATT&CK 中属于 Persistence 这个 tactic。具体而言,我们把自己的 RSA 公钥写进了靶机的 /root/.ssh/authorized_keys ,从而以后就能通过 ssh 登录靶机。在 ATT&CK 中,这个行为被分类为 Account Manipulation 这个 technique,进一步是属于 SSH Authorized Keys 这个 sub-technique。
通过上传 ssh 公钥来维持权限,编号为 T1098.004
   ATT&CK 会对 technique 给出典型的 procedure,以及防御手段,如下图。
T1098.004 对应的 procedure 例子,以及防御措施

现有方法的缺陷

  在面对网络安全攻击时,我们有四个很重要的事情需要考虑:

  1. 我们需要摸清楚「攻击者是如何进行攻击的」。

  传统的方式,往往是记录一些比较初级的特征,例如攻击者的 IP 地址、木马文件的 hash 值、攻击者篡改的注册表,等等。它们是碎片化的,不能完整地描述攻击者与系统的交互,只是各自记录了攻击者在什么时候做了什么事。

  2. 现有的网络攻击生命周期模型过于抽象,不够实用。

  目前,已经有 Cyber Kill Chain(洛克希德马丁) 、STRIDE(Microsoft)等模型,用于描述一场网络攻击的 lifecycle。但它们都是高度抽象的模型,难以与一个个具体的攻击、防御动作联系起来。而低层的概念,例如 CVE 知识库、攻击流量特征库,只能描述某些特定系统、特定应用的漏洞和利用,难以得到一个宏观的视角。
Philosophy Paper 中的一张图,描述 ATT&CK 的抽象层次
  在 Philosophy Paper 中,ATT&CK 将自己定义为一个「中层模型」,致力于打通低层概念与高层模型之间的桥梁。ATT&CK 将攻击者的行为按 tactic 和 technique 分门别类,以便我们清晰地认识攻击者的行为,同时对之作出针对性的防御。

  3. 我们的模型必须适用于现实情况。

  为了让我们的模型可以应对真实网络环境中的攻击,我们的 TTP 知识库也应当是从真实环境中提取的。

  4. 我们的分类方式必须足够通用。

   这是为了方便对不同的攻击者采用的 TTP 进行比较。

ATT&CK 是什么

  攻击是最好的防守。红队、蓝队之间的对抗,可以快速地发现漏洞、修复漏洞,提升系统的防御能力。红蓝双方都可以使用 ATT&CK 这个工具。
   ATT&CK 是一个巨大的知识库,将攻击行为分门别类。它不仅关注攻击者所用到的工具、散发的恶意软件,还侧重于描述「攻击者如何影响目标系统」。ATT&CK 将攻击的 technique 组织起来成为 tactic,为「这个 technique 用于对系统产生什么影响」提供了上下文。
  technique 条目详细地记录了「攻击者的行为是如何达成 tactic 的」,以及「攻击者通过这个 technique 可以干什么事」。例如攻击者可以把系统账户信息 dump 下来,利用获取到的账户进行后续的 Lateral Movement(横向移动)。一个 tactic 可以由很多 technique 达成,故每个 tactic 条目都会包含多个 technique 条目。

ATT&CK Matrix

  ATT&CK 提供了一个矩阵,来可视化 tactic 和 technique:
ATT&CK Matrix
  利用 ATT&CK Matrix,我们可以分析攻击者的攻击效果、分析防御措施的覆盖情况,以及测试防御系统的能力。例如,我们可以用 ATT&CK Matrix 来可视化 APT39 这个组织的攻击手法:
  可以展开 technique,来观察他们使用的 sub-technique:

关于威胁情报

  ATT&CK 记录了群组的攻击行为,例如 APT29。这些情报是从公共网络上获取的,记录了各个群组使用了哪些 technique 去达成目的。这与一般的报告不同:普通的报告会描述特定的一场攻击的细节,但我们很难将它与其他组织的攻击、或是同一个组织的其他攻击相对比。基于 ATT&CK,我们可以分析各个 technique 被使用的频率,从而优先加固那些经常被攻击的系统。
Last modified 6mo ago