一、引言
在上期文章中我们介绍了ATT&CK执行战术前6项技术内容,本期我们为大家介绍执行战术后7项技术内容,后续会陆续介绍ATT&CK其他战术内容,敬请关注。
二、ATT&CK v10简介
MITRE ATT&CK 是一个全球可访问的基于现实世界观察的对手战术和技术知识库。ATT&CK 知识库被用作在私营部门、政府以及网络安全产品和服务社区中开发特定威胁模型和方法的基础。
ATT&CK v10更新了适用于企业、移动设备和 ICS(工业控制系统)框架的技术、组和软件。最大的变化是在企业 ATT&CK 中增加了一组新的数据源和数据组件对象,这是对 ATT&CK v9 中发布的 ATT&CK 数据源名称更改的补充。在 ATT&CK v10 中更新的内容汇总了有关数据源的这些信息,同时将它们构建为新的 ATT&CK 数据源对象。
ATT&CK v10 for Enterprise包含14个战术、188个技术、379个子技术、129个组织、638个软件,一共包括38类数据源。数据源对象具有数据源的名称以及关键细节和元数据,包括 ID、定义、可以收集它的位置(收集层)、可以在什么平台上找到它,突出显示构成数据源的相关值/属性的组件。ATT&CK v10 中的数据组件分析每个亮点映射到各种(子)技术,这些技术可以用该特定数据检测到。在个别(子)技术上,数据源和组件已从页面顶部的元数据框重新定位,以与检测内容并置。这些数据源可用于 Enterprise ATT&CK 的所有平台,包括最新添加的涵盖映射到 PRE 平台技术的开源情报 (OSINT) 相关数据源。

