freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

ATT&CK v10版本战术介绍-执行(上篇)
2022-05-13 11:21:55
所属地 江苏省

一、引言

在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问战术理论知识及实战研究,本期我们为大家介绍ATT&CK 14项战术中的执行战术前6项技术内容,下期介绍执行战术后6项技术内容,敬请关注。

二、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) 相关数据源。1652411814_627dcda62998020495a6a.png!small?1652411814741

ATT&CK战术全景图(红框为执行战术)

三、执行战术

3.1 概述

执行战术是指攻击者控制的恶意代码在本地或远程系统上运行的技术,通常与其他技术结合使用,例如扫描网络或窃取数据,使用远程访问工具来运行PowerShell 脚本等。

执行包括12种技术,本期为大家逐一介绍前6项技术。下期为大家介绍后6项技术。

3.2 利用命令和脚本解释器(T1059)

攻击者可能利用命令和脚本解释器来执行命令、脚本或二进制文件。这些接口和语言提供了与计算机系统交互的方式,大多数系统都带有一些内置的命令行界面和脚本功能,例如,macOS 和 Linux 发行版包括一些 Unix Shell,而 Windows 安装包括 Windows Command Shell 和 PowerShell。

有跨平台解释器(例如 Python),与客户端应用程序相关的解释器(例如 JavaScript 和 Visual Basic解释器)。

利用合适的技术,攻击者能以各种方式执行命令。命令和脚本可以嵌入初始访问的攻击载荷中,向受害者发送诱饵文档或通过现有C2服务器下载攻击载荷。攻击者也可以通过交互式终端的shell执行命令。

利用命令和脚本解释器技术包含8个子技术,如下:

3.2.1 PowerShell(T1059.001)

攻击者可以利用PowerShell命令和脚本获取执行权限。PowerShell是Windows操作系统中一个功能强大的交互式命令行界面和脚本环境。攻击者可以使用PowerShell执行许多操作,包括信息发现和恶意代码执行。

PowerShell 可用于从 Internet 下载和运行可执行文件,这些可执行文件可以从磁盘或内存中执行。

有许多基于 PowerShell 的攻击性测试工具可用,包括 Empire、PowerSploit、PoshC2 和 PSAttack。

PowerShell 命令和脚本可以不通过底层DLL接口直接调用 powershell.exe 二进制文件执行。

3.2.2 AppleScript(T1059.002)

攻击者可以利用 AppleScript 获取执行权限。AppleScript 是macOS 脚本语言,通过AppleEvents 的应用程序间消息来控制应用程序和部分操作系统。这些 AppleEvent 消息可以单独发送,也可以使用 AppleScript 编写脚本。这些事件可以定位打开的窗口,并与本地或远程打开的应用程序进行交互。

脚本可以通过命令行、邮件规则、纯文本 shell 脚本等方式执行。

攻击者可利用 AppleScript 来执行各种行为,例如与开放的 SSH 连接进行交互、移动到远程机器,向用户展示虚假对话框,与应用程序交互等。在 macOS 10.10 Yosemite 及更高版本上,AppleScript 能够执行本机 API,否则需要以 mach-O 二进制文件格式编译和执行。

3.2.3 Windows Command Shell(T1059.003)

攻击者可利用 Windows Command shell 获取执行权限。Windows Command Shell是 Windows 系统的主要命令提示符。Windows 命令提示符可用于控制系统的几乎所有组件,不同的命令子集需要不同的权限级别。可以通过远程服务(如 SSH)远程调用命令提示符。

批处理文件(例如:.bat 或 .cmd)还为 shell 提供了一系列要运行的顺序命令,以及正常的脚本操作,例如条件和循环。批处理文件的常见用途包括长时间或重复性任务,或者需要在多个系统上运行相同的命令集。

攻击者可能会利用 cmd 来执行各种命令和有效负载。包括 cmd 执行单个命令,或以交互方式利用 cmd 通过C2通道转发输入和输出。

3.2.4 Unix Shell(T1059.004)

攻击者可利用Unix shell 命令和脚本来获取执行权限。Unix shell 是 Linux 和 macOS 系统上的主要命令提示符。Unix shell 可以控制系统的各个方面,其中某些命令需要提升权限。

攻击者可利用Unix shell 来执行各种命令或有效负载。交互式 shell 可以通过C2通道或在横向移动期间访问,向受害者传递和执行多个命令。

