一、引言
在上期文章中我们介绍了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 | 命令 | 命令执行 | 监控已执行命令和参数,这些命令和参数可能利用计划任务执行恶意代码。 |
DS0032 | 容器 | 容器创建 | 监控新建的容器,这些容器可能利用计划任务执行恶意代码。 |
DS0022 | 文件 | 文件创建 | 监控新建的文件,这些文件可能利用计划任务执行恶意代码。 |
文件修改 | 监控修改的文件,这些文件可能利用计划任务执行恶意代码。 | ||
DS0009 | 进程 | 进程创建 | 监控新建的进程,这些进程可能利用计划任务执行恶意代码。 |
DS0003 | 计划 任务 | 计划任务创建 | 监控新建的计划任务,这些计划任务可能执行恶意代码。 |
3.3 无服务器执行(T1648)
攻击者可能会利用无服务器计算、集成和自动化服务来在云环境中执行任意代码。许多云提供商提供各种无服务器资源,包括计算引擎、应用程序集成服务和web服务器。
攻击者利用这些资源作为执行任意命令的手段。例如,攻击者使用无服务器函数来执行恶意代码(例如加密挖掘恶意软件)。攻击者还可能创建特权账号以执行原始用户无法执行的操作。
攻击者可以调用无服务器函数来执行云事件,随着时间的推移实现持久化。例如,在AWS环境中,攻击者可能会创建一个Lambda函数,该函数会自动向用户添加其他云凭据,以及相应的CloudWatch events规则,该规则会在创建新用户时调用该函数。类似地,攻击者可以在Office365环境中创建Power Automate工作流,该工作流将转发用户收到的所有电子邮件,或在授予用户访问SharePoint中的文档的权限时创建匿名共享链接的所有电子邮件。
3.3.1 缓解措施
ID | 缓解措施 | 描述 |
M1018 | 用户账户管理 | 从未明确要求无服务器资源的用户中删除创建、修改或运行无服务器资源的权限。 |
3.3.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0015 | 应用程序日志 | 应用程序日志内容 | 监视无服务器执行生成的日志,以查看异常活动。 例如,在Exchange环境中,Power Automate通过Outlook365连接器发送的电子邮件在SMTP标题"x-ms-mail-application"中包含短语"Power App"或"Power Automate"。 |
DS0025 | 云服务 | 云服务修改 | 监控无服务器资源的创建和修改。 |
3.4 利用共享模块执行(T1129)
攻击者可能通过加载共享模块来执行恶意载荷,通过Windows 模块加载器从任意本地路径和网络路径加载 DLL。此功能在 NTDLL.dll 中,是 Windows本机API 的一部分,来自Win32 API 的 CreateProcess、LoadLibrary 等函数调用。
模块加载程序可以通过如下几种方式加载 DLL:
- 通过导入目录中指定DLL 路径名;
- 通过导出转发到另一个DLL,指定路径名;
- 通过NTFS或Symlink program.exe.Local,包含导入、导出中指定的DLL路径名;
- 通过嵌入或外部应用程序清单中的<file name="filename.extension" loadFrom="fully-qualified or relative pathname">。文件名指的是导入或导出目录中的条目。
攻击者可能会使用此功能作在受害系统上执行任意有效负载。例如,恶意软件可能会执行共享模块来加载其他组件或功能。
3.4.1 缓解措施
ID | 缓解措施 | 描述 |
M1038 | 执行预防 | 通过应用程序控制工具防止加载未知 DLL,识别和阻止恶意软件。 |
3.4.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0011 | 模块 | 模块负载 | 将 DLL 模块加载限制到 %SystemRoot% 和 %ProgramFiles% 目录将防止来自不安全路径的模块加载。 |
DS0009 | 进程 | 操作系统 API 执行 | 监控可能通过加载共享模块来执行恶意负载的 API 调用。 |
3.5 利用第三方软件部署工具(T1072)
攻击者可以访问和使用安装在企业网络中的第三方软件,例如管理、监控和部署系统,以在网络中横向移动。
攻击者可利用第三方软件远程执行代码,可横向移动到其他系统、收集信息或产生特定效果,例如擦除所有端点上的硬盘驱动器。
此操作所需的权限因系统配置而异,本地凭据可直接访问第三方系统,或者需要特定的域凭据,系统可能需要管理帐户才能登录或执行。
3.5.1 缓解措施
ID | 缓解措施 | 描述 |
M1015 | 活动目录配置 | 通过使用组策略确保关键网络系统访问隔离。 |
M1032 | 多因素认证 | 通过使用多因素身份验证,确保关键网络系统访问隔离。 |
M1030 | 网络分段 | 通过使用防火墙确保对关键网络系统的系统隔离。 |
M1027 | 密码策略 | 验证可用于访问部署系统的帐户凭据是否唯一且未在整个企业网络中使用。 |
M1026 | 特权账户管理 | 仅向有限数量的管理员授予对应用程序部署系统的访问权限。 |
M1029 | 远程数据存储 | 如果应用程序部署系统可以配置为仅部署签名的二进制文件,则确保可信签名证书不与应用程序部署系统位于同一位置,而是位于无法远程访问或者严格受控的系统上。 |
M1051 | 更新软件 | 定期更新补丁,防止利用特权来远程访问。 |
M1018 | 用户账户管理 | 确保第三方提供商访问系统的帐户都可追溯,并且不会在整个网络中使用或被共用。确保对提供给这些系统的帐户进行定期审查,并确保有访问权限的回收机制。通过使用帐户权限分离,确保关键网络系统的访问隔离。 |
M1017 | 用户培训 | 对部署系统的使用有严格的审批政策。 |
3.5.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0015 | 应用日志 | 应用日志内容 | 通过审计第三方应用程序的日志发现未经授权的可疑行为,以及账号异常登录行为等。 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程行为。 |
3.6 利用系统服务(T1569)
攻击者可能利用系统服务或守护程序来执行命令或程序。攻击者可以通过在本地或远程与服务交互执行恶意代码。许多服务设置为在启动时运行,这有助于实现持久化,但攻击者也可以利用服务一次性执行。
利用系统服务技术包含2个子技术,如下:
3.6.1 Launchctl(T1569.001)
攻击者可能会利用launchctl 来执行命令或程序。Launchctl 与 macOS 的服务管理框架 launchd 交互。Launchctl 支持在命令行上以交互方式获取子命令,甚至从标准输入中重定向。
攻击者使用launchctl执行命令和程序作为启动代理或守护程序。常见的子命令包括:launchctl load、launchctl unload 和 launchctl start。攻击者可以使用脚本或手动运行命令launchctl load -w "%s/Library/LaunchAgents/%s" 或 /bin/launchctl load 来执行启动代理或启动守护进程。
3.6.2 服务执行(T1569.002)
攻击者可能会利用 Windows 服务控制管理器来执行恶意载荷。Windows 服务控制管理器是管理和操作服务的接口,用户可以通过 GUI 组件以及 sc.exe 和 Net 等系统程序访问服务控制管理器。
PsExec用于针对服务控制管理器API创建的临时Windows服务执行命令或有效负载。PsExec和sc.exe 等工具可用于远程执行。
攻击者可能会通过新的服务结合权限提升等技术来执行恶意载荷。
3.6.3 缓解措施
ID | 缓解措施 | 描述 |
M1040 | 端点行为防御 | 在Windows 10上,启用攻击面减少 (ASR) 规则以阻止 PsExec 创建的进程运行。 |
M1026 | 特权账户管理 | 确保权限不允许具有较低权限级别的用户创建或与之交互以较高权限级别运行的服务。 |
M1022 | 限制文件和目录权限 | 确保权限级别较低的用户无法替换或修改高权限级别的服务二进制文件。 |
M1018 | 用户账户管理 | 防止用户安装自己的启动代理或启动守护程序。 |
3.6.4 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控异常的命令行调用,包括修改与正常使用模式不符合的软件、补丁或服务。 |
DS0022 | 文件 | 文件修改 | 监控针对文件所做的更改 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程 |
DS0019 | 服务 | 服务创建 | 监控新创建的服务 |
DS0024 | Windows 注册表 | Windows 注册表项修改 | 监控针对windows注册表所做的修改 |
3.7 诱导用户执行(T1204)
攻击者可能会依赖用户的特定操作来获得执行。用户可能会受到社会工程的影响,例如打开恶意文件或链接被执行恶意代码,这些用户操作被视为网络钓鱼的后续行为。
攻击者还可能欺骗用户执行操作,例如启用远程访问软件,允许攻击者直接控制系统,或下载和执行恶意软件等。
诱导用户执行技术包含3个子技术,如下:
3.7.1 恶意链接(T1204.001)
攻击者可能依赖用户点击恶意链接来获得执行。用户可能会受到社会工程影响,让用户点击一个链接,这将导致代码执行。单击链接还可能导致其他执行技术,例如通过利用浏览器或应用程序漏洞执行,链接还可能导致用户下载恶意代码执行关联的文件。
3.7.2 恶意文件(T1204.002)
攻击者可能依赖用户打开恶意文件以获得执行。用户可能会受到社会工程的影响,使他们打开将导致代码执行的文件。攻击者可能使用需要用户执行的多种类型的文件,包括 .doc、.pdf、.xls、.rtf、.scr、.exe、.lnk、.pif 和 .cpl。
攻击者可能会使用各种形式的伪装和混淆文件来增加用户打开并成功执行恶意文件的可能性。这些方法可能包括使用熟悉的命名约定或密码保护文件,并向用户提供有关如何打开文件的说明。
3.7.3 恶意图片(T1204.003)
攻击者可能会依赖用户运行恶意图片以获得执行。主流的云平台、容器运行时都可以被安装后门。后门镜像可以通过恶意软件上传到公共存储库,用户可以从镜像下载并部署实例或容器,而不会意识到镜像是恶意的,这可能导致在实例或容器中执行恶意代码,例如执行加密货币挖掘的代码。
攻击者还可能以某种方式命名镜像(例如:匹配合法名称或位置)以混淆用户,增加用户错误地从镜像部署实例或容器的机会。
3.7.4 缓解措施
ID | 缓解措施 | 描述 |
M1040 | 端点行为预防 | 在Windows10上,启用攻击面减少 (ASR) 规则以阻止可执行文件运行,并通过阻止将恶意代码写入磁盘来防止Office应用程序创建恶意可执行内容。 |
M1038 | 执行预防 | 通过应用程序控制防止伪装的可执行文件的运行。 |
M1031 | 网络入侵防御 | 如果用户正在访问链接,则可以使用网络入侵防御系统。 |
M1021 | 限制基于 Web 的内容 | 如果用户正在访问链接,则默认阻止传输中的未知或未使用文件,这些文件不应下载,例如 .scr、.exe、.pif、 .cpl 等。一些下载扫描设备可以打开和分析压缩和加密的格式,例如可能用于隐藏恶意文件的 zip 和 rar。 |
M1017 | 用户培训 | 通过用户培训提高用户对常见网络钓鱼技术的认识,增强安全意识。 |
3.7.5 检测
ID | 数据源 | 数据组件 | 检测 |
DS0015 | 应用日志 | 应用日志内容 | 监控第三方应用程序日志记录以发现用户异常执行行为。 |
DS0017 | 命令 | 命令执行 | 监控应用程序的执行和命令行参数。 |
DS0032 | 容器 | 容器创建 | 监控新建的容器,这些容器可能使用现有合法的外部 Web 服务而不是它们的主要命令和控制通道来泄露数据。 |
容器启动 | 监控容器的激活或调用。 | ||
DS0022 | 文件 | 文件创建 | 防病毒软件可能会检测到在用户计算机上下载和执行的恶意文档和文件。端点防御系统可能会在文件打开后检测到恶意事件。 |
DS0007 | 图像 | 图像创建 | 监控新建的图像,可能使用现有的合法外部 Web 服务而不是其主要命令和控制通道来泄露数据。 |
DS0030 | 实例 | 创建实例 | 监控新建的实例,可能使用现有的合法外部 Web 服务而不是其主要命令和控制通道来泄露数据。 |
实例启动 | 监控实例的激活或调用。 | ||
DS0029 | 网络流量 | 网络连接创建 | 监控新建的基于web的网络连接,这些网络连接被发送到恶意或可疑目的地。检测异常进程执行和命令行参数(例如,监控不正常启动网络连接或由 regsvr32.exe、rundll.exe、.SCF、HTA、 MSI、DLL 或 msiexec.exe)。。 |
网络流量内容 | 监控和分析与基于 Web 的网络连接相关的流量数据包,检测异常进程执行和命令行参数。 | ||
DS0009 | 进程 | 进程创建 | 监控新执行的进程,攻击者可能会使用这些进程来获得需要用户交互的初始访问权限。 |
3.8 利用windows管理规范(WMI)(T1047)
攻击者可能会利用Windows Management Instrumentation (WMI) 来执行恶意载荷。WMI 是一项管理功能,可提供统一的环境来访问Windows系统组件。WMI 服务支持本地和远程访问,常用端口:135和5985。
攻击者可以使用 WMI 与本地和远程系统交互,远程执行文件可用于信息收集、横向移动等环节。
3.8.1 缓解措施
ID | 缓解措施 | 描述 |
M1040 | 端点行为预防 | 在Windows 10上,启用攻击面减少 (ASR) 规则以阻止由WMI 命令创建的进程运行。注意:许多合法工具和应用程序使用 WMI 来执行命令。 |
M1038 | 执行预防 | 如果给定系统或网络不需要执行 wmic.exe,请使用配置为阻止执行 wmic.exe 的应用程序控制,以防止对手潜在的利用。例如,在 Windows 10 和 Windows Server 2016 及更高版本中,可能会应用 Windows Defender 应用程序控制 (WDAC) 策略规则来阻止 wmic.exe 应用程序并防止被利用。 |
M1026 | 特权账户管理 | 防止管理员和特权帐户系统之间的凭据重叠。 |
M1018 | 用户账户管理 | 默认情况下,仅允许管理员使用 WMI 进行远程连接。限制允许连接的其他用户,或禁止所有用户远程连接到 WMI。 |
3.8.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控用于执行远程行为操作的命令和参数。 |
DS0029 | 网络流量 | 网络连接创建 | 监控 WMI 连接的网络流量,在通常不使用 WMI 的环境中使用 WMI 视为异常。 |
DS0009 | 进程 | 进程创建 | 监控新建的wmic进程或命令行 |