ATT&CK战术全景图(红框为执行战术)
三、执行战术
3.1 概述
执行战术是指攻击者控制的恶意代码在本地或远程系统上运行的技术,通常与其他技术结合使用,例如扫描网络或窃取数据,使用远程访问工具来运行PowerShell 脚本等。
执行包括13种技术,前一期我们已介绍了前6种技术,下面逐一介绍后7种技术。
3.2 利用计划任务/工作(T1053)
攻击者可利用任务调度功能来执行恶意代码。所有主要操作系统中都有程序或脚本在指定的日期和时间执行。如果满足适当的身份验证(例如:RPC 以及 Windows 环境中的文件和打印机共享),也可以在远程系统上安排任务,需要成为远程系统上的管理员或其他特权组的成员。
攻击者可能会使用任务调度在系统启动时或定时执行程序以实现持久性。这些机制也可以被利用以在特权帐户下运行进程。与系统二进制代理执行类似,攻击者也利用任务调度来掩盖受信任系统进程下的一次性执行。
利用计划任务/工作包含5个子技术,如下:
3.2.1 At程序(T1053.002)
攻击者可能会利用at程序执行恶意代码的任务调度。at程序是Windows、Linux 和 macOS 中的可执行文件,可执行定时任务。尽管在 Windows 环境中已弃用计划任务的 schtasks,但使用 at 需要运行任务计划程序服务,并且用户必须作为本地管理员组的成员登录。
在Linux和macOS 上,超级用户以及添加到 at.allow 文件的任何用户都可以调用 at。如果 at.allow 文件不存在,则允许不在 at.deny 中的用户名调用at。如果at.deny存在且为空,则允许全局使用 at。如果两个文件都不存在,则只允许超级用户使用at。
攻击者可使用at在系统启动时或定时执行程序以实现持久化。at也可以被利用来作为横向移动的一部分进行远程执行或在指定帐户下运行进程。
在 Linux 环境中,攻击者还可能通过shell或系统命令来利用at程序突破受限环境。如果允许二进制文件通过sudo以超级用户身份运行,at也可用于权限提升。
3.2.2 Cron程序(T1053.003)
攻击者可能会利用cron程序定时执行恶意代码。cron程序是用于类Unix 操作系统的定时任务调度程序。crontab文件包含要运行的定时任务计划和执行时间,存储在操作系统特定的文件路径中。
攻击者可在Linux或Unix 环境中使用cron在系统启动时或定时执行程序以实现持久化。
3.2.3 计划任务(T1053.005)
攻击者可能会利用 Windows 任务计划程序来实现恶意代码的初始或重复执行。有多种方法可以访问 Windows 中的任务计划程序。schtasks 程序可以直接在命令行上运行,也可以通过控制面板的GUI打开任务计划程序。攻击者也可使用 Windows 任务计划程序的.NET包装器,或Windows netapi32库来创建计划任务。
攻击者可能会使用Windows任务计划程序在系统启动时或定时执行以实现持久化。Windows 任务计划程序可被远程执行作为横向移动的一部分或在指定帐户下运行进程。与系统二进制代理执行类似,攻击者也利用Windows 任务计划程序来掩盖签名/受信任系统进程下的一次性执行。
攻击者还可以创建隐藏的计划任务,用于列举任务的工具和手动查询。攻击者可以通过删除关联的安全描述符(SD)注册表值来隐藏SCHTASKS 查询和任务调度程序的任务。也可以采用替代方法隐藏任务,例如在关联注册表密钥中更改元数据(例如索引值)。
3.2.4 系统定时器(T1053.006)
攻击者可能会利用 systemd 计时器来执行恶意代码。Systemd 计时器是具有文件扩展名 .timer 的单元文件,用于控制服务。计时器可以定时运行。它们可以在Linux 环境中用作Cron 的替代方案。Systemd 计时器可以通过 systemctl 命令行远程激活,通过 SSH 运行。
每个.timer文件必须有一个对应的同名.service文件,例如 example.timer 和 example.service。.service 文件是由 systemd 系统和服务管理器所管理的 Systemd 服务单元文件。特权计时器写入 /etc/systemd/system/ 和 /usr/lib/systemd/system,而用户级别写入 ~/.config/systemd/user/。
攻击者可能会使用 systemd 计时器在系统启动时或定时执行恶意代码以实现持久化。使用特权路径安装的计时器可用于维护根级持久化,安装用户级计时器以实现用户级持久化。
3.2.5 容器编排任务(T1053.007)
攻击者可能会利用容器编排工具(如 Kubernetes)提供的任务调度功能,来部署执行恶意代码的容器。容器编排任务定时执行自动化任务,类似 Linux 系统上的 cron程序。该类型部署也可以配置为弹性扩容的容器,自动化在集群内保持持久化。
在Kubernetes中,CronJob可用于调度运行一个或多个容器以执行特定任务。因此,攻击者可能会利用 CronJob 在集群内的各个节点中执行恶意代码。
3.2.6 缓解措施
ID |
缓解措施 |
描述 |
M1047 |
审计 |
PowerSploit框架等工具包含PowerUp模块,可发现计划任务中存在权限弱点可被权限提升的系统。 |
M1028 |
操作系统配置 |
配置计划任务强制在经过身份验证的帐户下运行,而不是允许它们以 SYSTEM 账户运行。关联的注册表项位于 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\SubmitControl。该设置可以通过 GPO 进行配置:计算机配置 > [策略] > Windows 设置 > 安全设置 > 本地策略 > 安全选项:域控制器:允许服务器操作员安排任务,设置为禁用。 |
M1026 |
特权账户管理 |
配置“增加调度优先级”选项仅允许管理员组有权调度优先级。这可以通过 GPO 进行配置:计算机配置 > [策略] > Windows 设置 > 安全设置 > 本地策略 > 用户权限分配:增加调度优先级。 |
M1018 |
用户账户管理 |
限制用户帐户的权限,只有授权管理员才能在远程系统上创建计划任务。 |
3.2.7 检测
ID |
数据源 |
数据组件 |
检测 |
DS0017 |
命令 |