3.2.5 Visual Basic(T1059.005)

攻击者可能会利用 Visual Basic (VB) 来获取执行权限。VB 是微软创建的一种编程语言,通过 Windows API 与许多 Windows 技术(如组件对象模型和 Native API)具有互操作性。

VB 的衍生语言包括Visual Basic for Applications (VBA) 和 VBScript。VBA 是一种内置于 Microsoft Office 以及多个第三方应用程序中的事件驱动编程语言。VBA 使文档能够包含可在主机上自动执行任务和其他功能的宏。VBScript 是 Windows 主机上的默认脚本语言,也可以在提供给 Internet Explorer 的 HTML 应用程序 (HTA) 网页上代替 JavaScript 使用。

攻击者可能会使用 VB 有效负载来执行恶意命令。常见的恶意使用包括使用 VBScript 自动执行行为或将 VBA 内容嵌入到鱼叉式钓鱼附件有效负载中。

3.2.6 Python(T1059.006)

攻击者可利用 Python 命令和脚本来获取执行权限。Python 可以从命令行(通过 python.exe 解释器)或通过编写和分发到不同系统的脚本 (.py) 以交互方式执行。Python 代码也可以编译成二进制可执行文件。

Python 自带很多内置的包和底层系统交互,比如文件操作和设备 I/O。攻击者可以使用这些库来下载和执行命令或脚本以及执行各种恶意行为。

3.2.7 JavaScript(T1059.007)

攻击者可利用 JavaScript 来获取执行权限。JavaScript (JS) 是一种独立于平台的脚本语言(在运行时即时编译),通常与网页中的脚本相关联。

JS通过 Windows 脚本引擎进行解释,因此与 Windows 的许多组件集成,例如组件对象模型和 Internet Explorer HTML 应用程序 (HTA) 页面。

攻击者利用 JavaScript在网站上托管恶意脚本,或下载和执行这些脚本文件作为攻击载荷。由于攻击载荷是基于文本的,因此攻击者经常将其内容混淆为文件或信息的一部分。

3.2.8 Network Device CLI(T1059.008)

攻击者可利用网络设备上的脚本或内置命令行解释器 (CLI) 来执行恶意命令。CLI 是用户和管理员与设备交互以查看系统信息、修改设备操作或执行诊断和管理功能的主要方式。CLI 通常包含不同命令所需的各种权限级别。

脚本解释器自动执行任务并将功能扩展到网络操作系统中包含的命令集之外。CLI 和脚本解释器可通过直接控制台连接或远程方式(如 telnet 或 SSH)访问。

攻击者可以使用网络 CLI 来更改网络设备的行为和操作方式。CLI 可用于操纵流量以拦截或操纵数据,修改启动配置参数以加载恶意系统软件,禁用安全功能或日志记录以绕过检测。

3.2.9 缓解措施

ID

缓解措施

描述

M1049

防病毒/反恶意软件

防病毒可用于自动隔离可疑文件。

M1040

端点行为预防

在 Windows 10 上,启用攻击面减少 (ASR) 规则以防止 Visual Basic 和 JavaScript 脚本执行潜在的恶意下载内容。

M1045

代码签名

在可能的情况下,只允许执行签名脚本。

M1042

禁用或删除功能或程序

禁用或删除任何不必要或未使用的 shell 或解释器。

M1038

执行预防

在适当的地方使用应用程序控制。

M1026

特权账户管理

当需要 PowerShell 时,将 PowerShell 执行策略限制为管理员。请注意,有一些方法可以绕过 PowerShell 执行策略,具体取决于环境配置。

M1021

限制基于 Web 的内容

阻止常用的脚本和 HTA 文件的执行。对于通过广告提供的恶意代码,广告拦截器可以帮助阻止该代码执行。

3.2.10 检测

ID

数据源

数据组件

检测

DS0017

命令

命令执行

监控脚本执行和后续行为的命令行参数。

DS0011

模块

模块负载

监控与脚本执行相关的事件,例如加载与脚本语言相关的模块(例如:JScript.dll 或 vbscript.dll)。

DS0009

进程

进程创建

通过记录进程执行的命令行参数来监控命令行和脚本的活动,这些信息有助于获取攻击者的具体操作内容,比如攻击者是如何使用本机进程和自定义工具的,还可以监控与特定语言关联模块的载荷加载行为。

进程元数据

检测有关正在运行的进程的上下文数据,其中可能包括环境变量、用户等信息。例如,检测 Windows 事件 ID (EID) 400,它显示PowerShell是在本地还是远程运行以及指示PowerShell开始时间,EID 403 指示 PowerShell 会话的结束时间。

DS0012

脚本

脚本执行

如果组织内部已经限制所有正常用户使用脚本工具,则任何在系统上运行脚本的尝试都会被视为可疑活动。因此,需要尽可能从文件系统中捕获这些脚本,确定它们的行为和意图,其行为可能与攻击者的后期发现、收集或其他战术相关联。

3.3 利用容器管理服务执行命令(T1609)

攻击者利用容器管理服务在容器内执行命令。容器管理服务(例如 Docker 守护程序、Kubernetes API 服务器或 kubelet)可以允许在环境中远程管理容器。

在 Docker 中,攻击者可以在容器部署期间指定一个执行脚本或命令的入口点,或者可以使用docker exec等命令在正在运行的容器中远程执行。在 Kubernetes 中,如果攻击者拥有足够的权限,他们可以通过与 Kubernetes API 服务器、kubelet 交互,或通过运行kubectl exec等命令,在集群中的容器中获得远程执行。

3.3.1 缓解措施

ID

缓解措施

描述

M1038

执行防护

尽可能使用只读容器、只读文件系统等阻止命令的执行。

M1035

限制通过网络访问资源

将与容器服务的通信限制为本地 Unix 套接字或通过 SSH 进行远程访问。禁用对 Docker API 和 Kubernetes API 服务器的未经身份验证的访问,经安全端口访问以通过 TLS 与 API 通信。

M1026

特权账户管理

确保容器默认不以 root 身份运行。在 Kubernetes 环境中,考虑定义一个 Pod 安全策略来阻止 Pod 运行特权容器。

M1018

用户账户管理

对容器服务实施身份验证和基于角色的访问控制,以将用户限制为最低权限。

3.3.2 检测

ID

数据源

数据组件

检测

DS0017

命令

命令执行

监控容器服务执行的命令和参数。在 Docker 中,守护程序日志记录了守护程序和容器服务级别事件。Kubernetes 系统组件日志还可以检测集群中容器内外运行的事件。

DS0009

进程

进程创建

可通过容器以及底层主机上的命令行参数记录容器管理服务活动。

3.4 部署容器(T1610)

攻击者可能会部署一个没有网络规则、用户限制等配置的新容器,可执行或下载恶意软件的进程,以绕过环境中的现有防御。

可以通过多种方式部署容器,例如通过Docker 的创建和启动 API 或通过 Web 应用程序(如 Kubernetes或 Kubeflow)。

3.4.1 缓解措施

ID

缓解措施

描述

M1047

审计

部署前扫描镜像,屏蔽不符合安全策略的镜像。在 Kubernetes 环境中,准入控制器可用于在容器部署请求通过身份验证之后,在容器部署之前验证。

M1035

限制通过网络访问资源

将与容器服务的通信限制为本地 Unix 套接字或通过 SSH 进行远程访问。禁用 Docker API、Kubernetes API 服务器和容器编排 Web 应用程序的未经身份验证的访问,需经安全端口访问以通过 TLS 与 API 通信。

M1030

网络分段

拒绝通过使用网络代理、网关和防火墙直接远程访问内部系统。

M1018

用户账户管理

容器访问权限实施最小权限原则。

3.4.2 检测

ID

数据源

数据组件

检测

DS0015

应用日志

应用日志内容

通过资产管理系统检测网络上不应该存在的计算机系统或网络设备。

DS0032

容器

容器创建

检测新构建的容器。

容器启动

检测容器的激活或调用。

DS0014

Pod

Pod创建

检测新构建的pod。

Pod修改

检测对pod 所做的更改。

3.5 客户端执行利用(T1203)

攻击者利用客户端应用程序中的软件漏洞来执行任意代码。存在几种类型:

  • 基于浏览器的漏洞利用

Web 浏览器是路过式攻击和鱼叉式钓鱼链接的常见目标。攻击者通过正常的网络浏览或钓鱼电子邮件中的链接攻击,这些通常不需要用户采取行动来执行漏洞利用。

  • 办公应用

常见的办公应用程序(如Microsoft Office)也成为网络钓鱼的目标。恶意文件将作为附件直接传输或通过链接下载。这些要求用户打开文档或文件以执行漏洞利用。

  • 常见的第三方应用程序

企业环境中常见的Adobe Reader和Flash等应用程序经常成为攻击者的目标,可能会在浏览器中被利用或需要用户打开文件执行攻击。

3.5.1 缓解措施

ID

缓解措施

描述

M1048

应用程序隔离和沙箱

浏览器沙箱可用于减轻利用的一些影响,但沙箱逃逸可能仍然存在。其他类型的虚拟化和应用程序微分段也可以减轻客户端利用的影响。

M1050

漏洞利用保护

查找在利用期间使用的安全应用程序,例如 Windows Defender Exploit Guard (WDEG) 和微软缓解应急工具包 (EMET),可用于缓解某些利用行为。控制流完整性检查是另一种可能识别和阻止软件漏洞发生的方法,依赖于架构和目标应用程序二进制文件的兼容性。

3.5.2 检测

ID

数据源

数据组件

检测

DS0015

应用日志

应用日志内容

软件利用可能并不总是成功,可能导致被利用的进程变得不稳定或崩溃。

DS0009

进程

进程创建

监控异常进程创建,例如从可能被利用的应用程序中产生的命令和脚本解释器。还要查找端点系统上可能表明成功入侵的其他行为,例如浏览器或Office进程的异常行为。

3.6 利用进程间通信(T1559)

攻击者可利用进程间通信 (IPC) 机制来执行本地代码或命令。IPC 通常被进程用来共享数据、相互通信或同步执行。IPC 也常用于避免进程陷入循环等待模式时发生的死锁等情况发生。

IPC 机制可能因操作系统而异,但通常以可通过编程语言或本机接口访问的形式存在。Linux 环境支持几种不同的 IPC 机制,其中两种是套接字和管道。攻击者还可以使用远程服务来执行远程 IPC。

利用进程间通信技术包含3个子技术,如下:

3.6.1 组件对象模型(T1559.001)

攻击者可能会使用 Windows 组件对象模型 (COM) 来执行本地代码。COM是本机 Windows 应用程序编程接口 (API) 的进程间通信 (IPC) 组件,它支持软件对象或实现一个或多个接口的可执行代码之间的交互。通过COM,客户端对象可以调用服务器对象的方法,服务器对象通常是二进制动态链接库 (DLL) 或可执行文件 (EXE)。远程 COM 执行依赖于分布式组件对象模型 (DCOM) 等远程服务。

公开的COM接口可被利用通过各种编程语言(如 C、C++、Java和Visual Basic)调用执行任意命令。还存在特定的 COM 对象直接执行代码执行之外的功能,例如创建计划任务、文件下载、权限提升等攻击行为。

3.6.2 动态数据交换(T1559.002)

攻击者可能使用 Windows 动态数据交换 (DDE) 来执行任意命令。DDE 是一种客户端-服务器协议,用于应用程序之间的一次性或连续进程间通信 (IPC)。建立链接后,应用程序可以自主交换由字符串、热数据链接和命令执行请求组成的事务。

对象链接和嵌入 (OLE),或在文档之间链接数据的能力,最初是通过 DDE 实现的。尽管已被组件对象模型取代,DDE 仍可通过注册表项在 Windows 10 和大多数 Microsoft Office 2016 中启用。

DDE 命令可嵌入Microsoft Office 文档或CSV文件,通过网络钓鱼活动或托管Web内容执行,避免使用 Visual Basic for Applications (VBA) 宏。DDE 执行可以通过远程服务远程调用,例如分布式组件对象模型 (DCOM)。

3.6.3 XPC服务(T1559.003)

攻击者可以向 XPC 服务守护程序提供恶意代码执行。macOS 使用 XPC 服务在各种进程之间进行基本的进程间通信。应用程序可以使用低级XPC服务通信API 向以 root 身份运行的 XPC 服务守护程序发送消息,以处理需要提升权限的任务(例如网络连接)。

攻击者可利用 XPC 服务来执行恶意代码。恶意执行请求可以通过应用程序的 XPC 服务处理程序传递,也可通过不正确的 XPC 客户端验证或对输入参数弱校验以进行权限提升。

3.6.4 缓解措施

ID

缓解措施

描述

M1013

应用程序开发人员指南

在开发应用程序时启用强化运行时功能。不要使 com.apple.security.get-task-allow值设置为 true。

M1048

应用程序隔离和沙箱

确保启用所有 COM 警报和受保护的视图。

M1040

端点行为防御

在 Windows 10 上,启用攻击面减少 (ASR) 规则以防止 DDE 攻击和 Office 程序产生子进程。

M1042

禁用或删除功能或程序

可以将特定于 Microsoft Office 功能控制安全性的注册表项设置为禁用自动 DDE/OLE 执行。Microsoft 还创建并默认启用注册表项,以完全禁用 Word 和 Excel 中的 DDE 执行。

M1026

特权账户管理

在HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\AppID\\{AppID_GUID} 中修改注册表设置与单个 COM 应用程序的进程范围安全性相关联。

修改 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Ole 中的注册表设置与所有未设置安全性的 COM 应用程序的系统范围安全默认值相关联。

M1054

软件配置

考虑禁用 Office 程序中的嵌入文件,例如 OneNote。

3.6.5 检测

ID

数据源

数据组件

检测

DS0011

模块

模块负载

监视 DLL/PE 文件事件,特别是这些二进制文件的创建以及将 DLL 加载到进程中的事件。查找无法识别或未正常加载到进程中的 DLL。

DS0009

进程

进程访问

监控对更高特权进程进行异常调用的事件,例如连接到 VPN 服务的用户应用程序。

进程创建

监控与滥用 IPC 机制相关的新执行进程。

DS0012

脚本

脚本执行

如果组织内部已经限制所有正常用户使用脚本工具,则任何在系统上运行脚本的尝试都会被视为可疑活动。因此,需要尽可能从文件系统中捕获这些脚本,确定它们的行为和意图,其行为可能与攻击者的后期发现、收集或其他战术相关联。

3.7 利用API(T1106)

攻击者可能与本机操作系统应用程序编程接口 (API) 交互执行。本机 API 提供了一种在内核中调用低级 OS 服务的方式,例如涉及硬件/设备、内存和进程的服务。在系统启动期间以及在日常操作期间执行任务和请求时,操作系统会利用这些本机 API。

原生 API 函数(例如 NtCreateProcess)可以通过系统调用,但这些功能也经常通过接口和库暴露给用户模式应用程序。例如,Windows API CreateProcess() 或 GNU fork() 等函数将允许程序和脚本启动其他进程。这可能允许 API 调用者执行二进制文件、运行 CLI 命令、加载模块等。

更高级别的软件框架,例如 Microsoft .NET 和 macOS Cocoa,也可用于与本机 API 交互。这些框架通常为 API 功能提供封装,提高可用性。

攻击者可利用这些 OS API 函数实施执行战术。与命令和脚本解释器类似,本机 API 及其接口层次结构提供了与受害系统的各种组件进行交互和利用的机制。在调用 API 函数时,攻击者也可能试图绕过防御工具(例如:通过禁用或修改工具取消关联受监控的函数)。

3.7.1 缓解措施

ID

缓解措施

描述

M1040

端点行为预防

在 Windows 10 上,启用攻击面减少 (ASR) 规则以防止 Office VBA 宏调用 Win32 API。

M1038

执行预防

通过使用应用程序控制工具(如 Windows Defender 应用程序控制 、AppLocker、或软件限制策略在适当的情况下)识别并阻止可能通过此技术执行的潜在恶意软件。

3.7.2 检测

ID

数据源

数据组件

检测

DS0011

模块

模块负载

监视 DLL/PE 文件事件,特别是这些二进制文件的创建以及将 DLL 加载到进程中。Windows API 的使用可能涉及加载/访问与提供调用函数相关的系统 DLL(例如:ntdll.dll、kernel32.dll、advapi32.dll 和 gdi32.dll)的进程。监视 DLL 加载,尤其是异常/异常或潜在恶意进程,可能表明 Windows API 被滥用。

DS0009

进程

操作系统 API 执行

使用 API 监控将其他事件与围绕 API 函数调用的行为相关联将为事件提供额外的上下文,这可能有助于确定它是否是由恶意行为引起的。通过流程 ID 将流程沿袭的活动关联。

四、总结

本期主要介绍了执行战术前6项技术原理,下期将给大家介绍执行战术后6项技术。敬请关注。

相关分享:

ATT&CK v10版本战术实战研究--侦察

ATT&CK v10版本战术介绍—资源开发

ATT&CK v10版本战术介绍:初始访问的九种技术

# web安全 # 系统安全 # 数据安全 # 企业安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录